1023b3b36Smrg#! /bin/sh 2023b3b36Smrg# Configuration validation subroutine script. 3023b3b36Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 4023b3b36Smrg 5023b3b36Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6023b3b36Smrg 7023b3b36Smrgtimestamp='2023-01-21' 8023b3b36Smrg 9023b3b36Smrg# This file is free software; you can redistribute it and/or modify it 10023b3b36Smrg# under the terms of the GNU General Public License as published by 11023b3b36Smrg# the Free Software Foundation, either version 3 of the License, or 12023b3b36Smrg# (at your option) any later version. 13023b3b36Smrg# 14023b3b36Smrg# This program is distributed in the hope that it will be useful, but 15023b3b36Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16023b3b36Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17023b3b36Smrg# General Public License for more details. 18023b3b36Smrg# 19023b3b36Smrg# You should have received a copy of the GNU General Public License 20023b3b36Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21023b3b36Smrg# 22023b3b36Smrg# As a special exception to the GNU General Public License, if you 23023b3b36Smrg# distribute this file as part of a program that contains a 24023b3b36Smrg# configuration script generated by Autoconf, you may include it under 25023b3b36Smrg# the same distribution terms that you use for the rest of that 26023b3b36Smrg# program. This Exception is an additional permission under section 7 27023b3b36Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28023b3b36Smrg 29023b3b36Smrg 30023b3b36Smrg# Please send patches to <config-patches@gnu.org>. 31023b3b36Smrg# 32023b3b36Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33023b3b36Smrg# Supply the specified configuration type as an argument. 34023b3b36Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35023b3b36Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36023b3b36Smrg 37023b3b36Smrg# You can get the latest version of this script from: 38023b3b36Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39023b3b36Smrg 40023b3b36Smrg# This file is supposed to be the same for all GNU packages 41023b3b36Smrg# and recognize all the CPU types, system types and aliases 42023b3b36Smrg# that are meaningful with *any* GNU software. 43023b3b36Smrg# Each package is responsible for reporting which valid configurations 44023b3b36Smrg# it does not support. The user should be able to distinguish 45023b3b36Smrg# a failure to support a valid configuration from a meaningless 46023b3b36Smrg# configuration. 47023b3b36Smrg 48023b3b36Smrg# The goal of this file is to map all the various variations of a given 49023b3b36Smrg# machine specification into a single specification in the form: 50023b3b36Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51023b3b36Smrg# or in some cases, the newer four-part form: 52023b3b36Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53023b3b36Smrg# It is wrong to echo any other type of specification. 54023b3b36Smrg 55023b3b36Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 56023b3b36Smrg# about features and limitations of the classic Bourne shell that were 57023b3b36Smrg# superseded or lifted in POSIX. However, this script identifies a wide 58023b3b36Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59023b3b36Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60023b3b36Smrg# have a pre-POSIX /bin/sh. 61023b3b36Smrg 62023b3b36Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63023b3b36Smrg 64023b3b36Smrgusage="\ 65023b3b36SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66023b3b36Smrg 67023b3b36SmrgCanonicalize a configuration name. 68023b3b36Smrg 69023b3b36SmrgOptions: 70023b3b36Smrg -h, --help print this help, then exit 71023b3b36Smrg -t, --time-stamp print date of last modification, then exit 72023b3b36Smrg -v, --version print version number, then exit 73023b3b36Smrg 74023b3b36SmrgReport bugs and patches to <config-patches@gnu.org>." 75023b3b36Smrg 76023b3b36Smrgversion="\ 77023b3b36SmrgGNU config.sub ($timestamp) 78023b3b36Smrg 79023b3b36SmrgCopyright 1992-2023 Free Software Foundation, Inc. 80023b3b36Smrg 81023b3b36SmrgThis is free software; see the source for copying conditions. There is NO 82023b3b36Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83023b3b36Smrg 84023b3b36Smrghelp=" 85023b3b36SmrgTry \`$me --help' for more information." 86023b3b36Smrg 87023b3b36Smrg# Parse command line 88023b3b36Smrgwhile test $# -gt 0 ; do 89023b3b36Smrg case $1 in 90023b3b36Smrg --time-stamp | --time* | -t ) 91023b3b36Smrg echo "$timestamp" ; exit ;; 92023b3b36Smrg --version | -v ) 93023b3b36Smrg echo "$version" ; exit ;; 94023b3b36Smrg --help | --h* | -h ) 95023b3b36Smrg echo "$usage"; exit ;; 96023b3b36Smrg -- ) # Stop option processing 97023b3b36Smrg shift; break ;; 98023b3b36Smrg - ) # Use stdin as input. 99023b3b36Smrg break ;; 100023b3b36Smrg -* ) 101023b3b36Smrg echo "$me: invalid option $1$help" >&2 102023b3b36Smrg exit 1 ;; 103023b3b36Smrg 104023b3b36Smrg *local*) 105023b3b36Smrg # First pass through any local machine types. 106023b3b36Smrg echo "$1" 107023b3b36Smrg exit ;; 108023b3b36Smrg 109023b3b36Smrg * ) 110023b3b36Smrg break ;; 111023b3b36Smrg esac 112023b3b36Smrgdone 113023b3b36Smrg 114023b3b36Smrgcase $# in 115023b3b36Smrg 0) echo "$me: missing argument$help" >&2 116023b3b36Smrg exit 1;; 117023b3b36Smrg 1) ;; 118023b3b36Smrg *) echo "$me: too many arguments$help" >&2 119023b3b36Smrg exit 1;; 120023b3b36Smrgesac 121023b3b36Smrg 122023b3b36Smrg# Split fields of configuration type 123023b3b36Smrg# shellcheck disable=SC2162 124023b3b36Smrgsaved_IFS=$IFS 125023b3b36SmrgIFS="-" read field1 field2 field3 field4 <<EOF 126023b3b36Smrg$1 127023b3b36SmrgEOF 128023b3b36SmrgIFS=$saved_IFS 129023b3b36Smrg 130023b3b36Smrg# Separate into logical components for further validation 131023b3b36Smrgcase $1 in 132023b3b36Smrg *-*-*-*-*) 133023b3b36Smrg echo Invalid configuration \`"$1"\': more than four components >&2 134023b3b36Smrg exit 1 135023b3b36Smrg ;; 136023b3b36Smrg *-*-*-*) 137023b3b36Smrg basic_machine=$field1-$field2 138023b3b36Smrg basic_os=$field3-$field4 139023b3b36Smrg ;; 140023b3b36Smrg *-*-*) 141023b3b36Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142023b3b36Smrg # parts 143023b3b36Smrg maybe_os=$field2-$field3 144023b3b36Smrg case $maybe_os in 145023b3b36Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 146023b3b36Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147023b3b36Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148023b3b36Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 149023b3b36Smrg basic_machine=$field1 150023b3b36Smrg basic_os=$maybe_os 151023b3b36Smrg ;; 152023b3b36Smrg android-linux) 153023b3b36Smrg basic_machine=$field1-unknown 154023b3b36Smrg basic_os=linux-android 155023b3b36Smrg ;; 156023b3b36Smrg *) 157023b3b36Smrg basic_machine=$field1-$field2 158023b3b36Smrg basic_os=$field3 159023b3b36Smrg ;; 160023b3b36Smrg esac 161023b3b36Smrg ;; 162023b3b36Smrg *-*) 163023b3b36Smrg # A lone config we happen to match not fitting any pattern 164023b3b36Smrg case $field1-$field2 in 165023b3b36Smrg decstation-3100) 166023b3b36Smrg basic_machine=mips-dec 167023b3b36Smrg basic_os= 168023b3b36Smrg ;; 169023b3b36Smrg *-*) 170023b3b36Smrg # Second component is usually, but not always the OS 171023b3b36Smrg case $field2 in 172023b3b36Smrg # Prevent following clause from handling this valid os 173023b3b36Smrg sun*os*) 174023b3b36Smrg basic_machine=$field1 175023b3b36Smrg basic_os=$field2 176023b3b36Smrg ;; 177023b3b36Smrg zephyr*) 178023b3b36Smrg basic_machine=$field1-unknown 179023b3b36Smrg basic_os=$field2 180023b3b36Smrg ;; 181023b3b36Smrg # Manufacturers 182023b3b36Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183023b3b36Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184023b3b36Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185023b3b36Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186023b3b36Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187023b3b36Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188023b3b36Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189023b3b36Smrg | microblaze* | sim | cisco \ 190023b3b36Smrg | oki | wec | wrs | winbond) 191023b3b36Smrg basic_machine=$field1-$field2 192023b3b36Smrg basic_os= 193023b3b36Smrg ;; 194023b3b36Smrg *) 195023b3b36Smrg basic_machine=$field1 196023b3b36Smrg basic_os=$field2 197023b3b36Smrg ;; 198023b3b36Smrg esac 199023b3b36Smrg ;; 200023b3b36Smrg esac 201023b3b36Smrg ;; 202023b3b36Smrg *) 203023b3b36Smrg # Convert single-component short-hands not valid as part of 204023b3b36Smrg # multi-component configurations. 205023b3b36Smrg case $field1 in 206023b3b36Smrg 386bsd) 207023b3b36Smrg basic_machine=i386-pc 208023b3b36Smrg basic_os=bsd 209023b3b36Smrg ;; 210023b3b36Smrg a29khif) 211023b3b36Smrg basic_machine=a29k-amd 212023b3b36Smrg basic_os=udi 213023b3b36Smrg ;; 214023b3b36Smrg adobe68k) 215023b3b36Smrg basic_machine=m68010-adobe 216023b3b36Smrg basic_os=scout 217023b3b36Smrg ;; 218023b3b36Smrg alliant) 219023b3b36Smrg basic_machine=fx80-alliant 220023b3b36Smrg basic_os= 221023b3b36Smrg ;; 222023b3b36Smrg altos | altos3068) 223023b3b36Smrg basic_machine=m68k-altos 224023b3b36Smrg basic_os= 225023b3b36Smrg ;; 226023b3b36Smrg am29k) 227023b3b36Smrg basic_machine=a29k-none 228023b3b36Smrg basic_os=bsd 229023b3b36Smrg ;; 230023b3b36Smrg amdahl) 231023b3b36Smrg basic_machine=580-amdahl 232023b3b36Smrg basic_os=sysv 233023b3b36Smrg ;; 234023b3b36Smrg amiga) 235023b3b36Smrg basic_machine=m68k-unknown 236023b3b36Smrg basic_os= 237023b3b36Smrg ;; 238023b3b36Smrg amigaos | amigados) 239023b3b36Smrg basic_machine=m68k-unknown 240023b3b36Smrg basic_os=amigaos 241023b3b36Smrg ;; 242023b3b36Smrg amigaunix | amix) 243023b3b36Smrg basic_machine=m68k-unknown 244023b3b36Smrg basic_os=sysv4 245023b3b36Smrg ;; 246023b3b36Smrg apollo68) 247023b3b36Smrg basic_machine=m68k-apollo 248023b3b36Smrg basic_os=sysv 249023b3b36Smrg ;; 250023b3b36Smrg apollo68bsd) 251023b3b36Smrg basic_machine=m68k-apollo 252023b3b36Smrg basic_os=bsd 253023b3b36Smrg ;; 254023b3b36Smrg aros) 255023b3b36Smrg basic_machine=i386-pc 256023b3b36Smrg basic_os=aros 257023b3b36Smrg ;; 258023b3b36Smrg aux) 259023b3b36Smrg basic_machine=m68k-apple 260023b3b36Smrg basic_os=aux 261023b3b36Smrg ;; 262023b3b36Smrg balance) 263023b3b36Smrg basic_machine=ns32k-sequent 264023b3b36Smrg basic_os=dynix 265023b3b36Smrg ;; 266023b3b36Smrg blackfin) 267023b3b36Smrg basic_machine=bfin-unknown 268023b3b36Smrg basic_os=linux 269023b3b36Smrg ;; 270023b3b36Smrg cegcc) 271023b3b36Smrg basic_machine=arm-unknown 272023b3b36Smrg basic_os=cegcc 273023b3b36Smrg ;; 274023b3b36Smrg convex-c1) 275023b3b36Smrg basic_machine=c1-convex 276023b3b36Smrg basic_os=bsd 277023b3b36Smrg ;; 278023b3b36Smrg convex-c2) 279023b3b36Smrg basic_machine=c2-convex 280023b3b36Smrg basic_os=bsd 281023b3b36Smrg ;; 282023b3b36Smrg convex-c32) 283023b3b36Smrg basic_machine=c32-convex 284023b3b36Smrg basic_os=bsd 285023b3b36Smrg ;; 286023b3b36Smrg convex-c34) 287023b3b36Smrg basic_machine=c34-convex 288023b3b36Smrg basic_os=bsd 289023b3b36Smrg ;; 290023b3b36Smrg convex-c38) 291023b3b36Smrg basic_machine=c38-convex 292023b3b36Smrg basic_os=bsd 293023b3b36Smrg ;; 294023b3b36Smrg cray) 295023b3b36Smrg basic_machine=j90-cray 296023b3b36Smrg basic_os=unicos 297023b3b36Smrg ;; 298023b3b36Smrg crds | unos) 299023b3b36Smrg basic_machine=m68k-crds 300023b3b36Smrg basic_os= 301023b3b36Smrg ;; 302023b3b36Smrg da30) 303023b3b36Smrg basic_machine=m68k-da30 304023b3b36Smrg basic_os= 305023b3b36Smrg ;; 306023b3b36Smrg decstation | pmax | pmin | dec3100 | decstatn) 307023b3b36Smrg basic_machine=mips-dec 308023b3b36Smrg basic_os= 309023b3b36Smrg ;; 310023b3b36Smrg delta88) 311023b3b36Smrg basic_machine=m88k-motorola 312023b3b36Smrg basic_os=sysv3 313023b3b36Smrg ;; 314023b3b36Smrg dicos) 315023b3b36Smrg basic_machine=i686-pc 316023b3b36Smrg basic_os=dicos 317023b3b36Smrg ;; 318023b3b36Smrg djgpp) 319023b3b36Smrg basic_machine=i586-pc 320023b3b36Smrg basic_os=msdosdjgpp 321023b3b36Smrg ;; 322023b3b36Smrg ebmon29k) 323023b3b36Smrg basic_machine=a29k-amd 324023b3b36Smrg basic_os=ebmon 325023b3b36Smrg ;; 326023b3b36Smrg es1800 | OSE68k | ose68k | ose | OSE) 327023b3b36Smrg basic_machine=m68k-ericsson 328023b3b36Smrg basic_os=ose 329023b3b36Smrg ;; 330023b3b36Smrg gmicro) 331023b3b36Smrg basic_machine=tron-gmicro 332023b3b36Smrg basic_os=sysv 333023b3b36Smrg ;; 334023b3b36Smrg go32) 335023b3b36Smrg basic_machine=i386-pc 336023b3b36Smrg basic_os=go32 337023b3b36Smrg ;; 338023b3b36Smrg h8300hms) 339023b3b36Smrg basic_machine=h8300-hitachi 340023b3b36Smrg basic_os=hms 341023b3b36Smrg ;; 342023b3b36Smrg h8300xray) 343023b3b36Smrg basic_machine=h8300-hitachi 344023b3b36Smrg basic_os=xray 345023b3b36Smrg ;; 346023b3b36Smrg h8500hms) 347023b3b36Smrg basic_machine=h8500-hitachi 348023b3b36Smrg basic_os=hms 349023b3b36Smrg ;; 350023b3b36Smrg harris) 351023b3b36Smrg basic_machine=m88k-harris 352023b3b36Smrg basic_os=sysv3 353023b3b36Smrg ;; 354023b3b36Smrg hp300 | hp300hpux) 355023b3b36Smrg basic_machine=m68k-hp 356023b3b36Smrg basic_os=hpux 357023b3b36Smrg ;; 358023b3b36Smrg hp300bsd) 359023b3b36Smrg basic_machine=m68k-hp 360023b3b36Smrg basic_os=bsd 361023b3b36Smrg ;; 362023b3b36Smrg hppaosf) 363023b3b36Smrg basic_machine=hppa1.1-hp 364023b3b36Smrg basic_os=osf 365023b3b36Smrg ;; 366023b3b36Smrg hppro) 367023b3b36Smrg basic_machine=hppa1.1-hp 368023b3b36Smrg basic_os=proelf 369023b3b36Smrg ;; 370023b3b36Smrg i386mach) 371023b3b36Smrg basic_machine=i386-mach 372023b3b36Smrg basic_os=mach 373023b3b36Smrg ;; 374023b3b36Smrg isi68 | isi) 375023b3b36Smrg basic_machine=m68k-isi 376023b3b36Smrg basic_os=sysv 377023b3b36Smrg ;; 378023b3b36Smrg m68knommu) 379023b3b36Smrg basic_machine=m68k-unknown 380023b3b36Smrg basic_os=linux 381023b3b36Smrg ;; 382023b3b36Smrg magnum | m3230) 383023b3b36Smrg basic_machine=mips-mips 384023b3b36Smrg basic_os=sysv 385023b3b36Smrg ;; 386023b3b36Smrg merlin) 387023b3b36Smrg basic_machine=ns32k-utek 388023b3b36Smrg basic_os=sysv 389023b3b36Smrg ;; 390023b3b36Smrg mingw64) 391023b3b36Smrg basic_machine=x86_64-pc 392023b3b36Smrg basic_os=mingw64 393023b3b36Smrg ;; 394023b3b36Smrg mingw32) 395023b3b36Smrg basic_machine=i686-pc 396023b3b36Smrg basic_os=mingw32 397023b3b36Smrg ;; 398023b3b36Smrg mingw32ce) 399023b3b36Smrg basic_machine=arm-unknown 400023b3b36Smrg basic_os=mingw32ce 401023b3b36Smrg ;; 402023b3b36Smrg monitor) 403023b3b36Smrg basic_machine=m68k-rom68k 404023b3b36Smrg basic_os=coff 405023b3b36Smrg ;; 406023b3b36Smrg morphos) 407023b3b36Smrg basic_machine=powerpc-unknown 408023b3b36Smrg basic_os=morphos 409023b3b36Smrg ;; 410023b3b36Smrg moxiebox) 411023b3b36Smrg basic_machine=moxie-unknown 412023b3b36Smrg basic_os=moxiebox 413023b3b36Smrg ;; 414023b3b36Smrg msdos) 415023b3b36Smrg basic_machine=i386-pc 416023b3b36Smrg basic_os=msdos 417023b3b36Smrg ;; 418023b3b36Smrg msys) 419023b3b36Smrg basic_machine=i686-pc 420023b3b36Smrg basic_os=msys 421023b3b36Smrg ;; 422023b3b36Smrg mvs) 423023b3b36Smrg basic_machine=i370-ibm 424023b3b36Smrg basic_os=mvs 425023b3b36Smrg ;; 426023b3b36Smrg nacl) 427023b3b36Smrg basic_machine=le32-unknown 428023b3b36Smrg basic_os=nacl 429023b3b36Smrg ;; 430023b3b36Smrg ncr3000) 431023b3b36Smrg basic_machine=i486-ncr 432023b3b36Smrg basic_os=sysv4 433023b3b36Smrg ;; 434023b3b36Smrg netbsd386) 435023b3b36Smrg basic_machine=i386-pc 436023b3b36Smrg basic_os=netbsd 437023b3b36Smrg ;; 438023b3b36Smrg netwinder) 439023b3b36Smrg basic_machine=armv4l-rebel 440023b3b36Smrg basic_os=linux 441023b3b36Smrg ;; 442023b3b36Smrg news | news700 | news800 | news900) 443023b3b36Smrg basic_machine=m68k-sony 444023b3b36Smrg basic_os=newsos 445023b3b36Smrg ;; 446023b3b36Smrg news1000) 447023b3b36Smrg basic_machine=m68030-sony 448023b3b36Smrg basic_os=newsos 449023b3b36Smrg ;; 450023b3b36Smrg necv70) 451023b3b36Smrg basic_machine=v70-nec 452023b3b36Smrg basic_os=sysv 453023b3b36Smrg ;; 454023b3b36Smrg nh3000) 455023b3b36Smrg basic_machine=m68k-harris 456023b3b36Smrg basic_os=cxux 457023b3b36Smrg ;; 458023b3b36Smrg nh[45]000) 459023b3b36Smrg basic_machine=m88k-harris 460023b3b36Smrg basic_os=cxux 461023b3b36Smrg ;; 462023b3b36Smrg nindy960) 463023b3b36Smrg basic_machine=i960-intel 464023b3b36Smrg basic_os=nindy 465023b3b36Smrg ;; 466023b3b36Smrg mon960) 467023b3b36Smrg basic_machine=i960-intel 468023b3b36Smrg basic_os=mon960 469023b3b36Smrg ;; 470023b3b36Smrg nonstopux) 471023b3b36Smrg basic_machine=mips-compaq 472023b3b36Smrg basic_os=nonstopux 473023b3b36Smrg ;; 474023b3b36Smrg os400) 475023b3b36Smrg basic_machine=powerpc-ibm 476023b3b36Smrg basic_os=os400 477023b3b36Smrg ;; 478023b3b36Smrg OSE68000 | ose68000) 479023b3b36Smrg basic_machine=m68000-ericsson 480023b3b36Smrg basic_os=ose 481023b3b36Smrg ;; 482023b3b36Smrg os68k) 483023b3b36Smrg basic_machine=m68k-none 484023b3b36Smrg basic_os=os68k 485023b3b36Smrg ;; 486023b3b36Smrg paragon) 487023b3b36Smrg basic_machine=i860-intel 488023b3b36Smrg basic_os=osf 489023b3b36Smrg ;; 490023b3b36Smrg parisc) 491023b3b36Smrg basic_machine=hppa-unknown 492023b3b36Smrg basic_os=linux 493023b3b36Smrg ;; 494023b3b36Smrg psp) 495023b3b36Smrg basic_machine=mipsallegrexel-sony 496023b3b36Smrg basic_os=psp 497023b3b36Smrg ;; 498023b3b36Smrg pw32) 499023b3b36Smrg basic_machine=i586-unknown 500023b3b36Smrg basic_os=pw32 501023b3b36Smrg ;; 502023b3b36Smrg rdos | rdos64) 503023b3b36Smrg basic_machine=x86_64-pc 504023b3b36Smrg basic_os=rdos 505023b3b36Smrg ;; 506023b3b36Smrg rdos32) 507023b3b36Smrg basic_machine=i386-pc 508023b3b36Smrg basic_os=rdos 509023b3b36Smrg ;; 510023b3b36Smrg rom68k) 511023b3b36Smrg basic_machine=m68k-rom68k 512023b3b36Smrg basic_os=coff 513023b3b36Smrg ;; 514023b3b36Smrg sa29200) 515023b3b36Smrg basic_machine=a29k-amd 516023b3b36Smrg basic_os=udi 517023b3b36Smrg ;; 518023b3b36Smrg sei) 519023b3b36Smrg basic_machine=mips-sei 520023b3b36Smrg basic_os=seiux 521023b3b36Smrg ;; 522023b3b36Smrg sequent) 523023b3b36Smrg basic_machine=i386-sequent 524023b3b36Smrg basic_os= 525023b3b36Smrg ;; 526023b3b36Smrg sps7) 527023b3b36Smrg basic_machine=m68k-bull 528023b3b36Smrg basic_os=sysv2 529023b3b36Smrg ;; 530023b3b36Smrg st2000) 531023b3b36Smrg basic_machine=m68k-tandem 532023b3b36Smrg basic_os= 533023b3b36Smrg ;; 534023b3b36Smrg stratus) 535023b3b36Smrg basic_machine=i860-stratus 536023b3b36Smrg basic_os=sysv4 537023b3b36Smrg ;; 538023b3b36Smrg sun2) 539023b3b36Smrg basic_machine=m68000-sun 540023b3b36Smrg basic_os= 541023b3b36Smrg ;; 542023b3b36Smrg sun2os3) 543023b3b36Smrg basic_machine=m68000-sun 544023b3b36Smrg basic_os=sunos3 545023b3b36Smrg ;; 546023b3b36Smrg sun2os4) 547023b3b36Smrg basic_machine=m68000-sun 548023b3b36Smrg basic_os=sunos4 549023b3b36Smrg ;; 550023b3b36Smrg sun3) 551023b3b36Smrg basic_machine=m68k-sun 552023b3b36Smrg basic_os= 553023b3b36Smrg ;; 554023b3b36Smrg sun3os3) 555023b3b36Smrg basic_machine=m68k-sun 556023b3b36Smrg basic_os=sunos3 557023b3b36Smrg ;; 558023b3b36Smrg sun3os4) 559023b3b36Smrg basic_machine=m68k-sun 560023b3b36Smrg basic_os=sunos4 561023b3b36Smrg ;; 562023b3b36Smrg sun4) 563023b3b36Smrg basic_machine=sparc-sun 564023b3b36Smrg basic_os= 565023b3b36Smrg ;; 566023b3b36Smrg sun4os3) 567023b3b36Smrg basic_machine=sparc-sun 568023b3b36Smrg basic_os=sunos3 569023b3b36Smrg ;; 570023b3b36Smrg sun4os4) 571023b3b36Smrg basic_machine=sparc-sun 572023b3b36Smrg basic_os=sunos4 573023b3b36Smrg ;; 574023b3b36Smrg sun4sol2) 575023b3b36Smrg basic_machine=sparc-sun 576023b3b36Smrg basic_os=solaris2 577023b3b36Smrg ;; 578023b3b36Smrg sun386 | sun386i | roadrunner) 579023b3b36Smrg basic_machine=i386-sun 580023b3b36Smrg basic_os= 581023b3b36Smrg ;; 582023b3b36Smrg sv1) 583023b3b36Smrg basic_machine=sv1-cray 584023b3b36Smrg basic_os=unicos 585023b3b36Smrg ;; 586023b3b36Smrg symmetry) 587023b3b36Smrg basic_machine=i386-sequent 588023b3b36Smrg basic_os=dynix 589023b3b36Smrg ;; 590023b3b36Smrg t3e) 591023b3b36Smrg basic_machine=alphaev5-cray 592023b3b36Smrg basic_os=unicos 593023b3b36Smrg ;; 594023b3b36Smrg t90) 595023b3b36Smrg basic_machine=t90-cray 596023b3b36Smrg basic_os=unicos 597023b3b36Smrg ;; 598023b3b36Smrg toad1) 599023b3b36Smrg basic_machine=pdp10-xkl 600023b3b36Smrg basic_os=tops20 601023b3b36Smrg ;; 602023b3b36Smrg tpf) 603023b3b36Smrg basic_machine=s390x-ibm 604023b3b36Smrg basic_os=tpf 605023b3b36Smrg ;; 606023b3b36Smrg udi29k) 607023b3b36Smrg basic_machine=a29k-amd 608023b3b36Smrg basic_os=udi 609023b3b36Smrg ;; 610023b3b36Smrg ultra3) 611023b3b36Smrg basic_machine=a29k-nyu 612023b3b36Smrg basic_os=sym1 613023b3b36Smrg ;; 614023b3b36Smrg v810 | necv810) 615023b3b36Smrg basic_machine=v810-nec 616023b3b36Smrg basic_os=none 617023b3b36Smrg ;; 618023b3b36Smrg vaxv) 619023b3b36Smrg basic_machine=vax-dec 620023b3b36Smrg basic_os=sysv 621023b3b36Smrg ;; 622023b3b36Smrg vms) 623023b3b36Smrg basic_machine=vax-dec 624023b3b36Smrg basic_os=vms 625023b3b36Smrg ;; 626023b3b36Smrg vsta) 627023b3b36Smrg basic_machine=i386-pc 628023b3b36Smrg basic_os=vsta 629023b3b36Smrg ;; 630023b3b36Smrg vxworks960) 631023b3b36Smrg basic_machine=i960-wrs 632023b3b36Smrg basic_os=vxworks 633023b3b36Smrg ;; 634023b3b36Smrg vxworks68) 635023b3b36Smrg basic_machine=m68k-wrs 636023b3b36Smrg basic_os=vxworks 637023b3b36Smrg ;; 638023b3b36Smrg vxworks29k) 639023b3b36Smrg basic_machine=a29k-wrs 640023b3b36Smrg basic_os=vxworks 641023b3b36Smrg ;; 642023b3b36Smrg xbox) 643023b3b36Smrg basic_machine=i686-pc 644023b3b36Smrg basic_os=mingw32 645023b3b36Smrg ;; 646023b3b36Smrg ymp) 647023b3b36Smrg basic_machine=ymp-cray 648023b3b36Smrg basic_os=unicos 649023b3b36Smrg ;; 650023b3b36Smrg *) 651023b3b36Smrg basic_machine=$1 652023b3b36Smrg basic_os= 653023b3b36Smrg ;; 654023b3b36Smrg esac 655023b3b36Smrg ;; 656023b3b36Smrgesac 657023b3b36Smrg 658023b3b36Smrg# Decode 1-component or ad-hoc basic machines 659023b3b36Smrgcase $basic_machine in 660023b3b36Smrg # Here we handle the default manufacturer of certain CPU types. It is in 661023b3b36Smrg # some cases the only manufacturer, in others, it is the most popular. 662023b3b36Smrg w89k) 663023b3b36Smrg cpu=hppa1.1 664023b3b36Smrg vendor=winbond 665023b3b36Smrg ;; 666023b3b36Smrg op50n) 667023b3b36Smrg cpu=hppa1.1 668023b3b36Smrg vendor=oki 669023b3b36Smrg ;; 670023b3b36Smrg op60c) 671023b3b36Smrg cpu=hppa1.1 672023b3b36Smrg vendor=oki 673023b3b36Smrg ;; 674023b3b36Smrg ibm*) 675023b3b36Smrg cpu=i370 676023b3b36Smrg vendor=ibm 677023b3b36Smrg ;; 678023b3b36Smrg orion105) 679023b3b36Smrg cpu=clipper 680023b3b36Smrg vendor=highlevel 681023b3b36Smrg ;; 682023b3b36Smrg mac | mpw | mac-mpw) 683023b3b36Smrg cpu=m68k 684023b3b36Smrg vendor=apple 685023b3b36Smrg ;; 686023b3b36Smrg pmac | pmac-mpw) 687023b3b36Smrg cpu=powerpc 688023b3b36Smrg vendor=apple 689023b3b36Smrg ;; 690023b3b36Smrg 691023b3b36Smrg # Recognize the various machine names and aliases which stand 692023b3b36Smrg # for a CPU type and a company and sometimes even an OS. 693023b3b36Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694023b3b36Smrg cpu=m68000 695023b3b36Smrg vendor=att 696023b3b36Smrg ;; 697023b3b36Smrg 3b*) 698023b3b36Smrg cpu=we32k 699023b3b36Smrg vendor=att 700023b3b36Smrg ;; 701023b3b36Smrg bluegene*) 702023b3b36Smrg cpu=powerpc 703023b3b36Smrg vendor=ibm 704023b3b36Smrg basic_os=cnk 705023b3b36Smrg ;; 706023b3b36Smrg decsystem10* | dec10*) 707023b3b36Smrg cpu=pdp10 708023b3b36Smrg vendor=dec 709023b3b36Smrg basic_os=tops10 710023b3b36Smrg ;; 711023b3b36Smrg decsystem20* | dec20*) 712023b3b36Smrg cpu=pdp10 713023b3b36Smrg vendor=dec 714023b3b36Smrg basic_os=tops20 715023b3b36Smrg ;; 716023b3b36Smrg delta | 3300 | motorola-3300 | motorola-delta \ 717023b3b36Smrg | 3300-motorola | delta-motorola) 718023b3b36Smrg cpu=m68k 719023b3b36Smrg vendor=motorola 720023b3b36Smrg ;; 721023b3b36Smrg dpx2*) 722023b3b36Smrg cpu=m68k 723023b3b36Smrg vendor=bull 724023b3b36Smrg basic_os=sysv3 725023b3b36Smrg ;; 726023b3b36Smrg encore | umax | mmax) 727023b3b36Smrg cpu=ns32k 728023b3b36Smrg vendor=encore 729023b3b36Smrg ;; 730023b3b36Smrg elxsi) 731023b3b36Smrg cpu=elxsi 732023b3b36Smrg vendor=elxsi 733023b3b36Smrg basic_os=${basic_os:-bsd} 734023b3b36Smrg ;; 735023b3b36Smrg fx2800) 736023b3b36Smrg cpu=i860 737023b3b36Smrg vendor=alliant 738023b3b36Smrg ;; 739023b3b36Smrg genix) 740023b3b36Smrg cpu=ns32k 741023b3b36Smrg vendor=ns 742023b3b36Smrg ;; 743023b3b36Smrg h3050r* | hiux*) 744023b3b36Smrg cpu=hppa1.1 745023b3b36Smrg vendor=hitachi 746023b3b36Smrg basic_os=hiuxwe2 747023b3b36Smrg ;; 748023b3b36Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749023b3b36Smrg cpu=hppa1.0 750023b3b36Smrg vendor=hp 751023b3b36Smrg ;; 752023b3b36Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753023b3b36Smrg cpu=m68000 754023b3b36Smrg vendor=hp 755023b3b36Smrg ;; 756023b3b36Smrg hp9k3[2-9][0-9]) 757023b3b36Smrg cpu=m68k 758023b3b36Smrg vendor=hp 759023b3b36Smrg ;; 760023b3b36Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761023b3b36Smrg cpu=hppa1.0 762023b3b36Smrg vendor=hp 763023b3b36Smrg ;; 764023b3b36Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765023b3b36Smrg cpu=hppa1.1 766023b3b36Smrg vendor=hp 767023b3b36Smrg ;; 768023b3b36Smrg hp9k78[0-9] | hp78[0-9]) 769023b3b36Smrg # FIXME: really hppa2.0-hp 770023b3b36Smrg cpu=hppa1.1 771023b3b36Smrg vendor=hp 772023b3b36Smrg ;; 773023b3b36Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774023b3b36Smrg # FIXME: really hppa2.0-hp 775023b3b36Smrg cpu=hppa1.1 776023b3b36Smrg vendor=hp 777023b3b36Smrg ;; 778023b3b36Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779023b3b36Smrg cpu=hppa1.1 780023b3b36Smrg vendor=hp 781023b3b36Smrg ;; 782023b3b36Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783023b3b36Smrg cpu=hppa1.0 784023b3b36Smrg vendor=hp 785023b3b36Smrg ;; 786023b3b36Smrg i*86v32) 787023b3b36Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788023b3b36Smrg vendor=pc 789023b3b36Smrg basic_os=sysv32 790023b3b36Smrg ;; 791023b3b36Smrg i*86v4*) 792023b3b36Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793023b3b36Smrg vendor=pc 794023b3b36Smrg basic_os=sysv4 795023b3b36Smrg ;; 796023b3b36Smrg i*86v) 797023b3b36Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798023b3b36Smrg vendor=pc 799023b3b36Smrg basic_os=sysv 800023b3b36Smrg ;; 801023b3b36Smrg i*86sol2) 802023b3b36Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803023b3b36Smrg vendor=pc 804023b3b36Smrg basic_os=solaris2 805023b3b36Smrg ;; 806023b3b36Smrg j90 | j90-cray) 807023b3b36Smrg cpu=j90 808023b3b36Smrg vendor=cray 809023b3b36Smrg basic_os=${basic_os:-unicos} 810023b3b36Smrg ;; 811023b3b36Smrg iris | iris4d) 812023b3b36Smrg cpu=mips 813023b3b36Smrg vendor=sgi 814023b3b36Smrg case $basic_os in 815023b3b36Smrg irix*) 816023b3b36Smrg ;; 817023b3b36Smrg *) 818023b3b36Smrg basic_os=irix4 819023b3b36Smrg ;; 820023b3b36Smrg esac 821023b3b36Smrg ;; 822023b3b36Smrg miniframe) 823023b3b36Smrg cpu=m68000 824023b3b36Smrg vendor=convergent 825023b3b36Smrg ;; 826023b3b36Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827023b3b36Smrg cpu=m68k 828023b3b36Smrg vendor=atari 829023b3b36Smrg basic_os=mint 830023b3b36Smrg ;; 831023b3b36Smrg news-3600 | risc-news) 832023b3b36Smrg cpu=mips 833023b3b36Smrg vendor=sony 834023b3b36Smrg basic_os=newsos 835023b3b36Smrg ;; 836023b3b36Smrg next | m*-next) 837023b3b36Smrg cpu=m68k 838023b3b36Smrg vendor=next 839023b3b36Smrg case $basic_os in 840023b3b36Smrg openstep*) 841023b3b36Smrg ;; 842023b3b36Smrg nextstep*) 843023b3b36Smrg ;; 844023b3b36Smrg ns2*) 845023b3b36Smrg basic_os=nextstep2 846023b3b36Smrg ;; 847023b3b36Smrg *) 848023b3b36Smrg basic_os=nextstep3 849023b3b36Smrg ;; 850023b3b36Smrg esac 851023b3b36Smrg ;; 852023b3b36Smrg np1) 853023b3b36Smrg cpu=np1 854023b3b36Smrg vendor=gould 855023b3b36Smrg ;; 856023b3b36Smrg op50n-* | op60c-*) 857023b3b36Smrg cpu=hppa1.1 858023b3b36Smrg vendor=oki 859023b3b36Smrg basic_os=proelf 860023b3b36Smrg ;; 861023b3b36Smrg pa-hitachi) 862023b3b36Smrg cpu=hppa1.1 863023b3b36Smrg vendor=hitachi 864023b3b36Smrg basic_os=hiuxwe2 865023b3b36Smrg ;; 866023b3b36Smrg pbd) 867023b3b36Smrg cpu=sparc 868023b3b36Smrg vendor=tti 869023b3b36Smrg ;; 870023b3b36Smrg pbb) 871023b3b36Smrg cpu=m68k 872023b3b36Smrg vendor=tti 873023b3b36Smrg ;; 874023b3b36Smrg pc532) 875023b3b36Smrg cpu=ns32k 876023b3b36Smrg vendor=pc532 877023b3b36Smrg ;; 878023b3b36Smrg pn) 879023b3b36Smrg cpu=pn 880023b3b36Smrg vendor=gould 881023b3b36Smrg ;; 882023b3b36Smrg power) 883023b3b36Smrg cpu=power 884023b3b36Smrg vendor=ibm 885023b3b36Smrg ;; 886023b3b36Smrg ps2) 887023b3b36Smrg cpu=i386 888023b3b36Smrg vendor=ibm 889023b3b36Smrg ;; 890023b3b36Smrg rm[46]00) 891023b3b36Smrg cpu=mips 892023b3b36Smrg vendor=siemens 893023b3b36Smrg ;; 894023b3b36Smrg rtpc | rtpc-*) 895023b3b36Smrg cpu=romp 896023b3b36Smrg vendor=ibm 897023b3b36Smrg ;; 898023b3b36Smrg sde) 899023b3b36Smrg cpu=mipsisa32 900023b3b36Smrg vendor=sde 901023b3b36Smrg basic_os=${basic_os:-elf} 902023b3b36Smrg ;; 903023b3b36Smrg simso-wrs) 904023b3b36Smrg cpu=sparclite 905023b3b36Smrg vendor=wrs 906023b3b36Smrg basic_os=vxworks 907023b3b36Smrg ;; 908023b3b36Smrg tower | tower-32) 909023b3b36Smrg cpu=m68k 910023b3b36Smrg vendor=ncr 911023b3b36Smrg ;; 912023b3b36Smrg vpp*|vx|vx-*) 913023b3b36Smrg cpu=f301 914023b3b36Smrg vendor=fujitsu 915023b3b36Smrg ;; 916023b3b36Smrg w65) 917023b3b36Smrg cpu=w65 918023b3b36Smrg vendor=wdc 919023b3b36Smrg ;; 920023b3b36Smrg w89k-*) 921023b3b36Smrg cpu=hppa1.1 922023b3b36Smrg vendor=winbond 923023b3b36Smrg basic_os=proelf 924023b3b36Smrg ;; 925023b3b36Smrg none) 926023b3b36Smrg cpu=none 927023b3b36Smrg vendor=none 928023b3b36Smrg ;; 929023b3b36Smrg leon|leon[3-9]) 930023b3b36Smrg cpu=sparc 931023b3b36Smrg vendor=$basic_machine 932023b3b36Smrg ;; 933023b3b36Smrg leon-*|leon[3-9]-*) 934023b3b36Smrg cpu=sparc 935023b3b36Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936023b3b36Smrg ;; 937023b3b36Smrg 938023b3b36Smrg *-*) 939023b3b36Smrg # shellcheck disable=SC2162 940023b3b36Smrg saved_IFS=$IFS 941023b3b36Smrg IFS="-" read cpu vendor <<EOF 942023b3b36Smrg$basic_machine 943023b3b36SmrgEOF 944023b3b36Smrg IFS=$saved_IFS 945023b3b36Smrg ;; 946023b3b36Smrg # We use `pc' rather than `unknown' 947023b3b36Smrg # because (1) that's what they normally are, and 948023b3b36Smrg # (2) the word "unknown" tends to confuse beginning users. 949023b3b36Smrg i*86 | x86_64) 950023b3b36Smrg cpu=$basic_machine 951023b3b36Smrg vendor=pc 952023b3b36Smrg ;; 953023b3b36Smrg # These rules are duplicated from below for sake of the special case above; 954023b3b36Smrg # i.e. things that normalized to x86 arches should also default to "pc" 955023b3b36Smrg pc98) 956023b3b36Smrg cpu=i386 957023b3b36Smrg vendor=pc 958023b3b36Smrg ;; 959023b3b36Smrg x64 | amd64) 960023b3b36Smrg cpu=x86_64 961023b3b36Smrg vendor=pc 962023b3b36Smrg ;; 963023b3b36Smrg # Recognize the basic CPU types without company name. 964023b3b36Smrg *) 965023b3b36Smrg cpu=$basic_machine 966023b3b36Smrg vendor=unknown 967023b3b36Smrg ;; 968023b3b36Smrgesac 969023b3b36Smrg 970023b3b36Smrgunset -v basic_machine 971023b3b36Smrg 972023b3b36Smrg# Decode basic machines in the full and proper CPU-Company form. 973023b3b36Smrgcase $cpu-$vendor in 974023b3b36Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975023b3b36Smrg # some cases the only manufacturer, in others, it is the most popular. 976023b3b36Smrg craynv-unknown) 977023b3b36Smrg vendor=cray 978023b3b36Smrg basic_os=${basic_os:-unicosmp} 979023b3b36Smrg ;; 980023b3b36Smrg c90-unknown | c90-cray) 981023b3b36Smrg vendor=cray 982023b3b36Smrg basic_os=${Basic_os:-unicos} 983023b3b36Smrg ;; 984023b3b36Smrg fx80-unknown) 985023b3b36Smrg vendor=alliant 986023b3b36Smrg ;; 987023b3b36Smrg romp-unknown) 988023b3b36Smrg vendor=ibm 989023b3b36Smrg ;; 990023b3b36Smrg mmix-unknown) 991023b3b36Smrg vendor=knuth 992023b3b36Smrg ;; 993023b3b36Smrg microblaze-unknown | microblazeel-unknown) 994023b3b36Smrg vendor=xilinx 995023b3b36Smrg ;; 996023b3b36Smrg rs6000-unknown) 997023b3b36Smrg vendor=ibm 998023b3b36Smrg ;; 999023b3b36Smrg vax-unknown) 1000023b3b36Smrg vendor=dec 1001023b3b36Smrg ;; 1002023b3b36Smrg pdp11-unknown) 1003023b3b36Smrg vendor=dec 1004023b3b36Smrg ;; 1005023b3b36Smrg we32k-unknown) 1006023b3b36Smrg vendor=att 1007023b3b36Smrg ;; 1008023b3b36Smrg cydra-unknown) 1009023b3b36Smrg vendor=cydrome 1010023b3b36Smrg ;; 1011023b3b36Smrg i370-ibm*) 1012023b3b36Smrg vendor=ibm 1013023b3b36Smrg ;; 1014023b3b36Smrg orion-unknown) 1015023b3b36Smrg vendor=highlevel 1016023b3b36Smrg ;; 1017023b3b36Smrg xps-unknown | xps100-unknown) 1018023b3b36Smrg cpu=xps100 1019023b3b36Smrg vendor=honeywell 1020023b3b36Smrg ;; 1021023b3b36Smrg 1022023b3b36Smrg # Here we normalize CPU types with a missing or matching vendor 1023023b3b36Smrg armh-unknown | armh-alt) 1024023b3b36Smrg cpu=armv7l 1025023b3b36Smrg vendor=alt 1026023b3b36Smrg basic_os=${basic_os:-linux-gnueabihf} 1027023b3b36Smrg ;; 1028023b3b36Smrg dpx20-unknown | dpx20-bull) 1029023b3b36Smrg cpu=rs6000 1030023b3b36Smrg vendor=bull 1031023b3b36Smrg basic_os=${basic_os:-bosx} 1032023b3b36Smrg ;; 1033023b3b36Smrg 1034023b3b36Smrg # Here we normalize CPU types irrespective of the vendor 1035023b3b36Smrg amd64-*) 1036023b3b36Smrg cpu=x86_64 1037023b3b36Smrg ;; 1038023b3b36Smrg blackfin-*) 1039023b3b36Smrg cpu=bfin 1040023b3b36Smrg basic_os=linux 1041023b3b36Smrg ;; 1042023b3b36Smrg c54x-*) 1043023b3b36Smrg cpu=tic54x 1044023b3b36Smrg ;; 1045023b3b36Smrg c55x-*) 1046023b3b36Smrg cpu=tic55x 1047023b3b36Smrg ;; 1048023b3b36Smrg c6x-*) 1049023b3b36Smrg cpu=tic6x 1050023b3b36Smrg ;; 1051023b3b36Smrg e500v[12]-*) 1052023b3b36Smrg cpu=powerpc 1053023b3b36Smrg basic_os=${basic_os}"spe" 1054023b3b36Smrg ;; 1055023b3b36Smrg mips3*-*) 1056023b3b36Smrg cpu=mips64 1057023b3b36Smrg ;; 1058023b3b36Smrg ms1-*) 1059023b3b36Smrg cpu=mt 1060023b3b36Smrg ;; 1061023b3b36Smrg m68knommu-*) 1062023b3b36Smrg cpu=m68k 1063023b3b36Smrg basic_os=linux 1064023b3b36Smrg ;; 1065023b3b36Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1066023b3b36Smrg cpu=s12z 1067023b3b36Smrg ;; 1068023b3b36Smrg openrisc-*) 1069023b3b36Smrg cpu=or32 1070023b3b36Smrg ;; 1071023b3b36Smrg parisc-*) 1072023b3b36Smrg cpu=hppa 1073023b3b36Smrg basic_os=linux 1074023b3b36Smrg ;; 1075023b3b36Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1076023b3b36Smrg cpu=i586 1077023b3b36Smrg ;; 1078023b3b36Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1079023b3b36Smrg cpu=i686 1080023b3b36Smrg ;; 1081023b3b36Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1082023b3b36Smrg cpu=i686 1083023b3b36Smrg ;; 1084023b3b36Smrg pentium4-*) 1085023b3b36Smrg cpu=i786 1086023b3b36Smrg ;; 1087023b3b36Smrg pc98-*) 1088023b3b36Smrg cpu=i386 1089023b3b36Smrg ;; 1090023b3b36Smrg ppc-* | ppcbe-*) 1091023b3b36Smrg cpu=powerpc 1092023b3b36Smrg ;; 1093023b3b36Smrg ppcle-* | powerpclittle-*) 1094023b3b36Smrg cpu=powerpcle 1095023b3b36Smrg ;; 1096023b3b36Smrg ppc64-*) 1097023b3b36Smrg cpu=powerpc64 1098023b3b36Smrg ;; 1099023b3b36Smrg ppc64le-* | powerpc64little-*) 1100023b3b36Smrg cpu=powerpc64le 1101023b3b36Smrg ;; 1102023b3b36Smrg sb1-*) 1103023b3b36Smrg cpu=mipsisa64sb1 1104023b3b36Smrg ;; 1105023b3b36Smrg sb1el-*) 1106023b3b36Smrg cpu=mipsisa64sb1el 1107023b3b36Smrg ;; 1108023b3b36Smrg sh5e[lb]-*) 1109023b3b36Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1110023b3b36Smrg ;; 1111023b3b36Smrg spur-*) 1112023b3b36Smrg cpu=spur 1113023b3b36Smrg ;; 1114023b3b36Smrg strongarm-* | thumb-*) 1115023b3b36Smrg cpu=arm 1116023b3b36Smrg ;; 1117023b3b36Smrg tx39-*) 1118023b3b36Smrg cpu=mipstx39 1119023b3b36Smrg ;; 1120023b3b36Smrg tx39el-*) 1121023b3b36Smrg cpu=mipstx39el 1122023b3b36Smrg ;; 1123023b3b36Smrg x64-*) 1124023b3b36Smrg cpu=x86_64 1125023b3b36Smrg ;; 1126023b3b36Smrg xscale-* | xscalee[bl]-*) 1127023b3b36Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1128023b3b36Smrg ;; 1129023b3b36Smrg arm64-* | aarch64le-*) 1130023b3b36Smrg cpu=aarch64 1131023b3b36Smrg ;; 1132023b3b36Smrg 1133023b3b36Smrg # Recognize the canonical CPU Types that limit and/or modify the 1134023b3b36Smrg # company names they are paired with. 1135023b3b36Smrg cr16-*) 1136023b3b36Smrg basic_os=${basic_os:-elf} 1137023b3b36Smrg ;; 1138023b3b36Smrg crisv32-* | etraxfs*-*) 1139023b3b36Smrg cpu=crisv32 1140023b3b36Smrg vendor=axis 1141023b3b36Smrg ;; 1142023b3b36Smrg cris-* | etrax*-*) 1143023b3b36Smrg cpu=cris 1144023b3b36Smrg vendor=axis 1145023b3b36Smrg ;; 1146023b3b36Smrg crx-*) 1147023b3b36Smrg basic_os=${basic_os:-elf} 1148023b3b36Smrg ;; 1149023b3b36Smrg neo-tandem) 1150023b3b36Smrg cpu=neo 1151023b3b36Smrg vendor=tandem 1152023b3b36Smrg ;; 1153023b3b36Smrg nse-tandem) 1154023b3b36Smrg cpu=nse 1155023b3b36Smrg vendor=tandem 1156023b3b36Smrg ;; 1157023b3b36Smrg nsr-tandem) 1158023b3b36Smrg cpu=nsr 1159023b3b36Smrg vendor=tandem 1160023b3b36Smrg ;; 1161023b3b36Smrg nsv-tandem) 1162023b3b36Smrg cpu=nsv 1163023b3b36Smrg vendor=tandem 1164023b3b36Smrg ;; 1165023b3b36Smrg nsx-tandem) 1166023b3b36Smrg cpu=nsx 1167023b3b36Smrg vendor=tandem 1168023b3b36Smrg ;; 1169023b3b36Smrg mipsallegrexel-sony) 1170023b3b36Smrg cpu=mipsallegrexel 1171023b3b36Smrg vendor=sony 1172023b3b36Smrg ;; 1173023b3b36Smrg tile*-*) 1174023b3b36Smrg basic_os=${basic_os:-linux-gnu} 1175023b3b36Smrg ;; 1176023b3b36Smrg 1177023b3b36Smrg *) 1178023b3b36Smrg # Recognize the canonical CPU types that are allowed with any 1179023b3b36Smrg # company name. 1180023b3b36Smrg case $cpu in 1181023b3b36Smrg 1750a | 580 \ 1182023b3b36Smrg | a29k \ 1183023b3b36Smrg | aarch64 | aarch64_be \ 1184023b3b36Smrg | abacus \ 1185023b3b36Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1186023b3b36Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1187023b3b36Smrg | alphapca5[67] | alpha64pca5[67] \ 1188023b3b36Smrg | am33_2.0 \ 1189023b3b36Smrg | amdgcn \ 1190023b3b36Smrg | arc | arceb | arc32 | arc64 \ 1191023b3b36Smrg | arm | arm[lb]e | arme[lb] | armv* \ 1192023b3b36Smrg | avr | avr32 \ 1193023b3b36Smrg | asmjs \ 1194023b3b36Smrg | ba \ 1195023b3b36Smrg | be32 | be64 \ 1196023b3b36Smrg | bfin | bpf | bs2000 \ 1197023b3b36Smrg | c[123]* | c30 | [cjt]90 | c4x \ 1198023b3b36Smrg | c8051 | clipper | craynv | csky | cydra \ 1199023b3b36Smrg | d10v | d30v | dlx | dsp16xx \ 1200023b3b36Smrg | e2k | elxsi | epiphany \ 1201023b3b36Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1202023b3b36Smrg | h8300 | h8500 \ 1203023b3b36Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1204023b3b36Smrg | hexagon \ 1205023b3b36Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1206023b3b36Smrg | ip2k | iq2000 \ 1207023b3b36Smrg | k1om \ 1208023b3b36Smrg | le32 | le64 \ 1209023b3b36Smrg | lm32 \ 1210023b3b36Smrg | loongarch32 | loongarch64 \ 1211023b3b36Smrg | m32c | m32r | m32rle \ 1212023b3b36Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1213023b3b36Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1214023b3b36Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1215023b3b36Smrg | microblaze | microblazeel \ 1216023b3b36Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1217023b3b36Smrg | mips16 \ 1218023b3b36Smrg | mips64 | mips64eb | mips64el \ 1219023b3b36Smrg | mips64octeon | mips64octeonel \ 1220023b3b36Smrg | mips64orion | mips64orionel \ 1221023b3b36Smrg | mips64r5900 | mips64r5900el \ 1222023b3b36Smrg | mips64vr | mips64vrel \ 1223023b3b36Smrg | mips64vr4100 | mips64vr4100el \ 1224023b3b36Smrg | mips64vr4300 | mips64vr4300el \ 1225023b3b36Smrg | mips64vr5000 | mips64vr5000el \ 1226023b3b36Smrg | mips64vr5900 | mips64vr5900el \ 1227023b3b36Smrg | mipsisa32 | mipsisa32el \ 1228023b3b36Smrg | mipsisa32r2 | mipsisa32r2el \ 1229023b3b36Smrg | mipsisa32r3 | mipsisa32r3el \ 1230023b3b36Smrg | mipsisa32r5 | mipsisa32r5el \ 1231023b3b36Smrg | mipsisa32r6 | mipsisa32r6el \ 1232023b3b36Smrg | mipsisa64 | mipsisa64el \ 1233023b3b36Smrg | mipsisa64r2 | mipsisa64r2el \ 1234023b3b36Smrg | mipsisa64r3 | mipsisa64r3el \ 1235023b3b36Smrg | mipsisa64r5 | mipsisa64r5el \ 1236023b3b36Smrg | mipsisa64r6 | mipsisa64r6el \ 1237023b3b36Smrg | mipsisa64sb1 | mipsisa64sb1el \ 1238023b3b36Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 1239023b3b36Smrg | mipsr5900 | mipsr5900el \ 1240023b3b36Smrg | mipstx39 | mipstx39el \ 1241023b3b36Smrg | mmix \ 1242023b3b36Smrg | mn10200 | mn10300 \ 1243023b3b36Smrg | moxie \ 1244023b3b36Smrg | mt \ 1245023b3b36Smrg | msp430 \ 1246023b3b36Smrg | nds32 | nds32le | nds32be \ 1247023b3b36Smrg | nfp \ 1248023b3b36Smrg | nios | nios2 | nios2eb | nios2el \ 1249023b3b36Smrg | none | np1 | ns16k | ns32k | nvptx \ 1250023b3b36Smrg | open8 \ 1251023b3b36Smrg | or1k* \ 1252023b3b36Smrg | or32 \ 1253023b3b36Smrg | orion \ 1254023b3b36Smrg | picochip \ 1255023b3b36Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1256023b3b36Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1257023b3b36Smrg | pru \ 1258023b3b36Smrg | pyramid \ 1259023b3b36Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1260023b3b36Smrg | rl78 | romp | rs6000 | rx \ 1261023b3b36Smrg | s390 | s390x \ 1262023b3b36Smrg | score \ 1263023b3b36Smrg | sh | shl \ 1264023b3b36Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1265023b3b36Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1266023b3b36Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1267023b3b36Smrg | sparclite \ 1268023b3b36Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1269023b3b36Smrg | spu \ 1270023b3b36Smrg | tahoe \ 1271023b3b36Smrg | thumbv7* \ 1272023b3b36Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1273023b3b36Smrg | tron \ 1274023b3b36Smrg | ubicom32 \ 1275023b3b36Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1276023b3b36Smrg | vax \ 1277023b3b36Smrg | visium \ 1278023b3b36Smrg | w65 \ 1279023b3b36Smrg | wasm32 | wasm64 \ 1280023b3b36Smrg | we32k \ 1281023b3b36Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1282023b3b36Smrg | xstormy16 | xtensa* \ 1283023b3b36Smrg | ymp \ 1284023b3b36Smrg | z8k | z80) 1285023b3b36Smrg ;; 1286023b3b36Smrg 1287023b3b36Smrg *) 1288023b3b36Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1289023b3b36Smrg exit 1 1290023b3b36Smrg ;; 1291023b3b36Smrg esac 1292023b3b36Smrg ;; 1293023b3b36Smrgesac 1294023b3b36Smrg 1295023b3b36Smrg# Here we canonicalize certain aliases for manufacturers. 1296023b3b36Smrgcase $vendor in 1297023b3b36Smrg digital*) 1298023b3b36Smrg vendor=dec 1299023b3b36Smrg ;; 1300023b3b36Smrg commodore*) 1301023b3b36Smrg vendor=cbm 1302023b3b36Smrg ;; 1303023b3b36Smrg *) 1304023b3b36Smrg ;; 1305023b3b36Smrgesac 1306023b3b36Smrg 1307023b3b36Smrg# Decode manufacturer-specific aliases for certain operating systems. 1308023b3b36Smrg 1309023b3b36Smrgif test x$basic_os != x 1310023b3b36Smrgthen 1311023b3b36Smrg 1312023b3b36Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1313023b3b36Smrg# set os. 1314023b3b36Smrgcase $basic_os in 1315023b3b36Smrg gnu/linux*) 1316023b3b36Smrg kernel=linux 1317023b3b36Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1318023b3b36Smrg ;; 1319023b3b36Smrg os2-emx) 1320023b3b36Smrg kernel=os2 1321023b3b36Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1322023b3b36Smrg ;; 1323023b3b36Smrg nto-qnx*) 1324023b3b36Smrg kernel=nto 1325023b3b36Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1326023b3b36Smrg ;; 1327023b3b36Smrg *-*) 1328023b3b36Smrg # shellcheck disable=SC2162 1329023b3b36Smrg saved_IFS=$IFS 1330023b3b36Smrg IFS="-" read kernel os <<EOF 1331023b3b36Smrg$basic_os 1332023b3b36SmrgEOF 1333023b3b36Smrg IFS=$saved_IFS 1334023b3b36Smrg ;; 1335023b3b36Smrg # Default OS when just kernel was specified 1336023b3b36Smrg nto*) 1337023b3b36Smrg kernel=nto 1338023b3b36Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1339023b3b36Smrg ;; 1340023b3b36Smrg linux*) 1341023b3b36Smrg kernel=linux 1342023b3b36Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1343023b3b36Smrg ;; 1344023b3b36Smrg managarm*) 1345023b3b36Smrg kernel=managarm 1346023b3b36Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1347023b3b36Smrg ;; 1348023b3b36Smrg *) 1349023b3b36Smrg kernel= 1350023b3b36Smrg os=$basic_os 1351023b3b36Smrg ;; 1352023b3b36Smrgesac 1353023b3b36Smrg 1354023b3b36Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1355023b3b36Smrg# etc.) 1356023b3b36Smrgcase $os in 1357023b3b36Smrg # First match some system type aliases that might get confused 1358023b3b36Smrg # with valid system types. 1359023b3b36Smrg # solaris* is a basic system type, with this one exception. 1360023b3b36Smrg auroraux) 1361023b3b36Smrg os=auroraux 1362023b3b36Smrg ;; 1363023b3b36Smrg bluegene*) 1364023b3b36Smrg os=cnk 1365023b3b36Smrg ;; 1366023b3b36Smrg solaris1 | solaris1.*) 1367023b3b36Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1368023b3b36Smrg ;; 1369023b3b36Smrg solaris) 1370023b3b36Smrg os=solaris2 1371023b3b36Smrg ;; 1372023b3b36Smrg unixware*) 1373023b3b36Smrg os=sysv4.2uw 1374023b3b36Smrg ;; 1375023b3b36Smrg # es1800 is here to avoid being matched by es* (a different OS) 1376023b3b36Smrg es1800*) 1377023b3b36Smrg os=ose 1378023b3b36Smrg ;; 1379023b3b36Smrg # Some version numbers need modification 1380023b3b36Smrg chorusos*) 1381023b3b36Smrg os=chorusos 1382023b3b36Smrg ;; 1383023b3b36Smrg isc) 1384023b3b36Smrg os=isc2.2 1385023b3b36Smrg ;; 1386023b3b36Smrg sco6) 1387023b3b36Smrg os=sco5v6 1388023b3b36Smrg ;; 1389023b3b36Smrg sco5) 1390023b3b36Smrg os=sco3.2v5 1391023b3b36Smrg ;; 1392023b3b36Smrg sco4) 1393023b3b36Smrg os=sco3.2v4 1394023b3b36Smrg ;; 1395023b3b36Smrg sco3.2.[4-9]*) 1396023b3b36Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1397023b3b36Smrg ;; 1398023b3b36Smrg sco*v* | scout) 1399023b3b36Smrg # Don't match below 1400023b3b36Smrg ;; 1401023b3b36Smrg sco*) 1402023b3b36Smrg os=sco3.2v2 1403023b3b36Smrg ;; 1404023b3b36Smrg psos*) 1405023b3b36Smrg os=psos 1406023b3b36Smrg ;; 1407023b3b36Smrg qnx*) 1408023b3b36Smrg os=qnx 1409023b3b36Smrg ;; 1410023b3b36Smrg hiux*) 1411023b3b36Smrg os=hiuxwe2 1412023b3b36Smrg ;; 1413023b3b36Smrg lynx*178) 1414023b3b36Smrg os=lynxos178 1415023b3b36Smrg ;; 1416023b3b36Smrg lynx*5) 1417023b3b36Smrg os=lynxos5 1418023b3b36Smrg ;; 1419023b3b36Smrg lynxos*) 1420023b3b36Smrg # don't get caught up in next wildcard 1421023b3b36Smrg ;; 1422023b3b36Smrg lynx*) 1423023b3b36Smrg os=lynxos 1424023b3b36Smrg ;; 1425023b3b36Smrg mac[0-9]*) 1426023b3b36Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1427023b3b36Smrg ;; 1428023b3b36Smrg opened*) 1429023b3b36Smrg os=openedition 1430023b3b36Smrg ;; 1431023b3b36Smrg os400*) 1432023b3b36Smrg os=os400 1433023b3b36Smrg ;; 1434023b3b36Smrg sunos5*) 1435023b3b36Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1436023b3b36Smrg ;; 1437023b3b36Smrg sunos6*) 1438023b3b36Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1439023b3b36Smrg ;; 1440023b3b36Smrg wince*) 1441023b3b36Smrg os=wince 1442023b3b36Smrg ;; 1443023b3b36Smrg utek*) 1444023b3b36Smrg os=bsd 1445023b3b36Smrg ;; 1446023b3b36Smrg dynix*) 1447023b3b36Smrg os=bsd 1448023b3b36Smrg ;; 1449023b3b36Smrg acis*) 1450023b3b36Smrg os=aos 1451023b3b36Smrg ;; 1452023b3b36Smrg atheos*) 1453023b3b36Smrg os=atheos 1454023b3b36Smrg ;; 1455023b3b36Smrg syllable*) 1456023b3b36Smrg os=syllable 1457023b3b36Smrg ;; 1458023b3b36Smrg 386bsd) 1459023b3b36Smrg os=bsd 1460023b3b36Smrg ;; 1461023b3b36Smrg ctix* | uts*) 1462023b3b36Smrg os=sysv 1463023b3b36Smrg ;; 1464023b3b36Smrg nova*) 1465023b3b36Smrg os=rtmk-nova 1466023b3b36Smrg ;; 1467023b3b36Smrg ns2) 1468023b3b36Smrg os=nextstep2 1469023b3b36Smrg ;; 1470023b3b36Smrg # Preserve the version number of sinix5. 1471023b3b36Smrg sinix5.*) 1472023b3b36Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1473023b3b36Smrg ;; 1474023b3b36Smrg sinix*) 1475023b3b36Smrg os=sysv4 1476023b3b36Smrg ;; 1477023b3b36Smrg tpf*) 1478023b3b36Smrg os=tpf 1479023b3b36Smrg ;; 1480023b3b36Smrg triton*) 1481023b3b36Smrg os=sysv3 1482023b3b36Smrg ;; 1483023b3b36Smrg oss*) 1484023b3b36Smrg os=sysv3 1485023b3b36Smrg ;; 1486023b3b36Smrg svr4*) 1487023b3b36Smrg os=sysv4 1488023b3b36Smrg ;; 1489023b3b36Smrg svr3) 1490023b3b36Smrg os=sysv3 1491023b3b36Smrg ;; 1492023b3b36Smrg sysvr4) 1493023b3b36Smrg os=sysv4 1494023b3b36Smrg ;; 1495023b3b36Smrg ose*) 1496023b3b36Smrg os=ose 1497023b3b36Smrg ;; 1498023b3b36Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1499023b3b36Smrg os=mint 1500023b3b36Smrg ;; 1501023b3b36Smrg dicos*) 1502023b3b36Smrg os=dicos 1503023b3b36Smrg ;; 1504023b3b36Smrg pikeos*) 1505023b3b36Smrg # Until real need of OS specific support for 1506023b3b36Smrg # particular features comes up, bare metal 1507023b3b36Smrg # configurations are quite functional. 1508023b3b36Smrg case $cpu in 1509023b3b36Smrg arm*) 1510023b3b36Smrg os=eabi 1511023b3b36Smrg ;; 1512023b3b36Smrg *) 1513023b3b36Smrg os=elf 1514023b3b36Smrg ;; 1515023b3b36Smrg esac 1516023b3b36Smrg ;; 1517023b3b36Smrg *) 1518023b3b36Smrg # No normalization, but not necessarily accepted, that comes below. 1519023b3b36Smrg ;; 1520023b3b36Smrgesac 1521023b3b36Smrg 1522023b3b36Smrgelse 1523023b3b36Smrg 1524023b3b36Smrg# Here we handle the default operating systems that come with various machines. 1525023b3b36Smrg# The value should be what the vendor currently ships out the door with their 1526023b3b36Smrg# machine or put another way, the most popular os provided with the machine. 1527023b3b36Smrg 1528023b3b36Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1529023b3b36Smrg# "-sun"), then you have to tell the case statement up towards the top 1530023b3b36Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1531023b3b36Smrg# will signal an error saying that MANUFACTURER isn't an operating 1532023b3b36Smrg# system, and we'll never get to this point. 1533023b3b36Smrg 1534023b3b36Smrgkernel= 1535023b3b36Smrgcase $cpu-$vendor in 1536023b3b36Smrg score-*) 1537023b3b36Smrg os=elf 1538023b3b36Smrg ;; 1539023b3b36Smrg spu-*) 1540023b3b36Smrg os=elf 1541023b3b36Smrg ;; 1542023b3b36Smrg *-acorn) 1543023b3b36Smrg os=riscix1.2 1544023b3b36Smrg ;; 1545023b3b36Smrg arm*-rebel) 1546023b3b36Smrg kernel=linux 1547023b3b36Smrg os=gnu 1548023b3b36Smrg ;; 1549023b3b36Smrg arm*-semi) 1550023b3b36Smrg os=aout 1551023b3b36Smrg ;; 1552023b3b36Smrg c4x-* | tic4x-*) 1553023b3b36Smrg os=coff 1554023b3b36Smrg ;; 1555023b3b36Smrg c8051-*) 1556023b3b36Smrg os=elf 1557023b3b36Smrg ;; 1558023b3b36Smrg clipper-intergraph) 1559023b3b36Smrg os=clix 1560023b3b36Smrg ;; 1561023b3b36Smrg hexagon-*) 1562023b3b36Smrg os=elf 1563023b3b36Smrg ;; 1564023b3b36Smrg tic54x-*) 1565023b3b36Smrg os=coff 1566023b3b36Smrg ;; 1567023b3b36Smrg tic55x-*) 1568023b3b36Smrg os=coff 1569023b3b36Smrg ;; 1570023b3b36Smrg tic6x-*) 1571023b3b36Smrg os=coff 1572023b3b36Smrg ;; 1573023b3b36Smrg # This must come before the *-dec entry. 1574023b3b36Smrg pdp10-*) 1575023b3b36Smrg os=tops20 1576023b3b36Smrg ;; 1577023b3b36Smrg pdp11-*) 1578023b3b36Smrg os=none 1579023b3b36Smrg ;; 1580023b3b36Smrg *-dec | vax-*) 1581023b3b36Smrg os=ultrix4.2 1582023b3b36Smrg ;; 1583023b3b36Smrg m68*-apollo) 1584023b3b36Smrg os=domain 1585023b3b36Smrg ;; 1586023b3b36Smrg i386-sun) 1587023b3b36Smrg os=sunos4.0.2 1588023b3b36Smrg ;; 1589023b3b36Smrg m68000-sun) 1590023b3b36Smrg os=sunos3 1591023b3b36Smrg ;; 1592023b3b36Smrg m68*-cisco) 1593023b3b36Smrg os=aout 1594023b3b36Smrg ;; 1595023b3b36Smrg mep-*) 1596023b3b36Smrg os=elf 1597023b3b36Smrg ;; 1598023b3b36Smrg mips*-cisco) 1599023b3b36Smrg os=elf 1600023b3b36Smrg ;; 1601023b3b36Smrg mips*-*) 1602023b3b36Smrg os=elf 1603023b3b36Smrg ;; 1604023b3b36Smrg or32-*) 1605023b3b36Smrg os=coff 1606023b3b36Smrg ;; 1607023b3b36Smrg *-tti) # must be before sparc entry or we get the wrong os. 1608023b3b36Smrg os=sysv3 1609023b3b36Smrg ;; 1610023b3b36Smrg sparc-* | *-sun) 1611023b3b36Smrg os=sunos4.1.1 1612023b3b36Smrg ;; 1613023b3b36Smrg pru-*) 1614023b3b36Smrg os=elf 1615023b3b36Smrg ;; 1616023b3b36Smrg *-be) 1617023b3b36Smrg os=beos 1618023b3b36Smrg ;; 1619023b3b36Smrg *-ibm) 1620023b3b36Smrg os=aix 1621023b3b36Smrg ;; 1622023b3b36Smrg *-knuth) 1623023b3b36Smrg os=mmixware 1624023b3b36Smrg ;; 1625023b3b36Smrg *-wec) 1626023b3b36Smrg os=proelf 1627023b3b36Smrg ;; 1628023b3b36Smrg *-winbond) 1629023b3b36Smrg os=proelf 1630023b3b36Smrg ;; 1631023b3b36Smrg *-oki) 1632023b3b36Smrg os=proelf 1633023b3b36Smrg ;; 1634023b3b36Smrg *-hp) 1635023b3b36Smrg os=hpux 1636023b3b36Smrg ;; 1637023b3b36Smrg *-hitachi) 1638023b3b36Smrg os=hiux 1639023b3b36Smrg ;; 1640023b3b36Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1641023b3b36Smrg os=sysv 1642023b3b36Smrg ;; 1643023b3b36Smrg *-cbm) 1644023b3b36Smrg os=amigaos 1645023b3b36Smrg ;; 1646023b3b36Smrg *-dg) 1647023b3b36Smrg os=dgux 1648023b3b36Smrg ;; 1649023b3b36Smrg *-dolphin) 1650023b3b36Smrg os=sysv3 1651023b3b36Smrg ;; 1652023b3b36Smrg m68k-ccur) 1653023b3b36Smrg os=rtu 1654023b3b36Smrg ;; 1655023b3b36Smrg m88k-omron*) 1656023b3b36Smrg os=luna 1657023b3b36Smrg ;; 1658023b3b36Smrg *-next) 1659023b3b36Smrg os=nextstep 1660023b3b36Smrg ;; 1661023b3b36Smrg *-sequent) 1662023b3b36Smrg os=ptx 1663023b3b36Smrg ;; 1664023b3b36Smrg *-crds) 1665023b3b36Smrg os=unos 1666023b3b36Smrg ;; 1667023b3b36Smrg *-ns) 1668023b3b36Smrg os=genix 1669023b3b36Smrg ;; 1670023b3b36Smrg i370-*) 1671023b3b36Smrg os=mvs 1672023b3b36Smrg ;; 1673023b3b36Smrg *-gould) 1674023b3b36Smrg os=sysv 1675023b3b36Smrg ;; 1676023b3b36Smrg *-highlevel) 1677023b3b36Smrg os=bsd 1678023b3b36Smrg ;; 1679023b3b36Smrg *-encore) 1680023b3b36Smrg os=bsd 1681023b3b36Smrg ;; 1682023b3b36Smrg *-sgi) 1683023b3b36Smrg os=irix 1684023b3b36Smrg ;; 1685023b3b36Smrg *-siemens) 1686023b3b36Smrg os=sysv4 1687023b3b36Smrg ;; 1688023b3b36Smrg *-masscomp) 1689023b3b36Smrg os=rtu 1690023b3b36Smrg ;; 1691023b3b36Smrg f30[01]-fujitsu | f700-fujitsu) 1692023b3b36Smrg os=uxpv 1693023b3b36Smrg ;; 1694023b3b36Smrg *-rom68k) 1695023b3b36Smrg os=coff 1696023b3b36Smrg ;; 1697023b3b36Smrg *-*bug) 1698023b3b36Smrg os=coff 1699023b3b36Smrg ;; 1700023b3b36Smrg *-apple) 1701023b3b36Smrg os=macos 1702023b3b36Smrg ;; 1703023b3b36Smrg *-atari*) 1704023b3b36Smrg os=mint 1705023b3b36Smrg ;; 1706023b3b36Smrg *-wrs) 1707023b3b36Smrg os=vxworks 1708023b3b36Smrg ;; 1709023b3b36Smrg *) 1710023b3b36Smrg os=none 1711023b3b36Smrg ;; 1712023b3b36Smrgesac 1713023b3b36Smrg 1714023b3b36Smrgfi 1715023b3b36Smrg 1716023b3b36Smrg# Now, validate our (potentially fixed-up) OS. 1717023b3b36Smrgcase $os in 1718023b3b36Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1719023b3b36Smrg musl* | newlib* | relibc* | uclibc*) 1720023b3b36Smrg ;; 1721023b3b36Smrg # Likewise for "kernel-abi" 1722023b3b36Smrg eabi* | gnueabi*) 1723023b3b36Smrg ;; 1724023b3b36Smrg # VxWorks passes extra cpu info in the 4th filed. 1725023b3b36Smrg simlinux | simwindows | spe) 1726023b3b36Smrg ;; 1727023b3b36Smrg # Now accept the basic system types. 1728023b3b36Smrg # The portable systems comes first. 1729023b3b36Smrg # Each alternative MUST end in a * to match a version number. 1730023b3b36Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1731023b3b36Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1732023b3b36Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1733023b3b36Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1734023b3b36Smrg | hiux* | abug | nacl* | netware* | windows* \ 1735023b3b36Smrg | os9* | macos* | osx* | ios* \ 1736023b3b36Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1737023b3b36Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1738023b3b36Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1739023b3b36Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1740023b3b36Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1741023b3b36Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1742023b3b36Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1743023b3b36Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1744023b3b36Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1745023b3b36Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1746023b3b36Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1747023b3b36Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1748023b3b36Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1749023b3b36Smrg | midipix* | mingw32* | mingw64* | mint* \ 1750023b3b36Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1751023b3b36Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1752023b3b36Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1753023b3b36Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1754023b3b36Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1755023b3b36Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1756023b3b36Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1757023b3b36Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1758023b3b36Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1759023b3b36Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1760023b3b36Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1761023b3b36Smrg | fiwix* | mlibc* ) 1762023b3b36Smrg ;; 1763023b3b36Smrg # This one is extra strict with allowed versions 1764023b3b36Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1765023b3b36Smrg # Don't forget version if it is 3.2v4 or newer. 1766023b3b36Smrg ;; 1767023b3b36Smrg none) 1768023b3b36Smrg ;; 1769023b3b36Smrg kernel* ) 1770023b3b36Smrg # Restricted further below 1771023b3b36Smrg ;; 1772023b3b36Smrg *) 1773023b3b36Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1774023b3b36Smrg exit 1 1775023b3b36Smrg ;; 1776023b3b36Smrgesac 1777023b3b36Smrg 1778023b3b36Smrg# As a final step for OS-related things, validate the OS-kernel combination 1779023b3b36Smrg# (given a valid OS), if there is a kernel. 1780023b3b36Smrgcase $kernel-$os in 1781023b3b36Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1782023b3b36Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 1783023b3b36Smrg ;; 1784023b3b36Smrg uclinux-uclibc* ) 1785023b3b36Smrg ;; 1786023b3b36Smrg managarm-mlibc* | managarm-kernel* ) 1787023b3b36Smrg ;; 1788023b3b36Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 1789023b3b36Smrg # These are just libc implementations, not actual OSes, and thus 1790023b3b36Smrg # require a kernel. 1791023b3b36Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1792023b3b36Smrg exit 1 1793023b3b36Smrg ;; 1794023b3b36Smrg -kernel* ) 1795023b3b36Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 1796023b3b36Smrg exit 1 1797023b3b36Smrg ;; 1798023b3b36Smrg *-kernel* ) 1799023b3b36Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 1800023b3b36Smrg exit 1 1801023b3b36Smrg ;; 1802023b3b36Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1803023b3b36Smrg ;; 1804023b3b36Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1805023b3b36Smrg ;; 1806023b3b36Smrg nto-qnx*) 1807023b3b36Smrg ;; 1808023b3b36Smrg os2-emx) 1809023b3b36Smrg ;; 1810023b3b36Smrg *-eabi* | *-gnueabi*) 1811023b3b36Smrg ;; 1812023b3b36Smrg -*) 1813023b3b36Smrg # Blank kernel with real OS is always fine. 1814023b3b36Smrg ;; 1815023b3b36Smrg *-*) 1816023b3b36Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1817023b3b36Smrg exit 1 1818023b3b36Smrg ;; 1819023b3b36Smrgesac 1820023b3b36Smrg 1821023b3b36Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1822023b3b36Smrg# manufacturer. We pick the logical manufacturer. 1823023b3b36Smrgcase $vendor in 1824023b3b36Smrg unknown) 1825023b3b36Smrg case $cpu-$os in 1826023b3b36Smrg *-riscix*) 1827023b3b36Smrg vendor=acorn 1828023b3b36Smrg ;; 1829023b3b36Smrg *-sunos*) 1830023b3b36Smrg vendor=sun 1831023b3b36Smrg ;; 1832023b3b36Smrg *-cnk* | *-aix*) 1833023b3b36Smrg vendor=ibm 1834023b3b36Smrg ;; 1835023b3b36Smrg *-beos*) 1836023b3b36Smrg vendor=be 1837023b3b36Smrg ;; 1838023b3b36Smrg *-hpux*) 1839023b3b36Smrg vendor=hp 1840023b3b36Smrg ;; 1841023b3b36Smrg *-mpeix*) 1842023b3b36Smrg vendor=hp 1843023b3b36Smrg ;; 1844023b3b36Smrg *-hiux*) 1845023b3b36Smrg vendor=hitachi 1846023b3b36Smrg ;; 1847023b3b36Smrg *-unos*) 1848023b3b36Smrg vendor=crds 1849023b3b36Smrg ;; 1850023b3b36Smrg *-dgux*) 1851023b3b36Smrg vendor=dg 1852023b3b36Smrg ;; 1853023b3b36Smrg *-luna*) 1854023b3b36Smrg vendor=omron 1855023b3b36Smrg ;; 1856023b3b36Smrg *-genix*) 1857023b3b36Smrg vendor=ns 1858023b3b36Smrg ;; 1859023b3b36Smrg *-clix*) 1860023b3b36Smrg vendor=intergraph 1861023b3b36Smrg ;; 1862023b3b36Smrg *-mvs* | *-opened*) 1863023b3b36Smrg vendor=ibm 1864023b3b36Smrg ;; 1865023b3b36Smrg *-os400*) 1866023b3b36Smrg vendor=ibm 1867023b3b36Smrg ;; 1868023b3b36Smrg s390-* | s390x-*) 1869023b3b36Smrg vendor=ibm 1870023b3b36Smrg ;; 1871023b3b36Smrg *-ptx*) 1872023b3b36Smrg vendor=sequent 1873023b3b36Smrg ;; 1874023b3b36Smrg *-tpf*) 1875023b3b36Smrg vendor=ibm 1876023b3b36Smrg ;; 1877023b3b36Smrg *-vxsim* | *-vxworks* | *-windiss*) 1878023b3b36Smrg vendor=wrs 1879023b3b36Smrg ;; 1880023b3b36Smrg *-aux*) 1881023b3b36Smrg vendor=apple 1882023b3b36Smrg ;; 1883023b3b36Smrg *-hms*) 1884023b3b36Smrg vendor=hitachi 1885023b3b36Smrg ;; 1886023b3b36Smrg *-mpw* | *-macos*) 1887023b3b36Smrg vendor=apple 1888023b3b36Smrg ;; 1889023b3b36Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1890023b3b36Smrg vendor=atari 1891023b3b36Smrg ;; 1892023b3b36Smrg *-vos*) 1893023b3b36Smrg vendor=stratus 1894023b3b36Smrg ;; 1895023b3b36Smrg esac 1896023b3b36Smrg ;; 1897023b3b36Smrgesac 1898023b3b36Smrg 1899023b3b36Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1900023b3b36Smrgexit 1901023b3b36Smrg 1902023b3b36Smrg# Local variables: 1903023b3b36Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1904023b3b36Smrg# time-stamp-start: "timestamp='" 1905023b3b36Smrg# time-stamp-format: "%:y-%02m-%02d" 1906023b3b36Smrg# time-stamp-end: "'" 1907023b3b36Smrg# End: 1908