1bccedf53Smrg#! /bin/sh 2bccedf53Smrg# Configuration validation subroutine script. 3a2394c98Smrg# Copyright 1992-2024 Free Software Foundation, Inc. 4bccedf53Smrg 5ec318dbfSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6ec318dbfSmrg 7a2394c98Smrgtimestamp='2024-01-01' 8bccedf53Smrg 989afc689Smrg# This file is free software; you can redistribute it and/or modify it 1089afc689Smrg# under the terms of the GNU General Public License as published by 11a2394c98Smrg# the Free Software Foundation, either version 3 of the License, or 12bccedf53Smrg# (at your option) any later version. 13bccedf53Smrg# 1489afc689Smrg# This program is distributed in the hope that it will be useful, but 1589afc689Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1689afc689Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1789afc689Smrg# General Public License for more details. 18bccedf53Smrg# 19bccedf53Smrg# You should have received a copy of the GNU General Public License 2089afc689Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 217c5f6000Smrg# 22bccedf53Smrg# As a special exception to the GNU General Public License, if you 23bccedf53Smrg# distribute this file as part of a program that contains a 24bccedf53Smrg# configuration script generated by Autoconf, you may include it under 2589afc689Smrg# the same distribution terms that you use for the rest of that 2689afc689Smrg# program. This Exception is an additional permission under section 7 2789afc689Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28bccedf53Smrg 297c5f6000Smrg 3089afc689Smrg# Please send patches to <config-patches@gnu.org>. 31bccedf53Smrg# 32bccedf53Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33bccedf53Smrg# Supply the specified configuration type as an argument. 34bccedf53Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35bccedf53Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36bccedf53Smrg 37f7ada8ddSmrg# You can get the latest version of this script from: 38ec318dbfSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39f7ada8ddSmrg 40bccedf53Smrg# This file is supposed to be the same for all GNU packages 41bccedf53Smrg# and recognize all the CPU types, system types and aliases 42bccedf53Smrg# that are meaningful with *any* GNU software. 43bccedf53Smrg# Each package is responsible for reporting which valid configurations 44bccedf53Smrg# it does not support. The user should be able to distinguish 45bccedf53Smrg# a failure to support a valid configuration from a meaningless 46bccedf53Smrg# configuration. 47bccedf53Smrg 48bccedf53Smrg# The goal of this file is to map all the various variations of a given 49bccedf53Smrg# machine specification into a single specification in the form: 50bccedf53Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51bccedf53Smrg# or in some cases, the newer four-part form: 52bccedf53Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53bccedf53Smrg# It is wrong to echo any other type of specification. 54bccedf53Smrg 55ec318dbfSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 56ec318dbfSmrg# about features and limitations of the classic Bourne shell that were 57ec318dbfSmrg# superseded or lifted in POSIX. However, this script identifies a wide 58ec318dbfSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59ec318dbfSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60ec318dbfSmrg# have a pre-POSIX /bin/sh. 61ec318dbfSmrg 62bccedf53Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63bccedf53Smrg 64bccedf53Smrgusage="\ 6589afc689SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66bccedf53Smrg 67bccedf53SmrgCanonicalize a configuration name. 68bccedf53Smrg 6989afc689SmrgOptions: 70bccedf53Smrg -h, --help print this help, then exit 71bccedf53Smrg -t, --time-stamp print date of last modification, then exit 72bccedf53Smrg -v, --version print version number, then exit 73bccedf53Smrg 74bccedf53SmrgReport bugs and patches to <config-patches@gnu.org>." 75bccedf53Smrg 76bccedf53Smrgversion="\ 77bccedf53SmrgGNU config.sub ($timestamp) 78bccedf53Smrg 79a2394c98SmrgCopyright 1992-2024 Free Software Foundation, Inc. 80bccedf53Smrg 81bccedf53SmrgThis is free software; see the source for copying conditions. There is NO 82bccedf53Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83bccedf53Smrg 84bccedf53Smrghelp=" 85a2394c98SmrgTry '$me --help' for more information." 86bccedf53Smrg 87bccedf53Smrg# Parse command line 88bccedf53Smrgwhile test $# -gt 0 ; do 89bccedf53Smrg case $1 in 90bccedf53Smrg --time-stamp | --time* | -t ) 917c5f6000Smrg echo "$timestamp" ; exit ;; 92bccedf53Smrg --version | -v ) 937c5f6000Smrg echo "$version" ; exit ;; 94bccedf53Smrg --help | --h* | -h ) 957c5f6000Smrg echo "$usage"; exit ;; 96bccedf53Smrg -- ) # Stop option processing 97bccedf53Smrg shift; break ;; 98bccedf53Smrg - ) # Use stdin as input. 99bccedf53Smrg break ;; 100bccedf53Smrg -* ) 101ec318dbfSmrg echo "$me: invalid option $1$help" >&2 102bccedf53Smrg exit 1 ;; 103bccedf53Smrg 104bccedf53Smrg *local*) 105bccedf53Smrg # First pass through any local machine types. 10689afc689Smrg echo "$1" 1077c5f6000Smrg exit ;; 108bccedf53Smrg 109bccedf53Smrg * ) 110bccedf53Smrg break ;; 111bccedf53Smrg esac 112bccedf53Smrgdone 113bccedf53Smrg 114bccedf53Smrgcase $# in 115bccedf53Smrg 0) echo "$me: missing argument$help" >&2 116bccedf53Smrg exit 1;; 117bccedf53Smrg 1) ;; 118bccedf53Smrg *) echo "$me: too many arguments$help" >&2 119bccedf53Smrg exit 1;; 120bccedf53Smrgesac 121bccedf53Smrg 122ec318dbfSmrg# Split fields of configuration type 123ec318dbfSmrg# shellcheck disable=SC2162 124ec318dbfSmrgsaved_IFS=$IFS 125ec318dbfSmrgIFS="-" read field1 field2 field3 field4 <<EOF 126ec318dbfSmrg$1 127ec318dbfSmrgEOF 128ec318dbfSmrgIFS=$saved_IFS 129bccedf53Smrg 130ec318dbfSmrg# Separate into logical components for further validation 131ec318dbfSmrgcase $1 in 132ec318dbfSmrg *-*-*-*-*) 133a2394c98Smrg echo "Invalid configuration '$1': more than four components" >&2 134ec318dbfSmrg exit 1 135bccedf53Smrg ;; 136ec318dbfSmrg *-*-*-*) 137ec318dbfSmrg basic_machine=$field1-$field2 138ec318dbfSmrg basic_os=$field3-$field4 139bccedf53Smrg ;; 140ec318dbfSmrg *-*-*) 141ec318dbfSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142ec318dbfSmrg # parts 143ec318dbfSmrg maybe_os=$field2-$field3 144ec318dbfSmrg case $maybe_os in 145ec318dbfSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 146ec318dbfSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147ec318dbfSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148a2394c98Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ 149a2394c98Smrg | windows-* ) 150ec318dbfSmrg basic_machine=$field1 151ec318dbfSmrg basic_os=$maybe_os 152ec318dbfSmrg ;; 153ec318dbfSmrg android-linux) 154ec318dbfSmrg basic_machine=$field1-unknown 155ec318dbfSmrg basic_os=linux-android 156ec318dbfSmrg ;; 157ec318dbfSmrg *) 158ec318dbfSmrg basic_machine=$field1-$field2 159ec318dbfSmrg basic_os=$field3 160ec318dbfSmrg ;; 161ec318dbfSmrg esac 162bccedf53Smrg ;; 163ec318dbfSmrg *-*) 164ec318dbfSmrg # A lone config we happen to match not fitting any pattern 165ec318dbfSmrg case $field1-$field2 in 166ec318dbfSmrg decstation-3100) 167ec318dbfSmrg basic_machine=mips-dec 168ec318dbfSmrg basic_os= 169ec318dbfSmrg ;; 170ec318dbfSmrg *-*) 171ec318dbfSmrg # Second component is usually, but not always the OS 172ec318dbfSmrg case $field2 in 173ec318dbfSmrg # Prevent following clause from handling this valid os 174ec318dbfSmrg sun*os*) 175ec318dbfSmrg basic_machine=$field1 176ec318dbfSmrg basic_os=$field2 177ec318dbfSmrg ;; 178ec318dbfSmrg zephyr*) 179ec318dbfSmrg basic_machine=$field1-unknown 180ec318dbfSmrg basic_os=$field2 181ec318dbfSmrg ;; 182ec318dbfSmrg # Manufacturers 183ec318dbfSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 184ec318dbfSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 185ec318dbfSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 186ec318dbfSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 187ec318dbfSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 188ec318dbfSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 189ec318dbfSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 190ec318dbfSmrg | microblaze* | sim | cisco \ 191ec318dbfSmrg | oki | wec | wrs | winbond) 192ec318dbfSmrg basic_machine=$field1-$field2 193ec318dbfSmrg basic_os= 194ec318dbfSmrg ;; 195ec318dbfSmrg *) 196ec318dbfSmrg basic_machine=$field1 197ec318dbfSmrg basic_os=$field2 198ec318dbfSmrg ;; 199ec318dbfSmrg esac 200ec318dbfSmrg ;; 201ec318dbfSmrg esac 202bccedf53Smrg ;; 203ec318dbfSmrg *) 204ec318dbfSmrg # Convert single-component short-hands not valid as part of 205ec318dbfSmrg # multi-component configurations. 206ec318dbfSmrg case $field1 in 207ec318dbfSmrg 386bsd) 208ec318dbfSmrg basic_machine=i386-pc 209ec318dbfSmrg basic_os=bsd 210ec318dbfSmrg ;; 211ec318dbfSmrg a29khif) 212ec318dbfSmrg basic_machine=a29k-amd 213ec318dbfSmrg basic_os=udi 214ec318dbfSmrg ;; 215ec318dbfSmrg adobe68k) 216ec318dbfSmrg basic_machine=m68010-adobe 217ec318dbfSmrg basic_os=scout 218ec318dbfSmrg ;; 219ec318dbfSmrg alliant) 220ec318dbfSmrg basic_machine=fx80-alliant 221ec318dbfSmrg basic_os= 222ec318dbfSmrg ;; 223ec318dbfSmrg altos | altos3068) 224ec318dbfSmrg basic_machine=m68k-altos 225ec318dbfSmrg basic_os= 226ec318dbfSmrg ;; 227ec318dbfSmrg am29k) 228ec318dbfSmrg basic_machine=a29k-none 229ec318dbfSmrg basic_os=bsd 230ec318dbfSmrg ;; 231ec318dbfSmrg amdahl) 232ec318dbfSmrg basic_machine=580-amdahl 233ec318dbfSmrg basic_os=sysv 234ec318dbfSmrg ;; 235ec318dbfSmrg amiga) 236ec318dbfSmrg basic_machine=m68k-unknown 237ec318dbfSmrg basic_os= 238ec318dbfSmrg ;; 239ec318dbfSmrg amigaos | amigados) 240ec318dbfSmrg basic_machine=m68k-unknown 241ec318dbfSmrg basic_os=amigaos 242ec318dbfSmrg ;; 243ec318dbfSmrg amigaunix | amix) 244ec318dbfSmrg basic_machine=m68k-unknown 245ec318dbfSmrg basic_os=sysv4 246ec318dbfSmrg ;; 247ec318dbfSmrg apollo68) 248ec318dbfSmrg basic_machine=m68k-apollo 249ec318dbfSmrg basic_os=sysv 250ec318dbfSmrg ;; 251ec318dbfSmrg apollo68bsd) 252ec318dbfSmrg basic_machine=m68k-apollo 253ec318dbfSmrg basic_os=bsd 254ec318dbfSmrg ;; 255ec318dbfSmrg aros) 256ec318dbfSmrg basic_machine=i386-pc 257ec318dbfSmrg basic_os=aros 258ec318dbfSmrg ;; 259ec318dbfSmrg aux) 260ec318dbfSmrg basic_machine=m68k-apple 261ec318dbfSmrg basic_os=aux 262ec318dbfSmrg ;; 263ec318dbfSmrg balance) 264ec318dbfSmrg basic_machine=ns32k-sequent 265ec318dbfSmrg basic_os=dynix 266ec318dbfSmrg ;; 267ec318dbfSmrg blackfin) 268ec318dbfSmrg basic_machine=bfin-unknown 269ec318dbfSmrg basic_os=linux 270ec318dbfSmrg ;; 271ec318dbfSmrg cegcc) 272ec318dbfSmrg basic_machine=arm-unknown 273ec318dbfSmrg basic_os=cegcc 274ec318dbfSmrg ;; 275ec318dbfSmrg convex-c1) 276ec318dbfSmrg basic_machine=c1-convex 277ec318dbfSmrg basic_os=bsd 278ec318dbfSmrg ;; 279ec318dbfSmrg convex-c2) 280ec318dbfSmrg basic_machine=c2-convex 281ec318dbfSmrg basic_os=bsd 282ec318dbfSmrg ;; 283ec318dbfSmrg convex-c32) 284ec318dbfSmrg basic_machine=c32-convex 285ec318dbfSmrg basic_os=bsd 286ec318dbfSmrg ;; 287ec318dbfSmrg convex-c34) 288ec318dbfSmrg basic_machine=c34-convex 289ec318dbfSmrg basic_os=bsd 290ec318dbfSmrg ;; 291ec318dbfSmrg convex-c38) 292ec318dbfSmrg basic_machine=c38-convex 293ec318dbfSmrg basic_os=bsd 294ec318dbfSmrg ;; 295ec318dbfSmrg cray) 296ec318dbfSmrg basic_machine=j90-cray 297ec318dbfSmrg basic_os=unicos 298ec318dbfSmrg ;; 299ec318dbfSmrg crds | unos) 300ec318dbfSmrg basic_machine=m68k-crds 301ec318dbfSmrg basic_os= 302ec318dbfSmrg ;; 303ec318dbfSmrg da30) 304ec318dbfSmrg basic_machine=m68k-da30 305ec318dbfSmrg basic_os= 306ec318dbfSmrg ;; 307ec318dbfSmrg decstation | pmax | pmin | dec3100 | decstatn) 308ec318dbfSmrg basic_machine=mips-dec 309ec318dbfSmrg basic_os= 310ec318dbfSmrg ;; 311ec318dbfSmrg delta88) 312ec318dbfSmrg basic_machine=m88k-motorola 313ec318dbfSmrg basic_os=sysv3 314ec318dbfSmrg ;; 315ec318dbfSmrg dicos) 316ec318dbfSmrg basic_machine=i686-pc 317ec318dbfSmrg basic_os=dicos 318ec318dbfSmrg ;; 319ec318dbfSmrg djgpp) 320ec318dbfSmrg basic_machine=i586-pc 321ec318dbfSmrg basic_os=msdosdjgpp 322ec318dbfSmrg ;; 323ec318dbfSmrg ebmon29k) 324ec318dbfSmrg basic_machine=a29k-amd 325ec318dbfSmrg basic_os=ebmon 326ec318dbfSmrg ;; 327ec318dbfSmrg es1800 | OSE68k | ose68k | ose | OSE) 328ec318dbfSmrg basic_machine=m68k-ericsson 329ec318dbfSmrg basic_os=ose 330ec318dbfSmrg ;; 331ec318dbfSmrg gmicro) 332ec318dbfSmrg basic_machine=tron-gmicro 333ec318dbfSmrg basic_os=sysv 334ec318dbfSmrg ;; 335ec318dbfSmrg go32) 336ec318dbfSmrg basic_machine=i386-pc 337ec318dbfSmrg basic_os=go32 338ec318dbfSmrg ;; 339ec318dbfSmrg h8300hms) 340ec318dbfSmrg basic_machine=h8300-hitachi 341ec318dbfSmrg basic_os=hms 342ec318dbfSmrg ;; 343ec318dbfSmrg h8300xray) 344ec318dbfSmrg basic_machine=h8300-hitachi 345ec318dbfSmrg basic_os=xray 346ec318dbfSmrg ;; 347ec318dbfSmrg h8500hms) 348ec318dbfSmrg basic_machine=h8500-hitachi 349ec318dbfSmrg basic_os=hms 350ec318dbfSmrg ;; 351ec318dbfSmrg harris) 352ec318dbfSmrg basic_machine=m88k-harris 353ec318dbfSmrg basic_os=sysv3 354ec318dbfSmrg ;; 355ec318dbfSmrg hp300 | hp300hpux) 356ec318dbfSmrg basic_machine=m68k-hp 357ec318dbfSmrg basic_os=hpux 358ec318dbfSmrg ;; 359ec318dbfSmrg hp300bsd) 360ec318dbfSmrg basic_machine=m68k-hp 361ec318dbfSmrg basic_os=bsd 362ec318dbfSmrg ;; 363ec318dbfSmrg hppaosf) 364ec318dbfSmrg basic_machine=hppa1.1-hp 365ec318dbfSmrg basic_os=osf 366ec318dbfSmrg ;; 367ec318dbfSmrg hppro) 368ec318dbfSmrg basic_machine=hppa1.1-hp 369ec318dbfSmrg basic_os=proelf 370ec318dbfSmrg ;; 371ec318dbfSmrg i386mach) 372ec318dbfSmrg basic_machine=i386-mach 373ec318dbfSmrg basic_os=mach 374ec318dbfSmrg ;; 375ec318dbfSmrg isi68 | isi) 376ec318dbfSmrg basic_machine=m68k-isi 377ec318dbfSmrg basic_os=sysv 378ec318dbfSmrg ;; 379ec318dbfSmrg m68knommu) 380ec318dbfSmrg basic_machine=m68k-unknown 381ec318dbfSmrg basic_os=linux 382ec318dbfSmrg ;; 383ec318dbfSmrg magnum | m3230) 384ec318dbfSmrg basic_machine=mips-mips 385ec318dbfSmrg basic_os=sysv 386ec318dbfSmrg ;; 387ec318dbfSmrg merlin) 388ec318dbfSmrg basic_machine=ns32k-utek 389ec318dbfSmrg basic_os=sysv 390ec318dbfSmrg ;; 391ec318dbfSmrg mingw64) 392ec318dbfSmrg basic_machine=x86_64-pc 393ec318dbfSmrg basic_os=mingw64 394ec318dbfSmrg ;; 395ec318dbfSmrg mingw32) 396ec318dbfSmrg basic_machine=i686-pc 397ec318dbfSmrg basic_os=mingw32 398ec318dbfSmrg ;; 399ec318dbfSmrg mingw32ce) 400ec318dbfSmrg basic_machine=arm-unknown 401ec318dbfSmrg basic_os=mingw32ce 402ec318dbfSmrg ;; 403ec318dbfSmrg monitor) 404ec318dbfSmrg basic_machine=m68k-rom68k 405ec318dbfSmrg basic_os=coff 406ec318dbfSmrg ;; 407ec318dbfSmrg morphos) 408ec318dbfSmrg basic_machine=powerpc-unknown 409ec318dbfSmrg basic_os=morphos 410ec318dbfSmrg ;; 411ec318dbfSmrg moxiebox) 412ec318dbfSmrg basic_machine=moxie-unknown 413ec318dbfSmrg basic_os=moxiebox 414ec318dbfSmrg ;; 415ec318dbfSmrg msdos) 416ec318dbfSmrg basic_machine=i386-pc 417ec318dbfSmrg basic_os=msdos 418ec318dbfSmrg ;; 419ec318dbfSmrg msys) 420ec318dbfSmrg basic_machine=i686-pc 421ec318dbfSmrg basic_os=msys 422ec318dbfSmrg ;; 423ec318dbfSmrg mvs) 424ec318dbfSmrg basic_machine=i370-ibm 425ec318dbfSmrg basic_os=mvs 426ec318dbfSmrg ;; 427ec318dbfSmrg nacl) 428ec318dbfSmrg basic_machine=le32-unknown 429ec318dbfSmrg basic_os=nacl 430ec318dbfSmrg ;; 431ec318dbfSmrg ncr3000) 432ec318dbfSmrg basic_machine=i486-ncr 433ec318dbfSmrg basic_os=sysv4 434ec318dbfSmrg ;; 435ec318dbfSmrg netbsd386) 436ec318dbfSmrg basic_machine=i386-pc 437ec318dbfSmrg basic_os=netbsd 438ec318dbfSmrg ;; 439ec318dbfSmrg netwinder) 440ec318dbfSmrg basic_machine=armv4l-rebel 441ec318dbfSmrg basic_os=linux 442ec318dbfSmrg ;; 443ec318dbfSmrg news | news700 | news800 | news900) 444ec318dbfSmrg basic_machine=m68k-sony 445ec318dbfSmrg basic_os=newsos 446ec318dbfSmrg ;; 447ec318dbfSmrg news1000) 448ec318dbfSmrg basic_machine=m68030-sony 449ec318dbfSmrg basic_os=newsos 450ec318dbfSmrg ;; 451ec318dbfSmrg necv70) 452ec318dbfSmrg basic_machine=v70-nec 453ec318dbfSmrg basic_os=sysv 454ec318dbfSmrg ;; 455ec318dbfSmrg nh3000) 456ec318dbfSmrg basic_machine=m68k-harris 457ec318dbfSmrg basic_os=cxux 458ec318dbfSmrg ;; 459ec318dbfSmrg nh[45]000) 460ec318dbfSmrg basic_machine=m88k-harris 461ec318dbfSmrg basic_os=cxux 462ec318dbfSmrg ;; 463ec318dbfSmrg nindy960) 464ec318dbfSmrg basic_machine=i960-intel 465ec318dbfSmrg basic_os=nindy 466ec318dbfSmrg ;; 467ec318dbfSmrg mon960) 468ec318dbfSmrg basic_machine=i960-intel 469ec318dbfSmrg basic_os=mon960 470ec318dbfSmrg ;; 471ec318dbfSmrg nonstopux) 472ec318dbfSmrg basic_machine=mips-compaq 473ec318dbfSmrg basic_os=nonstopux 474ec318dbfSmrg ;; 475ec318dbfSmrg os400) 476ec318dbfSmrg basic_machine=powerpc-ibm 477ec318dbfSmrg basic_os=os400 478ec318dbfSmrg ;; 479ec318dbfSmrg OSE68000 | ose68000) 480ec318dbfSmrg basic_machine=m68000-ericsson 481ec318dbfSmrg basic_os=ose 482ec318dbfSmrg ;; 483ec318dbfSmrg os68k) 484ec318dbfSmrg basic_machine=m68k-none 485ec318dbfSmrg basic_os=os68k 486ec318dbfSmrg ;; 487ec318dbfSmrg paragon) 488ec318dbfSmrg basic_machine=i860-intel 489ec318dbfSmrg basic_os=osf 490ec318dbfSmrg ;; 491ec318dbfSmrg parisc) 492ec318dbfSmrg basic_machine=hppa-unknown 493ec318dbfSmrg basic_os=linux 494ec318dbfSmrg ;; 495ec318dbfSmrg psp) 496ec318dbfSmrg basic_machine=mipsallegrexel-sony 497ec318dbfSmrg basic_os=psp 498ec318dbfSmrg ;; 499ec318dbfSmrg pw32) 500ec318dbfSmrg basic_machine=i586-unknown 501ec318dbfSmrg basic_os=pw32 502ec318dbfSmrg ;; 503ec318dbfSmrg rdos | rdos64) 504ec318dbfSmrg basic_machine=x86_64-pc 505ec318dbfSmrg basic_os=rdos 506ec318dbfSmrg ;; 507ec318dbfSmrg rdos32) 508ec318dbfSmrg basic_machine=i386-pc 509ec318dbfSmrg basic_os=rdos 510ec318dbfSmrg ;; 511ec318dbfSmrg rom68k) 512ec318dbfSmrg basic_machine=m68k-rom68k 513ec318dbfSmrg basic_os=coff 514ec318dbfSmrg ;; 515ec318dbfSmrg sa29200) 516ec318dbfSmrg basic_machine=a29k-amd 517ec318dbfSmrg basic_os=udi 518ec318dbfSmrg ;; 519ec318dbfSmrg sei) 520ec318dbfSmrg basic_machine=mips-sei 521ec318dbfSmrg basic_os=seiux 522ec318dbfSmrg ;; 523ec318dbfSmrg sequent) 524ec318dbfSmrg basic_machine=i386-sequent 525ec318dbfSmrg basic_os= 526ec318dbfSmrg ;; 527ec318dbfSmrg sps7) 528ec318dbfSmrg basic_machine=m68k-bull 529ec318dbfSmrg basic_os=sysv2 530ec318dbfSmrg ;; 531ec318dbfSmrg st2000) 532ec318dbfSmrg basic_machine=m68k-tandem 533ec318dbfSmrg basic_os= 534ec318dbfSmrg ;; 535ec318dbfSmrg stratus) 536ec318dbfSmrg basic_machine=i860-stratus 537ec318dbfSmrg basic_os=sysv4 538ec318dbfSmrg ;; 539ec318dbfSmrg sun2) 540ec318dbfSmrg basic_machine=m68000-sun 541ec318dbfSmrg basic_os= 542ec318dbfSmrg ;; 543ec318dbfSmrg sun2os3) 544ec318dbfSmrg basic_machine=m68000-sun 545ec318dbfSmrg basic_os=sunos3 546ec318dbfSmrg ;; 547ec318dbfSmrg sun2os4) 548ec318dbfSmrg basic_machine=m68000-sun 549ec318dbfSmrg basic_os=sunos4 550ec318dbfSmrg ;; 551ec318dbfSmrg sun3) 552ec318dbfSmrg basic_machine=m68k-sun 553ec318dbfSmrg basic_os= 554ec318dbfSmrg ;; 555ec318dbfSmrg sun3os3) 556ec318dbfSmrg basic_machine=m68k-sun 557ec318dbfSmrg basic_os=sunos3 558ec318dbfSmrg ;; 559ec318dbfSmrg sun3os4) 560ec318dbfSmrg basic_machine=m68k-sun 561ec318dbfSmrg basic_os=sunos4 562ec318dbfSmrg ;; 563ec318dbfSmrg sun4) 564ec318dbfSmrg basic_machine=sparc-sun 565ec318dbfSmrg basic_os= 566ec318dbfSmrg ;; 567ec318dbfSmrg sun4os3) 568ec318dbfSmrg basic_machine=sparc-sun 569ec318dbfSmrg basic_os=sunos3 570ec318dbfSmrg ;; 571ec318dbfSmrg sun4os4) 572ec318dbfSmrg basic_machine=sparc-sun 573ec318dbfSmrg basic_os=sunos4 574ec318dbfSmrg ;; 575ec318dbfSmrg sun4sol2) 576ec318dbfSmrg basic_machine=sparc-sun 577ec318dbfSmrg basic_os=solaris2 578ec318dbfSmrg ;; 579ec318dbfSmrg sun386 | sun386i | roadrunner) 580ec318dbfSmrg basic_machine=i386-sun 581ec318dbfSmrg basic_os= 582ec318dbfSmrg ;; 583ec318dbfSmrg sv1) 584ec318dbfSmrg basic_machine=sv1-cray 585ec318dbfSmrg basic_os=unicos 586ec318dbfSmrg ;; 587ec318dbfSmrg symmetry) 588ec318dbfSmrg basic_machine=i386-sequent 589ec318dbfSmrg basic_os=dynix 590ec318dbfSmrg ;; 591ec318dbfSmrg t3e) 592ec318dbfSmrg basic_machine=alphaev5-cray 593ec318dbfSmrg basic_os=unicos 594ec318dbfSmrg ;; 595ec318dbfSmrg t90) 596ec318dbfSmrg basic_machine=t90-cray 597ec318dbfSmrg basic_os=unicos 598ec318dbfSmrg ;; 599ec318dbfSmrg toad1) 600ec318dbfSmrg basic_machine=pdp10-xkl 601ec318dbfSmrg basic_os=tops20 602ec318dbfSmrg ;; 603ec318dbfSmrg tpf) 604ec318dbfSmrg basic_machine=s390x-ibm 605ec318dbfSmrg basic_os=tpf 606ec318dbfSmrg ;; 607ec318dbfSmrg udi29k) 608ec318dbfSmrg basic_machine=a29k-amd 609ec318dbfSmrg basic_os=udi 610ec318dbfSmrg ;; 611ec318dbfSmrg ultra3) 612ec318dbfSmrg basic_machine=a29k-nyu 613ec318dbfSmrg basic_os=sym1 614ec318dbfSmrg ;; 615ec318dbfSmrg v810 | necv810) 616ec318dbfSmrg basic_machine=v810-nec 617ec318dbfSmrg basic_os=none 618ec318dbfSmrg ;; 619ec318dbfSmrg vaxv) 620ec318dbfSmrg basic_machine=vax-dec 621ec318dbfSmrg basic_os=sysv 622ec318dbfSmrg ;; 623ec318dbfSmrg vms) 624ec318dbfSmrg basic_machine=vax-dec 625ec318dbfSmrg basic_os=vms 626ec318dbfSmrg ;; 627ec318dbfSmrg vsta) 628ec318dbfSmrg basic_machine=i386-pc 629ec318dbfSmrg basic_os=vsta 630ec318dbfSmrg ;; 631ec318dbfSmrg vxworks960) 632ec318dbfSmrg basic_machine=i960-wrs 633ec318dbfSmrg basic_os=vxworks 634ec318dbfSmrg ;; 635ec318dbfSmrg vxworks68) 636ec318dbfSmrg basic_machine=m68k-wrs 637ec318dbfSmrg basic_os=vxworks 638ec318dbfSmrg ;; 639ec318dbfSmrg vxworks29k) 640ec318dbfSmrg basic_machine=a29k-wrs 641ec318dbfSmrg basic_os=vxworks 642ec318dbfSmrg ;; 643ec318dbfSmrg xbox) 644ec318dbfSmrg basic_machine=i686-pc 645ec318dbfSmrg basic_os=mingw32 646ec318dbfSmrg ;; 647ec318dbfSmrg ymp) 648ec318dbfSmrg basic_machine=ymp-cray 649ec318dbfSmrg basic_os=unicos 650ec318dbfSmrg ;; 651ec318dbfSmrg *) 652ec318dbfSmrg basic_machine=$1 653ec318dbfSmrg basic_os= 654ec318dbfSmrg ;; 655ec318dbfSmrg esac 656bccedf53Smrg ;; 657bccedf53Smrgesac 658bccedf53Smrg 659ec318dbfSmrg# Decode 1-component or ad-hoc basic machines 660bccedf53Smrgcase $basic_machine in 661ec318dbfSmrg # Here we handle the default manufacturer of certain CPU types. It is in 662ec318dbfSmrg # some cases the only manufacturer, in others, it is the most popular. 663ec318dbfSmrg w89k) 664ec318dbfSmrg cpu=hppa1.1 665ec318dbfSmrg vendor=winbond 66689afc689Smrg ;; 667ec318dbfSmrg op50n) 668ec318dbfSmrg cpu=hppa1.1 669ec318dbfSmrg vendor=oki 670bccedf53Smrg ;; 671ec318dbfSmrg op60c) 672ec318dbfSmrg cpu=hppa1.1 673ec318dbfSmrg vendor=oki 674bccedf53Smrg ;; 675ec318dbfSmrg ibm*) 676ec318dbfSmrg cpu=i370 677ec318dbfSmrg vendor=ibm 6787c5f6000Smrg ;; 679ec318dbfSmrg orion105) 680ec318dbfSmrg cpu=clipper 681ec318dbfSmrg vendor=highlevel 68289afc689Smrg ;; 683ec318dbfSmrg mac | mpw | mac-mpw) 684ec318dbfSmrg cpu=m68k 685ec318dbfSmrg vendor=apple 6861b1389eeSmrg ;; 687ec318dbfSmrg pmac | pmac-mpw) 688ec318dbfSmrg cpu=powerpc 689ec318dbfSmrg vendor=apple 6901b1389eeSmrg ;; 6911b1389eeSmrg 692bccedf53Smrg # Recognize the various machine names and aliases which stand 693bccedf53Smrg # for a CPU type and a company and sometimes even an OS. 694bccedf53Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 695ec318dbfSmrg cpu=m68000 696ec318dbfSmrg vendor=att 697bccedf53Smrg ;; 698bccedf53Smrg 3b*) 699ec318dbfSmrg cpu=we32k 700ec318dbfSmrg vendor=att 7017c5f6000Smrg ;; 702f7ada8ddSmrg bluegene*) 703ec318dbfSmrg cpu=powerpc 704ec318dbfSmrg vendor=ibm 705ec318dbfSmrg basic_os=cnk 706bccedf53Smrg ;; 707bccedf53Smrg decsystem10* | dec10*) 708ec318dbfSmrg cpu=pdp10 709ec318dbfSmrg vendor=dec 710ec318dbfSmrg basic_os=tops10 711bccedf53Smrg ;; 712bccedf53Smrg decsystem20* | dec20*) 713ec318dbfSmrg cpu=pdp10 714ec318dbfSmrg vendor=dec 715ec318dbfSmrg basic_os=tops20 716bccedf53Smrg ;; 717bccedf53Smrg delta | 3300 | motorola-3300 | motorola-delta \ 718bccedf53Smrg | 3300-motorola | delta-motorola) 719ec318dbfSmrg cpu=m68k 720ec318dbfSmrg vendor=motorola 721bccedf53Smrg ;; 72289afc689Smrg dpx2*) 723ec318dbfSmrg cpu=m68k 724ec318dbfSmrg vendor=bull 725ec318dbfSmrg basic_os=sysv3 726bccedf53Smrg ;; 727bccedf53Smrg encore | umax | mmax) 728ec318dbfSmrg cpu=ns32k 729ec318dbfSmrg vendor=encore 730bccedf53Smrg ;; 731ec318dbfSmrg elxsi) 732ec318dbfSmrg cpu=elxsi 733ec318dbfSmrg vendor=elxsi 734ec318dbfSmrg basic_os=${basic_os:-bsd} 735bccedf53Smrg ;; 736bccedf53Smrg fx2800) 737ec318dbfSmrg cpu=i860 738ec318dbfSmrg vendor=alliant 739bccedf53Smrg ;; 740bccedf53Smrg genix) 741ec318dbfSmrg cpu=ns32k 742ec318dbfSmrg vendor=ns 743bccedf53Smrg ;; 744bccedf53Smrg h3050r* | hiux*) 745ec318dbfSmrg cpu=hppa1.1 746ec318dbfSmrg vendor=hitachi 747ec318dbfSmrg basic_os=hiuxwe2 748bccedf53Smrg ;; 749bccedf53Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 750ec318dbfSmrg cpu=hppa1.0 751ec318dbfSmrg vendor=hp 752bccedf53Smrg ;; 753bccedf53Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 754ec318dbfSmrg cpu=m68000 755ec318dbfSmrg vendor=hp 756bccedf53Smrg ;; 757bccedf53Smrg hp9k3[2-9][0-9]) 758ec318dbfSmrg cpu=m68k 759ec318dbfSmrg vendor=hp 760bccedf53Smrg ;; 761bccedf53Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 762ec318dbfSmrg cpu=hppa1.0 763ec318dbfSmrg vendor=hp 764bccedf53Smrg ;; 765bccedf53Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 766ec318dbfSmrg cpu=hppa1.1 767ec318dbfSmrg vendor=hp 768bccedf53Smrg ;; 769bccedf53Smrg hp9k78[0-9] | hp78[0-9]) 770bccedf53Smrg # FIXME: really hppa2.0-hp 771ec318dbfSmrg cpu=hppa1.1 772ec318dbfSmrg vendor=hp 773bccedf53Smrg ;; 774bccedf53Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 775bccedf53Smrg # FIXME: really hppa2.0-hp 776ec318dbfSmrg cpu=hppa1.1 777ec318dbfSmrg vendor=hp 778bccedf53Smrg ;; 779bccedf53Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 780ec318dbfSmrg cpu=hppa1.1 781ec318dbfSmrg vendor=hp 782bccedf53Smrg ;; 783bccedf53Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 784ec318dbfSmrg cpu=hppa1.0 785ec318dbfSmrg vendor=hp 786bccedf53Smrg ;; 787bccedf53Smrg i*86v32) 788ec318dbfSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 789ec318dbfSmrg vendor=pc 790ec318dbfSmrg basic_os=sysv32 791bccedf53Smrg ;; 792bccedf53Smrg i*86v4*) 793ec318dbfSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 794ec318dbfSmrg vendor=pc 795ec318dbfSmrg basic_os=sysv4 796bccedf53Smrg ;; 797bccedf53Smrg i*86v) 798ec318dbfSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 799ec318dbfSmrg vendor=pc 800ec318dbfSmrg basic_os=sysv 801bccedf53Smrg ;; 802bccedf53Smrg i*86sol2) 803ec318dbfSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 804ec318dbfSmrg vendor=pc 805ec318dbfSmrg basic_os=solaris2 806bccedf53Smrg ;; 807ec318dbfSmrg j90 | j90-cray) 808ec318dbfSmrg cpu=j90 809ec318dbfSmrg vendor=cray 810ec318dbfSmrg basic_os=${basic_os:-unicos} 811bccedf53Smrg ;; 812bccedf53Smrg iris | iris4d) 813ec318dbfSmrg cpu=mips 814ec318dbfSmrg vendor=sgi 815ec318dbfSmrg case $basic_os in 816ec318dbfSmrg irix*) 817bccedf53Smrg ;; 818bccedf53Smrg *) 819ec318dbfSmrg basic_os=irix4 820bccedf53Smrg ;; 821bccedf53Smrg esac 822bccedf53Smrg ;; 823bccedf53Smrg miniframe) 824ec318dbfSmrg cpu=m68000 825ec318dbfSmrg vendor=convergent 826bccedf53Smrg ;; 827ec318dbfSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 828ec318dbfSmrg cpu=m68k 829ec318dbfSmrg vendor=atari 830ec318dbfSmrg basic_os=mint 831bccedf53Smrg ;; 832bccedf53Smrg news-3600 | risc-news) 833ec318dbfSmrg cpu=mips 834ec318dbfSmrg vendor=sony 835ec318dbfSmrg basic_os=newsos 836bccedf53Smrg ;; 83789afc689Smrg next | m*-next) 838ec318dbfSmrg cpu=m68k 839ec318dbfSmrg vendor=next 840ec318dbfSmrg case $basic_os in 841ec318dbfSmrg openstep*) 842ec318dbfSmrg ;; 843ec318dbfSmrg nextstep*) 844bccedf53Smrg ;; 845ec318dbfSmrg ns2*) 846ec318dbfSmrg basic_os=nextstep2 847bccedf53Smrg ;; 848bccedf53Smrg *) 849ec318dbfSmrg basic_os=nextstep3 850bccedf53Smrg ;; 851bccedf53Smrg esac 852bccedf53Smrg ;; 853bccedf53Smrg np1) 854ec318dbfSmrg cpu=np1 855ec318dbfSmrg vendor=gould 85689afc689Smrg ;; 857bccedf53Smrg op50n-* | op60c-*) 858ec318dbfSmrg cpu=hppa1.1 859ec318dbfSmrg vendor=oki 860ec318dbfSmrg basic_os=proelf 861bccedf53Smrg ;; 862bccedf53Smrg pa-hitachi) 863ec318dbfSmrg cpu=hppa1.1 864ec318dbfSmrg vendor=hitachi 865ec318dbfSmrg basic_os=hiuxwe2 8667c5f6000Smrg ;; 867bccedf53Smrg pbd) 868ec318dbfSmrg cpu=sparc 869ec318dbfSmrg vendor=tti 870bccedf53Smrg ;; 871bccedf53Smrg pbb) 872ec318dbfSmrg cpu=m68k 873ec318dbfSmrg vendor=tti 874bccedf53Smrg ;; 875ec318dbfSmrg pc532) 876ec318dbfSmrg cpu=ns32k 877ec318dbfSmrg vendor=pc532 878bccedf53Smrg ;; 879bccedf53Smrg pn) 880ec318dbfSmrg cpu=pn 881ec318dbfSmrg vendor=gould 882bccedf53Smrg ;; 883ec318dbfSmrg power) 884ec318dbfSmrg cpu=power 885ec318dbfSmrg vendor=ibm 886bccedf53Smrg ;; 887ec318dbfSmrg ps2) 888ec318dbfSmrg cpu=i386 889ec318dbfSmrg vendor=ibm 890bccedf53Smrg ;; 891ec318dbfSmrg rm[46]00) 892ec318dbfSmrg cpu=mips 893ec318dbfSmrg vendor=siemens 894bccedf53Smrg ;; 895ec318dbfSmrg rtpc | rtpc-*) 896ec318dbfSmrg cpu=romp 897ec318dbfSmrg vendor=ibm 898bccedf53Smrg ;; 899ec318dbfSmrg sde) 900ec318dbfSmrg cpu=mipsisa32 901ec318dbfSmrg vendor=sde 902ec318dbfSmrg basic_os=${basic_os:-elf} 903bccedf53Smrg ;; 904ec318dbfSmrg simso-wrs) 905ec318dbfSmrg cpu=sparclite 906ec318dbfSmrg vendor=wrs 907ec318dbfSmrg basic_os=vxworks 908bccedf53Smrg ;; 909ec318dbfSmrg tower | tower-32) 910ec318dbfSmrg cpu=m68k 911ec318dbfSmrg vendor=ncr 912bccedf53Smrg ;; 913ec318dbfSmrg vpp*|vx|vx-*) 914ec318dbfSmrg cpu=f301 915ec318dbfSmrg vendor=fujitsu 91689afc689Smrg ;; 917ec318dbfSmrg w65) 918ec318dbfSmrg cpu=w65 919ec318dbfSmrg vendor=wdc 9207c5f6000Smrg ;; 921ec318dbfSmrg w89k-*) 922ec318dbfSmrg cpu=hppa1.1 923ec318dbfSmrg vendor=winbond 924ec318dbfSmrg basic_os=proelf 925bccedf53Smrg ;; 926ec318dbfSmrg none) 927ec318dbfSmrg cpu=none 928ec318dbfSmrg vendor=none 929bccedf53Smrg ;; 930ec318dbfSmrg leon|leon[3-9]) 931ec318dbfSmrg cpu=sparc 932ec318dbfSmrg vendor=$basic_machine 933bccedf53Smrg ;; 934ec318dbfSmrg leon-*|leon[3-9]-*) 935ec318dbfSmrg cpu=sparc 936ec318dbfSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9377c5f6000Smrg ;; 938ec318dbfSmrg 939ec318dbfSmrg *-*) 940ec318dbfSmrg # shellcheck disable=SC2162 941ec318dbfSmrg saved_IFS=$IFS 942ec318dbfSmrg IFS="-" read cpu vendor <<EOF 943ec318dbfSmrg$basic_machine 944ec318dbfSmrgEOF 945ec318dbfSmrg IFS=$saved_IFS 9467c5f6000Smrg ;; 947a2394c98Smrg # We use 'pc' rather than 'unknown' 948ec318dbfSmrg # because (1) that's what they normally are, and 949ec318dbfSmrg # (2) the word "unknown" tends to confuse beginning users. 950ec318dbfSmrg i*86 | x86_64) 951ec318dbfSmrg cpu=$basic_machine 952ec318dbfSmrg vendor=pc 953bccedf53Smrg ;; 954ec318dbfSmrg # These rules are duplicated from below for sake of the special case above; 955ec318dbfSmrg # i.e. things that normalized to x86 arches should also default to "pc" 956ec318dbfSmrg pc98) 957ec318dbfSmrg cpu=i386 958ec318dbfSmrg vendor=pc 959bccedf53Smrg ;; 960ec318dbfSmrg x64 | amd64) 961ec318dbfSmrg cpu=x86_64 962ec318dbfSmrg vendor=pc 963bccedf53Smrg ;; 964ec318dbfSmrg # Recognize the basic CPU types without company name. 965ec318dbfSmrg *) 966ec318dbfSmrg cpu=$basic_machine 967ec318dbfSmrg vendor=unknown 9687c5f6000Smrg ;; 969ec318dbfSmrgesac 970ec318dbfSmrg 971ec318dbfSmrgunset -v basic_machine 972ec318dbfSmrg 973ec318dbfSmrg# Decode basic machines in the full and proper CPU-Company form. 974ec318dbfSmrgcase $cpu-$vendor in 975ec318dbfSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 976ec318dbfSmrg # some cases the only manufacturer, in others, it is the most popular. 977ec318dbfSmrg craynv-unknown) 978ec318dbfSmrg vendor=cray 979ec318dbfSmrg basic_os=${basic_os:-unicosmp} 980bccedf53Smrg ;; 981ec318dbfSmrg c90-unknown | c90-cray) 982ec318dbfSmrg vendor=cray 983ec318dbfSmrg basic_os=${Basic_os:-unicos} 984bccedf53Smrg ;; 985ec318dbfSmrg fx80-unknown) 986ec318dbfSmrg vendor=alliant 9877c5f6000Smrg ;; 988ec318dbfSmrg romp-unknown) 989ec318dbfSmrg vendor=ibm 990bccedf53Smrg ;; 991ec318dbfSmrg mmix-unknown) 992ec318dbfSmrg vendor=knuth 993bccedf53Smrg ;; 994ec318dbfSmrg microblaze-unknown | microblazeel-unknown) 995ec318dbfSmrg vendor=xilinx 996bccedf53Smrg ;; 997ec318dbfSmrg rs6000-unknown) 998ec318dbfSmrg vendor=ibm 999bccedf53Smrg ;; 1000ec318dbfSmrg vax-unknown) 1001ec318dbfSmrg vendor=dec 1002bccedf53Smrg ;; 1003ec318dbfSmrg pdp11-unknown) 1004ec318dbfSmrg vendor=dec 10051b1389eeSmrg ;; 1006ec318dbfSmrg we32k-unknown) 1007ec318dbfSmrg vendor=att 1008bccedf53Smrg ;; 1009ec318dbfSmrg cydra-unknown) 1010ec318dbfSmrg vendor=cydrome 1011bccedf53Smrg ;; 1012ec318dbfSmrg i370-ibm*) 1013ec318dbfSmrg vendor=ibm 1014bccedf53Smrg ;; 1015ec318dbfSmrg orion-unknown) 1016ec318dbfSmrg vendor=highlevel 1017bccedf53Smrg ;; 1018ec318dbfSmrg xps-unknown | xps100-unknown) 1019ec318dbfSmrg cpu=xps100 1020ec318dbfSmrg vendor=honeywell 1021bccedf53Smrg ;; 1022ec318dbfSmrg 1023ec318dbfSmrg # Here we normalize CPU types with a missing or matching vendor 1024a2394c98Smrg armh-unknown | armh-alt) 1025a2394c98Smrg cpu=armv7l 1026a2394c98Smrg vendor=alt 1027a2394c98Smrg basic_os=${basic_os:-linux-gnueabihf} 1028a2394c98Smrg ;; 1029ec318dbfSmrg dpx20-unknown | dpx20-bull) 1030ec318dbfSmrg cpu=rs6000 1031ec318dbfSmrg vendor=bull 1032ec318dbfSmrg basic_os=${basic_os:-bosx} 1033bccedf53Smrg ;; 1034ec318dbfSmrg 1035ec318dbfSmrg # Here we normalize CPU types irrespective of the vendor 1036ec318dbfSmrg amd64-*) 1037ec318dbfSmrg cpu=x86_64 1038bccedf53Smrg ;; 1039ec318dbfSmrg blackfin-*) 1040ec318dbfSmrg cpu=bfin 1041ec318dbfSmrg basic_os=linux 1042bccedf53Smrg ;; 1043ec318dbfSmrg c54x-*) 1044ec318dbfSmrg cpu=tic54x 1045bccedf53Smrg ;; 1046ec318dbfSmrg c55x-*) 1047ec318dbfSmrg cpu=tic55x 1048bccedf53Smrg ;; 1049ec318dbfSmrg c6x-*) 1050ec318dbfSmrg cpu=tic6x 1051bccedf53Smrg ;; 1052ec318dbfSmrg e500v[12]-*) 1053ec318dbfSmrg cpu=powerpc 1054ec318dbfSmrg basic_os=${basic_os}"spe" 1055bccedf53Smrg ;; 1056ec318dbfSmrg mips3*-*) 1057ec318dbfSmrg cpu=mips64 1058bccedf53Smrg ;; 1059ec318dbfSmrg ms1-*) 1060ec318dbfSmrg cpu=mt 1061bccedf53Smrg ;; 1062ec318dbfSmrg m68knommu-*) 1063ec318dbfSmrg cpu=m68k 1064ec318dbfSmrg basic_os=linux 1065bccedf53Smrg ;; 1066ec318dbfSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1067ec318dbfSmrg cpu=s12z 10687c5f6000Smrg ;; 1069ec318dbfSmrg openrisc-*) 1070ec318dbfSmrg cpu=or32 1071bccedf53Smrg ;; 1072ec318dbfSmrg parisc-*) 1073ec318dbfSmrg cpu=hppa 1074ec318dbfSmrg basic_os=linux 1075bccedf53Smrg ;; 1076ec318dbfSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1077ec318dbfSmrg cpu=i586 1078bccedf53Smrg ;; 1079a2394c98Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1080ec318dbfSmrg cpu=i686 1081bccedf53Smrg ;; 1082ec318dbfSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1083ec318dbfSmrg cpu=i686 10847c5f6000Smrg ;; 1085ec318dbfSmrg pentium4-*) 1086ec318dbfSmrg cpu=i786 1087bccedf53Smrg ;; 1088ec318dbfSmrg pc98-*) 1089ec318dbfSmrg cpu=i386 1090bccedf53Smrg ;; 1091ec318dbfSmrg ppc-* | ppcbe-*) 1092ec318dbfSmrg cpu=powerpc 1093bccedf53Smrg ;; 1094ec318dbfSmrg ppcle-* | powerpclittle-*) 1095ec318dbfSmrg cpu=powerpcle 1096bccedf53Smrg ;; 1097ec318dbfSmrg ppc64-*) 1098ec318dbfSmrg cpu=powerpc64 1099bccedf53Smrg ;; 1100ec318dbfSmrg ppc64le-* | powerpc64little-*) 1101ec318dbfSmrg cpu=powerpc64le 1102bccedf53Smrg ;; 1103ec318dbfSmrg sb1-*) 1104ec318dbfSmrg cpu=mipsisa64sb1 1105bccedf53Smrg ;; 1106ec318dbfSmrg sb1el-*) 1107ec318dbfSmrg cpu=mipsisa64sb1el 1108bccedf53Smrg ;; 1109ec318dbfSmrg sh5e[lb]-*) 1110ec318dbfSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1111bccedf53Smrg ;; 1112ec318dbfSmrg spur-*) 1113ec318dbfSmrg cpu=spur 1114bccedf53Smrg ;; 1115ec318dbfSmrg strongarm-* | thumb-*) 1116ec318dbfSmrg cpu=arm 1117bccedf53Smrg ;; 1118ec318dbfSmrg tx39-*) 1119ec318dbfSmrg cpu=mipstx39 112089afc689Smrg ;; 1121ec318dbfSmrg tx39el-*) 1122ec318dbfSmrg cpu=mipstx39el 11237c5f6000Smrg ;; 1124ec318dbfSmrg x64-*) 1125ec318dbfSmrg cpu=x86_64 1126bccedf53Smrg ;; 11271b1389eeSmrg xscale-* | xscalee[bl]-*) 1128ec318dbfSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1129bccedf53Smrg ;; 1130a2394c98Smrg arm64-* | aarch64le-*) 1131ec318dbfSmrg cpu=aarch64 1132bccedf53Smrg ;; 1133bccedf53Smrg 1134ec318dbfSmrg # Recognize the canonical CPU Types that limit and/or modify the 1135ec318dbfSmrg # company names they are paired with. 1136ec318dbfSmrg cr16-*) 1137ec318dbfSmrg basic_os=${basic_os:-elf} 11387c5f6000Smrg ;; 1139ec318dbfSmrg crisv32-* | etraxfs*-*) 1140ec318dbfSmrg cpu=crisv32 1141ec318dbfSmrg vendor=axis 1142bccedf53Smrg ;; 1143ec318dbfSmrg cris-* | etrax*-*) 1144ec318dbfSmrg cpu=cris 1145ec318dbfSmrg vendor=axis 1146bccedf53Smrg ;; 1147ec318dbfSmrg crx-*) 1148ec318dbfSmrg basic_os=${basic_os:-elf} 1149bccedf53Smrg ;; 1150ec318dbfSmrg neo-tandem) 1151ec318dbfSmrg cpu=neo 1152ec318dbfSmrg vendor=tandem 1153bccedf53Smrg ;; 1154ec318dbfSmrg nse-tandem) 1155ec318dbfSmrg cpu=nse 1156ec318dbfSmrg vendor=tandem 1157bccedf53Smrg ;; 1158ec318dbfSmrg nsr-tandem) 1159ec318dbfSmrg cpu=nsr 1160ec318dbfSmrg vendor=tandem 1161bccedf53Smrg ;; 1162ec318dbfSmrg nsv-tandem) 1163ec318dbfSmrg cpu=nsv 1164ec318dbfSmrg vendor=tandem 1165bccedf53Smrg ;; 1166ec318dbfSmrg nsx-tandem) 1167ec318dbfSmrg cpu=nsx 1168ec318dbfSmrg vendor=tandem 1169bccedf53Smrg ;; 1170ec318dbfSmrg mipsallegrexel-sony) 1171ec318dbfSmrg cpu=mipsallegrexel 1172ec318dbfSmrg vendor=sony 1173bccedf53Smrg ;; 1174ec318dbfSmrg tile*-*) 1175ec318dbfSmrg basic_os=${basic_os:-linux-gnu} 1176bccedf53Smrg ;; 1177ec318dbfSmrg 1178bccedf53Smrg *) 1179ec318dbfSmrg # Recognize the canonical CPU types that are allowed with any 1180ec318dbfSmrg # company name. 1181ec318dbfSmrg case $cpu in 1182ec318dbfSmrg 1750a | 580 \ 1183ec318dbfSmrg | a29k \ 1184a2394c98Smrg | aarch64 | aarch64_be | aarch64c | arm64ec \ 1185ec318dbfSmrg | abacus \ 1186ec318dbfSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1187ec318dbfSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1188ec318dbfSmrg | alphapca5[67] | alpha64pca5[67] \ 1189ec318dbfSmrg | am33_2.0 \ 1190ec318dbfSmrg | amdgcn \ 1191ec318dbfSmrg | arc | arceb | arc32 | arc64 \ 1192ec318dbfSmrg | arm | arm[lb]e | arme[lb] | armv* \ 1193ec318dbfSmrg | avr | avr32 \ 1194ec318dbfSmrg | asmjs \ 1195ec318dbfSmrg | ba \ 1196ec318dbfSmrg | be32 | be64 \ 1197ec318dbfSmrg | bfin | bpf | bs2000 \ 1198ec318dbfSmrg | c[123]* | c30 | [cjt]90 | c4x \ 1199ec318dbfSmrg | c8051 | clipper | craynv | csky | cydra \ 1200ec318dbfSmrg | d10v | d30v | dlx | dsp16xx \ 1201ec318dbfSmrg | e2k | elxsi | epiphany \ 1202ec318dbfSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1203a2394c98Smrg | javascript \ 1204ec318dbfSmrg | h8300 | h8500 \ 1205ec318dbfSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1206ec318dbfSmrg | hexagon \ 1207ec318dbfSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1208ec318dbfSmrg | ip2k | iq2000 \ 1209ec318dbfSmrg | k1om \ 1210a2394c98Smrg | kvx \ 1211ec318dbfSmrg | le32 | le64 \ 1212ec318dbfSmrg | lm32 \ 1213a2394c98Smrg | loongarch32 | loongarch64 \ 1214ec318dbfSmrg | m32c | m32r | m32rle \ 1215ec318dbfSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1216ec318dbfSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1217ec318dbfSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1218ec318dbfSmrg | microblaze | microblazeel \ 1219a2394c98Smrg | mips* \ 1220ec318dbfSmrg | mmix \ 1221ec318dbfSmrg | mn10200 | mn10300 \ 1222ec318dbfSmrg | moxie \ 1223ec318dbfSmrg | mt \ 1224ec318dbfSmrg | msp430 \ 1225a2394c98Smrg | nanomips* \ 1226ec318dbfSmrg | nds32 | nds32le | nds32be \ 1227ec318dbfSmrg | nfp \ 1228ec318dbfSmrg | nios | nios2 | nios2eb | nios2el \ 1229ec318dbfSmrg | none | np1 | ns16k | ns32k | nvptx \ 1230ec318dbfSmrg | open8 \ 1231ec318dbfSmrg | or1k* \ 1232ec318dbfSmrg | or32 \ 1233ec318dbfSmrg | orion \ 1234ec318dbfSmrg | picochip \ 1235ec318dbfSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1236ec318dbfSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1237ec318dbfSmrg | pru \ 1238ec318dbfSmrg | pyramid \ 1239ec318dbfSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1240ec318dbfSmrg | rl78 | romp | rs6000 | rx \ 1241ec318dbfSmrg | s390 | s390x \ 1242ec318dbfSmrg | score \ 1243ec318dbfSmrg | sh | shl \ 1244ec318dbfSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1245ec318dbfSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1246ec318dbfSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1247ec318dbfSmrg | sparclite \ 1248ec318dbfSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1249ec318dbfSmrg | spu \ 1250ec318dbfSmrg | tahoe \ 1251ec318dbfSmrg | thumbv7* \ 1252ec318dbfSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1253ec318dbfSmrg | tron \ 1254ec318dbfSmrg | ubicom32 \ 1255ec318dbfSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1256ec318dbfSmrg | vax \ 1257a2394c98Smrg | vc4 \ 1258ec318dbfSmrg | visium \ 1259ec318dbfSmrg | w65 \ 1260ec318dbfSmrg | wasm32 | wasm64 \ 1261ec318dbfSmrg | we32k \ 1262ec318dbfSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1263ec318dbfSmrg | xstormy16 | xtensa* \ 1264ec318dbfSmrg | ymp \ 1265ec318dbfSmrg | z8k | z80) 1266ec318dbfSmrg ;; 1267ec318dbfSmrg 1268ec318dbfSmrg *) 1269a2394c98Smrg echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 1270ec318dbfSmrg exit 1 1271ec318dbfSmrg ;; 1272ec318dbfSmrg esac 1273bccedf53Smrg ;; 1274bccedf53Smrgesac 1275bccedf53Smrg 1276bccedf53Smrg# Here we canonicalize certain aliases for manufacturers. 1277ec318dbfSmrgcase $vendor in 1278ec318dbfSmrg digital*) 1279ec318dbfSmrg vendor=dec 1280bccedf53Smrg ;; 1281ec318dbfSmrg commodore*) 1282ec318dbfSmrg vendor=cbm 1283bccedf53Smrg ;; 1284bccedf53Smrg *) 1285bccedf53Smrg ;; 1286bccedf53Smrgesac 1287bccedf53Smrg 1288bccedf53Smrg# Decode manufacturer-specific aliases for certain operating systems. 1289bccedf53Smrg 1290a2394c98Smrgif test x"$basic_os" != x 1291bccedf53Smrgthen 1292ec318dbfSmrg 1293a2394c98Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1294ec318dbfSmrg# set os. 1295a2394c98Smrgobj= 1296ec318dbfSmrgcase $basic_os in 1297ec318dbfSmrg gnu/linux*) 1298ec318dbfSmrg kernel=linux 1299ec318dbfSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1300ec318dbfSmrg ;; 1301ec318dbfSmrg os2-emx) 1302ec318dbfSmrg kernel=os2 1303ec318dbfSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1304ec318dbfSmrg ;; 1305ec318dbfSmrg nto-qnx*) 1306ec318dbfSmrg kernel=nto 1307ec318dbfSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1308ec318dbfSmrg ;; 1309ec318dbfSmrg *-*) 1310ec318dbfSmrg # shellcheck disable=SC2162 1311ec318dbfSmrg saved_IFS=$IFS 1312ec318dbfSmrg IFS="-" read kernel os <<EOF 1313ec318dbfSmrg$basic_os 1314ec318dbfSmrgEOF 1315ec318dbfSmrg IFS=$saved_IFS 1316ec318dbfSmrg ;; 1317ec318dbfSmrg # Default OS when just kernel was specified 1318ec318dbfSmrg nto*) 1319ec318dbfSmrg kernel=nto 1320ec318dbfSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1321ec318dbfSmrg ;; 1322ec318dbfSmrg linux*) 1323ec318dbfSmrg kernel=linux 1324ec318dbfSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1325ec318dbfSmrg ;; 1326a2394c98Smrg managarm*) 1327a2394c98Smrg kernel=managarm 1328a2394c98Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1329a2394c98Smrg ;; 1330ec318dbfSmrg *) 1331ec318dbfSmrg kernel= 1332ec318dbfSmrg os=$basic_os 1333ec318dbfSmrg ;; 1334ec318dbfSmrgesac 1335ec318dbfSmrg 1336ec318dbfSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1337ec318dbfSmrg# etc.) 1338bccedf53Smrgcase $os in 133989afc689Smrg # First match some system type aliases that might get confused 134089afc689Smrg # with valid system types. 1341ec318dbfSmrg # solaris* is a basic system type, with this one exception. 1342ec318dbfSmrg auroraux) 1343ec318dbfSmrg os=auroraux 1344f7ada8ddSmrg ;; 1345ec318dbfSmrg bluegene*) 1346ec318dbfSmrg os=cnk 1347bccedf53Smrg ;; 1348ec318dbfSmrg solaris1 | solaris1.*) 1349ec318dbfSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1350bccedf53Smrg ;; 1351ec318dbfSmrg solaris) 1352ec318dbfSmrg os=solaris2 1353bccedf53Smrg ;; 1354ec318dbfSmrg unixware*) 1355ec318dbfSmrg os=sysv4.2uw 1356bccedf53Smrg ;; 135789afc689Smrg # es1800 is here to avoid being matched by es* (a different OS) 1358ec318dbfSmrg es1800*) 1359ec318dbfSmrg os=ose 136089afc689Smrg ;; 1361ec318dbfSmrg # Some version numbers need modification 1362ec318dbfSmrg chorusos*) 1363ec318dbfSmrg os=chorusos 1364bccedf53Smrg ;; 1365ec318dbfSmrg isc) 1366ec318dbfSmrg os=isc2.2 1367bccedf53Smrg ;; 1368ec318dbfSmrg sco6) 1369ec318dbfSmrg os=sco5v6 1370bccedf53Smrg ;; 1371ec318dbfSmrg sco5) 1372ec318dbfSmrg os=sco3.2v5 1373bccedf53Smrg ;; 1374ec318dbfSmrg sco4) 1375ec318dbfSmrg os=sco3.2v4 1376bccedf53Smrg ;; 1377ec318dbfSmrg sco3.2.[4-9]*) 1378ec318dbfSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13797c5f6000Smrg ;; 1380ec318dbfSmrg sco*v* | scout) 1381ec318dbfSmrg # Don't match below 1382bccedf53Smrg ;; 1383ec318dbfSmrg sco*) 1384ec318dbfSmrg os=sco3.2v2 1385bccedf53Smrg ;; 1386ec318dbfSmrg psos*) 1387ec318dbfSmrg os=psos 1388bccedf53Smrg ;; 1389ec318dbfSmrg qnx*) 1390ec318dbfSmrg os=qnx 1391bccedf53Smrg ;; 1392ec318dbfSmrg hiux*) 1393ec318dbfSmrg os=hiuxwe2 13947c5f6000Smrg ;; 1395ec318dbfSmrg lynx*178) 1396ec318dbfSmrg os=lynxos178 1397bccedf53Smrg ;; 1398ec318dbfSmrg lynx*5) 1399ec318dbfSmrg os=lynxos5 1400bccedf53Smrg ;; 1401ec318dbfSmrg lynxos*) 1402ec318dbfSmrg # don't get caught up in next wildcard 1403bccedf53Smrg ;; 1404ec318dbfSmrg lynx*) 1405ec318dbfSmrg os=lynxos 1406bccedf53Smrg ;; 1407ec318dbfSmrg mac[0-9]*) 1408ec318dbfSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 1409bccedf53Smrg ;; 1410ec318dbfSmrg opened*) 1411ec318dbfSmrg os=openedition 14127c5f6000Smrg ;; 1413ec318dbfSmrg os400*) 1414ec318dbfSmrg os=os400 1415bccedf53Smrg ;; 1416ec318dbfSmrg sunos5*) 1417ec318dbfSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1418bccedf53Smrg ;; 1419ec318dbfSmrg sunos6*) 1420ec318dbfSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1421bccedf53Smrg ;; 1422ec318dbfSmrg wince*) 1423ec318dbfSmrg os=wince 1424bccedf53Smrg ;; 1425ec318dbfSmrg utek*) 1426ec318dbfSmrg os=bsd 1427bccedf53Smrg ;; 1428ec318dbfSmrg dynix*) 1429ec318dbfSmrg os=bsd 1430bccedf53Smrg ;; 1431ec318dbfSmrg acis*) 1432ec318dbfSmrg os=aos 1433bccedf53Smrg ;; 1434ec318dbfSmrg atheos*) 1435ec318dbfSmrg os=atheos 14367c5f6000Smrg ;; 1437ec318dbfSmrg syllable*) 1438ec318dbfSmrg os=syllable 1439ec318dbfSmrg ;; 1440ec318dbfSmrg 386bsd) 1441ec318dbfSmrg os=bsd 1442ec318dbfSmrg ;; 1443ec318dbfSmrg ctix* | uts*) 1444ec318dbfSmrg os=sysv 1445ec318dbfSmrg ;; 1446ec318dbfSmrg nova*) 1447ec318dbfSmrg os=rtmk-nova 1448ec318dbfSmrg ;; 1449ec318dbfSmrg ns2) 1450ec318dbfSmrg os=nextstep2 1451ec318dbfSmrg ;; 1452ec318dbfSmrg # Preserve the version number of sinix5. 1453ec318dbfSmrg sinix5.*) 1454ec318dbfSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1455bccedf53Smrg ;; 1456ec318dbfSmrg sinix*) 1457ec318dbfSmrg os=sysv4 1458bccedf53Smrg ;; 1459ec318dbfSmrg tpf*) 1460ec318dbfSmrg os=tpf 1461bccedf53Smrg ;; 1462ec318dbfSmrg triton*) 1463ec318dbfSmrg os=sysv3 1464bccedf53Smrg ;; 1465ec318dbfSmrg oss*) 1466ec318dbfSmrg os=sysv3 1467bccedf53Smrg ;; 1468ec318dbfSmrg svr4*) 1469ec318dbfSmrg os=sysv4 1470bccedf53Smrg ;; 1471ec318dbfSmrg svr3) 1472ec318dbfSmrg os=sysv3 1473bccedf53Smrg ;; 1474ec318dbfSmrg sysvr4) 1475ec318dbfSmrg os=sysv4 1476bccedf53Smrg ;; 1477ec318dbfSmrg ose*) 1478ec318dbfSmrg os=ose 14797c5f6000Smrg ;; 1480ec318dbfSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1481ec318dbfSmrg os=mint 14827c5f6000Smrg ;; 1483ec318dbfSmrg dicos*) 1484ec318dbfSmrg os=dicos 1485ec318dbfSmrg ;; 1486ec318dbfSmrg pikeos*) 148789afc689Smrg # Until real need of OS specific support for 148889afc689Smrg # particular features comes up, bare metal 148989afc689Smrg # configurations are quite functional. 1490ec318dbfSmrg case $cpu in 149189afc689Smrg arm*) 1492ec318dbfSmrg os=eabi 149389afc689Smrg ;; 149489afc689Smrg *) 1495a2394c98Smrg os= 1496a2394c98Smrg obj=elf 149789afc689Smrg ;; 149889afc689Smrg esac 149989afc689Smrg ;; 1500a2394c98Smrg aout* | coff* | elf* | pe*) 1501a2394c98Smrg # These are machine code file formats, not OSes 1502a2394c98Smrg obj=$os 1503a2394c98Smrg os= 1504a2394c98Smrg ;; 1505bccedf53Smrg *) 1506ec318dbfSmrg # No normalization, but not necessarily accepted, that comes below. 1507bccedf53Smrg ;; 1508bccedf53Smrgesac 1509ec318dbfSmrg 1510bccedf53Smrgelse 1511bccedf53Smrg 1512bccedf53Smrg# Here we handle the default operating systems that come with various machines. 1513bccedf53Smrg# The value should be what the vendor currently ships out the door with their 1514bccedf53Smrg# machine or put another way, the most popular os provided with the machine. 1515bccedf53Smrg 1516bccedf53Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1517bccedf53Smrg# "-sun"), then you have to tell the case statement up towards the top 1518bccedf53Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1519bccedf53Smrg# will signal an error saying that MANUFACTURER isn't an operating 1520bccedf53Smrg# system, and we'll never get to this point. 1521bccedf53Smrg 1522ec318dbfSmrgkernel= 1523a2394c98Smrgobj= 1524ec318dbfSmrgcase $cpu-$vendor in 15251b1389eeSmrg score-*) 1526a2394c98Smrg os= 1527a2394c98Smrg obj=elf 15287c5f6000Smrg ;; 15291b1389eeSmrg spu-*) 1530a2394c98Smrg os= 1531a2394c98Smrg obj=elf 15327c5f6000Smrg ;; 1533bccedf53Smrg *-acorn) 1534ec318dbfSmrg os=riscix1.2 1535bccedf53Smrg ;; 1536bccedf53Smrg arm*-rebel) 1537ec318dbfSmrg kernel=linux 1538ec318dbfSmrg os=gnu 1539bccedf53Smrg ;; 1540bccedf53Smrg arm*-semi) 1541a2394c98Smrg os= 1542a2394c98Smrg obj=aout 1543bccedf53Smrg ;; 15441b1389eeSmrg c4x-* | tic4x-*) 1545a2394c98Smrg os= 1546a2394c98Smrg obj=coff 1547bccedf53Smrg ;; 154889afc689Smrg c8051-*) 1549a2394c98Smrg os= 1550a2394c98Smrg obj=elf 1551ec318dbfSmrg ;; 1552ec318dbfSmrg clipper-intergraph) 1553ec318dbfSmrg os=clix 155489afc689Smrg ;; 155589afc689Smrg hexagon-*) 1556a2394c98Smrg os= 1557a2394c98Smrg obj=elf 155889afc689Smrg ;; 1559f7ada8ddSmrg tic54x-*) 1560a2394c98Smrg os= 1561a2394c98Smrg obj=coff 1562f7ada8ddSmrg ;; 1563f7ada8ddSmrg tic55x-*) 1564a2394c98Smrg os= 1565a2394c98Smrg obj=coff 1566f7ada8ddSmrg ;; 1567f7ada8ddSmrg tic6x-*) 1568a2394c98Smrg os= 1569a2394c98Smrg obj=coff 1570f7ada8ddSmrg ;; 1571bccedf53Smrg # This must come before the *-dec entry. 1572bccedf53Smrg pdp10-*) 1573ec318dbfSmrg os=tops20 1574bccedf53Smrg ;; 1575bccedf53Smrg pdp11-*) 1576ec318dbfSmrg os=none 1577bccedf53Smrg ;; 1578bccedf53Smrg *-dec | vax-*) 1579ec318dbfSmrg os=ultrix4.2 1580bccedf53Smrg ;; 1581bccedf53Smrg m68*-apollo) 1582ec318dbfSmrg os=domain 1583bccedf53Smrg ;; 1584bccedf53Smrg i386-sun) 1585ec318dbfSmrg os=sunos4.0.2 1586bccedf53Smrg ;; 1587bccedf53Smrg m68000-sun) 1588ec318dbfSmrg os=sunos3 1589bccedf53Smrg ;; 1590bccedf53Smrg m68*-cisco) 1591a2394c98Smrg os= 1592a2394c98Smrg obj=aout 1593bccedf53Smrg ;; 15941b1389eeSmrg mep-*) 1595a2394c98Smrg os= 1596a2394c98Smrg obj=elf 15977c5f6000Smrg ;; 1598bccedf53Smrg mips*-cisco) 1599a2394c98Smrg os= 1600a2394c98Smrg obj=elf 1601bccedf53Smrg ;; 1602a2394c98Smrg mips*-*|nanomips*-*) 1603a2394c98Smrg os= 1604a2394c98Smrg obj=elf 1605bccedf53Smrg ;; 1606bccedf53Smrg or32-*) 1607a2394c98Smrg os= 1608a2394c98Smrg obj=coff 1609bccedf53Smrg ;; 1610bccedf53Smrg *-tti) # must be before sparc entry or we get the wrong os. 1611ec318dbfSmrg os=sysv3 1612bccedf53Smrg ;; 1613bccedf53Smrg sparc-* | *-sun) 1614ec318dbfSmrg os=sunos4.1.1 1615bccedf53Smrg ;; 161689afc689Smrg pru-*) 1617a2394c98Smrg os= 1618a2394c98Smrg obj=elf 161989afc689Smrg ;; 1620bccedf53Smrg *-be) 1621ec318dbfSmrg os=beos 1622bccedf53Smrg ;; 1623bccedf53Smrg *-ibm) 1624ec318dbfSmrg os=aix 1625bccedf53Smrg ;; 16261b1389eeSmrg *-knuth) 1627ec318dbfSmrg os=mmixware 16287c5f6000Smrg ;; 1629bccedf53Smrg *-wec) 1630ec318dbfSmrg os=proelf 1631bccedf53Smrg ;; 1632bccedf53Smrg *-winbond) 1633ec318dbfSmrg os=proelf 1634bccedf53Smrg ;; 1635bccedf53Smrg *-oki) 1636ec318dbfSmrg os=proelf 1637bccedf53Smrg ;; 1638bccedf53Smrg *-hp) 1639ec318dbfSmrg os=hpux 1640bccedf53Smrg ;; 1641bccedf53Smrg *-hitachi) 1642ec318dbfSmrg os=hiux 1643bccedf53Smrg ;; 1644bccedf53Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1645ec318dbfSmrg os=sysv 1646bccedf53Smrg ;; 1647bccedf53Smrg *-cbm) 1648ec318dbfSmrg os=amigaos 1649bccedf53Smrg ;; 1650bccedf53Smrg *-dg) 1651ec318dbfSmrg os=dgux 1652bccedf53Smrg ;; 1653bccedf53Smrg *-dolphin) 1654ec318dbfSmrg os=sysv3 1655bccedf53Smrg ;; 1656bccedf53Smrg m68k-ccur) 1657ec318dbfSmrg os=rtu 1658bccedf53Smrg ;; 1659bccedf53Smrg m88k-omron*) 1660ec318dbfSmrg os=luna 1661bccedf53Smrg ;; 166289afc689Smrg *-next) 1663ec318dbfSmrg os=nextstep 1664bccedf53Smrg ;; 1665bccedf53Smrg *-sequent) 1666ec318dbfSmrg os=ptx 1667bccedf53Smrg ;; 1668bccedf53Smrg *-crds) 1669ec318dbfSmrg os=unos 1670bccedf53Smrg ;; 1671bccedf53Smrg *-ns) 1672ec318dbfSmrg os=genix 1673bccedf53Smrg ;; 1674bccedf53Smrg i370-*) 1675ec318dbfSmrg os=mvs 1676bccedf53Smrg ;; 1677bccedf53Smrg *-gould) 1678ec318dbfSmrg os=sysv 1679bccedf53Smrg ;; 1680bccedf53Smrg *-highlevel) 1681ec318dbfSmrg os=bsd 1682bccedf53Smrg ;; 1683bccedf53Smrg *-encore) 1684ec318dbfSmrg os=bsd 1685bccedf53Smrg ;; 1686bccedf53Smrg *-sgi) 1687ec318dbfSmrg os=irix 1688bccedf53Smrg ;; 1689bccedf53Smrg *-siemens) 1690ec318dbfSmrg os=sysv4 1691bccedf53Smrg ;; 1692bccedf53Smrg *-masscomp) 1693ec318dbfSmrg os=rtu 1694bccedf53Smrg ;; 1695bccedf53Smrg f30[01]-fujitsu | f700-fujitsu) 1696ec318dbfSmrg os=uxpv 1697bccedf53Smrg ;; 1698bccedf53Smrg *-rom68k) 1699a2394c98Smrg os= 1700a2394c98Smrg obj=coff 1701bccedf53Smrg ;; 1702bccedf53Smrg *-*bug) 1703a2394c98Smrg os= 1704a2394c98Smrg obj=coff 1705bccedf53Smrg ;; 1706bccedf53Smrg *-apple) 1707ec318dbfSmrg os=macos 1708bccedf53Smrg ;; 1709bccedf53Smrg *-atari*) 1710ec318dbfSmrg os=mint 1711ec318dbfSmrg ;; 1712ec318dbfSmrg *-wrs) 1713ec318dbfSmrg os=vxworks 1714bccedf53Smrg ;; 1715bccedf53Smrg *) 1716ec318dbfSmrg os=none 1717bccedf53Smrg ;; 1718bccedf53Smrgesac 1719ec318dbfSmrg 1720bccedf53Smrgfi 1721bccedf53Smrg 1722a2394c98Smrg# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ). 1723a2394c98Smrg 1724ec318dbfSmrgcase $os in 1725ec318dbfSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1726a2394c98Smrg llvm* | musl* | newlib* | relibc* | uclibc*) 1727ec318dbfSmrg ;; 1728ec318dbfSmrg # Likewise for "kernel-abi" 1729ec318dbfSmrg eabi* | gnueabi*) 1730ec318dbfSmrg ;; 1731ec318dbfSmrg # VxWorks passes extra cpu info in the 4th filed. 1732ec318dbfSmrg simlinux | simwindows | spe) 1733ec318dbfSmrg ;; 1734a2394c98Smrg # See `case $cpu-$os` validation below 1735a2394c98Smrg ghcjs) 1736a2394c98Smrg ;; 1737ec318dbfSmrg # Now accept the basic system types. 1738ec318dbfSmrg # The portable systems comes first. 1739ec318dbfSmrg # Each alternative MUST end in a * to match a version number. 1740ec318dbfSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1741ec318dbfSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1742ec318dbfSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1743ec318dbfSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1744ec318dbfSmrg | hiux* | abug | nacl* | netware* | windows* \ 1745a2394c98Smrg | os9* | macos* | osx* | ios* | tvos* | watchos* \ 1746ec318dbfSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1747ec318dbfSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1748ec318dbfSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1749ec318dbfSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1750ec318dbfSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1751ec318dbfSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1752ec318dbfSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1753ec318dbfSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1754a2394c98Smrg | bosx* | nextstep* | cxux* | oabi* \ 1755a2394c98Smrg | ptx* | ecoff* | winnt* | domain* | vsta* \ 1756ec318dbfSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1757ec318dbfSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1758a2394c98Smrg | cygwin* | msys* | moss* | proelf* | rtems* \ 1759ec318dbfSmrg | midipix* | mingw32* | mingw64* | mint* \ 1760ec318dbfSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1761ec318dbfSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1762ec318dbfSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1763ec318dbfSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1764ec318dbfSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1765ec318dbfSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1766ec318dbfSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1767ec318dbfSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1768ec318dbfSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1769ec318dbfSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1770a2394c98Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1771a2394c98Smrg | fiwix* | mlibc* | cos* | mbr* | ironclad* ) 1772ec318dbfSmrg ;; 1773ec318dbfSmrg # This one is extra strict with allowed versions 1774ec318dbfSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1775ec318dbfSmrg # Don't forget version if it is 3.2v4 or newer. 1776ec318dbfSmrg ;; 1777a2394c98Smrg # This refers to builds using the UEFI calling convention 1778a2394c98Smrg # (which depends on the architecture) and PE file format. 1779a2394c98Smrg # Note that this is both a different calling convention and 1780a2394c98Smrg # different file format than that of GNU-EFI 1781a2394c98Smrg # (x86_64-w64-mingw32). 1782a2394c98Smrg uefi) 1783a2394c98Smrg ;; 1784ec318dbfSmrg none) 1785ec318dbfSmrg ;; 1786a2394c98Smrg kernel* | msvc* ) 1787a2394c98Smrg # Restricted further below 1788a2394c98Smrg ;; 1789a2394c98Smrg '') 1790a2394c98Smrg if test x"$obj" = x 1791a2394c98Smrg then 1792a2394c98Smrg echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2 1793a2394c98Smrg fi 1794a2394c98Smrg ;; 1795ec318dbfSmrg *) 1796a2394c98Smrg echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 1797a2394c98Smrg exit 1 1798a2394c98Smrg ;; 1799a2394c98Smrgesac 1800a2394c98Smrg 1801a2394c98Smrgcase $obj in 1802a2394c98Smrg aout* | coff* | elf* | pe*) 1803a2394c98Smrg ;; 1804a2394c98Smrg '') 1805a2394c98Smrg # empty is fine 1806a2394c98Smrg ;; 1807a2394c98Smrg *) 1808a2394c98Smrg echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 1809a2394c98Smrg exit 1 1810a2394c98Smrg ;; 1811a2394c98Smrgesac 1812a2394c98Smrg 1813a2394c98Smrg# Here we handle the constraint that a (synthetic) cpu and os are 1814a2394c98Smrg# valid only in combination with each other and nowhere else. 1815a2394c98Smrgcase $cpu-$os in 1816a2394c98Smrg # The "javascript-unknown-ghcjs" triple is used by GHC; we 1817a2394c98Smrg # accept it here in order to tolerate that, but reject any 1818a2394c98Smrg # variations. 1819a2394c98Smrg javascript-ghcjs) 1820a2394c98Smrg ;; 1821a2394c98Smrg javascript-* | *-ghcjs) 1822a2394c98Smrg echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 1823ec318dbfSmrg exit 1 1824ec318dbfSmrg ;; 1825ec318dbfSmrgesac 1826ec318dbfSmrg 1827ec318dbfSmrg# As a final step for OS-related things, validate the OS-kernel combination 1828ec318dbfSmrg# (given a valid OS), if there is a kernel. 1829a2394c98Smrgcase $kernel-$os-$obj in 1830a2394c98Smrg linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ 1831a2394c98Smrg | linux-mlibc*- | linux-musl*- | linux-newlib*- \ 1832a2394c98Smrg | linux-relibc*- | linux-uclibc*- ) 1833a2394c98Smrg ;; 1834a2394c98Smrg uclinux-uclibc*- ) 1835a2394c98Smrg ;; 1836a2394c98Smrg managarm-mlibc*- | managarm-kernel*- ) 1837ec318dbfSmrg ;; 1838a2394c98Smrg windows*-msvc*-) 1839ec318dbfSmrg ;; 1840a2394c98Smrg -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ 1841a2394c98Smrg | -uclibc*- ) 1842ec318dbfSmrg # These are just libc implementations, not actual OSes, and thus 1843ec318dbfSmrg # require a kernel. 1844a2394c98Smrg echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 1845ec318dbfSmrg exit 1 1846ec318dbfSmrg ;; 1847a2394c98Smrg -kernel*- ) 1848a2394c98Smrg echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 1849a2394c98Smrg exit 1 1850ec318dbfSmrg ;; 1851a2394c98Smrg *-kernel*- ) 1852a2394c98Smrg echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 1853a2394c98Smrg exit 1 1854ec318dbfSmrg ;; 1855a2394c98Smrg *-msvc*- ) 1856a2394c98Smrg echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 1857a2394c98Smrg exit 1 1858ec318dbfSmrg ;; 1859a2394c98Smrg kfreebsd*-gnu*- | kopensolaris*-gnu*-) 1860a2394c98Smrg ;; 1861a2394c98Smrg vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) 1862a2394c98Smrg ;; 1863a2394c98Smrg nto-qnx*-) 1864a2394c98Smrg ;; 1865a2394c98Smrg os2-emx-) 1866ec318dbfSmrg ;; 1867a2394c98Smrg *-eabi*- | *-gnueabi*-) 1868ec318dbfSmrg ;; 1869a2394c98Smrg none--*) 1870a2394c98Smrg # None (no kernel, i.e. freestanding / bare metal), 1871a2394c98Smrg # can be paired with an machine code file format 1872a2394c98Smrg ;; 1873a2394c98Smrg -*-) 1874ec318dbfSmrg # Blank kernel with real OS is always fine. 1875ec318dbfSmrg ;; 1876a2394c98Smrg --*) 1877a2394c98Smrg # Blank kernel and OS with real machine code file format is always fine. 1878a2394c98Smrg ;; 1879a2394c98Smrg *-*-*) 1880a2394c98Smrg echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 1881ec318dbfSmrg exit 1 1882ec318dbfSmrg ;; 1883ec318dbfSmrgesac 1884ec318dbfSmrg 1885bccedf53Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1886bccedf53Smrg# manufacturer. We pick the logical manufacturer. 1887ec318dbfSmrgcase $vendor in 1888ec318dbfSmrg unknown) 1889ec318dbfSmrg case $cpu-$os in 1890ec318dbfSmrg *-riscix*) 1891bccedf53Smrg vendor=acorn 1892bccedf53Smrg ;; 1893ec318dbfSmrg *-sunos*) 1894bccedf53Smrg vendor=sun 1895bccedf53Smrg ;; 1896ec318dbfSmrg *-cnk* | *-aix*) 1897bccedf53Smrg vendor=ibm 1898bccedf53Smrg ;; 1899ec318dbfSmrg *-beos*) 1900bccedf53Smrg vendor=be 1901bccedf53Smrg ;; 1902ec318dbfSmrg *-hpux*) 1903bccedf53Smrg vendor=hp 1904bccedf53Smrg ;; 1905ec318dbfSmrg *-mpeix*) 1906bccedf53Smrg vendor=hp 1907bccedf53Smrg ;; 1908ec318dbfSmrg *-hiux*) 1909bccedf53Smrg vendor=hitachi 1910bccedf53Smrg ;; 1911ec318dbfSmrg *-unos*) 1912bccedf53Smrg vendor=crds 1913bccedf53Smrg ;; 1914ec318dbfSmrg *-dgux*) 1915bccedf53Smrg vendor=dg 1916bccedf53Smrg ;; 1917ec318dbfSmrg *-luna*) 1918bccedf53Smrg vendor=omron 1919bccedf53Smrg ;; 1920ec318dbfSmrg *-genix*) 1921bccedf53Smrg vendor=ns 1922bccedf53Smrg ;; 1923ec318dbfSmrg *-clix*) 1924ec318dbfSmrg vendor=intergraph 1925ec318dbfSmrg ;; 1926ec318dbfSmrg *-mvs* | *-opened*) 1927ec318dbfSmrg vendor=ibm 1928ec318dbfSmrg ;; 1929ec318dbfSmrg *-os400*) 1930bccedf53Smrg vendor=ibm 1931bccedf53Smrg ;; 1932ec318dbfSmrg s390-* | s390x-*) 19337c5f6000Smrg vendor=ibm 19347c5f6000Smrg ;; 1935ec318dbfSmrg *-ptx*) 1936bccedf53Smrg vendor=sequent 1937bccedf53Smrg ;; 1938ec318dbfSmrg *-tpf*) 19397c5f6000Smrg vendor=ibm 19407c5f6000Smrg ;; 1941ec318dbfSmrg *-vxsim* | *-vxworks* | *-windiss*) 1942bccedf53Smrg vendor=wrs 1943bccedf53Smrg ;; 1944ec318dbfSmrg *-aux*) 1945bccedf53Smrg vendor=apple 1946bccedf53Smrg ;; 1947ec318dbfSmrg *-hms*) 1948bccedf53Smrg vendor=hitachi 1949bccedf53Smrg ;; 1950ec318dbfSmrg *-mpw* | *-macos*) 1951bccedf53Smrg vendor=apple 1952bccedf53Smrg ;; 1953ec318dbfSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1954bccedf53Smrg vendor=atari 1955bccedf53Smrg ;; 1956ec318dbfSmrg *-vos*) 1957bccedf53Smrg vendor=stratus 1958bccedf53Smrg ;; 1959bccedf53Smrg esac 1960bccedf53Smrg ;; 1961bccedf53Smrgesac 1962bccedf53Smrg 1963a2394c98Smrgecho "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" 19647c5f6000Smrgexit 1965bccedf53Smrg 1966bccedf53Smrg# Local variables: 1967ec318dbfSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 1968bccedf53Smrg# time-stamp-start: "timestamp='" 1969bccedf53Smrg# time-stamp-format: "%:y-%02m-%02d" 1970bccedf53Smrg# time-stamp-end: "'" 1971bccedf53Smrg# End: 1972