config.sub revision 111ba1da
18ff16396Smrg#! /bin/sh 28ff16396Smrg# Configuration validation subroutine script. 3111ba1daSmrg# Copyright 1992-2023 Free Software Foundation, Inc. 48ff16396Smrg 5111ba1daSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 68ff16396Smrg 7111ba1daSmrgtimestamp='2023-01-21' 8111ba1daSmrg 9111ba1daSmrg# This file is free software; you can redistribute it and/or modify it 10111ba1daSmrg# under the terms of the GNU General Public License as published by 11111ba1daSmrg# the Free Software Foundation, either version 3 of the License, or 128ff16396Smrg# (at your option) any later version. 138ff16396Smrg# 14111ba1daSmrg# This program is distributed in the hope that it will be useful, but 15111ba1daSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16111ba1daSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17111ba1daSmrg# General Public License for more details. 188ff16396Smrg# 198ff16396Smrg# You should have received a copy of the GNU General Public License 20111ba1daSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 218ff16396Smrg# 228ff16396Smrg# As a special exception to the GNU General Public License, if you 238ff16396Smrg# distribute this file as part of a program that contains a 248ff16396Smrg# configuration script generated by Autoconf, you may include it under 25111ba1daSmrg# the same distribution terms that you use for the rest of that 26111ba1daSmrg# program. This Exception is an additional permission under section 7 27111ba1daSmrg# of the GNU General Public License, version 3 ("GPLv3"). 288ff16396Smrg 298ff16396Smrg 30111ba1daSmrg# Please send patches to <config-patches@gnu.org>. 318ff16396Smrg# 328ff16396Smrg# Configuration subroutine to validate and canonicalize a configuration type. 338ff16396Smrg# Supply the specified configuration type as an argument. 348ff16396Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 358ff16396Smrg# Otherwise, we print the canonical config type on stdout and succeed. 368ff16396Smrg 37d5d8cc55Smrg# You can get the latest version of this script from: 38111ba1daSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39d5d8cc55Smrg 408ff16396Smrg# This file is supposed to be the same for all GNU packages 418ff16396Smrg# and recognize all the CPU types, system types and aliases 428ff16396Smrg# that are meaningful with *any* GNU software. 438ff16396Smrg# Each package is responsible for reporting which valid configurations 448ff16396Smrg# it does not support. The user should be able to distinguish 458ff16396Smrg# a failure to support a valid configuration from a meaningless 468ff16396Smrg# configuration. 478ff16396Smrg 488ff16396Smrg# The goal of this file is to map all the various variations of a given 498ff16396Smrg# machine specification into a single specification in the form: 508ff16396Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 518ff16396Smrg# or in some cases, the newer four-part form: 528ff16396Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 538ff16396Smrg# It is wrong to echo any other type of specification. 548ff16396Smrg 55111ba1daSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 56111ba1daSmrg# about features and limitations of the classic Bourne shell that were 57111ba1daSmrg# superseded or lifted in POSIX. However, this script identifies a wide 58111ba1daSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59111ba1daSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60111ba1daSmrg# have a pre-POSIX /bin/sh. 61111ba1daSmrg 628ff16396Smrgme=`echo "$0" | sed -e 's,.*/,,'` 638ff16396Smrg 648ff16396Smrgusage="\ 65111ba1daSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 668ff16396Smrg 678ff16396SmrgCanonicalize a configuration name. 688ff16396Smrg 69111ba1daSmrgOptions: 708ff16396Smrg -h, --help print this help, then exit 718ff16396Smrg -t, --time-stamp print date of last modification, then exit 728ff16396Smrg -v, --version print version number, then exit 738ff16396Smrg 748ff16396SmrgReport bugs and patches to <config-patches@gnu.org>." 758ff16396Smrg 768ff16396Smrgversion="\ 778ff16396SmrgGNU config.sub ($timestamp) 788ff16396Smrg 79111ba1daSmrgCopyright 1992-2023 Free Software Foundation, Inc. 808ff16396Smrg 818ff16396SmrgThis is free software; see the source for copying conditions. There is NO 828ff16396Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 838ff16396Smrg 848ff16396Smrghelp=" 858ff16396SmrgTry \`$me --help' for more information." 868ff16396Smrg 878ff16396Smrg# Parse command line 888ff16396Smrgwhile test $# -gt 0 ; do 898ff16396Smrg case $1 in 908ff16396Smrg --time-stamp | --time* | -t ) 918ff16396Smrg echo "$timestamp" ; exit ;; 928ff16396Smrg --version | -v ) 938ff16396Smrg echo "$version" ; exit ;; 948ff16396Smrg --help | --h* | -h ) 958ff16396Smrg echo "$usage"; exit ;; 968ff16396Smrg -- ) # Stop option processing 978ff16396Smrg shift; break ;; 988ff16396Smrg - ) # Use stdin as input. 998ff16396Smrg break ;; 1008ff16396Smrg -* ) 101111ba1daSmrg echo "$me: invalid option $1$help" >&2 1028ff16396Smrg exit 1 ;; 1038ff16396Smrg 1048ff16396Smrg *local*) 1058ff16396Smrg # First pass through any local machine types. 106111ba1daSmrg echo "$1" 1078ff16396Smrg exit ;; 1088ff16396Smrg 1098ff16396Smrg * ) 1108ff16396Smrg break ;; 1118ff16396Smrg esac 1128ff16396Smrgdone 1138ff16396Smrg 1148ff16396Smrgcase $# in 1158ff16396Smrg 0) echo "$me: missing argument$help" >&2 1168ff16396Smrg exit 1;; 1178ff16396Smrg 1) ;; 1188ff16396Smrg *) echo "$me: too many arguments$help" >&2 1198ff16396Smrg exit 1;; 1208ff16396Smrgesac 1218ff16396Smrg 122111ba1daSmrg# Split fields of configuration type 123111ba1daSmrg# shellcheck disable=SC2162 124111ba1daSmrgsaved_IFS=$IFS 125111ba1daSmrgIFS="-" read field1 field2 field3 field4 <<EOF 126111ba1daSmrg$1 127111ba1daSmrgEOF 128111ba1daSmrgIFS=$saved_IFS 1298ff16396Smrg 130111ba1daSmrg# Separate into logical components for further validation 131111ba1daSmrgcase $1 in 132111ba1daSmrg *-*-*-*-*) 133111ba1daSmrg echo Invalid configuration \`"$1"\': more than four components >&2 134111ba1daSmrg exit 1 1358ff16396Smrg ;; 136111ba1daSmrg *-*-*-*) 137111ba1daSmrg basic_machine=$field1-$field2 138111ba1daSmrg basic_os=$field3-$field4 1398ff16396Smrg ;; 140111ba1daSmrg *-*-*) 141111ba1daSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142111ba1daSmrg # parts 143111ba1daSmrg maybe_os=$field2-$field3 144111ba1daSmrg case $maybe_os in 145111ba1daSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 146111ba1daSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147111ba1daSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148111ba1daSmrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 149111ba1daSmrg basic_machine=$field1 150111ba1daSmrg basic_os=$maybe_os 151111ba1daSmrg ;; 152111ba1daSmrg android-linux) 153111ba1daSmrg basic_machine=$field1-unknown 154111ba1daSmrg basic_os=linux-android 155111ba1daSmrg ;; 156111ba1daSmrg *) 157111ba1daSmrg basic_machine=$field1-$field2 158111ba1daSmrg basic_os=$field3 159111ba1daSmrg ;; 160111ba1daSmrg esac 1618ff16396Smrg ;; 162111ba1daSmrg *-*) 163111ba1daSmrg # A lone config we happen to match not fitting any pattern 164111ba1daSmrg case $field1-$field2 in 165111ba1daSmrg decstation-3100) 166111ba1daSmrg basic_machine=mips-dec 167111ba1daSmrg basic_os= 168111ba1daSmrg ;; 169111ba1daSmrg *-*) 170111ba1daSmrg # Second component is usually, but not always the OS 171111ba1daSmrg case $field2 in 172111ba1daSmrg # Prevent following clause from handling this valid os 173111ba1daSmrg sun*os*) 174111ba1daSmrg basic_machine=$field1 175111ba1daSmrg basic_os=$field2 176111ba1daSmrg ;; 177111ba1daSmrg zephyr*) 178111ba1daSmrg basic_machine=$field1-unknown 179111ba1daSmrg basic_os=$field2 180111ba1daSmrg ;; 181111ba1daSmrg # Manufacturers 182111ba1daSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183111ba1daSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184111ba1daSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185111ba1daSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186111ba1daSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187111ba1daSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188111ba1daSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189111ba1daSmrg | microblaze* | sim | cisco \ 190111ba1daSmrg | oki | wec | wrs | winbond) 191111ba1daSmrg basic_machine=$field1-$field2 192111ba1daSmrg basic_os= 193111ba1daSmrg ;; 194111ba1daSmrg *) 195111ba1daSmrg basic_machine=$field1 196111ba1daSmrg basic_os=$field2 197111ba1daSmrg ;; 198111ba1daSmrg esac 199111ba1daSmrg ;; 200111ba1daSmrg esac 2018ff16396Smrg ;; 202111ba1daSmrg *) 203111ba1daSmrg # Convert single-component short-hands not valid as part of 204111ba1daSmrg # multi-component configurations. 205111ba1daSmrg case $field1 in 206111ba1daSmrg 386bsd) 207111ba1daSmrg basic_machine=i386-pc 208111ba1daSmrg basic_os=bsd 209111ba1daSmrg ;; 210111ba1daSmrg a29khif) 211111ba1daSmrg basic_machine=a29k-amd 212111ba1daSmrg basic_os=udi 213111ba1daSmrg ;; 214111ba1daSmrg adobe68k) 215111ba1daSmrg basic_machine=m68010-adobe 216111ba1daSmrg basic_os=scout 217111ba1daSmrg ;; 218111ba1daSmrg alliant) 219111ba1daSmrg basic_machine=fx80-alliant 220111ba1daSmrg basic_os= 221111ba1daSmrg ;; 222111ba1daSmrg altos | altos3068) 223111ba1daSmrg basic_machine=m68k-altos 224111ba1daSmrg basic_os= 225111ba1daSmrg ;; 226111ba1daSmrg am29k) 227111ba1daSmrg basic_machine=a29k-none 228111ba1daSmrg basic_os=bsd 229111ba1daSmrg ;; 230111ba1daSmrg amdahl) 231111ba1daSmrg basic_machine=580-amdahl 232111ba1daSmrg basic_os=sysv 233111ba1daSmrg ;; 234111ba1daSmrg amiga) 235111ba1daSmrg basic_machine=m68k-unknown 236111ba1daSmrg basic_os= 237111ba1daSmrg ;; 238111ba1daSmrg amigaos | amigados) 239111ba1daSmrg basic_machine=m68k-unknown 240111ba1daSmrg basic_os=amigaos 241111ba1daSmrg ;; 242111ba1daSmrg amigaunix | amix) 243111ba1daSmrg basic_machine=m68k-unknown 244111ba1daSmrg basic_os=sysv4 245111ba1daSmrg ;; 246111ba1daSmrg apollo68) 247111ba1daSmrg basic_machine=m68k-apollo 248111ba1daSmrg basic_os=sysv 249111ba1daSmrg ;; 250111ba1daSmrg apollo68bsd) 251111ba1daSmrg basic_machine=m68k-apollo 252111ba1daSmrg basic_os=bsd 253111ba1daSmrg ;; 254111ba1daSmrg aros) 255111ba1daSmrg basic_machine=i386-pc 256111ba1daSmrg basic_os=aros 257111ba1daSmrg ;; 258111ba1daSmrg aux) 259111ba1daSmrg basic_machine=m68k-apple 260111ba1daSmrg basic_os=aux 261111ba1daSmrg ;; 262111ba1daSmrg balance) 263111ba1daSmrg basic_machine=ns32k-sequent 264111ba1daSmrg basic_os=dynix 265111ba1daSmrg ;; 266111ba1daSmrg blackfin) 267111ba1daSmrg basic_machine=bfin-unknown 268111ba1daSmrg basic_os=linux 269111ba1daSmrg ;; 270111ba1daSmrg cegcc) 271111ba1daSmrg basic_machine=arm-unknown 272111ba1daSmrg basic_os=cegcc 273111ba1daSmrg ;; 274111ba1daSmrg convex-c1) 275111ba1daSmrg basic_machine=c1-convex 276111ba1daSmrg basic_os=bsd 277111ba1daSmrg ;; 278111ba1daSmrg convex-c2) 279111ba1daSmrg basic_machine=c2-convex 280111ba1daSmrg basic_os=bsd 281111ba1daSmrg ;; 282111ba1daSmrg convex-c32) 283111ba1daSmrg basic_machine=c32-convex 284111ba1daSmrg basic_os=bsd 285111ba1daSmrg ;; 286111ba1daSmrg convex-c34) 287111ba1daSmrg basic_machine=c34-convex 288111ba1daSmrg basic_os=bsd 289111ba1daSmrg ;; 290111ba1daSmrg convex-c38) 291111ba1daSmrg basic_machine=c38-convex 292111ba1daSmrg basic_os=bsd 293111ba1daSmrg ;; 294111ba1daSmrg cray) 295111ba1daSmrg basic_machine=j90-cray 296111ba1daSmrg basic_os=unicos 297111ba1daSmrg ;; 298111ba1daSmrg crds | unos) 299111ba1daSmrg basic_machine=m68k-crds 300111ba1daSmrg basic_os= 301111ba1daSmrg ;; 302111ba1daSmrg da30) 303111ba1daSmrg basic_machine=m68k-da30 304111ba1daSmrg basic_os= 305111ba1daSmrg ;; 306111ba1daSmrg decstation | pmax | pmin | dec3100 | decstatn) 307111ba1daSmrg basic_machine=mips-dec 308111ba1daSmrg basic_os= 309111ba1daSmrg ;; 310111ba1daSmrg delta88) 311111ba1daSmrg basic_machine=m88k-motorola 312111ba1daSmrg basic_os=sysv3 313111ba1daSmrg ;; 314111ba1daSmrg dicos) 315111ba1daSmrg basic_machine=i686-pc 316111ba1daSmrg basic_os=dicos 317111ba1daSmrg ;; 318111ba1daSmrg djgpp) 319111ba1daSmrg basic_machine=i586-pc 320111ba1daSmrg basic_os=msdosdjgpp 321111ba1daSmrg ;; 322111ba1daSmrg ebmon29k) 323111ba1daSmrg basic_machine=a29k-amd 324111ba1daSmrg basic_os=ebmon 325111ba1daSmrg ;; 326111ba1daSmrg es1800 | OSE68k | ose68k | ose | OSE) 327111ba1daSmrg basic_machine=m68k-ericsson 328111ba1daSmrg basic_os=ose 329111ba1daSmrg ;; 330111ba1daSmrg gmicro) 331111ba1daSmrg basic_machine=tron-gmicro 332111ba1daSmrg basic_os=sysv 333111ba1daSmrg ;; 334111ba1daSmrg go32) 335111ba1daSmrg basic_machine=i386-pc 336111ba1daSmrg basic_os=go32 337111ba1daSmrg ;; 338111ba1daSmrg h8300hms) 339111ba1daSmrg basic_machine=h8300-hitachi 340111ba1daSmrg basic_os=hms 341111ba1daSmrg ;; 342111ba1daSmrg h8300xray) 343111ba1daSmrg basic_machine=h8300-hitachi 344111ba1daSmrg basic_os=xray 345111ba1daSmrg ;; 346111ba1daSmrg h8500hms) 347111ba1daSmrg basic_machine=h8500-hitachi 348111ba1daSmrg basic_os=hms 349111ba1daSmrg ;; 350111ba1daSmrg harris) 351111ba1daSmrg basic_machine=m88k-harris 352111ba1daSmrg basic_os=sysv3 353111ba1daSmrg ;; 354111ba1daSmrg hp300 | hp300hpux) 355111ba1daSmrg basic_machine=m68k-hp 356111ba1daSmrg basic_os=hpux 357111ba1daSmrg ;; 358111ba1daSmrg hp300bsd) 359111ba1daSmrg basic_machine=m68k-hp 360111ba1daSmrg basic_os=bsd 361111ba1daSmrg ;; 362111ba1daSmrg hppaosf) 363111ba1daSmrg basic_machine=hppa1.1-hp 364111ba1daSmrg basic_os=osf 365111ba1daSmrg ;; 366111ba1daSmrg hppro) 367111ba1daSmrg basic_machine=hppa1.1-hp 368111ba1daSmrg basic_os=proelf 369111ba1daSmrg ;; 370111ba1daSmrg i386mach) 371111ba1daSmrg basic_machine=i386-mach 372111ba1daSmrg basic_os=mach 373111ba1daSmrg ;; 374111ba1daSmrg isi68 | isi) 375111ba1daSmrg basic_machine=m68k-isi 376111ba1daSmrg basic_os=sysv 377111ba1daSmrg ;; 378111ba1daSmrg m68knommu) 379111ba1daSmrg basic_machine=m68k-unknown 380111ba1daSmrg basic_os=linux 381111ba1daSmrg ;; 382111ba1daSmrg magnum | m3230) 383111ba1daSmrg basic_machine=mips-mips 384111ba1daSmrg basic_os=sysv 385111ba1daSmrg ;; 386111ba1daSmrg merlin) 387111ba1daSmrg basic_machine=ns32k-utek 388111ba1daSmrg basic_os=sysv 389111ba1daSmrg ;; 390111ba1daSmrg mingw64) 391111ba1daSmrg basic_machine=x86_64-pc 392111ba1daSmrg basic_os=mingw64 393111ba1daSmrg ;; 394111ba1daSmrg mingw32) 395111ba1daSmrg basic_machine=i686-pc 396111ba1daSmrg basic_os=mingw32 397111ba1daSmrg ;; 398111ba1daSmrg mingw32ce) 399111ba1daSmrg basic_machine=arm-unknown 400111ba1daSmrg basic_os=mingw32ce 401111ba1daSmrg ;; 402111ba1daSmrg monitor) 403111ba1daSmrg basic_machine=m68k-rom68k 404111ba1daSmrg basic_os=coff 405111ba1daSmrg ;; 406111ba1daSmrg morphos) 407111ba1daSmrg basic_machine=powerpc-unknown 408111ba1daSmrg basic_os=morphos 409111ba1daSmrg ;; 410111ba1daSmrg moxiebox) 411111ba1daSmrg basic_machine=moxie-unknown 412111ba1daSmrg basic_os=moxiebox 413111ba1daSmrg ;; 414111ba1daSmrg msdos) 415111ba1daSmrg basic_machine=i386-pc 416111ba1daSmrg basic_os=msdos 417111ba1daSmrg ;; 418111ba1daSmrg msys) 419111ba1daSmrg basic_machine=i686-pc 420111ba1daSmrg basic_os=msys 421111ba1daSmrg ;; 422111ba1daSmrg mvs) 423111ba1daSmrg basic_machine=i370-ibm 424111ba1daSmrg basic_os=mvs 425111ba1daSmrg ;; 426111ba1daSmrg nacl) 427111ba1daSmrg basic_machine=le32-unknown 428111ba1daSmrg basic_os=nacl 429111ba1daSmrg ;; 430111ba1daSmrg ncr3000) 431111ba1daSmrg basic_machine=i486-ncr 432111ba1daSmrg basic_os=sysv4 433111ba1daSmrg ;; 434111ba1daSmrg netbsd386) 435111ba1daSmrg basic_machine=i386-pc 436111ba1daSmrg basic_os=netbsd 437111ba1daSmrg ;; 438111ba1daSmrg netwinder) 439111ba1daSmrg basic_machine=armv4l-rebel 440111ba1daSmrg basic_os=linux 441111ba1daSmrg ;; 442111ba1daSmrg news | news700 | news800 | news900) 443111ba1daSmrg basic_machine=m68k-sony 444111ba1daSmrg basic_os=newsos 445111ba1daSmrg ;; 446111ba1daSmrg news1000) 447111ba1daSmrg basic_machine=m68030-sony 448111ba1daSmrg basic_os=newsos 449111ba1daSmrg ;; 450111ba1daSmrg necv70) 451111ba1daSmrg basic_machine=v70-nec 452111ba1daSmrg basic_os=sysv 453111ba1daSmrg ;; 454111ba1daSmrg nh3000) 455111ba1daSmrg basic_machine=m68k-harris 456111ba1daSmrg basic_os=cxux 457111ba1daSmrg ;; 458111ba1daSmrg nh[45]000) 459111ba1daSmrg basic_machine=m88k-harris 460111ba1daSmrg basic_os=cxux 461111ba1daSmrg ;; 462111ba1daSmrg nindy960) 463111ba1daSmrg basic_machine=i960-intel 464111ba1daSmrg basic_os=nindy 465111ba1daSmrg ;; 466111ba1daSmrg mon960) 467111ba1daSmrg basic_machine=i960-intel 468111ba1daSmrg basic_os=mon960 469111ba1daSmrg ;; 470111ba1daSmrg nonstopux) 471111ba1daSmrg basic_machine=mips-compaq 472111ba1daSmrg basic_os=nonstopux 473111ba1daSmrg ;; 474111ba1daSmrg os400) 475111ba1daSmrg basic_machine=powerpc-ibm 476111ba1daSmrg basic_os=os400 477111ba1daSmrg ;; 478111ba1daSmrg OSE68000 | ose68000) 479111ba1daSmrg basic_machine=m68000-ericsson 480111ba1daSmrg basic_os=ose 481111ba1daSmrg ;; 482111ba1daSmrg os68k) 483111ba1daSmrg basic_machine=m68k-none 484111ba1daSmrg basic_os=os68k 485111ba1daSmrg ;; 486111ba1daSmrg paragon) 487111ba1daSmrg basic_machine=i860-intel 488111ba1daSmrg basic_os=osf 489111ba1daSmrg ;; 490111ba1daSmrg parisc) 491111ba1daSmrg basic_machine=hppa-unknown 492111ba1daSmrg basic_os=linux 493111ba1daSmrg ;; 494111ba1daSmrg psp) 495111ba1daSmrg basic_machine=mipsallegrexel-sony 496111ba1daSmrg basic_os=psp 497111ba1daSmrg ;; 498111ba1daSmrg pw32) 499111ba1daSmrg basic_machine=i586-unknown 500111ba1daSmrg basic_os=pw32 501111ba1daSmrg ;; 502111ba1daSmrg rdos | rdos64) 503111ba1daSmrg basic_machine=x86_64-pc 504111ba1daSmrg basic_os=rdos 505111ba1daSmrg ;; 506111ba1daSmrg rdos32) 507111ba1daSmrg basic_machine=i386-pc 508111ba1daSmrg basic_os=rdos 509111ba1daSmrg ;; 510111ba1daSmrg rom68k) 511111ba1daSmrg basic_machine=m68k-rom68k 512111ba1daSmrg basic_os=coff 513111ba1daSmrg ;; 514111ba1daSmrg sa29200) 515111ba1daSmrg basic_machine=a29k-amd 516111ba1daSmrg basic_os=udi 517111ba1daSmrg ;; 518111ba1daSmrg sei) 519111ba1daSmrg basic_machine=mips-sei 520111ba1daSmrg basic_os=seiux 521111ba1daSmrg ;; 522111ba1daSmrg sequent) 523111ba1daSmrg basic_machine=i386-sequent 524111ba1daSmrg basic_os= 525111ba1daSmrg ;; 526111ba1daSmrg sps7) 527111ba1daSmrg basic_machine=m68k-bull 528111ba1daSmrg basic_os=sysv2 529111ba1daSmrg ;; 530111ba1daSmrg st2000) 531111ba1daSmrg basic_machine=m68k-tandem 532111ba1daSmrg basic_os= 533111ba1daSmrg ;; 534111ba1daSmrg stratus) 535111ba1daSmrg basic_machine=i860-stratus 536111ba1daSmrg basic_os=sysv4 537111ba1daSmrg ;; 538111ba1daSmrg sun2) 539111ba1daSmrg basic_machine=m68000-sun 540111ba1daSmrg basic_os= 541111ba1daSmrg ;; 542111ba1daSmrg sun2os3) 543111ba1daSmrg basic_machine=m68000-sun 544111ba1daSmrg basic_os=sunos3 545111ba1daSmrg ;; 546111ba1daSmrg sun2os4) 547111ba1daSmrg basic_machine=m68000-sun 548111ba1daSmrg basic_os=sunos4 549111ba1daSmrg ;; 550111ba1daSmrg sun3) 551111ba1daSmrg basic_machine=m68k-sun 552111ba1daSmrg basic_os= 553111ba1daSmrg ;; 554111ba1daSmrg sun3os3) 555111ba1daSmrg basic_machine=m68k-sun 556111ba1daSmrg basic_os=sunos3 557111ba1daSmrg ;; 558111ba1daSmrg sun3os4) 559111ba1daSmrg basic_machine=m68k-sun 560111ba1daSmrg basic_os=sunos4 561111ba1daSmrg ;; 562111ba1daSmrg sun4) 563111ba1daSmrg basic_machine=sparc-sun 564111ba1daSmrg basic_os= 565111ba1daSmrg ;; 566111ba1daSmrg sun4os3) 567111ba1daSmrg basic_machine=sparc-sun 568111ba1daSmrg basic_os=sunos3 569111ba1daSmrg ;; 570111ba1daSmrg sun4os4) 571111ba1daSmrg basic_machine=sparc-sun 572111ba1daSmrg basic_os=sunos4 573111ba1daSmrg ;; 574111ba1daSmrg sun4sol2) 575111ba1daSmrg basic_machine=sparc-sun 576111ba1daSmrg basic_os=solaris2 577111ba1daSmrg ;; 578111ba1daSmrg sun386 | sun386i | roadrunner) 579111ba1daSmrg basic_machine=i386-sun 580111ba1daSmrg basic_os= 581111ba1daSmrg ;; 582111ba1daSmrg sv1) 583111ba1daSmrg basic_machine=sv1-cray 584111ba1daSmrg basic_os=unicos 585111ba1daSmrg ;; 586111ba1daSmrg symmetry) 587111ba1daSmrg basic_machine=i386-sequent 588111ba1daSmrg basic_os=dynix 589111ba1daSmrg ;; 590111ba1daSmrg t3e) 591111ba1daSmrg basic_machine=alphaev5-cray 592111ba1daSmrg basic_os=unicos 593111ba1daSmrg ;; 594111ba1daSmrg t90) 595111ba1daSmrg basic_machine=t90-cray 596111ba1daSmrg basic_os=unicos 597111ba1daSmrg ;; 598111ba1daSmrg toad1) 599111ba1daSmrg basic_machine=pdp10-xkl 600111ba1daSmrg basic_os=tops20 601111ba1daSmrg ;; 602111ba1daSmrg tpf) 603111ba1daSmrg basic_machine=s390x-ibm 604111ba1daSmrg basic_os=tpf 605111ba1daSmrg ;; 606111ba1daSmrg udi29k) 607111ba1daSmrg basic_machine=a29k-amd 608111ba1daSmrg basic_os=udi 609111ba1daSmrg ;; 610111ba1daSmrg ultra3) 611111ba1daSmrg basic_machine=a29k-nyu 612111ba1daSmrg basic_os=sym1 613111ba1daSmrg ;; 614111ba1daSmrg v810 | necv810) 615111ba1daSmrg basic_machine=v810-nec 616111ba1daSmrg basic_os=none 617111ba1daSmrg ;; 618111ba1daSmrg vaxv) 619111ba1daSmrg basic_machine=vax-dec 620111ba1daSmrg basic_os=sysv 621111ba1daSmrg ;; 622111ba1daSmrg vms) 623111ba1daSmrg basic_machine=vax-dec 624111ba1daSmrg basic_os=vms 625111ba1daSmrg ;; 626111ba1daSmrg vsta) 627111ba1daSmrg basic_machine=i386-pc 628111ba1daSmrg basic_os=vsta 629111ba1daSmrg ;; 630111ba1daSmrg vxworks960) 631111ba1daSmrg basic_machine=i960-wrs 632111ba1daSmrg basic_os=vxworks 633111ba1daSmrg ;; 634111ba1daSmrg vxworks68) 635111ba1daSmrg basic_machine=m68k-wrs 636111ba1daSmrg basic_os=vxworks 637111ba1daSmrg ;; 638111ba1daSmrg vxworks29k) 639111ba1daSmrg basic_machine=a29k-wrs 640111ba1daSmrg basic_os=vxworks 641111ba1daSmrg ;; 642111ba1daSmrg xbox) 643111ba1daSmrg basic_machine=i686-pc 644111ba1daSmrg basic_os=mingw32 645111ba1daSmrg ;; 646111ba1daSmrg ymp) 647111ba1daSmrg basic_machine=ymp-cray 648111ba1daSmrg basic_os=unicos 649111ba1daSmrg ;; 650111ba1daSmrg *) 651111ba1daSmrg basic_machine=$1 652111ba1daSmrg basic_os= 653111ba1daSmrg ;; 654111ba1daSmrg esac 6558ff16396Smrg ;; 656111ba1daSmrgesac 657111ba1daSmrg 658111ba1daSmrg# Decode 1-component or ad-hoc basic machines 659111ba1daSmrgcase $basic_machine in 660111ba1daSmrg # Here we handle the default manufacturer of certain CPU types. It is in 661111ba1daSmrg # some cases the only manufacturer, in others, it is the most popular. 662111ba1daSmrg w89k) 663111ba1daSmrg cpu=hppa1.1 664111ba1daSmrg vendor=winbond 6658ff16396Smrg ;; 666111ba1daSmrg op50n) 667111ba1daSmrg cpu=hppa1.1 668111ba1daSmrg vendor=oki 6698ff16396Smrg ;; 670111ba1daSmrg op60c) 671111ba1daSmrg cpu=hppa1.1 672111ba1daSmrg vendor=oki 6738ff16396Smrg ;; 674111ba1daSmrg ibm*) 675111ba1daSmrg cpu=i370 676111ba1daSmrg vendor=ibm 6778ff16396Smrg ;; 678111ba1daSmrg orion105) 679111ba1daSmrg cpu=clipper 680111ba1daSmrg vendor=highlevel 6818ff16396Smrg ;; 682111ba1daSmrg mac | mpw | mac-mpw) 683111ba1daSmrg cpu=m68k 684111ba1daSmrg vendor=apple 6858ff16396Smrg ;; 686111ba1daSmrg pmac | pmac-mpw) 687111ba1daSmrg cpu=powerpc 688111ba1daSmrg vendor=apple 6898ff16396Smrg ;; 6908ff16396Smrg 6918ff16396Smrg # Recognize the various machine names and aliases which stand 6928ff16396Smrg # for a CPU type and a company and sometimes even an OS. 6938ff16396Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694111ba1daSmrg cpu=m68000 695111ba1daSmrg vendor=att 6968ff16396Smrg ;; 6978ff16396Smrg 3b*) 698111ba1daSmrg cpu=we32k 699111ba1daSmrg vendor=att 7008ff16396Smrg ;; 701d5d8cc55Smrg bluegene*) 702111ba1daSmrg cpu=powerpc 703111ba1daSmrg vendor=ibm 704111ba1daSmrg basic_os=cnk 7058ff16396Smrg ;; 7068ff16396Smrg decsystem10* | dec10*) 707111ba1daSmrg cpu=pdp10 708111ba1daSmrg vendor=dec 709111ba1daSmrg basic_os=tops10 7108ff16396Smrg ;; 7118ff16396Smrg decsystem20* | dec20*) 712111ba1daSmrg cpu=pdp10 713111ba1daSmrg vendor=dec 714111ba1daSmrg basic_os=tops20 7158ff16396Smrg ;; 7168ff16396Smrg delta | 3300 | motorola-3300 | motorola-delta \ 7178ff16396Smrg | 3300-motorola | delta-motorola) 718111ba1daSmrg cpu=m68k 719111ba1daSmrg vendor=motorola 7208ff16396Smrg ;; 721111ba1daSmrg dpx2*) 722111ba1daSmrg cpu=m68k 723111ba1daSmrg vendor=bull 724111ba1daSmrg basic_os=sysv3 7258ff16396Smrg ;; 7268ff16396Smrg encore | umax | mmax) 727111ba1daSmrg cpu=ns32k 728111ba1daSmrg vendor=encore 7298ff16396Smrg ;; 730111ba1daSmrg elxsi) 731111ba1daSmrg cpu=elxsi 732111ba1daSmrg vendor=elxsi 733111ba1daSmrg basic_os=${basic_os:-bsd} 7348ff16396Smrg ;; 7358ff16396Smrg fx2800) 736111ba1daSmrg cpu=i860 737111ba1daSmrg vendor=alliant 7388ff16396Smrg ;; 7398ff16396Smrg genix) 740111ba1daSmrg cpu=ns32k 741111ba1daSmrg vendor=ns 7428ff16396Smrg ;; 7438ff16396Smrg h3050r* | hiux*) 744111ba1daSmrg cpu=hppa1.1 745111ba1daSmrg vendor=hitachi 746111ba1daSmrg basic_os=hiuxwe2 7478ff16396Smrg ;; 7488ff16396Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749111ba1daSmrg cpu=hppa1.0 750111ba1daSmrg vendor=hp 7518ff16396Smrg ;; 7528ff16396Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753111ba1daSmrg cpu=m68000 754111ba1daSmrg vendor=hp 7558ff16396Smrg ;; 7568ff16396Smrg hp9k3[2-9][0-9]) 757111ba1daSmrg cpu=m68k 758111ba1daSmrg vendor=hp 7598ff16396Smrg ;; 7608ff16396Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761111ba1daSmrg cpu=hppa1.0 762111ba1daSmrg vendor=hp 7638ff16396Smrg ;; 7648ff16396Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765111ba1daSmrg cpu=hppa1.1 766111ba1daSmrg vendor=hp 7678ff16396Smrg ;; 7688ff16396Smrg hp9k78[0-9] | hp78[0-9]) 7698ff16396Smrg # FIXME: really hppa2.0-hp 770111ba1daSmrg cpu=hppa1.1 771111ba1daSmrg vendor=hp 7728ff16396Smrg ;; 7738ff16396Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7748ff16396Smrg # FIXME: really hppa2.0-hp 775111ba1daSmrg cpu=hppa1.1 776111ba1daSmrg vendor=hp 7778ff16396Smrg ;; 7788ff16396Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779111ba1daSmrg cpu=hppa1.1 780111ba1daSmrg vendor=hp 7818ff16396Smrg ;; 7828ff16396Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783111ba1daSmrg cpu=hppa1.0 784111ba1daSmrg vendor=hp 7858ff16396Smrg ;; 7868ff16396Smrg i*86v32) 787111ba1daSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788111ba1daSmrg vendor=pc 789111ba1daSmrg basic_os=sysv32 7908ff16396Smrg ;; 7918ff16396Smrg i*86v4*) 792111ba1daSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793111ba1daSmrg vendor=pc 794111ba1daSmrg basic_os=sysv4 7958ff16396Smrg ;; 7968ff16396Smrg i*86v) 797111ba1daSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798111ba1daSmrg vendor=pc 799111ba1daSmrg basic_os=sysv 8008ff16396Smrg ;; 8018ff16396Smrg i*86sol2) 802111ba1daSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803111ba1daSmrg vendor=pc 804111ba1daSmrg basic_os=solaris2 8058ff16396Smrg ;; 806111ba1daSmrg j90 | j90-cray) 807111ba1daSmrg cpu=j90 808111ba1daSmrg vendor=cray 809111ba1daSmrg basic_os=${basic_os:-unicos} 8108ff16396Smrg ;; 8118ff16396Smrg iris | iris4d) 812111ba1daSmrg cpu=mips 813111ba1daSmrg vendor=sgi 814111ba1daSmrg case $basic_os in 815111ba1daSmrg irix*) 8168ff16396Smrg ;; 8178ff16396Smrg *) 818111ba1daSmrg basic_os=irix4 8198ff16396Smrg ;; 8208ff16396Smrg esac 8218ff16396Smrg ;; 8228ff16396Smrg miniframe) 823111ba1daSmrg cpu=m68000 824111ba1daSmrg vendor=convergent 8258ff16396Smrg ;; 826111ba1daSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827111ba1daSmrg cpu=m68k 828111ba1daSmrg vendor=atari 829111ba1daSmrg basic_os=mint 8308ff16396Smrg ;; 8318ff16396Smrg news-3600 | risc-news) 832111ba1daSmrg cpu=mips 833111ba1daSmrg vendor=sony 834111ba1daSmrg basic_os=newsos 835111ba1daSmrg ;; 836111ba1daSmrg next | m*-next) 837111ba1daSmrg cpu=m68k 838111ba1daSmrg vendor=next 839111ba1daSmrg case $basic_os in 840111ba1daSmrg openstep*) 841111ba1daSmrg ;; 842111ba1daSmrg nextstep*) 8438ff16396Smrg ;; 844111ba1daSmrg ns2*) 845111ba1daSmrg basic_os=nextstep2 8468ff16396Smrg ;; 8478ff16396Smrg *) 848111ba1daSmrg basic_os=nextstep3 8498ff16396Smrg ;; 8508ff16396Smrg esac 8518ff16396Smrg ;; 8528ff16396Smrg np1) 853111ba1daSmrg cpu=np1 854111ba1daSmrg vendor=gould 8558ff16396Smrg ;; 8568ff16396Smrg op50n-* | op60c-*) 857111ba1daSmrg cpu=hppa1.1 858111ba1daSmrg vendor=oki 859111ba1daSmrg basic_os=proelf 8608ff16396Smrg ;; 8618ff16396Smrg pa-hitachi) 862111ba1daSmrg cpu=hppa1.1 863111ba1daSmrg vendor=hitachi 864111ba1daSmrg basic_os=hiuxwe2 8658ff16396Smrg ;; 8668ff16396Smrg pbd) 867111ba1daSmrg cpu=sparc 868111ba1daSmrg vendor=tti 8698ff16396Smrg ;; 8708ff16396Smrg pbb) 871111ba1daSmrg cpu=m68k 872111ba1daSmrg vendor=tti 8738ff16396Smrg ;; 874111ba1daSmrg pc532) 875111ba1daSmrg cpu=ns32k 876111ba1daSmrg vendor=pc532 8778ff16396Smrg ;; 8788ff16396Smrg pn) 879111ba1daSmrg cpu=pn 880111ba1daSmrg vendor=gould 8818ff16396Smrg ;; 882111ba1daSmrg power) 883111ba1daSmrg cpu=power 884111ba1daSmrg vendor=ibm 8858ff16396Smrg ;; 8868ff16396Smrg ps2) 887111ba1daSmrg cpu=i386 888111ba1daSmrg vendor=ibm 8898ff16396Smrg ;; 8908ff16396Smrg rm[46]00) 891111ba1daSmrg cpu=mips 892111ba1daSmrg vendor=siemens 8938ff16396Smrg ;; 8948ff16396Smrg rtpc | rtpc-*) 895111ba1daSmrg cpu=romp 896111ba1daSmrg vendor=ibm 8978ff16396Smrg ;; 898111ba1daSmrg sde) 899111ba1daSmrg cpu=mipsisa32 900111ba1daSmrg vendor=sde 901111ba1daSmrg basic_os=${basic_os:-elf} 9028ff16396Smrg ;; 903111ba1daSmrg simso-wrs) 904111ba1daSmrg cpu=sparclite 905111ba1daSmrg vendor=wrs 906111ba1daSmrg basic_os=vxworks 9078ff16396Smrg ;; 908111ba1daSmrg tower | tower-32) 909111ba1daSmrg cpu=m68k 910111ba1daSmrg vendor=ncr 9118ff16396Smrg ;; 912111ba1daSmrg vpp*|vx|vx-*) 913111ba1daSmrg cpu=f301 914111ba1daSmrg vendor=fujitsu 9158ff16396Smrg ;; 916111ba1daSmrg w65) 917111ba1daSmrg cpu=w65 918111ba1daSmrg vendor=wdc 9198ff16396Smrg ;; 920111ba1daSmrg w89k-*) 921111ba1daSmrg cpu=hppa1.1 922111ba1daSmrg vendor=winbond 923111ba1daSmrg basic_os=proelf 9248ff16396Smrg ;; 925111ba1daSmrg none) 926111ba1daSmrg cpu=none 927111ba1daSmrg vendor=none 9288ff16396Smrg ;; 929111ba1daSmrg leon|leon[3-9]) 930111ba1daSmrg cpu=sparc 931111ba1daSmrg vendor=$basic_machine 9328ff16396Smrg ;; 933111ba1daSmrg leon-*|leon[3-9]-*) 934111ba1daSmrg cpu=sparc 935111ba1daSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9368ff16396Smrg ;; 937111ba1daSmrg 938111ba1daSmrg *-*) 939111ba1daSmrg # shellcheck disable=SC2162 940111ba1daSmrg saved_IFS=$IFS 941111ba1daSmrg IFS="-" read cpu vendor <<EOF 942111ba1daSmrg$basic_machine 943111ba1daSmrgEOF 944111ba1daSmrg IFS=$saved_IFS 9458ff16396Smrg ;; 946111ba1daSmrg # We use `pc' rather than `unknown' 947111ba1daSmrg # because (1) that's what they normally are, and 948111ba1daSmrg # (2) the word "unknown" tends to confuse beginning users. 949111ba1daSmrg i*86 | x86_64) 950111ba1daSmrg cpu=$basic_machine 951111ba1daSmrg vendor=pc 9528ff16396Smrg ;; 953111ba1daSmrg # These rules are duplicated from below for sake of the special case above; 954111ba1daSmrg # i.e. things that normalized to x86 arches should also default to "pc" 955111ba1daSmrg pc98) 956111ba1daSmrg cpu=i386 957111ba1daSmrg vendor=pc 9588ff16396Smrg ;; 959111ba1daSmrg x64 | amd64) 960111ba1daSmrg cpu=x86_64 961111ba1daSmrg vendor=pc 9628ff16396Smrg ;; 963111ba1daSmrg # Recognize the basic CPU types without company name. 964111ba1daSmrg *) 965111ba1daSmrg cpu=$basic_machine 966111ba1daSmrg vendor=unknown 9678ff16396Smrg ;; 968111ba1daSmrgesac 969111ba1daSmrg 970111ba1daSmrgunset -v basic_machine 971111ba1daSmrg 972111ba1daSmrg# Decode basic machines in the full and proper CPU-Company form. 973111ba1daSmrgcase $cpu-$vendor in 974111ba1daSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975111ba1daSmrg # some cases the only manufacturer, in others, it is the most popular. 976111ba1daSmrg craynv-unknown) 977111ba1daSmrg vendor=cray 978111ba1daSmrg basic_os=${basic_os:-unicosmp} 9798ff16396Smrg ;; 980111ba1daSmrg c90-unknown | c90-cray) 981111ba1daSmrg vendor=cray 982111ba1daSmrg basic_os=${Basic_os:-unicos} 9838ff16396Smrg ;; 984111ba1daSmrg fx80-unknown) 985111ba1daSmrg vendor=alliant 9868ff16396Smrg ;; 987111ba1daSmrg romp-unknown) 988111ba1daSmrg vendor=ibm 9898ff16396Smrg ;; 990111ba1daSmrg mmix-unknown) 991111ba1daSmrg vendor=knuth 9928ff16396Smrg ;; 993111ba1daSmrg microblaze-unknown | microblazeel-unknown) 994111ba1daSmrg vendor=xilinx 9958ff16396Smrg ;; 996111ba1daSmrg rs6000-unknown) 997111ba1daSmrg vendor=ibm 9988ff16396Smrg ;; 999111ba1daSmrg vax-unknown) 1000111ba1daSmrg vendor=dec 10018ff16396Smrg ;; 1002111ba1daSmrg pdp11-unknown) 1003111ba1daSmrg vendor=dec 10048ff16396Smrg ;; 1005111ba1daSmrg we32k-unknown) 1006111ba1daSmrg vendor=att 10078ff16396Smrg ;; 1008111ba1daSmrg cydra-unknown) 1009111ba1daSmrg vendor=cydrome 10108ff16396Smrg ;; 1011111ba1daSmrg i370-ibm*) 1012111ba1daSmrg vendor=ibm 10138ff16396Smrg ;; 1014111ba1daSmrg orion-unknown) 1015111ba1daSmrg vendor=highlevel 10168ff16396Smrg ;; 1017111ba1daSmrg xps-unknown | xps100-unknown) 1018111ba1daSmrg cpu=xps100 1019111ba1daSmrg vendor=honeywell 10208ff16396Smrg ;; 1021111ba1daSmrg 1022111ba1daSmrg # Here we normalize CPU types with a missing or matching vendor 1023111ba1daSmrg armh-unknown | armh-alt) 1024111ba1daSmrg cpu=armv7l 1025111ba1daSmrg vendor=alt 1026111ba1daSmrg basic_os=${basic_os:-linux-gnueabihf} 10278ff16396Smrg ;; 1028111ba1daSmrg dpx20-unknown | dpx20-bull) 1029111ba1daSmrg cpu=rs6000 1030111ba1daSmrg vendor=bull 1031111ba1daSmrg basic_os=${basic_os:-bosx} 10328ff16396Smrg ;; 1033111ba1daSmrg 1034111ba1daSmrg # Here we normalize CPU types irrespective of the vendor 1035111ba1daSmrg amd64-*) 1036111ba1daSmrg cpu=x86_64 10378ff16396Smrg ;; 1038111ba1daSmrg blackfin-*) 1039111ba1daSmrg cpu=bfin 1040111ba1daSmrg basic_os=linux 10418ff16396Smrg ;; 1042111ba1daSmrg c54x-*) 1043111ba1daSmrg cpu=tic54x 10448ff16396Smrg ;; 1045111ba1daSmrg c55x-*) 1046111ba1daSmrg cpu=tic55x 10478ff16396Smrg ;; 1048111ba1daSmrg c6x-*) 1049111ba1daSmrg cpu=tic6x 10508ff16396Smrg ;; 1051111ba1daSmrg e500v[12]-*) 1052111ba1daSmrg cpu=powerpc 1053111ba1daSmrg basic_os=${basic_os}"spe" 10548ff16396Smrg ;; 1055111ba1daSmrg mips3*-*) 1056111ba1daSmrg cpu=mips64 10578ff16396Smrg ;; 1058111ba1daSmrg ms1-*) 1059111ba1daSmrg cpu=mt 10608ff16396Smrg ;; 1061111ba1daSmrg m68knommu-*) 1062111ba1daSmrg cpu=m68k 1063111ba1daSmrg basic_os=linux 10648ff16396Smrg ;; 1065111ba1daSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1066111ba1daSmrg cpu=s12z 10678ff16396Smrg ;; 1068111ba1daSmrg openrisc-*) 1069111ba1daSmrg cpu=or32 10708ff16396Smrg ;; 1071111ba1daSmrg parisc-*) 1072111ba1daSmrg cpu=hppa 1073111ba1daSmrg basic_os=linux 10748ff16396Smrg ;; 1075111ba1daSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1076111ba1daSmrg cpu=i586 10778ff16396Smrg ;; 1078111ba1daSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1079111ba1daSmrg cpu=i686 10808ff16396Smrg ;; 1081111ba1daSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1082111ba1daSmrg cpu=i686 10838ff16396Smrg ;; 1084111ba1daSmrg pentium4-*) 1085111ba1daSmrg cpu=i786 10868ff16396Smrg ;; 1087111ba1daSmrg pc98-*) 1088111ba1daSmrg cpu=i386 10898ff16396Smrg ;; 1090111ba1daSmrg ppc-* | ppcbe-*) 1091111ba1daSmrg cpu=powerpc 10928ff16396Smrg ;; 1093111ba1daSmrg ppcle-* | powerpclittle-*) 1094111ba1daSmrg cpu=powerpcle 10958ff16396Smrg ;; 1096111ba1daSmrg ppc64-*) 1097111ba1daSmrg cpu=powerpc64 10988ff16396Smrg ;; 1099111ba1daSmrg ppc64le-* | powerpc64little-*) 1100111ba1daSmrg cpu=powerpc64le 11018ff16396Smrg ;; 1102111ba1daSmrg sb1-*) 1103111ba1daSmrg cpu=mipsisa64sb1 11048ff16396Smrg ;; 1105111ba1daSmrg sb1el-*) 1106111ba1daSmrg cpu=mipsisa64sb1el 11078ff16396Smrg ;; 1108111ba1daSmrg sh5e[lb]-*) 1109111ba1daSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11108ff16396Smrg ;; 1111111ba1daSmrg spur-*) 1112111ba1daSmrg cpu=spur 11138ff16396Smrg ;; 1114111ba1daSmrg strongarm-* | thumb-*) 1115111ba1daSmrg cpu=arm 11168ff16396Smrg ;; 1117111ba1daSmrg tx39-*) 1118111ba1daSmrg cpu=mipstx39 11198ff16396Smrg ;; 1120111ba1daSmrg tx39el-*) 1121111ba1daSmrg cpu=mipstx39el 11228ff16396Smrg ;; 1123111ba1daSmrg x64-*) 1124111ba1daSmrg cpu=x86_64 11258ff16396Smrg ;; 1126111ba1daSmrg xscale-* | xscalee[bl]-*) 1127111ba1daSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11288ff16396Smrg ;; 1129111ba1daSmrg arm64-* | aarch64le-*) 1130111ba1daSmrg cpu=aarch64 11318ff16396Smrg ;; 1132111ba1daSmrg 1133111ba1daSmrg # Recognize the canonical CPU Types that limit and/or modify the 1134111ba1daSmrg # company names they are paired with. 1135111ba1daSmrg cr16-*) 1136111ba1daSmrg basic_os=${basic_os:-elf} 11378ff16396Smrg ;; 1138111ba1daSmrg crisv32-* | etraxfs*-*) 1139111ba1daSmrg cpu=crisv32 1140111ba1daSmrg vendor=axis 11418ff16396Smrg ;; 1142111ba1daSmrg cris-* | etrax*-*) 1143111ba1daSmrg cpu=cris 1144111ba1daSmrg vendor=axis 11458ff16396Smrg ;; 1146111ba1daSmrg crx-*) 1147111ba1daSmrg basic_os=${basic_os:-elf} 11488ff16396Smrg ;; 1149111ba1daSmrg neo-tandem) 1150111ba1daSmrg cpu=neo 1151111ba1daSmrg vendor=tandem 11528ff16396Smrg ;; 1153111ba1daSmrg nse-tandem) 1154111ba1daSmrg cpu=nse 1155111ba1daSmrg vendor=tandem 11568ff16396Smrg ;; 1157111ba1daSmrg nsr-tandem) 1158111ba1daSmrg cpu=nsr 1159111ba1daSmrg vendor=tandem 11608ff16396Smrg ;; 1161111ba1daSmrg nsv-tandem) 1162111ba1daSmrg cpu=nsv 1163111ba1daSmrg vendor=tandem 11648ff16396Smrg ;; 1165111ba1daSmrg nsx-tandem) 1166111ba1daSmrg cpu=nsx 1167111ba1daSmrg vendor=tandem 11688ff16396Smrg ;; 1169111ba1daSmrg mipsallegrexel-sony) 1170111ba1daSmrg cpu=mipsallegrexel 1171111ba1daSmrg vendor=sony 11728ff16396Smrg ;; 1173111ba1daSmrg tile*-*) 1174111ba1daSmrg basic_os=${basic_os:-linux-gnu} 11758ff16396Smrg ;; 1176111ba1daSmrg 11778ff16396Smrg *) 1178111ba1daSmrg # Recognize the canonical CPU types that are allowed with any 1179111ba1daSmrg # company name. 1180111ba1daSmrg case $cpu in 1181111ba1daSmrg 1750a | 580 \ 1182111ba1daSmrg | a29k \ 1183111ba1daSmrg | aarch64 | aarch64_be \ 1184111ba1daSmrg | abacus \ 1185111ba1daSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1186111ba1daSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1187111ba1daSmrg | alphapca5[67] | alpha64pca5[67] \ 1188111ba1daSmrg | am33_2.0 \ 1189111ba1daSmrg | amdgcn \ 1190111ba1daSmrg | arc | arceb | arc32 | arc64 \ 1191111ba1daSmrg | arm | arm[lb]e | arme[lb] | armv* \ 1192111ba1daSmrg | avr | avr32 \ 1193111ba1daSmrg | asmjs \ 1194111ba1daSmrg | ba \ 1195111ba1daSmrg | be32 | be64 \ 1196111ba1daSmrg | bfin | bpf | bs2000 \ 1197111ba1daSmrg | c[123]* | c30 | [cjt]90 | c4x \ 1198111ba1daSmrg | c8051 | clipper | craynv | csky | cydra \ 1199111ba1daSmrg | d10v | d30v | dlx | dsp16xx \ 1200111ba1daSmrg | e2k | elxsi | epiphany \ 1201111ba1daSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1202111ba1daSmrg | h8300 | h8500 \ 1203111ba1daSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1204111ba1daSmrg | hexagon \ 1205111ba1daSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1206111ba1daSmrg | ip2k | iq2000 \ 1207111ba1daSmrg | k1om \ 1208111ba1daSmrg | le32 | le64 \ 1209111ba1daSmrg | lm32 \ 1210111ba1daSmrg | loongarch32 | loongarch64 \ 1211111ba1daSmrg | m32c | m32r | m32rle \ 1212111ba1daSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1213111ba1daSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1214111ba1daSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1215111ba1daSmrg | microblaze | microblazeel \ 1216111ba1daSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1217111ba1daSmrg | mips16 \ 1218111ba1daSmrg | mips64 | mips64eb | mips64el \ 1219111ba1daSmrg | mips64octeon | mips64octeonel \ 1220111ba1daSmrg | mips64orion | mips64orionel \ 1221111ba1daSmrg | mips64r5900 | mips64r5900el \ 1222111ba1daSmrg | mips64vr | mips64vrel \ 1223111ba1daSmrg | mips64vr4100 | mips64vr4100el \ 1224111ba1daSmrg | mips64vr4300 | mips64vr4300el \ 1225111ba1daSmrg | mips64vr5000 | mips64vr5000el \ 1226111ba1daSmrg | mips64vr5900 | mips64vr5900el \ 1227111ba1daSmrg | mipsisa32 | mipsisa32el \ 1228111ba1daSmrg | mipsisa32r2 | mipsisa32r2el \ 1229111ba1daSmrg | mipsisa32r3 | mipsisa32r3el \ 1230111ba1daSmrg | mipsisa32r5 | mipsisa32r5el \ 1231111ba1daSmrg | mipsisa32r6 | mipsisa32r6el \ 1232111ba1daSmrg | mipsisa64 | mipsisa64el \ 1233111ba1daSmrg | mipsisa64r2 | mipsisa64r2el \ 1234111ba1daSmrg | mipsisa64r3 | mipsisa64r3el \ 1235111ba1daSmrg | mipsisa64r5 | mipsisa64r5el \ 1236111ba1daSmrg | mipsisa64r6 | mipsisa64r6el \ 1237111ba1daSmrg | mipsisa64sb1 | mipsisa64sb1el \ 1238111ba1daSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 1239111ba1daSmrg | mipsr5900 | mipsr5900el \ 1240111ba1daSmrg | mipstx39 | mipstx39el \ 1241111ba1daSmrg | mmix \ 1242111ba1daSmrg | mn10200 | mn10300 \ 1243111ba1daSmrg | moxie \ 1244111ba1daSmrg | mt \ 1245111ba1daSmrg | msp430 \ 1246111ba1daSmrg | nds32 | nds32le | nds32be \ 1247111ba1daSmrg | nfp \ 1248111ba1daSmrg | nios | nios2 | nios2eb | nios2el \ 1249111ba1daSmrg | none | np1 | ns16k | ns32k | nvptx \ 1250111ba1daSmrg | open8 \ 1251111ba1daSmrg | or1k* \ 1252111ba1daSmrg | or32 \ 1253111ba1daSmrg | orion \ 1254111ba1daSmrg | picochip \ 1255111ba1daSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1256111ba1daSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1257111ba1daSmrg | pru \ 1258111ba1daSmrg | pyramid \ 1259111ba1daSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1260111ba1daSmrg | rl78 | romp | rs6000 | rx \ 1261111ba1daSmrg | s390 | s390x \ 1262111ba1daSmrg | score \ 1263111ba1daSmrg | sh | shl \ 1264111ba1daSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1265111ba1daSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1266111ba1daSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1267111ba1daSmrg | sparclite \ 1268111ba1daSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1269111ba1daSmrg | spu \ 1270111ba1daSmrg | tahoe \ 1271111ba1daSmrg | thumbv7* \ 1272111ba1daSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1273111ba1daSmrg | tron \ 1274111ba1daSmrg | ubicom32 \ 1275111ba1daSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1276111ba1daSmrg | vax \ 1277111ba1daSmrg | visium \ 1278111ba1daSmrg | w65 \ 1279111ba1daSmrg | wasm32 | wasm64 \ 1280111ba1daSmrg | we32k \ 1281111ba1daSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1282111ba1daSmrg | xstormy16 | xtensa* \ 1283111ba1daSmrg | ymp \ 1284111ba1daSmrg | z8k | z80) 1285111ba1daSmrg ;; 1286111ba1daSmrg 1287111ba1daSmrg *) 1288111ba1daSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1289111ba1daSmrg exit 1 1290111ba1daSmrg ;; 1291111ba1daSmrg esac 12928ff16396Smrg ;; 12938ff16396Smrgesac 12948ff16396Smrg 12958ff16396Smrg# Here we canonicalize certain aliases for manufacturers. 1296111ba1daSmrgcase $vendor in 1297111ba1daSmrg digital*) 1298111ba1daSmrg vendor=dec 12998ff16396Smrg ;; 1300111ba1daSmrg commodore*) 1301111ba1daSmrg vendor=cbm 13028ff16396Smrg ;; 13038ff16396Smrg *) 13048ff16396Smrg ;; 13058ff16396Smrgesac 13068ff16396Smrg 13078ff16396Smrg# Decode manufacturer-specific aliases for certain operating systems. 13088ff16396Smrg 1309111ba1daSmrgif test x$basic_os != x 13108ff16396Smrgthen 1311111ba1daSmrg 1312111ba1daSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1313111ba1daSmrg# set os. 1314111ba1daSmrgcase $basic_os in 1315111ba1daSmrg gnu/linux*) 1316111ba1daSmrg kernel=linux 1317111ba1daSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1318111ba1daSmrg ;; 1319111ba1daSmrg os2-emx) 1320111ba1daSmrg kernel=os2 1321111ba1daSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1322111ba1daSmrg ;; 1323111ba1daSmrg nto-qnx*) 1324111ba1daSmrg kernel=nto 1325111ba1daSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1326111ba1daSmrg ;; 1327111ba1daSmrg *-*) 1328111ba1daSmrg # shellcheck disable=SC2162 1329111ba1daSmrg saved_IFS=$IFS 1330111ba1daSmrg IFS="-" read kernel os <<EOF 1331111ba1daSmrg$basic_os 1332111ba1daSmrgEOF 1333111ba1daSmrg IFS=$saved_IFS 1334111ba1daSmrg ;; 1335111ba1daSmrg # Default OS when just kernel was specified 1336111ba1daSmrg nto*) 1337111ba1daSmrg kernel=nto 1338111ba1daSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1339111ba1daSmrg ;; 1340111ba1daSmrg linux*) 1341111ba1daSmrg kernel=linux 1342111ba1daSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1343111ba1daSmrg ;; 1344111ba1daSmrg managarm*) 1345111ba1daSmrg kernel=managarm 1346111ba1daSmrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1347111ba1daSmrg ;; 1348111ba1daSmrg *) 1349111ba1daSmrg kernel= 1350111ba1daSmrg os=$basic_os 1351111ba1daSmrg ;; 1352111ba1daSmrgesac 1353111ba1daSmrg 1354111ba1daSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1355111ba1daSmrg# etc.) 13568ff16396Smrgcase $os in 1357111ba1daSmrg # First match some system type aliases that might get confused 1358111ba1daSmrg # with valid system types. 1359111ba1daSmrg # solaris* is a basic system type, with this one exception. 1360111ba1daSmrg auroraux) 1361111ba1daSmrg os=auroraux 1362d5d8cc55Smrg ;; 1363111ba1daSmrg bluegene*) 1364111ba1daSmrg os=cnk 13658ff16396Smrg ;; 1366111ba1daSmrg solaris1 | solaris1.*) 1367111ba1daSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13688ff16396Smrg ;; 1369111ba1daSmrg solaris) 1370111ba1daSmrg os=solaris2 13718ff16396Smrg ;; 1372111ba1daSmrg unixware*) 1373111ba1daSmrg os=sysv4.2uw 13748ff16396Smrg ;; 1375111ba1daSmrg # es1800 is here to avoid being matched by es* (a different OS) 1376111ba1daSmrg es1800*) 1377111ba1daSmrg os=ose 13788ff16396Smrg ;; 1379111ba1daSmrg # Some version numbers need modification 1380111ba1daSmrg chorusos*) 1381111ba1daSmrg os=chorusos 13828ff16396Smrg ;; 1383111ba1daSmrg isc) 1384111ba1daSmrg os=isc2.2 13858ff16396Smrg ;; 1386111ba1daSmrg sco6) 1387111ba1daSmrg os=sco5v6 13888ff16396Smrg ;; 1389111ba1daSmrg sco5) 1390111ba1daSmrg os=sco3.2v5 13918ff16396Smrg ;; 1392111ba1daSmrg sco4) 1393111ba1daSmrg os=sco3.2v4 13948ff16396Smrg ;; 1395111ba1daSmrg sco3.2.[4-9]*) 1396111ba1daSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13978ff16396Smrg ;; 1398111ba1daSmrg sco*v* | scout) 1399111ba1daSmrg # Don't match below 14008ff16396Smrg ;; 1401111ba1daSmrg sco*) 1402111ba1daSmrg os=sco3.2v2 14038ff16396Smrg ;; 1404111ba1daSmrg psos*) 1405111ba1daSmrg os=psos 14068ff16396Smrg ;; 1407111ba1daSmrg qnx*) 1408111ba1daSmrg os=qnx 14098ff16396Smrg ;; 1410111ba1daSmrg hiux*) 1411111ba1daSmrg os=hiuxwe2 14128ff16396Smrg ;; 1413111ba1daSmrg lynx*178) 1414111ba1daSmrg os=lynxos178 14158ff16396Smrg ;; 1416111ba1daSmrg lynx*5) 1417111ba1daSmrg os=lynxos5 14188ff16396Smrg ;; 1419111ba1daSmrg lynxos*) 1420111ba1daSmrg # don't get caught up in next wildcard 14218ff16396Smrg ;; 1422111ba1daSmrg lynx*) 1423111ba1daSmrg os=lynxos 14248ff16396Smrg ;; 1425111ba1daSmrg mac[0-9]*) 1426111ba1daSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 14278ff16396Smrg ;; 1428111ba1daSmrg opened*) 1429111ba1daSmrg os=openedition 14308ff16396Smrg ;; 1431111ba1daSmrg os400*) 1432111ba1daSmrg os=os400 14338ff16396Smrg ;; 1434111ba1daSmrg sunos5*) 1435111ba1daSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14368ff16396Smrg ;; 1437111ba1daSmrg sunos6*) 1438111ba1daSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14398ff16396Smrg ;; 1440111ba1daSmrg wince*) 1441111ba1daSmrg os=wince 14428ff16396Smrg ;; 1443111ba1daSmrg utek*) 1444111ba1daSmrg os=bsd 14458ff16396Smrg ;; 1446111ba1daSmrg dynix*) 1447111ba1daSmrg os=bsd 14488ff16396Smrg ;; 1449111ba1daSmrg acis*) 1450111ba1daSmrg os=aos 14518ff16396Smrg ;; 1452111ba1daSmrg atheos*) 1453111ba1daSmrg os=atheos 14548ff16396Smrg ;; 1455111ba1daSmrg syllable*) 1456111ba1daSmrg os=syllable 14578ff16396Smrg ;; 1458111ba1daSmrg 386bsd) 1459111ba1daSmrg os=bsd 14608ff16396Smrg ;; 1461111ba1daSmrg ctix* | uts*) 1462111ba1daSmrg os=sysv 14638ff16396Smrg ;; 1464111ba1daSmrg nova*) 1465111ba1daSmrg os=rtmk-nova 14668ff16396Smrg ;; 1467111ba1daSmrg ns2) 1468111ba1daSmrg os=nextstep2 14698ff16396Smrg ;; 1470111ba1daSmrg # Preserve the version number of sinix5. 1471111ba1daSmrg sinix5.*) 1472111ba1daSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14738ff16396Smrg ;; 1474111ba1daSmrg sinix*) 1475111ba1daSmrg os=sysv4 14768ff16396Smrg ;; 1477111ba1daSmrg tpf*) 1478111ba1daSmrg os=tpf 14798ff16396Smrg ;; 1480111ba1daSmrg triton*) 1481111ba1daSmrg os=sysv3 14828ff16396Smrg ;; 1483111ba1daSmrg oss*) 1484111ba1daSmrg os=sysv3 14858ff16396Smrg ;; 1486111ba1daSmrg svr4*) 1487111ba1daSmrg os=sysv4 14888ff16396Smrg ;; 1489111ba1daSmrg svr3) 1490111ba1daSmrg os=sysv3 14918ff16396Smrg ;; 1492111ba1daSmrg sysvr4) 1493111ba1daSmrg os=sysv4 14948ff16396Smrg ;; 1495111ba1daSmrg ose*) 1496111ba1daSmrg os=ose 14978ff16396Smrg ;; 1498111ba1daSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1499111ba1daSmrg os=mint 15008ff16396Smrg ;; 1501111ba1daSmrg dicos*) 1502111ba1daSmrg os=dicos 15038ff16396Smrg ;; 1504111ba1daSmrg pikeos*) 1505111ba1daSmrg # Until real need of OS specific support for 1506111ba1daSmrg # particular features comes up, bare metal 1507111ba1daSmrg # configurations are quite functional. 1508111ba1daSmrg case $cpu in 1509111ba1daSmrg arm*) 1510111ba1daSmrg os=eabi 1511111ba1daSmrg ;; 1512111ba1daSmrg *) 1513111ba1daSmrg os=elf 1514111ba1daSmrg ;; 1515111ba1daSmrg esac 15168ff16396Smrg ;; 15178ff16396Smrg *) 1518111ba1daSmrg # No normalization, but not necessarily accepted, that comes below. 15198ff16396Smrg ;; 15208ff16396Smrgesac 1521111ba1daSmrg 15228ff16396Smrgelse 15238ff16396Smrg 15248ff16396Smrg# Here we handle the default operating systems that come with various machines. 15258ff16396Smrg# The value should be what the vendor currently ships out the door with their 15268ff16396Smrg# machine or put another way, the most popular os provided with the machine. 15278ff16396Smrg 15288ff16396Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15298ff16396Smrg# "-sun"), then you have to tell the case statement up towards the top 15308ff16396Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15318ff16396Smrg# will signal an error saying that MANUFACTURER isn't an operating 15328ff16396Smrg# system, and we'll never get to this point. 15338ff16396Smrg 1534111ba1daSmrgkernel= 1535111ba1daSmrgcase $cpu-$vendor in 1536111ba1daSmrg score-*) 1537111ba1daSmrg os=elf 15388ff16396Smrg ;; 1539111ba1daSmrg spu-*) 1540111ba1daSmrg os=elf 15418ff16396Smrg ;; 15428ff16396Smrg *-acorn) 1543111ba1daSmrg os=riscix1.2 15448ff16396Smrg ;; 15458ff16396Smrg arm*-rebel) 1546111ba1daSmrg kernel=linux 1547111ba1daSmrg os=gnu 15488ff16396Smrg ;; 15498ff16396Smrg arm*-semi) 1550111ba1daSmrg os=aout 1551111ba1daSmrg ;; 1552111ba1daSmrg c4x-* | tic4x-*) 1553111ba1daSmrg os=coff 1554111ba1daSmrg ;; 1555111ba1daSmrg c8051-*) 1556111ba1daSmrg os=elf 1557111ba1daSmrg ;; 1558111ba1daSmrg clipper-intergraph) 1559111ba1daSmrg os=clix 15608ff16396Smrg ;; 1561111ba1daSmrg hexagon-*) 1562111ba1daSmrg os=elf 15638ff16396Smrg ;; 1564d5d8cc55Smrg tic54x-*) 1565111ba1daSmrg os=coff 1566d5d8cc55Smrg ;; 1567d5d8cc55Smrg tic55x-*) 1568111ba1daSmrg os=coff 1569d5d8cc55Smrg ;; 1570d5d8cc55Smrg tic6x-*) 1571111ba1daSmrg os=coff 1572d5d8cc55Smrg ;; 15738ff16396Smrg # This must come before the *-dec entry. 15748ff16396Smrg pdp10-*) 1575111ba1daSmrg os=tops20 15768ff16396Smrg ;; 15778ff16396Smrg pdp11-*) 1578111ba1daSmrg os=none 15798ff16396Smrg ;; 15808ff16396Smrg *-dec | vax-*) 1581111ba1daSmrg os=ultrix4.2 15828ff16396Smrg ;; 15838ff16396Smrg m68*-apollo) 1584111ba1daSmrg os=domain 15858ff16396Smrg ;; 15868ff16396Smrg i386-sun) 1587111ba1daSmrg os=sunos4.0.2 15888ff16396Smrg ;; 15898ff16396Smrg m68000-sun) 1590111ba1daSmrg os=sunos3 15918ff16396Smrg ;; 15928ff16396Smrg m68*-cisco) 1593111ba1daSmrg os=aout 15948ff16396Smrg ;; 1595111ba1daSmrg mep-*) 1596111ba1daSmrg os=elf 15978ff16396Smrg ;; 15988ff16396Smrg mips*-cisco) 1599111ba1daSmrg os=elf 16008ff16396Smrg ;; 16018ff16396Smrg mips*-*) 1602111ba1daSmrg os=elf 16038ff16396Smrg ;; 16048ff16396Smrg or32-*) 1605111ba1daSmrg os=coff 16068ff16396Smrg ;; 16078ff16396Smrg *-tti) # must be before sparc entry or we get the wrong os. 1608111ba1daSmrg os=sysv3 16098ff16396Smrg ;; 16108ff16396Smrg sparc-* | *-sun) 1611111ba1daSmrg os=sunos4.1.1 16128ff16396Smrg ;; 1613111ba1daSmrg pru-*) 1614111ba1daSmrg os=elf 16158ff16396Smrg ;; 1616111ba1daSmrg *-be) 1617111ba1daSmrg os=beos 16188ff16396Smrg ;; 16198ff16396Smrg *-ibm) 1620111ba1daSmrg os=aix 16218ff16396Smrg ;; 1622111ba1daSmrg *-knuth) 1623111ba1daSmrg os=mmixware 16248ff16396Smrg ;; 16258ff16396Smrg *-wec) 1626111ba1daSmrg os=proelf 16278ff16396Smrg ;; 16288ff16396Smrg *-winbond) 1629111ba1daSmrg os=proelf 16308ff16396Smrg ;; 16318ff16396Smrg *-oki) 1632111ba1daSmrg os=proelf 16338ff16396Smrg ;; 16348ff16396Smrg *-hp) 1635111ba1daSmrg os=hpux 16368ff16396Smrg ;; 16378ff16396Smrg *-hitachi) 1638111ba1daSmrg os=hiux 16398ff16396Smrg ;; 16408ff16396Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1641111ba1daSmrg os=sysv 16428ff16396Smrg ;; 16438ff16396Smrg *-cbm) 1644111ba1daSmrg os=amigaos 16458ff16396Smrg ;; 16468ff16396Smrg *-dg) 1647111ba1daSmrg os=dgux 16488ff16396Smrg ;; 16498ff16396Smrg *-dolphin) 1650111ba1daSmrg os=sysv3 16518ff16396Smrg ;; 16528ff16396Smrg m68k-ccur) 1653111ba1daSmrg os=rtu 16548ff16396Smrg ;; 16558ff16396Smrg m88k-omron*) 1656111ba1daSmrg os=luna 16578ff16396Smrg ;; 1658111ba1daSmrg *-next) 1659111ba1daSmrg os=nextstep 16608ff16396Smrg ;; 16618ff16396Smrg *-sequent) 1662111ba1daSmrg os=ptx 16638ff16396Smrg ;; 16648ff16396Smrg *-crds) 1665111ba1daSmrg os=unos 16668ff16396Smrg ;; 16678ff16396Smrg *-ns) 1668111ba1daSmrg os=genix 16698ff16396Smrg ;; 16708ff16396Smrg i370-*) 1671111ba1daSmrg os=mvs 16728ff16396Smrg ;; 16738ff16396Smrg *-gould) 1674111ba1daSmrg os=sysv 16758ff16396Smrg ;; 16768ff16396Smrg *-highlevel) 1677111ba1daSmrg os=bsd 16788ff16396Smrg ;; 16798ff16396Smrg *-encore) 1680111ba1daSmrg os=bsd 16818ff16396Smrg ;; 16828ff16396Smrg *-sgi) 1683111ba1daSmrg os=irix 16848ff16396Smrg ;; 16858ff16396Smrg *-siemens) 1686111ba1daSmrg os=sysv4 16878ff16396Smrg ;; 16888ff16396Smrg *-masscomp) 1689111ba1daSmrg os=rtu 16908ff16396Smrg ;; 16918ff16396Smrg f30[01]-fujitsu | f700-fujitsu) 1692111ba1daSmrg os=uxpv 16938ff16396Smrg ;; 16948ff16396Smrg *-rom68k) 1695111ba1daSmrg os=coff 16968ff16396Smrg ;; 16978ff16396Smrg *-*bug) 1698111ba1daSmrg os=coff 16998ff16396Smrg ;; 17008ff16396Smrg *-apple) 1701111ba1daSmrg os=macos 17028ff16396Smrg ;; 17038ff16396Smrg *-atari*) 1704111ba1daSmrg os=mint 1705111ba1daSmrg ;; 1706111ba1daSmrg *-wrs) 1707111ba1daSmrg os=vxworks 17088ff16396Smrg ;; 17098ff16396Smrg *) 1710111ba1daSmrg os=none 17118ff16396Smrg ;; 17128ff16396Smrgesac 1713111ba1daSmrg 17148ff16396Smrgfi 17158ff16396Smrg 1716111ba1daSmrg# Now, validate our (potentially fixed-up) OS. 1717111ba1daSmrgcase $os in 1718111ba1daSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1719111ba1daSmrg musl* | newlib* | relibc* | uclibc*) 1720111ba1daSmrg ;; 1721111ba1daSmrg # Likewise for "kernel-abi" 1722111ba1daSmrg eabi* | gnueabi*) 1723111ba1daSmrg ;; 1724111ba1daSmrg # VxWorks passes extra cpu info in the 4th filed. 1725111ba1daSmrg simlinux | simwindows | spe) 1726111ba1daSmrg ;; 1727111ba1daSmrg # Now accept the basic system types. 1728111ba1daSmrg # The portable systems comes first. 1729111ba1daSmrg # Each alternative MUST end in a * to match a version number. 1730111ba1daSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1731111ba1daSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1732111ba1daSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1733111ba1daSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1734111ba1daSmrg | hiux* | abug | nacl* | netware* | windows* \ 1735111ba1daSmrg | os9* | macos* | osx* | ios* \ 1736111ba1daSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1737111ba1daSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1738111ba1daSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1739111ba1daSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1740111ba1daSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1741111ba1daSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1742111ba1daSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1743111ba1daSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1744111ba1daSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1745111ba1daSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1746111ba1daSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1747111ba1daSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1748111ba1daSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1749111ba1daSmrg | midipix* | mingw32* | mingw64* | mint* \ 1750111ba1daSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1751111ba1daSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1752111ba1daSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1753111ba1daSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1754111ba1daSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1755111ba1daSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1756111ba1daSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1757111ba1daSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1758111ba1daSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1759111ba1daSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1760111ba1daSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1761111ba1daSmrg | fiwix* | mlibc* ) 1762111ba1daSmrg ;; 1763111ba1daSmrg # This one is extra strict with allowed versions 1764111ba1daSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1765111ba1daSmrg # Don't forget version if it is 3.2v4 or newer. 1766111ba1daSmrg ;; 1767111ba1daSmrg none) 1768111ba1daSmrg ;; 1769111ba1daSmrg kernel* ) 1770111ba1daSmrg # Restricted further below 1771111ba1daSmrg ;; 1772111ba1daSmrg *) 1773111ba1daSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1774111ba1daSmrg exit 1 1775111ba1daSmrg ;; 1776111ba1daSmrgesac 1777111ba1daSmrg 1778111ba1daSmrg# As a final step for OS-related things, validate the OS-kernel combination 1779111ba1daSmrg# (given a valid OS), if there is a kernel. 1780111ba1daSmrgcase $kernel-$os in 1781111ba1daSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1782111ba1daSmrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 1783111ba1daSmrg ;; 1784111ba1daSmrg uclinux-uclibc* ) 1785111ba1daSmrg ;; 1786111ba1daSmrg managarm-mlibc* | managarm-kernel* ) 1787111ba1daSmrg ;; 1788111ba1daSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 1789111ba1daSmrg # These are just libc implementations, not actual OSes, and thus 1790111ba1daSmrg # require a kernel. 1791111ba1daSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1792111ba1daSmrg exit 1 1793111ba1daSmrg ;; 1794111ba1daSmrg -kernel* ) 1795111ba1daSmrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 1796111ba1daSmrg exit 1 1797111ba1daSmrg ;; 1798111ba1daSmrg *-kernel* ) 1799111ba1daSmrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 1800111ba1daSmrg exit 1 1801111ba1daSmrg ;; 1802111ba1daSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1803111ba1daSmrg ;; 1804111ba1daSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1805111ba1daSmrg ;; 1806111ba1daSmrg nto-qnx*) 1807111ba1daSmrg ;; 1808111ba1daSmrg os2-emx) 1809111ba1daSmrg ;; 1810111ba1daSmrg *-eabi* | *-gnueabi*) 1811111ba1daSmrg ;; 1812111ba1daSmrg -*) 1813111ba1daSmrg # Blank kernel with real OS is always fine. 1814111ba1daSmrg ;; 1815111ba1daSmrg *-*) 1816111ba1daSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1817111ba1daSmrg exit 1 1818111ba1daSmrg ;; 1819111ba1daSmrgesac 1820111ba1daSmrg 18218ff16396Smrg# Here we handle the case where we know the os, and the CPU type, but not the 18228ff16396Smrg# manufacturer. We pick the logical manufacturer. 1823111ba1daSmrgcase $vendor in 1824111ba1daSmrg unknown) 1825111ba1daSmrg case $cpu-$os in 1826111ba1daSmrg *-riscix*) 18278ff16396Smrg vendor=acorn 18288ff16396Smrg ;; 1829111ba1daSmrg *-sunos*) 18308ff16396Smrg vendor=sun 18318ff16396Smrg ;; 1832111ba1daSmrg *-cnk* | *-aix*) 18338ff16396Smrg vendor=ibm 18348ff16396Smrg ;; 1835111ba1daSmrg *-beos*) 18368ff16396Smrg vendor=be 18378ff16396Smrg ;; 1838111ba1daSmrg *-hpux*) 18398ff16396Smrg vendor=hp 18408ff16396Smrg ;; 1841111ba1daSmrg *-mpeix*) 18428ff16396Smrg vendor=hp 18438ff16396Smrg ;; 1844111ba1daSmrg *-hiux*) 18458ff16396Smrg vendor=hitachi 18468ff16396Smrg ;; 1847111ba1daSmrg *-unos*) 18488ff16396Smrg vendor=crds 18498ff16396Smrg ;; 1850111ba1daSmrg *-dgux*) 18518ff16396Smrg vendor=dg 18528ff16396Smrg ;; 1853111ba1daSmrg *-luna*) 18548ff16396Smrg vendor=omron 18558ff16396Smrg ;; 1856111ba1daSmrg *-genix*) 18578ff16396Smrg vendor=ns 18588ff16396Smrg ;; 1859111ba1daSmrg *-clix*) 1860111ba1daSmrg vendor=intergraph 1861111ba1daSmrg ;; 1862111ba1daSmrg *-mvs* | *-opened*) 1863111ba1daSmrg vendor=ibm 1864111ba1daSmrg ;; 1865111ba1daSmrg *-os400*) 18668ff16396Smrg vendor=ibm 18678ff16396Smrg ;; 1868111ba1daSmrg s390-* | s390x-*) 18698ff16396Smrg vendor=ibm 18708ff16396Smrg ;; 1871111ba1daSmrg *-ptx*) 18728ff16396Smrg vendor=sequent 18738ff16396Smrg ;; 1874111ba1daSmrg *-tpf*) 18758ff16396Smrg vendor=ibm 18768ff16396Smrg ;; 1877111ba1daSmrg *-vxsim* | *-vxworks* | *-windiss*) 18788ff16396Smrg vendor=wrs 18798ff16396Smrg ;; 1880111ba1daSmrg *-aux*) 18818ff16396Smrg vendor=apple 18828ff16396Smrg ;; 1883111ba1daSmrg *-hms*) 18848ff16396Smrg vendor=hitachi 18858ff16396Smrg ;; 1886111ba1daSmrg *-mpw* | *-macos*) 18878ff16396Smrg vendor=apple 18888ff16396Smrg ;; 1889111ba1daSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18908ff16396Smrg vendor=atari 18918ff16396Smrg ;; 1892111ba1daSmrg *-vos*) 18938ff16396Smrg vendor=stratus 18948ff16396Smrg ;; 18958ff16396Smrg esac 18968ff16396Smrg ;; 18978ff16396Smrgesac 18988ff16396Smrg 1899111ba1daSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 19008ff16396Smrgexit 19018ff16396Smrg 19028ff16396Smrg# Local variables: 1903111ba1daSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 19048ff16396Smrg# time-stamp-start: "timestamp='" 19058ff16396Smrg# time-stamp-format: "%:y-%02m-%02d" 19068ff16396Smrg# time-stamp-end: "'" 19078ff16396Smrg# End: 1908