config.sub revision 38d718bd
133c89af1Smrg#! /bin/sh 233c89af1Smrg# Configuration validation subroutine script. 338d718bdSmrg# Copyright 1992-2023 Free Software Foundation, Inc. 433c89af1Smrg 5352bf44eSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6352bf44eSmrg 738d718bdSmrgtimestamp='2023-01-21' 833c89af1Smrg 9ad47b356Smrg# This file is free software; you can redistribute it and/or modify it 10ad47b356Smrg# under the terms of the GNU General Public License as published by 1138d718bdSmrg# the Free Software Foundation, either version 3 of the License, or 1233c89af1Smrg# (at your option) any later version. 1333c89af1Smrg# 14ad47b356Smrg# This program is distributed in the hope that it will be useful, but 15ad47b356Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16ad47b356Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17ad47b356Smrg# General Public License for more details. 1833c89af1Smrg# 1933c89af1Smrg# You should have received a copy of the GNU General Public License 20352bf44eSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 2133c89af1Smrg# 2233c89af1Smrg# As a special exception to the GNU General Public License, if you 2333c89af1Smrg# distribute this file as part of a program that contains a 2433c89af1Smrg# configuration script generated by Autoconf, you may include it under 25ad47b356Smrg# the same distribution terms that you use for the rest of that 26ad47b356Smrg# program. This Exception is an additional permission under section 7 27ad47b356Smrg# of the GNU General Public License, version 3 ("GPLv3"). 2833c89af1Smrg 2933c89af1Smrg 30ad47b356Smrg# Please send patches to <config-patches@gnu.org>. 3133c89af1Smrg# 3233c89af1Smrg# Configuration subroutine to validate and canonicalize a configuration type. 3333c89af1Smrg# Supply the specified configuration type as an argument. 3433c89af1Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 3533c89af1Smrg# Otherwise, we print the canonical config type on stdout and succeed. 3633c89af1Smrg 3716d8e44fSmrg# You can get the latest version of this script from: 38352bf44eSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 3916d8e44fSmrg 4033c89af1Smrg# This file is supposed to be the same for all GNU packages 4133c89af1Smrg# and recognize all the CPU types, system types and aliases 4233c89af1Smrg# that are meaningful with *any* GNU software. 4333c89af1Smrg# Each package is responsible for reporting which valid configurations 4433c89af1Smrg# it does not support. The user should be able to distinguish 4533c89af1Smrg# a failure to support a valid configuration from a meaningless 4633c89af1Smrg# configuration. 4733c89af1Smrg 4833c89af1Smrg# The goal of this file is to map all the various variations of a given 4933c89af1Smrg# machine specification into a single specification in the form: 5033c89af1Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5133c89af1Smrg# or in some cases, the newer four-part form: 5233c89af1Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5333c89af1Smrg# It is wrong to echo any other type of specification. 5433c89af1Smrg 55352bf44eSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 56352bf44eSmrg# about features and limitations of the classic Bourne shell that were 57352bf44eSmrg# superseded or lifted in POSIX. However, this script identifies a wide 58352bf44eSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59352bf44eSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60352bf44eSmrg# have a pre-POSIX /bin/sh. 61352bf44eSmrg 6233c89af1Smrgme=`echo "$0" | sed -e 's,.*/,,'` 6333c89af1Smrg 6433c89af1Smrgusage="\ 65352bf44eSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6633c89af1Smrg 6733c89af1SmrgCanonicalize a configuration name. 6833c89af1Smrg 69352bf44eSmrgOptions: 7033c89af1Smrg -h, --help print this help, then exit 7133c89af1Smrg -t, --time-stamp print date of last modification, then exit 7233c89af1Smrg -v, --version print version number, then exit 7333c89af1Smrg 7433c89af1SmrgReport bugs and patches to <config-patches@gnu.org>." 7533c89af1Smrg 7633c89af1Smrgversion="\ 7733c89af1SmrgGNU config.sub ($timestamp) 7833c89af1Smrg 7938d718bdSmrgCopyright 1992-2023 Free Software Foundation, Inc. 8033c89af1Smrg 8133c89af1SmrgThis is free software; see the source for copying conditions. There is NO 8233c89af1Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8333c89af1Smrg 8433c89af1Smrghelp=" 8533c89af1SmrgTry \`$me --help' for more information." 8633c89af1Smrg 8733c89af1Smrg# Parse command line 8833c89af1Smrgwhile test $# -gt 0 ; do 8933c89af1Smrg case $1 in 9033c89af1Smrg --time-stamp | --time* | -t ) 9133c89af1Smrg echo "$timestamp" ; exit ;; 9233c89af1Smrg --version | -v ) 9333c89af1Smrg echo "$version" ; exit ;; 9433c89af1Smrg --help | --h* | -h ) 9533c89af1Smrg echo "$usage"; exit ;; 9633c89af1Smrg -- ) # Stop option processing 9733c89af1Smrg shift; break ;; 9833c89af1Smrg - ) # Use stdin as input. 9933c89af1Smrg break ;; 10033c89af1Smrg -* ) 101352bf44eSmrg echo "$me: invalid option $1$help" >&2 10233c89af1Smrg exit 1 ;; 10333c89af1Smrg 10433c89af1Smrg *local*) 10533c89af1Smrg # First pass through any local machine types. 106352bf44eSmrg echo "$1" 10733c89af1Smrg exit ;; 10833c89af1Smrg 10933c89af1Smrg * ) 11033c89af1Smrg break ;; 11133c89af1Smrg esac 11233c89af1Smrgdone 11333c89af1Smrg 11433c89af1Smrgcase $# in 11533c89af1Smrg 0) echo "$me: missing argument$help" >&2 11633c89af1Smrg exit 1;; 11733c89af1Smrg 1) ;; 11833c89af1Smrg *) echo "$me: too many arguments$help" >&2 11933c89af1Smrg exit 1;; 12033c89af1Smrgesac 12133c89af1Smrg 122352bf44eSmrg# Split fields of configuration type 123352bf44eSmrg# shellcheck disable=SC2162 124352bf44eSmrgsaved_IFS=$IFS 125352bf44eSmrgIFS="-" read field1 field2 field3 field4 <<EOF 126352bf44eSmrg$1 127352bf44eSmrgEOF 128352bf44eSmrgIFS=$saved_IFS 12933c89af1Smrg 130352bf44eSmrg# Separate into logical components for further validation 131352bf44eSmrgcase $1 in 132352bf44eSmrg *-*-*-*-*) 133352bf44eSmrg echo Invalid configuration \`"$1"\': more than four components >&2 134352bf44eSmrg exit 1 13533c89af1Smrg ;; 136352bf44eSmrg *-*-*-*) 137352bf44eSmrg basic_machine=$field1-$field2 138352bf44eSmrg basic_os=$field3-$field4 13933c89af1Smrg ;; 140352bf44eSmrg *-*-*) 141352bf44eSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142352bf44eSmrg # parts 143352bf44eSmrg maybe_os=$field2-$field3 144352bf44eSmrg case $maybe_os in 145352bf44eSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 146352bf44eSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147352bf44eSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14838d718bdSmrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 149352bf44eSmrg basic_machine=$field1 150352bf44eSmrg basic_os=$maybe_os 151352bf44eSmrg ;; 152352bf44eSmrg android-linux) 153352bf44eSmrg basic_machine=$field1-unknown 154352bf44eSmrg basic_os=linux-android 155352bf44eSmrg ;; 156352bf44eSmrg *) 157352bf44eSmrg basic_machine=$field1-$field2 158352bf44eSmrg basic_os=$field3 159352bf44eSmrg ;; 160352bf44eSmrg esac 16133c89af1Smrg ;; 162352bf44eSmrg *-*) 163352bf44eSmrg # A lone config we happen to match not fitting any pattern 164352bf44eSmrg case $field1-$field2 in 165352bf44eSmrg decstation-3100) 166352bf44eSmrg basic_machine=mips-dec 167352bf44eSmrg basic_os= 168352bf44eSmrg ;; 169352bf44eSmrg *-*) 170352bf44eSmrg # Second component is usually, but not always the OS 171352bf44eSmrg case $field2 in 172352bf44eSmrg # Prevent following clause from handling this valid os 173352bf44eSmrg sun*os*) 174352bf44eSmrg basic_machine=$field1 175352bf44eSmrg basic_os=$field2 176352bf44eSmrg ;; 177352bf44eSmrg zephyr*) 178352bf44eSmrg basic_machine=$field1-unknown 179352bf44eSmrg basic_os=$field2 180352bf44eSmrg ;; 181352bf44eSmrg # Manufacturers 182352bf44eSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183352bf44eSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184352bf44eSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185352bf44eSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186352bf44eSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187352bf44eSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188352bf44eSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189352bf44eSmrg | microblaze* | sim | cisco \ 190352bf44eSmrg | oki | wec | wrs | winbond) 191352bf44eSmrg basic_machine=$field1-$field2 192352bf44eSmrg basic_os= 193352bf44eSmrg ;; 194352bf44eSmrg *) 195352bf44eSmrg basic_machine=$field1 196352bf44eSmrg basic_os=$field2 197352bf44eSmrg ;; 198352bf44eSmrg esac 199352bf44eSmrg ;; 200352bf44eSmrg esac 20133c89af1Smrg ;; 202352bf44eSmrg *) 203352bf44eSmrg # Convert single-component short-hands not valid as part of 204352bf44eSmrg # multi-component configurations. 205352bf44eSmrg case $field1 in 206352bf44eSmrg 386bsd) 207352bf44eSmrg basic_machine=i386-pc 208352bf44eSmrg basic_os=bsd 209352bf44eSmrg ;; 210352bf44eSmrg a29khif) 211352bf44eSmrg basic_machine=a29k-amd 212352bf44eSmrg basic_os=udi 213352bf44eSmrg ;; 214352bf44eSmrg adobe68k) 215352bf44eSmrg basic_machine=m68010-adobe 216352bf44eSmrg basic_os=scout 217352bf44eSmrg ;; 218352bf44eSmrg alliant) 219352bf44eSmrg basic_machine=fx80-alliant 220352bf44eSmrg basic_os= 221352bf44eSmrg ;; 222352bf44eSmrg altos | altos3068) 223352bf44eSmrg basic_machine=m68k-altos 224352bf44eSmrg basic_os= 225352bf44eSmrg ;; 226352bf44eSmrg am29k) 227352bf44eSmrg basic_machine=a29k-none 228352bf44eSmrg basic_os=bsd 229352bf44eSmrg ;; 230352bf44eSmrg amdahl) 231352bf44eSmrg basic_machine=580-amdahl 232352bf44eSmrg basic_os=sysv 233352bf44eSmrg ;; 234352bf44eSmrg amiga) 235352bf44eSmrg basic_machine=m68k-unknown 236352bf44eSmrg basic_os= 237352bf44eSmrg ;; 238352bf44eSmrg amigaos | amigados) 239352bf44eSmrg basic_machine=m68k-unknown 240352bf44eSmrg basic_os=amigaos 241352bf44eSmrg ;; 242352bf44eSmrg amigaunix | amix) 243352bf44eSmrg basic_machine=m68k-unknown 244352bf44eSmrg basic_os=sysv4 245352bf44eSmrg ;; 246352bf44eSmrg apollo68) 247352bf44eSmrg basic_machine=m68k-apollo 248352bf44eSmrg basic_os=sysv 249352bf44eSmrg ;; 250352bf44eSmrg apollo68bsd) 251352bf44eSmrg basic_machine=m68k-apollo 252352bf44eSmrg basic_os=bsd 253352bf44eSmrg ;; 254352bf44eSmrg aros) 255352bf44eSmrg basic_machine=i386-pc 256352bf44eSmrg basic_os=aros 257352bf44eSmrg ;; 258352bf44eSmrg aux) 259352bf44eSmrg basic_machine=m68k-apple 260352bf44eSmrg basic_os=aux 261352bf44eSmrg ;; 262352bf44eSmrg balance) 263352bf44eSmrg basic_machine=ns32k-sequent 264352bf44eSmrg basic_os=dynix 265352bf44eSmrg ;; 266352bf44eSmrg blackfin) 267352bf44eSmrg basic_machine=bfin-unknown 268352bf44eSmrg basic_os=linux 269352bf44eSmrg ;; 270352bf44eSmrg cegcc) 271352bf44eSmrg basic_machine=arm-unknown 272352bf44eSmrg basic_os=cegcc 273352bf44eSmrg ;; 274352bf44eSmrg convex-c1) 275352bf44eSmrg basic_machine=c1-convex 276352bf44eSmrg basic_os=bsd 277352bf44eSmrg ;; 278352bf44eSmrg convex-c2) 279352bf44eSmrg basic_machine=c2-convex 280352bf44eSmrg basic_os=bsd 281352bf44eSmrg ;; 282352bf44eSmrg convex-c32) 283352bf44eSmrg basic_machine=c32-convex 284352bf44eSmrg basic_os=bsd 285352bf44eSmrg ;; 286352bf44eSmrg convex-c34) 287352bf44eSmrg basic_machine=c34-convex 288352bf44eSmrg basic_os=bsd 289352bf44eSmrg ;; 290352bf44eSmrg convex-c38) 291352bf44eSmrg basic_machine=c38-convex 292352bf44eSmrg basic_os=bsd 293352bf44eSmrg ;; 294352bf44eSmrg cray) 295352bf44eSmrg basic_machine=j90-cray 296352bf44eSmrg basic_os=unicos 297352bf44eSmrg ;; 298352bf44eSmrg crds | unos) 299352bf44eSmrg basic_machine=m68k-crds 300352bf44eSmrg basic_os= 301352bf44eSmrg ;; 302352bf44eSmrg da30) 303352bf44eSmrg basic_machine=m68k-da30 304352bf44eSmrg basic_os= 305352bf44eSmrg ;; 306352bf44eSmrg decstation | pmax | pmin | dec3100 | decstatn) 307352bf44eSmrg basic_machine=mips-dec 308352bf44eSmrg basic_os= 309352bf44eSmrg ;; 310352bf44eSmrg delta88) 311352bf44eSmrg basic_machine=m88k-motorola 312352bf44eSmrg basic_os=sysv3 313352bf44eSmrg ;; 314352bf44eSmrg dicos) 315352bf44eSmrg basic_machine=i686-pc 316352bf44eSmrg basic_os=dicos 317352bf44eSmrg ;; 318352bf44eSmrg djgpp) 319352bf44eSmrg basic_machine=i586-pc 320352bf44eSmrg basic_os=msdosdjgpp 321352bf44eSmrg ;; 322352bf44eSmrg ebmon29k) 323352bf44eSmrg basic_machine=a29k-amd 324352bf44eSmrg basic_os=ebmon 325352bf44eSmrg ;; 326352bf44eSmrg es1800 | OSE68k | ose68k | ose | OSE) 327352bf44eSmrg basic_machine=m68k-ericsson 328352bf44eSmrg basic_os=ose 329352bf44eSmrg ;; 330352bf44eSmrg gmicro) 331352bf44eSmrg basic_machine=tron-gmicro 332352bf44eSmrg basic_os=sysv 333352bf44eSmrg ;; 334352bf44eSmrg go32) 335352bf44eSmrg basic_machine=i386-pc 336352bf44eSmrg basic_os=go32 337352bf44eSmrg ;; 338352bf44eSmrg h8300hms) 339352bf44eSmrg basic_machine=h8300-hitachi 340352bf44eSmrg basic_os=hms 341352bf44eSmrg ;; 342352bf44eSmrg h8300xray) 343352bf44eSmrg basic_machine=h8300-hitachi 344352bf44eSmrg basic_os=xray 345352bf44eSmrg ;; 346352bf44eSmrg h8500hms) 347352bf44eSmrg basic_machine=h8500-hitachi 348352bf44eSmrg basic_os=hms 349352bf44eSmrg ;; 350352bf44eSmrg harris) 351352bf44eSmrg basic_machine=m88k-harris 352352bf44eSmrg basic_os=sysv3 353352bf44eSmrg ;; 354352bf44eSmrg hp300 | hp300hpux) 355352bf44eSmrg basic_machine=m68k-hp 356352bf44eSmrg basic_os=hpux 357352bf44eSmrg ;; 358352bf44eSmrg hp300bsd) 359352bf44eSmrg basic_machine=m68k-hp 360352bf44eSmrg basic_os=bsd 361352bf44eSmrg ;; 362352bf44eSmrg hppaosf) 363352bf44eSmrg basic_machine=hppa1.1-hp 364352bf44eSmrg basic_os=osf 365352bf44eSmrg ;; 366352bf44eSmrg hppro) 367352bf44eSmrg basic_machine=hppa1.1-hp 368352bf44eSmrg basic_os=proelf 369352bf44eSmrg ;; 370352bf44eSmrg i386mach) 371352bf44eSmrg basic_machine=i386-mach 372352bf44eSmrg basic_os=mach 373352bf44eSmrg ;; 374352bf44eSmrg isi68 | isi) 375352bf44eSmrg basic_machine=m68k-isi 376352bf44eSmrg basic_os=sysv 377352bf44eSmrg ;; 378352bf44eSmrg m68knommu) 379352bf44eSmrg basic_machine=m68k-unknown 380352bf44eSmrg basic_os=linux 381352bf44eSmrg ;; 382352bf44eSmrg magnum | m3230) 383352bf44eSmrg basic_machine=mips-mips 384352bf44eSmrg basic_os=sysv 385352bf44eSmrg ;; 386352bf44eSmrg merlin) 387352bf44eSmrg basic_machine=ns32k-utek 388352bf44eSmrg basic_os=sysv 389352bf44eSmrg ;; 390352bf44eSmrg mingw64) 391352bf44eSmrg basic_machine=x86_64-pc 392352bf44eSmrg basic_os=mingw64 393352bf44eSmrg ;; 394352bf44eSmrg mingw32) 395352bf44eSmrg basic_machine=i686-pc 396352bf44eSmrg basic_os=mingw32 397352bf44eSmrg ;; 398352bf44eSmrg mingw32ce) 399352bf44eSmrg basic_machine=arm-unknown 400352bf44eSmrg basic_os=mingw32ce 401352bf44eSmrg ;; 402352bf44eSmrg monitor) 403352bf44eSmrg basic_machine=m68k-rom68k 404352bf44eSmrg basic_os=coff 405352bf44eSmrg ;; 406352bf44eSmrg morphos) 407352bf44eSmrg basic_machine=powerpc-unknown 408352bf44eSmrg basic_os=morphos 409352bf44eSmrg ;; 410352bf44eSmrg moxiebox) 411352bf44eSmrg basic_machine=moxie-unknown 412352bf44eSmrg basic_os=moxiebox 413352bf44eSmrg ;; 414352bf44eSmrg msdos) 415352bf44eSmrg basic_machine=i386-pc 416352bf44eSmrg basic_os=msdos 417352bf44eSmrg ;; 418352bf44eSmrg msys) 419352bf44eSmrg basic_machine=i686-pc 420352bf44eSmrg basic_os=msys 421352bf44eSmrg ;; 422352bf44eSmrg mvs) 423352bf44eSmrg basic_machine=i370-ibm 424352bf44eSmrg basic_os=mvs 425352bf44eSmrg ;; 426352bf44eSmrg nacl) 427352bf44eSmrg basic_machine=le32-unknown 428352bf44eSmrg basic_os=nacl 429352bf44eSmrg ;; 430352bf44eSmrg ncr3000) 431352bf44eSmrg basic_machine=i486-ncr 432352bf44eSmrg basic_os=sysv4 433352bf44eSmrg ;; 434352bf44eSmrg netbsd386) 435352bf44eSmrg basic_machine=i386-pc 436352bf44eSmrg basic_os=netbsd 437352bf44eSmrg ;; 438352bf44eSmrg netwinder) 439352bf44eSmrg basic_machine=armv4l-rebel 440352bf44eSmrg basic_os=linux 441352bf44eSmrg ;; 442352bf44eSmrg news | news700 | news800 | news900) 443352bf44eSmrg basic_machine=m68k-sony 444352bf44eSmrg basic_os=newsos 445352bf44eSmrg ;; 446352bf44eSmrg news1000) 447352bf44eSmrg basic_machine=m68030-sony 448352bf44eSmrg basic_os=newsos 449352bf44eSmrg ;; 450352bf44eSmrg necv70) 451352bf44eSmrg basic_machine=v70-nec 452352bf44eSmrg basic_os=sysv 453352bf44eSmrg ;; 454352bf44eSmrg nh3000) 455352bf44eSmrg basic_machine=m68k-harris 456352bf44eSmrg basic_os=cxux 457352bf44eSmrg ;; 458352bf44eSmrg nh[45]000) 459352bf44eSmrg basic_machine=m88k-harris 460352bf44eSmrg basic_os=cxux 461352bf44eSmrg ;; 462352bf44eSmrg nindy960) 463352bf44eSmrg basic_machine=i960-intel 464352bf44eSmrg basic_os=nindy 465352bf44eSmrg ;; 466352bf44eSmrg mon960) 467352bf44eSmrg basic_machine=i960-intel 468352bf44eSmrg basic_os=mon960 469352bf44eSmrg ;; 470352bf44eSmrg nonstopux) 471352bf44eSmrg basic_machine=mips-compaq 472352bf44eSmrg basic_os=nonstopux 473352bf44eSmrg ;; 474352bf44eSmrg os400) 475352bf44eSmrg basic_machine=powerpc-ibm 476352bf44eSmrg basic_os=os400 477352bf44eSmrg ;; 478352bf44eSmrg OSE68000 | ose68000) 479352bf44eSmrg basic_machine=m68000-ericsson 480352bf44eSmrg basic_os=ose 481352bf44eSmrg ;; 482352bf44eSmrg os68k) 483352bf44eSmrg basic_machine=m68k-none 484352bf44eSmrg basic_os=os68k 485352bf44eSmrg ;; 486352bf44eSmrg paragon) 487352bf44eSmrg basic_machine=i860-intel 488352bf44eSmrg basic_os=osf 489352bf44eSmrg ;; 490352bf44eSmrg parisc) 491352bf44eSmrg basic_machine=hppa-unknown 492352bf44eSmrg basic_os=linux 493352bf44eSmrg ;; 494352bf44eSmrg psp) 495352bf44eSmrg basic_machine=mipsallegrexel-sony 496352bf44eSmrg basic_os=psp 497352bf44eSmrg ;; 498352bf44eSmrg pw32) 499352bf44eSmrg basic_machine=i586-unknown 500352bf44eSmrg basic_os=pw32 501352bf44eSmrg ;; 502352bf44eSmrg rdos | rdos64) 503352bf44eSmrg basic_machine=x86_64-pc 504352bf44eSmrg basic_os=rdos 505352bf44eSmrg ;; 506352bf44eSmrg rdos32) 507352bf44eSmrg basic_machine=i386-pc 508352bf44eSmrg basic_os=rdos 509352bf44eSmrg ;; 510352bf44eSmrg rom68k) 511352bf44eSmrg basic_machine=m68k-rom68k 512352bf44eSmrg basic_os=coff 513352bf44eSmrg ;; 514352bf44eSmrg sa29200) 515352bf44eSmrg basic_machine=a29k-amd 516352bf44eSmrg basic_os=udi 517352bf44eSmrg ;; 518352bf44eSmrg sei) 519352bf44eSmrg basic_machine=mips-sei 520352bf44eSmrg basic_os=seiux 521352bf44eSmrg ;; 522352bf44eSmrg sequent) 523352bf44eSmrg basic_machine=i386-sequent 524352bf44eSmrg basic_os= 525352bf44eSmrg ;; 526352bf44eSmrg sps7) 527352bf44eSmrg basic_machine=m68k-bull 528352bf44eSmrg basic_os=sysv2 529352bf44eSmrg ;; 530352bf44eSmrg st2000) 531352bf44eSmrg basic_machine=m68k-tandem 532352bf44eSmrg basic_os= 533352bf44eSmrg ;; 534352bf44eSmrg stratus) 535352bf44eSmrg basic_machine=i860-stratus 536352bf44eSmrg basic_os=sysv4 537352bf44eSmrg ;; 538352bf44eSmrg sun2) 539352bf44eSmrg basic_machine=m68000-sun 540352bf44eSmrg basic_os= 541352bf44eSmrg ;; 542352bf44eSmrg sun2os3) 543352bf44eSmrg basic_machine=m68000-sun 544352bf44eSmrg basic_os=sunos3 545352bf44eSmrg ;; 546352bf44eSmrg sun2os4) 547352bf44eSmrg basic_machine=m68000-sun 548352bf44eSmrg basic_os=sunos4 549352bf44eSmrg ;; 550352bf44eSmrg sun3) 551352bf44eSmrg basic_machine=m68k-sun 552352bf44eSmrg basic_os= 553352bf44eSmrg ;; 554352bf44eSmrg sun3os3) 555352bf44eSmrg basic_machine=m68k-sun 556352bf44eSmrg basic_os=sunos3 557352bf44eSmrg ;; 558352bf44eSmrg sun3os4) 559352bf44eSmrg basic_machine=m68k-sun 560352bf44eSmrg basic_os=sunos4 561352bf44eSmrg ;; 562352bf44eSmrg sun4) 563352bf44eSmrg basic_machine=sparc-sun 564352bf44eSmrg basic_os= 565352bf44eSmrg ;; 566352bf44eSmrg sun4os3) 567352bf44eSmrg basic_machine=sparc-sun 568352bf44eSmrg basic_os=sunos3 569352bf44eSmrg ;; 570352bf44eSmrg sun4os4) 571352bf44eSmrg basic_machine=sparc-sun 572352bf44eSmrg basic_os=sunos4 573352bf44eSmrg ;; 574352bf44eSmrg sun4sol2) 575352bf44eSmrg basic_machine=sparc-sun 576352bf44eSmrg basic_os=solaris2 577352bf44eSmrg ;; 578352bf44eSmrg sun386 | sun386i | roadrunner) 579352bf44eSmrg basic_machine=i386-sun 580352bf44eSmrg basic_os= 581352bf44eSmrg ;; 582352bf44eSmrg sv1) 583352bf44eSmrg basic_machine=sv1-cray 584352bf44eSmrg basic_os=unicos 585352bf44eSmrg ;; 586352bf44eSmrg symmetry) 587352bf44eSmrg basic_machine=i386-sequent 588352bf44eSmrg basic_os=dynix 589352bf44eSmrg ;; 590352bf44eSmrg t3e) 591352bf44eSmrg basic_machine=alphaev5-cray 592352bf44eSmrg basic_os=unicos 593352bf44eSmrg ;; 594352bf44eSmrg t90) 595352bf44eSmrg basic_machine=t90-cray 596352bf44eSmrg basic_os=unicos 597352bf44eSmrg ;; 598352bf44eSmrg toad1) 599352bf44eSmrg basic_machine=pdp10-xkl 600352bf44eSmrg basic_os=tops20 601352bf44eSmrg ;; 602352bf44eSmrg tpf) 603352bf44eSmrg basic_machine=s390x-ibm 604352bf44eSmrg basic_os=tpf 605352bf44eSmrg ;; 606352bf44eSmrg udi29k) 607352bf44eSmrg basic_machine=a29k-amd 608352bf44eSmrg basic_os=udi 609352bf44eSmrg ;; 610352bf44eSmrg ultra3) 611352bf44eSmrg basic_machine=a29k-nyu 612352bf44eSmrg basic_os=sym1 613352bf44eSmrg ;; 614352bf44eSmrg v810 | necv810) 615352bf44eSmrg basic_machine=v810-nec 616352bf44eSmrg basic_os=none 617352bf44eSmrg ;; 618352bf44eSmrg vaxv) 619352bf44eSmrg basic_machine=vax-dec 620352bf44eSmrg basic_os=sysv 621352bf44eSmrg ;; 622352bf44eSmrg vms) 623352bf44eSmrg basic_machine=vax-dec 624352bf44eSmrg basic_os=vms 625352bf44eSmrg ;; 626352bf44eSmrg vsta) 627352bf44eSmrg basic_machine=i386-pc 628352bf44eSmrg basic_os=vsta 629352bf44eSmrg ;; 630352bf44eSmrg vxworks960) 631352bf44eSmrg basic_machine=i960-wrs 632352bf44eSmrg basic_os=vxworks 633352bf44eSmrg ;; 634352bf44eSmrg vxworks68) 635352bf44eSmrg basic_machine=m68k-wrs 636352bf44eSmrg basic_os=vxworks 637352bf44eSmrg ;; 638352bf44eSmrg vxworks29k) 639352bf44eSmrg basic_machine=a29k-wrs 640352bf44eSmrg basic_os=vxworks 641352bf44eSmrg ;; 642352bf44eSmrg xbox) 643352bf44eSmrg basic_machine=i686-pc 644352bf44eSmrg basic_os=mingw32 645352bf44eSmrg ;; 646352bf44eSmrg ymp) 647352bf44eSmrg basic_machine=ymp-cray 648352bf44eSmrg basic_os=unicos 649352bf44eSmrg ;; 650352bf44eSmrg *) 651352bf44eSmrg basic_machine=$1 652352bf44eSmrg basic_os= 653352bf44eSmrg ;; 654352bf44eSmrg esac 65533c89af1Smrg ;; 65633c89af1Smrgesac 65733c89af1Smrg 658352bf44eSmrg# Decode 1-component or ad-hoc basic machines 65933c89af1Smrgcase $basic_machine in 660352bf44eSmrg # Here we handle the default manufacturer of certain CPU types. It is in 661352bf44eSmrg # some cases the only manufacturer, in others, it is the most popular. 662352bf44eSmrg w89k) 663352bf44eSmrg cpu=hppa1.1 664352bf44eSmrg vendor=winbond 665ad47b356Smrg ;; 666352bf44eSmrg op50n) 667352bf44eSmrg cpu=hppa1.1 668352bf44eSmrg vendor=oki 66933c89af1Smrg ;; 670352bf44eSmrg op60c) 671352bf44eSmrg cpu=hppa1.1 672352bf44eSmrg vendor=oki 67333c89af1Smrg ;; 674352bf44eSmrg ibm*) 675352bf44eSmrg cpu=i370 676352bf44eSmrg vendor=ibm 67733c89af1Smrg ;; 678352bf44eSmrg orion105) 679352bf44eSmrg cpu=clipper 680352bf44eSmrg vendor=highlevel 681ad47b356Smrg ;; 682352bf44eSmrg mac | mpw | mac-mpw) 683352bf44eSmrg cpu=m68k 684352bf44eSmrg vendor=apple 685988795beSmrg ;; 686352bf44eSmrg pmac | pmac-mpw) 687352bf44eSmrg cpu=powerpc 688352bf44eSmrg vendor=apple 689988795beSmrg ;; 690988795beSmrg 69133c89af1Smrg # Recognize the various machine names and aliases which stand 69233c89af1Smrg # for a CPU type and a company and sometimes even an OS. 69333c89af1Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694352bf44eSmrg cpu=m68000 695352bf44eSmrg vendor=att 69633c89af1Smrg ;; 69733c89af1Smrg 3b*) 698352bf44eSmrg cpu=we32k 699352bf44eSmrg vendor=att 700278eca22Smrg ;; 70116d8e44fSmrg bluegene*) 702352bf44eSmrg cpu=powerpc 703352bf44eSmrg vendor=ibm 704352bf44eSmrg basic_os=cnk 70533c89af1Smrg ;; 70633c89af1Smrg decsystem10* | dec10*) 707352bf44eSmrg cpu=pdp10 708352bf44eSmrg vendor=dec 709352bf44eSmrg basic_os=tops10 71033c89af1Smrg ;; 71133c89af1Smrg decsystem20* | dec20*) 712352bf44eSmrg cpu=pdp10 713352bf44eSmrg vendor=dec 714352bf44eSmrg basic_os=tops20 71533c89af1Smrg ;; 71633c89af1Smrg delta | 3300 | motorola-3300 | motorola-delta \ 71733c89af1Smrg | 3300-motorola | delta-motorola) 718352bf44eSmrg cpu=m68k 719352bf44eSmrg vendor=motorola 72033c89af1Smrg ;; 721352bf44eSmrg dpx2*) 722352bf44eSmrg cpu=m68k 723352bf44eSmrg vendor=bull 724352bf44eSmrg basic_os=sysv3 72533c89af1Smrg ;; 72633c89af1Smrg encore | umax | mmax) 727352bf44eSmrg cpu=ns32k 728352bf44eSmrg vendor=encore 72933c89af1Smrg ;; 730352bf44eSmrg elxsi) 731352bf44eSmrg cpu=elxsi 732352bf44eSmrg vendor=elxsi 733352bf44eSmrg basic_os=${basic_os:-bsd} 73433c89af1Smrg ;; 73533c89af1Smrg fx2800) 736352bf44eSmrg cpu=i860 737352bf44eSmrg vendor=alliant 73833c89af1Smrg ;; 73933c89af1Smrg genix) 740352bf44eSmrg cpu=ns32k 741352bf44eSmrg vendor=ns 74233c89af1Smrg ;; 74333c89af1Smrg h3050r* | hiux*) 744352bf44eSmrg cpu=hppa1.1 745352bf44eSmrg vendor=hitachi 746352bf44eSmrg basic_os=hiuxwe2 74733c89af1Smrg ;; 74833c89af1Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749352bf44eSmrg cpu=hppa1.0 750352bf44eSmrg vendor=hp 75133c89af1Smrg ;; 75233c89af1Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753352bf44eSmrg cpu=m68000 754352bf44eSmrg vendor=hp 75533c89af1Smrg ;; 75633c89af1Smrg hp9k3[2-9][0-9]) 757352bf44eSmrg cpu=m68k 758352bf44eSmrg vendor=hp 75933c89af1Smrg ;; 76033c89af1Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761352bf44eSmrg cpu=hppa1.0 762352bf44eSmrg vendor=hp 76333c89af1Smrg ;; 76433c89af1Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765352bf44eSmrg cpu=hppa1.1 766352bf44eSmrg vendor=hp 76733c89af1Smrg ;; 76833c89af1Smrg hp9k78[0-9] | hp78[0-9]) 76933c89af1Smrg # FIXME: really hppa2.0-hp 770352bf44eSmrg cpu=hppa1.1 771352bf44eSmrg vendor=hp 77233c89af1Smrg ;; 77333c89af1Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77433c89af1Smrg # FIXME: really hppa2.0-hp 775352bf44eSmrg cpu=hppa1.1 776352bf44eSmrg vendor=hp 77733c89af1Smrg ;; 77833c89af1Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779352bf44eSmrg cpu=hppa1.1 780352bf44eSmrg vendor=hp 78133c89af1Smrg ;; 78233c89af1Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783352bf44eSmrg cpu=hppa1.0 784352bf44eSmrg vendor=hp 78533c89af1Smrg ;; 78633c89af1Smrg i*86v32) 787352bf44eSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788352bf44eSmrg vendor=pc 789352bf44eSmrg basic_os=sysv32 79033c89af1Smrg ;; 79133c89af1Smrg i*86v4*) 792352bf44eSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793352bf44eSmrg vendor=pc 794352bf44eSmrg basic_os=sysv4 79533c89af1Smrg ;; 79633c89af1Smrg i*86v) 797352bf44eSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798352bf44eSmrg vendor=pc 799352bf44eSmrg basic_os=sysv 80033c89af1Smrg ;; 80133c89af1Smrg i*86sol2) 802352bf44eSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803352bf44eSmrg vendor=pc 804352bf44eSmrg basic_os=solaris2 80533c89af1Smrg ;; 806352bf44eSmrg j90 | j90-cray) 807352bf44eSmrg cpu=j90 808352bf44eSmrg vendor=cray 809352bf44eSmrg basic_os=${basic_os:-unicos} 81033c89af1Smrg ;; 81133c89af1Smrg iris | iris4d) 812352bf44eSmrg cpu=mips 813352bf44eSmrg vendor=sgi 814352bf44eSmrg case $basic_os in 815352bf44eSmrg irix*) 81633c89af1Smrg ;; 81733c89af1Smrg *) 818352bf44eSmrg basic_os=irix4 81933c89af1Smrg ;; 82033c89af1Smrg esac 82133c89af1Smrg ;; 82233c89af1Smrg miniframe) 823352bf44eSmrg cpu=m68000 824352bf44eSmrg vendor=convergent 825988795beSmrg ;; 826352bf44eSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827352bf44eSmrg cpu=m68k 828352bf44eSmrg vendor=atari 829352bf44eSmrg basic_os=mint 83033c89af1Smrg ;; 83133c89af1Smrg news-3600 | risc-news) 832352bf44eSmrg cpu=mips 833352bf44eSmrg vendor=sony 834352bf44eSmrg basic_os=newsos 835352bf44eSmrg ;; 836352bf44eSmrg next | m*-next) 837352bf44eSmrg cpu=m68k 838352bf44eSmrg vendor=next 839352bf44eSmrg case $basic_os in 840352bf44eSmrg openstep*) 841352bf44eSmrg ;; 842352bf44eSmrg nextstep*) 84333c89af1Smrg ;; 844352bf44eSmrg ns2*) 845352bf44eSmrg basic_os=nextstep2 84633c89af1Smrg ;; 84733c89af1Smrg *) 848352bf44eSmrg basic_os=nextstep3 84933c89af1Smrg ;; 85033c89af1Smrg esac 85133c89af1Smrg ;; 85233c89af1Smrg np1) 853352bf44eSmrg cpu=np1 854352bf44eSmrg vendor=gould 85533c89af1Smrg ;; 85633c89af1Smrg op50n-* | op60c-*) 857352bf44eSmrg cpu=hppa1.1 858352bf44eSmrg vendor=oki 859352bf44eSmrg basic_os=proelf 86033c89af1Smrg ;; 86133c89af1Smrg pa-hitachi) 862352bf44eSmrg cpu=hppa1.1 863352bf44eSmrg vendor=hitachi 864352bf44eSmrg basic_os=hiuxwe2 865278eca22Smrg ;; 86633c89af1Smrg pbd) 867352bf44eSmrg cpu=sparc 868352bf44eSmrg vendor=tti 86933c89af1Smrg ;; 87033c89af1Smrg pbb) 871352bf44eSmrg cpu=m68k 872352bf44eSmrg vendor=tti 87333c89af1Smrg ;; 874352bf44eSmrg pc532) 875352bf44eSmrg cpu=ns32k 876352bf44eSmrg vendor=pc532 87733c89af1Smrg ;; 87833c89af1Smrg pn) 879352bf44eSmrg cpu=pn 880352bf44eSmrg vendor=gould 88133c89af1Smrg ;; 882352bf44eSmrg power) 883352bf44eSmrg cpu=power 884352bf44eSmrg vendor=ibm 88533c89af1Smrg ;; 88633c89af1Smrg ps2) 887352bf44eSmrg cpu=i386 888352bf44eSmrg vendor=ibm 88933c89af1Smrg ;; 89033c89af1Smrg rm[46]00) 891352bf44eSmrg cpu=mips 892352bf44eSmrg vendor=siemens 89333c89af1Smrg ;; 89433c89af1Smrg rtpc | rtpc-*) 895352bf44eSmrg cpu=romp 896352bf44eSmrg vendor=ibm 89733c89af1Smrg ;; 898352bf44eSmrg sde) 899352bf44eSmrg cpu=mipsisa32 900352bf44eSmrg vendor=sde 901352bf44eSmrg basic_os=${basic_os:-elf} 90233c89af1Smrg ;; 903352bf44eSmrg simso-wrs) 904352bf44eSmrg cpu=sparclite 905352bf44eSmrg vendor=wrs 906352bf44eSmrg basic_os=vxworks 90733c89af1Smrg ;; 908352bf44eSmrg tower | tower-32) 909352bf44eSmrg cpu=m68k 910352bf44eSmrg vendor=ncr 91133c89af1Smrg ;; 912352bf44eSmrg vpp*|vx|vx-*) 913352bf44eSmrg cpu=f301 914352bf44eSmrg vendor=fujitsu 91533c89af1Smrg ;; 916352bf44eSmrg w65) 917352bf44eSmrg cpu=w65 918352bf44eSmrg vendor=wdc 91933c89af1Smrg ;; 920352bf44eSmrg w89k-*) 921352bf44eSmrg cpu=hppa1.1 922352bf44eSmrg vendor=winbond 923352bf44eSmrg basic_os=proelf 92433c89af1Smrg ;; 925352bf44eSmrg none) 926352bf44eSmrg cpu=none 927352bf44eSmrg vendor=none 92833c89af1Smrg ;; 929352bf44eSmrg leon|leon[3-9]) 930352bf44eSmrg cpu=sparc 931352bf44eSmrg vendor=$basic_machine 93233c89af1Smrg ;; 933352bf44eSmrg leon-*|leon[3-9]-*) 934352bf44eSmrg cpu=sparc 935352bf44eSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 93633c89af1Smrg ;; 937352bf44eSmrg 938352bf44eSmrg *-*) 939352bf44eSmrg # shellcheck disable=SC2162 940352bf44eSmrg saved_IFS=$IFS 941352bf44eSmrg IFS="-" read cpu vendor <<EOF 942352bf44eSmrg$basic_machine 943352bf44eSmrgEOF 944352bf44eSmrg IFS=$saved_IFS 94533c89af1Smrg ;; 946352bf44eSmrg # We use `pc' rather than `unknown' 947352bf44eSmrg # because (1) that's what they normally are, and 948352bf44eSmrg # (2) the word "unknown" tends to confuse beginning users. 949352bf44eSmrg i*86 | x86_64) 950352bf44eSmrg cpu=$basic_machine 951352bf44eSmrg vendor=pc 95233c89af1Smrg ;; 953352bf44eSmrg # These rules are duplicated from below for sake of the special case above; 954352bf44eSmrg # i.e. things that normalized to x86 arches should also default to "pc" 955352bf44eSmrg pc98) 956352bf44eSmrg cpu=i386 957352bf44eSmrg vendor=pc 95833c89af1Smrg ;; 959352bf44eSmrg x64 | amd64) 960352bf44eSmrg cpu=x86_64 961352bf44eSmrg vendor=pc 96233c89af1Smrg ;; 963352bf44eSmrg # Recognize the basic CPU types without company name. 964352bf44eSmrg *) 965352bf44eSmrg cpu=$basic_machine 966352bf44eSmrg vendor=unknown 967988795beSmrg ;; 968352bf44eSmrgesac 969352bf44eSmrg 970352bf44eSmrgunset -v basic_machine 971352bf44eSmrg 972352bf44eSmrg# Decode basic machines in the full and proper CPU-Company form. 973352bf44eSmrgcase $cpu-$vendor in 974352bf44eSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975352bf44eSmrg # some cases the only manufacturer, in others, it is the most popular. 976352bf44eSmrg craynv-unknown) 977352bf44eSmrg vendor=cray 978352bf44eSmrg basic_os=${basic_os:-unicosmp} 97933c89af1Smrg ;; 980352bf44eSmrg c90-unknown | c90-cray) 981352bf44eSmrg vendor=cray 982352bf44eSmrg basic_os=${Basic_os:-unicos} 98333c89af1Smrg ;; 984352bf44eSmrg fx80-unknown) 985352bf44eSmrg vendor=alliant 98633c89af1Smrg ;; 987352bf44eSmrg romp-unknown) 988352bf44eSmrg vendor=ibm 98933c89af1Smrg ;; 990352bf44eSmrg mmix-unknown) 991352bf44eSmrg vendor=knuth 99233c89af1Smrg ;; 993352bf44eSmrg microblaze-unknown | microblazeel-unknown) 994352bf44eSmrg vendor=xilinx 99533c89af1Smrg ;; 996352bf44eSmrg rs6000-unknown) 997352bf44eSmrg vendor=ibm 99833c89af1Smrg ;; 999352bf44eSmrg vax-unknown) 1000352bf44eSmrg vendor=dec 100133c89af1Smrg ;; 1002352bf44eSmrg pdp11-unknown) 1003352bf44eSmrg vendor=dec 100433c89af1Smrg ;; 1005352bf44eSmrg we32k-unknown) 1006352bf44eSmrg vendor=att 100733c89af1Smrg ;; 1008352bf44eSmrg cydra-unknown) 1009352bf44eSmrg vendor=cydrome 101033c89af1Smrg ;; 1011352bf44eSmrg i370-ibm*) 1012352bf44eSmrg vendor=ibm 101333c89af1Smrg ;; 1014352bf44eSmrg orion-unknown) 1015352bf44eSmrg vendor=highlevel 101633c89af1Smrg ;; 1017352bf44eSmrg xps-unknown | xps100-unknown) 1018352bf44eSmrg cpu=xps100 1019352bf44eSmrg vendor=honeywell 102033c89af1Smrg ;; 1021352bf44eSmrg 1022352bf44eSmrg # Here we normalize CPU types with a missing or matching vendor 102338d718bdSmrg armh-unknown | armh-alt) 102438d718bdSmrg cpu=armv7l 102538d718bdSmrg vendor=alt 102638d718bdSmrg basic_os=${basic_os:-linux-gnueabihf} 102738d718bdSmrg ;; 1028352bf44eSmrg dpx20-unknown | dpx20-bull) 1029352bf44eSmrg cpu=rs6000 1030352bf44eSmrg vendor=bull 1031352bf44eSmrg basic_os=${basic_os:-bosx} 103233c89af1Smrg ;; 1033352bf44eSmrg 1034352bf44eSmrg # Here we normalize CPU types irrespective of the vendor 1035352bf44eSmrg amd64-*) 1036352bf44eSmrg cpu=x86_64 1037278eca22Smrg ;; 1038352bf44eSmrg blackfin-*) 1039352bf44eSmrg cpu=bfin 1040352bf44eSmrg basic_os=linux 104133c89af1Smrg ;; 1042352bf44eSmrg c54x-*) 1043352bf44eSmrg cpu=tic54x 104433c89af1Smrg ;; 1045352bf44eSmrg c55x-*) 1046352bf44eSmrg cpu=tic55x 104733c89af1Smrg ;; 1048352bf44eSmrg c6x-*) 1049352bf44eSmrg cpu=tic6x 105033c89af1Smrg ;; 1051352bf44eSmrg e500v[12]-*) 1052352bf44eSmrg cpu=powerpc 1053352bf44eSmrg basic_os=${basic_os}"spe" 105433c89af1Smrg ;; 1055352bf44eSmrg mips3*-*) 1056352bf44eSmrg cpu=mips64 105733c89af1Smrg ;; 1058352bf44eSmrg ms1-*) 1059352bf44eSmrg cpu=mt 106033c89af1Smrg ;; 1061352bf44eSmrg m68knommu-*) 1062352bf44eSmrg cpu=m68k 1063352bf44eSmrg basic_os=linux 106433c89af1Smrg ;; 1065352bf44eSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1066352bf44eSmrg cpu=s12z 106733c89af1Smrg ;; 1068352bf44eSmrg openrisc-*) 1069352bf44eSmrg cpu=or32 107033c89af1Smrg ;; 1071352bf44eSmrg parisc-*) 1072352bf44eSmrg cpu=hppa 1073352bf44eSmrg basic_os=linux 107433c89af1Smrg ;; 1075352bf44eSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1076352bf44eSmrg cpu=i586 107733c89af1Smrg ;; 107838d718bdSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1079352bf44eSmrg cpu=i686 108033c89af1Smrg ;; 1081352bf44eSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1082352bf44eSmrg cpu=i686 108333c89af1Smrg ;; 1084352bf44eSmrg pentium4-*) 1085352bf44eSmrg cpu=i786 108633c89af1Smrg ;; 1087352bf44eSmrg pc98-*) 1088352bf44eSmrg cpu=i386 108933c89af1Smrg ;; 1090352bf44eSmrg ppc-* | ppcbe-*) 1091352bf44eSmrg cpu=powerpc 109233c89af1Smrg ;; 1093352bf44eSmrg ppcle-* | powerpclittle-*) 1094352bf44eSmrg cpu=powerpcle 109533c89af1Smrg ;; 1096352bf44eSmrg ppc64-*) 1097352bf44eSmrg cpu=powerpc64 1098988795beSmrg ;; 1099352bf44eSmrg ppc64le-* | powerpc64little-*) 1100352bf44eSmrg cpu=powerpc64le 110133c89af1Smrg ;; 1102352bf44eSmrg sb1-*) 1103352bf44eSmrg cpu=mipsisa64sb1 110433c89af1Smrg ;; 1105352bf44eSmrg sb1el-*) 1106352bf44eSmrg cpu=mipsisa64sb1el 1107278eca22Smrg ;; 1108352bf44eSmrg sh5e[lb]-*) 1109352bf44eSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 111033c89af1Smrg ;; 1111352bf44eSmrg spur-*) 1112352bf44eSmrg cpu=spur 111333c89af1Smrg ;; 1114352bf44eSmrg strongarm-* | thumb-*) 1115352bf44eSmrg cpu=arm 111633c89af1Smrg ;; 1117352bf44eSmrg tx39-*) 1118352bf44eSmrg cpu=mipstx39 111933c89af1Smrg ;; 1120352bf44eSmrg tx39el-*) 1121352bf44eSmrg cpu=mipstx39el 112233c89af1Smrg ;; 1123352bf44eSmrg x64-*) 1124352bf44eSmrg cpu=x86_64 112533c89af1Smrg ;; 1126352bf44eSmrg xscale-* | xscalee[bl]-*) 1127352bf44eSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112833c89af1Smrg ;; 112938d718bdSmrg arm64-* | aarch64le-*) 1130352bf44eSmrg cpu=aarch64 113133c89af1Smrg ;; 1132352bf44eSmrg 1133352bf44eSmrg # Recognize the canonical CPU Types that limit and/or modify the 1134352bf44eSmrg # company names they are paired with. 1135352bf44eSmrg cr16-*) 1136352bf44eSmrg basic_os=${basic_os:-elf} 113733c89af1Smrg ;; 1138352bf44eSmrg crisv32-* | etraxfs*-*) 1139352bf44eSmrg cpu=crisv32 1140352bf44eSmrg vendor=axis 114133c89af1Smrg ;; 1142352bf44eSmrg cris-* | etrax*-*) 1143352bf44eSmrg cpu=cris 1144352bf44eSmrg vendor=axis 114533c89af1Smrg ;; 1146352bf44eSmrg crx-*) 1147352bf44eSmrg basic_os=${basic_os:-elf} 114833c89af1Smrg ;; 1149352bf44eSmrg neo-tandem) 1150352bf44eSmrg cpu=neo 1151352bf44eSmrg vendor=tandem 115233c89af1Smrg ;; 1153352bf44eSmrg nse-tandem) 1154352bf44eSmrg cpu=nse 1155352bf44eSmrg vendor=tandem 115633c89af1Smrg ;; 1157352bf44eSmrg nsr-tandem) 1158352bf44eSmrg cpu=nsr 1159352bf44eSmrg vendor=tandem 116033c89af1Smrg ;; 1161352bf44eSmrg nsv-tandem) 1162352bf44eSmrg cpu=nsv 1163352bf44eSmrg vendor=tandem 116433c89af1Smrg ;; 1165352bf44eSmrg nsx-tandem) 1166352bf44eSmrg cpu=nsx 1167352bf44eSmrg vendor=tandem 116833c89af1Smrg ;; 1169352bf44eSmrg mipsallegrexel-sony) 1170352bf44eSmrg cpu=mipsallegrexel 1171352bf44eSmrg vendor=sony 117233c89af1Smrg ;; 1173352bf44eSmrg tile*-*) 1174352bf44eSmrg basic_os=${basic_os:-linux-gnu} 117533c89af1Smrg ;; 1176352bf44eSmrg 117733c89af1Smrg *) 1178352bf44eSmrg # Recognize the canonical CPU types that are allowed with any 1179352bf44eSmrg # company name. 1180352bf44eSmrg case $cpu in 1181352bf44eSmrg 1750a | 580 \ 1182352bf44eSmrg | a29k \ 1183352bf44eSmrg | aarch64 | aarch64_be \ 1184352bf44eSmrg | abacus \ 1185352bf44eSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1186352bf44eSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1187352bf44eSmrg | alphapca5[67] | alpha64pca5[67] \ 1188352bf44eSmrg | am33_2.0 \ 1189352bf44eSmrg | amdgcn \ 1190352bf44eSmrg | arc | arceb | arc32 | arc64 \ 1191352bf44eSmrg | arm | arm[lb]e | arme[lb] | armv* \ 1192352bf44eSmrg | avr | avr32 \ 1193352bf44eSmrg | asmjs \ 1194352bf44eSmrg | ba \ 1195352bf44eSmrg | be32 | be64 \ 1196352bf44eSmrg | bfin | bpf | bs2000 \ 1197352bf44eSmrg | c[123]* | c30 | [cjt]90 | c4x \ 1198352bf44eSmrg | c8051 | clipper | craynv | csky | cydra \ 1199352bf44eSmrg | d10v | d30v | dlx | dsp16xx \ 1200352bf44eSmrg | e2k | elxsi | epiphany \ 1201352bf44eSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1202352bf44eSmrg | h8300 | h8500 \ 1203352bf44eSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1204352bf44eSmrg | hexagon \ 1205352bf44eSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1206352bf44eSmrg | ip2k | iq2000 \ 1207352bf44eSmrg | k1om \ 1208352bf44eSmrg | le32 | le64 \ 1209352bf44eSmrg | lm32 \ 121038d718bdSmrg | loongarch32 | loongarch64 \ 1211352bf44eSmrg | m32c | m32r | m32rle \ 1212352bf44eSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1213352bf44eSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1214352bf44eSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1215352bf44eSmrg | microblaze | microblazeel \ 1216352bf44eSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1217352bf44eSmrg | mips16 \ 1218352bf44eSmrg | mips64 | mips64eb | mips64el \ 1219352bf44eSmrg | mips64octeon | mips64octeonel \ 1220352bf44eSmrg | mips64orion | mips64orionel \ 1221352bf44eSmrg | mips64r5900 | mips64r5900el \ 1222352bf44eSmrg | mips64vr | mips64vrel \ 1223352bf44eSmrg | mips64vr4100 | mips64vr4100el \ 1224352bf44eSmrg | mips64vr4300 | mips64vr4300el \ 1225352bf44eSmrg | mips64vr5000 | mips64vr5000el \ 1226352bf44eSmrg | mips64vr5900 | mips64vr5900el \ 1227352bf44eSmrg | mipsisa32 | mipsisa32el \ 1228352bf44eSmrg | mipsisa32r2 | mipsisa32r2el \ 1229352bf44eSmrg | mipsisa32r3 | mipsisa32r3el \ 1230352bf44eSmrg | mipsisa32r5 | mipsisa32r5el \ 1231352bf44eSmrg | mipsisa32r6 | mipsisa32r6el \ 1232352bf44eSmrg | mipsisa64 | mipsisa64el \ 1233352bf44eSmrg | mipsisa64r2 | mipsisa64r2el \ 1234352bf44eSmrg | mipsisa64r3 | mipsisa64r3el \ 1235352bf44eSmrg | mipsisa64r5 | mipsisa64r5el \ 1236352bf44eSmrg | mipsisa64r6 | mipsisa64r6el \ 1237352bf44eSmrg | mipsisa64sb1 | mipsisa64sb1el \ 1238352bf44eSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 1239352bf44eSmrg | mipsr5900 | mipsr5900el \ 1240352bf44eSmrg | mipstx39 | mipstx39el \ 1241352bf44eSmrg | mmix \ 1242352bf44eSmrg | mn10200 | mn10300 \ 1243352bf44eSmrg | moxie \ 1244352bf44eSmrg | mt \ 1245352bf44eSmrg | msp430 \ 1246352bf44eSmrg | nds32 | nds32le | nds32be \ 1247352bf44eSmrg | nfp \ 1248352bf44eSmrg | nios | nios2 | nios2eb | nios2el \ 1249352bf44eSmrg | none | np1 | ns16k | ns32k | nvptx \ 1250352bf44eSmrg | open8 \ 1251352bf44eSmrg | or1k* \ 1252352bf44eSmrg | or32 \ 1253352bf44eSmrg | orion \ 1254352bf44eSmrg | picochip \ 1255352bf44eSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1256352bf44eSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1257352bf44eSmrg | pru \ 1258352bf44eSmrg | pyramid \ 1259352bf44eSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1260352bf44eSmrg | rl78 | romp | rs6000 | rx \ 1261352bf44eSmrg | s390 | s390x \ 1262352bf44eSmrg | score \ 1263352bf44eSmrg | sh | shl \ 1264352bf44eSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1265352bf44eSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1266352bf44eSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1267352bf44eSmrg | sparclite \ 1268352bf44eSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1269352bf44eSmrg | spu \ 1270352bf44eSmrg | tahoe \ 1271352bf44eSmrg | thumbv7* \ 1272352bf44eSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1273352bf44eSmrg | tron \ 1274352bf44eSmrg | ubicom32 \ 1275352bf44eSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1276352bf44eSmrg | vax \ 1277352bf44eSmrg | visium \ 1278352bf44eSmrg | w65 \ 1279352bf44eSmrg | wasm32 | wasm64 \ 1280352bf44eSmrg | we32k \ 1281352bf44eSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1282352bf44eSmrg | xstormy16 | xtensa* \ 1283352bf44eSmrg | ymp \ 1284352bf44eSmrg | z8k | z80) 1285352bf44eSmrg ;; 1286352bf44eSmrg 1287352bf44eSmrg *) 1288352bf44eSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1289352bf44eSmrg exit 1 1290352bf44eSmrg ;; 1291352bf44eSmrg esac 129233c89af1Smrg ;; 129333c89af1Smrgesac 129433c89af1Smrg 129533c89af1Smrg# Here we canonicalize certain aliases for manufacturers. 1296352bf44eSmrgcase $vendor in 1297352bf44eSmrg digital*) 1298352bf44eSmrg vendor=dec 129933c89af1Smrg ;; 1300352bf44eSmrg commodore*) 1301352bf44eSmrg vendor=cbm 130233c89af1Smrg ;; 130333c89af1Smrg *) 130433c89af1Smrg ;; 130533c89af1Smrgesac 130633c89af1Smrg 130733c89af1Smrg# Decode manufacturer-specific aliases for certain operating systems. 130833c89af1Smrg 1309352bf44eSmrgif test x$basic_os != x 131033c89af1Smrgthen 1311352bf44eSmrg 131238d718bdSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1313352bf44eSmrg# set os. 1314352bf44eSmrgcase $basic_os in 1315352bf44eSmrg gnu/linux*) 1316352bf44eSmrg kernel=linux 1317352bf44eSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1318352bf44eSmrg ;; 1319352bf44eSmrg os2-emx) 1320352bf44eSmrg kernel=os2 1321352bf44eSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1322352bf44eSmrg ;; 1323352bf44eSmrg nto-qnx*) 1324352bf44eSmrg kernel=nto 1325352bf44eSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1326352bf44eSmrg ;; 1327352bf44eSmrg *-*) 1328352bf44eSmrg # shellcheck disable=SC2162 1329352bf44eSmrg saved_IFS=$IFS 1330352bf44eSmrg IFS="-" read kernel os <<EOF 1331352bf44eSmrg$basic_os 1332352bf44eSmrgEOF 1333352bf44eSmrg IFS=$saved_IFS 1334352bf44eSmrg ;; 1335352bf44eSmrg # Default OS when just kernel was specified 1336352bf44eSmrg nto*) 1337352bf44eSmrg kernel=nto 1338352bf44eSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1339352bf44eSmrg ;; 1340352bf44eSmrg linux*) 1341352bf44eSmrg kernel=linux 1342352bf44eSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1343352bf44eSmrg ;; 134438d718bdSmrg managarm*) 134538d718bdSmrg kernel=managarm 134638d718bdSmrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 134738d718bdSmrg ;; 1348352bf44eSmrg *) 1349352bf44eSmrg kernel= 1350352bf44eSmrg os=$basic_os 1351352bf44eSmrg ;; 1352352bf44eSmrgesac 1353352bf44eSmrg 1354352bf44eSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1355352bf44eSmrg# etc.) 135633c89af1Smrgcase $os in 1357352bf44eSmrg # First match some system type aliases that might get confused 1358352bf44eSmrg # with valid system types. 1359352bf44eSmrg # solaris* is a basic system type, with this one exception. 1360352bf44eSmrg auroraux) 1361352bf44eSmrg os=auroraux 136216d8e44fSmrg ;; 1363352bf44eSmrg bluegene*) 1364352bf44eSmrg os=cnk 136533c89af1Smrg ;; 1366352bf44eSmrg solaris1 | solaris1.*) 1367352bf44eSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 136833c89af1Smrg ;; 1369352bf44eSmrg solaris) 1370352bf44eSmrg os=solaris2 137133c89af1Smrg ;; 1372352bf44eSmrg unixware*) 1373352bf44eSmrg os=sysv4.2uw 137433c89af1Smrg ;; 1375352bf44eSmrg # es1800 is here to avoid being matched by es* (a different OS) 1376352bf44eSmrg es1800*) 1377352bf44eSmrg os=ose 137833c89af1Smrg ;; 1379352bf44eSmrg # Some version numbers need modification 1380352bf44eSmrg chorusos*) 1381352bf44eSmrg os=chorusos 138233c89af1Smrg ;; 1383352bf44eSmrg isc) 1384352bf44eSmrg os=isc2.2 138533c89af1Smrg ;; 1386352bf44eSmrg sco6) 1387352bf44eSmrg os=sco5v6 138833c89af1Smrg ;; 1389352bf44eSmrg sco5) 1390352bf44eSmrg os=sco3.2v5 139133c89af1Smrg ;; 1392352bf44eSmrg sco4) 1393352bf44eSmrg os=sco3.2v4 139433c89af1Smrg ;; 1395352bf44eSmrg sco3.2.[4-9]*) 1396352bf44eSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 139733c89af1Smrg ;; 1398352bf44eSmrg sco*v* | scout) 1399352bf44eSmrg # Don't match below 140033c89af1Smrg ;; 1401352bf44eSmrg sco*) 1402352bf44eSmrg os=sco3.2v2 140333c89af1Smrg ;; 1404352bf44eSmrg psos*) 1405352bf44eSmrg os=psos 140633c89af1Smrg ;; 1407352bf44eSmrg qnx*) 1408352bf44eSmrg os=qnx 140933c89af1Smrg ;; 1410352bf44eSmrg hiux*) 1411352bf44eSmrg os=hiuxwe2 141233c89af1Smrg ;; 1413352bf44eSmrg lynx*178) 1414352bf44eSmrg os=lynxos178 141533c89af1Smrg ;; 1416352bf44eSmrg lynx*5) 1417352bf44eSmrg os=lynxos5 141833c89af1Smrg ;; 1419352bf44eSmrg lynxos*) 1420352bf44eSmrg # don't get caught up in next wildcard 142133c89af1Smrg ;; 1422352bf44eSmrg lynx*) 1423352bf44eSmrg os=lynxos 142433c89af1Smrg ;; 1425352bf44eSmrg mac[0-9]*) 1426352bf44eSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 142733c89af1Smrg ;; 1428352bf44eSmrg opened*) 1429352bf44eSmrg os=openedition 143033c89af1Smrg ;; 1431352bf44eSmrg os400*) 1432352bf44eSmrg os=os400 143333c89af1Smrg ;; 1434352bf44eSmrg sunos5*) 1435352bf44eSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 143633c89af1Smrg ;; 1437352bf44eSmrg sunos6*) 1438352bf44eSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 143933c89af1Smrg ;; 1440352bf44eSmrg wince*) 1441352bf44eSmrg os=wince 144233c89af1Smrg ;; 1443352bf44eSmrg utek*) 1444352bf44eSmrg os=bsd 144533c89af1Smrg ;; 1446352bf44eSmrg dynix*) 1447352bf44eSmrg os=bsd 144833c89af1Smrg ;; 1449352bf44eSmrg acis*) 1450352bf44eSmrg os=aos 145133c89af1Smrg ;; 1452352bf44eSmrg atheos*) 1453352bf44eSmrg os=atheos 145433c89af1Smrg ;; 1455352bf44eSmrg syllable*) 1456352bf44eSmrg os=syllable 145733c89af1Smrg ;; 1458352bf44eSmrg 386bsd) 1459352bf44eSmrg os=bsd 146033c89af1Smrg ;; 1461352bf44eSmrg ctix* | uts*) 1462352bf44eSmrg os=sysv 146333c89af1Smrg ;; 1464352bf44eSmrg nova*) 1465352bf44eSmrg os=rtmk-nova 146633c89af1Smrg ;; 1467352bf44eSmrg ns2) 1468352bf44eSmrg os=nextstep2 146933c89af1Smrg ;; 1470352bf44eSmrg # Preserve the version number of sinix5. 1471352bf44eSmrg sinix5.*) 1472352bf44eSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 147333c89af1Smrg ;; 1474352bf44eSmrg sinix*) 1475352bf44eSmrg os=sysv4 147633c89af1Smrg ;; 1477352bf44eSmrg tpf*) 1478352bf44eSmrg os=tpf 147933c89af1Smrg ;; 1480352bf44eSmrg triton*) 1481352bf44eSmrg os=sysv3 148233c89af1Smrg ;; 1483352bf44eSmrg oss*) 1484352bf44eSmrg os=sysv3 148533c89af1Smrg ;; 1486352bf44eSmrg svr4*) 1487352bf44eSmrg os=sysv4 148833c89af1Smrg ;; 1489352bf44eSmrg svr3) 1490352bf44eSmrg os=sysv3 149133c89af1Smrg ;; 1492352bf44eSmrg sysvr4) 1493352bf44eSmrg os=sysv4 149433c89af1Smrg ;; 1495352bf44eSmrg ose*) 1496352bf44eSmrg os=ose 149733c89af1Smrg ;; 1498352bf44eSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1499352bf44eSmrg os=mint 1500278eca22Smrg ;; 1501352bf44eSmrg dicos*) 1502352bf44eSmrg os=dicos 1503988795beSmrg ;; 1504352bf44eSmrg pikeos*) 1505352bf44eSmrg # Until real need of OS specific support for 1506352bf44eSmrg # particular features comes up, bare metal 1507352bf44eSmrg # configurations are quite functional. 1508352bf44eSmrg case $cpu in 1509352bf44eSmrg arm*) 1510352bf44eSmrg os=eabi 1511352bf44eSmrg ;; 1512352bf44eSmrg *) 1513352bf44eSmrg os=elf 1514352bf44eSmrg ;; 1515352bf44eSmrg esac 151633c89af1Smrg ;; 151733c89af1Smrg *) 1518352bf44eSmrg # No normalization, but not necessarily accepted, that comes below. 151933c89af1Smrg ;; 152033c89af1Smrgesac 1521352bf44eSmrg 152233c89af1Smrgelse 152333c89af1Smrg 152433c89af1Smrg# Here we handle the default operating systems that come with various machines. 152533c89af1Smrg# The value should be what the vendor currently ships out the door with their 152633c89af1Smrg# machine or put another way, the most popular os provided with the machine. 152733c89af1Smrg 152833c89af1Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 152933c89af1Smrg# "-sun"), then you have to tell the case statement up towards the top 153033c89af1Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 153133c89af1Smrg# will signal an error saying that MANUFACTURER isn't an operating 153233c89af1Smrg# system, and we'll never get to this point. 153333c89af1Smrg 1534352bf44eSmrgkernel= 1535352bf44eSmrgcase $cpu-$vendor in 1536988795beSmrg score-*) 1537352bf44eSmrg os=elf 153833c89af1Smrg ;; 1539988795beSmrg spu-*) 1540352bf44eSmrg os=elf 154133c89af1Smrg ;; 154233c89af1Smrg *-acorn) 1543352bf44eSmrg os=riscix1.2 154433c89af1Smrg ;; 154533c89af1Smrg arm*-rebel) 1546352bf44eSmrg kernel=linux 1547352bf44eSmrg os=gnu 154833c89af1Smrg ;; 154933c89af1Smrg arm*-semi) 1550352bf44eSmrg os=aout 155133c89af1Smrg ;; 1552988795beSmrg c4x-* | tic4x-*) 1553352bf44eSmrg os=coff 155433c89af1Smrg ;; 1555ad47b356Smrg c8051-*) 1556352bf44eSmrg os=elf 1557352bf44eSmrg ;; 1558352bf44eSmrg clipper-intergraph) 1559352bf44eSmrg os=clix 1560ad47b356Smrg ;; 1561ad47b356Smrg hexagon-*) 1562352bf44eSmrg os=elf 1563ad47b356Smrg ;; 156416d8e44fSmrg tic54x-*) 1565352bf44eSmrg os=coff 156616d8e44fSmrg ;; 156716d8e44fSmrg tic55x-*) 1568352bf44eSmrg os=coff 156916d8e44fSmrg ;; 157016d8e44fSmrg tic6x-*) 1571352bf44eSmrg os=coff 157216d8e44fSmrg ;; 157333c89af1Smrg # This must come before the *-dec entry. 157433c89af1Smrg pdp10-*) 1575352bf44eSmrg os=tops20 157633c89af1Smrg ;; 157733c89af1Smrg pdp11-*) 1578352bf44eSmrg os=none 157933c89af1Smrg ;; 158033c89af1Smrg *-dec | vax-*) 1581352bf44eSmrg os=ultrix4.2 158233c89af1Smrg ;; 158333c89af1Smrg m68*-apollo) 1584352bf44eSmrg os=domain 158533c89af1Smrg ;; 158633c89af1Smrg i386-sun) 1587352bf44eSmrg os=sunos4.0.2 158833c89af1Smrg ;; 158933c89af1Smrg m68000-sun) 1590352bf44eSmrg os=sunos3 159133c89af1Smrg ;; 159233c89af1Smrg m68*-cisco) 1593352bf44eSmrg os=aout 159433c89af1Smrg ;; 1595988795beSmrg mep-*) 1596352bf44eSmrg os=elf 1597278eca22Smrg ;; 159833c89af1Smrg mips*-cisco) 1599352bf44eSmrg os=elf 160033c89af1Smrg ;; 160133c89af1Smrg mips*-*) 1602352bf44eSmrg os=elf 160333c89af1Smrg ;; 160433c89af1Smrg or32-*) 1605352bf44eSmrg os=coff 160633c89af1Smrg ;; 160733c89af1Smrg *-tti) # must be before sparc entry or we get the wrong os. 1608352bf44eSmrg os=sysv3 160933c89af1Smrg ;; 161033c89af1Smrg sparc-* | *-sun) 1611352bf44eSmrg os=sunos4.1.1 161233c89af1Smrg ;; 1613352bf44eSmrg pru-*) 1614352bf44eSmrg os=elf 161533c89af1Smrg ;; 1616352bf44eSmrg *-be) 1617352bf44eSmrg os=beos 161833c89af1Smrg ;; 161933c89af1Smrg *-ibm) 1620352bf44eSmrg os=aix 162133c89af1Smrg ;; 1622988795beSmrg *-knuth) 1623352bf44eSmrg os=mmixware 162433c89af1Smrg ;; 162533c89af1Smrg *-wec) 1626352bf44eSmrg os=proelf 162733c89af1Smrg ;; 162833c89af1Smrg *-winbond) 1629352bf44eSmrg os=proelf 163033c89af1Smrg ;; 163133c89af1Smrg *-oki) 1632352bf44eSmrg os=proelf 163333c89af1Smrg ;; 163433c89af1Smrg *-hp) 1635352bf44eSmrg os=hpux 163633c89af1Smrg ;; 163733c89af1Smrg *-hitachi) 1638352bf44eSmrg os=hiux 163933c89af1Smrg ;; 164033c89af1Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1641352bf44eSmrg os=sysv 164233c89af1Smrg ;; 164333c89af1Smrg *-cbm) 1644352bf44eSmrg os=amigaos 164533c89af1Smrg ;; 164633c89af1Smrg *-dg) 1647352bf44eSmrg os=dgux 164833c89af1Smrg ;; 164933c89af1Smrg *-dolphin) 1650352bf44eSmrg os=sysv3 165133c89af1Smrg ;; 165233c89af1Smrg m68k-ccur) 1653352bf44eSmrg os=rtu 165433c89af1Smrg ;; 165533c89af1Smrg m88k-omron*) 1656352bf44eSmrg os=luna 165733c89af1Smrg ;; 1658352bf44eSmrg *-next) 1659352bf44eSmrg os=nextstep 166033c89af1Smrg ;; 166133c89af1Smrg *-sequent) 1662352bf44eSmrg os=ptx 166333c89af1Smrg ;; 166433c89af1Smrg *-crds) 1665352bf44eSmrg os=unos 166633c89af1Smrg ;; 166733c89af1Smrg *-ns) 1668352bf44eSmrg os=genix 166933c89af1Smrg ;; 167033c89af1Smrg i370-*) 1671352bf44eSmrg os=mvs 167233c89af1Smrg ;; 167333c89af1Smrg *-gould) 1674352bf44eSmrg os=sysv 167533c89af1Smrg ;; 167633c89af1Smrg *-highlevel) 1677352bf44eSmrg os=bsd 167833c89af1Smrg ;; 167933c89af1Smrg *-encore) 1680352bf44eSmrg os=bsd 168133c89af1Smrg ;; 168233c89af1Smrg *-sgi) 1683352bf44eSmrg os=irix 168433c89af1Smrg ;; 168533c89af1Smrg *-siemens) 1686352bf44eSmrg os=sysv4 168733c89af1Smrg ;; 168833c89af1Smrg *-masscomp) 1689352bf44eSmrg os=rtu 169033c89af1Smrg ;; 169133c89af1Smrg f30[01]-fujitsu | f700-fujitsu) 1692352bf44eSmrg os=uxpv 169333c89af1Smrg ;; 169433c89af1Smrg *-rom68k) 1695352bf44eSmrg os=coff 169633c89af1Smrg ;; 169733c89af1Smrg *-*bug) 1698352bf44eSmrg os=coff 169933c89af1Smrg ;; 170033c89af1Smrg *-apple) 1701352bf44eSmrg os=macos 170233c89af1Smrg ;; 170333c89af1Smrg *-atari*) 1704352bf44eSmrg os=mint 1705352bf44eSmrg ;; 1706352bf44eSmrg *-wrs) 1707352bf44eSmrg os=vxworks 170833c89af1Smrg ;; 170933c89af1Smrg *) 1710352bf44eSmrg os=none 171133c89af1Smrg ;; 171233c89af1Smrgesac 1713352bf44eSmrg 171433c89af1Smrgfi 171533c89af1Smrg 1716352bf44eSmrg# Now, validate our (potentially fixed-up) OS. 1717352bf44eSmrgcase $os in 1718352bf44eSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1719352bf44eSmrg musl* | newlib* | relibc* | uclibc*) 1720352bf44eSmrg ;; 1721352bf44eSmrg # Likewise for "kernel-abi" 1722352bf44eSmrg eabi* | gnueabi*) 1723352bf44eSmrg ;; 1724352bf44eSmrg # VxWorks passes extra cpu info in the 4th filed. 1725352bf44eSmrg simlinux | simwindows | spe) 1726352bf44eSmrg ;; 1727352bf44eSmrg # Now accept the basic system types. 1728352bf44eSmrg # The portable systems comes first. 1729352bf44eSmrg # Each alternative MUST end in a * to match a version number. 1730352bf44eSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1731352bf44eSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1732352bf44eSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1733352bf44eSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1734352bf44eSmrg | hiux* | abug | nacl* | netware* | windows* \ 1735352bf44eSmrg | os9* | macos* | osx* | ios* \ 1736352bf44eSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1737352bf44eSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1738352bf44eSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1739352bf44eSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1740352bf44eSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1741352bf44eSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1742352bf44eSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1743352bf44eSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1744352bf44eSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1745352bf44eSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1746352bf44eSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1747352bf44eSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1748352bf44eSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1749352bf44eSmrg | midipix* | mingw32* | mingw64* | mint* \ 1750352bf44eSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1751352bf44eSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1752352bf44eSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1753352bf44eSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1754352bf44eSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1755352bf44eSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1756352bf44eSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1757352bf44eSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1758352bf44eSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1759352bf44eSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 176038d718bdSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 176138d718bdSmrg | fiwix* | mlibc* ) 1762352bf44eSmrg ;; 1763352bf44eSmrg # This one is extra strict with allowed versions 1764352bf44eSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1765352bf44eSmrg # Don't forget version if it is 3.2v4 or newer. 1766352bf44eSmrg ;; 1767352bf44eSmrg none) 1768352bf44eSmrg ;; 176938d718bdSmrg kernel* ) 177038d718bdSmrg # Restricted further below 177138d718bdSmrg ;; 1772352bf44eSmrg *) 1773352bf44eSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1774352bf44eSmrg exit 1 1775352bf44eSmrg ;; 1776352bf44eSmrgesac 1777352bf44eSmrg 1778352bf44eSmrg# As a final step for OS-related things, validate the OS-kernel combination 1779352bf44eSmrg# (given a valid OS), if there is a kernel. 1780352bf44eSmrgcase $kernel-$os in 1781352bf44eSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 178238d718bdSmrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 1783352bf44eSmrg ;; 1784352bf44eSmrg uclinux-uclibc* ) 1785352bf44eSmrg ;; 178638d718bdSmrg managarm-mlibc* | managarm-kernel* ) 178738d718bdSmrg ;; 178838d718bdSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 1789352bf44eSmrg # These are just libc implementations, not actual OSes, and thus 1790352bf44eSmrg # require a kernel. 1791352bf44eSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1792352bf44eSmrg exit 1 1793352bf44eSmrg ;; 179438d718bdSmrg -kernel* ) 179538d718bdSmrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 179638d718bdSmrg exit 1 179738d718bdSmrg ;; 179838d718bdSmrg *-kernel* ) 179938d718bdSmrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 180038d718bdSmrg exit 1 180138d718bdSmrg ;; 1802352bf44eSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1803352bf44eSmrg ;; 1804352bf44eSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1805352bf44eSmrg ;; 1806352bf44eSmrg nto-qnx*) 1807352bf44eSmrg ;; 1808352bf44eSmrg os2-emx) 1809352bf44eSmrg ;; 1810352bf44eSmrg *-eabi* | *-gnueabi*) 1811352bf44eSmrg ;; 1812352bf44eSmrg -*) 1813352bf44eSmrg # Blank kernel with real OS is always fine. 1814352bf44eSmrg ;; 1815352bf44eSmrg *-*) 1816352bf44eSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1817352bf44eSmrg exit 1 1818352bf44eSmrg ;; 1819352bf44eSmrgesac 1820352bf44eSmrg 182133c89af1Smrg# Here we handle the case where we know the os, and the CPU type, but not the 182233c89af1Smrg# manufacturer. We pick the logical manufacturer. 1823352bf44eSmrgcase $vendor in 1824352bf44eSmrg unknown) 1825352bf44eSmrg case $cpu-$os in 1826352bf44eSmrg *-riscix*) 182733c89af1Smrg vendor=acorn 182833c89af1Smrg ;; 1829352bf44eSmrg *-sunos*) 183033c89af1Smrg vendor=sun 183133c89af1Smrg ;; 1832352bf44eSmrg *-cnk* | *-aix*) 183333c89af1Smrg vendor=ibm 183433c89af1Smrg ;; 1835352bf44eSmrg *-beos*) 183633c89af1Smrg vendor=be 183733c89af1Smrg ;; 1838352bf44eSmrg *-hpux*) 183933c89af1Smrg vendor=hp 184033c89af1Smrg ;; 1841352bf44eSmrg *-mpeix*) 184233c89af1Smrg vendor=hp 184333c89af1Smrg ;; 1844352bf44eSmrg *-hiux*) 184533c89af1Smrg vendor=hitachi 184633c89af1Smrg ;; 1847352bf44eSmrg *-unos*) 184833c89af1Smrg vendor=crds 184933c89af1Smrg ;; 1850352bf44eSmrg *-dgux*) 185133c89af1Smrg vendor=dg 185233c89af1Smrg ;; 1853352bf44eSmrg *-luna*) 185433c89af1Smrg vendor=omron 185533c89af1Smrg ;; 1856352bf44eSmrg *-genix*) 185733c89af1Smrg vendor=ns 185833c89af1Smrg ;; 1859352bf44eSmrg *-clix*) 1860352bf44eSmrg vendor=intergraph 1861352bf44eSmrg ;; 1862352bf44eSmrg *-mvs* | *-opened*) 1863352bf44eSmrg vendor=ibm 1864352bf44eSmrg ;; 1865352bf44eSmrg *-os400*) 186633c89af1Smrg vendor=ibm 186733c89af1Smrg ;; 1868352bf44eSmrg s390-* | s390x-*) 186933c89af1Smrg vendor=ibm 187033c89af1Smrg ;; 1871352bf44eSmrg *-ptx*) 187233c89af1Smrg vendor=sequent 187333c89af1Smrg ;; 1874352bf44eSmrg *-tpf*) 187533c89af1Smrg vendor=ibm 187633c89af1Smrg ;; 1877352bf44eSmrg *-vxsim* | *-vxworks* | *-windiss*) 187833c89af1Smrg vendor=wrs 187933c89af1Smrg ;; 1880352bf44eSmrg *-aux*) 188133c89af1Smrg vendor=apple 188233c89af1Smrg ;; 1883352bf44eSmrg *-hms*) 188433c89af1Smrg vendor=hitachi 188533c89af1Smrg ;; 1886352bf44eSmrg *-mpw* | *-macos*) 188733c89af1Smrg vendor=apple 188833c89af1Smrg ;; 1889352bf44eSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 189033c89af1Smrg vendor=atari 189133c89af1Smrg ;; 1892352bf44eSmrg *-vos*) 189333c89af1Smrg vendor=stratus 189433c89af1Smrg ;; 189533c89af1Smrg esac 189633c89af1Smrg ;; 189733c89af1Smrgesac 189833c89af1Smrg 1899352bf44eSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 190033c89af1Smrgexit 190133c89af1Smrg 190233c89af1Smrg# Local variables: 1903352bf44eSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 190433c89af1Smrg# time-stamp-start: "timestamp='" 190533c89af1Smrg# time-stamp-format: "%:y-%02m-%02d" 190633c89af1Smrg# time-stamp-end: "'" 190733c89af1Smrg# End: 1908