config.sub revision 273c00b8
1a9a39c43Smrg#! /bin/sh 2a9a39c43Smrg# Configuration validation subroutine script. 3e8340fabSmrg# Copyright 1992-2023 Free Software Foundation, Inc. 4a9a39c43Smrg 5e8340fabSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6e8340fabSmrg 7e8340fabSmrgtimestamp='2023-01-21' 8a9a39c43Smrg 9e1670675Smrg# This file is free software; you can redistribute it and/or modify it 10e1670675Smrg# under the terms of the GNU General Public License as published by 11e8340fabSmrg# the Free Software Foundation, either version 3 of the License, or 12a9a39c43Smrg# (at your option) any later version. 13a9a39c43Smrg# 14e1670675Smrg# This program is distributed in the hope that it will be useful, but 15e1670675Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16e1670675Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17e1670675Smrg# General Public License for more details. 18a9a39c43Smrg# 19a9a39c43Smrg# You should have received a copy of the GNU General Public License 20e1670675Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21a9a39c43Smrg# 22a9a39c43Smrg# As a special exception to the GNU General Public License, if you 23a9a39c43Smrg# distribute this file as part of a program that contains a 24a9a39c43Smrg# configuration script generated by Autoconf, you may include it under 25e1670675Smrg# the same distribution terms that you use for the rest of that 26e1670675Smrg# program. This Exception is an additional permission under section 7 27e1670675Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28a9a39c43Smrg 29a9a39c43Smrg 30e1670675Smrg# Please send patches to <config-patches@gnu.org>. 31a9a39c43Smrg# 32a9a39c43Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33a9a39c43Smrg# Supply the specified configuration type as an argument. 34a9a39c43Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35a9a39c43Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36a9a39c43Smrg 37a376accbSmrg# You can get the latest version of this script from: 38e8340fabSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39a376accbSmrg 40a9a39c43Smrg# This file is supposed to be the same for all GNU packages 41a9a39c43Smrg# and recognize all the CPU types, system types and aliases 42a9a39c43Smrg# that are meaningful with *any* GNU software. 43a9a39c43Smrg# Each package is responsible for reporting which valid configurations 44a9a39c43Smrg# it does not support. The user should be able to distinguish 45a9a39c43Smrg# a failure to support a valid configuration from a meaningless 46a9a39c43Smrg# configuration. 47a9a39c43Smrg 48a9a39c43Smrg# The goal of this file is to map all the various variations of a given 49a9a39c43Smrg# machine specification into a single specification in the form: 50a9a39c43Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51a9a39c43Smrg# or in some cases, the newer four-part form: 52a9a39c43Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53a9a39c43Smrg# It is wrong to echo any other type of specification. 54a9a39c43Smrg 55e8340fabSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 56e8340fabSmrg# about features and limitations of the classic Bourne shell that were 57e8340fabSmrg# superseded or lifted in POSIX. However, this script identifies a wide 58e8340fabSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59e8340fabSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60e8340fabSmrg# have a pre-POSIX /bin/sh. 61e8340fabSmrg 62a9a39c43Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63a9a39c43Smrg 64a9a39c43Smrgusage="\ 65e1670675SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66a9a39c43Smrg 67a9a39c43SmrgCanonicalize a configuration name. 68a9a39c43Smrg 69e1670675SmrgOptions: 70a9a39c43Smrg -h, --help print this help, then exit 71a9a39c43Smrg -t, --time-stamp print date of last modification, then exit 72a9a39c43Smrg -v, --version print version number, then exit 73a9a39c43Smrg 74a9a39c43SmrgReport bugs and patches to <config-patches@gnu.org>." 75a9a39c43Smrg 76a9a39c43Smrgversion="\ 77a9a39c43SmrgGNU config.sub ($timestamp) 78a9a39c43Smrg 79e8340fabSmrgCopyright 1992-2023 Free Software Foundation, Inc. 80a9a39c43Smrg 81a9a39c43SmrgThis is free software; see the source for copying conditions. There is NO 82a9a39c43Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83a9a39c43Smrg 84a9a39c43Smrghelp=" 85a9a39c43SmrgTry \`$me --help' for more information." 86a9a39c43Smrg 87a9a39c43Smrg# Parse command line 88a9a39c43Smrgwhile test $# -gt 0 ; do 89a9a39c43Smrg case $1 in 90a9a39c43Smrg --time-stamp | --time* | -t ) 91a9a39c43Smrg echo "$timestamp" ; exit ;; 92a9a39c43Smrg --version | -v ) 93a9a39c43Smrg echo "$version" ; exit ;; 94a9a39c43Smrg --help | --h* | -h ) 95a9a39c43Smrg echo "$usage"; exit ;; 96a9a39c43Smrg -- ) # Stop option processing 97a9a39c43Smrg shift; break ;; 98a9a39c43Smrg - ) # Use stdin as input. 99a9a39c43Smrg break ;; 100a9a39c43Smrg -* ) 101e8340fabSmrg echo "$me: invalid option $1$help" >&2 102a9a39c43Smrg exit 1 ;; 103a9a39c43Smrg 104a9a39c43Smrg *local*) 105a9a39c43Smrg # First pass through any local machine types. 106e1670675Smrg echo "$1" 107a9a39c43Smrg exit ;; 108a9a39c43Smrg 109a9a39c43Smrg * ) 110a9a39c43Smrg break ;; 111a9a39c43Smrg esac 112a9a39c43Smrgdone 113a9a39c43Smrg 114a9a39c43Smrgcase $# in 115a9a39c43Smrg 0) echo "$me: missing argument$help" >&2 116a9a39c43Smrg exit 1;; 117a9a39c43Smrg 1) ;; 118a9a39c43Smrg *) echo "$me: too many arguments$help" >&2 119a9a39c43Smrg exit 1;; 120a9a39c43Smrgesac 121a9a39c43Smrg 122e8340fabSmrg# Split fields of configuration type 123e8340fabSmrg# shellcheck disable=SC2162 124e8340fabSmrgsaved_IFS=$IFS 125e8340fabSmrgIFS="-" read field1 field2 field3 field4 <<EOF 126e8340fabSmrg$1 127e8340fabSmrgEOF 128e8340fabSmrgIFS=$saved_IFS 129a9a39c43Smrg 130e8340fabSmrg# Separate into logical components for further validation 131e8340fabSmrgcase $1 in 132e8340fabSmrg *-*-*-*-*) 133e8340fabSmrg echo Invalid configuration \`"$1"\': more than four components >&2 134e8340fabSmrg exit 1 135a9a39c43Smrg ;; 136e8340fabSmrg *-*-*-*) 137e8340fabSmrg basic_machine=$field1-$field2 138e8340fabSmrg basic_os=$field3-$field4 139a9a39c43Smrg ;; 140e8340fabSmrg *-*-*) 141e8340fabSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142e8340fabSmrg # parts 143e8340fabSmrg maybe_os=$field2-$field3 144e8340fabSmrg case $maybe_os in 145e8340fabSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 146e8340fabSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147e8340fabSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148e8340fabSmrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 149e8340fabSmrg basic_machine=$field1 150e8340fabSmrg basic_os=$maybe_os 151e8340fabSmrg ;; 152e8340fabSmrg android-linux) 153e8340fabSmrg basic_machine=$field1-unknown 154e8340fabSmrg basic_os=linux-android 155e8340fabSmrg ;; 156e8340fabSmrg *) 157e8340fabSmrg basic_machine=$field1-$field2 158e8340fabSmrg basic_os=$field3 159e8340fabSmrg ;; 160e8340fabSmrg esac 161a9a39c43Smrg ;; 162e8340fabSmrg *-*) 163e8340fabSmrg # A lone config we happen to match not fitting any pattern 164e8340fabSmrg case $field1-$field2 in 165e8340fabSmrg decstation-3100) 166e8340fabSmrg basic_machine=mips-dec 167e8340fabSmrg basic_os= 168e8340fabSmrg ;; 169e8340fabSmrg *-*) 170e8340fabSmrg # Second component is usually, but not always the OS 171e8340fabSmrg case $field2 in 172e8340fabSmrg # Prevent following clause from handling this valid os 173e8340fabSmrg sun*os*) 174e8340fabSmrg basic_machine=$field1 175e8340fabSmrg basic_os=$field2 176e8340fabSmrg ;; 177e8340fabSmrg zephyr*) 178e8340fabSmrg basic_machine=$field1-unknown 179e8340fabSmrg basic_os=$field2 180e8340fabSmrg ;; 181e8340fabSmrg # Manufacturers 182e8340fabSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183e8340fabSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184e8340fabSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185e8340fabSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186e8340fabSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187e8340fabSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188e8340fabSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189e8340fabSmrg | microblaze* | sim | cisco \ 190e8340fabSmrg | oki | wec | wrs | winbond) 191e8340fabSmrg basic_machine=$field1-$field2 192e8340fabSmrg basic_os= 193e8340fabSmrg ;; 194e8340fabSmrg *) 195e8340fabSmrg basic_machine=$field1 196e8340fabSmrg basic_os=$field2 197e8340fabSmrg ;; 198e8340fabSmrg esac 199e8340fabSmrg ;; 200e8340fabSmrg esac 201a9a39c43Smrg ;; 202e8340fabSmrg *) 203e8340fabSmrg # Convert single-component short-hands not valid as part of 204e8340fabSmrg # multi-component configurations. 205e8340fabSmrg case $field1 in 206e8340fabSmrg 386bsd) 207e8340fabSmrg basic_machine=i386-pc 208e8340fabSmrg basic_os=bsd 209e8340fabSmrg ;; 210e8340fabSmrg a29khif) 211e8340fabSmrg basic_machine=a29k-amd 212e8340fabSmrg basic_os=udi 213e8340fabSmrg ;; 214e8340fabSmrg adobe68k) 215e8340fabSmrg basic_machine=m68010-adobe 216e8340fabSmrg basic_os=scout 217e8340fabSmrg ;; 218e8340fabSmrg alliant) 219e8340fabSmrg basic_machine=fx80-alliant 220e8340fabSmrg basic_os= 221e8340fabSmrg ;; 222e8340fabSmrg altos | altos3068) 223e8340fabSmrg basic_machine=m68k-altos 224e8340fabSmrg basic_os= 225e8340fabSmrg ;; 226e8340fabSmrg am29k) 227e8340fabSmrg basic_machine=a29k-none 228e8340fabSmrg basic_os=bsd 229e8340fabSmrg ;; 230e8340fabSmrg amdahl) 231e8340fabSmrg basic_machine=580-amdahl 232e8340fabSmrg basic_os=sysv 233e8340fabSmrg ;; 234e8340fabSmrg amiga) 235e8340fabSmrg basic_machine=m68k-unknown 236e8340fabSmrg basic_os= 237e8340fabSmrg ;; 238e8340fabSmrg amigaos | amigados) 239e8340fabSmrg basic_machine=m68k-unknown 240e8340fabSmrg basic_os=amigaos 241e8340fabSmrg ;; 242e8340fabSmrg amigaunix | amix) 243e8340fabSmrg basic_machine=m68k-unknown 244e8340fabSmrg basic_os=sysv4 245e8340fabSmrg ;; 246e8340fabSmrg apollo68) 247e8340fabSmrg basic_machine=m68k-apollo 248e8340fabSmrg basic_os=sysv 249e8340fabSmrg ;; 250e8340fabSmrg apollo68bsd) 251e8340fabSmrg basic_machine=m68k-apollo 252e8340fabSmrg basic_os=bsd 253e8340fabSmrg ;; 254e8340fabSmrg aros) 255e8340fabSmrg basic_machine=i386-pc 256e8340fabSmrg basic_os=aros 257e8340fabSmrg ;; 258e8340fabSmrg aux) 259e8340fabSmrg basic_machine=m68k-apple 260e8340fabSmrg basic_os=aux 261e8340fabSmrg ;; 262e8340fabSmrg balance) 263e8340fabSmrg basic_machine=ns32k-sequent 264e8340fabSmrg basic_os=dynix 265e8340fabSmrg ;; 266e8340fabSmrg blackfin) 267e8340fabSmrg basic_machine=bfin-unknown 268e8340fabSmrg basic_os=linux 269e8340fabSmrg ;; 270e8340fabSmrg cegcc) 271e8340fabSmrg basic_machine=arm-unknown 272e8340fabSmrg basic_os=cegcc 273e8340fabSmrg ;; 274e8340fabSmrg convex-c1) 275e8340fabSmrg basic_machine=c1-convex 276e8340fabSmrg basic_os=bsd 277e8340fabSmrg ;; 278e8340fabSmrg convex-c2) 279e8340fabSmrg basic_machine=c2-convex 280e8340fabSmrg basic_os=bsd 281e8340fabSmrg ;; 282e8340fabSmrg convex-c32) 283e8340fabSmrg basic_machine=c32-convex 284e8340fabSmrg basic_os=bsd 285e8340fabSmrg ;; 286e8340fabSmrg convex-c34) 287e8340fabSmrg basic_machine=c34-convex 288e8340fabSmrg basic_os=bsd 289e8340fabSmrg ;; 290e8340fabSmrg convex-c38) 291e8340fabSmrg basic_machine=c38-convex 292e8340fabSmrg basic_os=bsd 293e8340fabSmrg ;; 294e8340fabSmrg cray) 295e8340fabSmrg basic_machine=j90-cray 296e8340fabSmrg basic_os=unicos 297e8340fabSmrg ;; 298e8340fabSmrg crds | unos) 299e8340fabSmrg basic_machine=m68k-crds 300e8340fabSmrg basic_os= 301e8340fabSmrg ;; 302e8340fabSmrg da30) 303e8340fabSmrg basic_machine=m68k-da30 304e8340fabSmrg basic_os= 305e8340fabSmrg ;; 306e8340fabSmrg decstation | pmax | pmin | dec3100 | decstatn) 307e8340fabSmrg basic_machine=mips-dec 308e8340fabSmrg basic_os= 309e8340fabSmrg ;; 310e8340fabSmrg delta88) 311e8340fabSmrg basic_machine=m88k-motorola 312e8340fabSmrg basic_os=sysv3 313e8340fabSmrg ;; 314e8340fabSmrg dicos) 315e8340fabSmrg basic_machine=i686-pc 316e8340fabSmrg basic_os=dicos 317e8340fabSmrg ;; 318e8340fabSmrg djgpp) 319e8340fabSmrg basic_machine=i586-pc 320e8340fabSmrg basic_os=msdosdjgpp 321e8340fabSmrg ;; 322e8340fabSmrg ebmon29k) 323e8340fabSmrg basic_machine=a29k-amd 324e8340fabSmrg basic_os=ebmon 325e8340fabSmrg ;; 326e8340fabSmrg es1800 | OSE68k | ose68k | ose | OSE) 327e8340fabSmrg basic_machine=m68k-ericsson 328e8340fabSmrg basic_os=ose 329e8340fabSmrg ;; 330e8340fabSmrg gmicro) 331e8340fabSmrg basic_machine=tron-gmicro 332e8340fabSmrg basic_os=sysv 333e8340fabSmrg ;; 334e8340fabSmrg go32) 335e8340fabSmrg basic_machine=i386-pc 336e8340fabSmrg basic_os=go32 337e8340fabSmrg ;; 338e8340fabSmrg h8300hms) 339e8340fabSmrg basic_machine=h8300-hitachi 340e8340fabSmrg basic_os=hms 341e8340fabSmrg ;; 342e8340fabSmrg h8300xray) 343e8340fabSmrg basic_machine=h8300-hitachi 344e8340fabSmrg basic_os=xray 345e8340fabSmrg ;; 346e8340fabSmrg h8500hms) 347e8340fabSmrg basic_machine=h8500-hitachi 348e8340fabSmrg basic_os=hms 349e8340fabSmrg ;; 350e8340fabSmrg harris) 351e8340fabSmrg basic_machine=m88k-harris 352e8340fabSmrg basic_os=sysv3 353e8340fabSmrg ;; 354e8340fabSmrg hp300 | hp300hpux) 355e8340fabSmrg basic_machine=m68k-hp 356e8340fabSmrg basic_os=hpux 357e8340fabSmrg ;; 358e8340fabSmrg hp300bsd) 359e8340fabSmrg basic_machine=m68k-hp 360e8340fabSmrg basic_os=bsd 361e8340fabSmrg ;; 362e8340fabSmrg hppaosf) 363e8340fabSmrg basic_machine=hppa1.1-hp 364e8340fabSmrg basic_os=osf 365e8340fabSmrg ;; 366e8340fabSmrg hppro) 367e8340fabSmrg basic_machine=hppa1.1-hp 368e8340fabSmrg basic_os=proelf 369e8340fabSmrg ;; 370e8340fabSmrg i386mach) 371e8340fabSmrg basic_machine=i386-mach 372e8340fabSmrg basic_os=mach 373e8340fabSmrg ;; 374e8340fabSmrg isi68 | isi) 375e8340fabSmrg basic_machine=m68k-isi 376e8340fabSmrg basic_os=sysv 377e8340fabSmrg ;; 378e8340fabSmrg m68knommu) 379e8340fabSmrg basic_machine=m68k-unknown 380e8340fabSmrg basic_os=linux 381e8340fabSmrg ;; 382e8340fabSmrg magnum | m3230) 383e8340fabSmrg basic_machine=mips-mips 384e8340fabSmrg basic_os=sysv 385e8340fabSmrg ;; 386e8340fabSmrg merlin) 387e8340fabSmrg basic_machine=ns32k-utek 388e8340fabSmrg basic_os=sysv 389e8340fabSmrg ;; 390e8340fabSmrg mingw64) 391e8340fabSmrg basic_machine=x86_64-pc 392e8340fabSmrg basic_os=mingw64 393e8340fabSmrg ;; 394e8340fabSmrg mingw32) 395e8340fabSmrg basic_machine=i686-pc 396e8340fabSmrg basic_os=mingw32 397e8340fabSmrg ;; 398e8340fabSmrg mingw32ce) 399e8340fabSmrg basic_machine=arm-unknown 400e8340fabSmrg basic_os=mingw32ce 401e8340fabSmrg ;; 402e8340fabSmrg monitor) 403e8340fabSmrg basic_machine=m68k-rom68k 404e8340fabSmrg basic_os=coff 405e8340fabSmrg ;; 406e8340fabSmrg morphos) 407e8340fabSmrg basic_machine=powerpc-unknown 408e8340fabSmrg basic_os=morphos 409e8340fabSmrg ;; 410e8340fabSmrg moxiebox) 411e8340fabSmrg basic_machine=moxie-unknown 412e8340fabSmrg basic_os=moxiebox 413e8340fabSmrg ;; 414e8340fabSmrg msdos) 415e8340fabSmrg basic_machine=i386-pc 416e8340fabSmrg basic_os=msdos 417e8340fabSmrg ;; 418e8340fabSmrg msys) 419e8340fabSmrg basic_machine=i686-pc 420e8340fabSmrg basic_os=msys 421e8340fabSmrg ;; 422e8340fabSmrg mvs) 423e8340fabSmrg basic_machine=i370-ibm 424e8340fabSmrg basic_os=mvs 425e8340fabSmrg ;; 426e8340fabSmrg nacl) 427e8340fabSmrg basic_machine=le32-unknown 428e8340fabSmrg basic_os=nacl 429e8340fabSmrg ;; 430e8340fabSmrg ncr3000) 431e8340fabSmrg basic_machine=i486-ncr 432e8340fabSmrg basic_os=sysv4 433e8340fabSmrg ;; 434e8340fabSmrg netbsd386) 435e8340fabSmrg basic_machine=i386-pc 436e8340fabSmrg basic_os=netbsd 437e8340fabSmrg ;; 438e8340fabSmrg netwinder) 439e8340fabSmrg basic_machine=armv4l-rebel 440e8340fabSmrg basic_os=linux 441e8340fabSmrg ;; 442e8340fabSmrg news | news700 | news800 | news900) 443e8340fabSmrg basic_machine=m68k-sony 444e8340fabSmrg basic_os=newsos 445e8340fabSmrg ;; 446e8340fabSmrg news1000) 447e8340fabSmrg basic_machine=m68030-sony 448e8340fabSmrg basic_os=newsos 449e8340fabSmrg ;; 450e8340fabSmrg necv70) 451e8340fabSmrg basic_machine=v70-nec 452e8340fabSmrg basic_os=sysv 453e8340fabSmrg ;; 454e8340fabSmrg nh3000) 455e8340fabSmrg basic_machine=m68k-harris 456e8340fabSmrg basic_os=cxux 457e8340fabSmrg ;; 458e8340fabSmrg nh[45]000) 459e8340fabSmrg basic_machine=m88k-harris 460e8340fabSmrg basic_os=cxux 461e8340fabSmrg ;; 462e8340fabSmrg nindy960) 463e8340fabSmrg basic_machine=i960-intel 464e8340fabSmrg basic_os=nindy 465e8340fabSmrg ;; 466e8340fabSmrg mon960) 467e8340fabSmrg basic_machine=i960-intel 468e8340fabSmrg basic_os=mon960 469e8340fabSmrg ;; 470e8340fabSmrg nonstopux) 471e8340fabSmrg basic_machine=mips-compaq 472e8340fabSmrg basic_os=nonstopux 473e8340fabSmrg ;; 474e8340fabSmrg os400) 475e8340fabSmrg basic_machine=powerpc-ibm 476e8340fabSmrg basic_os=os400 477e8340fabSmrg ;; 478e8340fabSmrg OSE68000 | ose68000) 479e8340fabSmrg basic_machine=m68000-ericsson 480e8340fabSmrg basic_os=ose 481e8340fabSmrg ;; 482e8340fabSmrg os68k) 483e8340fabSmrg basic_machine=m68k-none 484e8340fabSmrg basic_os=os68k 485e8340fabSmrg ;; 486e8340fabSmrg paragon) 487e8340fabSmrg basic_machine=i860-intel 488e8340fabSmrg basic_os=osf 489e8340fabSmrg ;; 490e8340fabSmrg parisc) 491e8340fabSmrg basic_machine=hppa-unknown 492e8340fabSmrg basic_os=linux 493e8340fabSmrg ;; 494e8340fabSmrg psp) 495e8340fabSmrg basic_machine=mipsallegrexel-sony 496e8340fabSmrg basic_os=psp 497e8340fabSmrg ;; 498e8340fabSmrg pw32) 499e8340fabSmrg basic_machine=i586-unknown 500e8340fabSmrg basic_os=pw32 501e8340fabSmrg ;; 502e8340fabSmrg rdos | rdos64) 503e8340fabSmrg basic_machine=x86_64-pc 504e8340fabSmrg basic_os=rdos 505e8340fabSmrg ;; 506e8340fabSmrg rdos32) 507e8340fabSmrg basic_machine=i386-pc 508e8340fabSmrg basic_os=rdos 509e8340fabSmrg ;; 510e8340fabSmrg rom68k) 511e8340fabSmrg basic_machine=m68k-rom68k 512e8340fabSmrg basic_os=coff 513e8340fabSmrg ;; 514e8340fabSmrg sa29200) 515e8340fabSmrg basic_machine=a29k-amd 516e8340fabSmrg basic_os=udi 517e8340fabSmrg ;; 518e8340fabSmrg sei) 519e8340fabSmrg basic_machine=mips-sei 520e8340fabSmrg basic_os=seiux 521e8340fabSmrg ;; 522e8340fabSmrg sequent) 523e8340fabSmrg basic_machine=i386-sequent 524e8340fabSmrg basic_os= 525e8340fabSmrg ;; 526e8340fabSmrg sps7) 527e8340fabSmrg basic_machine=m68k-bull 528e8340fabSmrg basic_os=sysv2 529e8340fabSmrg ;; 530e8340fabSmrg st2000) 531e8340fabSmrg basic_machine=m68k-tandem 532e8340fabSmrg basic_os= 533e8340fabSmrg ;; 534e8340fabSmrg stratus) 535e8340fabSmrg basic_machine=i860-stratus 536e8340fabSmrg basic_os=sysv4 537e8340fabSmrg ;; 538e8340fabSmrg sun2) 539e8340fabSmrg basic_machine=m68000-sun 540e8340fabSmrg basic_os= 541e8340fabSmrg ;; 542e8340fabSmrg sun2os3) 543e8340fabSmrg basic_machine=m68000-sun 544e8340fabSmrg basic_os=sunos3 545e8340fabSmrg ;; 546e8340fabSmrg sun2os4) 547e8340fabSmrg basic_machine=m68000-sun 548e8340fabSmrg basic_os=sunos4 549e8340fabSmrg ;; 550e8340fabSmrg sun3) 551e8340fabSmrg basic_machine=m68k-sun 552e8340fabSmrg basic_os= 553e8340fabSmrg ;; 554e8340fabSmrg sun3os3) 555e8340fabSmrg basic_machine=m68k-sun 556e8340fabSmrg basic_os=sunos3 557e8340fabSmrg ;; 558e8340fabSmrg sun3os4) 559e8340fabSmrg basic_machine=m68k-sun 560e8340fabSmrg basic_os=sunos4 561e8340fabSmrg ;; 562e8340fabSmrg sun4) 563e8340fabSmrg basic_machine=sparc-sun 564e8340fabSmrg basic_os= 565e8340fabSmrg ;; 566e8340fabSmrg sun4os3) 567e8340fabSmrg basic_machine=sparc-sun 568e8340fabSmrg basic_os=sunos3 569e8340fabSmrg ;; 570e8340fabSmrg sun4os4) 571e8340fabSmrg basic_machine=sparc-sun 572e8340fabSmrg basic_os=sunos4 573e8340fabSmrg ;; 574e8340fabSmrg sun4sol2) 575e8340fabSmrg basic_machine=sparc-sun 576e8340fabSmrg basic_os=solaris2 577e8340fabSmrg ;; 578e8340fabSmrg sun386 | sun386i | roadrunner) 579e8340fabSmrg basic_machine=i386-sun 580e8340fabSmrg basic_os= 581e8340fabSmrg ;; 582e8340fabSmrg sv1) 583e8340fabSmrg basic_machine=sv1-cray 584e8340fabSmrg basic_os=unicos 585e8340fabSmrg ;; 586e8340fabSmrg symmetry) 587e8340fabSmrg basic_machine=i386-sequent 588e8340fabSmrg basic_os=dynix 589e8340fabSmrg ;; 590e8340fabSmrg t3e) 591e8340fabSmrg basic_machine=alphaev5-cray 592e8340fabSmrg basic_os=unicos 593e8340fabSmrg ;; 594e8340fabSmrg t90) 595e8340fabSmrg basic_machine=t90-cray 596e8340fabSmrg basic_os=unicos 597e8340fabSmrg ;; 598e8340fabSmrg toad1) 599e8340fabSmrg basic_machine=pdp10-xkl 600e8340fabSmrg basic_os=tops20 601e8340fabSmrg ;; 602e8340fabSmrg tpf) 603e8340fabSmrg basic_machine=s390x-ibm 604e8340fabSmrg basic_os=tpf 605e8340fabSmrg ;; 606e8340fabSmrg udi29k) 607e8340fabSmrg basic_machine=a29k-amd 608e8340fabSmrg basic_os=udi 609e8340fabSmrg ;; 610e8340fabSmrg ultra3) 611e8340fabSmrg basic_machine=a29k-nyu 612e8340fabSmrg basic_os=sym1 613e8340fabSmrg ;; 614e8340fabSmrg v810 | necv810) 615e8340fabSmrg basic_machine=v810-nec 616e8340fabSmrg basic_os=none 617e8340fabSmrg ;; 618e8340fabSmrg vaxv) 619e8340fabSmrg basic_machine=vax-dec 620e8340fabSmrg basic_os=sysv 621e8340fabSmrg ;; 622e8340fabSmrg vms) 623e8340fabSmrg basic_machine=vax-dec 624e8340fabSmrg basic_os=vms 625e8340fabSmrg ;; 626e8340fabSmrg vsta) 627e8340fabSmrg basic_machine=i386-pc 628e8340fabSmrg basic_os=vsta 629e8340fabSmrg ;; 630e8340fabSmrg vxworks960) 631e8340fabSmrg basic_machine=i960-wrs 632e8340fabSmrg basic_os=vxworks 633e8340fabSmrg ;; 634e8340fabSmrg vxworks68) 635e8340fabSmrg basic_machine=m68k-wrs 636e8340fabSmrg basic_os=vxworks 637e8340fabSmrg ;; 638e8340fabSmrg vxworks29k) 639e8340fabSmrg basic_machine=a29k-wrs 640e8340fabSmrg basic_os=vxworks 641e8340fabSmrg ;; 642e8340fabSmrg xbox) 643e8340fabSmrg basic_machine=i686-pc 644e8340fabSmrg basic_os=mingw32 645e8340fabSmrg ;; 646e8340fabSmrg ymp) 647e8340fabSmrg basic_machine=ymp-cray 648e8340fabSmrg basic_os=unicos 649e8340fabSmrg ;; 650e8340fabSmrg *) 651e8340fabSmrg basic_machine=$1 652e8340fabSmrg basic_os= 653e8340fabSmrg ;; 654e8340fabSmrg esac 655a9a39c43Smrg ;; 656a9a39c43Smrgesac 657a9a39c43Smrg 658e8340fabSmrg# Decode 1-component or ad-hoc basic machines 659a9a39c43Smrgcase $basic_machine in 660e8340fabSmrg # Here we handle the default manufacturer of certain CPU types. It is in 661e8340fabSmrg # some cases the only manufacturer, in others, it is the most popular. 662e8340fabSmrg w89k) 663e8340fabSmrg cpu=hppa1.1 664e8340fabSmrg vendor=winbond 665a9a39c43Smrg ;; 666e8340fabSmrg op50n) 667e8340fabSmrg cpu=hppa1.1 668e8340fabSmrg vendor=oki 669a9a39c43Smrg ;; 670e8340fabSmrg op60c) 671e8340fabSmrg cpu=hppa1.1 672e8340fabSmrg vendor=oki 673a9a39c43Smrg ;; 674e8340fabSmrg ibm*) 675e8340fabSmrg cpu=i370 676e8340fabSmrg vendor=ibm 677e1670675Smrg ;; 678e8340fabSmrg orion105) 679e8340fabSmrg cpu=clipper 680e8340fabSmrg vendor=highlevel 681e1670675Smrg ;; 682e8340fabSmrg mac | mpw | mac-mpw) 683e8340fabSmrg cpu=m68k 684e8340fabSmrg vendor=apple 685e1670675Smrg ;; 686e8340fabSmrg pmac | pmac-mpw) 687e8340fabSmrg cpu=powerpc 688e8340fabSmrg vendor=apple 689e1670675Smrg ;; 690e1670675Smrg 691a9a39c43Smrg # Recognize the various machine names and aliases which stand 692a9a39c43Smrg # for a CPU type and a company and sometimes even an OS. 693a9a39c43Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694e8340fabSmrg cpu=m68000 695e8340fabSmrg vendor=att 696a9a39c43Smrg ;; 697a9a39c43Smrg 3b*) 698e8340fabSmrg cpu=we32k 699e8340fabSmrg vendor=att 700a9a39c43Smrg ;; 701a376accbSmrg bluegene*) 702e8340fabSmrg cpu=powerpc 703e8340fabSmrg vendor=ibm 704e8340fabSmrg basic_os=cnk 705a9a39c43Smrg ;; 706a9a39c43Smrg decsystem10* | dec10*) 707e8340fabSmrg cpu=pdp10 708e8340fabSmrg vendor=dec 709e8340fabSmrg basic_os=tops10 710a9a39c43Smrg ;; 711a9a39c43Smrg decsystem20* | dec20*) 712e8340fabSmrg cpu=pdp10 713e8340fabSmrg vendor=dec 714e8340fabSmrg basic_os=tops20 715a9a39c43Smrg ;; 716a9a39c43Smrg delta | 3300 | motorola-3300 | motorola-delta \ 717a9a39c43Smrg | 3300-motorola | delta-motorola) 718e8340fabSmrg cpu=m68k 719e8340fabSmrg vendor=motorola 720a9a39c43Smrg ;; 721e1670675Smrg dpx2*) 722e8340fabSmrg cpu=m68k 723e8340fabSmrg vendor=bull 724e8340fabSmrg basic_os=sysv3 725a9a39c43Smrg ;; 726a9a39c43Smrg encore | umax | mmax) 727e8340fabSmrg cpu=ns32k 728e8340fabSmrg vendor=encore 729a9a39c43Smrg ;; 730e8340fabSmrg elxsi) 731e8340fabSmrg cpu=elxsi 732e8340fabSmrg vendor=elxsi 733e8340fabSmrg basic_os=${basic_os:-bsd} 734a9a39c43Smrg ;; 735a9a39c43Smrg fx2800) 736e8340fabSmrg cpu=i860 737e8340fabSmrg vendor=alliant 738a9a39c43Smrg ;; 739a9a39c43Smrg genix) 740e8340fabSmrg cpu=ns32k 741e8340fabSmrg vendor=ns 742a9a39c43Smrg ;; 743a9a39c43Smrg h3050r* | hiux*) 744e8340fabSmrg cpu=hppa1.1 745e8340fabSmrg vendor=hitachi 746e8340fabSmrg basic_os=hiuxwe2 747a9a39c43Smrg ;; 748a9a39c43Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749e8340fabSmrg cpu=hppa1.0 750e8340fabSmrg vendor=hp 751a9a39c43Smrg ;; 752a9a39c43Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753e8340fabSmrg cpu=m68000 754e8340fabSmrg vendor=hp 755a9a39c43Smrg ;; 756a9a39c43Smrg hp9k3[2-9][0-9]) 757e8340fabSmrg cpu=m68k 758e8340fabSmrg vendor=hp 759a9a39c43Smrg ;; 760a9a39c43Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761e8340fabSmrg cpu=hppa1.0 762e8340fabSmrg vendor=hp 763a9a39c43Smrg ;; 764a9a39c43Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765e8340fabSmrg cpu=hppa1.1 766e8340fabSmrg vendor=hp 767a9a39c43Smrg ;; 768a9a39c43Smrg hp9k78[0-9] | hp78[0-9]) 769a9a39c43Smrg # FIXME: really hppa2.0-hp 770e8340fabSmrg cpu=hppa1.1 771e8340fabSmrg vendor=hp 772a9a39c43Smrg ;; 773a9a39c43Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774a9a39c43Smrg # FIXME: really hppa2.0-hp 775e8340fabSmrg cpu=hppa1.1 776e8340fabSmrg vendor=hp 777a9a39c43Smrg ;; 778a9a39c43Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779e8340fabSmrg cpu=hppa1.1 780e8340fabSmrg vendor=hp 781a9a39c43Smrg ;; 782a9a39c43Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783e8340fabSmrg cpu=hppa1.0 784e8340fabSmrg vendor=hp 785a9a39c43Smrg ;; 786a9a39c43Smrg i*86v32) 787e8340fabSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788e8340fabSmrg vendor=pc 789e8340fabSmrg basic_os=sysv32 790a9a39c43Smrg ;; 791a9a39c43Smrg i*86v4*) 792e8340fabSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793e8340fabSmrg vendor=pc 794e8340fabSmrg basic_os=sysv4 795a9a39c43Smrg ;; 796a9a39c43Smrg i*86v) 797e8340fabSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798e8340fabSmrg vendor=pc 799e8340fabSmrg basic_os=sysv 800a9a39c43Smrg ;; 801a9a39c43Smrg i*86sol2) 802e8340fabSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803e8340fabSmrg vendor=pc 804e8340fabSmrg basic_os=solaris2 805a9a39c43Smrg ;; 806e8340fabSmrg j90 | j90-cray) 807e8340fabSmrg cpu=j90 808e8340fabSmrg vendor=cray 809e8340fabSmrg basic_os=${basic_os:-unicos} 810a9a39c43Smrg ;; 811a9a39c43Smrg iris | iris4d) 812e8340fabSmrg cpu=mips 813e8340fabSmrg vendor=sgi 814e8340fabSmrg case $basic_os in 815e8340fabSmrg irix*) 816a9a39c43Smrg ;; 817a9a39c43Smrg *) 818e8340fabSmrg basic_os=irix4 819a9a39c43Smrg ;; 820a9a39c43Smrg esac 821a9a39c43Smrg ;; 822a9a39c43Smrg miniframe) 823e8340fabSmrg cpu=m68000 824e8340fabSmrg vendor=convergent 825a9a39c43Smrg ;; 826e8340fabSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827e8340fabSmrg cpu=m68k 828e8340fabSmrg vendor=atari 829e8340fabSmrg basic_os=mint 830a9a39c43Smrg ;; 831a9a39c43Smrg news-3600 | risc-news) 832e8340fabSmrg cpu=mips 833e8340fabSmrg vendor=sony 834e8340fabSmrg basic_os=newsos 835a9a39c43Smrg ;; 836e1670675Smrg next | m*-next) 837e8340fabSmrg cpu=m68k 838e8340fabSmrg vendor=next 839e8340fabSmrg case $basic_os in 840e8340fabSmrg openstep*) 841e8340fabSmrg ;; 842e8340fabSmrg nextstep*) 843a9a39c43Smrg ;; 844e8340fabSmrg ns2*) 845e8340fabSmrg basic_os=nextstep2 846a9a39c43Smrg ;; 847a9a39c43Smrg *) 848e8340fabSmrg basic_os=nextstep3 849a9a39c43Smrg ;; 850a9a39c43Smrg esac 851a9a39c43Smrg ;; 852a9a39c43Smrg np1) 853e8340fabSmrg cpu=np1 854e8340fabSmrg vendor=gould 855e1670675Smrg ;; 856a9a39c43Smrg op50n-* | op60c-*) 857e8340fabSmrg cpu=hppa1.1 858e8340fabSmrg vendor=oki 859e8340fabSmrg basic_os=proelf 860a9a39c43Smrg ;; 861a9a39c43Smrg pa-hitachi) 862e8340fabSmrg cpu=hppa1.1 863e8340fabSmrg vendor=hitachi 864e8340fabSmrg basic_os=hiuxwe2 865a9a39c43Smrg ;; 866a9a39c43Smrg pbd) 867e8340fabSmrg cpu=sparc 868e8340fabSmrg vendor=tti 869a9a39c43Smrg ;; 870a9a39c43Smrg pbb) 871e8340fabSmrg cpu=m68k 872e8340fabSmrg vendor=tti 873a9a39c43Smrg ;; 874e8340fabSmrg pc532) 875e8340fabSmrg cpu=ns32k 876e8340fabSmrg vendor=pc532 877a9a39c43Smrg ;; 878a9a39c43Smrg pn) 879e8340fabSmrg cpu=pn 880e8340fabSmrg vendor=gould 881a9a39c43Smrg ;; 882e8340fabSmrg power) 883e8340fabSmrg cpu=power 884e8340fabSmrg vendor=ibm 885a9a39c43Smrg ;; 886e8340fabSmrg ps2) 887e8340fabSmrg cpu=i386 888e8340fabSmrg vendor=ibm 889a9a39c43Smrg ;; 890e8340fabSmrg rm[46]00) 891e8340fabSmrg cpu=mips 892e8340fabSmrg vendor=siemens 893a9a39c43Smrg ;; 894e8340fabSmrg rtpc | rtpc-*) 895e8340fabSmrg cpu=romp 896e8340fabSmrg vendor=ibm 897a9a39c43Smrg ;; 898e8340fabSmrg sde) 899e8340fabSmrg cpu=mipsisa32 900e8340fabSmrg vendor=sde 901e8340fabSmrg basic_os=${basic_os:-elf} 902a9a39c43Smrg ;; 903e8340fabSmrg simso-wrs) 904e8340fabSmrg cpu=sparclite 905e8340fabSmrg vendor=wrs 906e8340fabSmrg basic_os=vxworks 907a9a39c43Smrg ;; 908e8340fabSmrg tower | tower-32) 909e8340fabSmrg cpu=m68k 910e8340fabSmrg vendor=ncr 911a9a39c43Smrg ;; 912e8340fabSmrg vpp*|vx|vx-*) 913e8340fabSmrg cpu=f301 914e8340fabSmrg vendor=fujitsu 915a9a39c43Smrg ;; 916e8340fabSmrg w65) 917e8340fabSmrg cpu=w65 918e8340fabSmrg vendor=wdc 919e1670675Smrg ;; 920e8340fabSmrg w89k-*) 921e8340fabSmrg cpu=hppa1.1 922e8340fabSmrg vendor=winbond 923e8340fabSmrg basic_os=proelf 924a9a39c43Smrg ;; 925e8340fabSmrg none) 926e8340fabSmrg cpu=none 927e8340fabSmrg vendor=none 928a9a39c43Smrg ;; 929e8340fabSmrg leon|leon[3-9]) 930e8340fabSmrg cpu=sparc 931e8340fabSmrg vendor=$basic_machine 932a9a39c43Smrg ;; 933e8340fabSmrg leon-*|leon[3-9]-*) 934e8340fabSmrg cpu=sparc 935e8340fabSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936a9a39c43Smrg ;; 937e8340fabSmrg 938e8340fabSmrg *-*) 939e8340fabSmrg # shellcheck disable=SC2162 940e8340fabSmrg saved_IFS=$IFS 941e8340fabSmrg IFS="-" read cpu vendor <<EOF 942e8340fabSmrg$basic_machine 943e8340fabSmrgEOF 944e8340fabSmrg IFS=$saved_IFS 945a9a39c43Smrg ;; 946e8340fabSmrg # We use `pc' rather than `unknown' 947e8340fabSmrg # because (1) that's what they normally are, and 948e8340fabSmrg # (2) the word "unknown" tends to confuse beginning users. 949e8340fabSmrg i*86 | x86_64) 950e8340fabSmrg cpu=$basic_machine 951e8340fabSmrg vendor=pc 952a9a39c43Smrg ;; 953e8340fabSmrg # These rules are duplicated from below for sake of the special case above; 954e8340fabSmrg # i.e. things that normalized to x86 arches should also default to "pc" 955e8340fabSmrg pc98) 956e8340fabSmrg cpu=i386 957e8340fabSmrg vendor=pc 958a9a39c43Smrg ;; 959e8340fabSmrg x64 | amd64) 960e8340fabSmrg cpu=x86_64 961e8340fabSmrg vendor=pc 962a9a39c43Smrg ;; 963e8340fabSmrg # Recognize the basic CPU types without company name. 964e8340fabSmrg *) 965e8340fabSmrg cpu=$basic_machine 966e8340fabSmrg vendor=unknown 967a9a39c43Smrg ;; 968e8340fabSmrgesac 969e8340fabSmrg 970e8340fabSmrgunset -v basic_machine 971e8340fabSmrg 972e8340fabSmrg# Decode basic machines in the full and proper CPU-Company form. 973e8340fabSmrgcase $cpu-$vendor in 974e8340fabSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975e8340fabSmrg # some cases the only manufacturer, in others, it is the most popular. 976e8340fabSmrg craynv-unknown) 977e8340fabSmrg vendor=cray 978e8340fabSmrg basic_os=${basic_os:-unicosmp} 979a9a39c43Smrg ;; 980e8340fabSmrg c90-unknown | c90-cray) 981e8340fabSmrg vendor=cray 982e8340fabSmrg basic_os=${Basic_os:-unicos} 983a9a39c43Smrg ;; 984e8340fabSmrg fx80-unknown) 985e8340fabSmrg vendor=alliant 986a9a39c43Smrg ;; 987e8340fabSmrg romp-unknown) 988e8340fabSmrg vendor=ibm 989a9a39c43Smrg ;; 990e8340fabSmrg mmix-unknown) 991e8340fabSmrg vendor=knuth 992a9a39c43Smrg ;; 993e8340fabSmrg microblaze-unknown | microblazeel-unknown) 994e8340fabSmrg vendor=xilinx 995a9a39c43Smrg ;; 996e8340fabSmrg rs6000-unknown) 997e8340fabSmrg vendor=ibm 998a9a39c43Smrg ;; 999e8340fabSmrg vax-unknown) 1000e8340fabSmrg vendor=dec 1001a9a39c43Smrg ;; 1002e8340fabSmrg pdp11-unknown) 1003e8340fabSmrg vendor=dec 1004a9a39c43Smrg ;; 1005e8340fabSmrg we32k-unknown) 1006e8340fabSmrg vendor=att 1007e1670675Smrg ;; 1008e8340fabSmrg cydra-unknown) 1009e8340fabSmrg vendor=cydrome 1010a9a39c43Smrg ;; 1011e8340fabSmrg i370-ibm*) 1012e8340fabSmrg vendor=ibm 1013a9a39c43Smrg ;; 1014e8340fabSmrg orion-unknown) 1015e8340fabSmrg vendor=highlevel 1016a9a39c43Smrg ;; 1017e8340fabSmrg xps-unknown | xps100-unknown) 1018e8340fabSmrg cpu=xps100 1019e8340fabSmrg vendor=honeywell 1020a9a39c43Smrg ;; 1021e8340fabSmrg 1022e8340fabSmrg # Here we normalize CPU types with a missing or matching vendor 1023e8340fabSmrg armh-unknown | armh-alt) 1024e8340fabSmrg cpu=armv7l 1025e8340fabSmrg vendor=alt 1026e8340fabSmrg basic_os=${basic_os:-linux-gnueabihf} 1027a9a39c43Smrg ;; 1028e8340fabSmrg dpx20-unknown | dpx20-bull) 1029e8340fabSmrg cpu=rs6000 1030e8340fabSmrg vendor=bull 1031e8340fabSmrg basic_os=${basic_os:-bosx} 1032a9a39c43Smrg ;; 1033e8340fabSmrg 1034e8340fabSmrg # Here we normalize CPU types irrespective of the vendor 1035e8340fabSmrg amd64-*) 1036e8340fabSmrg cpu=x86_64 1037a9a39c43Smrg ;; 1038e8340fabSmrg blackfin-*) 1039e8340fabSmrg cpu=bfin 1040e8340fabSmrg basic_os=linux 1041a9a39c43Smrg ;; 1042e8340fabSmrg c54x-*) 1043e8340fabSmrg cpu=tic54x 1044a9a39c43Smrg ;; 1045e8340fabSmrg c55x-*) 1046e8340fabSmrg cpu=tic55x 1047a9a39c43Smrg ;; 1048e8340fabSmrg c6x-*) 1049e8340fabSmrg cpu=tic6x 1050a9a39c43Smrg ;; 1051e8340fabSmrg e500v[12]-*) 1052e8340fabSmrg cpu=powerpc 1053e8340fabSmrg basic_os=${basic_os}"spe" 1054a9a39c43Smrg ;; 1055e8340fabSmrg mips3*-*) 1056e8340fabSmrg cpu=mips64 1057a9a39c43Smrg ;; 1058e8340fabSmrg ms1-*) 1059e8340fabSmrg cpu=mt 1060a9a39c43Smrg ;; 1061e8340fabSmrg m68knommu-*) 1062e8340fabSmrg cpu=m68k 1063e8340fabSmrg basic_os=linux 1064a9a39c43Smrg ;; 1065e8340fabSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1066e8340fabSmrg cpu=s12z 1067a9a39c43Smrg ;; 1068e8340fabSmrg openrisc-*) 1069e8340fabSmrg cpu=or32 1070a9a39c43Smrg ;; 1071e8340fabSmrg parisc-*) 1072e8340fabSmrg cpu=hppa 1073e8340fabSmrg basic_os=linux 1074a9a39c43Smrg ;; 1075e8340fabSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1076e8340fabSmrg cpu=i586 1077a9a39c43Smrg ;; 1078e8340fabSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1079e8340fabSmrg cpu=i686 1080a9a39c43Smrg ;; 1081e8340fabSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1082e8340fabSmrg cpu=i686 1083a9a39c43Smrg ;; 1084e8340fabSmrg pentium4-*) 1085e8340fabSmrg cpu=i786 1086a9a39c43Smrg ;; 1087e8340fabSmrg pc98-*) 1088e8340fabSmrg cpu=i386 1089a9a39c43Smrg ;; 1090e8340fabSmrg ppc-* | ppcbe-*) 1091e8340fabSmrg cpu=powerpc 1092a9a39c43Smrg ;; 1093e8340fabSmrg ppcle-* | powerpclittle-*) 1094e8340fabSmrg cpu=powerpcle 1095a9a39c43Smrg ;; 1096e8340fabSmrg ppc64-*) 1097e8340fabSmrg cpu=powerpc64 1098a9a39c43Smrg ;; 1099e8340fabSmrg ppc64le-* | powerpc64little-*) 1100e8340fabSmrg cpu=powerpc64le 1101a9a39c43Smrg ;; 1102e8340fabSmrg sb1-*) 1103e8340fabSmrg cpu=mipsisa64sb1 1104a9a39c43Smrg ;; 1105e8340fabSmrg sb1el-*) 1106e8340fabSmrg cpu=mipsisa64sb1el 1107a9a39c43Smrg ;; 1108e8340fabSmrg sh5e[lb]-*) 1109e8340fabSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1110a9a39c43Smrg ;; 1111e8340fabSmrg spur-*) 1112e8340fabSmrg cpu=spur 1113a9a39c43Smrg ;; 1114e8340fabSmrg strongarm-* | thumb-*) 1115e8340fabSmrg cpu=arm 1116a9a39c43Smrg ;; 1117e8340fabSmrg tx39-*) 1118e8340fabSmrg cpu=mipstx39 1119e1670675Smrg ;; 1120e8340fabSmrg tx39el-*) 1121e8340fabSmrg cpu=mipstx39el 1122a9a39c43Smrg ;; 1123e8340fabSmrg x64-*) 1124e8340fabSmrg cpu=x86_64 1125a9a39c43Smrg ;; 1126e1670675Smrg xscale-* | xscalee[bl]-*) 1127e8340fabSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1128a9a39c43Smrg ;; 1129e8340fabSmrg arm64-* | aarch64le-*) 1130e8340fabSmrg cpu=aarch64 1131a9a39c43Smrg ;; 1132a9a39c43Smrg 1133e8340fabSmrg # Recognize the canonical CPU Types that limit and/or modify the 1134e8340fabSmrg # company names they are paired with. 1135e8340fabSmrg cr16-*) 1136e8340fabSmrg basic_os=${basic_os:-elf} 1137a9a39c43Smrg ;; 1138e8340fabSmrg crisv32-* | etraxfs*-*) 1139e8340fabSmrg cpu=crisv32 1140e8340fabSmrg vendor=axis 1141a9a39c43Smrg ;; 1142e8340fabSmrg cris-* | etrax*-*) 1143e8340fabSmrg cpu=cris 1144e8340fabSmrg vendor=axis 1145a9a39c43Smrg ;; 1146e8340fabSmrg crx-*) 1147e8340fabSmrg basic_os=${basic_os:-elf} 1148a9a39c43Smrg ;; 1149e8340fabSmrg neo-tandem) 1150e8340fabSmrg cpu=neo 1151e8340fabSmrg vendor=tandem 1152a9a39c43Smrg ;; 1153e8340fabSmrg nse-tandem) 1154e8340fabSmrg cpu=nse 1155e8340fabSmrg vendor=tandem 1156a9a39c43Smrg ;; 1157e8340fabSmrg nsr-tandem) 1158e8340fabSmrg cpu=nsr 1159e8340fabSmrg vendor=tandem 1160a9a39c43Smrg ;; 1161e8340fabSmrg nsv-tandem) 1162e8340fabSmrg cpu=nsv 1163e8340fabSmrg vendor=tandem 1164a9a39c43Smrg ;; 1165e8340fabSmrg nsx-tandem) 1166e8340fabSmrg cpu=nsx 1167e8340fabSmrg vendor=tandem 1168a9a39c43Smrg ;; 1169e8340fabSmrg mipsallegrexel-sony) 1170e8340fabSmrg cpu=mipsallegrexel 1171e8340fabSmrg vendor=sony 1172a9a39c43Smrg ;; 1173e8340fabSmrg tile*-*) 1174e8340fabSmrg basic_os=${basic_os:-linux-gnu} 1175a9a39c43Smrg ;; 1176e8340fabSmrg 1177a9a39c43Smrg *) 1178e8340fabSmrg # Recognize the canonical CPU types that are allowed with any 1179e8340fabSmrg # company name. 1180e8340fabSmrg case $cpu in 1181e8340fabSmrg 1750a | 580 \ 1182e8340fabSmrg | a29k \ 1183e8340fabSmrg | aarch64 | aarch64_be \ 1184e8340fabSmrg | abacus \ 1185e8340fabSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1186e8340fabSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1187e8340fabSmrg | alphapca5[67] | alpha64pca5[67] \ 1188e8340fabSmrg | am33_2.0 \ 1189e8340fabSmrg | amdgcn \ 1190e8340fabSmrg | arc | arceb | arc32 | arc64 \ 1191e8340fabSmrg | arm | arm[lb]e | arme[lb] | armv* \ 1192e8340fabSmrg | avr | avr32 \ 1193e8340fabSmrg | asmjs \ 1194e8340fabSmrg | ba \ 1195e8340fabSmrg | be32 | be64 \ 1196e8340fabSmrg | bfin | bpf | bs2000 \ 1197e8340fabSmrg | c[123]* | c30 | [cjt]90 | c4x \ 1198e8340fabSmrg | c8051 | clipper | craynv | csky | cydra \ 1199e8340fabSmrg | d10v | d30v | dlx | dsp16xx \ 1200e8340fabSmrg | e2k | elxsi | epiphany \ 1201e8340fabSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1202e8340fabSmrg | h8300 | h8500 \ 1203e8340fabSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1204e8340fabSmrg | hexagon \ 1205e8340fabSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1206e8340fabSmrg | ip2k | iq2000 \ 1207e8340fabSmrg | k1om \ 1208e8340fabSmrg | le32 | le64 \ 1209e8340fabSmrg | lm32 \ 1210e8340fabSmrg | loongarch32 | loongarch64 \ 1211e8340fabSmrg | m32c | m32r | m32rle \ 1212e8340fabSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1213e8340fabSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1214e8340fabSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1215e8340fabSmrg | microblaze | microblazeel \ 1216e8340fabSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1217e8340fabSmrg | mips16 \ 1218e8340fabSmrg | mips64 | mips64eb | mips64el \ 1219e8340fabSmrg | mips64octeon | mips64octeonel \ 1220e8340fabSmrg | mips64orion | mips64orionel \ 1221e8340fabSmrg | mips64r5900 | mips64r5900el \ 1222e8340fabSmrg | mips64vr | mips64vrel \ 1223e8340fabSmrg | mips64vr4100 | mips64vr4100el \ 1224e8340fabSmrg | mips64vr4300 | mips64vr4300el \ 1225e8340fabSmrg | mips64vr5000 | mips64vr5000el \ 1226e8340fabSmrg | mips64vr5900 | mips64vr5900el \ 1227e8340fabSmrg | mipsisa32 | mipsisa32el \ 1228e8340fabSmrg | mipsisa32r2 | mipsisa32r2el \ 1229e8340fabSmrg | mipsisa32r3 | mipsisa32r3el \ 1230e8340fabSmrg | mipsisa32r5 | mipsisa32r5el \ 1231e8340fabSmrg | mipsisa32r6 | mipsisa32r6el \ 1232e8340fabSmrg | mipsisa64 | mipsisa64el \ 1233e8340fabSmrg | mipsisa64r2 | mipsisa64r2el \ 1234e8340fabSmrg | mipsisa64r3 | mipsisa64r3el \ 1235e8340fabSmrg | mipsisa64r5 | mipsisa64r5el \ 1236e8340fabSmrg | mipsisa64r6 | mipsisa64r6el \ 1237e8340fabSmrg | mipsisa64sb1 | mipsisa64sb1el \ 1238e8340fabSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 1239e8340fabSmrg | mipsr5900 | mipsr5900el \ 1240e8340fabSmrg | mipstx39 | mipstx39el \ 1241e8340fabSmrg | mmix \ 1242e8340fabSmrg | mn10200 | mn10300 \ 1243e8340fabSmrg | moxie \ 1244e8340fabSmrg | mt \ 1245e8340fabSmrg | msp430 \ 1246e8340fabSmrg | nds32 | nds32le | nds32be \ 1247e8340fabSmrg | nfp \ 1248e8340fabSmrg | nios | nios2 | nios2eb | nios2el \ 1249e8340fabSmrg | none | np1 | ns16k | ns32k | nvptx \ 1250e8340fabSmrg | open8 \ 1251e8340fabSmrg | or1k* \ 1252e8340fabSmrg | or32 \ 1253e8340fabSmrg | orion \ 1254e8340fabSmrg | picochip \ 1255e8340fabSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1256e8340fabSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1257e8340fabSmrg | pru \ 1258e8340fabSmrg | pyramid \ 1259e8340fabSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1260e8340fabSmrg | rl78 | romp | rs6000 | rx \ 1261e8340fabSmrg | s390 | s390x \ 1262e8340fabSmrg | score \ 1263e8340fabSmrg | sh | shl \ 1264e8340fabSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1265e8340fabSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1266e8340fabSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1267e8340fabSmrg | sparclite \ 1268e8340fabSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1269e8340fabSmrg | spu \ 1270e8340fabSmrg | tahoe \ 1271e8340fabSmrg | thumbv7* \ 1272e8340fabSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1273e8340fabSmrg | tron \ 1274e8340fabSmrg | ubicom32 \ 1275e8340fabSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1276e8340fabSmrg | vax \ 1277e8340fabSmrg | visium \ 1278e8340fabSmrg | w65 \ 1279e8340fabSmrg | wasm32 | wasm64 \ 1280e8340fabSmrg | we32k \ 1281e8340fabSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1282e8340fabSmrg | xstormy16 | xtensa* \ 1283e8340fabSmrg | ymp \ 1284e8340fabSmrg | z8k | z80) 1285e8340fabSmrg ;; 1286e8340fabSmrg 1287e8340fabSmrg *) 1288e8340fabSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1289e8340fabSmrg exit 1 1290e8340fabSmrg ;; 1291e8340fabSmrg esac 1292a9a39c43Smrg ;; 1293a9a39c43Smrgesac 1294a9a39c43Smrg 1295a9a39c43Smrg# Here we canonicalize certain aliases for manufacturers. 1296e8340fabSmrgcase $vendor in 1297e8340fabSmrg digital*) 1298e8340fabSmrg vendor=dec 1299a9a39c43Smrg ;; 1300e8340fabSmrg commodore*) 1301e8340fabSmrg vendor=cbm 1302a9a39c43Smrg ;; 1303a9a39c43Smrg *) 1304a9a39c43Smrg ;; 1305a9a39c43Smrgesac 1306a9a39c43Smrg 1307a9a39c43Smrg# Decode manufacturer-specific aliases for certain operating systems. 1308a9a39c43Smrg 1309e8340fabSmrgif test x$basic_os != x 1310a9a39c43Smrgthen 1311e8340fabSmrg 1312e8340fabSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1313e8340fabSmrg# set os. 1314e8340fabSmrgcase $basic_os in 1315e8340fabSmrg gnu/linux*) 1316e8340fabSmrg kernel=linux 1317e8340fabSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1318e8340fabSmrg ;; 1319e8340fabSmrg os2-emx) 1320e8340fabSmrg kernel=os2 1321e8340fabSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1322e8340fabSmrg ;; 1323e8340fabSmrg nto-qnx*) 1324e8340fabSmrg kernel=nto 1325e8340fabSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1326e8340fabSmrg ;; 1327e8340fabSmrg *-*) 1328e8340fabSmrg # shellcheck disable=SC2162 1329e8340fabSmrg saved_IFS=$IFS 1330e8340fabSmrg IFS="-" read kernel os <<EOF 1331e8340fabSmrg$basic_os 1332e8340fabSmrgEOF 1333e8340fabSmrg IFS=$saved_IFS 1334e8340fabSmrg ;; 1335e8340fabSmrg # Default OS when just kernel was specified 1336e8340fabSmrg nto*) 1337e8340fabSmrg kernel=nto 1338e8340fabSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1339e8340fabSmrg ;; 1340e8340fabSmrg linux*) 1341e8340fabSmrg kernel=linux 1342e8340fabSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1343e8340fabSmrg ;; 1344e8340fabSmrg managarm*) 1345e8340fabSmrg kernel=managarm 1346e8340fabSmrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1347e8340fabSmrg ;; 1348e8340fabSmrg *) 1349e8340fabSmrg kernel= 1350e8340fabSmrg os=$basic_os 1351e8340fabSmrg ;; 1352e8340fabSmrgesac 1353e8340fabSmrg 1354e8340fabSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1355e8340fabSmrg# etc.) 1356a9a39c43Smrgcase $os in 1357e1670675Smrg # First match some system type aliases that might get confused 1358e1670675Smrg # with valid system types. 1359e8340fabSmrg # solaris* is a basic system type, with this one exception. 1360e8340fabSmrg auroraux) 1361e8340fabSmrg os=auroraux 1362a376accbSmrg ;; 1363e8340fabSmrg bluegene*) 1364e8340fabSmrg os=cnk 1365a9a39c43Smrg ;; 1366e8340fabSmrg solaris1 | solaris1.*) 1367e8340fabSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1368a9a39c43Smrg ;; 1369e8340fabSmrg solaris) 1370e8340fabSmrg os=solaris2 1371a9a39c43Smrg ;; 1372e8340fabSmrg unixware*) 1373e8340fabSmrg os=sysv4.2uw 1374a9a39c43Smrg ;; 1375e1670675Smrg # es1800 is here to avoid being matched by es* (a different OS) 1376e8340fabSmrg es1800*) 1377e8340fabSmrg os=ose 1378e1670675Smrg ;; 1379e8340fabSmrg # Some version numbers need modification 1380e8340fabSmrg chorusos*) 1381e8340fabSmrg os=chorusos 1382a9a39c43Smrg ;; 1383e8340fabSmrg isc) 1384e8340fabSmrg os=isc2.2 1385a9a39c43Smrg ;; 1386e8340fabSmrg sco6) 1387e8340fabSmrg os=sco5v6 1388a9a39c43Smrg ;; 1389e8340fabSmrg sco5) 1390e8340fabSmrg os=sco3.2v5 1391a9a39c43Smrg ;; 1392e8340fabSmrg sco4) 1393e8340fabSmrg os=sco3.2v4 1394a9a39c43Smrg ;; 1395e8340fabSmrg sco3.2.[4-9]*) 1396e8340fabSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1397a9a39c43Smrg ;; 1398e8340fabSmrg sco*v* | scout) 1399e8340fabSmrg # Don't match below 1400a9a39c43Smrg ;; 1401e8340fabSmrg sco*) 1402e8340fabSmrg os=sco3.2v2 1403a9a39c43Smrg ;; 1404e8340fabSmrg psos*) 1405e8340fabSmrg os=psos 1406a9a39c43Smrg ;; 1407e8340fabSmrg qnx*) 1408e8340fabSmrg os=qnx 1409a9a39c43Smrg ;; 1410e8340fabSmrg hiux*) 1411e8340fabSmrg os=hiuxwe2 1412a9a39c43Smrg ;; 1413e8340fabSmrg lynx*178) 1414e8340fabSmrg os=lynxos178 1415a9a39c43Smrg ;; 1416e8340fabSmrg lynx*5) 1417e8340fabSmrg os=lynxos5 1418a9a39c43Smrg ;; 1419e8340fabSmrg lynxos*) 1420e8340fabSmrg # don't get caught up in next wildcard 1421a9a39c43Smrg ;; 1422e8340fabSmrg lynx*) 1423e8340fabSmrg os=lynxos 1424a9a39c43Smrg ;; 1425e8340fabSmrg mac[0-9]*) 1426e8340fabSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 1427a9a39c43Smrg ;; 1428e8340fabSmrg opened*) 1429e8340fabSmrg os=openedition 1430a9a39c43Smrg ;; 1431e8340fabSmrg os400*) 1432e8340fabSmrg os=os400 1433a9a39c43Smrg ;; 1434e8340fabSmrg sunos5*) 1435e8340fabSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1436a9a39c43Smrg ;; 1437e8340fabSmrg sunos6*) 1438e8340fabSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1439a9a39c43Smrg ;; 1440e8340fabSmrg wince*) 1441e8340fabSmrg os=wince 1442a9a39c43Smrg ;; 1443e8340fabSmrg utek*) 1444e8340fabSmrg os=bsd 1445a9a39c43Smrg ;; 1446e8340fabSmrg dynix*) 1447e8340fabSmrg os=bsd 1448e8340fabSmrg ;; 1449e8340fabSmrg acis*) 1450e8340fabSmrg os=aos 1451e8340fabSmrg ;; 1452e8340fabSmrg atheos*) 1453e8340fabSmrg os=atheos 1454e8340fabSmrg ;; 1455e8340fabSmrg syllable*) 1456e8340fabSmrg os=syllable 1457a9a39c43Smrg ;; 1458e8340fabSmrg 386bsd) 1459e8340fabSmrg os=bsd 1460e8340fabSmrg ;; 1461e8340fabSmrg ctix* | uts*) 1462e8340fabSmrg os=sysv 1463a9a39c43Smrg ;; 1464e8340fabSmrg nova*) 1465e8340fabSmrg os=rtmk-nova 1466a9a39c43Smrg ;; 1467e8340fabSmrg ns2) 1468e8340fabSmrg os=nextstep2 1469e8340fabSmrg ;; 1470e8340fabSmrg # Preserve the version number of sinix5. 1471e8340fabSmrg sinix5.*) 1472e8340fabSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1473a9a39c43Smrg ;; 1474e8340fabSmrg sinix*) 1475e8340fabSmrg os=sysv4 1476a9a39c43Smrg ;; 1477e8340fabSmrg tpf*) 1478e8340fabSmrg os=tpf 1479a9a39c43Smrg ;; 1480e8340fabSmrg triton*) 1481e8340fabSmrg os=sysv3 1482a9a39c43Smrg ;; 1483e8340fabSmrg oss*) 1484e8340fabSmrg os=sysv3 1485a9a39c43Smrg ;; 1486e8340fabSmrg svr4*) 1487e8340fabSmrg os=sysv4 1488a9a39c43Smrg ;; 1489e8340fabSmrg svr3) 1490e8340fabSmrg os=sysv3 1491a9a39c43Smrg ;; 1492e8340fabSmrg sysvr4) 1493e8340fabSmrg os=sysv4 1494a9a39c43Smrg ;; 1495e8340fabSmrg ose*) 1496e8340fabSmrg os=ose 1497a9a39c43Smrg ;; 1498e8340fabSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1499e8340fabSmrg os=mint 1500a9a39c43Smrg ;; 1501e8340fabSmrg dicos*) 1502e8340fabSmrg os=dicos 1503e8340fabSmrg ;; 1504e8340fabSmrg pikeos*) 1505e1670675Smrg # Until real need of OS specific support for 1506e1670675Smrg # particular features comes up, bare metal 1507e1670675Smrg # configurations are quite functional. 1508e8340fabSmrg case $cpu in 1509e1670675Smrg arm*) 1510e8340fabSmrg os=eabi 1511e1670675Smrg ;; 1512e1670675Smrg *) 1513e8340fabSmrg os=elf 1514e1670675Smrg ;; 1515e1670675Smrg esac 1516e1670675Smrg ;; 1517a9a39c43Smrg *) 1518e8340fabSmrg # No normalization, but not necessarily accepted, that comes below. 1519a9a39c43Smrg ;; 1520a9a39c43Smrgesac 1521e8340fabSmrg 1522a9a39c43Smrgelse 1523a9a39c43Smrg 1524a9a39c43Smrg# Here we handle the default operating systems that come with various machines. 1525a9a39c43Smrg# The value should be what the vendor currently ships out the door with their 1526a9a39c43Smrg# machine or put another way, the most popular os provided with the machine. 1527a9a39c43Smrg 1528a9a39c43Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1529a9a39c43Smrg# "-sun"), then you have to tell the case statement up towards the top 1530a9a39c43Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1531a9a39c43Smrg# will signal an error saying that MANUFACTURER isn't an operating 1532a9a39c43Smrg# system, and we'll never get to this point. 1533a9a39c43Smrg 1534e8340fabSmrgkernel= 1535e8340fabSmrgcase $cpu-$vendor in 1536e1670675Smrg score-*) 1537e8340fabSmrg os=elf 1538a9a39c43Smrg ;; 1539e1670675Smrg spu-*) 1540e8340fabSmrg os=elf 1541a9a39c43Smrg ;; 1542a9a39c43Smrg *-acorn) 1543e8340fabSmrg os=riscix1.2 1544a9a39c43Smrg ;; 1545a9a39c43Smrg arm*-rebel) 1546e8340fabSmrg kernel=linux 1547e8340fabSmrg os=gnu 1548a9a39c43Smrg ;; 1549a9a39c43Smrg arm*-semi) 1550e8340fabSmrg os=aout 1551a9a39c43Smrg ;; 1552e1670675Smrg c4x-* | tic4x-*) 1553e8340fabSmrg os=coff 1554e1670675Smrg ;; 1555e1670675Smrg c8051-*) 1556e8340fabSmrg os=elf 1557e8340fabSmrg ;; 1558e8340fabSmrg clipper-intergraph) 1559e8340fabSmrg os=clix 1560e1670675Smrg ;; 1561e1670675Smrg hexagon-*) 1562e8340fabSmrg os=elf 1563a9a39c43Smrg ;; 1564a376accbSmrg tic54x-*) 1565e8340fabSmrg os=coff 1566a376accbSmrg ;; 1567a376accbSmrg tic55x-*) 1568e8340fabSmrg os=coff 1569a376accbSmrg ;; 1570a376accbSmrg tic6x-*) 1571e8340fabSmrg os=coff 1572a376accbSmrg ;; 1573a9a39c43Smrg # This must come before the *-dec entry. 1574a9a39c43Smrg pdp10-*) 1575e8340fabSmrg os=tops20 1576a9a39c43Smrg ;; 1577a9a39c43Smrg pdp11-*) 1578e8340fabSmrg os=none 1579a9a39c43Smrg ;; 1580a9a39c43Smrg *-dec | vax-*) 1581e8340fabSmrg os=ultrix4.2 1582a9a39c43Smrg ;; 1583a9a39c43Smrg m68*-apollo) 1584e8340fabSmrg os=domain 1585a9a39c43Smrg ;; 1586a9a39c43Smrg i386-sun) 1587e8340fabSmrg os=sunos4.0.2 1588a9a39c43Smrg ;; 1589a9a39c43Smrg m68000-sun) 1590e8340fabSmrg os=sunos3 1591a9a39c43Smrg ;; 1592a9a39c43Smrg m68*-cisco) 1593e8340fabSmrg os=aout 1594a9a39c43Smrg ;; 1595e1670675Smrg mep-*) 1596e8340fabSmrg os=elf 1597a9a39c43Smrg ;; 1598a9a39c43Smrg mips*-cisco) 1599e8340fabSmrg os=elf 1600a9a39c43Smrg ;; 1601a9a39c43Smrg mips*-*) 1602e8340fabSmrg os=elf 1603a9a39c43Smrg ;; 1604a9a39c43Smrg or32-*) 1605e8340fabSmrg os=coff 1606a9a39c43Smrg ;; 1607a9a39c43Smrg *-tti) # must be before sparc entry or we get the wrong os. 1608e8340fabSmrg os=sysv3 1609a9a39c43Smrg ;; 1610a9a39c43Smrg sparc-* | *-sun) 1611e8340fabSmrg os=sunos4.1.1 1612a9a39c43Smrg ;; 1613e1670675Smrg pru-*) 1614e8340fabSmrg os=elf 1615e1670675Smrg ;; 1616a9a39c43Smrg *-be) 1617e8340fabSmrg os=beos 1618a9a39c43Smrg ;; 1619a9a39c43Smrg *-ibm) 1620e8340fabSmrg os=aix 1621a9a39c43Smrg ;; 1622e1670675Smrg *-knuth) 1623e8340fabSmrg os=mmixware 1624a9a39c43Smrg ;; 1625a9a39c43Smrg *-wec) 1626e8340fabSmrg os=proelf 1627a9a39c43Smrg ;; 1628a9a39c43Smrg *-winbond) 1629e8340fabSmrg os=proelf 1630a9a39c43Smrg ;; 1631a9a39c43Smrg *-oki) 1632e8340fabSmrg os=proelf 1633a9a39c43Smrg ;; 1634a9a39c43Smrg *-hp) 1635e8340fabSmrg os=hpux 1636a9a39c43Smrg ;; 1637a9a39c43Smrg *-hitachi) 1638e8340fabSmrg os=hiux 1639a9a39c43Smrg ;; 1640a9a39c43Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1641e8340fabSmrg os=sysv 1642a9a39c43Smrg ;; 1643a9a39c43Smrg *-cbm) 1644e8340fabSmrg os=amigaos 1645a9a39c43Smrg ;; 1646a9a39c43Smrg *-dg) 1647e8340fabSmrg os=dgux 1648a9a39c43Smrg ;; 1649a9a39c43Smrg *-dolphin) 1650e8340fabSmrg os=sysv3 1651a9a39c43Smrg ;; 1652a9a39c43Smrg m68k-ccur) 1653e8340fabSmrg os=rtu 1654a9a39c43Smrg ;; 1655a9a39c43Smrg m88k-omron*) 1656e8340fabSmrg os=luna 1657a9a39c43Smrg ;; 1658e1670675Smrg *-next) 1659e8340fabSmrg os=nextstep 1660a9a39c43Smrg ;; 1661a9a39c43Smrg *-sequent) 1662e8340fabSmrg os=ptx 1663a9a39c43Smrg ;; 1664a9a39c43Smrg *-crds) 1665e8340fabSmrg os=unos 1666a9a39c43Smrg ;; 1667a9a39c43Smrg *-ns) 1668e8340fabSmrg os=genix 1669a9a39c43Smrg ;; 1670a9a39c43Smrg i370-*) 1671e8340fabSmrg os=mvs 1672a9a39c43Smrg ;; 1673a9a39c43Smrg *-gould) 1674e8340fabSmrg os=sysv 1675a9a39c43Smrg ;; 1676a9a39c43Smrg *-highlevel) 1677e8340fabSmrg os=bsd 1678a9a39c43Smrg ;; 1679a9a39c43Smrg *-encore) 1680e8340fabSmrg os=bsd 1681a9a39c43Smrg ;; 1682a9a39c43Smrg *-sgi) 1683e8340fabSmrg os=irix 1684a9a39c43Smrg ;; 1685a9a39c43Smrg *-siemens) 1686e8340fabSmrg os=sysv4 1687a9a39c43Smrg ;; 1688a9a39c43Smrg *-masscomp) 1689e8340fabSmrg os=rtu 1690a9a39c43Smrg ;; 1691a9a39c43Smrg f30[01]-fujitsu | f700-fujitsu) 1692e8340fabSmrg os=uxpv 1693a9a39c43Smrg ;; 1694a9a39c43Smrg *-rom68k) 1695e8340fabSmrg os=coff 1696a9a39c43Smrg ;; 1697a9a39c43Smrg *-*bug) 1698e8340fabSmrg os=coff 1699a9a39c43Smrg ;; 1700a9a39c43Smrg *-apple) 1701e8340fabSmrg os=macos 1702a9a39c43Smrg ;; 1703a9a39c43Smrg *-atari*) 1704e8340fabSmrg os=mint 1705e8340fabSmrg ;; 1706e8340fabSmrg *-wrs) 1707e8340fabSmrg os=vxworks 1708a9a39c43Smrg ;; 1709a9a39c43Smrg *) 1710e8340fabSmrg os=none 1711a9a39c43Smrg ;; 1712a9a39c43Smrgesac 1713e8340fabSmrg 1714a9a39c43Smrgfi 1715a9a39c43Smrg 1716e8340fabSmrg# Now, validate our (potentially fixed-up) OS. 1717e8340fabSmrgcase $os in 1718e8340fabSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1719e8340fabSmrg musl* | newlib* | relibc* | uclibc*) 1720e8340fabSmrg ;; 1721e8340fabSmrg # Likewise for "kernel-abi" 1722e8340fabSmrg eabi* | gnueabi*) 1723e8340fabSmrg ;; 1724e8340fabSmrg # VxWorks passes extra cpu info in the 4th filed. 1725e8340fabSmrg simlinux | simwindows | spe) 1726e8340fabSmrg ;; 1727e8340fabSmrg # Now accept the basic system types. 1728e8340fabSmrg # The portable systems comes first. 1729e8340fabSmrg # Each alternative MUST end in a * to match a version number. 1730e8340fabSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1731e8340fabSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1732e8340fabSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1733e8340fabSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1734e8340fabSmrg | hiux* | abug | nacl* | netware* | windows* \ 1735e8340fabSmrg | os9* | macos* | osx* | ios* \ 1736e8340fabSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1737e8340fabSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1738e8340fabSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1739e8340fabSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1740e8340fabSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1741e8340fabSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1742e8340fabSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1743e8340fabSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1744e8340fabSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1745e8340fabSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1746e8340fabSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1747e8340fabSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1748e8340fabSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1749e8340fabSmrg | midipix* | mingw32* | mingw64* | mint* \ 1750e8340fabSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1751e8340fabSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1752e8340fabSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1753e8340fabSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1754e8340fabSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1755e8340fabSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1756e8340fabSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1757e8340fabSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1758e8340fabSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1759e8340fabSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1760e8340fabSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1761e8340fabSmrg | fiwix* | mlibc* ) 1762e8340fabSmrg ;; 1763e8340fabSmrg # This one is extra strict with allowed versions 1764e8340fabSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1765e8340fabSmrg # Don't forget version if it is 3.2v4 or newer. 1766e8340fabSmrg ;; 1767e8340fabSmrg none) 1768e8340fabSmrg ;; 1769e8340fabSmrg kernel* ) 1770e8340fabSmrg # Restricted further below 1771e8340fabSmrg ;; 1772e8340fabSmrg *) 1773e8340fabSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1774e8340fabSmrg exit 1 1775e8340fabSmrg ;; 1776e8340fabSmrgesac 1777e8340fabSmrg 1778e8340fabSmrg# As a final step for OS-related things, validate the OS-kernel combination 1779e8340fabSmrg# (given a valid OS), if there is a kernel. 1780e8340fabSmrgcase $kernel-$os in 1781e8340fabSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1782e8340fabSmrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 1783e8340fabSmrg ;; 1784e8340fabSmrg uclinux-uclibc* ) 1785e8340fabSmrg ;; 1786e8340fabSmrg managarm-mlibc* | managarm-kernel* ) 1787e8340fabSmrg ;; 1788e8340fabSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 1789e8340fabSmrg # These are just libc implementations, not actual OSes, and thus 1790e8340fabSmrg # require a kernel. 1791e8340fabSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1792e8340fabSmrg exit 1 1793e8340fabSmrg ;; 1794e8340fabSmrg -kernel* ) 1795e8340fabSmrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 1796e8340fabSmrg exit 1 1797e8340fabSmrg ;; 1798e8340fabSmrg *-kernel* ) 1799e8340fabSmrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 1800e8340fabSmrg exit 1 1801e8340fabSmrg ;; 1802e8340fabSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1803e8340fabSmrg ;; 1804e8340fabSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1805e8340fabSmrg ;; 1806e8340fabSmrg nto-qnx*) 1807e8340fabSmrg ;; 1808e8340fabSmrg os2-emx) 1809e8340fabSmrg ;; 1810e8340fabSmrg *-eabi* | *-gnueabi*) 1811e8340fabSmrg ;; 1812e8340fabSmrg -*) 1813e8340fabSmrg # Blank kernel with real OS is always fine. 1814e8340fabSmrg ;; 1815e8340fabSmrg *-*) 1816e8340fabSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1817e8340fabSmrg exit 1 1818e8340fabSmrg ;; 1819e8340fabSmrgesac 1820e8340fabSmrg 1821a9a39c43Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1822a9a39c43Smrg# manufacturer. We pick the logical manufacturer. 1823e8340fabSmrgcase $vendor in 1824e8340fabSmrg unknown) 1825e8340fabSmrg case $cpu-$os in 1826e8340fabSmrg *-riscix*) 1827a9a39c43Smrg vendor=acorn 1828a9a39c43Smrg ;; 1829e8340fabSmrg *-sunos*) 1830a9a39c43Smrg vendor=sun 1831a9a39c43Smrg ;; 1832e8340fabSmrg *-cnk* | *-aix*) 1833a9a39c43Smrg vendor=ibm 1834a9a39c43Smrg ;; 1835e8340fabSmrg *-beos*) 1836a9a39c43Smrg vendor=be 1837a9a39c43Smrg ;; 1838e8340fabSmrg *-hpux*) 1839a9a39c43Smrg vendor=hp 1840a9a39c43Smrg ;; 1841e8340fabSmrg *-mpeix*) 1842a9a39c43Smrg vendor=hp 1843a9a39c43Smrg ;; 1844e8340fabSmrg *-hiux*) 1845a9a39c43Smrg vendor=hitachi 1846a9a39c43Smrg ;; 1847e8340fabSmrg *-unos*) 1848a9a39c43Smrg vendor=crds 1849a9a39c43Smrg ;; 1850e8340fabSmrg *-dgux*) 1851a9a39c43Smrg vendor=dg 1852a9a39c43Smrg ;; 1853e8340fabSmrg *-luna*) 1854a9a39c43Smrg vendor=omron 1855a9a39c43Smrg ;; 1856e8340fabSmrg *-genix*) 1857a9a39c43Smrg vendor=ns 1858a9a39c43Smrg ;; 1859e8340fabSmrg *-clix*) 1860e8340fabSmrg vendor=intergraph 1861e8340fabSmrg ;; 1862e8340fabSmrg *-mvs* | *-opened*) 1863e8340fabSmrg vendor=ibm 1864e8340fabSmrg ;; 1865e8340fabSmrg *-os400*) 1866a9a39c43Smrg vendor=ibm 1867a9a39c43Smrg ;; 1868e8340fabSmrg s390-* | s390x-*) 1869a9a39c43Smrg vendor=ibm 1870a9a39c43Smrg ;; 1871e8340fabSmrg *-ptx*) 1872a9a39c43Smrg vendor=sequent 1873a9a39c43Smrg ;; 1874e8340fabSmrg *-tpf*) 1875a9a39c43Smrg vendor=ibm 1876a9a39c43Smrg ;; 1877e8340fabSmrg *-vxsim* | *-vxworks* | *-windiss*) 1878a9a39c43Smrg vendor=wrs 1879a9a39c43Smrg ;; 1880e8340fabSmrg *-aux*) 1881a9a39c43Smrg vendor=apple 1882a9a39c43Smrg ;; 1883e8340fabSmrg *-hms*) 1884a9a39c43Smrg vendor=hitachi 1885a9a39c43Smrg ;; 1886e8340fabSmrg *-mpw* | *-macos*) 1887a9a39c43Smrg vendor=apple 1888a9a39c43Smrg ;; 1889e8340fabSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1890a9a39c43Smrg vendor=atari 1891a9a39c43Smrg ;; 1892e8340fabSmrg *-vos*) 1893a9a39c43Smrg vendor=stratus 1894a9a39c43Smrg ;; 1895a9a39c43Smrg esac 1896a9a39c43Smrg ;; 1897a9a39c43Smrgesac 1898a9a39c43Smrg 1899e8340fabSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1900a9a39c43Smrgexit 1901a9a39c43Smrg 1902a9a39c43Smrg# Local variables: 1903e8340fabSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 1904a9a39c43Smrg# time-stamp-start: "timestamp='" 1905a9a39c43Smrg# time-stamp-format: "%:y-%02m-%02d" 1906a9a39c43Smrg# time-stamp-end: "'" 1907a9a39c43Smrg# End: 1908