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