150539131Smrg#! /bin/sh 250539131Smrg# Configuration validation subroutine script. 3414cce6aSmrg# Copyright 1992-2023 Free Software Foundation, Inc. 450539131Smrg 5414cce6aSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 650539131Smrg 7414cce6aSmrgtimestamp='2023-01-21' 8414cce6aSmrg 9414cce6aSmrg# This file is free software; you can redistribute it and/or modify it 10414cce6aSmrg# under the terms of the GNU General Public License as published by 11414cce6aSmrg# the Free Software Foundation, either version 3 of the License, or 1250539131Smrg# (at your option) any later version. 1350539131Smrg# 14414cce6aSmrg# This program is distributed in the hope that it will be useful, but 15414cce6aSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16414cce6aSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17414cce6aSmrg# General Public License for more details. 1850539131Smrg# 1950539131Smrg# You should have received a copy of the GNU General Public License 20414cce6aSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 2150539131Smrg# 2250539131Smrg# As a special exception to the GNU General Public License, if you 2350539131Smrg# distribute this file as part of a program that contains a 2450539131Smrg# configuration script generated by Autoconf, you may include it under 25414cce6aSmrg# the same distribution terms that you use for the rest of that 26414cce6aSmrg# program. This Exception is an additional permission under section 7 27414cce6aSmrg# of the GNU General Public License, version 3 ("GPLv3"). 2850539131Smrg 2950539131Smrg 30414cce6aSmrg# Please send patches to <config-patches@gnu.org>. 3150539131Smrg# 3250539131Smrg# Configuration subroutine to validate and canonicalize a configuration type. 3350539131Smrg# Supply the specified configuration type as an argument. 3450539131Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 3550539131Smrg# Otherwise, we print the canonical config type on stdout and succeed. 3650539131Smrg 3744d8e951Smrg# You can get the latest version of this script from: 38414cce6aSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 3944d8e951Smrg 4050539131Smrg# This file is supposed to be the same for all GNU packages 4150539131Smrg# and recognize all the CPU types, system types and aliases 4250539131Smrg# that are meaningful with *any* GNU software. 4350539131Smrg# Each package is responsible for reporting which valid configurations 4450539131Smrg# it does not support. The user should be able to distinguish 4550539131Smrg# a failure to support a valid configuration from a meaningless 4650539131Smrg# configuration. 4750539131Smrg 4850539131Smrg# The goal of this file is to map all the various variations of a given 4950539131Smrg# machine specification into a single specification in the form: 5050539131Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5150539131Smrg# or in some cases, the newer four-part form: 5250539131Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5350539131Smrg# It is wrong to echo any other type of specification. 5450539131Smrg 55414cce6aSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 56414cce6aSmrg# about features and limitations of the classic Bourne shell that were 57414cce6aSmrg# superseded or lifted in POSIX. However, this script identifies a wide 58414cce6aSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59414cce6aSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60414cce6aSmrg# have a pre-POSIX /bin/sh. 61414cce6aSmrg 6250539131Smrgme=`echo "$0" | sed -e 's,.*/,,'` 6350539131Smrg 6450539131Smrgusage="\ 65414cce6aSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6650539131Smrg 6750539131SmrgCanonicalize a configuration name. 6850539131Smrg 69414cce6aSmrgOptions: 7050539131Smrg -h, --help print this help, then exit 7150539131Smrg -t, --time-stamp print date of last modification, then exit 7250539131Smrg -v, --version print version number, then exit 7350539131Smrg 7450539131SmrgReport bugs and patches to <config-patches@gnu.org>." 7550539131Smrg 7650539131Smrgversion="\ 7750539131SmrgGNU config.sub ($timestamp) 7850539131Smrg 79414cce6aSmrgCopyright 1992-2023 Free Software Foundation, Inc. 8050539131Smrg 8150539131SmrgThis is free software; see the source for copying conditions. There is NO 8250539131Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8350539131Smrg 8450539131Smrghelp=" 8550539131SmrgTry \`$me --help' for more information." 8650539131Smrg 8750539131Smrg# Parse command line 8850539131Smrgwhile test $# -gt 0 ; do 8950539131Smrg case $1 in 9050539131Smrg --time-stamp | --time* | -t ) 9150539131Smrg echo "$timestamp" ; exit ;; 9250539131Smrg --version | -v ) 9350539131Smrg echo "$version" ; exit ;; 9450539131Smrg --help | --h* | -h ) 9550539131Smrg echo "$usage"; exit ;; 9650539131Smrg -- ) # Stop option processing 9750539131Smrg shift; break ;; 9850539131Smrg - ) # Use stdin as input. 9950539131Smrg break ;; 10050539131Smrg -* ) 101414cce6aSmrg echo "$me: invalid option $1$help" >&2 10250539131Smrg exit 1 ;; 10350539131Smrg 10450539131Smrg *local*) 10550539131Smrg # First pass through any local machine types. 106414cce6aSmrg echo "$1" 10750539131Smrg exit ;; 10850539131Smrg 10950539131Smrg * ) 11050539131Smrg break ;; 11150539131Smrg esac 11250539131Smrgdone 11350539131Smrg 11450539131Smrgcase $# in 11550539131Smrg 0) echo "$me: missing argument$help" >&2 11650539131Smrg exit 1;; 11750539131Smrg 1) ;; 11850539131Smrg *) echo "$me: too many arguments$help" >&2 11950539131Smrg exit 1;; 12050539131Smrgesac 12150539131Smrg 122414cce6aSmrg# Split fields of configuration type 123414cce6aSmrg# shellcheck disable=SC2162 124414cce6aSmrgsaved_IFS=$IFS 125414cce6aSmrgIFS="-" read field1 field2 field3 field4 <<EOF 126414cce6aSmrg$1 127414cce6aSmrgEOF 128414cce6aSmrgIFS=$saved_IFS 12950539131Smrg 130414cce6aSmrg# Separate into logical components for further validation 131414cce6aSmrgcase $1 in 132414cce6aSmrg *-*-*-*-*) 133414cce6aSmrg echo Invalid configuration \`"$1"\': more than four components >&2 134414cce6aSmrg exit 1 13550539131Smrg ;; 136414cce6aSmrg *-*-*-*) 137414cce6aSmrg basic_machine=$field1-$field2 138414cce6aSmrg basic_os=$field3-$field4 13950539131Smrg ;; 140414cce6aSmrg *-*-*) 141414cce6aSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142414cce6aSmrg # parts 143414cce6aSmrg maybe_os=$field2-$field3 144414cce6aSmrg case $maybe_os in 145414cce6aSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 146414cce6aSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147414cce6aSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148414cce6aSmrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 149414cce6aSmrg basic_machine=$field1 150414cce6aSmrg basic_os=$maybe_os 151414cce6aSmrg ;; 152414cce6aSmrg android-linux) 153414cce6aSmrg basic_machine=$field1-unknown 154414cce6aSmrg basic_os=linux-android 155414cce6aSmrg ;; 156414cce6aSmrg *) 157414cce6aSmrg basic_machine=$field1-$field2 158414cce6aSmrg basic_os=$field3 159414cce6aSmrg ;; 160414cce6aSmrg esac 16150539131Smrg ;; 162414cce6aSmrg *-*) 163414cce6aSmrg # A lone config we happen to match not fitting any pattern 164414cce6aSmrg case $field1-$field2 in 165414cce6aSmrg decstation-3100) 166414cce6aSmrg basic_machine=mips-dec 167414cce6aSmrg basic_os= 168414cce6aSmrg ;; 169414cce6aSmrg *-*) 170414cce6aSmrg # Second component is usually, but not always the OS 171414cce6aSmrg case $field2 in 172414cce6aSmrg # Prevent following clause from handling this valid os 173414cce6aSmrg sun*os*) 174414cce6aSmrg basic_machine=$field1 175414cce6aSmrg basic_os=$field2 176414cce6aSmrg ;; 177414cce6aSmrg zephyr*) 178414cce6aSmrg basic_machine=$field1-unknown 179414cce6aSmrg basic_os=$field2 180414cce6aSmrg ;; 181414cce6aSmrg # Manufacturers 182414cce6aSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183414cce6aSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184414cce6aSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185414cce6aSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186414cce6aSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187414cce6aSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188414cce6aSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189414cce6aSmrg | microblaze* | sim | cisco \ 190414cce6aSmrg | oki | wec | wrs | winbond) 191414cce6aSmrg basic_machine=$field1-$field2 192414cce6aSmrg basic_os= 193414cce6aSmrg ;; 194414cce6aSmrg *) 195414cce6aSmrg basic_machine=$field1 196414cce6aSmrg basic_os=$field2 197414cce6aSmrg ;; 198414cce6aSmrg esac 199414cce6aSmrg ;; 200414cce6aSmrg esac 20150539131Smrg ;; 202414cce6aSmrg *) 203414cce6aSmrg # Convert single-component short-hands not valid as part of 204414cce6aSmrg # multi-component configurations. 205414cce6aSmrg case $field1 in 206414cce6aSmrg 386bsd) 207414cce6aSmrg basic_machine=i386-pc 208414cce6aSmrg basic_os=bsd 209414cce6aSmrg ;; 210414cce6aSmrg a29khif) 211414cce6aSmrg basic_machine=a29k-amd 212414cce6aSmrg basic_os=udi 213414cce6aSmrg ;; 214414cce6aSmrg adobe68k) 215414cce6aSmrg basic_machine=m68010-adobe 216414cce6aSmrg basic_os=scout 217414cce6aSmrg ;; 218414cce6aSmrg alliant) 219414cce6aSmrg basic_machine=fx80-alliant 220414cce6aSmrg basic_os= 221414cce6aSmrg ;; 222414cce6aSmrg altos | altos3068) 223414cce6aSmrg basic_machine=m68k-altos 224414cce6aSmrg basic_os= 225414cce6aSmrg ;; 226414cce6aSmrg am29k) 227414cce6aSmrg basic_machine=a29k-none 228414cce6aSmrg basic_os=bsd 229414cce6aSmrg ;; 230414cce6aSmrg amdahl) 231414cce6aSmrg basic_machine=580-amdahl 232414cce6aSmrg basic_os=sysv 233414cce6aSmrg ;; 234414cce6aSmrg amiga) 235414cce6aSmrg basic_machine=m68k-unknown 236414cce6aSmrg basic_os= 237414cce6aSmrg ;; 238414cce6aSmrg amigaos | amigados) 239414cce6aSmrg basic_machine=m68k-unknown 240414cce6aSmrg basic_os=amigaos 241414cce6aSmrg ;; 242414cce6aSmrg amigaunix | amix) 243414cce6aSmrg basic_machine=m68k-unknown 244414cce6aSmrg basic_os=sysv4 245414cce6aSmrg ;; 246414cce6aSmrg apollo68) 247414cce6aSmrg basic_machine=m68k-apollo 248414cce6aSmrg basic_os=sysv 249414cce6aSmrg ;; 250414cce6aSmrg apollo68bsd) 251414cce6aSmrg basic_machine=m68k-apollo 252414cce6aSmrg basic_os=bsd 253414cce6aSmrg ;; 254414cce6aSmrg aros) 255414cce6aSmrg basic_machine=i386-pc 256414cce6aSmrg basic_os=aros 257414cce6aSmrg ;; 258414cce6aSmrg aux) 259414cce6aSmrg basic_machine=m68k-apple 260414cce6aSmrg basic_os=aux 261414cce6aSmrg ;; 262414cce6aSmrg balance) 263414cce6aSmrg basic_machine=ns32k-sequent 264414cce6aSmrg basic_os=dynix 265414cce6aSmrg ;; 266414cce6aSmrg blackfin) 267414cce6aSmrg basic_machine=bfin-unknown 268414cce6aSmrg basic_os=linux 269414cce6aSmrg ;; 270414cce6aSmrg cegcc) 271414cce6aSmrg basic_machine=arm-unknown 272414cce6aSmrg basic_os=cegcc 273414cce6aSmrg ;; 274414cce6aSmrg convex-c1) 275414cce6aSmrg basic_machine=c1-convex 276414cce6aSmrg basic_os=bsd 277414cce6aSmrg ;; 278414cce6aSmrg convex-c2) 279414cce6aSmrg basic_machine=c2-convex 280414cce6aSmrg basic_os=bsd 281414cce6aSmrg ;; 282414cce6aSmrg convex-c32) 283414cce6aSmrg basic_machine=c32-convex 284414cce6aSmrg basic_os=bsd 285414cce6aSmrg ;; 286414cce6aSmrg convex-c34) 287414cce6aSmrg basic_machine=c34-convex 288414cce6aSmrg basic_os=bsd 289414cce6aSmrg ;; 290414cce6aSmrg convex-c38) 291414cce6aSmrg basic_machine=c38-convex 292414cce6aSmrg basic_os=bsd 293414cce6aSmrg ;; 294414cce6aSmrg cray) 295414cce6aSmrg basic_machine=j90-cray 296414cce6aSmrg basic_os=unicos 297414cce6aSmrg ;; 298414cce6aSmrg crds | unos) 299414cce6aSmrg basic_machine=m68k-crds 300414cce6aSmrg basic_os= 301414cce6aSmrg ;; 302414cce6aSmrg da30) 303414cce6aSmrg basic_machine=m68k-da30 304414cce6aSmrg basic_os= 305414cce6aSmrg ;; 306414cce6aSmrg decstation | pmax | pmin | dec3100 | decstatn) 307414cce6aSmrg basic_machine=mips-dec 308414cce6aSmrg basic_os= 309414cce6aSmrg ;; 310414cce6aSmrg delta88) 311414cce6aSmrg basic_machine=m88k-motorola 312414cce6aSmrg basic_os=sysv3 313414cce6aSmrg ;; 314414cce6aSmrg dicos) 315414cce6aSmrg basic_machine=i686-pc 316414cce6aSmrg basic_os=dicos 317414cce6aSmrg ;; 318414cce6aSmrg djgpp) 319414cce6aSmrg basic_machine=i586-pc 320414cce6aSmrg basic_os=msdosdjgpp 321414cce6aSmrg ;; 322414cce6aSmrg ebmon29k) 323414cce6aSmrg basic_machine=a29k-amd 324414cce6aSmrg basic_os=ebmon 325414cce6aSmrg ;; 326414cce6aSmrg es1800 | OSE68k | ose68k | ose | OSE) 327414cce6aSmrg basic_machine=m68k-ericsson 328414cce6aSmrg basic_os=ose 329414cce6aSmrg ;; 330414cce6aSmrg gmicro) 331414cce6aSmrg basic_machine=tron-gmicro 332414cce6aSmrg basic_os=sysv 333414cce6aSmrg ;; 334414cce6aSmrg go32) 335414cce6aSmrg basic_machine=i386-pc 336414cce6aSmrg basic_os=go32 337414cce6aSmrg ;; 338414cce6aSmrg h8300hms) 339414cce6aSmrg basic_machine=h8300-hitachi 340414cce6aSmrg basic_os=hms 341414cce6aSmrg ;; 342414cce6aSmrg h8300xray) 343414cce6aSmrg basic_machine=h8300-hitachi 344414cce6aSmrg basic_os=xray 345414cce6aSmrg ;; 346414cce6aSmrg h8500hms) 347414cce6aSmrg basic_machine=h8500-hitachi 348414cce6aSmrg basic_os=hms 349414cce6aSmrg ;; 350414cce6aSmrg harris) 351414cce6aSmrg basic_machine=m88k-harris 352414cce6aSmrg basic_os=sysv3 353414cce6aSmrg ;; 354414cce6aSmrg hp300 | hp300hpux) 355414cce6aSmrg basic_machine=m68k-hp 356414cce6aSmrg basic_os=hpux 357414cce6aSmrg ;; 358414cce6aSmrg hp300bsd) 359414cce6aSmrg basic_machine=m68k-hp 360414cce6aSmrg basic_os=bsd 361414cce6aSmrg ;; 362414cce6aSmrg hppaosf) 363414cce6aSmrg basic_machine=hppa1.1-hp 364414cce6aSmrg basic_os=osf 365414cce6aSmrg ;; 366414cce6aSmrg hppro) 367414cce6aSmrg basic_machine=hppa1.1-hp 368414cce6aSmrg basic_os=proelf 369414cce6aSmrg ;; 370414cce6aSmrg i386mach) 371414cce6aSmrg basic_machine=i386-mach 372414cce6aSmrg basic_os=mach 373414cce6aSmrg ;; 374414cce6aSmrg isi68 | isi) 375414cce6aSmrg basic_machine=m68k-isi 376414cce6aSmrg basic_os=sysv 377414cce6aSmrg ;; 378414cce6aSmrg m68knommu) 379414cce6aSmrg basic_machine=m68k-unknown 380414cce6aSmrg basic_os=linux 381414cce6aSmrg ;; 382414cce6aSmrg magnum | m3230) 383414cce6aSmrg basic_machine=mips-mips 384414cce6aSmrg basic_os=sysv 385414cce6aSmrg ;; 386414cce6aSmrg merlin) 387414cce6aSmrg basic_machine=ns32k-utek 388414cce6aSmrg basic_os=sysv 389414cce6aSmrg ;; 390414cce6aSmrg mingw64) 391414cce6aSmrg basic_machine=x86_64-pc 392414cce6aSmrg basic_os=mingw64 393414cce6aSmrg ;; 394414cce6aSmrg mingw32) 395414cce6aSmrg basic_machine=i686-pc 396414cce6aSmrg basic_os=mingw32 397414cce6aSmrg ;; 398414cce6aSmrg mingw32ce) 399414cce6aSmrg basic_machine=arm-unknown 400414cce6aSmrg basic_os=mingw32ce 401414cce6aSmrg ;; 402414cce6aSmrg monitor) 403414cce6aSmrg basic_machine=m68k-rom68k 404414cce6aSmrg basic_os=coff 405414cce6aSmrg ;; 406414cce6aSmrg morphos) 407414cce6aSmrg basic_machine=powerpc-unknown 408414cce6aSmrg basic_os=morphos 409414cce6aSmrg ;; 410414cce6aSmrg moxiebox) 411414cce6aSmrg basic_machine=moxie-unknown 412414cce6aSmrg basic_os=moxiebox 413414cce6aSmrg ;; 414414cce6aSmrg msdos) 415414cce6aSmrg basic_machine=i386-pc 416414cce6aSmrg basic_os=msdos 417414cce6aSmrg ;; 418414cce6aSmrg msys) 419414cce6aSmrg basic_machine=i686-pc 420414cce6aSmrg basic_os=msys 421414cce6aSmrg ;; 422414cce6aSmrg mvs) 423414cce6aSmrg basic_machine=i370-ibm 424414cce6aSmrg basic_os=mvs 425414cce6aSmrg ;; 426414cce6aSmrg nacl) 427414cce6aSmrg basic_machine=le32-unknown 428414cce6aSmrg basic_os=nacl 429414cce6aSmrg ;; 430414cce6aSmrg ncr3000) 431414cce6aSmrg basic_machine=i486-ncr 432414cce6aSmrg basic_os=sysv4 433414cce6aSmrg ;; 434414cce6aSmrg netbsd386) 435414cce6aSmrg basic_machine=i386-pc 436414cce6aSmrg basic_os=netbsd 437414cce6aSmrg ;; 438414cce6aSmrg netwinder) 439414cce6aSmrg basic_machine=armv4l-rebel 440414cce6aSmrg basic_os=linux 441414cce6aSmrg ;; 442414cce6aSmrg news | news700 | news800 | news900) 443414cce6aSmrg basic_machine=m68k-sony 444414cce6aSmrg basic_os=newsos 445414cce6aSmrg ;; 446414cce6aSmrg news1000) 447414cce6aSmrg basic_machine=m68030-sony 448414cce6aSmrg basic_os=newsos 449414cce6aSmrg ;; 450414cce6aSmrg necv70) 451414cce6aSmrg basic_machine=v70-nec 452414cce6aSmrg basic_os=sysv 453414cce6aSmrg ;; 454414cce6aSmrg nh3000) 455414cce6aSmrg basic_machine=m68k-harris 456414cce6aSmrg basic_os=cxux 457414cce6aSmrg ;; 458414cce6aSmrg nh[45]000) 459414cce6aSmrg basic_machine=m88k-harris 460414cce6aSmrg basic_os=cxux 461414cce6aSmrg ;; 462414cce6aSmrg nindy960) 463414cce6aSmrg basic_machine=i960-intel 464414cce6aSmrg basic_os=nindy 465414cce6aSmrg ;; 466414cce6aSmrg mon960) 467414cce6aSmrg basic_machine=i960-intel 468414cce6aSmrg basic_os=mon960 469414cce6aSmrg ;; 470414cce6aSmrg nonstopux) 471414cce6aSmrg basic_machine=mips-compaq 472414cce6aSmrg basic_os=nonstopux 473414cce6aSmrg ;; 474414cce6aSmrg os400) 475414cce6aSmrg basic_machine=powerpc-ibm 476414cce6aSmrg basic_os=os400 477414cce6aSmrg ;; 478414cce6aSmrg OSE68000 | ose68000) 479414cce6aSmrg basic_machine=m68000-ericsson 480414cce6aSmrg basic_os=ose 481414cce6aSmrg ;; 482414cce6aSmrg os68k) 483414cce6aSmrg basic_machine=m68k-none 484414cce6aSmrg basic_os=os68k 485414cce6aSmrg ;; 486414cce6aSmrg paragon) 487414cce6aSmrg basic_machine=i860-intel 488414cce6aSmrg basic_os=osf 489414cce6aSmrg ;; 490414cce6aSmrg parisc) 491414cce6aSmrg basic_machine=hppa-unknown 492414cce6aSmrg basic_os=linux 493414cce6aSmrg ;; 494414cce6aSmrg psp) 495414cce6aSmrg basic_machine=mipsallegrexel-sony 496414cce6aSmrg basic_os=psp 497414cce6aSmrg ;; 498414cce6aSmrg pw32) 499414cce6aSmrg basic_machine=i586-unknown 500414cce6aSmrg basic_os=pw32 501414cce6aSmrg ;; 502414cce6aSmrg rdos | rdos64) 503414cce6aSmrg basic_machine=x86_64-pc 504414cce6aSmrg basic_os=rdos 505414cce6aSmrg ;; 506414cce6aSmrg rdos32) 507414cce6aSmrg basic_machine=i386-pc 508414cce6aSmrg basic_os=rdos 509414cce6aSmrg ;; 510414cce6aSmrg rom68k) 511414cce6aSmrg basic_machine=m68k-rom68k 512414cce6aSmrg basic_os=coff 513414cce6aSmrg ;; 514414cce6aSmrg sa29200) 515414cce6aSmrg basic_machine=a29k-amd 516414cce6aSmrg basic_os=udi 517414cce6aSmrg ;; 518414cce6aSmrg sei) 519414cce6aSmrg basic_machine=mips-sei 520414cce6aSmrg basic_os=seiux 521414cce6aSmrg ;; 522414cce6aSmrg sequent) 523414cce6aSmrg basic_machine=i386-sequent 524414cce6aSmrg basic_os= 525414cce6aSmrg ;; 526414cce6aSmrg sps7) 527414cce6aSmrg basic_machine=m68k-bull 528414cce6aSmrg basic_os=sysv2 529414cce6aSmrg ;; 530414cce6aSmrg st2000) 531414cce6aSmrg basic_machine=m68k-tandem 532414cce6aSmrg basic_os= 533414cce6aSmrg ;; 534414cce6aSmrg stratus) 535414cce6aSmrg basic_machine=i860-stratus 536414cce6aSmrg basic_os=sysv4 537414cce6aSmrg ;; 538414cce6aSmrg sun2) 539414cce6aSmrg basic_machine=m68000-sun 540414cce6aSmrg basic_os= 541414cce6aSmrg ;; 542414cce6aSmrg sun2os3) 543414cce6aSmrg basic_machine=m68000-sun 544414cce6aSmrg basic_os=sunos3 545414cce6aSmrg ;; 546414cce6aSmrg sun2os4) 547414cce6aSmrg basic_machine=m68000-sun 548414cce6aSmrg basic_os=sunos4 549414cce6aSmrg ;; 550414cce6aSmrg sun3) 551414cce6aSmrg basic_machine=m68k-sun 552414cce6aSmrg basic_os= 553414cce6aSmrg ;; 554414cce6aSmrg sun3os3) 555414cce6aSmrg basic_machine=m68k-sun 556414cce6aSmrg basic_os=sunos3 557414cce6aSmrg ;; 558414cce6aSmrg sun3os4) 559414cce6aSmrg basic_machine=m68k-sun 560414cce6aSmrg basic_os=sunos4 561414cce6aSmrg ;; 562414cce6aSmrg sun4) 563414cce6aSmrg basic_machine=sparc-sun 564414cce6aSmrg basic_os= 565414cce6aSmrg ;; 566414cce6aSmrg sun4os3) 567414cce6aSmrg basic_machine=sparc-sun 568414cce6aSmrg basic_os=sunos3 569414cce6aSmrg ;; 570414cce6aSmrg sun4os4) 571414cce6aSmrg basic_machine=sparc-sun 572414cce6aSmrg basic_os=sunos4 573414cce6aSmrg ;; 574414cce6aSmrg sun4sol2) 575414cce6aSmrg basic_machine=sparc-sun 576414cce6aSmrg basic_os=solaris2 577414cce6aSmrg ;; 578414cce6aSmrg sun386 | sun386i | roadrunner) 579414cce6aSmrg basic_machine=i386-sun 580414cce6aSmrg basic_os= 581414cce6aSmrg ;; 582414cce6aSmrg sv1) 583414cce6aSmrg basic_machine=sv1-cray 584414cce6aSmrg basic_os=unicos 585414cce6aSmrg ;; 586414cce6aSmrg symmetry) 587414cce6aSmrg basic_machine=i386-sequent 588414cce6aSmrg basic_os=dynix 589414cce6aSmrg ;; 590414cce6aSmrg t3e) 591414cce6aSmrg basic_machine=alphaev5-cray 592414cce6aSmrg basic_os=unicos 593414cce6aSmrg ;; 594414cce6aSmrg t90) 595414cce6aSmrg basic_machine=t90-cray 596414cce6aSmrg basic_os=unicos 597414cce6aSmrg ;; 598414cce6aSmrg toad1) 599414cce6aSmrg basic_machine=pdp10-xkl 600414cce6aSmrg basic_os=tops20 601414cce6aSmrg ;; 602414cce6aSmrg tpf) 603414cce6aSmrg basic_machine=s390x-ibm 604414cce6aSmrg basic_os=tpf 605414cce6aSmrg ;; 606414cce6aSmrg udi29k) 607414cce6aSmrg basic_machine=a29k-amd 608414cce6aSmrg basic_os=udi 609414cce6aSmrg ;; 610414cce6aSmrg ultra3) 611414cce6aSmrg basic_machine=a29k-nyu 612414cce6aSmrg basic_os=sym1 613414cce6aSmrg ;; 614414cce6aSmrg v810 | necv810) 615414cce6aSmrg basic_machine=v810-nec 616414cce6aSmrg basic_os=none 617414cce6aSmrg ;; 618414cce6aSmrg vaxv) 619414cce6aSmrg basic_machine=vax-dec 620414cce6aSmrg basic_os=sysv 621414cce6aSmrg ;; 622414cce6aSmrg vms) 623414cce6aSmrg basic_machine=vax-dec 624414cce6aSmrg basic_os=vms 625414cce6aSmrg ;; 626414cce6aSmrg vsta) 627414cce6aSmrg basic_machine=i386-pc 628414cce6aSmrg basic_os=vsta 629414cce6aSmrg ;; 630414cce6aSmrg vxworks960) 631414cce6aSmrg basic_machine=i960-wrs 632414cce6aSmrg basic_os=vxworks 633414cce6aSmrg ;; 634414cce6aSmrg vxworks68) 635414cce6aSmrg basic_machine=m68k-wrs 636414cce6aSmrg basic_os=vxworks 637414cce6aSmrg ;; 638414cce6aSmrg vxworks29k) 639414cce6aSmrg basic_machine=a29k-wrs 640414cce6aSmrg basic_os=vxworks 641414cce6aSmrg ;; 642414cce6aSmrg xbox) 643414cce6aSmrg basic_machine=i686-pc 644414cce6aSmrg basic_os=mingw32 645414cce6aSmrg ;; 646414cce6aSmrg ymp) 647414cce6aSmrg basic_machine=ymp-cray 648414cce6aSmrg basic_os=unicos 649414cce6aSmrg ;; 650414cce6aSmrg *) 651414cce6aSmrg basic_machine=$1 652414cce6aSmrg basic_os= 653414cce6aSmrg ;; 654414cce6aSmrg esac 65550539131Smrg ;; 656414cce6aSmrgesac 657414cce6aSmrg 658414cce6aSmrg# Decode 1-component or ad-hoc basic machines 659414cce6aSmrgcase $basic_machine in 660414cce6aSmrg # Here we handle the default manufacturer of certain CPU types. It is in 661414cce6aSmrg # some cases the only manufacturer, in others, it is the most popular. 662414cce6aSmrg w89k) 663414cce6aSmrg cpu=hppa1.1 664414cce6aSmrg vendor=winbond 66550539131Smrg ;; 666414cce6aSmrg op50n) 667414cce6aSmrg cpu=hppa1.1 668414cce6aSmrg vendor=oki 66950539131Smrg ;; 670414cce6aSmrg op60c) 671414cce6aSmrg cpu=hppa1.1 672414cce6aSmrg vendor=oki 67350539131Smrg ;; 674414cce6aSmrg ibm*) 675414cce6aSmrg cpu=i370 676414cce6aSmrg vendor=ibm 67750539131Smrg ;; 678414cce6aSmrg orion105) 679414cce6aSmrg cpu=clipper 680414cce6aSmrg vendor=highlevel 68150539131Smrg ;; 682414cce6aSmrg mac | mpw | mac-mpw) 683414cce6aSmrg cpu=m68k 684414cce6aSmrg vendor=apple 68550539131Smrg ;; 686414cce6aSmrg pmac | pmac-mpw) 687414cce6aSmrg cpu=powerpc 688414cce6aSmrg vendor=apple 68950539131Smrg ;; 69050539131Smrg 69150539131Smrg # Recognize the various machine names and aliases which stand 69250539131Smrg # for a CPU type and a company and sometimes even an OS. 69350539131Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694414cce6aSmrg cpu=m68000 695414cce6aSmrg vendor=att 69650539131Smrg ;; 69750539131Smrg 3b*) 698414cce6aSmrg cpu=we32k 699414cce6aSmrg vendor=att 70050539131Smrg ;; 70144d8e951Smrg bluegene*) 702414cce6aSmrg cpu=powerpc 703414cce6aSmrg vendor=ibm 704414cce6aSmrg basic_os=cnk 70550539131Smrg ;; 70650539131Smrg decsystem10* | dec10*) 707414cce6aSmrg cpu=pdp10 708414cce6aSmrg vendor=dec 709414cce6aSmrg basic_os=tops10 71050539131Smrg ;; 71150539131Smrg decsystem20* | dec20*) 712414cce6aSmrg cpu=pdp10 713414cce6aSmrg vendor=dec 714414cce6aSmrg basic_os=tops20 71550539131Smrg ;; 71650539131Smrg delta | 3300 | motorola-3300 | motorola-delta \ 71750539131Smrg | 3300-motorola | delta-motorola) 718414cce6aSmrg cpu=m68k 719414cce6aSmrg vendor=motorola 72050539131Smrg ;; 721414cce6aSmrg dpx2*) 722414cce6aSmrg cpu=m68k 723414cce6aSmrg vendor=bull 724414cce6aSmrg basic_os=sysv3 72550539131Smrg ;; 72650539131Smrg encore | umax | mmax) 727414cce6aSmrg cpu=ns32k 728414cce6aSmrg vendor=encore 72950539131Smrg ;; 730414cce6aSmrg elxsi) 731414cce6aSmrg cpu=elxsi 732414cce6aSmrg vendor=elxsi 733414cce6aSmrg basic_os=${basic_os:-bsd} 73450539131Smrg ;; 73550539131Smrg fx2800) 736414cce6aSmrg cpu=i860 737414cce6aSmrg vendor=alliant 73850539131Smrg ;; 73950539131Smrg genix) 740414cce6aSmrg cpu=ns32k 741414cce6aSmrg vendor=ns 74250539131Smrg ;; 74350539131Smrg h3050r* | hiux*) 744414cce6aSmrg cpu=hppa1.1 745414cce6aSmrg vendor=hitachi 746414cce6aSmrg basic_os=hiuxwe2 74750539131Smrg ;; 74850539131Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749414cce6aSmrg cpu=hppa1.0 750414cce6aSmrg vendor=hp 75150539131Smrg ;; 75250539131Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753414cce6aSmrg cpu=m68000 754414cce6aSmrg vendor=hp 75550539131Smrg ;; 75650539131Smrg hp9k3[2-9][0-9]) 757414cce6aSmrg cpu=m68k 758414cce6aSmrg vendor=hp 75950539131Smrg ;; 76050539131Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761414cce6aSmrg cpu=hppa1.0 762414cce6aSmrg vendor=hp 76350539131Smrg ;; 76450539131Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765414cce6aSmrg cpu=hppa1.1 766414cce6aSmrg vendor=hp 76750539131Smrg ;; 76850539131Smrg hp9k78[0-9] | hp78[0-9]) 76950539131Smrg # FIXME: really hppa2.0-hp 770414cce6aSmrg cpu=hppa1.1 771414cce6aSmrg vendor=hp 77250539131Smrg ;; 77350539131Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77450539131Smrg # FIXME: really hppa2.0-hp 775414cce6aSmrg cpu=hppa1.1 776414cce6aSmrg vendor=hp 77750539131Smrg ;; 77850539131Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779414cce6aSmrg cpu=hppa1.1 780414cce6aSmrg vendor=hp 78150539131Smrg ;; 78250539131Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783414cce6aSmrg cpu=hppa1.0 784414cce6aSmrg vendor=hp 78550539131Smrg ;; 78650539131Smrg i*86v32) 787414cce6aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788414cce6aSmrg vendor=pc 789414cce6aSmrg basic_os=sysv32 79050539131Smrg ;; 79150539131Smrg i*86v4*) 792414cce6aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793414cce6aSmrg vendor=pc 794414cce6aSmrg basic_os=sysv4 79550539131Smrg ;; 79650539131Smrg i*86v) 797414cce6aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798414cce6aSmrg vendor=pc 799414cce6aSmrg basic_os=sysv 80050539131Smrg ;; 80150539131Smrg i*86sol2) 802414cce6aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803414cce6aSmrg vendor=pc 804414cce6aSmrg basic_os=solaris2 80550539131Smrg ;; 806414cce6aSmrg j90 | j90-cray) 807414cce6aSmrg cpu=j90 808414cce6aSmrg vendor=cray 809414cce6aSmrg basic_os=${basic_os:-unicos} 81050539131Smrg ;; 81150539131Smrg iris | iris4d) 812414cce6aSmrg cpu=mips 813414cce6aSmrg vendor=sgi 814414cce6aSmrg case $basic_os in 815414cce6aSmrg irix*) 81650539131Smrg ;; 81750539131Smrg *) 818414cce6aSmrg basic_os=irix4 81950539131Smrg ;; 82050539131Smrg esac 82150539131Smrg ;; 82250539131Smrg miniframe) 823414cce6aSmrg cpu=m68000 824414cce6aSmrg vendor=convergent 82550539131Smrg ;; 826414cce6aSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827414cce6aSmrg cpu=m68k 828414cce6aSmrg vendor=atari 829414cce6aSmrg basic_os=mint 83050539131Smrg ;; 83150539131Smrg news-3600 | risc-news) 832414cce6aSmrg cpu=mips 833414cce6aSmrg vendor=sony 834414cce6aSmrg basic_os=newsos 835414cce6aSmrg ;; 836414cce6aSmrg next | m*-next) 837414cce6aSmrg cpu=m68k 838414cce6aSmrg vendor=next 839414cce6aSmrg case $basic_os in 840414cce6aSmrg openstep*) 841414cce6aSmrg ;; 842414cce6aSmrg nextstep*) 84350539131Smrg ;; 844414cce6aSmrg ns2*) 845414cce6aSmrg basic_os=nextstep2 84650539131Smrg ;; 84750539131Smrg *) 848414cce6aSmrg basic_os=nextstep3 84950539131Smrg ;; 85050539131Smrg esac 85150539131Smrg ;; 85250539131Smrg np1) 853414cce6aSmrg cpu=np1 854414cce6aSmrg vendor=gould 85550539131Smrg ;; 85650539131Smrg op50n-* | op60c-*) 857414cce6aSmrg cpu=hppa1.1 858414cce6aSmrg vendor=oki 859414cce6aSmrg basic_os=proelf 86050539131Smrg ;; 86150539131Smrg pa-hitachi) 862414cce6aSmrg cpu=hppa1.1 863414cce6aSmrg vendor=hitachi 864414cce6aSmrg basic_os=hiuxwe2 86550539131Smrg ;; 86650539131Smrg pbd) 867414cce6aSmrg cpu=sparc 868414cce6aSmrg vendor=tti 86950539131Smrg ;; 87050539131Smrg pbb) 871414cce6aSmrg cpu=m68k 872414cce6aSmrg vendor=tti 87350539131Smrg ;; 874414cce6aSmrg pc532) 875414cce6aSmrg cpu=ns32k 876414cce6aSmrg vendor=pc532 87750539131Smrg ;; 87850539131Smrg pn) 879414cce6aSmrg cpu=pn 880414cce6aSmrg vendor=gould 88150539131Smrg ;; 882414cce6aSmrg power) 883414cce6aSmrg cpu=power 884414cce6aSmrg vendor=ibm 88550539131Smrg ;; 88650539131Smrg ps2) 887414cce6aSmrg cpu=i386 888414cce6aSmrg vendor=ibm 88950539131Smrg ;; 89050539131Smrg rm[46]00) 891414cce6aSmrg cpu=mips 892414cce6aSmrg vendor=siemens 89350539131Smrg ;; 89450539131Smrg rtpc | rtpc-*) 895414cce6aSmrg cpu=romp 896414cce6aSmrg vendor=ibm 89750539131Smrg ;; 898414cce6aSmrg sde) 899414cce6aSmrg cpu=mipsisa32 900414cce6aSmrg vendor=sde 901414cce6aSmrg basic_os=${basic_os:-elf} 90250539131Smrg ;; 903414cce6aSmrg simso-wrs) 904414cce6aSmrg cpu=sparclite 905414cce6aSmrg vendor=wrs 906414cce6aSmrg basic_os=vxworks 90750539131Smrg ;; 908414cce6aSmrg tower | tower-32) 909414cce6aSmrg cpu=m68k 910414cce6aSmrg vendor=ncr 91150539131Smrg ;; 912414cce6aSmrg vpp*|vx|vx-*) 913414cce6aSmrg cpu=f301 914414cce6aSmrg vendor=fujitsu 91550539131Smrg ;; 916414cce6aSmrg w65) 917414cce6aSmrg cpu=w65 918414cce6aSmrg vendor=wdc 91950539131Smrg ;; 920414cce6aSmrg w89k-*) 921414cce6aSmrg cpu=hppa1.1 922414cce6aSmrg vendor=winbond 923414cce6aSmrg basic_os=proelf 92450539131Smrg ;; 925414cce6aSmrg none) 926414cce6aSmrg cpu=none 927414cce6aSmrg vendor=none 92850539131Smrg ;; 929414cce6aSmrg leon|leon[3-9]) 930414cce6aSmrg cpu=sparc 931414cce6aSmrg vendor=$basic_machine 93250539131Smrg ;; 933414cce6aSmrg leon-*|leon[3-9]-*) 934414cce6aSmrg cpu=sparc 935414cce6aSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 93650539131Smrg ;; 937414cce6aSmrg 938414cce6aSmrg *-*) 939414cce6aSmrg # shellcheck disable=SC2162 940414cce6aSmrg saved_IFS=$IFS 941414cce6aSmrg IFS="-" read cpu vendor <<EOF 942414cce6aSmrg$basic_machine 943414cce6aSmrgEOF 944414cce6aSmrg IFS=$saved_IFS 94550539131Smrg ;; 946414cce6aSmrg # We use `pc' rather than `unknown' 947414cce6aSmrg # because (1) that's what they normally are, and 948414cce6aSmrg # (2) the word "unknown" tends to confuse beginning users. 949414cce6aSmrg i*86 | x86_64) 950414cce6aSmrg cpu=$basic_machine 951414cce6aSmrg vendor=pc 95250539131Smrg ;; 953414cce6aSmrg # These rules are duplicated from below for sake of the special case above; 954414cce6aSmrg # i.e. things that normalized to x86 arches should also default to "pc" 955414cce6aSmrg pc98) 956414cce6aSmrg cpu=i386 957414cce6aSmrg vendor=pc 95850539131Smrg ;; 959414cce6aSmrg x64 | amd64) 960414cce6aSmrg cpu=x86_64 961414cce6aSmrg vendor=pc 96250539131Smrg ;; 963414cce6aSmrg # Recognize the basic CPU types without company name. 964414cce6aSmrg *) 965414cce6aSmrg cpu=$basic_machine 966414cce6aSmrg vendor=unknown 96750539131Smrg ;; 968414cce6aSmrgesac 969414cce6aSmrg 970414cce6aSmrgunset -v basic_machine 971414cce6aSmrg 972414cce6aSmrg# Decode basic machines in the full and proper CPU-Company form. 973414cce6aSmrgcase $cpu-$vendor in 974414cce6aSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975414cce6aSmrg # some cases the only manufacturer, in others, it is the most popular. 976414cce6aSmrg craynv-unknown) 977414cce6aSmrg vendor=cray 978414cce6aSmrg basic_os=${basic_os:-unicosmp} 97950539131Smrg ;; 980414cce6aSmrg c90-unknown | c90-cray) 981414cce6aSmrg vendor=cray 982414cce6aSmrg basic_os=${Basic_os:-unicos} 98350539131Smrg ;; 984414cce6aSmrg fx80-unknown) 985414cce6aSmrg vendor=alliant 98650539131Smrg ;; 987414cce6aSmrg romp-unknown) 988414cce6aSmrg vendor=ibm 98950539131Smrg ;; 990414cce6aSmrg mmix-unknown) 991414cce6aSmrg vendor=knuth 99250539131Smrg ;; 993414cce6aSmrg microblaze-unknown | microblazeel-unknown) 994414cce6aSmrg vendor=xilinx 99550539131Smrg ;; 996414cce6aSmrg rs6000-unknown) 997414cce6aSmrg vendor=ibm 99850539131Smrg ;; 999414cce6aSmrg vax-unknown) 1000414cce6aSmrg vendor=dec 100150539131Smrg ;; 1002414cce6aSmrg pdp11-unknown) 1003414cce6aSmrg vendor=dec 100450539131Smrg ;; 1005414cce6aSmrg we32k-unknown) 1006414cce6aSmrg vendor=att 100750539131Smrg ;; 1008414cce6aSmrg cydra-unknown) 1009414cce6aSmrg vendor=cydrome 101050539131Smrg ;; 1011414cce6aSmrg i370-ibm*) 1012414cce6aSmrg vendor=ibm 101350539131Smrg ;; 1014414cce6aSmrg orion-unknown) 1015414cce6aSmrg vendor=highlevel 101650539131Smrg ;; 1017414cce6aSmrg xps-unknown | xps100-unknown) 1018414cce6aSmrg cpu=xps100 1019414cce6aSmrg vendor=honeywell 102050539131Smrg ;; 1021414cce6aSmrg 1022414cce6aSmrg # Here we normalize CPU types with a missing or matching vendor 1023414cce6aSmrg armh-unknown | armh-alt) 1024414cce6aSmrg cpu=armv7l 1025414cce6aSmrg vendor=alt 1026414cce6aSmrg basic_os=${basic_os:-linux-gnueabihf} 102750539131Smrg ;; 1028414cce6aSmrg dpx20-unknown | dpx20-bull) 1029414cce6aSmrg cpu=rs6000 1030414cce6aSmrg vendor=bull 1031414cce6aSmrg basic_os=${basic_os:-bosx} 103250539131Smrg ;; 1033414cce6aSmrg 1034414cce6aSmrg # Here we normalize CPU types irrespective of the vendor 1035414cce6aSmrg amd64-*) 1036414cce6aSmrg cpu=x86_64 103750539131Smrg ;; 1038414cce6aSmrg blackfin-*) 1039414cce6aSmrg cpu=bfin 1040414cce6aSmrg basic_os=linux 104150539131Smrg ;; 1042414cce6aSmrg c54x-*) 1043414cce6aSmrg cpu=tic54x 104450539131Smrg ;; 1045414cce6aSmrg c55x-*) 1046414cce6aSmrg cpu=tic55x 104750539131Smrg ;; 1048414cce6aSmrg c6x-*) 1049414cce6aSmrg cpu=tic6x 105050539131Smrg ;; 1051414cce6aSmrg e500v[12]-*) 1052414cce6aSmrg cpu=powerpc 1053414cce6aSmrg basic_os=${basic_os}"spe" 105450539131Smrg ;; 1055414cce6aSmrg mips3*-*) 1056414cce6aSmrg cpu=mips64 105750539131Smrg ;; 1058414cce6aSmrg ms1-*) 1059414cce6aSmrg cpu=mt 106050539131Smrg ;; 1061414cce6aSmrg m68knommu-*) 1062414cce6aSmrg cpu=m68k 1063414cce6aSmrg basic_os=linux 106450539131Smrg ;; 1065414cce6aSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1066414cce6aSmrg cpu=s12z 106750539131Smrg ;; 1068414cce6aSmrg openrisc-*) 1069414cce6aSmrg cpu=or32 107050539131Smrg ;; 1071414cce6aSmrg parisc-*) 1072414cce6aSmrg cpu=hppa 1073414cce6aSmrg basic_os=linux 107450539131Smrg ;; 1075414cce6aSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1076414cce6aSmrg cpu=i586 107750539131Smrg ;; 1078414cce6aSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1079414cce6aSmrg cpu=i686 108050539131Smrg ;; 1081414cce6aSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1082414cce6aSmrg cpu=i686 108350539131Smrg ;; 1084414cce6aSmrg pentium4-*) 1085414cce6aSmrg cpu=i786 108650539131Smrg ;; 1087414cce6aSmrg pc98-*) 1088414cce6aSmrg cpu=i386 108950539131Smrg ;; 1090414cce6aSmrg ppc-* | ppcbe-*) 1091414cce6aSmrg cpu=powerpc 109250539131Smrg ;; 1093414cce6aSmrg ppcle-* | powerpclittle-*) 1094414cce6aSmrg cpu=powerpcle 109550539131Smrg ;; 1096414cce6aSmrg ppc64-*) 1097414cce6aSmrg cpu=powerpc64 109850539131Smrg ;; 1099414cce6aSmrg ppc64le-* | powerpc64little-*) 1100414cce6aSmrg cpu=powerpc64le 110150539131Smrg ;; 1102414cce6aSmrg sb1-*) 1103414cce6aSmrg cpu=mipsisa64sb1 110450539131Smrg ;; 1105414cce6aSmrg sb1el-*) 1106414cce6aSmrg cpu=mipsisa64sb1el 110750539131Smrg ;; 1108414cce6aSmrg sh5e[lb]-*) 1109414cce6aSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 111050539131Smrg ;; 1111414cce6aSmrg spur-*) 1112414cce6aSmrg cpu=spur 111350539131Smrg ;; 1114414cce6aSmrg strongarm-* | thumb-*) 1115414cce6aSmrg cpu=arm 111650539131Smrg ;; 1117414cce6aSmrg tx39-*) 1118414cce6aSmrg cpu=mipstx39 111950539131Smrg ;; 1120414cce6aSmrg tx39el-*) 1121414cce6aSmrg cpu=mipstx39el 112250539131Smrg ;; 1123414cce6aSmrg x64-*) 1124414cce6aSmrg cpu=x86_64 112550539131Smrg ;; 1126414cce6aSmrg xscale-* | xscalee[bl]-*) 1127414cce6aSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112850539131Smrg ;; 1129414cce6aSmrg arm64-* | aarch64le-*) 1130414cce6aSmrg cpu=aarch64 113150539131Smrg ;; 1132414cce6aSmrg 1133414cce6aSmrg # Recognize the canonical CPU Types that limit and/or modify the 1134414cce6aSmrg # company names they are paired with. 1135414cce6aSmrg cr16-*) 1136414cce6aSmrg basic_os=${basic_os:-elf} 113750539131Smrg ;; 1138414cce6aSmrg crisv32-* | etraxfs*-*) 1139414cce6aSmrg cpu=crisv32 1140414cce6aSmrg vendor=axis 114150539131Smrg ;; 1142414cce6aSmrg cris-* | etrax*-*) 1143414cce6aSmrg cpu=cris 1144414cce6aSmrg vendor=axis 114550539131Smrg ;; 1146414cce6aSmrg crx-*) 1147414cce6aSmrg basic_os=${basic_os:-elf} 114850539131Smrg ;; 1149414cce6aSmrg neo-tandem) 1150414cce6aSmrg cpu=neo 1151414cce6aSmrg vendor=tandem 115250539131Smrg ;; 1153414cce6aSmrg nse-tandem) 1154414cce6aSmrg cpu=nse 1155414cce6aSmrg vendor=tandem 115650539131Smrg ;; 1157414cce6aSmrg nsr-tandem) 1158414cce6aSmrg cpu=nsr 1159414cce6aSmrg vendor=tandem 116050539131Smrg ;; 1161414cce6aSmrg nsv-tandem) 1162414cce6aSmrg cpu=nsv 1163414cce6aSmrg vendor=tandem 116450539131Smrg ;; 1165414cce6aSmrg nsx-tandem) 1166414cce6aSmrg cpu=nsx 1167414cce6aSmrg vendor=tandem 116850539131Smrg ;; 1169414cce6aSmrg mipsallegrexel-sony) 1170414cce6aSmrg cpu=mipsallegrexel 1171414cce6aSmrg vendor=sony 117250539131Smrg ;; 1173414cce6aSmrg tile*-*) 1174414cce6aSmrg basic_os=${basic_os:-linux-gnu} 117550539131Smrg ;; 1176414cce6aSmrg 117750539131Smrg *) 1178414cce6aSmrg # Recognize the canonical CPU types that are allowed with any 1179414cce6aSmrg # company name. 1180414cce6aSmrg case $cpu in 1181414cce6aSmrg 1750a | 580 \ 1182414cce6aSmrg | a29k \ 1183414cce6aSmrg | aarch64 | aarch64_be \ 1184414cce6aSmrg | abacus \ 1185414cce6aSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1186414cce6aSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1187414cce6aSmrg | alphapca5[67] | alpha64pca5[67] \ 1188414cce6aSmrg | am33_2.0 \ 1189414cce6aSmrg | amdgcn \ 1190414cce6aSmrg | arc | arceb | arc32 | arc64 \ 1191414cce6aSmrg | arm | arm[lb]e | arme[lb] | armv* \ 1192414cce6aSmrg | avr | avr32 \ 1193414cce6aSmrg | asmjs \ 1194414cce6aSmrg | ba \ 1195414cce6aSmrg | be32 | be64 \ 1196414cce6aSmrg | bfin | bpf | bs2000 \ 1197414cce6aSmrg | c[123]* | c30 | [cjt]90 | c4x \ 1198414cce6aSmrg | c8051 | clipper | craynv | csky | cydra \ 1199414cce6aSmrg | d10v | d30v | dlx | dsp16xx \ 1200414cce6aSmrg | e2k | elxsi | epiphany \ 1201414cce6aSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1202414cce6aSmrg | h8300 | h8500 \ 1203414cce6aSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1204414cce6aSmrg | hexagon \ 1205414cce6aSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1206414cce6aSmrg | ip2k | iq2000 \ 1207414cce6aSmrg | k1om \ 1208414cce6aSmrg | le32 | le64 \ 1209414cce6aSmrg | lm32 \ 1210414cce6aSmrg | loongarch32 | loongarch64 \ 1211414cce6aSmrg | m32c | m32r | m32rle \ 1212414cce6aSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1213414cce6aSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1214414cce6aSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1215414cce6aSmrg | microblaze | microblazeel \ 1216414cce6aSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1217414cce6aSmrg | mips16 \ 1218414cce6aSmrg | mips64 | mips64eb | mips64el \ 1219414cce6aSmrg | mips64octeon | mips64octeonel \ 1220414cce6aSmrg | mips64orion | mips64orionel \ 1221414cce6aSmrg | mips64r5900 | mips64r5900el \ 1222414cce6aSmrg | mips64vr | mips64vrel \ 1223414cce6aSmrg | mips64vr4100 | mips64vr4100el \ 1224414cce6aSmrg | mips64vr4300 | mips64vr4300el \ 1225414cce6aSmrg | mips64vr5000 | mips64vr5000el \ 1226414cce6aSmrg | mips64vr5900 | mips64vr5900el \ 1227414cce6aSmrg | mipsisa32 | mipsisa32el \ 1228414cce6aSmrg | mipsisa32r2 | mipsisa32r2el \ 1229414cce6aSmrg | mipsisa32r3 | mipsisa32r3el \ 1230414cce6aSmrg | mipsisa32r5 | mipsisa32r5el \ 1231414cce6aSmrg | mipsisa32r6 | mipsisa32r6el \ 1232414cce6aSmrg | mipsisa64 | mipsisa64el \ 1233414cce6aSmrg | mipsisa64r2 | mipsisa64r2el \ 1234414cce6aSmrg | mipsisa64r3 | mipsisa64r3el \ 1235414cce6aSmrg | mipsisa64r5 | mipsisa64r5el \ 1236414cce6aSmrg | mipsisa64r6 | mipsisa64r6el \ 1237414cce6aSmrg | mipsisa64sb1 | mipsisa64sb1el \ 1238414cce6aSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 1239414cce6aSmrg | mipsr5900 | mipsr5900el \ 1240414cce6aSmrg | mipstx39 | mipstx39el \ 1241414cce6aSmrg | mmix \ 1242414cce6aSmrg | mn10200 | mn10300 \ 1243414cce6aSmrg | moxie \ 1244414cce6aSmrg | mt \ 1245414cce6aSmrg | msp430 \ 1246414cce6aSmrg | nds32 | nds32le | nds32be \ 1247414cce6aSmrg | nfp \ 1248414cce6aSmrg | nios | nios2 | nios2eb | nios2el \ 1249414cce6aSmrg | none | np1 | ns16k | ns32k | nvptx \ 1250414cce6aSmrg | open8 \ 1251414cce6aSmrg | or1k* \ 1252414cce6aSmrg | or32 \ 1253414cce6aSmrg | orion \ 1254414cce6aSmrg | picochip \ 1255414cce6aSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1256414cce6aSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1257414cce6aSmrg | pru \ 1258414cce6aSmrg | pyramid \ 1259414cce6aSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1260414cce6aSmrg | rl78 | romp | rs6000 | rx \ 1261414cce6aSmrg | s390 | s390x \ 1262414cce6aSmrg | score \ 1263414cce6aSmrg | sh | shl \ 1264414cce6aSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1265414cce6aSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1266414cce6aSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1267414cce6aSmrg | sparclite \ 1268414cce6aSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1269414cce6aSmrg | spu \ 1270414cce6aSmrg | tahoe \ 1271414cce6aSmrg | thumbv7* \ 1272414cce6aSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1273414cce6aSmrg | tron \ 1274414cce6aSmrg | ubicom32 \ 1275414cce6aSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1276414cce6aSmrg | vax \ 1277414cce6aSmrg | visium \ 1278414cce6aSmrg | w65 \ 1279414cce6aSmrg | wasm32 | wasm64 \ 1280414cce6aSmrg | we32k \ 1281414cce6aSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1282414cce6aSmrg | xstormy16 | xtensa* \ 1283414cce6aSmrg | ymp \ 1284414cce6aSmrg | z8k | z80) 1285414cce6aSmrg ;; 1286414cce6aSmrg 1287414cce6aSmrg *) 1288414cce6aSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1289414cce6aSmrg exit 1 1290414cce6aSmrg ;; 1291414cce6aSmrg esac 129250539131Smrg ;; 129350539131Smrgesac 129450539131Smrg 129550539131Smrg# Here we canonicalize certain aliases for manufacturers. 1296414cce6aSmrgcase $vendor in 1297414cce6aSmrg digital*) 1298414cce6aSmrg vendor=dec 129950539131Smrg ;; 1300414cce6aSmrg commodore*) 1301414cce6aSmrg vendor=cbm 130250539131Smrg ;; 130350539131Smrg *) 130450539131Smrg ;; 130550539131Smrgesac 130650539131Smrg 130750539131Smrg# Decode manufacturer-specific aliases for certain operating systems. 130850539131Smrg 1309414cce6aSmrgif test x$basic_os != x 131050539131Smrgthen 1311414cce6aSmrg 1312414cce6aSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1313414cce6aSmrg# set os. 1314414cce6aSmrgcase $basic_os in 1315414cce6aSmrg gnu/linux*) 1316414cce6aSmrg kernel=linux 1317414cce6aSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1318414cce6aSmrg ;; 1319414cce6aSmrg os2-emx) 1320414cce6aSmrg kernel=os2 1321414cce6aSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1322414cce6aSmrg ;; 1323414cce6aSmrg nto-qnx*) 1324414cce6aSmrg kernel=nto 1325414cce6aSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1326414cce6aSmrg ;; 1327414cce6aSmrg *-*) 1328414cce6aSmrg # shellcheck disable=SC2162 1329414cce6aSmrg saved_IFS=$IFS 1330414cce6aSmrg IFS="-" read kernel os <<EOF 1331414cce6aSmrg$basic_os 1332414cce6aSmrgEOF 1333414cce6aSmrg IFS=$saved_IFS 1334414cce6aSmrg ;; 1335414cce6aSmrg # Default OS when just kernel was specified 1336414cce6aSmrg nto*) 1337414cce6aSmrg kernel=nto 1338414cce6aSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1339414cce6aSmrg ;; 1340414cce6aSmrg linux*) 1341414cce6aSmrg kernel=linux 1342414cce6aSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1343414cce6aSmrg ;; 1344414cce6aSmrg managarm*) 1345414cce6aSmrg kernel=managarm 1346414cce6aSmrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1347414cce6aSmrg ;; 1348414cce6aSmrg *) 1349414cce6aSmrg kernel= 1350414cce6aSmrg os=$basic_os 1351414cce6aSmrg ;; 1352414cce6aSmrgesac 1353414cce6aSmrg 1354414cce6aSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1355414cce6aSmrg# etc.) 135650539131Smrgcase $os in 1357414cce6aSmrg # First match some system type aliases that might get confused 1358414cce6aSmrg # with valid system types. 1359414cce6aSmrg # solaris* is a basic system type, with this one exception. 1360414cce6aSmrg auroraux) 1361414cce6aSmrg os=auroraux 136244d8e951Smrg ;; 1363414cce6aSmrg bluegene*) 1364414cce6aSmrg os=cnk 136550539131Smrg ;; 1366414cce6aSmrg solaris1 | solaris1.*) 1367414cce6aSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 136850539131Smrg ;; 1369414cce6aSmrg solaris) 1370414cce6aSmrg os=solaris2 137150539131Smrg ;; 1372414cce6aSmrg unixware*) 1373414cce6aSmrg os=sysv4.2uw 137450539131Smrg ;; 1375414cce6aSmrg # es1800 is here to avoid being matched by es* (a different OS) 1376414cce6aSmrg es1800*) 1377414cce6aSmrg os=ose 137850539131Smrg ;; 1379414cce6aSmrg # Some version numbers need modification 1380414cce6aSmrg chorusos*) 1381414cce6aSmrg os=chorusos 138250539131Smrg ;; 1383414cce6aSmrg isc) 1384414cce6aSmrg os=isc2.2 138550539131Smrg ;; 1386414cce6aSmrg sco6) 1387414cce6aSmrg os=sco5v6 138850539131Smrg ;; 1389414cce6aSmrg sco5) 1390414cce6aSmrg os=sco3.2v5 139150539131Smrg ;; 1392414cce6aSmrg sco4) 1393414cce6aSmrg os=sco3.2v4 139450539131Smrg ;; 1395414cce6aSmrg sco3.2.[4-9]*) 1396414cce6aSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 139750539131Smrg ;; 1398414cce6aSmrg sco*v* | scout) 1399414cce6aSmrg # Don't match below 140050539131Smrg ;; 1401414cce6aSmrg sco*) 1402414cce6aSmrg os=sco3.2v2 140350539131Smrg ;; 1404414cce6aSmrg psos*) 1405414cce6aSmrg os=psos 140650539131Smrg ;; 1407414cce6aSmrg qnx*) 1408414cce6aSmrg os=qnx 140950539131Smrg ;; 1410414cce6aSmrg hiux*) 1411414cce6aSmrg os=hiuxwe2 141250539131Smrg ;; 1413414cce6aSmrg lynx*178) 1414414cce6aSmrg os=lynxos178 141550539131Smrg ;; 1416414cce6aSmrg lynx*5) 1417414cce6aSmrg os=lynxos5 141850539131Smrg ;; 1419414cce6aSmrg lynxos*) 1420414cce6aSmrg # don't get caught up in next wildcard 142150539131Smrg ;; 1422414cce6aSmrg lynx*) 1423414cce6aSmrg os=lynxos 142450539131Smrg ;; 1425414cce6aSmrg mac[0-9]*) 1426414cce6aSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 142750539131Smrg ;; 1428414cce6aSmrg opened*) 1429414cce6aSmrg os=openedition 143050539131Smrg ;; 1431414cce6aSmrg os400*) 1432414cce6aSmrg os=os400 143350539131Smrg ;; 1434414cce6aSmrg sunos5*) 1435414cce6aSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 143650539131Smrg ;; 1437414cce6aSmrg sunos6*) 1438414cce6aSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 143950539131Smrg ;; 1440414cce6aSmrg wince*) 1441414cce6aSmrg os=wince 144250539131Smrg ;; 1443414cce6aSmrg utek*) 1444414cce6aSmrg os=bsd 144550539131Smrg ;; 1446414cce6aSmrg dynix*) 1447414cce6aSmrg os=bsd 144850539131Smrg ;; 1449414cce6aSmrg acis*) 1450414cce6aSmrg os=aos 145150539131Smrg ;; 1452414cce6aSmrg atheos*) 1453414cce6aSmrg os=atheos 145450539131Smrg ;; 1455414cce6aSmrg syllable*) 1456414cce6aSmrg os=syllable 145750539131Smrg ;; 1458414cce6aSmrg 386bsd) 1459414cce6aSmrg os=bsd 146050539131Smrg ;; 1461414cce6aSmrg ctix* | uts*) 1462414cce6aSmrg os=sysv 146350539131Smrg ;; 1464414cce6aSmrg nova*) 1465414cce6aSmrg os=rtmk-nova 146650539131Smrg ;; 1467414cce6aSmrg ns2) 1468414cce6aSmrg os=nextstep2 146950539131Smrg ;; 1470414cce6aSmrg # Preserve the version number of sinix5. 1471414cce6aSmrg sinix5.*) 1472414cce6aSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 147350539131Smrg ;; 1474414cce6aSmrg sinix*) 1475414cce6aSmrg os=sysv4 147650539131Smrg ;; 1477414cce6aSmrg tpf*) 1478414cce6aSmrg os=tpf 147950539131Smrg ;; 1480414cce6aSmrg triton*) 1481414cce6aSmrg os=sysv3 148250539131Smrg ;; 1483414cce6aSmrg oss*) 1484414cce6aSmrg os=sysv3 148550539131Smrg ;; 1486414cce6aSmrg svr4*) 1487414cce6aSmrg os=sysv4 148850539131Smrg ;; 1489414cce6aSmrg svr3) 1490414cce6aSmrg os=sysv3 149150539131Smrg ;; 1492414cce6aSmrg sysvr4) 1493414cce6aSmrg os=sysv4 149450539131Smrg ;; 1495414cce6aSmrg ose*) 1496414cce6aSmrg os=ose 149750539131Smrg ;; 1498414cce6aSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1499414cce6aSmrg os=mint 150050539131Smrg ;; 1501414cce6aSmrg dicos*) 1502414cce6aSmrg os=dicos 150350539131Smrg ;; 1504414cce6aSmrg pikeos*) 1505414cce6aSmrg # Until real need of OS specific support for 1506414cce6aSmrg # particular features comes up, bare metal 1507414cce6aSmrg # configurations are quite functional. 1508414cce6aSmrg case $cpu in 1509414cce6aSmrg arm*) 1510414cce6aSmrg os=eabi 1511414cce6aSmrg ;; 1512414cce6aSmrg *) 1513414cce6aSmrg os=elf 1514414cce6aSmrg ;; 1515414cce6aSmrg esac 151650539131Smrg ;; 151750539131Smrg *) 1518414cce6aSmrg # No normalization, but not necessarily accepted, that comes below. 151950539131Smrg ;; 152050539131Smrgesac 1521414cce6aSmrg 152250539131Smrgelse 152350539131Smrg 152450539131Smrg# Here we handle the default operating systems that come with various machines. 152550539131Smrg# The value should be what the vendor currently ships out the door with their 152650539131Smrg# machine or put another way, the most popular os provided with the machine. 152750539131Smrg 152850539131Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 152950539131Smrg# "-sun"), then you have to tell the case statement up towards the top 153050539131Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 153150539131Smrg# will signal an error saying that MANUFACTURER isn't an operating 153250539131Smrg# system, and we'll never get to this point. 153350539131Smrg 1534414cce6aSmrgkernel= 1535414cce6aSmrgcase $cpu-$vendor in 1536414cce6aSmrg score-*) 1537414cce6aSmrg os=elf 153850539131Smrg ;; 1539414cce6aSmrg spu-*) 1540414cce6aSmrg os=elf 154150539131Smrg ;; 154250539131Smrg *-acorn) 1543414cce6aSmrg os=riscix1.2 154450539131Smrg ;; 154550539131Smrg arm*-rebel) 1546414cce6aSmrg kernel=linux 1547414cce6aSmrg os=gnu 154850539131Smrg ;; 154950539131Smrg arm*-semi) 1550414cce6aSmrg os=aout 1551414cce6aSmrg ;; 1552414cce6aSmrg c4x-* | tic4x-*) 1553414cce6aSmrg os=coff 1554414cce6aSmrg ;; 1555414cce6aSmrg c8051-*) 1556414cce6aSmrg os=elf 1557414cce6aSmrg ;; 1558414cce6aSmrg clipper-intergraph) 1559414cce6aSmrg os=clix 156050539131Smrg ;; 1561414cce6aSmrg hexagon-*) 1562414cce6aSmrg os=elf 156350539131Smrg ;; 156444d8e951Smrg tic54x-*) 1565414cce6aSmrg os=coff 156644d8e951Smrg ;; 156744d8e951Smrg tic55x-*) 1568414cce6aSmrg os=coff 156944d8e951Smrg ;; 157044d8e951Smrg tic6x-*) 1571414cce6aSmrg os=coff 157244d8e951Smrg ;; 157350539131Smrg # This must come before the *-dec entry. 157450539131Smrg pdp10-*) 1575414cce6aSmrg os=tops20 157650539131Smrg ;; 157750539131Smrg pdp11-*) 1578414cce6aSmrg os=none 157950539131Smrg ;; 158050539131Smrg *-dec | vax-*) 1581414cce6aSmrg os=ultrix4.2 158250539131Smrg ;; 158350539131Smrg m68*-apollo) 1584414cce6aSmrg os=domain 158550539131Smrg ;; 158650539131Smrg i386-sun) 1587414cce6aSmrg os=sunos4.0.2 158850539131Smrg ;; 158950539131Smrg m68000-sun) 1590414cce6aSmrg os=sunos3 159150539131Smrg ;; 159250539131Smrg m68*-cisco) 1593414cce6aSmrg os=aout 159450539131Smrg ;; 1595414cce6aSmrg mep-*) 1596414cce6aSmrg os=elf 159750539131Smrg ;; 159850539131Smrg mips*-cisco) 1599414cce6aSmrg os=elf 160050539131Smrg ;; 160150539131Smrg mips*-*) 1602414cce6aSmrg os=elf 160350539131Smrg ;; 160450539131Smrg or32-*) 1605414cce6aSmrg os=coff 160650539131Smrg ;; 160750539131Smrg *-tti) # must be before sparc entry or we get the wrong os. 1608414cce6aSmrg os=sysv3 160950539131Smrg ;; 161050539131Smrg sparc-* | *-sun) 1611414cce6aSmrg os=sunos4.1.1 161250539131Smrg ;; 1613414cce6aSmrg pru-*) 1614414cce6aSmrg os=elf 161550539131Smrg ;; 1616414cce6aSmrg *-be) 1617414cce6aSmrg os=beos 161850539131Smrg ;; 161950539131Smrg *-ibm) 1620414cce6aSmrg os=aix 162150539131Smrg ;; 1622414cce6aSmrg *-knuth) 1623414cce6aSmrg os=mmixware 162450539131Smrg ;; 162550539131Smrg *-wec) 1626414cce6aSmrg os=proelf 162750539131Smrg ;; 162850539131Smrg *-winbond) 1629414cce6aSmrg os=proelf 163050539131Smrg ;; 163150539131Smrg *-oki) 1632414cce6aSmrg os=proelf 163350539131Smrg ;; 163450539131Smrg *-hp) 1635414cce6aSmrg os=hpux 163650539131Smrg ;; 163750539131Smrg *-hitachi) 1638414cce6aSmrg os=hiux 163950539131Smrg ;; 164050539131Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1641414cce6aSmrg os=sysv 164250539131Smrg ;; 164350539131Smrg *-cbm) 1644414cce6aSmrg os=amigaos 164550539131Smrg ;; 164650539131Smrg *-dg) 1647414cce6aSmrg os=dgux 164850539131Smrg ;; 164950539131Smrg *-dolphin) 1650414cce6aSmrg os=sysv3 165150539131Smrg ;; 165250539131Smrg m68k-ccur) 1653414cce6aSmrg os=rtu 165450539131Smrg ;; 165550539131Smrg m88k-omron*) 1656414cce6aSmrg os=luna 165750539131Smrg ;; 1658414cce6aSmrg *-next) 1659414cce6aSmrg os=nextstep 166050539131Smrg ;; 166150539131Smrg *-sequent) 1662414cce6aSmrg os=ptx 166350539131Smrg ;; 166450539131Smrg *-crds) 1665414cce6aSmrg os=unos 166650539131Smrg ;; 166750539131Smrg *-ns) 1668414cce6aSmrg os=genix 166950539131Smrg ;; 167050539131Smrg i370-*) 1671414cce6aSmrg os=mvs 167250539131Smrg ;; 167350539131Smrg *-gould) 1674414cce6aSmrg os=sysv 167550539131Smrg ;; 167650539131Smrg *-highlevel) 1677414cce6aSmrg os=bsd 167850539131Smrg ;; 167950539131Smrg *-encore) 1680414cce6aSmrg os=bsd 168150539131Smrg ;; 168250539131Smrg *-sgi) 1683414cce6aSmrg os=irix 168450539131Smrg ;; 168550539131Smrg *-siemens) 1686414cce6aSmrg os=sysv4 168750539131Smrg ;; 168850539131Smrg *-masscomp) 1689414cce6aSmrg os=rtu 169050539131Smrg ;; 169150539131Smrg f30[01]-fujitsu | f700-fujitsu) 1692414cce6aSmrg os=uxpv 169350539131Smrg ;; 169450539131Smrg *-rom68k) 1695414cce6aSmrg os=coff 169650539131Smrg ;; 169750539131Smrg *-*bug) 1698414cce6aSmrg os=coff 169950539131Smrg ;; 170050539131Smrg *-apple) 1701414cce6aSmrg os=macos 170250539131Smrg ;; 170350539131Smrg *-atari*) 1704414cce6aSmrg os=mint 1705414cce6aSmrg ;; 1706414cce6aSmrg *-wrs) 1707414cce6aSmrg os=vxworks 170850539131Smrg ;; 170950539131Smrg *) 1710414cce6aSmrg os=none 171150539131Smrg ;; 171250539131Smrgesac 1713414cce6aSmrg 171450539131Smrgfi 171550539131Smrg 1716414cce6aSmrg# Now, validate our (potentially fixed-up) OS. 1717414cce6aSmrgcase $os in 1718414cce6aSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1719414cce6aSmrg musl* | newlib* | relibc* | uclibc*) 1720414cce6aSmrg ;; 1721414cce6aSmrg # Likewise for "kernel-abi" 1722414cce6aSmrg eabi* | gnueabi*) 1723414cce6aSmrg ;; 1724414cce6aSmrg # VxWorks passes extra cpu info in the 4th filed. 1725414cce6aSmrg simlinux | simwindows | spe) 1726414cce6aSmrg ;; 1727414cce6aSmrg # Now accept the basic system types. 1728414cce6aSmrg # The portable systems comes first. 1729414cce6aSmrg # Each alternative MUST end in a * to match a version number. 1730414cce6aSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1731414cce6aSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1732414cce6aSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1733414cce6aSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1734414cce6aSmrg | hiux* | abug | nacl* | netware* | windows* \ 1735414cce6aSmrg | os9* | macos* | osx* | ios* \ 1736414cce6aSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1737414cce6aSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1738414cce6aSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1739414cce6aSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1740414cce6aSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1741414cce6aSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1742414cce6aSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1743414cce6aSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1744414cce6aSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1745414cce6aSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1746414cce6aSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1747414cce6aSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1748414cce6aSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1749414cce6aSmrg | midipix* | mingw32* | mingw64* | mint* \ 1750414cce6aSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1751414cce6aSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1752414cce6aSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1753414cce6aSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1754414cce6aSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1755414cce6aSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1756414cce6aSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1757414cce6aSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1758414cce6aSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1759414cce6aSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1760414cce6aSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1761414cce6aSmrg | fiwix* | mlibc* ) 1762414cce6aSmrg ;; 1763414cce6aSmrg # This one is extra strict with allowed versions 1764414cce6aSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1765414cce6aSmrg # Don't forget version if it is 3.2v4 or newer. 1766414cce6aSmrg ;; 1767414cce6aSmrg none) 1768414cce6aSmrg ;; 1769414cce6aSmrg kernel* ) 1770414cce6aSmrg # Restricted further below 1771414cce6aSmrg ;; 1772414cce6aSmrg *) 1773414cce6aSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1774414cce6aSmrg exit 1 1775414cce6aSmrg ;; 1776414cce6aSmrgesac 1777414cce6aSmrg 1778414cce6aSmrg# As a final step for OS-related things, validate the OS-kernel combination 1779414cce6aSmrg# (given a valid OS), if there is a kernel. 1780414cce6aSmrgcase $kernel-$os in 1781414cce6aSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1782414cce6aSmrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 1783414cce6aSmrg ;; 1784414cce6aSmrg uclinux-uclibc* ) 1785414cce6aSmrg ;; 1786414cce6aSmrg managarm-mlibc* | managarm-kernel* ) 1787414cce6aSmrg ;; 1788414cce6aSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 1789414cce6aSmrg # These are just libc implementations, not actual OSes, and thus 1790414cce6aSmrg # require a kernel. 1791414cce6aSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1792414cce6aSmrg exit 1 1793414cce6aSmrg ;; 1794414cce6aSmrg -kernel* ) 1795414cce6aSmrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 1796414cce6aSmrg exit 1 1797414cce6aSmrg ;; 1798414cce6aSmrg *-kernel* ) 1799414cce6aSmrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 1800414cce6aSmrg exit 1 1801414cce6aSmrg ;; 1802414cce6aSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1803414cce6aSmrg ;; 1804414cce6aSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1805414cce6aSmrg ;; 1806414cce6aSmrg nto-qnx*) 1807414cce6aSmrg ;; 1808414cce6aSmrg os2-emx) 1809414cce6aSmrg ;; 1810414cce6aSmrg *-eabi* | *-gnueabi*) 1811414cce6aSmrg ;; 1812414cce6aSmrg -*) 1813414cce6aSmrg # Blank kernel with real OS is always fine. 1814414cce6aSmrg ;; 1815414cce6aSmrg *-*) 1816414cce6aSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1817414cce6aSmrg exit 1 1818414cce6aSmrg ;; 1819414cce6aSmrgesac 1820414cce6aSmrg 182150539131Smrg# Here we handle the case where we know the os, and the CPU type, but not the 182250539131Smrg# manufacturer. We pick the logical manufacturer. 1823414cce6aSmrgcase $vendor in 1824414cce6aSmrg unknown) 1825414cce6aSmrg case $cpu-$os in 1826414cce6aSmrg *-riscix*) 182750539131Smrg vendor=acorn 182850539131Smrg ;; 1829414cce6aSmrg *-sunos*) 183050539131Smrg vendor=sun 183150539131Smrg ;; 1832414cce6aSmrg *-cnk* | *-aix*) 183350539131Smrg vendor=ibm 183450539131Smrg ;; 1835414cce6aSmrg *-beos*) 183650539131Smrg vendor=be 183750539131Smrg ;; 1838414cce6aSmrg *-hpux*) 183950539131Smrg vendor=hp 184050539131Smrg ;; 1841414cce6aSmrg *-mpeix*) 184250539131Smrg vendor=hp 184350539131Smrg ;; 1844414cce6aSmrg *-hiux*) 184550539131Smrg vendor=hitachi 184650539131Smrg ;; 1847414cce6aSmrg *-unos*) 184850539131Smrg vendor=crds 184950539131Smrg ;; 1850414cce6aSmrg *-dgux*) 185150539131Smrg vendor=dg 185250539131Smrg ;; 1853414cce6aSmrg *-luna*) 185450539131Smrg vendor=omron 185550539131Smrg ;; 1856414cce6aSmrg *-genix*) 185750539131Smrg vendor=ns 185850539131Smrg ;; 1859414cce6aSmrg *-clix*) 1860414cce6aSmrg vendor=intergraph 1861414cce6aSmrg ;; 1862414cce6aSmrg *-mvs* | *-opened*) 1863414cce6aSmrg vendor=ibm 1864414cce6aSmrg ;; 1865414cce6aSmrg *-os400*) 186650539131Smrg vendor=ibm 186750539131Smrg ;; 1868414cce6aSmrg s390-* | s390x-*) 186950539131Smrg vendor=ibm 187050539131Smrg ;; 1871414cce6aSmrg *-ptx*) 187250539131Smrg vendor=sequent 187350539131Smrg ;; 1874414cce6aSmrg *-tpf*) 187550539131Smrg vendor=ibm 187650539131Smrg ;; 1877414cce6aSmrg *-vxsim* | *-vxworks* | *-windiss*) 187850539131Smrg vendor=wrs 187950539131Smrg ;; 1880414cce6aSmrg *-aux*) 188150539131Smrg vendor=apple 188250539131Smrg ;; 1883414cce6aSmrg *-hms*) 188450539131Smrg vendor=hitachi 188550539131Smrg ;; 1886414cce6aSmrg *-mpw* | *-macos*) 188750539131Smrg vendor=apple 188850539131Smrg ;; 1889414cce6aSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 189050539131Smrg vendor=atari 189150539131Smrg ;; 1892414cce6aSmrg *-vos*) 189350539131Smrg vendor=stratus 189450539131Smrg ;; 189550539131Smrg esac 189650539131Smrg ;; 189750539131Smrgesac 189850539131Smrg 1899414cce6aSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 190050539131Smrgexit 190150539131Smrg 190250539131Smrg# Local variables: 1903414cce6aSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 190450539131Smrg# time-stamp-start: "timestamp='" 190550539131Smrg# time-stamp-format: "%:y-%02m-%02d" 190650539131Smrg# time-stamp-end: "'" 190750539131Smrg# End: 1908