167f05d30Smrg#! /bin/sh 267f05d30Smrg# Configuration validation subroutine script. 3051ceee6Smrg# Copyright 1992-2021 Free Software Foundation, Inc. 467f05d30Smrg 5051ceee6Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6051ceee6Smrg 7051ceee6Smrgtimestamp='2021-08-14' 867f05d30Smrg 9e90eff46Smrg# This file is free software; you can redistribute it and/or modify it 10e90eff46Smrg# under the terms of the GNU General Public License as published by 11e90eff46Smrg# the Free Software Foundation; either version 3 of the License, or 1267f05d30Smrg# (at your option) any later version. 1367f05d30Smrg# 14e90eff46Smrg# This program is distributed in the hope that it will be useful, but 15e90eff46Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16e90eff46Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17e90eff46Smrg# General Public License for more details. 1867f05d30Smrg# 1967f05d30Smrg# You should have received a copy of the GNU General Public License 20e90eff46Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21fffe5102Smrg# 2267f05d30Smrg# As a special exception to the GNU General Public License, if you 2367f05d30Smrg# distribute this file as part of a program that contains a 2467f05d30Smrg# configuration script generated by Autoconf, you may include it under 25e90eff46Smrg# the same distribution terms that you use for the rest of that 26e90eff46Smrg# program. This Exception is an additional permission under section 7 27e90eff46Smrg# of the GNU General Public License, version 3 ("GPLv3"). 2867f05d30Smrg 29fffe5102Smrg 30e90eff46Smrg# Please send patches to <config-patches@gnu.org>. 3167f05d30Smrg# 3267f05d30Smrg# Configuration subroutine to validate and canonicalize a configuration type. 3367f05d30Smrg# Supply the specified configuration type as an argument. 3467f05d30Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 3567f05d30Smrg# Otherwise, we print the canonical config type on stdout and succeed. 3667f05d30Smrg 37fffe5102Smrg# You can get the latest version of this script from: 38051ceee6Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39fffe5102Smrg 4067f05d30Smrg# This file is supposed to be the same for all GNU packages 4167f05d30Smrg# and recognize all the CPU types, system types and aliases 4267f05d30Smrg# that are meaningful with *any* GNU software. 4367f05d30Smrg# Each package is responsible for reporting which valid configurations 4467f05d30Smrg# it does not support. The user should be able to distinguish 4567f05d30Smrg# a failure to support a valid configuration from a meaningless 4667f05d30Smrg# configuration. 4767f05d30Smrg 4867f05d30Smrg# The goal of this file is to map all the various variations of a given 4967f05d30Smrg# machine specification into a single specification in the form: 5067f05d30Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5167f05d30Smrg# or in some cases, the newer four-part form: 5267f05d30Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5367f05d30Smrg# It is wrong to echo any other type of specification. 5467f05d30Smrg 55051ceee6Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 56051ceee6Smrg# about features and limitations of the classic Bourne shell that were 57051ceee6Smrg# superseded or lifted in POSIX. However, this script identifies a wide 58051ceee6Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59051ceee6Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60051ceee6Smrg# have a pre-POSIX /bin/sh. 61051ceee6Smrg 6267f05d30Smrgme=`echo "$0" | sed -e 's,.*/,,'` 6367f05d30Smrg 6467f05d30Smrgusage="\ 65e90eff46SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6667f05d30Smrg 6767f05d30SmrgCanonicalize a configuration name. 6867f05d30Smrg 69e90eff46SmrgOptions: 7067f05d30Smrg -h, --help print this help, then exit 7167f05d30Smrg -t, --time-stamp print date of last modification, then exit 7267f05d30Smrg -v, --version print version number, then exit 7367f05d30Smrg 7467f05d30SmrgReport bugs and patches to <config-patches@gnu.org>." 7567f05d30Smrg 7667f05d30Smrgversion="\ 7767f05d30SmrgGNU config.sub ($timestamp) 7867f05d30Smrg 79051ceee6SmrgCopyright 1992-2021 Free Software Foundation, Inc. 8067f05d30Smrg 8167f05d30SmrgThis is free software; see the source for copying conditions. There is NO 8267f05d30Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8367f05d30Smrg 8467f05d30Smrghelp=" 8567f05d30SmrgTry \`$me --help' for more information." 8667f05d30Smrg 8767f05d30Smrg# Parse command line 8867f05d30Smrgwhile test $# -gt 0 ; do 8967f05d30Smrg case $1 in 9067f05d30Smrg --time-stamp | --time* | -t ) 91fffe5102Smrg echo "$timestamp" ; exit ;; 9267f05d30Smrg --version | -v ) 93fffe5102Smrg echo "$version" ; exit ;; 9467f05d30Smrg --help | --h* | -h ) 95fffe5102Smrg echo "$usage"; exit ;; 9667f05d30Smrg -- ) # Stop option processing 9767f05d30Smrg shift; break ;; 9867f05d30Smrg - ) # Use stdin as input. 9967f05d30Smrg break ;; 10067f05d30Smrg -* ) 101051ceee6Smrg echo "$me: invalid option $1$help" >&2 10267f05d30Smrg exit 1 ;; 10367f05d30Smrg 10467f05d30Smrg *local*) 10567f05d30Smrg # First pass through any local machine types. 106e90eff46Smrg echo "$1" 107fffe5102Smrg exit ;; 10867f05d30Smrg 10967f05d30Smrg * ) 11067f05d30Smrg break ;; 11167f05d30Smrg esac 11267f05d30Smrgdone 11367f05d30Smrg 11467f05d30Smrgcase $# in 11567f05d30Smrg 0) echo "$me: missing argument$help" >&2 11667f05d30Smrg exit 1;; 11767f05d30Smrg 1) ;; 11867f05d30Smrg *) echo "$me: too many arguments$help" >&2 11967f05d30Smrg exit 1;; 12067f05d30Smrgesac 12167f05d30Smrg 122051ceee6Smrg# Split fields of configuration type 123051ceee6Smrg# shellcheck disable=SC2162 124051ceee6Smrgsaved_IFS=$IFS 125051ceee6SmrgIFS="-" read field1 field2 field3 field4 <<EOF 126051ceee6Smrg$1 127051ceee6SmrgEOF 128051ceee6SmrgIFS=$saved_IFS 12967f05d30Smrg 130051ceee6Smrg# Separate into logical components for further validation 131051ceee6Smrgcase $1 in 132051ceee6Smrg *-*-*-*-*) 133051ceee6Smrg echo Invalid configuration \`"$1"\': more than four components >&2 134051ceee6Smrg exit 1 13567f05d30Smrg ;; 136051ceee6Smrg *-*-*-*) 137051ceee6Smrg basic_machine=$field1-$field2 138051ceee6Smrg basic_os=$field3-$field4 13967f05d30Smrg ;; 140051ceee6Smrg *-*-*) 141051ceee6Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142051ceee6Smrg # parts 143051ceee6Smrg maybe_os=$field2-$field3 144051ceee6Smrg case $maybe_os in 145051ceee6Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 146051ceee6Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147051ceee6Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148051ceee6Smrg | storm-chaos* | os2-emx* | rtmk-nova*) 149051ceee6Smrg basic_machine=$field1 150051ceee6Smrg basic_os=$maybe_os 151051ceee6Smrg ;; 152051ceee6Smrg android-linux) 153051ceee6Smrg basic_machine=$field1-unknown 154051ceee6Smrg basic_os=linux-android 155051ceee6Smrg ;; 156051ceee6Smrg *) 157051ceee6Smrg basic_machine=$field1-$field2 158051ceee6Smrg basic_os=$field3 159051ceee6Smrg ;; 160051ceee6Smrg esac 16167f05d30Smrg ;; 162051ceee6Smrg *-*) 163051ceee6Smrg # A lone config we happen to match not fitting any pattern 164051ceee6Smrg case $field1-$field2 in 165051ceee6Smrg decstation-3100) 166051ceee6Smrg basic_machine=mips-dec 167051ceee6Smrg basic_os= 168051ceee6Smrg ;; 169051ceee6Smrg *-*) 170051ceee6Smrg # Second component is usually, but not always the OS 171051ceee6Smrg case $field2 in 172051ceee6Smrg # Prevent following clause from handling this valid os 173051ceee6Smrg sun*os*) 174051ceee6Smrg basic_machine=$field1 175051ceee6Smrg basic_os=$field2 176051ceee6Smrg ;; 177051ceee6Smrg zephyr*) 178051ceee6Smrg basic_machine=$field1-unknown 179051ceee6Smrg basic_os=$field2 180051ceee6Smrg ;; 181051ceee6Smrg # Manufacturers 182051ceee6Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183051ceee6Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184051ceee6Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185051ceee6Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186051ceee6Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187051ceee6Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188051ceee6Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189051ceee6Smrg | microblaze* | sim | cisco \ 190051ceee6Smrg | oki | wec | wrs | winbond) 191051ceee6Smrg basic_machine=$field1-$field2 192051ceee6Smrg basic_os= 193051ceee6Smrg ;; 194051ceee6Smrg *) 195051ceee6Smrg basic_machine=$field1 196051ceee6Smrg basic_os=$field2 197051ceee6Smrg ;; 198051ceee6Smrg esac 199051ceee6Smrg ;; 200051ceee6Smrg esac 20167f05d30Smrg ;; 202051ceee6Smrg *) 203051ceee6Smrg # Convert single-component short-hands not valid as part of 204051ceee6Smrg # multi-component configurations. 205051ceee6Smrg case $field1 in 206051ceee6Smrg 386bsd) 207051ceee6Smrg basic_machine=i386-pc 208051ceee6Smrg basic_os=bsd 209051ceee6Smrg ;; 210051ceee6Smrg a29khif) 211051ceee6Smrg basic_machine=a29k-amd 212051ceee6Smrg basic_os=udi 213051ceee6Smrg ;; 214051ceee6Smrg adobe68k) 215051ceee6Smrg basic_machine=m68010-adobe 216051ceee6Smrg basic_os=scout 217051ceee6Smrg ;; 218051ceee6Smrg alliant) 219051ceee6Smrg basic_machine=fx80-alliant 220051ceee6Smrg basic_os= 221051ceee6Smrg ;; 222051ceee6Smrg altos | altos3068) 223051ceee6Smrg basic_machine=m68k-altos 224051ceee6Smrg basic_os= 225051ceee6Smrg ;; 226051ceee6Smrg am29k) 227051ceee6Smrg basic_machine=a29k-none 228051ceee6Smrg basic_os=bsd 229051ceee6Smrg ;; 230051ceee6Smrg amdahl) 231051ceee6Smrg basic_machine=580-amdahl 232051ceee6Smrg basic_os=sysv 233051ceee6Smrg ;; 234051ceee6Smrg amiga) 235051ceee6Smrg basic_machine=m68k-unknown 236051ceee6Smrg basic_os= 237051ceee6Smrg ;; 238051ceee6Smrg amigaos | amigados) 239051ceee6Smrg basic_machine=m68k-unknown 240051ceee6Smrg basic_os=amigaos 241051ceee6Smrg ;; 242051ceee6Smrg amigaunix | amix) 243051ceee6Smrg basic_machine=m68k-unknown 244051ceee6Smrg basic_os=sysv4 245051ceee6Smrg ;; 246051ceee6Smrg apollo68) 247051ceee6Smrg basic_machine=m68k-apollo 248051ceee6Smrg basic_os=sysv 249051ceee6Smrg ;; 250051ceee6Smrg apollo68bsd) 251051ceee6Smrg basic_machine=m68k-apollo 252051ceee6Smrg basic_os=bsd 253051ceee6Smrg ;; 254051ceee6Smrg aros) 255051ceee6Smrg basic_machine=i386-pc 256051ceee6Smrg basic_os=aros 257051ceee6Smrg ;; 258051ceee6Smrg aux) 259051ceee6Smrg basic_machine=m68k-apple 260051ceee6Smrg basic_os=aux 261051ceee6Smrg ;; 262051ceee6Smrg balance) 263051ceee6Smrg basic_machine=ns32k-sequent 264051ceee6Smrg basic_os=dynix 265051ceee6Smrg ;; 266051ceee6Smrg blackfin) 267051ceee6Smrg basic_machine=bfin-unknown 268051ceee6Smrg basic_os=linux 269051ceee6Smrg ;; 270051ceee6Smrg cegcc) 271051ceee6Smrg basic_machine=arm-unknown 272051ceee6Smrg basic_os=cegcc 273051ceee6Smrg ;; 274051ceee6Smrg convex-c1) 275051ceee6Smrg basic_machine=c1-convex 276051ceee6Smrg basic_os=bsd 277051ceee6Smrg ;; 278051ceee6Smrg convex-c2) 279051ceee6Smrg basic_machine=c2-convex 280051ceee6Smrg basic_os=bsd 281051ceee6Smrg ;; 282051ceee6Smrg convex-c32) 283051ceee6Smrg basic_machine=c32-convex 284051ceee6Smrg basic_os=bsd 285051ceee6Smrg ;; 286051ceee6Smrg convex-c34) 287051ceee6Smrg basic_machine=c34-convex 288051ceee6Smrg basic_os=bsd 289051ceee6Smrg ;; 290051ceee6Smrg convex-c38) 291051ceee6Smrg basic_machine=c38-convex 292051ceee6Smrg basic_os=bsd 293051ceee6Smrg ;; 294051ceee6Smrg cray) 295051ceee6Smrg basic_machine=j90-cray 296051ceee6Smrg basic_os=unicos 297051ceee6Smrg ;; 298051ceee6Smrg crds | unos) 299051ceee6Smrg basic_machine=m68k-crds 300051ceee6Smrg basic_os= 301051ceee6Smrg ;; 302051ceee6Smrg da30) 303051ceee6Smrg basic_machine=m68k-da30 304051ceee6Smrg basic_os= 305051ceee6Smrg ;; 306051ceee6Smrg decstation | pmax | pmin | dec3100 | decstatn) 307051ceee6Smrg basic_machine=mips-dec 308051ceee6Smrg basic_os= 309051ceee6Smrg ;; 310051ceee6Smrg delta88) 311051ceee6Smrg basic_machine=m88k-motorola 312051ceee6Smrg basic_os=sysv3 313051ceee6Smrg ;; 314051ceee6Smrg dicos) 315051ceee6Smrg basic_machine=i686-pc 316051ceee6Smrg basic_os=dicos 317051ceee6Smrg ;; 318051ceee6Smrg djgpp) 319051ceee6Smrg basic_machine=i586-pc 320051ceee6Smrg basic_os=msdosdjgpp 321051ceee6Smrg ;; 322051ceee6Smrg ebmon29k) 323051ceee6Smrg basic_machine=a29k-amd 324051ceee6Smrg basic_os=ebmon 325051ceee6Smrg ;; 326051ceee6Smrg es1800 | OSE68k | ose68k | ose | OSE) 327051ceee6Smrg basic_machine=m68k-ericsson 328051ceee6Smrg basic_os=ose 329051ceee6Smrg ;; 330051ceee6Smrg gmicro) 331051ceee6Smrg basic_machine=tron-gmicro 332051ceee6Smrg basic_os=sysv 333051ceee6Smrg ;; 334051ceee6Smrg go32) 335051ceee6Smrg basic_machine=i386-pc 336051ceee6Smrg basic_os=go32 337051ceee6Smrg ;; 338051ceee6Smrg h8300hms) 339051ceee6Smrg basic_machine=h8300-hitachi 340051ceee6Smrg basic_os=hms 341051ceee6Smrg ;; 342051ceee6Smrg h8300xray) 343051ceee6Smrg basic_machine=h8300-hitachi 344051ceee6Smrg basic_os=xray 345051ceee6Smrg ;; 346051ceee6Smrg h8500hms) 347051ceee6Smrg basic_machine=h8500-hitachi 348051ceee6Smrg basic_os=hms 349051ceee6Smrg ;; 350051ceee6Smrg harris) 351051ceee6Smrg basic_machine=m88k-harris 352051ceee6Smrg basic_os=sysv3 353051ceee6Smrg ;; 354051ceee6Smrg hp300 | hp300hpux) 355051ceee6Smrg basic_machine=m68k-hp 356051ceee6Smrg basic_os=hpux 357051ceee6Smrg ;; 358051ceee6Smrg hp300bsd) 359051ceee6Smrg basic_machine=m68k-hp 360051ceee6Smrg basic_os=bsd 361051ceee6Smrg ;; 362051ceee6Smrg hppaosf) 363051ceee6Smrg basic_machine=hppa1.1-hp 364051ceee6Smrg basic_os=osf 365051ceee6Smrg ;; 366051ceee6Smrg hppro) 367051ceee6Smrg basic_machine=hppa1.1-hp 368051ceee6Smrg basic_os=proelf 369051ceee6Smrg ;; 370051ceee6Smrg i386mach) 371051ceee6Smrg basic_machine=i386-mach 372051ceee6Smrg basic_os=mach 373051ceee6Smrg ;; 374051ceee6Smrg isi68 | isi) 375051ceee6Smrg basic_machine=m68k-isi 376051ceee6Smrg basic_os=sysv 377051ceee6Smrg ;; 378051ceee6Smrg m68knommu) 379051ceee6Smrg basic_machine=m68k-unknown 380051ceee6Smrg basic_os=linux 381051ceee6Smrg ;; 382051ceee6Smrg magnum | m3230) 383051ceee6Smrg basic_machine=mips-mips 384051ceee6Smrg basic_os=sysv 385051ceee6Smrg ;; 386051ceee6Smrg merlin) 387051ceee6Smrg basic_machine=ns32k-utek 388051ceee6Smrg basic_os=sysv 389051ceee6Smrg ;; 390051ceee6Smrg mingw64) 391051ceee6Smrg basic_machine=x86_64-pc 392051ceee6Smrg basic_os=mingw64 393051ceee6Smrg ;; 394051ceee6Smrg mingw32) 395051ceee6Smrg basic_machine=i686-pc 396051ceee6Smrg basic_os=mingw32 397051ceee6Smrg ;; 398051ceee6Smrg mingw32ce) 399051ceee6Smrg basic_machine=arm-unknown 400051ceee6Smrg basic_os=mingw32ce 401051ceee6Smrg ;; 402051ceee6Smrg monitor) 403051ceee6Smrg basic_machine=m68k-rom68k 404051ceee6Smrg basic_os=coff 405051ceee6Smrg ;; 406051ceee6Smrg morphos) 407051ceee6Smrg basic_machine=powerpc-unknown 408051ceee6Smrg basic_os=morphos 409051ceee6Smrg ;; 410051ceee6Smrg moxiebox) 411051ceee6Smrg basic_machine=moxie-unknown 412051ceee6Smrg basic_os=moxiebox 413051ceee6Smrg ;; 414051ceee6Smrg msdos) 415051ceee6Smrg basic_machine=i386-pc 416051ceee6Smrg basic_os=msdos 417051ceee6Smrg ;; 418051ceee6Smrg msys) 419051ceee6Smrg basic_machine=i686-pc 420051ceee6Smrg basic_os=msys 421051ceee6Smrg ;; 422051ceee6Smrg mvs) 423051ceee6Smrg basic_machine=i370-ibm 424051ceee6Smrg basic_os=mvs 425051ceee6Smrg ;; 426051ceee6Smrg nacl) 427051ceee6Smrg basic_machine=le32-unknown 428051ceee6Smrg basic_os=nacl 429051ceee6Smrg ;; 430051ceee6Smrg ncr3000) 431051ceee6Smrg basic_machine=i486-ncr 432051ceee6Smrg basic_os=sysv4 433051ceee6Smrg ;; 434051ceee6Smrg netbsd386) 435051ceee6Smrg basic_machine=i386-pc 436051ceee6Smrg basic_os=netbsd 437051ceee6Smrg ;; 438051ceee6Smrg netwinder) 439051ceee6Smrg basic_machine=armv4l-rebel 440051ceee6Smrg basic_os=linux 441051ceee6Smrg ;; 442051ceee6Smrg news | news700 | news800 | news900) 443051ceee6Smrg basic_machine=m68k-sony 444051ceee6Smrg basic_os=newsos 445051ceee6Smrg ;; 446051ceee6Smrg news1000) 447051ceee6Smrg basic_machine=m68030-sony 448051ceee6Smrg basic_os=newsos 449051ceee6Smrg ;; 450051ceee6Smrg necv70) 451051ceee6Smrg basic_machine=v70-nec 452051ceee6Smrg basic_os=sysv 453051ceee6Smrg ;; 454051ceee6Smrg nh3000) 455051ceee6Smrg basic_machine=m68k-harris 456051ceee6Smrg basic_os=cxux 457051ceee6Smrg ;; 458051ceee6Smrg nh[45]000) 459051ceee6Smrg basic_machine=m88k-harris 460051ceee6Smrg basic_os=cxux 461051ceee6Smrg ;; 462051ceee6Smrg nindy960) 463051ceee6Smrg basic_machine=i960-intel 464051ceee6Smrg basic_os=nindy 465051ceee6Smrg ;; 466051ceee6Smrg mon960) 467051ceee6Smrg basic_machine=i960-intel 468051ceee6Smrg basic_os=mon960 469051ceee6Smrg ;; 470051ceee6Smrg nonstopux) 471051ceee6Smrg basic_machine=mips-compaq 472051ceee6Smrg basic_os=nonstopux 473051ceee6Smrg ;; 474051ceee6Smrg os400) 475051ceee6Smrg basic_machine=powerpc-ibm 476051ceee6Smrg basic_os=os400 477051ceee6Smrg ;; 478051ceee6Smrg OSE68000 | ose68000) 479051ceee6Smrg basic_machine=m68000-ericsson 480051ceee6Smrg basic_os=ose 481051ceee6Smrg ;; 482051ceee6Smrg os68k) 483051ceee6Smrg basic_machine=m68k-none 484051ceee6Smrg basic_os=os68k 485051ceee6Smrg ;; 486051ceee6Smrg paragon) 487051ceee6Smrg basic_machine=i860-intel 488051ceee6Smrg basic_os=osf 489051ceee6Smrg ;; 490051ceee6Smrg parisc) 491051ceee6Smrg basic_machine=hppa-unknown 492051ceee6Smrg basic_os=linux 493051ceee6Smrg ;; 494051ceee6Smrg psp) 495051ceee6Smrg basic_machine=mipsallegrexel-sony 496051ceee6Smrg basic_os=psp 497051ceee6Smrg ;; 498051ceee6Smrg pw32) 499051ceee6Smrg basic_machine=i586-unknown 500051ceee6Smrg basic_os=pw32 501051ceee6Smrg ;; 502051ceee6Smrg rdos | rdos64) 503051ceee6Smrg basic_machine=x86_64-pc 504051ceee6Smrg basic_os=rdos 505051ceee6Smrg ;; 506051ceee6Smrg rdos32) 507051ceee6Smrg basic_machine=i386-pc 508051ceee6Smrg basic_os=rdos 509051ceee6Smrg ;; 510051ceee6Smrg rom68k) 511051ceee6Smrg basic_machine=m68k-rom68k 512051ceee6Smrg basic_os=coff 513051ceee6Smrg ;; 514051ceee6Smrg sa29200) 515051ceee6Smrg basic_machine=a29k-amd 516051ceee6Smrg basic_os=udi 517051ceee6Smrg ;; 518051ceee6Smrg sei) 519051ceee6Smrg basic_machine=mips-sei 520051ceee6Smrg basic_os=seiux 521051ceee6Smrg ;; 522051ceee6Smrg sequent) 523051ceee6Smrg basic_machine=i386-sequent 524051ceee6Smrg basic_os= 525051ceee6Smrg ;; 526051ceee6Smrg sps7) 527051ceee6Smrg basic_machine=m68k-bull 528051ceee6Smrg basic_os=sysv2 529051ceee6Smrg ;; 530051ceee6Smrg st2000) 531051ceee6Smrg basic_machine=m68k-tandem 532051ceee6Smrg basic_os= 533051ceee6Smrg ;; 534051ceee6Smrg stratus) 535051ceee6Smrg basic_machine=i860-stratus 536051ceee6Smrg basic_os=sysv4 537051ceee6Smrg ;; 538051ceee6Smrg sun2) 539051ceee6Smrg basic_machine=m68000-sun 540051ceee6Smrg basic_os= 541051ceee6Smrg ;; 542051ceee6Smrg sun2os3) 543051ceee6Smrg basic_machine=m68000-sun 544051ceee6Smrg basic_os=sunos3 545051ceee6Smrg ;; 546051ceee6Smrg sun2os4) 547051ceee6Smrg basic_machine=m68000-sun 548051ceee6Smrg basic_os=sunos4 549051ceee6Smrg ;; 550051ceee6Smrg sun3) 551051ceee6Smrg basic_machine=m68k-sun 552051ceee6Smrg basic_os= 553051ceee6Smrg ;; 554051ceee6Smrg sun3os3) 555051ceee6Smrg basic_machine=m68k-sun 556051ceee6Smrg basic_os=sunos3 557051ceee6Smrg ;; 558051ceee6Smrg sun3os4) 559051ceee6Smrg basic_machine=m68k-sun 560051ceee6Smrg basic_os=sunos4 561051ceee6Smrg ;; 562051ceee6Smrg sun4) 563051ceee6Smrg basic_machine=sparc-sun 564051ceee6Smrg basic_os= 565051ceee6Smrg ;; 566051ceee6Smrg sun4os3) 567051ceee6Smrg basic_machine=sparc-sun 568051ceee6Smrg basic_os=sunos3 569051ceee6Smrg ;; 570051ceee6Smrg sun4os4) 571051ceee6Smrg basic_machine=sparc-sun 572051ceee6Smrg basic_os=sunos4 573051ceee6Smrg ;; 574051ceee6Smrg sun4sol2) 575051ceee6Smrg basic_machine=sparc-sun 576051ceee6Smrg basic_os=solaris2 577051ceee6Smrg ;; 578051ceee6Smrg sun386 | sun386i | roadrunner) 579051ceee6Smrg basic_machine=i386-sun 580051ceee6Smrg basic_os= 581051ceee6Smrg ;; 582051ceee6Smrg sv1) 583051ceee6Smrg basic_machine=sv1-cray 584051ceee6Smrg basic_os=unicos 585051ceee6Smrg ;; 586051ceee6Smrg symmetry) 587051ceee6Smrg basic_machine=i386-sequent 588051ceee6Smrg basic_os=dynix 589051ceee6Smrg ;; 590051ceee6Smrg t3e) 591051ceee6Smrg basic_machine=alphaev5-cray 592051ceee6Smrg basic_os=unicos 593051ceee6Smrg ;; 594051ceee6Smrg t90) 595051ceee6Smrg basic_machine=t90-cray 596051ceee6Smrg basic_os=unicos 597051ceee6Smrg ;; 598051ceee6Smrg toad1) 599051ceee6Smrg basic_machine=pdp10-xkl 600051ceee6Smrg basic_os=tops20 601051ceee6Smrg ;; 602051ceee6Smrg tpf) 603051ceee6Smrg basic_machine=s390x-ibm 604051ceee6Smrg basic_os=tpf 605051ceee6Smrg ;; 606051ceee6Smrg udi29k) 607051ceee6Smrg basic_machine=a29k-amd 608051ceee6Smrg basic_os=udi 609051ceee6Smrg ;; 610051ceee6Smrg ultra3) 611051ceee6Smrg basic_machine=a29k-nyu 612051ceee6Smrg basic_os=sym1 613051ceee6Smrg ;; 614051ceee6Smrg v810 | necv810) 615051ceee6Smrg basic_machine=v810-nec 616051ceee6Smrg basic_os=none 617051ceee6Smrg ;; 618051ceee6Smrg vaxv) 619051ceee6Smrg basic_machine=vax-dec 620051ceee6Smrg basic_os=sysv 621051ceee6Smrg ;; 622051ceee6Smrg vms) 623051ceee6Smrg basic_machine=vax-dec 624051ceee6Smrg basic_os=vms 625051ceee6Smrg ;; 626051ceee6Smrg vsta) 627051ceee6Smrg basic_machine=i386-pc 628051ceee6Smrg basic_os=vsta 629051ceee6Smrg ;; 630051ceee6Smrg vxworks960) 631051ceee6Smrg basic_machine=i960-wrs 632051ceee6Smrg basic_os=vxworks 633051ceee6Smrg ;; 634051ceee6Smrg vxworks68) 635051ceee6Smrg basic_machine=m68k-wrs 636051ceee6Smrg basic_os=vxworks 637051ceee6Smrg ;; 638051ceee6Smrg vxworks29k) 639051ceee6Smrg basic_machine=a29k-wrs 640051ceee6Smrg basic_os=vxworks 641051ceee6Smrg ;; 642051ceee6Smrg xbox) 643051ceee6Smrg basic_machine=i686-pc 644051ceee6Smrg basic_os=mingw32 645051ceee6Smrg ;; 646051ceee6Smrg ymp) 647051ceee6Smrg basic_machine=ymp-cray 648051ceee6Smrg basic_os=unicos 649051ceee6Smrg ;; 650051ceee6Smrg *) 651051ceee6Smrg basic_machine=$1 652051ceee6Smrg basic_os= 653051ceee6Smrg ;; 654051ceee6Smrg esac 65567f05d30Smrg ;; 65667f05d30Smrgesac 65767f05d30Smrg 658051ceee6Smrg# Decode 1-component or ad-hoc basic machines 65967f05d30Smrgcase $basic_machine in 660051ceee6Smrg # Here we handle the default manufacturer of certain CPU types. It is in 661051ceee6Smrg # some cases the only manufacturer, in others, it is the most popular. 662051ceee6Smrg w89k) 663051ceee6Smrg cpu=hppa1.1 664051ceee6Smrg vendor=winbond 665e90eff46Smrg ;; 666051ceee6Smrg op50n) 667051ceee6Smrg cpu=hppa1.1 668051ceee6Smrg vendor=oki 66967f05d30Smrg ;; 670051ceee6Smrg op60c) 671051ceee6Smrg cpu=hppa1.1 672051ceee6Smrg vendor=oki 67367f05d30Smrg ;; 674051ceee6Smrg ibm*) 675051ceee6Smrg cpu=i370 676051ceee6Smrg vendor=ibm 677fffe5102Smrg ;; 678051ceee6Smrg orion105) 679051ceee6Smrg cpu=clipper 680051ceee6Smrg vendor=highlevel 681e90eff46Smrg ;; 682051ceee6Smrg mac | mpw | mac-mpw) 683051ceee6Smrg cpu=m68k 684051ceee6Smrg vendor=apple 6856dbd43aaSmrg ;; 686051ceee6Smrg pmac | pmac-mpw) 687051ceee6Smrg cpu=powerpc 688051ceee6Smrg vendor=apple 6896dbd43aaSmrg ;; 6906dbd43aaSmrg 69167f05d30Smrg # Recognize the various machine names and aliases which stand 69267f05d30Smrg # for a CPU type and a company and sometimes even an OS. 69367f05d30Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694051ceee6Smrg cpu=m68000 695051ceee6Smrg vendor=att 69667f05d30Smrg ;; 69767f05d30Smrg 3b*) 698051ceee6Smrg cpu=we32k 699051ceee6Smrg vendor=att 700fffe5102Smrg ;; 701fffe5102Smrg bluegene*) 702051ceee6Smrg cpu=powerpc 703051ceee6Smrg vendor=ibm 704051ceee6Smrg basic_os=cnk 70567f05d30Smrg ;; 70667f05d30Smrg decsystem10* | dec10*) 707051ceee6Smrg cpu=pdp10 708051ceee6Smrg vendor=dec 709051ceee6Smrg basic_os=tops10 71067f05d30Smrg ;; 71167f05d30Smrg decsystem20* | dec20*) 712051ceee6Smrg cpu=pdp10 713051ceee6Smrg vendor=dec 714051ceee6Smrg basic_os=tops20 71567f05d30Smrg ;; 71667f05d30Smrg delta | 3300 | motorola-3300 | motorola-delta \ 71767f05d30Smrg | 3300-motorola | delta-motorola) 718051ceee6Smrg cpu=m68k 719051ceee6Smrg vendor=motorola 72067f05d30Smrg ;; 721e90eff46Smrg dpx2*) 722051ceee6Smrg cpu=m68k 723051ceee6Smrg vendor=bull 724051ceee6Smrg basic_os=sysv3 72567f05d30Smrg ;; 72667f05d30Smrg encore | umax | mmax) 727051ceee6Smrg cpu=ns32k 728051ceee6Smrg vendor=encore 72967f05d30Smrg ;; 730051ceee6Smrg elxsi) 731051ceee6Smrg cpu=elxsi 732051ceee6Smrg vendor=elxsi 733051ceee6Smrg basic_os=${basic_os:-bsd} 73467f05d30Smrg ;; 73567f05d30Smrg fx2800) 736051ceee6Smrg cpu=i860 737051ceee6Smrg vendor=alliant 73867f05d30Smrg ;; 73967f05d30Smrg genix) 740051ceee6Smrg cpu=ns32k 741051ceee6Smrg vendor=ns 74267f05d30Smrg ;; 74367f05d30Smrg h3050r* | hiux*) 744051ceee6Smrg cpu=hppa1.1 745051ceee6Smrg vendor=hitachi 746051ceee6Smrg basic_os=hiuxwe2 74767f05d30Smrg ;; 74867f05d30Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749051ceee6Smrg cpu=hppa1.0 750051ceee6Smrg vendor=hp 75167f05d30Smrg ;; 75267f05d30Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753051ceee6Smrg cpu=m68000 754051ceee6Smrg vendor=hp 75567f05d30Smrg ;; 75667f05d30Smrg hp9k3[2-9][0-9]) 757051ceee6Smrg cpu=m68k 758051ceee6Smrg vendor=hp 75967f05d30Smrg ;; 76067f05d30Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761051ceee6Smrg cpu=hppa1.0 762051ceee6Smrg vendor=hp 76367f05d30Smrg ;; 76467f05d30Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765051ceee6Smrg cpu=hppa1.1 766051ceee6Smrg vendor=hp 76767f05d30Smrg ;; 76867f05d30Smrg hp9k78[0-9] | hp78[0-9]) 76967f05d30Smrg # FIXME: really hppa2.0-hp 770051ceee6Smrg cpu=hppa1.1 771051ceee6Smrg vendor=hp 77267f05d30Smrg ;; 77367f05d30Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77467f05d30Smrg # FIXME: really hppa2.0-hp 775051ceee6Smrg cpu=hppa1.1 776051ceee6Smrg vendor=hp 77767f05d30Smrg ;; 77867f05d30Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779051ceee6Smrg cpu=hppa1.1 780051ceee6Smrg vendor=hp 78167f05d30Smrg ;; 78267f05d30Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783051ceee6Smrg cpu=hppa1.0 784051ceee6Smrg vendor=hp 78567f05d30Smrg ;; 78667f05d30Smrg i*86v32) 787051ceee6Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788051ceee6Smrg vendor=pc 789051ceee6Smrg basic_os=sysv32 79067f05d30Smrg ;; 79167f05d30Smrg i*86v4*) 792051ceee6Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793051ceee6Smrg vendor=pc 794051ceee6Smrg basic_os=sysv4 79567f05d30Smrg ;; 79667f05d30Smrg i*86v) 797051ceee6Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798051ceee6Smrg vendor=pc 799051ceee6Smrg basic_os=sysv 80067f05d30Smrg ;; 80167f05d30Smrg i*86sol2) 802051ceee6Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803051ceee6Smrg vendor=pc 804051ceee6Smrg basic_os=solaris2 80567f05d30Smrg ;; 806051ceee6Smrg j90 | j90-cray) 807051ceee6Smrg cpu=j90 808051ceee6Smrg vendor=cray 809051ceee6Smrg basic_os=${basic_os:-unicos} 81067f05d30Smrg ;; 81167f05d30Smrg iris | iris4d) 812051ceee6Smrg cpu=mips 813051ceee6Smrg vendor=sgi 814051ceee6Smrg case $basic_os in 815051ceee6Smrg irix*) 81667f05d30Smrg ;; 81767f05d30Smrg *) 818051ceee6Smrg basic_os=irix4 81967f05d30Smrg ;; 82067f05d30Smrg esac 82167f05d30Smrg ;; 82267f05d30Smrg miniframe) 823051ceee6Smrg cpu=m68000 824051ceee6Smrg vendor=convergent 82567f05d30Smrg ;; 826051ceee6Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827051ceee6Smrg cpu=m68k 828051ceee6Smrg vendor=atari 829051ceee6Smrg basic_os=mint 83067f05d30Smrg ;; 83167f05d30Smrg news-3600 | risc-news) 832051ceee6Smrg cpu=mips 833051ceee6Smrg vendor=sony 834051ceee6Smrg basic_os=newsos 83567f05d30Smrg ;; 836e90eff46Smrg next | m*-next) 837051ceee6Smrg cpu=m68k 838051ceee6Smrg vendor=next 839051ceee6Smrg case $basic_os in 840051ceee6Smrg openstep*) 841051ceee6Smrg ;; 842051ceee6Smrg nextstep*) 84367f05d30Smrg ;; 844051ceee6Smrg ns2*) 845051ceee6Smrg basic_os=nextstep2 84667f05d30Smrg ;; 84767f05d30Smrg *) 848051ceee6Smrg basic_os=nextstep3 84967f05d30Smrg ;; 85067f05d30Smrg esac 85167f05d30Smrg ;; 85267f05d30Smrg np1) 853051ceee6Smrg cpu=np1 854051ceee6Smrg vendor=gould 855e90eff46Smrg ;; 85667f05d30Smrg op50n-* | op60c-*) 857051ceee6Smrg cpu=hppa1.1 858051ceee6Smrg vendor=oki 859051ceee6Smrg basic_os=proelf 86067f05d30Smrg ;; 86167f05d30Smrg pa-hitachi) 862051ceee6Smrg cpu=hppa1.1 863051ceee6Smrg vendor=hitachi 864051ceee6Smrg basic_os=hiuxwe2 865fffe5102Smrg ;; 86667f05d30Smrg pbd) 867051ceee6Smrg cpu=sparc 868051ceee6Smrg vendor=tti 86967f05d30Smrg ;; 87067f05d30Smrg pbb) 871051ceee6Smrg cpu=m68k 872051ceee6Smrg vendor=tti 87367f05d30Smrg ;; 874051ceee6Smrg pc532) 875051ceee6Smrg cpu=ns32k 876051ceee6Smrg vendor=pc532 87767f05d30Smrg ;; 87867f05d30Smrg pn) 879051ceee6Smrg cpu=pn 880051ceee6Smrg vendor=gould 88167f05d30Smrg ;; 882051ceee6Smrg power) 883051ceee6Smrg cpu=power 884051ceee6Smrg vendor=ibm 88567f05d30Smrg ;; 886051ceee6Smrg ps2) 887051ceee6Smrg cpu=i386 888051ceee6Smrg vendor=ibm 88967f05d30Smrg ;; 890051ceee6Smrg rm[46]00) 891051ceee6Smrg cpu=mips 892051ceee6Smrg vendor=siemens 89367f05d30Smrg ;; 894051ceee6Smrg rtpc | rtpc-*) 895051ceee6Smrg cpu=romp 896051ceee6Smrg vendor=ibm 89767f05d30Smrg ;; 898051ceee6Smrg sde) 899051ceee6Smrg cpu=mipsisa32 900051ceee6Smrg vendor=sde 901051ceee6Smrg basic_os=${basic_os:-elf} 90267f05d30Smrg ;; 903051ceee6Smrg simso-wrs) 904051ceee6Smrg cpu=sparclite 905051ceee6Smrg vendor=wrs 906051ceee6Smrg basic_os=vxworks 90767f05d30Smrg ;; 908051ceee6Smrg tower | tower-32) 909051ceee6Smrg cpu=m68k 910051ceee6Smrg vendor=ncr 91167f05d30Smrg ;; 912051ceee6Smrg vpp*|vx|vx-*) 913051ceee6Smrg cpu=f301 914051ceee6Smrg vendor=fujitsu 915e90eff46Smrg ;; 916051ceee6Smrg w65) 917051ceee6Smrg cpu=w65 918051ceee6Smrg vendor=wdc 919fffe5102Smrg ;; 920051ceee6Smrg w89k-*) 921051ceee6Smrg cpu=hppa1.1 922051ceee6Smrg vendor=winbond 923051ceee6Smrg basic_os=proelf 92467f05d30Smrg ;; 925051ceee6Smrg none) 926051ceee6Smrg cpu=none 927051ceee6Smrg vendor=none 92867f05d30Smrg ;; 929051ceee6Smrg leon|leon[3-9]) 930051ceee6Smrg cpu=sparc 931051ceee6Smrg vendor=$basic_machine 93267f05d30Smrg ;; 933051ceee6Smrg leon-*|leon[3-9]-*) 934051ceee6Smrg cpu=sparc 935051ceee6Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936fffe5102Smrg ;; 937051ceee6Smrg 938051ceee6Smrg *-*) 939051ceee6Smrg # shellcheck disable=SC2162 940051ceee6Smrg saved_IFS=$IFS 941051ceee6Smrg IFS="-" read cpu vendor <<EOF 942051ceee6Smrg$basic_machine 943051ceee6SmrgEOF 944051ceee6Smrg IFS=$saved_IFS 945fffe5102Smrg ;; 946051ceee6Smrg # We use `pc' rather than `unknown' 947051ceee6Smrg # because (1) that's what they normally are, and 948051ceee6Smrg # (2) the word "unknown" tends to confuse beginning users. 949051ceee6Smrg i*86 | x86_64) 950051ceee6Smrg cpu=$basic_machine 951051ceee6Smrg vendor=pc 95267f05d30Smrg ;; 953051ceee6Smrg # These rules are duplicated from below for sake of the special case above; 954051ceee6Smrg # i.e. things that normalized to x86 arches should also default to "pc" 955051ceee6Smrg pc98) 956051ceee6Smrg cpu=i386 957051ceee6Smrg vendor=pc 95867f05d30Smrg ;; 959051ceee6Smrg x64 | amd64) 960051ceee6Smrg cpu=x86_64 961051ceee6Smrg vendor=pc 96267f05d30Smrg ;; 963051ceee6Smrg # Recognize the basic CPU types without company name. 964051ceee6Smrg *) 965051ceee6Smrg cpu=$basic_machine 966051ceee6Smrg vendor=unknown 967fffe5102Smrg ;; 968051ceee6Smrgesac 969051ceee6Smrg 970051ceee6Smrgunset -v basic_machine 971051ceee6Smrg 972051ceee6Smrg# Decode basic machines in the full and proper CPU-Company form. 973051ceee6Smrgcase $cpu-$vendor in 974051ceee6Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975051ceee6Smrg # some cases the only manufacturer, in others, it is the most popular. 976051ceee6Smrg craynv-unknown) 977051ceee6Smrg vendor=cray 978051ceee6Smrg basic_os=${basic_os:-unicosmp} 97967f05d30Smrg ;; 980051ceee6Smrg c90-unknown | c90-cray) 981051ceee6Smrg vendor=cray 982051ceee6Smrg basic_os=${Basic_os:-unicos} 98367f05d30Smrg ;; 984051ceee6Smrg fx80-unknown) 985051ceee6Smrg vendor=alliant 986fffe5102Smrg ;; 987051ceee6Smrg romp-unknown) 988051ceee6Smrg vendor=ibm 98967f05d30Smrg ;; 990051ceee6Smrg mmix-unknown) 991051ceee6Smrg vendor=knuth 99267f05d30Smrg ;; 993051ceee6Smrg microblaze-unknown | microblazeel-unknown) 994051ceee6Smrg vendor=xilinx 99567f05d30Smrg ;; 996051ceee6Smrg rs6000-unknown) 997051ceee6Smrg vendor=ibm 99867f05d30Smrg ;; 999051ceee6Smrg vax-unknown) 1000051ceee6Smrg vendor=dec 100167f05d30Smrg ;; 1002051ceee6Smrg pdp11-unknown) 1003051ceee6Smrg vendor=dec 10046dbd43aaSmrg ;; 1005051ceee6Smrg we32k-unknown) 1006051ceee6Smrg vendor=att 100767f05d30Smrg ;; 1008051ceee6Smrg cydra-unknown) 1009051ceee6Smrg vendor=cydrome 101067f05d30Smrg ;; 1011051ceee6Smrg i370-ibm*) 1012051ceee6Smrg vendor=ibm 101367f05d30Smrg ;; 1014051ceee6Smrg orion-unknown) 1015051ceee6Smrg vendor=highlevel 101667f05d30Smrg ;; 1017051ceee6Smrg xps-unknown | xps100-unknown) 1018051ceee6Smrg cpu=xps100 1019051ceee6Smrg vendor=honeywell 102067f05d30Smrg ;; 1021051ceee6Smrg 1022051ceee6Smrg # Here we normalize CPU types with a missing or matching vendor 1023051ceee6Smrg dpx20-unknown | dpx20-bull) 1024051ceee6Smrg cpu=rs6000 1025051ceee6Smrg vendor=bull 1026051ceee6Smrg basic_os=${basic_os:-bosx} 102767f05d30Smrg ;; 1028051ceee6Smrg 1029051ceee6Smrg # Here we normalize CPU types irrespective of the vendor 1030051ceee6Smrg amd64-*) 1031051ceee6Smrg cpu=x86_64 103267f05d30Smrg ;; 1033051ceee6Smrg blackfin-*) 1034051ceee6Smrg cpu=bfin 1035051ceee6Smrg basic_os=linux 103667f05d30Smrg ;; 1037051ceee6Smrg c54x-*) 1038051ceee6Smrg cpu=tic54x 103967f05d30Smrg ;; 1040051ceee6Smrg c55x-*) 1041051ceee6Smrg cpu=tic55x 104267f05d30Smrg ;; 1043051ceee6Smrg c6x-*) 1044051ceee6Smrg cpu=tic6x 104567f05d30Smrg ;; 1046051ceee6Smrg e500v[12]-*) 1047051ceee6Smrg cpu=powerpc 1048051ceee6Smrg basic_os=${basic_os}"spe" 104967f05d30Smrg ;; 1050051ceee6Smrg mips3*-*) 1051051ceee6Smrg cpu=mips64 105267f05d30Smrg ;; 1053051ceee6Smrg ms1-*) 1054051ceee6Smrg cpu=mt 105567f05d30Smrg ;; 1056051ceee6Smrg m68knommu-*) 1057051ceee6Smrg cpu=m68k 1058051ceee6Smrg basic_os=linux 105967f05d30Smrg ;; 1060051ceee6Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1061051ceee6Smrg cpu=s12z 1062fffe5102Smrg ;; 1063051ceee6Smrg openrisc-*) 1064051ceee6Smrg cpu=or32 106567f05d30Smrg ;; 1066051ceee6Smrg parisc-*) 1067051ceee6Smrg cpu=hppa 1068051ceee6Smrg basic_os=linux 106967f05d30Smrg ;; 1070051ceee6Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1071051ceee6Smrg cpu=i586 107267f05d30Smrg ;; 1073051ceee6Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 1074051ceee6Smrg cpu=i686 107567f05d30Smrg ;; 1076051ceee6Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1077051ceee6Smrg cpu=i686 1078fffe5102Smrg ;; 1079051ceee6Smrg pentium4-*) 1080051ceee6Smrg cpu=i786 108167f05d30Smrg ;; 1082051ceee6Smrg pc98-*) 1083051ceee6Smrg cpu=i386 108467f05d30Smrg ;; 1085051ceee6Smrg ppc-* | ppcbe-*) 1086051ceee6Smrg cpu=powerpc 108767f05d30Smrg ;; 1088051ceee6Smrg ppcle-* | powerpclittle-*) 1089051ceee6Smrg cpu=powerpcle 109067f05d30Smrg ;; 1091051ceee6Smrg ppc64-*) 1092051ceee6Smrg cpu=powerpc64 109367f05d30Smrg ;; 1094051ceee6Smrg ppc64le-* | powerpc64little-*) 1095051ceee6Smrg cpu=powerpc64le 109667f05d30Smrg ;; 1097051ceee6Smrg sb1-*) 1098051ceee6Smrg cpu=mipsisa64sb1 109967f05d30Smrg ;; 1100051ceee6Smrg sb1el-*) 1101051ceee6Smrg cpu=mipsisa64sb1el 110267f05d30Smrg ;; 1103051ceee6Smrg sh5e[lb]-*) 1104051ceee6Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 110567f05d30Smrg ;; 1106051ceee6Smrg spur-*) 1107051ceee6Smrg cpu=spur 110867f05d30Smrg ;; 1109051ceee6Smrg strongarm-* | thumb-*) 1110051ceee6Smrg cpu=arm 111167f05d30Smrg ;; 1112051ceee6Smrg tx39-*) 1113051ceee6Smrg cpu=mipstx39 1114e90eff46Smrg ;; 1115051ceee6Smrg tx39el-*) 1116051ceee6Smrg cpu=mipstx39el 1117fffe5102Smrg ;; 1118051ceee6Smrg x64-*) 1119051ceee6Smrg cpu=x86_64 112067f05d30Smrg ;; 11216dbd43aaSmrg xscale-* | xscalee[bl]-*) 1122051ceee6Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112367f05d30Smrg ;; 1124051ceee6Smrg arm64-*) 1125051ceee6Smrg cpu=aarch64 112667f05d30Smrg ;; 112767f05d30Smrg 1128051ceee6Smrg # Recognize the canonical CPU Types that limit and/or modify the 1129051ceee6Smrg # company names they are paired with. 1130051ceee6Smrg cr16-*) 1131051ceee6Smrg basic_os=${basic_os:-elf} 1132fffe5102Smrg ;; 1133051ceee6Smrg crisv32-* | etraxfs*-*) 1134051ceee6Smrg cpu=crisv32 1135051ceee6Smrg vendor=axis 113667f05d30Smrg ;; 1137051ceee6Smrg cris-* | etrax*-*) 1138051ceee6Smrg cpu=cris 1139051ceee6Smrg vendor=axis 114067f05d30Smrg ;; 1141051ceee6Smrg crx-*) 1142051ceee6Smrg basic_os=${basic_os:-elf} 114367f05d30Smrg ;; 1144051ceee6Smrg neo-tandem) 1145051ceee6Smrg cpu=neo 1146051ceee6Smrg vendor=tandem 114767f05d30Smrg ;; 1148051ceee6Smrg nse-tandem) 1149051ceee6Smrg cpu=nse 1150051ceee6Smrg vendor=tandem 115167f05d30Smrg ;; 1152051ceee6Smrg nsr-tandem) 1153051ceee6Smrg cpu=nsr 1154051ceee6Smrg vendor=tandem 115567f05d30Smrg ;; 1156051ceee6Smrg nsv-tandem) 1157051ceee6Smrg cpu=nsv 1158051ceee6Smrg vendor=tandem 115967f05d30Smrg ;; 1160051ceee6Smrg nsx-tandem) 1161051ceee6Smrg cpu=nsx 1162051ceee6Smrg vendor=tandem 116367f05d30Smrg ;; 1164051ceee6Smrg mipsallegrexel-sony) 1165051ceee6Smrg cpu=mipsallegrexel 1166051ceee6Smrg vendor=sony 116767f05d30Smrg ;; 1168051ceee6Smrg tile*-*) 1169051ceee6Smrg basic_os=${basic_os:-linux-gnu} 117067f05d30Smrg ;; 1171051ceee6Smrg 117267f05d30Smrg *) 1173051ceee6Smrg # Recognize the canonical CPU types that are allowed with any 1174051ceee6Smrg # company name. 1175051ceee6Smrg case $cpu in 1176051ceee6Smrg 1750a | 580 \ 1177051ceee6Smrg | a29k \ 1178051ceee6Smrg | aarch64 | aarch64_be \ 1179051ceee6Smrg | abacus \ 1180051ceee6Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1181051ceee6Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1182051ceee6Smrg | alphapca5[67] | alpha64pca5[67] \ 1183051ceee6Smrg | am33_2.0 \ 1184051ceee6Smrg | amdgcn \ 1185051ceee6Smrg | arc | arceb | arc32 | arc64 \ 1186051ceee6Smrg | arm | arm[lb]e | arme[lb] | armv* \ 1187051ceee6Smrg | avr | avr32 \ 1188051ceee6Smrg | asmjs \ 1189051ceee6Smrg | ba \ 1190051ceee6Smrg | be32 | be64 \ 1191051ceee6Smrg | bfin | bpf | bs2000 \ 1192051ceee6Smrg | c[123]* | c30 | [cjt]90 | c4x \ 1193051ceee6Smrg | c8051 | clipper | craynv | csky | cydra \ 1194051ceee6Smrg | d10v | d30v | dlx | dsp16xx \ 1195051ceee6Smrg | e2k | elxsi | epiphany \ 1196051ceee6Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1197051ceee6Smrg | h8300 | h8500 \ 1198051ceee6Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1199051ceee6Smrg | hexagon \ 1200051ceee6Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1201051ceee6Smrg | ip2k | iq2000 \ 1202051ceee6Smrg | k1om \ 1203051ceee6Smrg | le32 | le64 \ 1204051ceee6Smrg | lm32 \ 1205051ceee6Smrg | loongarch32 | loongarch64 | loongarchx32 \ 1206051ceee6Smrg | m32c | m32r | m32rle \ 1207051ceee6Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1208051ceee6Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1209051ceee6Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1210051ceee6Smrg | microblaze | microblazeel \ 1211051ceee6Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1212051ceee6Smrg | mips16 \ 1213051ceee6Smrg | mips64 | mips64eb | mips64el \ 1214051ceee6Smrg | mips64octeon | mips64octeonel \ 1215051ceee6Smrg | mips64orion | mips64orionel \ 1216051ceee6Smrg | mips64r5900 | mips64r5900el \ 1217051ceee6Smrg | mips64vr | mips64vrel \ 1218051ceee6Smrg | mips64vr4100 | mips64vr4100el \ 1219051ceee6Smrg | mips64vr4300 | mips64vr4300el \ 1220051ceee6Smrg | mips64vr5000 | mips64vr5000el \ 1221051ceee6Smrg | mips64vr5900 | mips64vr5900el \ 1222051ceee6Smrg | mipsisa32 | mipsisa32el \ 1223051ceee6Smrg | mipsisa32r2 | mipsisa32r2el \ 1224051ceee6Smrg | mipsisa32r3 | mipsisa32r3el \ 1225051ceee6Smrg | mipsisa32r5 | mipsisa32r5el \ 1226051ceee6Smrg | mipsisa32r6 | mipsisa32r6el \ 1227051ceee6Smrg | mipsisa64 | mipsisa64el \ 1228051ceee6Smrg | mipsisa64r2 | mipsisa64r2el \ 1229051ceee6Smrg | mipsisa64r3 | mipsisa64r3el \ 1230051ceee6Smrg | mipsisa64r5 | mipsisa64r5el \ 1231051ceee6Smrg | mipsisa64r6 | mipsisa64r6el \ 1232051ceee6Smrg | mipsisa64sb1 | mipsisa64sb1el \ 1233051ceee6Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 1234051ceee6Smrg | mipsr5900 | mipsr5900el \ 1235051ceee6Smrg | mipstx39 | mipstx39el \ 1236051ceee6Smrg | mmix \ 1237051ceee6Smrg | mn10200 | mn10300 \ 1238051ceee6Smrg | moxie \ 1239051ceee6Smrg | mt \ 1240051ceee6Smrg | msp430 \ 1241051ceee6Smrg | nds32 | nds32le | nds32be \ 1242051ceee6Smrg | nfp \ 1243051ceee6Smrg | nios | nios2 | nios2eb | nios2el \ 1244051ceee6Smrg | none | np1 | ns16k | ns32k | nvptx \ 1245051ceee6Smrg | open8 \ 1246051ceee6Smrg | or1k* \ 1247051ceee6Smrg | or32 \ 1248051ceee6Smrg | orion \ 1249051ceee6Smrg | picochip \ 1250051ceee6Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1251051ceee6Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1252051ceee6Smrg | pru \ 1253051ceee6Smrg | pyramid \ 1254051ceee6Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1255051ceee6Smrg | rl78 | romp | rs6000 | rx \ 1256051ceee6Smrg | s390 | s390x \ 1257051ceee6Smrg | score \ 1258051ceee6Smrg | sh | shl \ 1259051ceee6Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1260051ceee6Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1261051ceee6Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1262051ceee6Smrg | sparclite \ 1263051ceee6Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1264051ceee6Smrg | spu \ 1265051ceee6Smrg | tahoe \ 1266051ceee6Smrg | thumbv7* \ 1267051ceee6Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1268051ceee6Smrg | tron \ 1269051ceee6Smrg | ubicom32 \ 1270051ceee6Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1271051ceee6Smrg | vax \ 1272051ceee6Smrg | visium \ 1273051ceee6Smrg | w65 \ 1274051ceee6Smrg | wasm32 | wasm64 \ 1275051ceee6Smrg | we32k \ 1276051ceee6Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1277051ceee6Smrg | xstormy16 | xtensa* \ 1278051ceee6Smrg | ymp \ 1279051ceee6Smrg | z8k | z80) 1280051ceee6Smrg ;; 1281051ceee6Smrg 1282051ceee6Smrg *) 1283051ceee6Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1284051ceee6Smrg exit 1 1285051ceee6Smrg ;; 1286051ceee6Smrg esac 128767f05d30Smrg ;; 128867f05d30Smrgesac 128967f05d30Smrg 129067f05d30Smrg# Here we canonicalize certain aliases for manufacturers. 1291051ceee6Smrgcase $vendor in 1292051ceee6Smrg digital*) 1293051ceee6Smrg vendor=dec 129467f05d30Smrg ;; 1295051ceee6Smrg commodore*) 1296051ceee6Smrg vendor=cbm 129767f05d30Smrg ;; 129867f05d30Smrg *) 129967f05d30Smrg ;; 130067f05d30Smrgesac 130167f05d30Smrg 130267f05d30Smrg# Decode manufacturer-specific aliases for certain operating systems. 130367f05d30Smrg 1304051ceee6Smrgif test x$basic_os != x 130567f05d30Smrgthen 1306051ceee6Smrg 1307051ceee6Smrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 1308051ceee6Smrg# set os. 1309051ceee6Smrgcase $basic_os in 1310051ceee6Smrg gnu/linux*) 1311051ceee6Smrg kernel=linux 1312051ceee6Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1313051ceee6Smrg ;; 1314051ceee6Smrg os2-emx) 1315051ceee6Smrg kernel=os2 1316051ceee6Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1317051ceee6Smrg ;; 1318051ceee6Smrg nto-qnx*) 1319051ceee6Smrg kernel=nto 1320051ceee6Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1321051ceee6Smrg ;; 1322051ceee6Smrg *-*) 1323051ceee6Smrg # shellcheck disable=SC2162 1324051ceee6Smrg saved_IFS=$IFS 1325051ceee6Smrg IFS="-" read kernel os <<EOF 1326051ceee6Smrg$basic_os 1327051ceee6SmrgEOF 1328051ceee6Smrg IFS=$saved_IFS 1329051ceee6Smrg ;; 1330051ceee6Smrg # Default OS when just kernel was specified 1331051ceee6Smrg nto*) 1332051ceee6Smrg kernel=nto 1333051ceee6Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1334051ceee6Smrg ;; 1335051ceee6Smrg linux*) 1336051ceee6Smrg kernel=linux 1337051ceee6Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1338051ceee6Smrg ;; 1339051ceee6Smrg *) 1340051ceee6Smrg kernel= 1341051ceee6Smrg os=$basic_os 1342051ceee6Smrg ;; 1343051ceee6Smrgesac 1344051ceee6Smrg 1345051ceee6Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1346051ceee6Smrg# etc.) 134767f05d30Smrgcase $os in 1348e90eff46Smrg # First match some system type aliases that might get confused 1349e90eff46Smrg # with valid system types. 1350051ceee6Smrg # solaris* is a basic system type, with this one exception. 1351051ceee6Smrg auroraux) 1352051ceee6Smrg os=auroraux 1353fffe5102Smrg ;; 1354051ceee6Smrg bluegene*) 1355051ceee6Smrg os=cnk 135667f05d30Smrg ;; 1357051ceee6Smrg solaris1 | solaris1.*) 1358051ceee6Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 135967f05d30Smrg ;; 1360051ceee6Smrg solaris) 1361051ceee6Smrg os=solaris2 136267f05d30Smrg ;; 1363051ceee6Smrg unixware*) 1364051ceee6Smrg os=sysv4.2uw 136567f05d30Smrg ;; 1366e90eff46Smrg # es1800 is here to avoid being matched by es* (a different OS) 1367051ceee6Smrg es1800*) 1368051ceee6Smrg os=ose 1369e90eff46Smrg ;; 1370051ceee6Smrg # Some version numbers need modification 1371051ceee6Smrg chorusos*) 1372051ceee6Smrg os=chorusos 137367f05d30Smrg ;; 1374051ceee6Smrg isc) 1375051ceee6Smrg os=isc2.2 137667f05d30Smrg ;; 1377051ceee6Smrg sco6) 1378051ceee6Smrg os=sco5v6 137967f05d30Smrg ;; 1380051ceee6Smrg sco5) 1381051ceee6Smrg os=sco3.2v5 138267f05d30Smrg ;; 1383051ceee6Smrg sco4) 1384051ceee6Smrg os=sco3.2v4 138567f05d30Smrg ;; 1386051ceee6Smrg sco3.2.[4-9]*) 1387051ceee6Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1388fffe5102Smrg ;; 1389051ceee6Smrg sco*v* | scout) 1390051ceee6Smrg # Don't match below 139167f05d30Smrg ;; 1392051ceee6Smrg sco*) 1393051ceee6Smrg os=sco3.2v2 139467f05d30Smrg ;; 1395051ceee6Smrg psos*) 1396051ceee6Smrg os=psos 139767f05d30Smrg ;; 1398051ceee6Smrg qnx*) 1399051ceee6Smrg os=qnx 140067f05d30Smrg ;; 1401051ceee6Smrg hiux*) 1402051ceee6Smrg os=hiuxwe2 1403fffe5102Smrg ;; 1404051ceee6Smrg lynx*178) 1405051ceee6Smrg os=lynxos178 140667f05d30Smrg ;; 1407051ceee6Smrg lynx*5) 1408051ceee6Smrg os=lynxos5 140967f05d30Smrg ;; 1410051ceee6Smrg lynxos*) 1411051ceee6Smrg # don't get caught up in next wildcard 141267f05d30Smrg ;; 1413051ceee6Smrg lynx*) 1414051ceee6Smrg os=lynxos 141567f05d30Smrg ;; 1416051ceee6Smrg mac[0-9]*) 1417051ceee6Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 141867f05d30Smrg ;; 1419051ceee6Smrg opened*) 1420051ceee6Smrg os=openedition 1421fffe5102Smrg ;; 1422051ceee6Smrg os400*) 1423051ceee6Smrg os=os400 142467f05d30Smrg ;; 1425051ceee6Smrg sunos5*) 1426051ceee6Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 142767f05d30Smrg ;; 1428051ceee6Smrg sunos6*) 1429051ceee6Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 143067f05d30Smrg ;; 1431051ceee6Smrg wince*) 1432051ceee6Smrg os=wince 143367f05d30Smrg ;; 1434051ceee6Smrg utek*) 1435051ceee6Smrg os=bsd 143667f05d30Smrg ;; 1437051ceee6Smrg dynix*) 1438051ceee6Smrg os=bsd 143967f05d30Smrg ;; 1440051ceee6Smrg acis*) 1441051ceee6Smrg os=aos 144267f05d30Smrg ;; 1443051ceee6Smrg atheos*) 1444051ceee6Smrg os=atheos 1445fffe5102Smrg ;; 1446051ceee6Smrg syllable*) 1447051ceee6Smrg os=syllable 1448051ceee6Smrg ;; 1449051ceee6Smrg 386bsd) 1450051ceee6Smrg os=bsd 1451051ceee6Smrg ;; 1452051ceee6Smrg ctix* | uts*) 1453051ceee6Smrg os=sysv 1454051ceee6Smrg ;; 1455051ceee6Smrg nova*) 1456051ceee6Smrg os=rtmk-nova 1457051ceee6Smrg ;; 1458051ceee6Smrg ns2) 1459051ceee6Smrg os=nextstep2 1460051ceee6Smrg ;; 1461051ceee6Smrg # Preserve the version number of sinix5. 1462051ceee6Smrg sinix5.*) 1463051ceee6Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 146467f05d30Smrg ;; 1465051ceee6Smrg sinix*) 1466051ceee6Smrg os=sysv4 146767f05d30Smrg ;; 1468051ceee6Smrg tpf*) 1469051ceee6Smrg os=tpf 147067f05d30Smrg ;; 1471051ceee6Smrg triton*) 1472051ceee6Smrg os=sysv3 147367f05d30Smrg ;; 1474051ceee6Smrg oss*) 1475051ceee6Smrg os=sysv3 147667f05d30Smrg ;; 1477051ceee6Smrg svr4*) 1478051ceee6Smrg os=sysv4 147967f05d30Smrg ;; 1480051ceee6Smrg svr3) 1481051ceee6Smrg os=sysv3 148267f05d30Smrg ;; 1483051ceee6Smrg sysvr4) 1484051ceee6Smrg os=sysv4 148567f05d30Smrg ;; 1486051ceee6Smrg ose*) 1487051ceee6Smrg os=ose 1488fffe5102Smrg ;; 1489051ceee6Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1490051ceee6Smrg os=mint 1491fffe5102Smrg ;; 1492051ceee6Smrg dicos*) 1493051ceee6Smrg os=dicos 1494051ceee6Smrg ;; 1495051ceee6Smrg pikeos*) 1496e90eff46Smrg # Until real need of OS specific support for 1497e90eff46Smrg # particular features comes up, bare metal 1498e90eff46Smrg # configurations are quite functional. 1499051ceee6Smrg case $cpu in 1500e90eff46Smrg arm*) 1501051ceee6Smrg os=eabi 1502e90eff46Smrg ;; 1503e90eff46Smrg *) 1504051ceee6Smrg os=elf 1505e90eff46Smrg ;; 1506e90eff46Smrg esac 1507e90eff46Smrg ;; 150867f05d30Smrg *) 1509051ceee6Smrg # No normalization, but not necessarily accepted, that comes below. 151067f05d30Smrg ;; 151167f05d30Smrgesac 1512051ceee6Smrg 151367f05d30Smrgelse 151467f05d30Smrg 151567f05d30Smrg# Here we handle the default operating systems that come with various machines. 151667f05d30Smrg# The value should be what the vendor currently ships out the door with their 151767f05d30Smrg# machine or put another way, the most popular os provided with the machine. 151867f05d30Smrg 151967f05d30Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 152067f05d30Smrg# "-sun"), then you have to tell the case statement up towards the top 152167f05d30Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 152267f05d30Smrg# will signal an error saying that MANUFACTURER isn't an operating 152367f05d30Smrg# system, and we'll never get to this point. 152467f05d30Smrg 1525051ceee6Smrgkernel= 1526051ceee6Smrgcase $cpu-$vendor in 15276dbd43aaSmrg score-*) 1528051ceee6Smrg os=elf 1529fffe5102Smrg ;; 15306dbd43aaSmrg spu-*) 1531051ceee6Smrg os=elf 1532fffe5102Smrg ;; 153367f05d30Smrg *-acorn) 1534051ceee6Smrg os=riscix1.2 153567f05d30Smrg ;; 153667f05d30Smrg arm*-rebel) 1537051ceee6Smrg kernel=linux 1538051ceee6Smrg os=gnu 153967f05d30Smrg ;; 154067f05d30Smrg arm*-semi) 1541051ceee6Smrg os=aout 154267f05d30Smrg ;; 15436dbd43aaSmrg c4x-* | tic4x-*) 1544051ceee6Smrg os=coff 154567f05d30Smrg ;; 1546e90eff46Smrg c8051-*) 1547051ceee6Smrg os=elf 1548051ceee6Smrg ;; 1549051ceee6Smrg clipper-intergraph) 1550051ceee6Smrg os=clix 1551e90eff46Smrg ;; 1552e90eff46Smrg hexagon-*) 1553051ceee6Smrg os=elf 1554e90eff46Smrg ;; 1555fc51f767Smrg tic54x-*) 1556051ceee6Smrg os=coff 1557fc51f767Smrg ;; 1558fc51f767Smrg tic55x-*) 1559051ceee6Smrg os=coff 1560fc51f767Smrg ;; 1561fc51f767Smrg tic6x-*) 1562051ceee6Smrg os=coff 1563fc51f767Smrg ;; 156467f05d30Smrg # This must come before the *-dec entry. 156567f05d30Smrg pdp10-*) 1566051ceee6Smrg os=tops20 156767f05d30Smrg ;; 156867f05d30Smrg pdp11-*) 1569051ceee6Smrg os=none 157067f05d30Smrg ;; 157167f05d30Smrg *-dec | vax-*) 1572051ceee6Smrg os=ultrix4.2 157367f05d30Smrg ;; 157467f05d30Smrg m68*-apollo) 1575051ceee6Smrg os=domain 157667f05d30Smrg ;; 157767f05d30Smrg i386-sun) 1578051ceee6Smrg os=sunos4.0.2 157967f05d30Smrg ;; 158067f05d30Smrg m68000-sun) 1581051ceee6Smrg os=sunos3 158267f05d30Smrg ;; 158367f05d30Smrg m68*-cisco) 1584051ceee6Smrg os=aout 158567f05d30Smrg ;; 15866dbd43aaSmrg mep-*) 1587051ceee6Smrg os=elf 1588fffe5102Smrg ;; 158967f05d30Smrg mips*-cisco) 1590051ceee6Smrg os=elf 159167f05d30Smrg ;; 159267f05d30Smrg mips*-*) 1593051ceee6Smrg os=elf 159467f05d30Smrg ;; 159567f05d30Smrg or32-*) 1596051ceee6Smrg os=coff 159767f05d30Smrg ;; 159867f05d30Smrg *-tti) # must be before sparc entry or we get the wrong os. 1599051ceee6Smrg os=sysv3 160067f05d30Smrg ;; 160167f05d30Smrg sparc-* | *-sun) 1602051ceee6Smrg os=sunos4.1.1 160367f05d30Smrg ;; 1604e90eff46Smrg pru-*) 1605051ceee6Smrg os=elf 1606e90eff46Smrg ;; 160767f05d30Smrg *-be) 1608051ceee6Smrg os=beos 160967f05d30Smrg ;; 161067f05d30Smrg *-ibm) 1611051ceee6Smrg os=aix 161267f05d30Smrg ;; 16136dbd43aaSmrg *-knuth) 1614051ceee6Smrg os=mmixware 1615fffe5102Smrg ;; 161667f05d30Smrg *-wec) 1617051ceee6Smrg os=proelf 161867f05d30Smrg ;; 161967f05d30Smrg *-winbond) 1620051ceee6Smrg os=proelf 162167f05d30Smrg ;; 162267f05d30Smrg *-oki) 1623051ceee6Smrg os=proelf 162467f05d30Smrg ;; 162567f05d30Smrg *-hp) 1626051ceee6Smrg os=hpux 162767f05d30Smrg ;; 162867f05d30Smrg *-hitachi) 1629051ceee6Smrg os=hiux 163067f05d30Smrg ;; 163167f05d30Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1632051ceee6Smrg os=sysv 163367f05d30Smrg ;; 163467f05d30Smrg *-cbm) 1635051ceee6Smrg os=amigaos 163667f05d30Smrg ;; 163767f05d30Smrg *-dg) 1638051ceee6Smrg os=dgux 163967f05d30Smrg ;; 164067f05d30Smrg *-dolphin) 1641051ceee6Smrg os=sysv3 164267f05d30Smrg ;; 164367f05d30Smrg m68k-ccur) 1644051ceee6Smrg os=rtu 164567f05d30Smrg ;; 164667f05d30Smrg m88k-omron*) 1647051ceee6Smrg os=luna 164867f05d30Smrg ;; 1649e90eff46Smrg *-next) 1650051ceee6Smrg os=nextstep 165167f05d30Smrg ;; 165267f05d30Smrg *-sequent) 1653051ceee6Smrg os=ptx 165467f05d30Smrg ;; 165567f05d30Smrg *-crds) 1656051ceee6Smrg os=unos 165767f05d30Smrg ;; 165867f05d30Smrg *-ns) 1659051ceee6Smrg os=genix 166067f05d30Smrg ;; 166167f05d30Smrg i370-*) 1662051ceee6Smrg os=mvs 166367f05d30Smrg ;; 166467f05d30Smrg *-gould) 1665051ceee6Smrg os=sysv 166667f05d30Smrg ;; 166767f05d30Smrg *-highlevel) 1668051ceee6Smrg os=bsd 166967f05d30Smrg ;; 167067f05d30Smrg *-encore) 1671051ceee6Smrg os=bsd 167267f05d30Smrg ;; 167367f05d30Smrg *-sgi) 1674051ceee6Smrg os=irix 167567f05d30Smrg ;; 167667f05d30Smrg *-siemens) 1677051ceee6Smrg os=sysv4 167867f05d30Smrg ;; 167967f05d30Smrg *-masscomp) 1680051ceee6Smrg os=rtu 168167f05d30Smrg ;; 168267f05d30Smrg f30[01]-fujitsu | f700-fujitsu) 1683051ceee6Smrg os=uxpv 168467f05d30Smrg ;; 168567f05d30Smrg *-rom68k) 1686051ceee6Smrg os=coff 168767f05d30Smrg ;; 168867f05d30Smrg *-*bug) 1689051ceee6Smrg os=coff 169067f05d30Smrg ;; 169167f05d30Smrg *-apple) 1692051ceee6Smrg os=macos 169367f05d30Smrg ;; 169467f05d30Smrg *-atari*) 1695051ceee6Smrg os=mint 1696051ceee6Smrg ;; 1697051ceee6Smrg *-wrs) 1698051ceee6Smrg os=vxworks 169967f05d30Smrg ;; 170067f05d30Smrg *) 1701051ceee6Smrg os=none 170267f05d30Smrg ;; 170367f05d30Smrgesac 1704051ceee6Smrg 170567f05d30Smrgfi 170667f05d30Smrg 1707051ceee6Smrg# Now, validate our (potentially fixed-up) OS. 1708051ceee6Smrgcase $os in 1709051ceee6Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1710051ceee6Smrg musl* | newlib* | relibc* | uclibc*) 1711051ceee6Smrg ;; 1712051ceee6Smrg # Likewise for "kernel-abi" 1713051ceee6Smrg eabi* | gnueabi*) 1714051ceee6Smrg ;; 1715051ceee6Smrg # VxWorks passes extra cpu info in the 4th filed. 1716051ceee6Smrg simlinux | simwindows | spe) 1717051ceee6Smrg ;; 1718051ceee6Smrg # Now accept the basic system types. 1719051ceee6Smrg # The portable systems comes first. 1720051ceee6Smrg # Each alternative MUST end in a * to match a version number. 1721051ceee6Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1722051ceee6Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1723051ceee6Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1724051ceee6Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1725051ceee6Smrg | hiux* | abug | nacl* | netware* | windows* \ 1726051ceee6Smrg | os9* | macos* | osx* | ios* \ 1727051ceee6Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1728051ceee6Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1729051ceee6Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1730051ceee6Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1731051ceee6Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1732051ceee6Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1733051ceee6Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1734051ceee6Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1735051ceee6Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1736051ceee6Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1737051ceee6Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1738051ceee6Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1739051ceee6Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1740051ceee6Smrg | midipix* | mingw32* | mingw64* | mint* \ 1741051ceee6Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1742051ceee6Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1743051ceee6Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1744051ceee6Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1745051ceee6Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1746051ceee6Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1747051ceee6Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1748051ceee6Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1749051ceee6Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1750051ceee6Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1751051ceee6Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 1752051ceee6Smrg ;; 1753051ceee6Smrg # This one is extra strict with allowed versions 1754051ceee6Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1755051ceee6Smrg # Don't forget version if it is 3.2v4 or newer. 1756051ceee6Smrg ;; 1757051ceee6Smrg none) 1758051ceee6Smrg ;; 1759051ceee6Smrg *) 1760051ceee6Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1761051ceee6Smrg exit 1 1762051ceee6Smrg ;; 1763051ceee6Smrgesac 1764051ceee6Smrg 1765051ceee6Smrg# As a final step for OS-related things, validate the OS-kernel combination 1766051ceee6Smrg# (given a valid OS), if there is a kernel. 1767051ceee6Smrgcase $kernel-$os in 1768051ceee6Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1769051ceee6Smrg | linux-musl* | linux-relibc* | linux-uclibc* ) 1770051ceee6Smrg ;; 1771051ceee6Smrg uclinux-uclibc* ) 1772051ceee6Smrg ;; 1773051ceee6Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 1774051ceee6Smrg # These are just libc implementations, not actual OSes, and thus 1775051ceee6Smrg # require a kernel. 1776051ceee6Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1777051ceee6Smrg exit 1 1778051ceee6Smrg ;; 1779051ceee6Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1780051ceee6Smrg ;; 1781051ceee6Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1782051ceee6Smrg ;; 1783051ceee6Smrg nto-qnx*) 1784051ceee6Smrg ;; 1785051ceee6Smrg os2-emx) 1786051ceee6Smrg ;; 1787051ceee6Smrg *-eabi* | *-gnueabi*) 1788051ceee6Smrg ;; 1789051ceee6Smrg -*) 1790051ceee6Smrg # Blank kernel with real OS is always fine. 1791051ceee6Smrg ;; 1792051ceee6Smrg *-*) 1793051ceee6Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1794051ceee6Smrg exit 1 1795051ceee6Smrg ;; 1796051ceee6Smrgesac 1797051ceee6Smrg 179867f05d30Smrg# Here we handle the case where we know the os, and the CPU type, but not the 179967f05d30Smrg# manufacturer. We pick the logical manufacturer. 1800051ceee6Smrgcase $vendor in 1801051ceee6Smrg unknown) 1802051ceee6Smrg case $cpu-$os in 1803051ceee6Smrg *-riscix*) 180467f05d30Smrg vendor=acorn 180567f05d30Smrg ;; 1806051ceee6Smrg *-sunos*) 180767f05d30Smrg vendor=sun 180867f05d30Smrg ;; 1809051ceee6Smrg *-cnk* | *-aix*) 181067f05d30Smrg vendor=ibm 181167f05d30Smrg ;; 1812051ceee6Smrg *-beos*) 181367f05d30Smrg vendor=be 181467f05d30Smrg ;; 1815051ceee6Smrg *-hpux*) 181667f05d30Smrg vendor=hp 181767f05d30Smrg ;; 1818051ceee6Smrg *-mpeix*) 181967f05d30Smrg vendor=hp 182067f05d30Smrg ;; 1821051ceee6Smrg *-hiux*) 182267f05d30Smrg vendor=hitachi 182367f05d30Smrg ;; 1824051ceee6Smrg *-unos*) 182567f05d30Smrg vendor=crds 182667f05d30Smrg ;; 1827051ceee6Smrg *-dgux*) 182867f05d30Smrg vendor=dg 182967f05d30Smrg ;; 1830051ceee6Smrg *-luna*) 183167f05d30Smrg vendor=omron 183267f05d30Smrg ;; 1833051ceee6Smrg *-genix*) 183467f05d30Smrg vendor=ns 183567f05d30Smrg ;; 1836051ceee6Smrg *-clix*) 1837051ceee6Smrg vendor=intergraph 1838051ceee6Smrg ;; 1839051ceee6Smrg *-mvs* | *-opened*) 1840051ceee6Smrg vendor=ibm 1841051ceee6Smrg ;; 1842051ceee6Smrg *-os400*) 184367f05d30Smrg vendor=ibm 184467f05d30Smrg ;; 1845051ceee6Smrg s390-* | s390x-*) 1846fffe5102Smrg vendor=ibm 1847fffe5102Smrg ;; 1848051ceee6Smrg *-ptx*) 184967f05d30Smrg vendor=sequent 185067f05d30Smrg ;; 1851051ceee6Smrg *-tpf*) 1852fffe5102Smrg vendor=ibm 1853fffe5102Smrg ;; 1854051ceee6Smrg *-vxsim* | *-vxworks* | *-windiss*) 185567f05d30Smrg vendor=wrs 185667f05d30Smrg ;; 1857051ceee6Smrg *-aux*) 185867f05d30Smrg vendor=apple 185967f05d30Smrg ;; 1860051ceee6Smrg *-hms*) 186167f05d30Smrg vendor=hitachi 186267f05d30Smrg ;; 1863051ceee6Smrg *-mpw* | *-macos*) 186467f05d30Smrg vendor=apple 186567f05d30Smrg ;; 1866051ceee6Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 186767f05d30Smrg vendor=atari 186867f05d30Smrg ;; 1869051ceee6Smrg *-vos*) 187067f05d30Smrg vendor=stratus 187167f05d30Smrg ;; 187267f05d30Smrg esac 187367f05d30Smrg ;; 187467f05d30Smrgesac 187567f05d30Smrg 1876051ceee6Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1877fffe5102Smrgexit 187867f05d30Smrg 187967f05d30Smrg# Local variables: 1880051ceee6Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 188167f05d30Smrg# time-stamp-start: "timestamp='" 188267f05d30Smrg# time-stamp-format: "%:y-%02m-%02d" 188367f05d30Smrg# time-stamp-end: "'" 188467f05d30Smrg# End: 1885