1e07dc26bSmrg#! /bin/sh 2e07dc26bSmrg# Configuration validation subroutine script. 3636c353eSmrg# Copyright 1992-2023 Free Software Foundation, Inc. 4e07dc26bSmrg 5636c353eSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6636c353eSmrg 7636c353eSmrgtimestamp='2023-01-21' 8e07dc26bSmrg 9e07dc26bSmrg# This file is free software; you can redistribute it and/or modify it 10e07dc26bSmrg# under the terms of the GNU General Public License as published by 11636c353eSmrg# the Free Software Foundation, either version 3 of the License, or 12e07dc26bSmrg# (at your option) any later version. 13e07dc26bSmrg# 14e07dc26bSmrg# This program is distributed in the hope that it will be useful, but 15e07dc26bSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16e07dc26bSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17e07dc26bSmrg# General Public License for more details. 18e07dc26bSmrg# 19e07dc26bSmrg# You should have received a copy of the GNU General Public License 20636c353eSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21e07dc26bSmrg# 22e07dc26bSmrg# As a special exception to the GNU General Public License, if you 23e07dc26bSmrg# distribute this file as part of a program that contains a 24e07dc26bSmrg# configuration script generated by Autoconf, you may include it under 25e07dc26bSmrg# the same distribution terms that you use for the rest of that 26e07dc26bSmrg# program. This Exception is an additional permission under section 7 27e07dc26bSmrg# of the GNU General Public License, version 3 ("GPLv3"). 28e07dc26bSmrg 29e07dc26bSmrg 30e07dc26bSmrg# Please send patches to <config-patches@gnu.org>. 31e07dc26bSmrg# 32e07dc26bSmrg# Configuration subroutine to validate and canonicalize a configuration type. 33e07dc26bSmrg# Supply the specified configuration type as an argument. 34e07dc26bSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 35e07dc26bSmrg# Otherwise, we print the canonical config type on stdout and succeed. 36e07dc26bSmrg 37e07dc26bSmrg# You can get the latest version of this script from: 38636c353eSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39e07dc26bSmrg 40e07dc26bSmrg# This file is supposed to be the same for all GNU packages 41e07dc26bSmrg# and recognize all the CPU types, system types and aliases 42e07dc26bSmrg# that are meaningful with *any* GNU software. 43e07dc26bSmrg# Each package is responsible for reporting which valid configurations 44e07dc26bSmrg# it does not support. The user should be able to distinguish 45e07dc26bSmrg# a failure to support a valid configuration from a meaningless 46e07dc26bSmrg# configuration. 47e07dc26bSmrg 48e07dc26bSmrg# The goal of this file is to map all the various variations of a given 49e07dc26bSmrg# machine specification into a single specification in the form: 50e07dc26bSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51e07dc26bSmrg# or in some cases, the newer four-part form: 52e07dc26bSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53e07dc26bSmrg# It is wrong to echo any other type of specification. 54e07dc26bSmrg 55636c353eSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 56636c353eSmrg# about features and limitations of the classic Bourne shell that were 57636c353eSmrg# superseded or lifted in POSIX. However, this script identifies a wide 58636c353eSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59636c353eSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60636c353eSmrg# have a pre-POSIX /bin/sh. 61636c353eSmrg 62e07dc26bSmrgme=`echo "$0" | sed -e 's,.*/,,'` 63e07dc26bSmrg 64e07dc26bSmrgusage="\ 65e07dc26bSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66e07dc26bSmrg 67e07dc26bSmrgCanonicalize a configuration name. 68e07dc26bSmrg 69636c353eSmrgOptions: 70e07dc26bSmrg -h, --help print this help, then exit 71e07dc26bSmrg -t, --time-stamp print date of last modification, then exit 72e07dc26bSmrg -v, --version print version number, then exit 73e07dc26bSmrg 74e07dc26bSmrgReport bugs and patches to <config-patches@gnu.org>." 75e07dc26bSmrg 76e07dc26bSmrgversion="\ 77e07dc26bSmrgGNU config.sub ($timestamp) 78e07dc26bSmrg 79636c353eSmrgCopyright 1992-2023 Free Software Foundation, Inc. 80e07dc26bSmrg 81e07dc26bSmrgThis is free software; see the source for copying conditions. There is NO 82e07dc26bSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83e07dc26bSmrg 84e07dc26bSmrghelp=" 85e07dc26bSmrgTry \`$me --help' for more information." 86e07dc26bSmrg 87e07dc26bSmrg# Parse command line 88e07dc26bSmrgwhile test $# -gt 0 ; do 89e07dc26bSmrg case $1 in 90e07dc26bSmrg --time-stamp | --time* | -t ) 91e07dc26bSmrg echo "$timestamp" ; exit ;; 92e07dc26bSmrg --version | -v ) 93e07dc26bSmrg echo "$version" ; exit ;; 94e07dc26bSmrg --help | --h* | -h ) 95e07dc26bSmrg echo "$usage"; exit ;; 96e07dc26bSmrg -- ) # Stop option processing 97e07dc26bSmrg shift; break ;; 98e07dc26bSmrg - ) # Use stdin as input. 99e07dc26bSmrg break ;; 100e07dc26bSmrg -* ) 101636c353eSmrg echo "$me: invalid option $1$help" >&2 102e07dc26bSmrg exit 1 ;; 103e07dc26bSmrg 104e07dc26bSmrg *local*) 105e07dc26bSmrg # First pass through any local machine types. 106636c353eSmrg echo "$1" 107e07dc26bSmrg exit ;; 108e07dc26bSmrg 109e07dc26bSmrg * ) 110e07dc26bSmrg break ;; 111e07dc26bSmrg esac 112e07dc26bSmrgdone 113e07dc26bSmrg 114e07dc26bSmrgcase $# in 115e07dc26bSmrg 0) echo "$me: missing argument$help" >&2 116e07dc26bSmrg exit 1;; 117e07dc26bSmrg 1) ;; 118e07dc26bSmrg *) echo "$me: too many arguments$help" >&2 119e07dc26bSmrg exit 1;; 120e07dc26bSmrgesac 121e07dc26bSmrg 122636c353eSmrg# Split fields of configuration type 123636c353eSmrg# shellcheck disable=SC2162 124636c353eSmrgsaved_IFS=$IFS 125636c353eSmrgIFS="-" read field1 field2 field3 field4 <<EOF 126636c353eSmrg$1 127636c353eSmrgEOF 128636c353eSmrgIFS=$saved_IFS 129e07dc26bSmrg 130636c353eSmrg# Separate into logical components for further validation 131636c353eSmrgcase $1 in 132636c353eSmrg *-*-*-*-*) 133636c353eSmrg echo Invalid configuration \`"$1"\': more than four components >&2 134636c353eSmrg exit 1 135e07dc26bSmrg ;; 136636c353eSmrg *-*-*-*) 137636c353eSmrg basic_machine=$field1-$field2 138636c353eSmrg basic_os=$field3-$field4 139e07dc26bSmrg ;; 140636c353eSmrg *-*-*) 141636c353eSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142636c353eSmrg # parts 143636c353eSmrg maybe_os=$field2-$field3 144636c353eSmrg case $maybe_os in 145636c353eSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 146636c353eSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147636c353eSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148636c353eSmrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 149636c353eSmrg basic_machine=$field1 150636c353eSmrg basic_os=$maybe_os 151636c353eSmrg ;; 152636c353eSmrg android-linux) 153636c353eSmrg basic_machine=$field1-unknown 154636c353eSmrg basic_os=linux-android 155636c353eSmrg ;; 156636c353eSmrg *) 157636c353eSmrg basic_machine=$field1-$field2 158636c353eSmrg basic_os=$field3 159636c353eSmrg ;; 160636c353eSmrg esac 161e07dc26bSmrg ;; 162636c353eSmrg *-*) 163636c353eSmrg # A lone config we happen to match not fitting any pattern 164636c353eSmrg case $field1-$field2 in 165636c353eSmrg decstation-3100) 166636c353eSmrg basic_machine=mips-dec 167636c353eSmrg basic_os= 168636c353eSmrg ;; 169636c353eSmrg *-*) 170636c353eSmrg # Second component is usually, but not always the OS 171636c353eSmrg case $field2 in 172636c353eSmrg # Prevent following clause from handling this valid os 173636c353eSmrg sun*os*) 174636c353eSmrg basic_machine=$field1 175636c353eSmrg basic_os=$field2 176636c353eSmrg ;; 177636c353eSmrg zephyr*) 178636c353eSmrg basic_machine=$field1-unknown 179636c353eSmrg basic_os=$field2 180636c353eSmrg ;; 181636c353eSmrg # Manufacturers 182636c353eSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183636c353eSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184636c353eSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185636c353eSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186636c353eSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187636c353eSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188636c353eSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189636c353eSmrg | microblaze* | sim | cisco \ 190636c353eSmrg | oki | wec | wrs | winbond) 191636c353eSmrg basic_machine=$field1-$field2 192636c353eSmrg basic_os= 193636c353eSmrg ;; 194636c353eSmrg *) 195636c353eSmrg basic_machine=$field1 196636c353eSmrg basic_os=$field2 197636c353eSmrg ;; 198636c353eSmrg esac 199636c353eSmrg ;; 200636c353eSmrg esac 201e07dc26bSmrg ;; 202636c353eSmrg *) 203636c353eSmrg # Convert single-component short-hands not valid as part of 204636c353eSmrg # multi-component configurations. 205636c353eSmrg case $field1 in 206636c353eSmrg 386bsd) 207636c353eSmrg basic_machine=i386-pc 208636c353eSmrg basic_os=bsd 209636c353eSmrg ;; 210636c353eSmrg a29khif) 211636c353eSmrg basic_machine=a29k-amd 212636c353eSmrg basic_os=udi 213636c353eSmrg ;; 214636c353eSmrg adobe68k) 215636c353eSmrg basic_machine=m68010-adobe 216636c353eSmrg basic_os=scout 217636c353eSmrg ;; 218636c353eSmrg alliant) 219636c353eSmrg basic_machine=fx80-alliant 220636c353eSmrg basic_os= 221636c353eSmrg ;; 222636c353eSmrg altos | altos3068) 223636c353eSmrg basic_machine=m68k-altos 224636c353eSmrg basic_os= 225636c353eSmrg ;; 226636c353eSmrg am29k) 227636c353eSmrg basic_machine=a29k-none 228636c353eSmrg basic_os=bsd 229636c353eSmrg ;; 230636c353eSmrg amdahl) 231636c353eSmrg basic_machine=580-amdahl 232636c353eSmrg basic_os=sysv 233636c353eSmrg ;; 234636c353eSmrg amiga) 235636c353eSmrg basic_machine=m68k-unknown 236636c353eSmrg basic_os= 237636c353eSmrg ;; 238636c353eSmrg amigaos | amigados) 239636c353eSmrg basic_machine=m68k-unknown 240636c353eSmrg basic_os=amigaos 241636c353eSmrg ;; 242636c353eSmrg amigaunix | amix) 243636c353eSmrg basic_machine=m68k-unknown 244636c353eSmrg basic_os=sysv4 245636c353eSmrg ;; 246636c353eSmrg apollo68) 247636c353eSmrg basic_machine=m68k-apollo 248636c353eSmrg basic_os=sysv 249636c353eSmrg ;; 250636c353eSmrg apollo68bsd) 251636c353eSmrg basic_machine=m68k-apollo 252636c353eSmrg basic_os=bsd 253636c353eSmrg ;; 254636c353eSmrg aros) 255636c353eSmrg basic_machine=i386-pc 256636c353eSmrg basic_os=aros 257636c353eSmrg ;; 258636c353eSmrg aux) 259636c353eSmrg basic_machine=m68k-apple 260636c353eSmrg basic_os=aux 261636c353eSmrg ;; 262636c353eSmrg balance) 263636c353eSmrg basic_machine=ns32k-sequent 264636c353eSmrg basic_os=dynix 265636c353eSmrg ;; 266636c353eSmrg blackfin) 267636c353eSmrg basic_machine=bfin-unknown 268636c353eSmrg basic_os=linux 269636c353eSmrg ;; 270636c353eSmrg cegcc) 271636c353eSmrg basic_machine=arm-unknown 272636c353eSmrg basic_os=cegcc 273636c353eSmrg ;; 274636c353eSmrg convex-c1) 275636c353eSmrg basic_machine=c1-convex 276636c353eSmrg basic_os=bsd 277636c353eSmrg ;; 278636c353eSmrg convex-c2) 279636c353eSmrg basic_machine=c2-convex 280636c353eSmrg basic_os=bsd 281636c353eSmrg ;; 282636c353eSmrg convex-c32) 283636c353eSmrg basic_machine=c32-convex 284636c353eSmrg basic_os=bsd 285636c353eSmrg ;; 286636c353eSmrg convex-c34) 287636c353eSmrg basic_machine=c34-convex 288636c353eSmrg basic_os=bsd 289636c353eSmrg ;; 290636c353eSmrg convex-c38) 291636c353eSmrg basic_machine=c38-convex 292636c353eSmrg basic_os=bsd 293636c353eSmrg ;; 294636c353eSmrg cray) 295636c353eSmrg basic_machine=j90-cray 296636c353eSmrg basic_os=unicos 297636c353eSmrg ;; 298636c353eSmrg crds | unos) 299636c353eSmrg basic_machine=m68k-crds 300636c353eSmrg basic_os= 301636c353eSmrg ;; 302636c353eSmrg da30) 303636c353eSmrg basic_machine=m68k-da30 304636c353eSmrg basic_os= 305636c353eSmrg ;; 306636c353eSmrg decstation | pmax | pmin | dec3100 | decstatn) 307636c353eSmrg basic_machine=mips-dec 308636c353eSmrg basic_os= 309636c353eSmrg ;; 310636c353eSmrg delta88) 311636c353eSmrg basic_machine=m88k-motorola 312636c353eSmrg basic_os=sysv3 313636c353eSmrg ;; 314636c353eSmrg dicos) 315636c353eSmrg basic_machine=i686-pc 316636c353eSmrg basic_os=dicos 317636c353eSmrg ;; 318636c353eSmrg djgpp) 319636c353eSmrg basic_machine=i586-pc 320636c353eSmrg basic_os=msdosdjgpp 321636c353eSmrg ;; 322636c353eSmrg ebmon29k) 323636c353eSmrg basic_machine=a29k-amd 324636c353eSmrg basic_os=ebmon 325636c353eSmrg ;; 326636c353eSmrg es1800 | OSE68k | ose68k | ose | OSE) 327636c353eSmrg basic_machine=m68k-ericsson 328636c353eSmrg basic_os=ose 329636c353eSmrg ;; 330636c353eSmrg gmicro) 331636c353eSmrg basic_machine=tron-gmicro 332636c353eSmrg basic_os=sysv 333636c353eSmrg ;; 334636c353eSmrg go32) 335636c353eSmrg basic_machine=i386-pc 336636c353eSmrg basic_os=go32 337636c353eSmrg ;; 338636c353eSmrg h8300hms) 339636c353eSmrg basic_machine=h8300-hitachi 340636c353eSmrg basic_os=hms 341636c353eSmrg ;; 342636c353eSmrg h8300xray) 343636c353eSmrg basic_machine=h8300-hitachi 344636c353eSmrg basic_os=xray 345636c353eSmrg ;; 346636c353eSmrg h8500hms) 347636c353eSmrg basic_machine=h8500-hitachi 348636c353eSmrg basic_os=hms 349636c353eSmrg ;; 350636c353eSmrg harris) 351636c353eSmrg basic_machine=m88k-harris 352636c353eSmrg basic_os=sysv3 353636c353eSmrg ;; 354636c353eSmrg hp300 | hp300hpux) 355636c353eSmrg basic_machine=m68k-hp 356636c353eSmrg basic_os=hpux 357636c353eSmrg ;; 358636c353eSmrg hp300bsd) 359636c353eSmrg basic_machine=m68k-hp 360636c353eSmrg basic_os=bsd 361636c353eSmrg ;; 362636c353eSmrg hppaosf) 363636c353eSmrg basic_machine=hppa1.1-hp 364636c353eSmrg basic_os=osf 365636c353eSmrg ;; 366636c353eSmrg hppro) 367636c353eSmrg basic_machine=hppa1.1-hp 368636c353eSmrg basic_os=proelf 369636c353eSmrg ;; 370636c353eSmrg i386mach) 371636c353eSmrg basic_machine=i386-mach 372636c353eSmrg basic_os=mach 373636c353eSmrg ;; 374636c353eSmrg isi68 | isi) 375636c353eSmrg basic_machine=m68k-isi 376636c353eSmrg basic_os=sysv 377636c353eSmrg ;; 378636c353eSmrg m68knommu) 379636c353eSmrg basic_machine=m68k-unknown 380636c353eSmrg basic_os=linux 381636c353eSmrg ;; 382636c353eSmrg magnum | m3230) 383636c353eSmrg basic_machine=mips-mips 384636c353eSmrg basic_os=sysv 385636c353eSmrg ;; 386636c353eSmrg merlin) 387636c353eSmrg basic_machine=ns32k-utek 388636c353eSmrg basic_os=sysv 389636c353eSmrg ;; 390636c353eSmrg mingw64) 391636c353eSmrg basic_machine=x86_64-pc 392636c353eSmrg basic_os=mingw64 393636c353eSmrg ;; 394636c353eSmrg mingw32) 395636c353eSmrg basic_machine=i686-pc 396636c353eSmrg basic_os=mingw32 397636c353eSmrg ;; 398636c353eSmrg mingw32ce) 399636c353eSmrg basic_machine=arm-unknown 400636c353eSmrg basic_os=mingw32ce 401636c353eSmrg ;; 402636c353eSmrg monitor) 403636c353eSmrg basic_machine=m68k-rom68k 404636c353eSmrg basic_os=coff 405636c353eSmrg ;; 406636c353eSmrg morphos) 407636c353eSmrg basic_machine=powerpc-unknown 408636c353eSmrg basic_os=morphos 409636c353eSmrg ;; 410636c353eSmrg moxiebox) 411636c353eSmrg basic_machine=moxie-unknown 412636c353eSmrg basic_os=moxiebox 413636c353eSmrg ;; 414636c353eSmrg msdos) 415636c353eSmrg basic_machine=i386-pc 416636c353eSmrg basic_os=msdos 417636c353eSmrg ;; 418636c353eSmrg msys) 419636c353eSmrg basic_machine=i686-pc 420636c353eSmrg basic_os=msys 421636c353eSmrg ;; 422636c353eSmrg mvs) 423636c353eSmrg basic_machine=i370-ibm 424636c353eSmrg basic_os=mvs 425636c353eSmrg ;; 426636c353eSmrg nacl) 427636c353eSmrg basic_machine=le32-unknown 428636c353eSmrg basic_os=nacl 429636c353eSmrg ;; 430636c353eSmrg ncr3000) 431636c353eSmrg basic_machine=i486-ncr 432636c353eSmrg basic_os=sysv4 433636c353eSmrg ;; 434636c353eSmrg netbsd386) 435636c353eSmrg basic_machine=i386-pc 436636c353eSmrg basic_os=netbsd 437636c353eSmrg ;; 438636c353eSmrg netwinder) 439636c353eSmrg basic_machine=armv4l-rebel 440636c353eSmrg basic_os=linux 441636c353eSmrg ;; 442636c353eSmrg news | news700 | news800 | news900) 443636c353eSmrg basic_machine=m68k-sony 444636c353eSmrg basic_os=newsos 445636c353eSmrg ;; 446636c353eSmrg news1000) 447636c353eSmrg basic_machine=m68030-sony 448636c353eSmrg basic_os=newsos 449636c353eSmrg ;; 450636c353eSmrg necv70) 451636c353eSmrg basic_machine=v70-nec 452636c353eSmrg basic_os=sysv 453636c353eSmrg ;; 454636c353eSmrg nh3000) 455636c353eSmrg basic_machine=m68k-harris 456636c353eSmrg basic_os=cxux 457636c353eSmrg ;; 458636c353eSmrg nh[45]000) 459636c353eSmrg basic_machine=m88k-harris 460636c353eSmrg basic_os=cxux 461636c353eSmrg ;; 462636c353eSmrg nindy960) 463636c353eSmrg basic_machine=i960-intel 464636c353eSmrg basic_os=nindy 465636c353eSmrg ;; 466636c353eSmrg mon960) 467636c353eSmrg basic_machine=i960-intel 468636c353eSmrg basic_os=mon960 469636c353eSmrg ;; 470636c353eSmrg nonstopux) 471636c353eSmrg basic_machine=mips-compaq 472636c353eSmrg basic_os=nonstopux 473636c353eSmrg ;; 474636c353eSmrg os400) 475636c353eSmrg basic_machine=powerpc-ibm 476636c353eSmrg basic_os=os400 477636c353eSmrg ;; 478636c353eSmrg OSE68000 | ose68000) 479636c353eSmrg basic_machine=m68000-ericsson 480636c353eSmrg basic_os=ose 481636c353eSmrg ;; 482636c353eSmrg os68k) 483636c353eSmrg basic_machine=m68k-none 484636c353eSmrg basic_os=os68k 485636c353eSmrg ;; 486636c353eSmrg paragon) 487636c353eSmrg basic_machine=i860-intel 488636c353eSmrg basic_os=osf 489636c353eSmrg ;; 490636c353eSmrg parisc) 491636c353eSmrg basic_machine=hppa-unknown 492636c353eSmrg basic_os=linux 493636c353eSmrg ;; 494636c353eSmrg psp) 495636c353eSmrg basic_machine=mipsallegrexel-sony 496636c353eSmrg basic_os=psp 497636c353eSmrg ;; 498636c353eSmrg pw32) 499636c353eSmrg basic_machine=i586-unknown 500636c353eSmrg basic_os=pw32 501636c353eSmrg ;; 502636c353eSmrg rdos | rdos64) 503636c353eSmrg basic_machine=x86_64-pc 504636c353eSmrg basic_os=rdos 505636c353eSmrg ;; 506636c353eSmrg rdos32) 507636c353eSmrg basic_machine=i386-pc 508636c353eSmrg basic_os=rdos 509636c353eSmrg ;; 510636c353eSmrg rom68k) 511636c353eSmrg basic_machine=m68k-rom68k 512636c353eSmrg basic_os=coff 513636c353eSmrg ;; 514636c353eSmrg sa29200) 515636c353eSmrg basic_machine=a29k-amd 516636c353eSmrg basic_os=udi 517636c353eSmrg ;; 518636c353eSmrg sei) 519636c353eSmrg basic_machine=mips-sei 520636c353eSmrg basic_os=seiux 521636c353eSmrg ;; 522636c353eSmrg sequent) 523636c353eSmrg basic_machine=i386-sequent 524636c353eSmrg basic_os= 525636c353eSmrg ;; 526636c353eSmrg sps7) 527636c353eSmrg basic_machine=m68k-bull 528636c353eSmrg basic_os=sysv2 529636c353eSmrg ;; 530636c353eSmrg st2000) 531636c353eSmrg basic_machine=m68k-tandem 532636c353eSmrg basic_os= 533636c353eSmrg ;; 534636c353eSmrg stratus) 535636c353eSmrg basic_machine=i860-stratus 536636c353eSmrg basic_os=sysv4 537636c353eSmrg ;; 538636c353eSmrg sun2) 539636c353eSmrg basic_machine=m68000-sun 540636c353eSmrg basic_os= 541636c353eSmrg ;; 542636c353eSmrg sun2os3) 543636c353eSmrg basic_machine=m68000-sun 544636c353eSmrg basic_os=sunos3 545636c353eSmrg ;; 546636c353eSmrg sun2os4) 547636c353eSmrg basic_machine=m68000-sun 548636c353eSmrg basic_os=sunos4 549636c353eSmrg ;; 550636c353eSmrg sun3) 551636c353eSmrg basic_machine=m68k-sun 552636c353eSmrg basic_os= 553636c353eSmrg ;; 554636c353eSmrg sun3os3) 555636c353eSmrg basic_machine=m68k-sun 556636c353eSmrg basic_os=sunos3 557636c353eSmrg ;; 558636c353eSmrg sun3os4) 559636c353eSmrg basic_machine=m68k-sun 560636c353eSmrg basic_os=sunos4 561636c353eSmrg ;; 562636c353eSmrg sun4) 563636c353eSmrg basic_machine=sparc-sun 564636c353eSmrg basic_os= 565636c353eSmrg ;; 566636c353eSmrg sun4os3) 567636c353eSmrg basic_machine=sparc-sun 568636c353eSmrg basic_os=sunos3 569636c353eSmrg ;; 570636c353eSmrg sun4os4) 571636c353eSmrg basic_machine=sparc-sun 572636c353eSmrg basic_os=sunos4 573636c353eSmrg ;; 574636c353eSmrg sun4sol2) 575636c353eSmrg basic_machine=sparc-sun 576636c353eSmrg basic_os=solaris2 577636c353eSmrg ;; 578636c353eSmrg sun386 | sun386i | roadrunner) 579636c353eSmrg basic_machine=i386-sun 580636c353eSmrg basic_os= 581636c353eSmrg ;; 582636c353eSmrg sv1) 583636c353eSmrg basic_machine=sv1-cray 584636c353eSmrg basic_os=unicos 585636c353eSmrg ;; 586636c353eSmrg symmetry) 587636c353eSmrg basic_machine=i386-sequent 588636c353eSmrg basic_os=dynix 589636c353eSmrg ;; 590636c353eSmrg t3e) 591636c353eSmrg basic_machine=alphaev5-cray 592636c353eSmrg basic_os=unicos 593636c353eSmrg ;; 594636c353eSmrg t90) 595636c353eSmrg basic_machine=t90-cray 596636c353eSmrg basic_os=unicos 597636c353eSmrg ;; 598636c353eSmrg toad1) 599636c353eSmrg basic_machine=pdp10-xkl 600636c353eSmrg basic_os=tops20 601636c353eSmrg ;; 602636c353eSmrg tpf) 603636c353eSmrg basic_machine=s390x-ibm 604636c353eSmrg basic_os=tpf 605636c353eSmrg ;; 606636c353eSmrg udi29k) 607636c353eSmrg basic_machine=a29k-amd 608636c353eSmrg basic_os=udi 609636c353eSmrg ;; 610636c353eSmrg ultra3) 611636c353eSmrg basic_machine=a29k-nyu 612636c353eSmrg basic_os=sym1 613636c353eSmrg ;; 614636c353eSmrg v810 | necv810) 615636c353eSmrg basic_machine=v810-nec 616636c353eSmrg basic_os=none 617636c353eSmrg ;; 618636c353eSmrg vaxv) 619636c353eSmrg basic_machine=vax-dec 620636c353eSmrg basic_os=sysv 621636c353eSmrg ;; 622636c353eSmrg vms) 623636c353eSmrg basic_machine=vax-dec 624636c353eSmrg basic_os=vms 625636c353eSmrg ;; 626636c353eSmrg vsta) 627636c353eSmrg basic_machine=i386-pc 628636c353eSmrg basic_os=vsta 629636c353eSmrg ;; 630636c353eSmrg vxworks960) 631636c353eSmrg basic_machine=i960-wrs 632636c353eSmrg basic_os=vxworks 633636c353eSmrg ;; 634636c353eSmrg vxworks68) 635636c353eSmrg basic_machine=m68k-wrs 636636c353eSmrg basic_os=vxworks 637636c353eSmrg ;; 638636c353eSmrg vxworks29k) 639636c353eSmrg basic_machine=a29k-wrs 640636c353eSmrg basic_os=vxworks 641636c353eSmrg ;; 642636c353eSmrg xbox) 643636c353eSmrg basic_machine=i686-pc 644636c353eSmrg basic_os=mingw32 645636c353eSmrg ;; 646636c353eSmrg ymp) 647636c353eSmrg basic_machine=ymp-cray 648636c353eSmrg basic_os=unicos 649636c353eSmrg ;; 650636c353eSmrg *) 651636c353eSmrg basic_machine=$1 652636c353eSmrg basic_os= 653636c353eSmrg ;; 654636c353eSmrg esac 655e07dc26bSmrg ;; 656e07dc26bSmrgesac 657e07dc26bSmrg 658636c353eSmrg# Decode 1-component or ad-hoc basic machines 659e07dc26bSmrgcase $basic_machine in 660636c353eSmrg # Here we handle the default manufacturer of certain CPU types. It is in 661636c353eSmrg # some cases the only manufacturer, in others, it is the most popular. 662636c353eSmrg w89k) 663636c353eSmrg cpu=hppa1.1 664636c353eSmrg vendor=winbond 665e07dc26bSmrg ;; 666636c353eSmrg op50n) 667636c353eSmrg cpu=hppa1.1 668636c353eSmrg vendor=oki 669e07dc26bSmrg ;; 670636c353eSmrg op60c) 671636c353eSmrg cpu=hppa1.1 672636c353eSmrg vendor=oki 673e07dc26bSmrg ;; 674636c353eSmrg ibm*) 675636c353eSmrg cpu=i370 676636c353eSmrg vendor=ibm 677e07dc26bSmrg ;; 678636c353eSmrg orion105) 679636c353eSmrg cpu=clipper 680636c353eSmrg vendor=highlevel 681e07dc26bSmrg ;; 682636c353eSmrg mac | mpw | mac-mpw) 683636c353eSmrg cpu=m68k 684636c353eSmrg vendor=apple 685e07dc26bSmrg ;; 686636c353eSmrg pmac | pmac-mpw) 687636c353eSmrg cpu=powerpc 688636c353eSmrg vendor=apple 689e07dc26bSmrg ;; 690e07dc26bSmrg 691e07dc26bSmrg # Recognize the various machine names and aliases which stand 692e07dc26bSmrg # for a CPU type and a company and sometimes even an OS. 693e07dc26bSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694636c353eSmrg cpu=m68000 695636c353eSmrg vendor=att 696e07dc26bSmrg ;; 697e07dc26bSmrg 3b*) 698636c353eSmrg cpu=we32k 699636c353eSmrg vendor=att 700e07dc26bSmrg ;; 701e07dc26bSmrg bluegene*) 702636c353eSmrg cpu=powerpc 703636c353eSmrg vendor=ibm 704636c353eSmrg basic_os=cnk 705e07dc26bSmrg ;; 706e07dc26bSmrg decsystem10* | dec10*) 707636c353eSmrg cpu=pdp10 708636c353eSmrg vendor=dec 709636c353eSmrg basic_os=tops10 710e07dc26bSmrg ;; 711e07dc26bSmrg decsystem20* | dec20*) 712636c353eSmrg cpu=pdp10 713636c353eSmrg vendor=dec 714636c353eSmrg basic_os=tops20 715e07dc26bSmrg ;; 716e07dc26bSmrg delta | 3300 | motorola-3300 | motorola-delta \ 717e07dc26bSmrg | 3300-motorola | delta-motorola) 718636c353eSmrg cpu=m68k 719636c353eSmrg vendor=motorola 720e07dc26bSmrg ;; 721636c353eSmrg dpx2*) 722636c353eSmrg cpu=m68k 723636c353eSmrg vendor=bull 724636c353eSmrg basic_os=sysv3 725e07dc26bSmrg ;; 726e07dc26bSmrg encore | umax | mmax) 727636c353eSmrg cpu=ns32k 728636c353eSmrg vendor=encore 729e07dc26bSmrg ;; 730636c353eSmrg elxsi) 731636c353eSmrg cpu=elxsi 732636c353eSmrg vendor=elxsi 733636c353eSmrg basic_os=${basic_os:-bsd} 734e07dc26bSmrg ;; 735e07dc26bSmrg fx2800) 736636c353eSmrg cpu=i860 737636c353eSmrg vendor=alliant 738e07dc26bSmrg ;; 739e07dc26bSmrg genix) 740636c353eSmrg cpu=ns32k 741636c353eSmrg vendor=ns 742e07dc26bSmrg ;; 743e07dc26bSmrg h3050r* | hiux*) 744636c353eSmrg cpu=hppa1.1 745636c353eSmrg vendor=hitachi 746636c353eSmrg basic_os=hiuxwe2 747e07dc26bSmrg ;; 748e07dc26bSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749636c353eSmrg cpu=hppa1.0 750636c353eSmrg vendor=hp 751e07dc26bSmrg ;; 752e07dc26bSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753636c353eSmrg cpu=m68000 754636c353eSmrg vendor=hp 755e07dc26bSmrg ;; 756e07dc26bSmrg hp9k3[2-9][0-9]) 757636c353eSmrg cpu=m68k 758636c353eSmrg vendor=hp 759e07dc26bSmrg ;; 760e07dc26bSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761636c353eSmrg cpu=hppa1.0 762636c353eSmrg vendor=hp 763e07dc26bSmrg ;; 764e07dc26bSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765636c353eSmrg cpu=hppa1.1 766636c353eSmrg vendor=hp 767e07dc26bSmrg ;; 768e07dc26bSmrg hp9k78[0-9] | hp78[0-9]) 769e07dc26bSmrg # FIXME: really hppa2.0-hp 770636c353eSmrg cpu=hppa1.1 771636c353eSmrg vendor=hp 772e07dc26bSmrg ;; 773e07dc26bSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774e07dc26bSmrg # FIXME: really hppa2.0-hp 775636c353eSmrg cpu=hppa1.1 776636c353eSmrg vendor=hp 777e07dc26bSmrg ;; 778e07dc26bSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779636c353eSmrg cpu=hppa1.1 780636c353eSmrg vendor=hp 781e07dc26bSmrg ;; 782e07dc26bSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783636c353eSmrg cpu=hppa1.0 784636c353eSmrg vendor=hp 785e07dc26bSmrg ;; 786e07dc26bSmrg i*86v32) 787636c353eSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788636c353eSmrg vendor=pc 789636c353eSmrg basic_os=sysv32 790e07dc26bSmrg ;; 791e07dc26bSmrg i*86v4*) 792636c353eSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793636c353eSmrg vendor=pc 794636c353eSmrg basic_os=sysv4 795e07dc26bSmrg ;; 796e07dc26bSmrg i*86v) 797636c353eSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798636c353eSmrg vendor=pc 799636c353eSmrg basic_os=sysv 800e07dc26bSmrg ;; 801e07dc26bSmrg i*86sol2) 802636c353eSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803636c353eSmrg vendor=pc 804636c353eSmrg basic_os=solaris2 805e07dc26bSmrg ;; 806636c353eSmrg j90 | j90-cray) 807636c353eSmrg cpu=j90 808636c353eSmrg vendor=cray 809636c353eSmrg basic_os=${basic_os:-unicos} 810e07dc26bSmrg ;; 811e07dc26bSmrg iris | iris4d) 812636c353eSmrg cpu=mips 813636c353eSmrg vendor=sgi 814636c353eSmrg case $basic_os in 815636c353eSmrg irix*) 816e07dc26bSmrg ;; 817e07dc26bSmrg *) 818636c353eSmrg basic_os=irix4 819e07dc26bSmrg ;; 820e07dc26bSmrg esac 821e07dc26bSmrg ;; 822e07dc26bSmrg miniframe) 823636c353eSmrg cpu=m68000 824636c353eSmrg vendor=convergent 825e07dc26bSmrg ;; 826636c353eSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827636c353eSmrg cpu=m68k 828636c353eSmrg vendor=atari 829636c353eSmrg basic_os=mint 830e07dc26bSmrg ;; 831e07dc26bSmrg news-3600 | risc-news) 832636c353eSmrg cpu=mips 833636c353eSmrg vendor=sony 834636c353eSmrg basic_os=newsos 835636c353eSmrg ;; 836636c353eSmrg next | m*-next) 837636c353eSmrg cpu=m68k 838636c353eSmrg vendor=next 839636c353eSmrg case $basic_os in 840636c353eSmrg openstep*) 841636c353eSmrg ;; 842636c353eSmrg nextstep*) 843e07dc26bSmrg ;; 844636c353eSmrg ns2*) 845636c353eSmrg basic_os=nextstep2 846e07dc26bSmrg ;; 847e07dc26bSmrg *) 848636c353eSmrg basic_os=nextstep3 849e07dc26bSmrg ;; 850e07dc26bSmrg esac 851e07dc26bSmrg ;; 852e07dc26bSmrg np1) 853636c353eSmrg cpu=np1 854636c353eSmrg vendor=gould 855e07dc26bSmrg ;; 856e07dc26bSmrg op50n-* | op60c-*) 857636c353eSmrg cpu=hppa1.1 858636c353eSmrg vendor=oki 859636c353eSmrg basic_os=proelf 860e07dc26bSmrg ;; 861e07dc26bSmrg pa-hitachi) 862636c353eSmrg cpu=hppa1.1 863636c353eSmrg vendor=hitachi 864636c353eSmrg basic_os=hiuxwe2 865e07dc26bSmrg ;; 866e07dc26bSmrg pbd) 867636c353eSmrg cpu=sparc 868636c353eSmrg vendor=tti 869e07dc26bSmrg ;; 870e07dc26bSmrg pbb) 871636c353eSmrg cpu=m68k 872636c353eSmrg vendor=tti 873e07dc26bSmrg ;; 874636c353eSmrg pc532) 875636c353eSmrg cpu=ns32k 876636c353eSmrg vendor=pc532 877e07dc26bSmrg ;; 878e07dc26bSmrg pn) 879636c353eSmrg cpu=pn 880636c353eSmrg vendor=gould 881e07dc26bSmrg ;; 882636c353eSmrg power) 883636c353eSmrg cpu=power 884636c353eSmrg vendor=ibm 885e07dc26bSmrg ;; 886e07dc26bSmrg ps2) 887636c353eSmrg cpu=i386 888636c353eSmrg vendor=ibm 889e07dc26bSmrg ;; 890e07dc26bSmrg rm[46]00) 891636c353eSmrg cpu=mips 892636c353eSmrg vendor=siemens 893e07dc26bSmrg ;; 894e07dc26bSmrg rtpc | rtpc-*) 895636c353eSmrg cpu=romp 896636c353eSmrg vendor=ibm 897e07dc26bSmrg ;; 898636c353eSmrg sde) 899636c353eSmrg cpu=mipsisa32 900636c353eSmrg vendor=sde 901636c353eSmrg basic_os=${basic_os:-elf} 902e07dc26bSmrg ;; 903636c353eSmrg simso-wrs) 904636c353eSmrg cpu=sparclite 905636c353eSmrg vendor=wrs 906636c353eSmrg basic_os=vxworks 907e07dc26bSmrg ;; 908636c353eSmrg tower | tower-32) 909636c353eSmrg cpu=m68k 910636c353eSmrg vendor=ncr 911e07dc26bSmrg ;; 912636c353eSmrg vpp*|vx|vx-*) 913636c353eSmrg cpu=f301 914636c353eSmrg vendor=fujitsu 915e07dc26bSmrg ;; 916636c353eSmrg w65) 917636c353eSmrg cpu=w65 918636c353eSmrg vendor=wdc 919e07dc26bSmrg ;; 920636c353eSmrg w89k-*) 921636c353eSmrg cpu=hppa1.1 922636c353eSmrg vendor=winbond 923636c353eSmrg basic_os=proelf 924e07dc26bSmrg ;; 925636c353eSmrg none) 926636c353eSmrg cpu=none 927636c353eSmrg vendor=none 928e07dc26bSmrg ;; 929636c353eSmrg leon|leon[3-9]) 930636c353eSmrg cpu=sparc 931636c353eSmrg vendor=$basic_machine 932e07dc26bSmrg ;; 933636c353eSmrg leon-*|leon[3-9]-*) 934636c353eSmrg cpu=sparc 935636c353eSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936e07dc26bSmrg ;; 937636c353eSmrg 938636c353eSmrg *-*) 939636c353eSmrg # shellcheck disable=SC2162 940636c353eSmrg saved_IFS=$IFS 941636c353eSmrg IFS="-" read cpu vendor <<EOF 942636c353eSmrg$basic_machine 943636c353eSmrgEOF 944636c353eSmrg IFS=$saved_IFS 945e07dc26bSmrg ;; 946636c353eSmrg # We use `pc' rather than `unknown' 947636c353eSmrg # because (1) that's what they normally are, and 948636c353eSmrg # (2) the word "unknown" tends to confuse beginning users. 949636c353eSmrg i*86 | x86_64) 950636c353eSmrg cpu=$basic_machine 951636c353eSmrg vendor=pc 952e07dc26bSmrg ;; 953636c353eSmrg # These rules are duplicated from below for sake of the special case above; 954636c353eSmrg # i.e. things that normalized to x86 arches should also default to "pc" 955636c353eSmrg pc98) 956636c353eSmrg cpu=i386 957636c353eSmrg vendor=pc 958e07dc26bSmrg ;; 959636c353eSmrg x64 | amd64) 960636c353eSmrg cpu=x86_64 961636c353eSmrg vendor=pc 962e07dc26bSmrg ;; 963636c353eSmrg # Recognize the basic CPU types without company name. 964636c353eSmrg *) 965636c353eSmrg cpu=$basic_machine 966636c353eSmrg vendor=unknown 967e07dc26bSmrg ;; 968636c353eSmrgesac 969636c353eSmrg 970636c353eSmrgunset -v basic_machine 971636c353eSmrg 972636c353eSmrg# Decode basic machines in the full and proper CPU-Company form. 973636c353eSmrgcase $cpu-$vendor in 974636c353eSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975636c353eSmrg # some cases the only manufacturer, in others, it is the most popular. 976636c353eSmrg craynv-unknown) 977636c353eSmrg vendor=cray 978636c353eSmrg basic_os=${basic_os:-unicosmp} 979e07dc26bSmrg ;; 980636c353eSmrg c90-unknown | c90-cray) 981636c353eSmrg vendor=cray 982636c353eSmrg basic_os=${Basic_os:-unicos} 983e07dc26bSmrg ;; 984636c353eSmrg fx80-unknown) 985636c353eSmrg vendor=alliant 986e07dc26bSmrg ;; 987636c353eSmrg romp-unknown) 988636c353eSmrg vendor=ibm 989e07dc26bSmrg ;; 990636c353eSmrg mmix-unknown) 991636c353eSmrg vendor=knuth 992e07dc26bSmrg ;; 993636c353eSmrg microblaze-unknown | microblazeel-unknown) 994636c353eSmrg vendor=xilinx 995e07dc26bSmrg ;; 996636c353eSmrg rs6000-unknown) 997636c353eSmrg vendor=ibm 998e07dc26bSmrg ;; 999636c353eSmrg vax-unknown) 1000636c353eSmrg vendor=dec 1001e07dc26bSmrg ;; 1002636c353eSmrg pdp11-unknown) 1003636c353eSmrg vendor=dec 1004e07dc26bSmrg ;; 1005636c353eSmrg we32k-unknown) 1006636c353eSmrg vendor=att 1007e07dc26bSmrg ;; 1008636c353eSmrg cydra-unknown) 1009636c353eSmrg vendor=cydrome 1010e07dc26bSmrg ;; 1011636c353eSmrg i370-ibm*) 1012636c353eSmrg vendor=ibm 1013e07dc26bSmrg ;; 1014636c353eSmrg orion-unknown) 1015636c353eSmrg vendor=highlevel 1016e07dc26bSmrg ;; 1017636c353eSmrg xps-unknown | xps100-unknown) 1018636c353eSmrg cpu=xps100 1019636c353eSmrg vendor=honeywell 1020e07dc26bSmrg ;; 1021636c353eSmrg 1022636c353eSmrg # Here we normalize CPU types with a missing or matching vendor 1023636c353eSmrg armh-unknown | armh-alt) 1024636c353eSmrg cpu=armv7l 1025636c353eSmrg vendor=alt 1026636c353eSmrg basic_os=${basic_os:-linux-gnueabihf} 1027e07dc26bSmrg ;; 1028636c353eSmrg dpx20-unknown | dpx20-bull) 1029636c353eSmrg cpu=rs6000 1030636c353eSmrg vendor=bull 1031636c353eSmrg basic_os=${basic_os:-bosx} 1032e07dc26bSmrg ;; 1033636c353eSmrg 1034636c353eSmrg # Here we normalize CPU types irrespective of the vendor 1035636c353eSmrg amd64-*) 1036636c353eSmrg cpu=x86_64 1037e07dc26bSmrg ;; 1038636c353eSmrg blackfin-*) 1039636c353eSmrg cpu=bfin 1040636c353eSmrg basic_os=linux 1041e07dc26bSmrg ;; 1042636c353eSmrg c54x-*) 1043636c353eSmrg cpu=tic54x 1044e07dc26bSmrg ;; 1045636c353eSmrg c55x-*) 1046636c353eSmrg cpu=tic55x 1047e07dc26bSmrg ;; 1048636c353eSmrg c6x-*) 1049636c353eSmrg cpu=tic6x 1050e07dc26bSmrg ;; 1051636c353eSmrg e500v[12]-*) 1052636c353eSmrg cpu=powerpc 1053636c353eSmrg basic_os=${basic_os}"spe" 1054e07dc26bSmrg ;; 1055636c353eSmrg mips3*-*) 1056636c353eSmrg cpu=mips64 1057e07dc26bSmrg ;; 1058636c353eSmrg ms1-*) 1059636c353eSmrg cpu=mt 1060e07dc26bSmrg ;; 1061636c353eSmrg m68knommu-*) 1062636c353eSmrg cpu=m68k 1063636c353eSmrg basic_os=linux 1064e07dc26bSmrg ;; 1065636c353eSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1066636c353eSmrg cpu=s12z 1067e07dc26bSmrg ;; 1068636c353eSmrg openrisc-*) 1069636c353eSmrg cpu=or32 1070e07dc26bSmrg ;; 1071636c353eSmrg parisc-*) 1072636c353eSmrg cpu=hppa 1073636c353eSmrg basic_os=linux 1074e07dc26bSmrg ;; 1075636c353eSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1076636c353eSmrg cpu=i586 1077e07dc26bSmrg ;; 1078636c353eSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1079636c353eSmrg cpu=i686 1080e07dc26bSmrg ;; 1081636c353eSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1082636c353eSmrg cpu=i686 1083e07dc26bSmrg ;; 1084636c353eSmrg pentium4-*) 1085636c353eSmrg cpu=i786 1086e07dc26bSmrg ;; 1087636c353eSmrg pc98-*) 1088636c353eSmrg cpu=i386 1089e07dc26bSmrg ;; 1090636c353eSmrg ppc-* | ppcbe-*) 1091636c353eSmrg cpu=powerpc 1092e07dc26bSmrg ;; 1093636c353eSmrg ppcle-* | powerpclittle-*) 1094636c353eSmrg cpu=powerpcle 1095e07dc26bSmrg ;; 1096636c353eSmrg ppc64-*) 1097636c353eSmrg cpu=powerpc64 1098e07dc26bSmrg ;; 1099636c353eSmrg ppc64le-* | powerpc64little-*) 1100636c353eSmrg cpu=powerpc64le 1101e07dc26bSmrg ;; 1102636c353eSmrg sb1-*) 1103636c353eSmrg cpu=mipsisa64sb1 1104e07dc26bSmrg ;; 1105636c353eSmrg sb1el-*) 1106636c353eSmrg cpu=mipsisa64sb1el 1107e07dc26bSmrg ;; 1108636c353eSmrg sh5e[lb]-*) 1109636c353eSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1110e07dc26bSmrg ;; 1111636c353eSmrg spur-*) 1112636c353eSmrg cpu=spur 1113e07dc26bSmrg ;; 1114636c353eSmrg strongarm-* | thumb-*) 1115636c353eSmrg cpu=arm 1116e07dc26bSmrg ;; 1117636c353eSmrg tx39-*) 1118636c353eSmrg cpu=mipstx39 1119e07dc26bSmrg ;; 1120636c353eSmrg tx39el-*) 1121636c353eSmrg cpu=mipstx39el 1122e07dc26bSmrg ;; 1123636c353eSmrg x64-*) 1124636c353eSmrg cpu=x86_64 1125e07dc26bSmrg ;; 1126636c353eSmrg xscale-* | xscalee[bl]-*) 1127636c353eSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1128e07dc26bSmrg ;; 1129636c353eSmrg arm64-* | aarch64le-*) 1130636c353eSmrg cpu=aarch64 1131e07dc26bSmrg ;; 1132636c353eSmrg 1133636c353eSmrg # Recognize the canonical CPU Types that limit and/or modify the 1134636c353eSmrg # company names they are paired with. 1135636c353eSmrg cr16-*) 1136636c353eSmrg basic_os=${basic_os:-elf} 1137e07dc26bSmrg ;; 1138636c353eSmrg crisv32-* | etraxfs*-*) 1139636c353eSmrg cpu=crisv32 1140636c353eSmrg vendor=axis 1141e07dc26bSmrg ;; 1142636c353eSmrg cris-* | etrax*-*) 1143636c353eSmrg cpu=cris 1144636c353eSmrg vendor=axis 1145e07dc26bSmrg ;; 1146636c353eSmrg crx-*) 1147636c353eSmrg basic_os=${basic_os:-elf} 1148e07dc26bSmrg ;; 1149636c353eSmrg neo-tandem) 1150636c353eSmrg cpu=neo 1151636c353eSmrg vendor=tandem 1152e07dc26bSmrg ;; 1153636c353eSmrg nse-tandem) 1154636c353eSmrg cpu=nse 1155636c353eSmrg vendor=tandem 1156e07dc26bSmrg ;; 1157636c353eSmrg nsr-tandem) 1158636c353eSmrg cpu=nsr 1159636c353eSmrg vendor=tandem 1160e07dc26bSmrg ;; 1161636c353eSmrg nsv-tandem) 1162636c353eSmrg cpu=nsv 1163636c353eSmrg vendor=tandem 1164e07dc26bSmrg ;; 1165636c353eSmrg nsx-tandem) 1166636c353eSmrg cpu=nsx 1167636c353eSmrg vendor=tandem 1168e07dc26bSmrg ;; 1169636c353eSmrg mipsallegrexel-sony) 1170636c353eSmrg cpu=mipsallegrexel 1171636c353eSmrg vendor=sony 1172e07dc26bSmrg ;; 1173636c353eSmrg tile*-*) 1174636c353eSmrg basic_os=${basic_os:-linux-gnu} 1175e07dc26bSmrg ;; 1176636c353eSmrg 1177e07dc26bSmrg *) 1178636c353eSmrg # Recognize the canonical CPU types that are allowed with any 1179636c353eSmrg # company name. 1180636c353eSmrg case $cpu in 1181636c353eSmrg 1750a | 580 \ 1182636c353eSmrg | a29k \ 1183636c353eSmrg | aarch64 | aarch64_be \ 1184636c353eSmrg | abacus \ 1185636c353eSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1186636c353eSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1187636c353eSmrg | alphapca5[67] | alpha64pca5[67] \ 1188636c353eSmrg | am33_2.0 \ 1189636c353eSmrg | amdgcn \ 1190636c353eSmrg | arc | arceb | arc32 | arc64 \ 1191636c353eSmrg | arm | arm[lb]e | arme[lb] | armv* \ 1192636c353eSmrg | avr | avr32 \ 1193636c353eSmrg | asmjs \ 1194636c353eSmrg | ba \ 1195636c353eSmrg | be32 | be64 \ 1196636c353eSmrg | bfin | bpf | bs2000 \ 1197636c353eSmrg | c[123]* | c30 | [cjt]90 | c4x \ 1198636c353eSmrg | c8051 | clipper | craynv | csky | cydra \ 1199636c353eSmrg | d10v | d30v | dlx | dsp16xx \ 1200636c353eSmrg | e2k | elxsi | epiphany \ 1201636c353eSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1202636c353eSmrg | h8300 | h8500 \ 1203636c353eSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1204636c353eSmrg | hexagon \ 1205636c353eSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1206636c353eSmrg | ip2k | iq2000 \ 1207636c353eSmrg | k1om \ 1208636c353eSmrg | le32 | le64 \ 1209636c353eSmrg | lm32 \ 1210636c353eSmrg | loongarch32 | loongarch64 \ 1211636c353eSmrg | m32c | m32r | m32rle \ 1212636c353eSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1213636c353eSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1214636c353eSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1215636c353eSmrg | microblaze | microblazeel \ 1216636c353eSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1217636c353eSmrg | mips16 \ 1218636c353eSmrg | mips64 | mips64eb | mips64el \ 1219636c353eSmrg | mips64octeon | mips64octeonel \ 1220636c353eSmrg | mips64orion | mips64orionel \ 1221636c353eSmrg | mips64r5900 | mips64r5900el \ 1222636c353eSmrg | mips64vr | mips64vrel \ 1223636c353eSmrg | mips64vr4100 | mips64vr4100el \ 1224636c353eSmrg | mips64vr4300 | mips64vr4300el \ 1225636c353eSmrg | mips64vr5000 | mips64vr5000el \ 1226636c353eSmrg | mips64vr5900 | mips64vr5900el \ 1227636c353eSmrg | mipsisa32 | mipsisa32el \ 1228636c353eSmrg | mipsisa32r2 | mipsisa32r2el \ 1229636c353eSmrg | mipsisa32r3 | mipsisa32r3el \ 1230636c353eSmrg | mipsisa32r5 | mipsisa32r5el \ 1231636c353eSmrg | mipsisa32r6 | mipsisa32r6el \ 1232636c353eSmrg | mipsisa64 | mipsisa64el \ 1233636c353eSmrg | mipsisa64r2 | mipsisa64r2el \ 1234636c353eSmrg | mipsisa64r3 | mipsisa64r3el \ 1235636c353eSmrg | mipsisa64r5 | mipsisa64r5el \ 1236636c353eSmrg | mipsisa64r6 | mipsisa64r6el \ 1237636c353eSmrg | mipsisa64sb1 | mipsisa64sb1el \ 1238636c353eSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 1239636c353eSmrg | mipsr5900 | mipsr5900el \ 1240636c353eSmrg | mipstx39 | mipstx39el \ 1241636c353eSmrg | mmix \ 1242636c353eSmrg | mn10200 | mn10300 \ 1243636c353eSmrg | moxie \ 1244636c353eSmrg | mt \ 1245636c353eSmrg | msp430 \ 1246636c353eSmrg | nds32 | nds32le | nds32be \ 1247636c353eSmrg | nfp \ 1248636c353eSmrg | nios | nios2 | nios2eb | nios2el \ 1249636c353eSmrg | none | np1 | ns16k | ns32k | nvptx \ 1250636c353eSmrg | open8 \ 1251636c353eSmrg | or1k* \ 1252636c353eSmrg | or32 \ 1253636c353eSmrg | orion \ 1254636c353eSmrg | picochip \ 1255636c353eSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1256636c353eSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1257636c353eSmrg | pru \ 1258636c353eSmrg | pyramid \ 1259636c353eSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1260636c353eSmrg | rl78 | romp | rs6000 | rx \ 1261636c353eSmrg | s390 | s390x \ 1262636c353eSmrg | score \ 1263636c353eSmrg | sh | shl \ 1264636c353eSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1265636c353eSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1266636c353eSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1267636c353eSmrg | sparclite \ 1268636c353eSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1269636c353eSmrg | spu \ 1270636c353eSmrg | tahoe \ 1271636c353eSmrg | thumbv7* \ 1272636c353eSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1273636c353eSmrg | tron \ 1274636c353eSmrg | ubicom32 \ 1275636c353eSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1276636c353eSmrg | vax \ 1277636c353eSmrg | visium \ 1278636c353eSmrg | w65 \ 1279636c353eSmrg | wasm32 | wasm64 \ 1280636c353eSmrg | we32k \ 1281636c353eSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1282636c353eSmrg | xstormy16 | xtensa* \ 1283636c353eSmrg | ymp \ 1284636c353eSmrg | z8k | z80) 1285636c353eSmrg ;; 1286636c353eSmrg 1287636c353eSmrg *) 1288636c353eSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1289636c353eSmrg exit 1 1290636c353eSmrg ;; 1291636c353eSmrg esac 1292e07dc26bSmrg ;; 1293e07dc26bSmrgesac 1294e07dc26bSmrg 1295e07dc26bSmrg# Here we canonicalize certain aliases for manufacturers. 1296636c353eSmrgcase $vendor in 1297636c353eSmrg digital*) 1298636c353eSmrg vendor=dec 1299e07dc26bSmrg ;; 1300636c353eSmrg commodore*) 1301636c353eSmrg vendor=cbm 1302e07dc26bSmrg ;; 1303e07dc26bSmrg *) 1304e07dc26bSmrg ;; 1305e07dc26bSmrgesac 1306e07dc26bSmrg 1307e07dc26bSmrg# Decode manufacturer-specific aliases for certain operating systems. 1308e07dc26bSmrg 1309636c353eSmrgif test x$basic_os != x 1310e07dc26bSmrgthen 1311636c353eSmrg 1312636c353eSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1313636c353eSmrg# set os. 1314636c353eSmrgcase $basic_os in 1315636c353eSmrg gnu/linux*) 1316636c353eSmrg kernel=linux 1317636c353eSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1318636c353eSmrg ;; 1319636c353eSmrg os2-emx) 1320636c353eSmrg kernel=os2 1321636c353eSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1322636c353eSmrg ;; 1323636c353eSmrg nto-qnx*) 1324636c353eSmrg kernel=nto 1325636c353eSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1326636c353eSmrg ;; 1327636c353eSmrg *-*) 1328636c353eSmrg # shellcheck disable=SC2162 1329636c353eSmrg saved_IFS=$IFS 1330636c353eSmrg IFS="-" read kernel os <<EOF 1331636c353eSmrg$basic_os 1332636c353eSmrgEOF 1333636c353eSmrg IFS=$saved_IFS 1334636c353eSmrg ;; 1335636c353eSmrg # Default OS when just kernel was specified 1336636c353eSmrg nto*) 1337636c353eSmrg kernel=nto 1338636c353eSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1339636c353eSmrg ;; 1340636c353eSmrg linux*) 1341636c353eSmrg kernel=linux 1342636c353eSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1343636c353eSmrg ;; 1344636c353eSmrg managarm*) 1345636c353eSmrg kernel=managarm 1346636c353eSmrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1347e07dc26bSmrg ;; 1348636c353eSmrg *) 1349636c353eSmrg kernel= 1350636c353eSmrg os=$basic_os 1351e07dc26bSmrg ;; 1352636c353eSmrgesac 1353636c353eSmrg 1354636c353eSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1355636c353eSmrg# etc.) 1356636c353eSmrgcase $os in 1357636c353eSmrg # First match some system type aliases that might get confused 1358636c353eSmrg # with valid system types. 1359636c353eSmrg # solaris* is a basic system type, with this one exception. 1360636c353eSmrg auroraux) 1361636c353eSmrg os=auroraux 1362e07dc26bSmrg ;; 1363636c353eSmrg bluegene*) 1364636c353eSmrg os=cnk 1365e07dc26bSmrg ;; 1366636c353eSmrg solaris1 | solaris1.*) 1367636c353eSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1368e07dc26bSmrg ;; 1369636c353eSmrg solaris) 1370636c353eSmrg os=solaris2 1371e07dc26bSmrg ;; 1372636c353eSmrg unixware*) 1373636c353eSmrg os=sysv4.2uw 1374e07dc26bSmrg ;; 1375636c353eSmrg # es1800 is here to avoid being matched by es* (a different OS) 1376636c353eSmrg es1800*) 1377636c353eSmrg os=ose 1378e07dc26bSmrg ;; 1379636c353eSmrg # Some version numbers need modification 1380636c353eSmrg chorusos*) 1381636c353eSmrg os=chorusos 1382e07dc26bSmrg ;; 1383636c353eSmrg isc) 1384636c353eSmrg os=isc2.2 1385e07dc26bSmrg ;; 1386636c353eSmrg sco6) 1387636c353eSmrg os=sco5v6 1388e07dc26bSmrg ;; 1389636c353eSmrg sco5) 1390636c353eSmrg os=sco3.2v5 1391e07dc26bSmrg ;; 1392636c353eSmrg sco4) 1393636c353eSmrg os=sco3.2v4 1394e07dc26bSmrg ;; 1395636c353eSmrg sco3.2.[4-9]*) 1396636c353eSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1397e07dc26bSmrg ;; 1398636c353eSmrg sco*v* | scout) 1399636c353eSmrg # Don't match below 1400e07dc26bSmrg ;; 1401636c353eSmrg sco*) 1402636c353eSmrg os=sco3.2v2 1403e07dc26bSmrg ;; 1404636c353eSmrg psos*) 1405636c353eSmrg os=psos 1406e07dc26bSmrg ;; 1407636c353eSmrg qnx*) 1408636c353eSmrg os=qnx 1409e07dc26bSmrg ;; 1410636c353eSmrg hiux*) 1411636c353eSmrg os=hiuxwe2 1412e07dc26bSmrg ;; 1413636c353eSmrg lynx*178) 1414636c353eSmrg os=lynxos178 1415e07dc26bSmrg ;; 1416636c353eSmrg lynx*5) 1417636c353eSmrg os=lynxos5 1418e07dc26bSmrg ;; 1419636c353eSmrg lynxos*) 1420636c353eSmrg # don't get caught up in next wildcard 1421e07dc26bSmrg ;; 1422636c353eSmrg lynx*) 1423636c353eSmrg os=lynxos 1424e07dc26bSmrg ;; 1425636c353eSmrg mac[0-9]*) 1426636c353eSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 1427e07dc26bSmrg ;; 1428636c353eSmrg opened*) 1429636c353eSmrg os=openedition 1430e07dc26bSmrg ;; 1431636c353eSmrg os400*) 1432636c353eSmrg os=os400 1433e07dc26bSmrg ;; 1434636c353eSmrg sunos5*) 1435636c353eSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1436e07dc26bSmrg ;; 1437636c353eSmrg sunos6*) 1438636c353eSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1439e07dc26bSmrg ;; 1440636c353eSmrg wince*) 1441636c353eSmrg os=wince 1442e07dc26bSmrg ;; 1443636c353eSmrg utek*) 1444636c353eSmrg os=bsd 1445e07dc26bSmrg ;; 1446636c353eSmrg dynix*) 1447636c353eSmrg os=bsd 1448636c353eSmrg ;; 1449636c353eSmrg acis*) 1450636c353eSmrg os=aos 1451e07dc26bSmrg ;; 1452636c353eSmrg atheos*) 1453636c353eSmrg os=atheos 1454e07dc26bSmrg ;; 1455636c353eSmrg syllable*) 1456636c353eSmrg os=syllable 1457e07dc26bSmrg ;; 1458636c353eSmrg 386bsd) 1459636c353eSmrg os=bsd 1460e07dc26bSmrg ;; 1461636c353eSmrg ctix* | uts*) 1462636c353eSmrg os=sysv 1463e07dc26bSmrg ;; 1464636c353eSmrg nova*) 1465636c353eSmrg os=rtmk-nova 1466e07dc26bSmrg ;; 1467636c353eSmrg ns2) 1468636c353eSmrg os=nextstep2 1469e07dc26bSmrg ;; 1470636c353eSmrg # Preserve the version number of sinix5. 1471636c353eSmrg sinix5.*) 1472636c353eSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1473e07dc26bSmrg ;; 1474636c353eSmrg sinix*) 1475636c353eSmrg os=sysv4 1476e07dc26bSmrg ;; 1477636c353eSmrg tpf*) 1478636c353eSmrg os=tpf 1479e07dc26bSmrg ;; 1480636c353eSmrg triton*) 1481636c353eSmrg os=sysv3 1482e07dc26bSmrg ;; 1483636c353eSmrg oss*) 1484636c353eSmrg os=sysv3 1485e07dc26bSmrg ;; 1486636c353eSmrg svr4*) 1487636c353eSmrg os=sysv4 1488e07dc26bSmrg ;; 1489636c353eSmrg svr3) 1490636c353eSmrg os=sysv3 1491e07dc26bSmrg ;; 1492636c353eSmrg sysvr4) 1493636c353eSmrg os=sysv4 1494e07dc26bSmrg ;; 1495636c353eSmrg ose*) 1496636c353eSmrg os=ose 1497e07dc26bSmrg ;; 1498636c353eSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1499636c353eSmrg os=mint 1500e07dc26bSmrg ;; 1501636c353eSmrg dicos*) 1502636c353eSmrg os=dicos 1503e07dc26bSmrg ;; 1504636c353eSmrg pikeos*) 1505636c353eSmrg # Until real need of OS specific support for 1506636c353eSmrg # particular features comes up, bare metal 1507636c353eSmrg # configurations are quite functional. 1508636c353eSmrg case $cpu in 1509636c353eSmrg arm*) 1510636c353eSmrg os=eabi 1511636c353eSmrg ;; 1512636c353eSmrg *) 1513636c353eSmrg os=elf 1514636c353eSmrg ;; 1515636c353eSmrg esac 1516e07dc26bSmrg ;; 1517e07dc26bSmrg *) 1518636c353eSmrg # No normalization, but not necessarily accepted, that comes below. 1519e07dc26bSmrg ;; 1520e07dc26bSmrgesac 1521636c353eSmrg 1522e07dc26bSmrgelse 1523e07dc26bSmrg 1524e07dc26bSmrg# Here we handle the default operating systems that come with various machines. 1525e07dc26bSmrg# The value should be what the vendor currently ships out the door with their 1526e07dc26bSmrg# machine or put another way, the most popular os provided with the machine. 1527e07dc26bSmrg 1528e07dc26bSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1529e07dc26bSmrg# "-sun"), then you have to tell the case statement up towards the top 1530e07dc26bSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1531e07dc26bSmrg# will signal an error saying that MANUFACTURER isn't an operating 1532e07dc26bSmrg# system, and we'll never get to this point. 1533e07dc26bSmrg 1534636c353eSmrgkernel= 1535636c353eSmrgcase $cpu-$vendor in 1536e07dc26bSmrg score-*) 1537636c353eSmrg os=elf 1538e07dc26bSmrg ;; 1539e07dc26bSmrg spu-*) 1540636c353eSmrg os=elf 1541e07dc26bSmrg ;; 1542e07dc26bSmrg *-acorn) 1543636c353eSmrg os=riscix1.2 1544e07dc26bSmrg ;; 1545e07dc26bSmrg arm*-rebel) 1546636c353eSmrg kernel=linux 1547636c353eSmrg os=gnu 1548e07dc26bSmrg ;; 1549e07dc26bSmrg arm*-semi) 1550636c353eSmrg os=aout 1551e07dc26bSmrg ;; 1552e07dc26bSmrg c4x-* | tic4x-*) 1553636c353eSmrg os=coff 1554e07dc26bSmrg ;; 1555e07dc26bSmrg c8051-*) 1556636c353eSmrg os=elf 1557636c353eSmrg ;; 1558636c353eSmrg clipper-intergraph) 1559636c353eSmrg os=clix 1560e07dc26bSmrg ;; 1561e07dc26bSmrg hexagon-*) 1562636c353eSmrg os=elf 1563e07dc26bSmrg ;; 1564e07dc26bSmrg tic54x-*) 1565636c353eSmrg os=coff 1566e07dc26bSmrg ;; 1567e07dc26bSmrg tic55x-*) 1568636c353eSmrg os=coff 1569e07dc26bSmrg ;; 1570e07dc26bSmrg tic6x-*) 1571636c353eSmrg os=coff 1572e07dc26bSmrg ;; 1573e07dc26bSmrg # This must come before the *-dec entry. 1574e07dc26bSmrg pdp10-*) 1575636c353eSmrg os=tops20 1576e07dc26bSmrg ;; 1577e07dc26bSmrg pdp11-*) 1578636c353eSmrg os=none 1579e07dc26bSmrg ;; 1580e07dc26bSmrg *-dec | vax-*) 1581636c353eSmrg os=ultrix4.2 1582e07dc26bSmrg ;; 1583e07dc26bSmrg m68*-apollo) 1584636c353eSmrg os=domain 1585e07dc26bSmrg ;; 1586e07dc26bSmrg i386-sun) 1587636c353eSmrg os=sunos4.0.2 1588e07dc26bSmrg ;; 1589e07dc26bSmrg m68000-sun) 1590636c353eSmrg os=sunos3 1591e07dc26bSmrg ;; 1592e07dc26bSmrg m68*-cisco) 1593636c353eSmrg os=aout 1594e07dc26bSmrg ;; 1595e07dc26bSmrg mep-*) 1596636c353eSmrg os=elf 1597e07dc26bSmrg ;; 1598e07dc26bSmrg mips*-cisco) 1599636c353eSmrg os=elf 1600e07dc26bSmrg ;; 1601e07dc26bSmrg mips*-*) 1602636c353eSmrg os=elf 1603e07dc26bSmrg ;; 1604e07dc26bSmrg or32-*) 1605636c353eSmrg os=coff 1606e07dc26bSmrg ;; 1607e07dc26bSmrg *-tti) # must be before sparc entry or we get the wrong os. 1608636c353eSmrg os=sysv3 1609e07dc26bSmrg ;; 1610e07dc26bSmrg sparc-* | *-sun) 1611636c353eSmrg os=sunos4.1.1 1612e07dc26bSmrg ;; 1613636c353eSmrg pru-*) 1614636c353eSmrg os=elf 1615e07dc26bSmrg ;; 1616636c353eSmrg *-be) 1617636c353eSmrg os=beos 1618e07dc26bSmrg ;; 1619e07dc26bSmrg *-ibm) 1620636c353eSmrg os=aix 1621e07dc26bSmrg ;; 1622e07dc26bSmrg *-knuth) 1623636c353eSmrg os=mmixware 1624e07dc26bSmrg ;; 1625e07dc26bSmrg *-wec) 1626636c353eSmrg os=proelf 1627e07dc26bSmrg ;; 1628e07dc26bSmrg *-winbond) 1629636c353eSmrg os=proelf 1630e07dc26bSmrg ;; 1631e07dc26bSmrg *-oki) 1632636c353eSmrg os=proelf 1633e07dc26bSmrg ;; 1634e07dc26bSmrg *-hp) 1635636c353eSmrg os=hpux 1636e07dc26bSmrg ;; 1637e07dc26bSmrg *-hitachi) 1638636c353eSmrg os=hiux 1639e07dc26bSmrg ;; 1640e07dc26bSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1641636c353eSmrg os=sysv 1642e07dc26bSmrg ;; 1643e07dc26bSmrg *-cbm) 1644636c353eSmrg os=amigaos 1645e07dc26bSmrg ;; 1646e07dc26bSmrg *-dg) 1647636c353eSmrg os=dgux 1648e07dc26bSmrg ;; 1649e07dc26bSmrg *-dolphin) 1650636c353eSmrg os=sysv3 1651e07dc26bSmrg ;; 1652e07dc26bSmrg m68k-ccur) 1653636c353eSmrg os=rtu 1654e07dc26bSmrg ;; 1655e07dc26bSmrg m88k-omron*) 1656636c353eSmrg os=luna 1657e07dc26bSmrg ;; 1658636c353eSmrg *-next) 1659636c353eSmrg os=nextstep 1660e07dc26bSmrg ;; 1661e07dc26bSmrg *-sequent) 1662636c353eSmrg os=ptx 1663e07dc26bSmrg ;; 1664e07dc26bSmrg *-crds) 1665636c353eSmrg os=unos 1666e07dc26bSmrg ;; 1667e07dc26bSmrg *-ns) 1668636c353eSmrg os=genix 1669e07dc26bSmrg ;; 1670e07dc26bSmrg i370-*) 1671636c353eSmrg os=mvs 1672e07dc26bSmrg ;; 1673e07dc26bSmrg *-gould) 1674636c353eSmrg os=sysv 1675e07dc26bSmrg ;; 1676e07dc26bSmrg *-highlevel) 1677636c353eSmrg os=bsd 1678e07dc26bSmrg ;; 1679e07dc26bSmrg *-encore) 1680636c353eSmrg os=bsd 1681e07dc26bSmrg ;; 1682e07dc26bSmrg *-sgi) 1683636c353eSmrg os=irix 1684e07dc26bSmrg ;; 1685e07dc26bSmrg *-siemens) 1686636c353eSmrg os=sysv4 1687e07dc26bSmrg ;; 1688e07dc26bSmrg *-masscomp) 1689636c353eSmrg os=rtu 1690e07dc26bSmrg ;; 1691e07dc26bSmrg f30[01]-fujitsu | f700-fujitsu) 1692636c353eSmrg os=uxpv 1693e07dc26bSmrg ;; 1694e07dc26bSmrg *-rom68k) 1695636c353eSmrg os=coff 1696e07dc26bSmrg ;; 1697e07dc26bSmrg *-*bug) 1698636c353eSmrg os=coff 1699e07dc26bSmrg ;; 1700e07dc26bSmrg *-apple) 1701636c353eSmrg os=macos 1702e07dc26bSmrg ;; 1703e07dc26bSmrg *-atari*) 1704636c353eSmrg os=mint 1705636c353eSmrg ;; 1706636c353eSmrg *-wrs) 1707636c353eSmrg os=vxworks 1708e07dc26bSmrg ;; 1709e07dc26bSmrg *) 1710636c353eSmrg os=none 1711e07dc26bSmrg ;; 1712e07dc26bSmrgesac 1713636c353eSmrg 1714e07dc26bSmrgfi 1715e07dc26bSmrg 1716636c353eSmrg# Now, validate our (potentially fixed-up) OS. 1717636c353eSmrgcase $os in 1718636c353eSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1719636c353eSmrg musl* | newlib* | relibc* | uclibc*) 1720636c353eSmrg ;; 1721636c353eSmrg # Likewise for "kernel-abi" 1722636c353eSmrg eabi* | gnueabi*) 1723636c353eSmrg ;; 1724636c353eSmrg # VxWorks passes extra cpu info in the 4th filed. 1725636c353eSmrg simlinux | simwindows | spe) 1726636c353eSmrg ;; 1727636c353eSmrg # Now accept the basic system types. 1728636c353eSmrg # The portable systems comes first. 1729636c353eSmrg # Each alternative MUST end in a * to match a version number. 1730636c353eSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1731636c353eSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1732636c353eSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1733636c353eSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1734636c353eSmrg | hiux* | abug | nacl* | netware* | windows* \ 1735636c353eSmrg | os9* | macos* | osx* | ios* \ 1736636c353eSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1737636c353eSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1738636c353eSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1739636c353eSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1740636c353eSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1741636c353eSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1742636c353eSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1743636c353eSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1744636c353eSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1745636c353eSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1746636c353eSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1747636c353eSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1748636c353eSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1749636c353eSmrg | midipix* | mingw32* | mingw64* | mint* \ 1750636c353eSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1751636c353eSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1752636c353eSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1753636c353eSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1754636c353eSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1755636c353eSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1756636c353eSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1757636c353eSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1758636c353eSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1759636c353eSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1760636c353eSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1761636c353eSmrg | fiwix* | mlibc* ) 1762636c353eSmrg ;; 1763636c353eSmrg # This one is extra strict with allowed versions 1764636c353eSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1765636c353eSmrg # Don't forget version if it is 3.2v4 or newer. 1766636c353eSmrg ;; 1767636c353eSmrg none) 1768636c353eSmrg ;; 1769636c353eSmrg kernel* ) 1770636c353eSmrg # Restricted further below 1771636c353eSmrg ;; 1772636c353eSmrg *) 1773636c353eSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1774636c353eSmrg exit 1 1775636c353eSmrg ;; 1776636c353eSmrgesac 1777636c353eSmrg 1778636c353eSmrg# As a final step for OS-related things, validate the OS-kernel combination 1779636c353eSmrg# (given a valid OS), if there is a kernel. 1780636c353eSmrgcase $kernel-$os in 1781636c353eSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1782636c353eSmrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 1783636c353eSmrg ;; 1784636c353eSmrg uclinux-uclibc* ) 1785636c353eSmrg ;; 1786636c353eSmrg managarm-mlibc* | managarm-kernel* ) 1787636c353eSmrg ;; 1788636c353eSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 1789636c353eSmrg # These are just libc implementations, not actual OSes, and thus 1790636c353eSmrg # require a kernel. 1791636c353eSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1792636c353eSmrg exit 1 1793636c353eSmrg ;; 1794636c353eSmrg -kernel* ) 1795636c353eSmrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 1796636c353eSmrg exit 1 1797636c353eSmrg ;; 1798636c353eSmrg *-kernel* ) 1799636c353eSmrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 1800636c353eSmrg exit 1 1801636c353eSmrg ;; 1802636c353eSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1803636c353eSmrg ;; 1804636c353eSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1805636c353eSmrg ;; 1806636c353eSmrg nto-qnx*) 1807636c353eSmrg ;; 1808636c353eSmrg os2-emx) 1809636c353eSmrg ;; 1810636c353eSmrg *-eabi* | *-gnueabi*) 1811636c353eSmrg ;; 1812636c353eSmrg -*) 1813636c353eSmrg # Blank kernel with real OS is always fine. 1814636c353eSmrg ;; 1815636c353eSmrg *-*) 1816636c353eSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1817636c353eSmrg exit 1 1818636c353eSmrg ;; 1819636c353eSmrgesac 1820636c353eSmrg 1821e07dc26bSmrg# Here we handle the case where we know the os, and the CPU type, but not the 1822e07dc26bSmrg# manufacturer. We pick the logical manufacturer. 1823636c353eSmrgcase $vendor in 1824636c353eSmrg unknown) 1825636c353eSmrg case $cpu-$os in 1826636c353eSmrg *-riscix*) 1827e07dc26bSmrg vendor=acorn 1828e07dc26bSmrg ;; 1829636c353eSmrg *-sunos*) 1830e07dc26bSmrg vendor=sun 1831e07dc26bSmrg ;; 1832636c353eSmrg *-cnk* | *-aix*) 1833e07dc26bSmrg vendor=ibm 1834e07dc26bSmrg ;; 1835636c353eSmrg *-beos*) 1836e07dc26bSmrg vendor=be 1837e07dc26bSmrg ;; 1838636c353eSmrg *-hpux*) 1839e07dc26bSmrg vendor=hp 1840e07dc26bSmrg ;; 1841636c353eSmrg *-mpeix*) 1842e07dc26bSmrg vendor=hp 1843e07dc26bSmrg ;; 1844636c353eSmrg *-hiux*) 1845e07dc26bSmrg vendor=hitachi 1846e07dc26bSmrg ;; 1847636c353eSmrg *-unos*) 1848e07dc26bSmrg vendor=crds 1849e07dc26bSmrg ;; 1850636c353eSmrg *-dgux*) 1851e07dc26bSmrg vendor=dg 1852e07dc26bSmrg ;; 1853636c353eSmrg *-luna*) 1854e07dc26bSmrg vendor=omron 1855e07dc26bSmrg ;; 1856636c353eSmrg *-genix*) 1857e07dc26bSmrg vendor=ns 1858e07dc26bSmrg ;; 1859636c353eSmrg *-clix*) 1860636c353eSmrg vendor=intergraph 1861636c353eSmrg ;; 1862636c353eSmrg *-mvs* | *-opened*) 1863636c353eSmrg vendor=ibm 1864636c353eSmrg ;; 1865636c353eSmrg *-os400*) 1866e07dc26bSmrg vendor=ibm 1867e07dc26bSmrg ;; 1868636c353eSmrg s390-* | s390x-*) 1869e07dc26bSmrg vendor=ibm 1870e07dc26bSmrg ;; 1871636c353eSmrg *-ptx*) 1872e07dc26bSmrg vendor=sequent 1873e07dc26bSmrg ;; 1874636c353eSmrg *-tpf*) 1875e07dc26bSmrg vendor=ibm 1876e07dc26bSmrg ;; 1877636c353eSmrg *-vxsim* | *-vxworks* | *-windiss*) 1878e07dc26bSmrg vendor=wrs 1879e07dc26bSmrg ;; 1880636c353eSmrg *-aux*) 1881e07dc26bSmrg vendor=apple 1882e07dc26bSmrg ;; 1883636c353eSmrg *-hms*) 1884e07dc26bSmrg vendor=hitachi 1885e07dc26bSmrg ;; 1886636c353eSmrg *-mpw* | *-macos*) 1887e07dc26bSmrg vendor=apple 1888e07dc26bSmrg ;; 1889636c353eSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1890e07dc26bSmrg vendor=atari 1891e07dc26bSmrg ;; 1892636c353eSmrg *-vos*) 1893e07dc26bSmrg vendor=stratus 1894e07dc26bSmrg ;; 1895e07dc26bSmrg esac 1896e07dc26bSmrg ;; 1897e07dc26bSmrgesac 1898e07dc26bSmrg 1899636c353eSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1900e07dc26bSmrgexit 1901e07dc26bSmrg 1902e07dc26bSmrg# Local variables: 1903636c353eSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 1904e07dc26bSmrg# time-stamp-start: "timestamp='" 1905e07dc26bSmrg# time-stamp-format: "%:y-%02m-%02d" 1906e07dc26bSmrg# time-stamp-end: "'" 1907e07dc26bSmrg# End: 1908