1366095Scy#! /bin/sh 2238106Sdes# Configuration validation subroutine script. 3369939Sgit2svn# Copyright 1992-2021 Free Software Foundation, Inc. 4238106Sdes 5369939Sgit2svntimestamp='2021-01-08' 6238106Sdes 7276605Sdes# This file is free software; you can redistribute it and/or modify it 8276605Sdes# under the terms of the GNU General Public License as published by 9276605Sdes# the Free Software Foundation; either version 3 of the License, or 10238106Sdes# (at your option) any later version. 11238106Sdes# 12276605Sdes# This program is distributed in the hope that it will be useful, but 13276605Sdes# WITHOUT ANY WARRANTY; without even the implied warranty of 14276605Sdes# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15276605Sdes# General Public License for more details. 16238106Sdes# 17238106Sdes# You should have received a copy of the GNU General Public License 18366095Scy# along with this program; if not, see <https://www.gnu.org/licenses/>. 19238106Sdes# 20238106Sdes# As a special exception to the GNU General Public License, if you 21238106Sdes# distribute this file as part of a program that contains a 22238106Sdes# configuration script generated by Autoconf, you may include it under 23276605Sdes# the same distribution terms that you use for the rest of that 24276605Sdes# program. This Exception is an additional permission under section 7 25276605Sdes# of the GNU General Public License, version 3 ("GPLv3"). 26238106Sdes 27238106Sdes 28356345Scy# Please send patches to <config-patches@gnu.org>. 29238106Sdes# 30238106Sdes# Configuration subroutine to validate and canonicalize a configuration type. 31238106Sdes# Supply the specified configuration type as an argument. 32238106Sdes# If it is invalid, we print an error message on stderr and exit with code 1. 33238106Sdes# Otherwise, we print the canonical config type on stdout and succeed. 34238106Sdes 35238106Sdes# You can get the latest version of this script from: 36368693Scy# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 37238106Sdes 38238106Sdes# This file is supposed to be the same for all GNU packages 39238106Sdes# and recognize all the CPU types, system types and aliases 40238106Sdes# that are meaningful with *any* GNU software. 41238106Sdes# Each package is responsible for reporting which valid configurations 42238106Sdes# it does not support. The user should be able to distinguish 43238106Sdes# a failure to support a valid configuration from a meaningless 44238106Sdes# configuration. 45238106Sdes 46238106Sdes# The goal of this file is to map all the various variations of a given 47238106Sdes# machine specification into a single specification in the form: 48238106Sdes# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 49238106Sdes# or in some cases, the newer four-part form: 50238106Sdes# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 51238106Sdes# It is wrong to echo any other type of specification. 52238106Sdes 53368693Scyme=$(echo "$0" | sed -e 's,.*/,,') 54238106Sdes 55238106Sdesusage="\ 56356345ScyUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 57238106Sdes 58238106SdesCanonicalize a configuration name. 59238106Sdes 60366095ScyOptions: 61238106Sdes -h, --help print this help, then exit 62238106Sdes -t, --time-stamp print date of last modification, then exit 63238106Sdes -v, --version print version number, then exit 64238106Sdes 65238106SdesReport bugs and patches to <config-patches@gnu.org>." 66238106Sdes 67238106Sdesversion="\ 68238106SdesGNU config.sub ($timestamp) 69238106Sdes 70369939Sgit2svnCopyright 1992-2021 Free Software Foundation, Inc. 71238106Sdes 72238106SdesThis is free software; see the source for copying conditions. There is NO 73238106Sdeswarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 74238106Sdes 75238106Sdeshelp=" 76238106SdesTry \`$me --help' for more information." 77238106Sdes 78238106Sdes# Parse command line 79238106Sdeswhile test $# -gt 0 ; do 80238106Sdes case $1 in 81238106Sdes --time-stamp | --time* | -t ) 82238106Sdes echo "$timestamp" ; exit ;; 83238106Sdes --version | -v ) 84238106Sdes echo "$version" ; exit ;; 85238106Sdes --help | --h* | -h ) 86238106Sdes echo "$usage"; exit ;; 87238106Sdes -- ) # Stop option processing 88238106Sdes shift; break ;; 89238106Sdes - ) # Use stdin as input. 90238106Sdes break ;; 91238106Sdes -* ) 92366095Scy echo "$me: invalid option $1$help" >&2 93238106Sdes exit 1 ;; 94238106Sdes 95238106Sdes *local*) 96238106Sdes # First pass through any local machine types. 97366095Scy echo "$1" 98238106Sdes exit ;; 99238106Sdes 100238106Sdes * ) 101238106Sdes break ;; 102238106Sdes esac 103238106Sdesdone 104238106Sdes 105238106Sdescase $# in 106238106Sdes 0) echo "$me: missing argument$help" >&2 107238106Sdes exit 1;; 108238106Sdes 1) ;; 109238106Sdes *) echo "$me: too many arguments$help" >&2 110238106Sdes exit 1;; 111238106Sdesesac 112238106Sdes 113366095Scy# Split fields of configuration type 114366095Scy# shellcheck disable=SC2162 115366095ScyIFS="-" read field1 field2 field3 field4 <<EOF 116366095Scy$1 117366095ScyEOF 118238106Sdes 119366095Scy# Separate into logical components for further validation 120366095Scycase $1 in 121366095Scy *-*-*-*-*) 122366095Scy echo Invalid configuration \`"$1"\': more than four components >&2 123366095Scy exit 1 124238106Sdes ;; 125366095Scy *-*-*-*) 126366095Scy basic_machine=$field1-$field2 127366095Scy basic_os=$field3-$field4 128238106Sdes ;; 129366095Scy *-*-*) 130366095Scy # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 131366095Scy # parts 132366095Scy maybe_os=$field2-$field3 133366095Scy case $maybe_os in 134366095Scy nto-qnx* | linux-* | uclinux-uclibc* \ 135366095Scy | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 136366095Scy | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 137366095Scy | storm-chaos* | os2-emx* | rtmk-nova*) 138366095Scy basic_machine=$field1 139366095Scy basic_os=$maybe_os 140366095Scy ;; 141366095Scy android-linux) 142366095Scy basic_machine=$field1-unknown 143366095Scy basic_os=linux-android 144366095Scy ;; 145366095Scy *) 146366095Scy basic_machine=$field1-$field2 147366095Scy basic_os=$field3 148366095Scy ;; 149366095Scy esac 150238106Sdes ;; 151366095Scy *-*) 152366095Scy # A lone config we happen to match not fitting any pattern 153366095Scy case $field1-$field2 in 154366095Scy decstation-3100) 155366095Scy basic_machine=mips-dec 156366095Scy basic_os= 157366095Scy ;; 158366095Scy *-*) 159366095Scy # Second component is usually, but not always the OS 160366095Scy case $field2 in 161366095Scy # Prevent following clause from handling this valid os 162366095Scy sun*os*) 163366095Scy basic_machine=$field1 164366095Scy basic_os=$field2 165366095Scy ;; 166366095Scy # Manufacturers 167366095Scy dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 168366095Scy | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 169366095Scy | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 170366095Scy | convergent* | ncr* | news | 32* | 3600* | 3100* \ 171366095Scy | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 172366095Scy | ultra | tti* | harris | dolphin | highlevel | gould \ 173366095Scy | cbm | ns | masscomp | apple | axis | knuth | cray \ 174366095Scy | microblaze* | sim | cisco \ 175366095Scy | oki | wec | wrs | winbond) 176366095Scy basic_machine=$field1-$field2 177366095Scy basic_os= 178366095Scy ;; 179366095Scy *) 180366095Scy basic_machine=$field1 181366095Scy basic_os=$field2 182366095Scy ;; 183366095Scy esac 184366095Scy ;; 185366095Scy esac 186238106Sdes ;; 187366095Scy *) 188366095Scy # Convert single-component short-hands not valid as part of 189366095Scy # multi-component configurations. 190366095Scy case $field1 in 191366095Scy 386bsd) 192366095Scy basic_machine=i386-pc 193366095Scy basic_os=bsd 194366095Scy ;; 195366095Scy a29khif) 196366095Scy basic_machine=a29k-amd 197366095Scy basic_os=udi 198366095Scy ;; 199366095Scy adobe68k) 200366095Scy basic_machine=m68010-adobe 201366095Scy basic_os=scout 202366095Scy ;; 203366095Scy alliant) 204366095Scy basic_machine=fx80-alliant 205366095Scy basic_os= 206366095Scy ;; 207366095Scy altos | altos3068) 208366095Scy basic_machine=m68k-altos 209366095Scy basic_os= 210366095Scy ;; 211366095Scy am29k) 212366095Scy basic_machine=a29k-none 213366095Scy basic_os=bsd 214366095Scy ;; 215366095Scy amdahl) 216366095Scy basic_machine=580-amdahl 217366095Scy basic_os=sysv 218366095Scy ;; 219366095Scy amiga) 220366095Scy basic_machine=m68k-unknown 221366095Scy basic_os= 222366095Scy ;; 223366095Scy amigaos | amigados) 224366095Scy basic_machine=m68k-unknown 225366095Scy basic_os=amigaos 226366095Scy ;; 227366095Scy amigaunix | amix) 228366095Scy basic_machine=m68k-unknown 229366095Scy basic_os=sysv4 230366095Scy ;; 231366095Scy apollo68) 232366095Scy basic_machine=m68k-apollo 233366095Scy basic_os=sysv 234366095Scy ;; 235366095Scy apollo68bsd) 236366095Scy basic_machine=m68k-apollo 237366095Scy basic_os=bsd 238366095Scy ;; 239366095Scy aros) 240366095Scy basic_machine=i386-pc 241366095Scy basic_os=aros 242366095Scy ;; 243366095Scy aux) 244366095Scy basic_machine=m68k-apple 245366095Scy basic_os=aux 246366095Scy ;; 247366095Scy balance) 248366095Scy basic_machine=ns32k-sequent 249366095Scy basic_os=dynix 250366095Scy ;; 251366095Scy blackfin) 252366095Scy basic_machine=bfin-unknown 253366095Scy basic_os=linux 254366095Scy ;; 255366095Scy cegcc) 256366095Scy basic_machine=arm-unknown 257366095Scy basic_os=cegcc 258366095Scy ;; 259366095Scy convex-c1) 260366095Scy basic_machine=c1-convex 261366095Scy basic_os=bsd 262366095Scy ;; 263366095Scy convex-c2) 264366095Scy basic_machine=c2-convex 265366095Scy basic_os=bsd 266366095Scy ;; 267366095Scy convex-c32) 268366095Scy basic_machine=c32-convex 269366095Scy basic_os=bsd 270366095Scy ;; 271366095Scy convex-c34) 272366095Scy basic_machine=c34-convex 273366095Scy basic_os=bsd 274366095Scy ;; 275366095Scy convex-c38) 276366095Scy basic_machine=c38-convex 277366095Scy basic_os=bsd 278366095Scy ;; 279366095Scy cray) 280366095Scy basic_machine=j90-cray 281366095Scy basic_os=unicos 282366095Scy ;; 283366095Scy crds | unos) 284366095Scy basic_machine=m68k-crds 285366095Scy basic_os= 286366095Scy ;; 287366095Scy da30) 288366095Scy basic_machine=m68k-da30 289366095Scy basic_os= 290366095Scy ;; 291366095Scy decstation | pmax | pmin | dec3100 | decstatn) 292366095Scy basic_machine=mips-dec 293366095Scy basic_os= 294366095Scy ;; 295366095Scy delta88) 296366095Scy basic_machine=m88k-motorola 297366095Scy basic_os=sysv3 298366095Scy ;; 299366095Scy dicos) 300366095Scy basic_machine=i686-pc 301366095Scy basic_os=dicos 302366095Scy ;; 303366095Scy djgpp) 304366095Scy basic_machine=i586-pc 305366095Scy basic_os=msdosdjgpp 306366095Scy ;; 307366095Scy ebmon29k) 308366095Scy basic_machine=a29k-amd 309366095Scy basic_os=ebmon 310366095Scy ;; 311366095Scy es1800 | OSE68k | ose68k | ose | OSE) 312366095Scy basic_machine=m68k-ericsson 313366095Scy basic_os=ose 314366095Scy ;; 315366095Scy gmicro) 316366095Scy basic_machine=tron-gmicro 317366095Scy basic_os=sysv 318366095Scy ;; 319366095Scy go32) 320366095Scy basic_machine=i386-pc 321366095Scy basic_os=go32 322366095Scy ;; 323366095Scy h8300hms) 324366095Scy basic_machine=h8300-hitachi 325366095Scy basic_os=hms 326366095Scy ;; 327366095Scy h8300xray) 328366095Scy basic_machine=h8300-hitachi 329366095Scy basic_os=xray 330366095Scy ;; 331366095Scy h8500hms) 332366095Scy basic_machine=h8500-hitachi 333366095Scy basic_os=hms 334366095Scy ;; 335366095Scy harris) 336366095Scy basic_machine=m88k-harris 337366095Scy basic_os=sysv3 338366095Scy ;; 339366095Scy hp300 | hp300hpux) 340366095Scy basic_machine=m68k-hp 341366095Scy basic_os=hpux 342366095Scy ;; 343366095Scy hp300bsd) 344366095Scy basic_machine=m68k-hp 345366095Scy basic_os=bsd 346366095Scy ;; 347366095Scy hppaosf) 348366095Scy basic_machine=hppa1.1-hp 349366095Scy basic_os=osf 350366095Scy ;; 351366095Scy hppro) 352366095Scy basic_machine=hppa1.1-hp 353366095Scy basic_os=proelf 354366095Scy ;; 355366095Scy i386mach) 356366095Scy basic_machine=i386-mach 357366095Scy basic_os=mach 358366095Scy ;; 359366095Scy isi68 | isi) 360366095Scy basic_machine=m68k-isi 361366095Scy basic_os=sysv 362366095Scy ;; 363366095Scy m68knommu) 364366095Scy basic_machine=m68k-unknown 365366095Scy basic_os=linux 366366095Scy ;; 367366095Scy magnum | m3230) 368366095Scy basic_machine=mips-mips 369366095Scy basic_os=sysv 370366095Scy ;; 371366095Scy merlin) 372366095Scy basic_machine=ns32k-utek 373366095Scy basic_os=sysv 374366095Scy ;; 375366095Scy mingw64) 376366095Scy basic_machine=x86_64-pc 377366095Scy basic_os=mingw64 378366095Scy ;; 379366095Scy mingw32) 380366095Scy basic_machine=i686-pc 381366095Scy basic_os=mingw32 382366095Scy ;; 383366095Scy mingw32ce) 384366095Scy basic_machine=arm-unknown 385366095Scy basic_os=mingw32ce 386366095Scy ;; 387366095Scy monitor) 388366095Scy basic_machine=m68k-rom68k 389366095Scy basic_os=coff 390366095Scy ;; 391366095Scy morphos) 392366095Scy basic_machine=powerpc-unknown 393366095Scy basic_os=morphos 394366095Scy ;; 395366095Scy moxiebox) 396366095Scy basic_machine=moxie-unknown 397366095Scy basic_os=moxiebox 398366095Scy ;; 399366095Scy msdos) 400366095Scy basic_machine=i386-pc 401366095Scy basic_os=msdos 402366095Scy ;; 403366095Scy msys) 404366095Scy basic_machine=i686-pc 405366095Scy basic_os=msys 406366095Scy ;; 407366095Scy mvs) 408366095Scy basic_machine=i370-ibm 409366095Scy basic_os=mvs 410366095Scy ;; 411366095Scy nacl) 412366095Scy basic_machine=le32-unknown 413366095Scy basic_os=nacl 414366095Scy ;; 415366095Scy ncr3000) 416366095Scy basic_machine=i486-ncr 417366095Scy basic_os=sysv4 418366095Scy ;; 419366095Scy netbsd386) 420366095Scy basic_machine=i386-pc 421366095Scy basic_os=netbsd 422366095Scy ;; 423366095Scy netwinder) 424366095Scy basic_machine=armv4l-rebel 425366095Scy basic_os=linux 426366095Scy ;; 427366095Scy news | news700 | news800 | news900) 428366095Scy basic_machine=m68k-sony 429366095Scy basic_os=newsos 430366095Scy ;; 431366095Scy news1000) 432366095Scy basic_machine=m68030-sony 433366095Scy basic_os=newsos 434366095Scy ;; 435366095Scy necv70) 436366095Scy basic_machine=v70-nec 437366095Scy basic_os=sysv 438366095Scy ;; 439366095Scy nh3000) 440366095Scy basic_machine=m68k-harris 441366095Scy basic_os=cxux 442366095Scy ;; 443366095Scy nh[45]000) 444366095Scy basic_machine=m88k-harris 445366095Scy basic_os=cxux 446366095Scy ;; 447366095Scy nindy960) 448366095Scy basic_machine=i960-intel 449366095Scy basic_os=nindy 450366095Scy ;; 451366095Scy mon960) 452366095Scy basic_machine=i960-intel 453366095Scy basic_os=mon960 454366095Scy ;; 455366095Scy nonstopux) 456366095Scy basic_machine=mips-compaq 457366095Scy basic_os=nonstopux 458366095Scy ;; 459366095Scy os400) 460366095Scy basic_machine=powerpc-ibm 461366095Scy basic_os=os400 462366095Scy ;; 463366095Scy OSE68000 | ose68000) 464366095Scy basic_machine=m68000-ericsson 465366095Scy basic_os=ose 466366095Scy ;; 467366095Scy os68k) 468366095Scy basic_machine=m68k-none 469366095Scy basic_os=os68k 470366095Scy ;; 471366095Scy paragon) 472366095Scy basic_machine=i860-intel 473366095Scy basic_os=osf 474366095Scy ;; 475366095Scy parisc) 476366095Scy basic_machine=hppa-unknown 477366095Scy basic_os=linux 478366095Scy ;; 479366095Scy psp) 480366095Scy basic_machine=mipsallegrexel-sony 481366095Scy basic_os=psp 482366095Scy ;; 483366095Scy pw32) 484366095Scy basic_machine=i586-unknown 485366095Scy basic_os=pw32 486366095Scy ;; 487366095Scy rdos | rdos64) 488366095Scy basic_machine=x86_64-pc 489366095Scy basic_os=rdos 490366095Scy ;; 491366095Scy rdos32) 492366095Scy basic_machine=i386-pc 493366095Scy basic_os=rdos 494366095Scy ;; 495366095Scy rom68k) 496366095Scy basic_machine=m68k-rom68k 497366095Scy basic_os=coff 498366095Scy ;; 499366095Scy sa29200) 500366095Scy basic_machine=a29k-amd 501366095Scy basic_os=udi 502366095Scy ;; 503366095Scy sei) 504366095Scy basic_machine=mips-sei 505366095Scy basic_os=seiux 506366095Scy ;; 507366095Scy sequent) 508366095Scy basic_machine=i386-sequent 509366095Scy basic_os= 510366095Scy ;; 511366095Scy sps7) 512366095Scy basic_machine=m68k-bull 513366095Scy basic_os=sysv2 514366095Scy ;; 515366095Scy st2000) 516366095Scy basic_machine=m68k-tandem 517366095Scy basic_os= 518366095Scy ;; 519366095Scy stratus) 520366095Scy basic_machine=i860-stratus 521366095Scy basic_os=sysv4 522366095Scy ;; 523366095Scy sun2) 524366095Scy basic_machine=m68000-sun 525366095Scy basic_os= 526366095Scy ;; 527366095Scy sun2os3) 528366095Scy basic_machine=m68000-sun 529366095Scy basic_os=sunos3 530366095Scy ;; 531366095Scy sun2os4) 532366095Scy basic_machine=m68000-sun 533366095Scy basic_os=sunos4 534366095Scy ;; 535366095Scy sun3) 536366095Scy basic_machine=m68k-sun 537366095Scy basic_os= 538366095Scy ;; 539366095Scy sun3os3) 540366095Scy basic_machine=m68k-sun 541366095Scy basic_os=sunos3 542366095Scy ;; 543366095Scy sun3os4) 544366095Scy basic_machine=m68k-sun 545366095Scy basic_os=sunos4 546366095Scy ;; 547366095Scy sun4) 548366095Scy basic_machine=sparc-sun 549366095Scy basic_os= 550366095Scy ;; 551366095Scy sun4os3) 552366095Scy basic_machine=sparc-sun 553366095Scy basic_os=sunos3 554366095Scy ;; 555366095Scy sun4os4) 556366095Scy basic_machine=sparc-sun 557366095Scy basic_os=sunos4 558366095Scy ;; 559366095Scy sun4sol2) 560366095Scy basic_machine=sparc-sun 561366095Scy basic_os=solaris2 562366095Scy ;; 563366095Scy sun386 | sun386i | roadrunner) 564366095Scy basic_machine=i386-sun 565366095Scy basic_os= 566366095Scy ;; 567366095Scy sv1) 568366095Scy basic_machine=sv1-cray 569366095Scy basic_os=unicos 570366095Scy ;; 571366095Scy symmetry) 572366095Scy basic_machine=i386-sequent 573366095Scy basic_os=dynix 574366095Scy ;; 575366095Scy t3e) 576366095Scy basic_machine=alphaev5-cray 577366095Scy basic_os=unicos 578366095Scy ;; 579366095Scy t90) 580366095Scy basic_machine=t90-cray 581366095Scy basic_os=unicos 582366095Scy ;; 583366095Scy toad1) 584366095Scy basic_machine=pdp10-xkl 585366095Scy basic_os=tops20 586366095Scy ;; 587366095Scy tpf) 588366095Scy basic_machine=s390x-ibm 589366095Scy basic_os=tpf 590366095Scy ;; 591366095Scy udi29k) 592366095Scy basic_machine=a29k-amd 593366095Scy basic_os=udi 594366095Scy ;; 595366095Scy ultra3) 596366095Scy basic_machine=a29k-nyu 597366095Scy basic_os=sym1 598366095Scy ;; 599366095Scy v810 | necv810) 600366095Scy basic_machine=v810-nec 601366095Scy basic_os=none 602366095Scy ;; 603366095Scy vaxv) 604366095Scy basic_machine=vax-dec 605366095Scy basic_os=sysv 606366095Scy ;; 607366095Scy vms) 608366095Scy basic_machine=vax-dec 609366095Scy basic_os=vms 610366095Scy ;; 611366095Scy vsta) 612366095Scy basic_machine=i386-pc 613366095Scy basic_os=vsta 614366095Scy ;; 615366095Scy vxworks960) 616366095Scy basic_machine=i960-wrs 617366095Scy basic_os=vxworks 618366095Scy ;; 619366095Scy vxworks68) 620366095Scy basic_machine=m68k-wrs 621366095Scy basic_os=vxworks 622366095Scy ;; 623366095Scy vxworks29k) 624366095Scy basic_machine=a29k-wrs 625366095Scy basic_os=vxworks 626366095Scy ;; 627366095Scy xbox) 628366095Scy basic_machine=i686-pc 629366095Scy basic_os=mingw32 630366095Scy ;; 631366095Scy ymp) 632366095Scy basic_machine=ymp-cray 633366095Scy basic_os=unicos 634366095Scy ;; 635366095Scy *) 636366095Scy basic_machine=$1 637366095Scy basic_os= 638366095Scy ;; 639366095Scy esac 640238106Sdes ;; 641238106Sdesesac 642238106Sdes 643366095Scy# Decode 1-component or ad-hoc basic machines 644238106Sdescase $basic_machine in 645366095Scy # Here we handle the default manufacturer of certain CPU types. It is in 646366095Scy # some cases the only manufacturer, in others, it is the most popular. 647366095Scy w89k) 648366095Scy cpu=hppa1.1 649366095Scy vendor=winbond 650238106Sdes ;; 651366095Scy op50n) 652366095Scy cpu=hppa1.1 653366095Scy vendor=oki 654249141Sdes ;; 655366095Scy op60c) 656366095Scy cpu=hppa1.1 657366095Scy vendor=oki 658249141Sdes ;; 659366095Scy ibm*) 660366095Scy cpu=i370 661366095Scy vendor=ibm 662249141Sdes ;; 663366095Scy orion105) 664366095Scy cpu=clipper 665366095Scy vendor=highlevel 666356345Scy ;; 667366095Scy mac | mpw | mac-mpw) 668366095Scy cpu=m68k 669366095Scy vendor=apple 670238106Sdes ;; 671366095Scy pmac | pmac-mpw) 672366095Scy cpu=powerpc 673366095Scy vendor=apple 674238106Sdes ;; 675238106Sdes 676238106Sdes # Recognize the various machine names and aliases which stand 677238106Sdes # for a CPU type and a company and sometimes even an OS. 678238106Sdes 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 679366095Scy cpu=m68000 680366095Scy vendor=att 681238106Sdes ;; 682238106Sdes 3b*) 683366095Scy cpu=we32k 684366095Scy vendor=att 685238106Sdes ;; 686238106Sdes bluegene*) 687366095Scy cpu=powerpc 688366095Scy vendor=ibm 689366095Scy basic_os=cnk 690238106Sdes ;; 691238106Sdes decsystem10* | dec10*) 692366095Scy cpu=pdp10 693366095Scy vendor=dec 694366095Scy basic_os=tops10 695238106Sdes ;; 696238106Sdes decsystem20* | dec20*) 697366095Scy cpu=pdp10 698366095Scy vendor=dec 699366095Scy basic_os=tops20 700238106Sdes ;; 701238106Sdes delta | 3300 | motorola-3300 | motorola-delta \ 702238106Sdes | 3300-motorola | delta-motorola) 703366095Scy cpu=m68k 704366095Scy vendor=motorola 705238106Sdes ;; 706366095Scy dpx2*) 707366095Scy cpu=m68k 708366095Scy vendor=bull 709366095Scy basic_os=sysv3 710238106Sdes ;; 711366095Scy encore | umax | mmax) 712366095Scy cpu=ns32k 713366095Scy vendor=encore 714238106Sdes ;; 715238106Sdes elxsi) 716366095Scy cpu=elxsi 717366095Scy vendor=elxsi 718366095Scy basic_os=${basic_os:-bsd} 719238106Sdes ;; 720238106Sdes fx2800) 721366095Scy cpu=i860 722366095Scy vendor=alliant 723238106Sdes ;; 724238106Sdes genix) 725366095Scy cpu=ns32k 726366095Scy vendor=ns 727238106Sdes ;; 728238106Sdes h3050r* | hiux*) 729366095Scy cpu=hppa1.1 730366095Scy vendor=hitachi 731366095Scy basic_os=hiuxwe2 732238106Sdes ;; 733238106Sdes hp3k9[0-9][0-9] | hp9[0-9][0-9]) 734366095Scy cpu=hppa1.0 735366095Scy vendor=hp 736238106Sdes ;; 737238106Sdes hp9k2[0-9][0-9] | hp9k31[0-9]) 738366095Scy cpu=m68000 739366095Scy vendor=hp 740238106Sdes ;; 741238106Sdes hp9k3[2-9][0-9]) 742366095Scy cpu=m68k 743366095Scy vendor=hp 744238106Sdes ;; 745238106Sdes hp9k6[0-9][0-9] | hp6[0-9][0-9]) 746366095Scy cpu=hppa1.0 747366095Scy vendor=hp 748238106Sdes ;; 749238106Sdes hp9k7[0-79][0-9] | hp7[0-79][0-9]) 750366095Scy cpu=hppa1.1 751366095Scy vendor=hp 752238106Sdes ;; 753238106Sdes hp9k78[0-9] | hp78[0-9]) 754238106Sdes # FIXME: really hppa2.0-hp 755366095Scy cpu=hppa1.1 756366095Scy vendor=hp 757238106Sdes ;; 758238106Sdes hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 759238106Sdes # FIXME: really hppa2.0-hp 760366095Scy cpu=hppa1.1 761366095Scy vendor=hp 762238106Sdes ;; 763238106Sdes hp9k8[0-9][13679] | hp8[0-9][13679]) 764366095Scy cpu=hppa1.1 765366095Scy vendor=hp 766238106Sdes ;; 767238106Sdes hp9k8[0-9][0-9] | hp8[0-9][0-9]) 768366095Scy cpu=hppa1.0 769366095Scy vendor=hp 770238106Sdes ;; 771238106Sdes i*86v32) 772368693Scy cpu=$(echo "$1" | sed -e 's/86.*/86/') 773366095Scy vendor=pc 774366095Scy basic_os=sysv32 775238106Sdes ;; 776238106Sdes i*86v4*) 777368693Scy cpu=$(echo "$1" | sed -e 's/86.*/86/') 778366095Scy vendor=pc 779366095Scy basic_os=sysv4 780238106Sdes ;; 781238106Sdes i*86v) 782368693Scy cpu=$(echo "$1" | sed -e 's/86.*/86/') 783366095Scy vendor=pc 784366095Scy basic_os=sysv 785238106Sdes ;; 786238106Sdes i*86sol2) 787368693Scy cpu=$(echo "$1" | sed -e 's/86.*/86/') 788366095Scy vendor=pc 789366095Scy basic_os=solaris2 790238106Sdes ;; 791366095Scy j90 | j90-cray) 792366095Scy cpu=j90 793366095Scy vendor=cray 794366095Scy basic_os=${basic_os:-unicos} 795238106Sdes ;; 796238106Sdes iris | iris4d) 797366095Scy cpu=mips 798366095Scy vendor=sgi 799366095Scy case $basic_os in 800366095Scy irix*) 801238106Sdes ;; 802238106Sdes *) 803366095Scy basic_os=irix4 804238106Sdes ;; 805238106Sdes esac 806238106Sdes ;; 807238106Sdes miniframe) 808366095Scy cpu=m68000 809366095Scy vendor=convergent 810238106Sdes ;; 811366095Scy *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 812366095Scy cpu=m68k 813366095Scy vendor=atari 814366095Scy basic_os=mint 815238106Sdes ;; 816238106Sdes news-3600 | risc-news) 817366095Scy cpu=mips 818366095Scy vendor=sony 819366095Scy basic_os=newsos 820238106Sdes ;; 821366095Scy next | m*-next) 822366095Scy cpu=m68k 823366095Scy vendor=next 824366095Scy case $basic_os in 825366095Scy openstep*) 826366095Scy ;; 827366095Scy nextstep*) 828238106Sdes ;; 829366095Scy ns2*) 830366095Scy basic_os=nextstep2 831238106Sdes ;; 832238106Sdes *) 833366095Scy basic_os=nextstep3 834238106Sdes ;; 835238106Sdes esac 836238106Sdes ;; 837238106Sdes np1) 838366095Scy cpu=np1 839366095Scy vendor=gould 840238106Sdes ;; 841238106Sdes op50n-* | op60c-*) 842366095Scy cpu=hppa1.1 843366095Scy vendor=oki 844366095Scy basic_os=proelf 845238106Sdes ;; 846238106Sdes pa-hitachi) 847366095Scy cpu=hppa1.1 848366095Scy vendor=hitachi 849366095Scy basic_os=hiuxwe2 850238106Sdes ;; 851238106Sdes pbd) 852366095Scy cpu=sparc 853366095Scy vendor=tti 854238106Sdes ;; 855238106Sdes pbb) 856366095Scy cpu=m68k 857366095Scy vendor=tti 858238106Sdes ;; 859366095Scy pc532) 860366095Scy cpu=ns32k 861366095Scy vendor=pc532 862238106Sdes ;; 863238106Sdes pn) 864366095Scy cpu=pn 865366095Scy vendor=gould 866238106Sdes ;; 867366095Scy power) 868366095Scy cpu=power 869366095Scy vendor=ibm 870238106Sdes ;; 871238106Sdes ps2) 872366095Scy cpu=i386 873366095Scy vendor=ibm 874238106Sdes ;; 875238106Sdes rm[46]00) 876366095Scy cpu=mips 877366095Scy vendor=siemens 878238106Sdes ;; 879238106Sdes rtpc | rtpc-*) 880366095Scy cpu=romp 881366095Scy vendor=ibm 882238106Sdes ;; 883366095Scy sde) 884366095Scy cpu=mipsisa32 885366095Scy vendor=sde 886366095Scy basic_os=${basic_os:-elf} 887238106Sdes ;; 888366095Scy simso-wrs) 889366095Scy cpu=sparclite 890366095Scy vendor=wrs 891366095Scy basic_os=vxworks 892238106Sdes ;; 893366095Scy tower | tower-32) 894366095Scy cpu=m68k 895366095Scy vendor=ncr 896238106Sdes ;; 897366095Scy vpp*|vx|vx-*) 898366095Scy cpu=f301 899366095Scy vendor=fujitsu 900238106Sdes ;; 901366095Scy w65) 902366095Scy cpu=w65 903366095Scy vendor=wdc 904238106Sdes ;; 905366095Scy w89k-*) 906366095Scy cpu=hppa1.1 907366095Scy vendor=winbond 908366095Scy basic_os=proelf 909238106Sdes ;; 910366095Scy none) 911366095Scy cpu=none 912366095Scy vendor=none 913238106Sdes ;; 914366095Scy leon|leon[3-9]) 915366095Scy cpu=sparc 916366095Scy vendor=$basic_machine 917238106Sdes ;; 918366095Scy leon-*|leon[3-9]-*) 919366095Scy cpu=sparc 920368693Scy vendor=$(echo "$basic_machine" | sed 's/-.*//') 921361435Scy ;; 922366095Scy 923366095Scy *-*) 924366095Scy # shellcheck disable=SC2162 925366095Scy IFS="-" read cpu vendor <<EOF 926366095Scy$basic_machine 927366095ScyEOF 928238106Sdes ;; 929366095Scy # We use `pc' rather than `unknown' 930366095Scy # because (1) that's what they normally are, and 931366095Scy # (2) the word "unknown" tends to confuse beginning users. 932366095Scy i*86 | x86_64) 933366095Scy cpu=$basic_machine 934366095Scy vendor=pc 935361435Scy ;; 936366095Scy # These rules are duplicated from below for sake of the special case above; 937366095Scy # i.e. things that normalized to x86 arches should also default to "pc" 938366095Scy pc98) 939366095Scy cpu=i386 940366095Scy vendor=pc 941238106Sdes ;; 942366095Scy x64 | amd64) 943366095Scy cpu=x86_64 944366095Scy vendor=pc 945238106Sdes ;; 946366095Scy # Recognize the basic CPU types without company name. 947366095Scy *) 948366095Scy cpu=$basic_machine 949366095Scy vendor=unknown 950238106Sdes ;; 951366095Scyesac 952366095Scy 953366095Scyunset -v basic_machine 954366095Scy 955366095Scy# Decode basic machines in the full and proper CPU-Company form. 956366095Scycase $cpu-$vendor in 957366095Scy # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 958366095Scy # some cases the only manufacturer, in others, it is the most popular. 959366095Scy craynv-unknown) 960366095Scy vendor=cray 961366095Scy basic_os=${basic_os:-unicosmp} 962238106Sdes ;; 963366095Scy c90-unknown | c90-cray) 964366095Scy vendor=cray 965366095Scy basic_os=${Basic_os:-unicos} 966238106Sdes ;; 967366095Scy fx80-unknown) 968366095Scy vendor=alliant 969249141Sdes ;; 970366095Scy romp-unknown) 971366095Scy vendor=ibm 972238106Sdes ;; 973366095Scy mmix-unknown) 974366095Scy vendor=knuth 975238106Sdes ;; 976366095Scy microblaze-unknown | microblazeel-unknown) 977366095Scy vendor=xilinx 978238106Sdes ;; 979366095Scy rs6000-unknown) 980366095Scy vendor=ibm 981238106Sdes ;; 982366095Scy vax-unknown) 983366095Scy vendor=dec 984238106Sdes ;; 985366095Scy pdp11-unknown) 986366095Scy vendor=dec 987238106Sdes ;; 988366095Scy we32k-unknown) 989366095Scy vendor=att 990238106Sdes ;; 991366095Scy cydra-unknown) 992366095Scy vendor=cydrome 993238106Sdes ;; 994366095Scy i370-ibm*) 995366095Scy vendor=ibm 996238106Sdes ;; 997366095Scy orion-unknown) 998366095Scy vendor=highlevel 999238106Sdes ;; 1000366095Scy xps-unknown | xps100-unknown) 1001366095Scy cpu=xps100 1002366095Scy vendor=honeywell 1003238106Sdes ;; 1004366095Scy 1005366095Scy # Here we normalize CPU types with a missing or matching vendor 1006366095Scy dpx20-unknown | dpx20-bull) 1007366095Scy cpu=rs6000 1008366095Scy vendor=bull 1009366095Scy basic_os=${basic_os:-bosx} 1010238106Sdes ;; 1011366095Scy 1012366095Scy # Here we normalize CPU types irrespective of the vendor 1013366095Scy amd64-*) 1014366095Scy cpu=x86_64 1015238106Sdes ;; 1016366095Scy blackfin-*) 1017366095Scy cpu=bfin 1018366095Scy basic_os=linux 1019238106Sdes ;; 1020366095Scy c54x-*) 1021366095Scy cpu=tic54x 1022238106Sdes ;; 1023366095Scy c55x-*) 1024366095Scy cpu=tic55x 1025238106Sdes ;; 1026366095Scy c6x-*) 1027366095Scy cpu=tic6x 1028238106Sdes ;; 1029366095Scy e500v[12]-*) 1030366095Scy cpu=powerpc 1031366095Scy basic_os=${basic_os}"spe" 1032238106Sdes ;; 1033366095Scy mips3*-*) 1034366095Scy cpu=mips64 1035238106Sdes ;; 1036366095Scy ms1-*) 1037366095Scy cpu=mt 1038238106Sdes ;; 1039366095Scy m68knommu-*) 1040366095Scy cpu=m68k 1041366095Scy basic_os=linux 1042238106Sdes ;; 1043366095Scy m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1044366095Scy cpu=s12z 1045238106Sdes ;; 1046366095Scy openrisc-*) 1047366095Scy cpu=or32 1048238106Sdes ;; 1049366095Scy parisc-*) 1050366095Scy cpu=hppa 1051366095Scy basic_os=linux 1052238106Sdes ;; 1053366095Scy pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1054366095Scy cpu=i586 1055238106Sdes ;; 1056366095Scy pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 1057366095Scy cpu=i686 1058238106Sdes ;; 1059366095Scy pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1060366095Scy cpu=i686 1061238106Sdes ;; 1062366095Scy pentium4-*) 1063366095Scy cpu=i786 1064238106Sdes ;; 1065366095Scy pc98-*) 1066366095Scy cpu=i386 1067238106Sdes ;; 1068366095Scy ppc-* | ppcbe-*) 1069366095Scy cpu=powerpc 1070238106Sdes ;; 1071366095Scy ppcle-* | powerpclittle-*) 1072366095Scy cpu=powerpcle 1073238106Sdes ;; 1074366095Scy ppc64-*) 1075366095Scy cpu=powerpc64 1076238106Sdes ;; 1077366095Scy ppc64le-* | powerpc64little-*) 1078366095Scy cpu=powerpc64le 1079238106Sdes ;; 1080366095Scy sb1-*) 1081366095Scy cpu=mipsisa64sb1 1082238106Sdes ;; 1083366095Scy sb1el-*) 1084366095Scy cpu=mipsisa64sb1el 1085249141Sdes ;; 1086366095Scy sh5e[lb]-*) 1087368693Scy cpu=$(echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/') 1088238106Sdes ;; 1089366095Scy spur-*) 1090366095Scy cpu=spur 1091361435Scy ;; 1092366095Scy strongarm-* | thumb-*) 1093366095Scy cpu=arm 1094361435Scy ;; 1095366095Scy tx39-*) 1096366095Scy cpu=mipstx39 1097238106Sdes ;; 1098366095Scy tx39el-*) 1099366095Scy cpu=mipstx39el 1100238106Sdes ;; 1101366095Scy x64-*) 1102366095Scy cpu=x86_64 1103238106Sdes ;; 1104366095Scy xscale-* | xscalee[bl]-*) 1105368693Scy cpu=$(echo "$cpu" | sed 's/^xscale/arm/') 1106238106Sdes ;; 1107366095Scy arm64-*) 1108366095Scy cpu=aarch64 1109238106Sdes ;; 1110366095Scy 1111366095Scy # Recognize the canonical CPU Types that limit and/or modify the 1112366095Scy # company names they are paired with. 1113366095Scy cr16-*) 1114366095Scy basic_os=${basic_os:-elf} 1115238106Sdes ;; 1116366095Scy crisv32-* | etraxfs*-*) 1117366095Scy cpu=crisv32 1118366095Scy vendor=axis 1119238106Sdes ;; 1120366095Scy cris-* | etrax*-*) 1121366095Scy cpu=cris 1122366095Scy vendor=axis 1123238106Sdes ;; 1124366095Scy crx-*) 1125366095Scy basic_os=${basic_os:-elf} 1126361435Scy ;; 1127366095Scy neo-tandem) 1128366095Scy cpu=neo 1129366095Scy vendor=tandem 1130238106Sdes ;; 1131366095Scy nse-tandem) 1132366095Scy cpu=nse 1133366095Scy vendor=tandem 1134238106Sdes ;; 1135366095Scy nsr-tandem) 1136366095Scy cpu=nsr 1137366095Scy vendor=tandem 1138238106Sdes ;; 1139366095Scy nsv-tandem) 1140366095Scy cpu=nsv 1141366095Scy vendor=tandem 1142361435Scy ;; 1143366095Scy nsx-tandem) 1144366095Scy cpu=nsx 1145366095Scy vendor=tandem 1146238106Sdes ;; 1147366095Scy mipsallegrexel-sony) 1148366095Scy cpu=mipsallegrexel 1149366095Scy vendor=sony 1150238106Sdes ;; 1151366095Scy tile*-*) 1152366095Scy basic_os=${basic_os:-linux-gnu} 1153238106Sdes ;; 1154366095Scy 1155238106Sdes *) 1156366095Scy # Recognize the canonical CPU types that are allowed with any 1157366095Scy # company name. 1158366095Scy case $cpu in 1159366095Scy 1750a | 580 \ 1160366095Scy | a29k \ 1161366095Scy | aarch64 | aarch64_be \ 1162366095Scy | abacus \ 1163366095Scy | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1164366095Scy | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1165366095Scy | alphapca5[67] | alpha64pca5[67] \ 1166366095Scy | am33_2.0 \ 1167366095Scy | amdgcn \ 1168366095Scy | arc | arceb \ 1169366095Scy | arm | arm[lb]e | arme[lb] | armv* \ 1170366095Scy | avr | avr32 \ 1171366095Scy | asmjs \ 1172366095Scy | ba \ 1173366095Scy | be32 | be64 \ 1174366095Scy | bfin | bpf | bs2000 \ 1175366095Scy | c[123]* | c30 | [cjt]90 | c4x \ 1176366095Scy | c8051 | clipper | craynv | csky | cydra \ 1177366095Scy | d10v | d30v | dlx | dsp16xx \ 1178366095Scy | e2k | elxsi | epiphany \ 1179366095Scy | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1180366095Scy | h8300 | h8500 \ 1181366095Scy | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1182366095Scy | hexagon \ 1183366095Scy | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1184366095Scy | ip2k | iq2000 \ 1185366095Scy | k1om \ 1186366095Scy | le32 | le64 \ 1187366095Scy | lm32 \ 1188369939Sgit2svn | loongarch32 | loongarch64 | loongarchx32 \ 1189366095Scy | m32c | m32r | m32rle \ 1190366095Scy | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1191366095Scy | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1192366095Scy | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1193366095Scy | microblaze | microblazeel \ 1194366095Scy | mips | mipsbe | mipseb | mipsel | mipsle \ 1195366095Scy | mips16 \ 1196366095Scy | mips64 | mips64eb | mips64el \ 1197366095Scy | mips64octeon | mips64octeonel \ 1198366095Scy | mips64orion | mips64orionel \ 1199366095Scy | mips64r5900 | mips64r5900el \ 1200366095Scy | mips64vr | mips64vrel \ 1201366095Scy | mips64vr4100 | mips64vr4100el \ 1202366095Scy | mips64vr4300 | mips64vr4300el \ 1203366095Scy | mips64vr5000 | mips64vr5000el \ 1204366095Scy | mips64vr5900 | mips64vr5900el \ 1205366095Scy | mipsisa32 | mipsisa32el \ 1206366095Scy | mipsisa32r2 | mipsisa32r2el \ 1207366095Scy | mipsisa32r6 | mipsisa32r6el \ 1208366095Scy | mipsisa64 | mipsisa64el \ 1209366095Scy | mipsisa64r2 | mipsisa64r2el \ 1210366095Scy | mipsisa64r6 | mipsisa64r6el \ 1211366095Scy | mipsisa64sb1 | mipsisa64sb1el \ 1212366095Scy | mipsisa64sr71k | mipsisa64sr71kel \ 1213366095Scy | mipsr5900 | mipsr5900el \ 1214366095Scy | mipstx39 | mipstx39el \ 1215366095Scy | mmix \ 1216366095Scy | mn10200 | mn10300 \ 1217366095Scy | moxie \ 1218366095Scy | mt \ 1219366095Scy | msp430 \ 1220366095Scy | nds32 | nds32le | nds32be \ 1221366095Scy | nfp \ 1222366095Scy | nios | nios2 | nios2eb | nios2el \ 1223366095Scy | none | np1 | ns16k | ns32k | nvptx \ 1224366095Scy | open8 \ 1225366095Scy | or1k* \ 1226366095Scy | or32 \ 1227366095Scy | orion \ 1228366095Scy | picochip \ 1229366095Scy | pdp10 | pdp11 | pj | pjl | pn | power \ 1230366095Scy | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1231366095Scy | pru \ 1232366095Scy | pyramid \ 1233369939Sgit2svn | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1234366095Scy | rl78 | romp | rs6000 | rx \ 1235366095Scy | s390 | s390x \ 1236366095Scy | score \ 1237366095Scy | sh | shl \ 1238366095Scy | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1239366095Scy | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1240366095Scy | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1241366095Scy | sparclite \ 1242366095Scy | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1243366095Scy | spu \ 1244366095Scy | tahoe \ 1245368693Scy | thumbv7* \ 1246366095Scy | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1247366095Scy | tron \ 1248366095Scy | ubicom32 \ 1249366095Scy | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1250366095Scy | vax \ 1251366095Scy | visium \ 1252366095Scy | w65 \ 1253366095Scy | wasm32 | wasm64 \ 1254366095Scy | we32k \ 1255366095Scy | x86 | x86_64 | xc16x | xgate | xps100 \ 1256366095Scy | xstormy16 | xtensa* \ 1257366095Scy | ymp \ 1258366095Scy | z8k | z80) 1259366095Scy ;; 1260366095Scy 1261366095Scy *) 1262366095Scy echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1263366095Scy exit 1 1264366095Scy ;; 1265366095Scy esac 1266238106Sdes ;; 1267238106Sdesesac 1268238106Sdes 1269238106Sdes# Here we canonicalize certain aliases for manufacturers. 1270366095Scycase $vendor in 1271366095Scy digital*) 1272366095Scy vendor=dec 1273238106Sdes ;; 1274366095Scy commodore*) 1275366095Scy vendor=cbm 1276238106Sdes ;; 1277238106Sdes *) 1278238106Sdes ;; 1279238106Sdesesac 1280238106Sdes 1281238106Sdes# Decode manufacturer-specific aliases for certain operating systems. 1282238106Sdes 1283368129Scyif test x$basic_os != x 1284238106Sdesthen 1285366095Scy 1286366095Scy# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 1287366095Scy# set os. 1288366095Scycase $basic_os in 1289366095Scy gnu/linux*) 1290366095Scy kernel=linux 1291368693Scy os=$(echo $basic_os | sed -e 's|gnu/linux|gnu|') 1292238106Sdes ;; 1293368693Scy os2-emx) 1294368693Scy kernel=os2 1295368693Scy os=$(echo $basic_os | sed -e 's|os2-emx|emx|') 1296368693Scy ;; 1297366095Scy nto-qnx*) 1298366095Scy kernel=nto 1299368693Scy os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|') 1300238106Sdes ;; 1301366095Scy *-*) 1302366095Scy # shellcheck disable=SC2162 1303366095Scy IFS="-" read kernel os <<EOF 1304366095Scy$basic_os 1305366095ScyEOF 1306238106Sdes ;; 1307366095Scy # Default OS when just kernel was specified 1308366095Scy nto*) 1309366095Scy kernel=nto 1310368693Scy os=$(echo $basic_os | sed -e 's|nto|qnx|') 1311361435Scy ;; 1312366095Scy linux*) 1313366095Scy kernel=linux 1314368693Scy os=$(echo $basic_os | sed -e 's|linux|gnu|') 1315238106Sdes ;; 1316366095Scy *) 1317366095Scy kernel= 1318366095Scy os=$basic_os 1319238106Sdes ;; 1320366095Scyesac 1321366095Scy 1322366095Scy# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1323366095Scy# etc.) 1324366095Scycase $os in 1325366095Scy # First match some system type aliases that might get confused 1326366095Scy # with valid system types. 1327366095Scy # solaris* is a basic system type, with this one exception. 1328366095Scy auroraux) 1329366095Scy os=auroraux 1330238106Sdes ;; 1331366095Scy bluegene*) 1332366095Scy os=cnk 1333238106Sdes ;; 1334366095Scy solaris1 | solaris1.*) 1335368693Scy os=$(echo $os | sed -e 's|solaris1|sunos4|') 1336238106Sdes ;; 1337366095Scy solaris) 1338366095Scy os=solaris2 1339238106Sdes ;; 1340366095Scy unixware*) 1341366095Scy os=sysv4.2uw 1342238106Sdes ;; 1343366095Scy # es1800 is here to avoid being matched by es* (a different OS) 1344366095Scy es1800*) 1345366095Scy os=ose 1346238106Sdes ;; 1347366095Scy # Some version numbers need modification 1348366095Scy chorusos*) 1349366095Scy os=chorusos 1350238106Sdes ;; 1351366095Scy isc) 1352366095Scy os=isc2.2 1353238106Sdes ;; 1354366095Scy sco6) 1355366095Scy os=sco5v6 1356238106Sdes ;; 1357366095Scy sco5) 1358366095Scy os=sco3.2v5 1359238106Sdes ;; 1360366095Scy sco4) 1361366095Scy os=sco3.2v4 1362238106Sdes ;; 1363366095Scy sco3.2.[4-9]*) 1364368693Scy os=$(echo $os | sed -e 's/sco3.2./sco3.2v/') 1365238106Sdes ;; 1366366095Scy sco*v* | scout) 1367366095Scy # Don't match below 1368238106Sdes ;; 1369366095Scy sco*) 1370366095Scy os=sco3.2v2 1371361435Scy ;; 1372366095Scy psos*) 1373366095Scy os=psos 1374361435Scy ;; 1375366095Scy qnx*) 1376368129Scy os=qnx 1377238106Sdes ;; 1378366095Scy hiux*) 1379366095Scy os=hiuxwe2 1380238106Sdes ;; 1381366095Scy lynx*178) 1382366095Scy os=lynxos178 1383238106Sdes ;; 1384366095Scy lynx*5) 1385366095Scy os=lynxos5 1386238106Sdes ;; 1387366095Scy lynxos*) 1388366095Scy # don't get caught up in next wildcard 1389238106Sdes ;; 1390366095Scy lynx*) 1391366095Scy os=lynxos 1392238106Sdes ;; 1393366095Scy mac[0-9]*) 1394368693Scy os=$(echo "$os" | sed -e 's|mac|macos|') 1395238106Sdes ;; 1396366095Scy opened*) 1397366095Scy os=openedition 1398238106Sdes ;; 1399366095Scy os400*) 1400366095Scy os=os400 1401238106Sdes ;; 1402366095Scy sunos5*) 1403368693Scy os=$(echo "$os" | sed -e 's|sunos5|solaris2|') 1404238106Sdes ;; 1405366095Scy sunos6*) 1406368693Scy os=$(echo "$os" | sed -e 's|sunos6|solaris3|') 1407238106Sdes ;; 1408366095Scy wince*) 1409366095Scy os=wince 1410238106Sdes ;; 1411366095Scy utek*) 1412366095Scy os=bsd 1413238106Sdes ;; 1414366095Scy dynix*) 1415366095Scy os=bsd 1416238106Sdes ;; 1417366095Scy acis*) 1418366095Scy os=aos 1419238106Sdes ;; 1420366095Scy atheos*) 1421366095Scy os=atheos 1422238106Sdes ;; 1423366095Scy syllable*) 1424366095Scy os=syllable 1425238106Sdes ;; 1426366095Scy 386bsd) 1427366095Scy os=bsd 1428238106Sdes ;; 1429366095Scy ctix* | uts*) 1430366095Scy os=sysv 1431238106Sdes ;; 1432366095Scy nova*) 1433366095Scy os=rtmk-nova 1434238106Sdes ;; 1435366095Scy ns2) 1436366095Scy os=nextstep2 1437361435Scy ;; 1438366095Scy # Preserve the version number of sinix5. 1439366095Scy sinix5.*) 1440368693Scy os=$(echo $os | sed -e 's|sinix|sysv|') 1441361435Scy ;; 1442366095Scy sinix*) 1443366095Scy os=sysv4 1444238106Sdes ;; 1445366095Scy tpf*) 1446366095Scy os=tpf 1447361435Scy ;; 1448366095Scy triton*) 1449366095Scy os=sysv3 1450238106Sdes ;; 1451366095Scy oss*) 1452366095Scy os=sysv3 1453238106Sdes ;; 1454366095Scy svr4*) 1455366095Scy os=sysv4 1456249141Sdes ;; 1457366095Scy svr3) 1458366095Scy os=sysv3 1459356345Scy ;; 1460366095Scy sysvr4) 1461366095Scy os=sysv4 1462238106Sdes ;; 1463366095Scy ose*) 1464366095Scy os=ose 1465366095Scy ;; 1466366095Scy *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1467366095Scy os=mint 1468366095Scy ;; 1469366095Scy dicos*) 1470366095Scy os=dicos 1471366095Scy ;; 1472366095Scy pikeos*) 1473366095Scy # Until real need of OS specific support for 1474366095Scy # particular features comes up, bare metal 1475366095Scy # configurations are quite functional. 1476366095Scy case $cpu in 1477366095Scy arm*) 1478366095Scy os=eabi 1479366095Scy ;; 1480366095Scy *) 1481366095Scy os=elf 1482366095Scy ;; 1483366095Scy esac 1484366095Scy ;; 1485238106Sdes *) 1486366095Scy # No normalization, but not necessarily accepted, that comes below. 1487238106Sdes ;; 1488238106Sdesesac 1489366095Scy 1490238106Sdeselse 1491238106Sdes 1492238106Sdes# Here we handle the default operating systems that come with various machines. 1493238106Sdes# The value should be what the vendor currently ships out the door with their 1494238106Sdes# machine or put another way, the most popular os provided with the machine. 1495238106Sdes 1496238106Sdes# Note that if you're going to try to match "-MANUFACTURER" here (say, 1497238106Sdes# "-sun"), then you have to tell the case statement up towards the top 1498238106Sdes# that MANUFACTURER isn't an operating system. Otherwise, code above 1499238106Sdes# will signal an error saying that MANUFACTURER isn't an operating 1500238106Sdes# system, and we'll never get to this point. 1501238106Sdes 1502366095Scykernel= 1503366095Scycase $cpu-$vendor in 1504249141Sdes score-*) 1505366095Scy os=elf 1506238106Sdes ;; 1507249141Sdes spu-*) 1508366095Scy os=elf 1509238106Sdes ;; 1510238106Sdes *-acorn) 1511366095Scy os=riscix1.2 1512238106Sdes ;; 1513238106Sdes arm*-rebel) 1514366095Scy kernel=linux 1515366095Scy os=gnu 1516238106Sdes ;; 1517238106Sdes arm*-semi) 1518366095Scy os=aout 1519238106Sdes ;; 1520249141Sdes c4x-* | tic4x-*) 1521366095Scy os=coff 1522238106Sdes ;; 1523276605Sdes c8051-*) 1524366095Scy os=elf 1525276605Sdes ;; 1526366095Scy clipper-intergraph) 1527366095Scy os=clix 1528366095Scy ;; 1529249141Sdes hexagon-*) 1530366095Scy os=elf 1531249141Sdes ;; 1532249141Sdes tic54x-*) 1533366095Scy os=coff 1534249141Sdes ;; 1535249141Sdes tic55x-*) 1536366095Scy os=coff 1537249141Sdes ;; 1538249141Sdes tic6x-*) 1539366095Scy os=coff 1540249141Sdes ;; 1541238106Sdes # This must come before the *-dec entry. 1542238106Sdes pdp10-*) 1543366095Scy os=tops20 1544238106Sdes ;; 1545238106Sdes pdp11-*) 1546366095Scy os=none 1547238106Sdes ;; 1548238106Sdes *-dec | vax-*) 1549366095Scy os=ultrix4.2 1550238106Sdes ;; 1551238106Sdes m68*-apollo) 1552366095Scy os=domain 1553238106Sdes ;; 1554238106Sdes i386-sun) 1555366095Scy os=sunos4.0.2 1556238106Sdes ;; 1557238106Sdes m68000-sun) 1558366095Scy os=sunos3 1559238106Sdes ;; 1560238106Sdes m68*-cisco) 1561366095Scy os=aout 1562238106Sdes ;; 1563249141Sdes mep-*) 1564366095Scy os=elf 1565238106Sdes ;; 1566238106Sdes mips*-cisco) 1567366095Scy os=elf 1568238106Sdes ;; 1569238106Sdes mips*-*) 1570366095Scy os=elf 1571238106Sdes ;; 1572238106Sdes or32-*) 1573366095Scy os=coff 1574238106Sdes ;; 1575238106Sdes *-tti) # must be before sparc entry or we get the wrong os. 1576366095Scy os=sysv3 1577238106Sdes ;; 1578238106Sdes sparc-* | *-sun) 1579366095Scy os=sunos4.1.1 1580238106Sdes ;; 1581366095Scy pru-*) 1582366095Scy os=elf 1583366095Scy ;; 1584238106Sdes *-be) 1585366095Scy os=beos 1586238106Sdes ;; 1587238106Sdes *-ibm) 1588366095Scy os=aix 1589238106Sdes ;; 1590249141Sdes *-knuth) 1591366095Scy os=mmixware 1592238106Sdes ;; 1593238106Sdes *-wec) 1594366095Scy os=proelf 1595238106Sdes ;; 1596238106Sdes *-winbond) 1597366095Scy os=proelf 1598238106Sdes ;; 1599238106Sdes *-oki) 1600366095Scy os=proelf 1601238106Sdes ;; 1602238106Sdes *-hp) 1603366095Scy os=hpux 1604238106Sdes ;; 1605238106Sdes *-hitachi) 1606366095Scy os=hiux 1607238106Sdes ;; 1608238106Sdes i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1609366095Scy os=sysv 1610238106Sdes ;; 1611238106Sdes *-cbm) 1612366095Scy os=amigaos 1613238106Sdes ;; 1614238106Sdes *-dg) 1615366095Scy os=dgux 1616238106Sdes ;; 1617238106Sdes *-dolphin) 1618366095Scy os=sysv3 1619238106Sdes ;; 1620238106Sdes m68k-ccur) 1621366095Scy os=rtu 1622238106Sdes ;; 1623238106Sdes m88k-omron*) 1624366095Scy os=luna 1625238106Sdes ;; 1626366095Scy *-next) 1627366095Scy os=nextstep 1628238106Sdes ;; 1629238106Sdes *-sequent) 1630366095Scy os=ptx 1631238106Sdes ;; 1632238106Sdes *-crds) 1633366095Scy os=unos 1634238106Sdes ;; 1635238106Sdes *-ns) 1636366095Scy os=genix 1637238106Sdes ;; 1638238106Sdes i370-*) 1639366095Scy os=mvs 1640238106Sdes ;; 1641238106Sdes *-gould) 1642366095Scy os=sysv 1643238106Sdes ;; 1644238106Sdes *-highlevel) 1645366095Scy os=bsd 1646238106Sdes ;; 1647238106Sdes *-encore) 1648366095Scy os=bsd 1649238106Sdes ;; 1650238106Sdes *-sgi) 1651366095Scy os=irix 1652238106Sdes ;; 1653238106Sdes *-siemens) 1654366095Scy os=sysv4 1655238106Sdes ;; 1656238106Sdes *-masscomp) 1657366095Scy os=rtu 1658238106Sdes ;; 1659238106Sdes f30[01]-fujitsu | f700-fujitsu) 1660366095Scy os=uxpv 1661238106Sdes ;; 1662238106Sdes *-rom68k) 1663366095Scy os=coff 1664238106Sdes ;; 1665238106Sdes *-*bug) 1666366095Scy os=coff 1667238106Sdes ;; 1668238106Sdes *-apple) 1669366095Scy os=macos 1670238106Sdes ;; 1671238106Sdes *-atari*) 1672366095Scy os=mint 1673238106Sdes ;; 1674366095Scy *-wrs) 1675366095Scy os=vxworks 1676366095Scy ;; 1677238106Sdes *) 1678366095Scy os=none 1679238106Sdes ;; 1680238106Sdesesac 1681366095Scy 1682238106Sdesfi 1683238106Sdes 1684366095Scy# Now, validate our (potentially fixed-up) OS. 1685366095Scycase $os in 1686369939Sgit2svn # Sometimes we do "kernel-libc", so those need to count as OSes. 1687366095Scy musl* | newlib* | uclibc*) 1688366095Scy ;; 1689369939Sgit2svn # Likewise for "kernel-abi" 1690369939Sgit2svn eabi* | gnueabi*) 1691366095Scy ;; 1692369939Sgit2svn # VxWorks passes extra cpu info in the 4th filed. 1693369939Sgit2svn simlinux | simwindows | spe) 1694369939Sgit2svn ;; 1695366095Scy # Now accept the basic system types. 1696366095Scy # The portable systems comes first. 1697366095Scy # Each alternative MUST end in a * to match a version number. 1698366095Scy gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1699366095Scy | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1700366095Scy | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1701366095Scy | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1702366095Scy | hiux* | abug | nacl* | netware* | windows* \ 1703366095Scy | os9* | macos* | osx* | ios* \ 1704366095Scy | mpw* | magic* | mmixware* | mon960* | lnews* \ 1705366095Scy | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1706366095Scy | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1707366095Scy | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1708366095Scy | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1709366095Scy | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1710366095Scy | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \ 1711366095Scy | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1712366095Scy | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1713366095Scy | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1714366095Scy | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1715366095Scy | chorusrdb* | cegcc* | glidix* \ 1716366095Scy | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1717366095Scy | midipix* | mingw32* | mingw64* | mint* \ 1718366095Scy | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1719366095Scy | interix* | uwin* | mks* | rhapsody* | darwin* \ 1720366095Scy | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1721366095Scy | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1722366095Scy | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1723366095Scy | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1724366095Scy | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1725366095Scy | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1726366095Scy | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1727366095Scy | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1728368693Scy | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*) 1729366095Scy ;; 1730366095Scy # This one is extra strict with allowed versions 1731366095Scy sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1732366095Scy # Don't forget version if it is 3.2v4 or newer. 1733366095Scy ;; 1734366095Scy none) 1735366095Scy ;; 1736366095Scy *) 1737366095Scy echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1738366095Scy exit 1 1739366095Scy ;; 1740366095Scyesac 1741366095Scy 1742366095Scy# As a final step for OS-related things, validate the OS-kernel combination 1743366095Scy# (given a valid OS), if there is a kernel. 1744366095Scycase $kernel-$os in 1745366095Scy linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* ) 1746366095Scy ;; 1747368129Scy uclinux-uclibc* ) 1748368129Scy ;; 1749366095Scy -dietlibc* | -newlib* | -musl* | -uclibc* ) 1750366095Scy # These are just libc implementations, not actual OSes, and thus 1751366095Scy # require a kernel. 1752366095Scy echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1753366095Scy exit 1 1754366095Scy ;; 1755366095Scy kfreebsd*-gnu* | kopensolaris*-gnu*) 1756366095Scy ;; 1757369939Sgit2svn vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1758369939Sgit2svn ;; 1759366095Scy nto-qnx*) 1760366095Scy ;; 1761368693Scy os2-emx) 1762368693Scy ;; 1763366095Scy *-eabi* | *-gnueabi*) 1764366095Scy ;; 1765366095Scy -*) 1766366095Scy # Blank kernel with real OS is always fine. 1767366095Scy ;; 1768366095Scy *-*) 1769366095Scy echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1770366095Scy exit 1 1771366095Scy ;; 1772366095Scyesac 1773366095Scy 1774238106Sdes# Here we handle the case where we know the os, and the CPU type, but not the 1775238106Sdes# manufacturer. We pick the logical manufacturer. 1776366095Scycase $vendor in 1777366095Scy unknown) 1778366095Scy case $cpu-$os in 1779366095Scy *-riscix*) 1780238106Sdes vendor=acorn 1781238106Sdes ;; 1782366095Scy *-sunos*) 1783238106Sdes vendor=sun 1784238106Sdes ;; 1785366095Scy *-cnk* | *-aix*) 1786238106Sdes vendor=ibm 1787238106Sdes ;; 1788366095Scy *-beos*) 1789238106Sdes vendor=be 1790238106Sdes ;; 1791366095Scy *-hpux*) 1792238106Sdes vendor=hp 1793238106Sdes ;; 1794366095Scy *-mpeix*) 1795238106Sdes vendor=hp 1796238106Sdes ;; 1797366095Scy *-hiux*) 1798238106Sdes vendor=hitachi 1799238106Sdes ;; 1800366095Scy *-unos*) 1801238106Sdes vendor=crds 1802238106Sdes ;; 1803366095Scy *-dgux*) 1804238106Sdes vendor=dg 1805238106Sdes ;; 1806366095Scy *-luna*) 1807238106Sdes vendor=omron 1808238106Sdes ;; 1809366095Scy *-genix*) 1810238106Sdes vendor=ns 1811238106Sdes ;; 1812366095Scy *-clix*) 1813366095Scy vendor=intergraph 1814366095Scy ;; 1815366095Scy *-mvs* | *-opened*) 1816238106Sdes vendor=ibm 1817238106Sdes ;; 1818366095Scy *-os400*) 1819238106Sdes vendor=ibm 1820238106Sdes ;; 1821366095Scy s390-* | s390x-*) 1822366095Scy vendor=ibm 1823366095Scy ;; 1824366095Scy *-ptx*) 1825238106Sdes vendor=sequent 1826238106Sdes ;; 1827366095Scy *-tpf*) 1828238106Sdes vendor=ibm 1829238106Sdes ;; 1830366095Scy *-vxsim* | *-vxworks* | *-windiss*) 1831238106Sdes vendor=wrs 1832238106Sdes ;; 1833366095Scy *-aux*) 1834238106Sdes vendor=apple 1835238106Sdes ;; 1836366095Scy *-hms*) 1837238106Sdes vendor=hitachi 1838238106Sdes ;; 1839366095Scy *-mpw* | *-macos*) 1840238106Sdes vendor=apple 1841238106Sdes ;; 1842366095Scy *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1843238106Sdes vendor=atari 1844238106Sdes ;; 1845366095Scy *-vos*) 1846238106Sdes vendor=stratus 1847238106Sdes ;; 1848238106Sdes esac 1849238106Sdes ;; 1850238106Sdesesac 1851238106Sdes 1852366095Scyecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1853238106Sdesexit 1854238106Sdes 1855238106Sdes# Local variables: 1856366095Scy# eval: (add-hook 'before-save-hook 'time-stamp) 1857238106Sdes# time-stamp-start: "timestamp='" 1858238106Sdes# time-stamp-format: "%:y-%02m-%02d" 1859238106Sdes# time-stamp-end: "'" 1860238106Sdes# End: 1861