config.sub revision e24f450b
129459361Smrg#! /bin/sh 229459361Smrg# Configuration validation subroutine script. 3e24f450bSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 429459361Smrg 5e24f450bSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6e24f450bSmrg 7e24f450bSmrgtimestamp='2021-08-14' 829459361Smrg 9fb4ebca8Smrg# This file is free software; you can redistribute it and/or modify it 10fb4ebca8Smrg# under the terms of the GNU General Public License as published by 11fb4ebca8Smrg# the Free Software Foundation; either version 3 of the License, or 1229459361Smrg# (at your option) any later version. 1329459361Smrg# 14fb4ebca8Smrg# This program is distributed in the hope that it will be useful, but 15fb4ebca8Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16fb4ebca8Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17fb4ebca8Smrg# General Public License for more details. 1829459361Smrg# 1929459361Smrg# You should have received a copy of the GNU General Public License 20e24f450bSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 2129459361Smrg# 2229459361Smrg# As a special exception to the GNU General Public License, if you 2329459361Smrg# distribute this file as part of a program that contains a 2429459361Smrg# configuration script generated by Autoconf, you may include it under 25fb4ebca8Smrg# the same distribution terms that you use for the rest of that 26fb4ebca8Smrg# program. This Exception is an additional permission under section 7 27fb4ebca8Smrg# of the GNU General Public License, version 3 ("GPLv3"). 2829459361Smrg 2929459361Smrg 30fa2b3b63Smrg# Please send patches to <config-patches@gnu.org>. 3129459361Smrg# 3229459361Smrg# Configuration subroutine to validate and canonicalize a configuration type. 3329459361Smrg# Supply the specified configuration type as an argument. 3429459361Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 3529459361Smrg# Otherwise, we print the canonical config type on stdout and succeed. 3629459361Smrg 374fbc8bdeSmrg# You can get the latest version of this script from: 38e24f450bSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 394fbc8bdeSmrg 4029459361Smrg# This file is supposed to be the same for all GNU packages 4129459361Smrg# and recognize all the CPU types, system types and aliases 4229459361Smrg# that are meaningful with *any* GNU software. 4329459361Smrg# Each package is responsible for reporting which valid configurations 4429459361Smrg# it does not support. The user should be able to distinguish 4529459361Smrg# a failure to support a valid configuration from a meaningless 4629459361Smrg# configuration. 4729459361Smrg 4829459361Smrg# The goal of this file is to map all the various variations of a given 4929459361Smrg# machine specification into a single specification in the form: 5029459361Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5129459361Smrg# or in some cases, the newer four-part form: 5229459361Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5329459361Smrg# It is wrong to echo any other type of specification. 5429459361Smrg 55e24f450bSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 56e24f450bSmrg# about features and limitations of the classic Bourne shell that were 57e24f450bSmrg# superseded or lifted in POSIX. However, this script identifies a wide 58e24f450bSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59e24f450bSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60e24f450bSmrg# have a pre-POSIX /bin/sh. 61e24f450bSmrg 6229459361Smrgme=`echo "$0" | sed -e 's,.*/,,'` 6329459361Smrg 6429459361Smrgusage="\ 65fa2b3b63SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6629459361Smrg 6729459361SmrgCanonicalize a configuration name. 6829459361Smrg 69e24f450bSmrgOptions: 7029459361Smrg -h, --help print this help, then exit 7129459361Smrg -t, --time-stamp print date of last modification, then exit 7229459361Smrg -v, --version print version number, then exit 7329459361Smrg 7429459361SmrgReport bugs and patches to <config-patches@gnu.org>." 7529459361Smrg 7629459361Smrgversion="\ 7729459361SmrgGNU config.sub ($timestamp) 7829459361Smrg 79e24f450bSmrgCopyright 1992-2021 Free Software Foundation, Inc. 8029459361Smrg 8129459361SmrgThis is free software; see the source for copying conditions. There is NO 8229459361Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8329459361Smrg 8429459361Smrghelp=" 8529459361SmrgTry \`$me --help' for more information." 8629459361Smrg 8729459361Smrg# Parse command line 8829459361Smrgwhile test $# -gt 0 ; do 8929459361Smrg case $1 in 9029459361Smrg --time-stamp | --time* | -t ) 9129459361Smrg echo "$timestamp" ; exit ;; 9229459361Smrg --version | -v ) 9329459361Smrg echo "$version" ; exit ;; 9429459361Smrg --help | --h* | -h ) 9529459361Smrg echo "$usage"; exit ;; 9629459361Smrg -- ) # Stop option processing 9729459361Smrg shift; break ;; 9829459361Smrg - ) # Use stdin as input. 9929459361Smrg break ;; 10029459361Smrg -* ) 101e24f450bSmrg echo "$me: invalid option $1$help" >&2 10229459361Smrg exit 1 ;; 10329459361Smrg 10429459361Smrg *local*) 10529459361Smrg # First pass through any local machine types. 106e24f450bSmrg echo "$1" 10729459361Smrg exit ;; 10829459361Smrg 10929459361Smrg * ) 11029459361Smrg break ;; 11129459361Smrg esac 11229459361Smrgdone 11329459361Smrg 11429459361Smrgcase $# in 11529459361Smrg 0) echo "$me: missing argument$help" >&2 11629459361Smrg exit 1;; 11729459361Smrg 1) ;; 11829459361Smrg *) echo "$me: too many arguments$help" >&2 11929459361Smrg exit 1;; 12029459361Smrgesac 12129459361Smrg 122e24f450bSmrg# Split fields of configuration type 123e24f450bSmrg# shellcheck disable=SC2162 124e24f450bSmrgsaved_IFS=$IFS 125e24f450bSmrgIFS="-" read field1 field2 field3 field4 <<EOF 126e24f450bSmrg$1 127e24f450bSmrgEOF 128e24f450bSmrgIFS=$saved_IFS 12929459361Smrg 130e24f450bSmrg# Separate into logical components for further validation 131e24f450bSmrgcase $1 in 132e24f450bSmrg *-*-*-*-*) 133e24f450bSmrg echo Invalid configuration \`"$1"\': more than four components >&2 134e24f450bSmrg exit 1 13529459361Smrg ;; 136e24f450bSmrg *-*-*-*) 137e24f450bSmrg basic_machine=$field1-$field2 138e24f450bSmrg basic_os=$field3-$field4 13929459361Smrg ;; 140e24f450bSmrg *-*-*) 141e24f450bSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142e24f450bSmrg # parts 143e24f450bSmrg maybe_os=$field2-$field3 144e24f450bSmrg case $maybe_os in 145e24f450bSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 146e24f450bSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147e24f450bSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148e24f450bSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 149e24f450bSmrg basic_machine=$field1 150e24f450bSmrg basic_os=$maybe_os 151e24f450bSmrg ;; 152e24f450bSmrg android-linux) 153e24f450bSmrg basic_machine=$field1-unknown 154e24f450bSmrg basic_os=linux-android 155e24f450bSmrg ;; 156e24f450bSmrg *) 157e24f450bSmrg basic_machine=$field1-$field2 158e24f450bSmrg basic_os=$field3 159e24f450bSmrg ;; 160e24f450bSmrg esac 16129459361Smrg ;; 162e24f450bSmrg *-*) 163e24f450bSmrg # A lone config we happen to match not fitting any pattern 164e24f450bSmrg case $field1-$field2 in 165e24f450bSmrg decstation-3100) 166e24f450bSmrg basic_machine=mips-dec 167e24f450bSmrg basic_os= 168e24f450bSmrg ;; 169e24f450bSmrg *-*) 170e24f450bSmrg # Second component is usually, but not always the OS 171e24f450bSmrg case $field2 in 172e24f450bSmrg # Prevent following clause from handling this valid os 173e24f450bSmrg sun*os*) 174e24f450bSmrg basic_machine=$field1 175e24f450bSmrg basic_os=$field2 176e24f450bSmrg ;; 177e24f450bSmrg zephyr*) 178e24f450bSmrg basic_machine=$field1-unknown 179e24f450bSmrg basic_os=$field2 180e24f450bSmrg ;; 181e24f450bSmrg # Manufacturers 182e24f450bSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183e24f450bSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184e24f450bSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185e24f450bSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186e24f450bSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187e24f450bSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188e24f450bSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189e24f450bSmrg | microblaze* | sim | cisco \ 190e24f450bSmrg | oki | wec | wrs | winbond) 191e24f450bSmrg basic_machine=$field1-$field2 192e24f450bSmrg basic_os= 193e24f450bSmrg ;; 194e24f450bSmrg *) 195e24f450bSmrg basic_machine=$field1 196e24f450bSmrg basic_os=$field2 197e24f450bSmrg ;; 198e24f450bSmrg esac 199e24f450bSmrg ;; 200e24f450bSmrg esac 20129459361Smrg ;; 202e24f450bSmrg *) 203e24f450bSmrg # Convert single-component short-hands not valid as part of 204e24f450bSmrg # multi-component configurations. 205e24f450bSmrg case $field1 in 206e24f450bSmrg 386bsd) 207e24f450bSmrg basic_machine=i386-pc 208e24f450bSmrg basic_os=bsd 209e24f450bSmrg ;; 210e24f450bSmrg a29khif) 211e24f450bSmrg basic_machine=a29k-amd 212e24f450bSmrg basic_os=udi 213e24f450bSmrg ;; 214e24f450bSmrg adobe68k) 215e24f450bSmrg basic_machine=m68010-adobe 216e24f450bSmrg basic_os=scout 217e24f450bSmrg ;; 218e24f450bSmrg alliant) 219e24f450bSmrg basic_machine=fx80-alliant 220e24f450bSmrg basic_os= 221e24f450bSmrg ;; 222e24f450bSmrg altos | altos3068) 223e24f450bSmrg basic_machine=m68k-altos 224e24f450bSmrg basic_os= 225e24f450bSmrg ;; 226e24f450bSmrg am29k) 227e24f450bSmrg basic_machine=a29k-none 228e24f450bSmrg basic_os=bsd 229e24f450bSmrg ;; 230e24f450bSmrg amdahl) 231e24f450bSmrg basic_machine=580-amdahl 232e24f450bSmrg basic_os=sysv 233e24f450bSmrg ;; 234e24f450bSmrg amiga) 235e24f450bSmrg basic_machine=m68k-unknown 236e24f450bSmrg basic_os= 237e24f450bSmrg ;; 238e24f450bSmrg amigaos | amigados) 239e24f450bSmrg basic_machine=m68k-unknown 240e24f450bSmrg basic_os=amigaos 241e24f450bSmrg ;; 242e24f450bSmrg amigaunix | amix) 243e24f450bSmrg basic_machine=m68k-unknown 244e24f450bSmrg basic_os=sysv4 245e24f450bSmrg ;; 246e24f450bSmrg apollo68) 247e24f450bSmrg basic_machine=m68k-apollo 248e24f450bSmrg basic_os=sysv 249e24f450bSmrg ;; 250e24f450bSmrg apollo68bsd) 251e24f450bSmrg basic_machine=m68k-apollo 252e24f450bSmrg basic_os=bsd 253e24f450bSmrg ;; 254e24f450bSmrg aros) 255e24f450bSmrg basic_machine=i386-pc 256e24f450bSmrg basic_os=aros 257e24f450bSmrg ;; 258e24f450bSmrg aux) 259e24f450bSmrg basic_machine=m68k-apple 260e24f450bSmrg basic_os=aux 261e24f450bSmrg ;; 262e24f450bSmrg balance) 263e24f450bSmrg basic_machine=ns32k-sequent 264e24f450bSmrg basic_os=dynix 265e24f450bSmrg ;; 266e24f450bSmrg blackfin) 267e24f450bSmrg basic_machine=bfin-unknown 268e24f450bSmrg basic_os=linux 269e24f450bSmrg ;; 270e24f450bSmrg cegcc) 271e24f450bSmrg basic_machine=arm-unknown 272e24f450bSmrg basic_os=cegcc 273e24f450bSmrg ;; 274e24f450bSmrg convex-c1) 275e24f450bSmrg basic_machine=c1-convex 276e24f450bSmrg basic_os=bsd 277e24f450bSmrg ;; 278e24f450bSmrg convex-c2) 279e24f450bSmrg basic_machine=c2-convex 280e24f450bSmrg basic_os=bsd 281e24f450bSmrg ;; 282e24f450bSmrg convex-c32) 283e24f450bSmrg basic_machine=c32-convex 284e24f450bSmrg basic_os=bsd 285e24f450bSmrg ;; 286e24f450bSmrg convex-c34) 287e24f450bSmrg basic_machine=c34-convex 288e24f450bSmrg basic_os=bsd 289e24f450bSmrg ;; 290e24f450bSmrg convex-c38) 291e24f450bSmrg basic_machine=c38-convex 292e24f450bSmrg basic_os=bsd 293e24f450bSmrg ;; 294e24f450bSmrg cray) 295e24f450bSmrg basic_machine=j90-cray 296e24f450bSmrg basic_os=unicos 297e24f450bSmrg ;; 298e24f450bSmrg crds | unos) 299e24f450bSmrg basic_machine=m68k-crds 300e24f450bSmrg basic_os= 301e24f450bSmrg ;; 302e24f450bSmrg da30) 303e24f450bSmrg basic_machine=m68k-da30 304e24f450bSmrg basic_os= 305e24f450bSmrg ;; 306e24f450bSmrg decstation | pmax | pmin | dec3100 | decstatn) 307e24f450bSmrg basic_machine=mips-dec 308e24f450bSmrg basic_os= 309e24f450bSmrg ;; 310e24f450bSmrg delta88) 311e24f450bSmrg basic_machine=m88k-motorola 312e24f450bSmrg basic_os=sysv3 313e24f450bSmrg ;; 314e24f450bSmrg dicos) 315e24f450bSmrg basic_machine=i686-pc 316e24f450bSmrg basic_os=dicos 317e24f450bSmrg ;; 318e24f450bSmrg djgpp) 319e24f450bSmrg basic_machine=i586-pc 320e24f450bSmrg basic_os=msdosdjgpp 321e24f450bSmrg ;; 322e24f450bSmrg ebmon29k) 323e24f450bSmrg basic_machine=a29k-amd 324e24f450bSmrg basic_os=ebmon 325e24f450bSmrg ;; 326e24f450bSmrg es1800 | OSE68k | ose68k | ose | OSE) 327e24f450bSmrg basic_machine=m68k-ericsson 328e24f450bSmrg basic_os=ose 329e24f450bSmrg ;; 330e24f450bSmrg gmicro) 331e24f450bSmrg basic_machine=tron-gmicro 332e24f450bSmrg basic_os=sysv 333e24f450bSmrg ;; 334e24f450bSmrg go32) 335e24f450bSmrg basic_machine=i386-pc 336e24f450bSmrg basic_os=go32 337e24f450bSmrg ;; 338e24f450bSmrg h8300hms) 339e24f450bSmrg basic_machine=h8300-hitachi 340e24f450bSmrg basic_os=hms 341e24f450bSmrg ;; 342e24f450bSmrg h8300xray) 343e24f450bSmrg basic_machine=h8300-hitachi 344e24f450bSmrg basic_os=xray 345e24f450bSmrg ;; 346e24f450bSmrg h8500hms) 347e24f450bSmrg basic_machine=h8500-hitachi 348e24f450bSmrg basic_os=hms 349e24f450bSmrg ;; 350e24f450bSmrg harris) 351e24f450bSmrg basic_machine=m88k-harris 352e24f450bSmrg basic_os=sysv3 353e24f450bSmrg ;; 354e24f450bSmrg hp300 | hp300hpux) 355e24f450bSmrg basic_machine=m68k-hp 356e24f450bSmrg basic_os=hpux 357e24f450bSmrg ;; 358e24f450bSmrg hp300bsd) 359e24f450bSmrg basic_machine=m68k-hp 360e24f450bSmrg basic_os=bsd 361e24f450bSmrg ;; 362e24f450bSmrg hppaosf) 363e24f450bSmrg basic_machine=hppa1.1-hp 364e24f450bSmrg basic_os=osf 365e24f450bSmrg ;; 366e24f450bSmrg hppro) 367e24f450bSmrg basic_machine=hppa1.1-hp 368e24f450bSmrg basic_os=proelf 369e24f450bSmrg ;; 370e24f450bSmrg i386mach) 371e24f450bSmrg basic_machine=i386-mach 372e24f450bSmrg basic_os=mach 373e24f450bSmrg ;; 374e24f450bSmrg isi68 | isi) 375e24f450bSmrg basic_machine=m68k-isi 376e24f450bSmrg basic_os=sysv 377e24f450bSmrg ;; 378e24f450bSmrg m68knommu) 379e24f450bSmrg basic_machine=m68k-unknown 380e24f450bSmrg basic_os=linux 381e24f450bSmrg ;; 382e24f450bSmrg magnum | m3230) 383e24f450bSmrg basic_machine=mips-mips 384e24f450bSmrg basic_os=sysv 385e24f450bSmrg ;; 386e24f450bSmrg merlin) 387e24f450bSmrg basic_machine=ns32k-utek 388e24f450bSmrg basic_os=sysv 389e24f450bSmrg ;; 390e24f450bSmrg mingw64) 391e24f450bSmrg basic_machine=x86_64-pc 392e24f450bSmrg basic_os=mingw64 393e24f450bSmrg ;; 394e24f450bSmrg mingw32) 395e24f450bSmrg basic_machine=i686-pc 396e24f450bSmrg basic_os=mingw32 397e24f450bSmrg ;; 398e24f450bSmrg mingw32ce) 399e24f450bSmrg basic_machine=arm-unknown 400e24f450bSmrg basic_os=mingw32ce 401e24f450bSmrg ;; 402e24f450bSmrg monitor) 403e24f450bSmrg basic_machine=m68k-rom68k 404e24f450bSmrg basic_os=coff 405e24f450bSmrg ;; 406e24f450bSmrg morphos) 407e24f450bSmrg basic_machine=powerpc-unknown 408e24f450bSmrg basic_os=morphos 409e24f450bSmrg ;; 410e24f450bSmrg moxiebox) 411e24f450bSmrg basic_machine=moxie-unknown 412e24f450bSmrg basic_os=moxiebox 413e24f450bSmrg ;; 414e24f450bSmrg msdos) 415e24f450bSmrg basic_machine=i386-pc 416e24f450bSmrg basic_os=msdos 417e24f450bSmrg ;; 418e24f450bSmrg msys) 419e24f450bSmrg basic_machine=i686-pc 420e24f450bSmrg basic_os=msys 421e24f450bSmrg ;; 422e24f450bSmrg mvs) 423e24f450bSmrg basic_machine=i370-ibm 424e24f450bSmrg basic_os=mvs 425e24f450bSmrg ;; 426e24f450bSmrg nacl) 427e24f450bSmrg basic_machine=le32-unknown 428e24f450bSmrg basic_os=nacl 429e24f450bSmrg ;; 430e24f450bSmrg ncr3000) 431e24f450bSmrg basic_machine=i486-ncr 432e24f450bSmrg basic_os=sysv4 433e24f450bSmrg ;; 434e24f450bSmrg netbsd386) 435e24f450bSmrg basic_machine=i386-pc 436e24f450bSmrg basic_os=netbsd 437e24f450bSmrg ;; 438e24f450bSmrg netwinder) 439e24f450bSmrg basic_machine=armv4l-rebel 440e24f450bSmrg basic_os=linux 441e24f450bSmrg ;; 442e24f450bSmrg news | news700 | news800 | news900) 443e24f450bSmrg basic_machine=m68k-sony 444e24f450bSmrg basic_os=newsos 445e24f450bSmrg ;; 446e24f450bSmrg news1000) 447e24f450bSmrg basic_machine=m68030-sony 448e24f450bSmrg basic_os=newsos 449e24f450bSmrg ;; 450e24f450bSmrg necv70) 451e24f450bSmrg basic_machine=v70-nec 452e24f450bSmrg basic_os=sysv 453e24f450bSmrg ;; 454e24f450bSmrg nh3000) 455e24f450bSmrg basic_machine=m68k-harris 456e24f450bSmrg basic_os=cxux 457e24f450bSmrg ;; 458e24f450bSmrg nh[45]000) 459e24f450bSmrg basic_machine=m88k-harris 460e24f450bSmrg basic_os=cxux 461e24f450bSmrg ;; 462e24f450bSmrg nindy960) 463e24f450bSmrg basic_machine=i960-intel 464e24f450bSmrg basic_os=nindy 465e24f450bSmrg ;; 466e24f450bSmrg mon960) 467e24f450bSmrg basic_machine=i960-intel 468e24f450bSmrg basic_os=mon960 469e24f450bSmrg ;; 470e24f450bSmrg nonstopux) 471e24f450bSmrg basic_machine=mips-compaq 472e24f450bSmrg basic_os=nonstopux 473e24f450bSmrg ;; 474e24f450bSmrg os400) 475e24f450bSmrg basic_machine=powerpc-ibm 476e24f450bSmrg basic_os=os400 477e24f450bSmrg ;; 478e24f450bSmrg OSE68000 | ose68000) 479e24f450bSmrg basic_machine=m68000-ericsson 480e24f450bSmrg basic_os=ose 481e24f450bSmrg ;; 482e24f450bSmrg os68k) 483e24f450bSmrg basic_machine=m68k-none 484e24f450bSmrg basic_os=os68k 485e24f450bSmrg ;; 486e24f450bSmrg paragon) 487e24f450bSmrg basic_machine=i860-intel 488e24f450bSmrg basic_os=osf 489e24f450bSmrg ;; 490e24f450bSmrg parisc) 491e24f450bSmrg basic_machine=hppa-unknown 492e24f450bSmrg basic_os=linux 493e24f450bSmrg ;; 494e24f450bSmrg psp) 495e24f450bSmrg basic_machine=mipsallegrexel-sony 496e24f450bSmrg basic_os=psp 497e24f450bSmrg ;; 498e24f450bSmrg pw32) 499e24f450bSmrg basic_machine=i586-unknown 500e24f450bSmrg basic_os=pw32 501e24f450bSmrg ;; 502e24f450bSmrg rdos | rdos64) 503e24f450bSmrg basic_machine=x86_64-pc 504e24f450bSmrg basic_os=rdos 505e24f450bSmrg ;; 506e24f450bSmrg rdos32) 507e24f450bSmrg basic_machine=i386-pc 508e24f450bSmrg basic_os=rdos 509e24f450bSmrg ;; 510e24f450bSmrg rom68k) 511e24f450bSmrg basic_machine=m68k-rom68k 512e24f450bSmrg basic_os=coff 513e24f450bSmrg ;; 514e24f450bSmrg sa29200) 515e24f450bSmrg basic_machine=a29k-amd 516e24f450bSmrg basic_os=udi 517e24f450bSmrg ;; 518e24f450bSmrg sei) 519e24f450bSmrg basic_machine=mips-sei 520e24f450bSmrg basic_os=seiux 521e24f450bSmrg ;; 522e24f450bSmrg sequent) 523e24f450bSmrg basic_machine=i386-sequent 524e24f450bSmrg basic_os= 525e24f450bSmrg ;; 526e24f450bSmrg sps7) 527e24f450bSmrg basic_machine=m68k-bull 528e24f450bSmrg basic_os=sysv2 529e24f450bSmrg ;; 530e24f450bSmrg st2000) 531e24f450bSmrg basic_machine=m68k-tandem 532e24f450bSmrg basic_os= 533e24f450bSmrg ;; 534e24f450bSmrg stratus) 535e24f450bSmrg basic_machine=i860-stratus 536e24f450bSmrg basic_os=sysv4 537e24f450bSmrg ;; 538e24f450bSmrg sun2) 539e24f450bSmrg basic_machine=m68000-sun 540e24f450bSmrg basic_os= 541e24f450bSmrg ;; 542e24f450bSmrg sun2os3) 543e24f450bSmrg basic_machine=m68000-sun 544e24f450bSmrg basic_os=sunos3 545e24f450bSmrg ;; 546e24f450bSmrg sun2os4) 547e24f450bSmrg basic_machine=m68000-sun 548e24f450bSmrg basic_os=sunos4 549e24f450bSmrg ;; 550e24f450bSmrg sun3) 551e24f450bSmrg basic_machine=m68k-sun 552e24f450bSmrg basic_os= 553e24f450bSmrg ;; 554e24f450bSmrg sun3os3) 555e24f450bSmrg basic_machine=m68k-sun 556e24f450bSmrg basic_os=sunos3 557e24f450bSmrg ;; 558e24f450bSmrg sun3os4) 559e24f450bSmrg basic_machine=m68k-sun 560e24f450bSmrg basic_os=sunos4 561e24f450bSmrg ;; 562e24f450bSmrg sun4) 563e24f450bSmrg basic_machine=sparc-sun 564e24f450bSmrg basic_os= 565e24f450bSmrg ;; 566e24f450bSmrg sun4os3) 567e24f450bSmrg basic_machine=sparc-sun 568e24f450bSmrg basic_os=sunos3 569e24f450bSmrg ;; 570e24f450bSmrg sun4os4) 571e24f450bSmrg basic_machine=sparc-sun 572e24f450bSmrg basic_os=sunos4 573e24f450bSmrg ;; 574e24f450bSmrg sun4sol2) 575e24f450bSmrg basic_machine=sparc-sun 576e24f450bSmrg basic_os=solaris2 577e24f450bSmrg ;; 578e24f450bSmrg sun386 | sun386i | roadrunner) 579e24f450bSmrg basic_machine=i386-sun 580e24f450bSmrg basic_os= 581e24f450bSmrg ;; 582e24f450bSmrg sv1) 583e24f450bSmrg basic_machine=sv1-cray 584e24f450bSmrg basic_os=unicos 585e24f450bSmrg ;; 586e24f450bSmrg symmetry) 587e24f450bSmrg basic_machine=i386-sequent 588e24f450bSmrg basic_os=dynix 589e24f450bSmrg ;; 590e24f450bSmrg t3e) 591e24f450bSmrg basic_machine=alphaev5-cray 592e24f450bSmrg basic_os=unicos 593e24f450bSmrg ;; 594e24f450bSmrg t90) 595e24f450bSmrg basic_machine=t90-cray 596e24f450bSmrg basic_os=unicos 597e24f450bSmrg ;; 598e24f450bSmrg toad1) 599e24f450bSmrg basic_machine=pdp10-xkl 600e24f450bSmrg basic_os=tops20 601e24f450bSmrg ;; 602e24f450bSmrg tpf) 603e24f450bSmrg basic_machine=s390x-ibm 604e24f450bSmrg basic_os=tpf 605e24f450bSmrg ;; 606e24f450bSmrg udi29k) 607e24f450bSmrg basic_machine=a29k-amd 608e24f450bSmrg basic_os=udi 609e24f450bSmrg ;; 610e24f450bSmrg ultra3) 611e24f450bSmrg basic_machine=a29k-nyu 612e24f450bSmrg basic_os=sym1 613e24f450bSmrg ;; 614e24f450bSmrg v810 | necv810) 615e24f450bSmrg basic_machine=v810-nec 616e24f450bSmrg basic_os=none 617e24f450bSmrg ;; 618e24f450bSmrg vaxv) 619e24f450bSmrg basic_machine=vax-dec 620e24f450bSmrg basic_os=sysv 621e24f450bSmrg ;; 622e24f450bSmrg vms) 623e24f450bSmrg basic_machine=vax-dec 624e24f450bSmrg basic_os=vms 625e24f450bSmrg ;; 626e24f450bSmrg vsta) 627e24f450bSmrg basic_machine=i386-pc 628e24f450bSmrg basic_os=vsta 629e24f450bSmrg ;; 630e24f450bSmrg vxworks960) 631e24f450bSmrg basic_machine=i960-wrs 632e24f450bSmrg basic_os=vxworks 633e24f450bSmrg ;; 634e24f450bSmrg vxworks68) 635e24f450bSmrg basic_machine=m68k-wrs 636e24f450bSmrg basic_os=vxworks 637e24f450bSmrg ;; 638e24f450bSmrg vxworks29k) 639e24f450bSmrg basic_machine=a29k-wrs 640e24f450bSmrg basic_os=vxworks 641e24f450bSmrg ;; 642e24f450bSmrg xbox) 643e24f450bSmrg basic_machine=i686-pc 644e24f450bSmrg basic_os=mingw32 645e24f450bSmrg ;; 646e24f450bSmrg ymp) 647e24f450bSmrg basic_machine=ymp-cray 648e24f450bSmrg basic_os=unicos 649e24f450bSmrg ;; 650e24f450bSmrg *) 651e24f450bSmrg basic_machine=$1 652e24f450bSmrg basic_os= 653e24f450bSmrg ;; 654e24f450bSmrg esac 65529459361Smrg ;; 65629459361Smrgesac 65729459361Smrg 658e24f450bSmrg# Decode 1-component or ad-hoc basic machines 65929459361Smrgcase $basic_machine in 660e24f450bSmrg # Here we handle the default manufacturer of certain CPU types. It is in 661e24f450bSmrg # some cases the only manufacturer, in others, it is the most popular. 662e24f450bSmrg w89k) 663e24f450bSmrg cpu=hppa1.1 664e24f450bSmrg vendor=winbond 66529459361Smrg ;; 666e24f450bSmrg op50n) 667e24f450bSmrg cpu=hppa1.1 668e24f450bSmrg vendor=oki 66929459361Smrg ;; 670e24f450bSmrg op60c) 671e24f450bSmrg cpu=hppa1.1 672e24f450bSmrg vendor=oki 67329459361Smrg ;; 674e24f450bSmrg ibm*) 675e24f450bSmrg cpu=i370 676e24f450bSmrg vendor=ibm 6775dd2154eSmrg ;; 678e24f450bSmrg orion105) 679e24f450bSmrg cpu=clipper 680e24f450bSmrg vendor=highlevel 681fb4ebca8Smrg ;; 682e24f450bSmrg mac | mpw | mac-mpw) 683e24f450bSmrg cpu=m68k 684e24f450bSmrg vendor=apple 6855dd2154eSmrg ;; 686e24f450bSmrg pmac | pmac-mpw) 687e24f450bSmrg cpu=powerpc 688e24f450bSmrg vendor=apple 6895dd2154eSmrg ;; 6905dd2154eSmrg 69129459361Smrg # Recognize the various machine names and aliases which stand 69229459361Smrg # for a CPU type and a company and sometimes even an OS. 69329459361Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694e24f450bSmrg cpu=m68000 695e24f450bSmrg vendor=att 69629459361Smrg ;; 69729459361Smrg 3b*) 698e24f450bSmrg cpu=we32k 699e24f450bSmrg vendor=att 70047202d7bSmrg ;; 7014fbc8bdeSmrg bluegene*) 702e24f450bSmrg cpu=powerpc 703e24f450bSmrg vendor=ibm 704e24f450bSmrg basic_os=cnk 70529459361Smrg ;; 70629459361Smrg decsystem10* | dec10*) 707e24f450bSmrg cpu=pdp10 708e24f450bSmrg vendor=dec 709e24f450bSmrg basic_os=tops10 71029459361Smrg ;; 71129459361Smrg decsystem20* | dec20*) 712e24f450bSmrg cpu=pdp10 713e24f450bSmrg vendor=dec 714e24f450bSmrg basic_os=tops20 71529459361Smrg ;; 71629459361Smrg delta | 3300 | motorola-3300 | motorola-delta \ 71729459361Smrg | 3300-motorola | delta-motorola) 718e24f450bSmrg cpu=m68k 719e24f450bSmrg vendor=motorola 72029459361Smrg ;; 721e24f450bSmrg dpx2*) 722e24f450bSmrg cpu=m68k 723e24f450bSmrg vendor=bull 724e24f450bSmrg basic_os=sysv3 72529459361Smrg ;; 72629459361Smrg encore | umax | mmax) 727e24f450bSmrg cpu=ns32k 728e24f450bSmrg vendor=encore 72929459361Smrg ;; 730e24f450bSmrg elxsi) 731e24f450bSmrg cpu=elxsi 732e24f450bSmrg vendor=elxsi 733e24f450bSmrg basic_os=${basic_os:-bsd} 73429459361Smrg ;; 73529459361Smrg fx2800) 736e24f450bSmrg cpu=i860 737e24f450bSmrg vendor=alliant 73829459361Smrg ;; 73929459361Smrg genix) 740e24f450bSmrg cpu=ns32k 741e24f450bSmrg vendor=ns 74229459361Smrg ;; 74329459361Smrg h3050r* | hiux*) 744e24f450bSmrg cpu=hppa1.1 745e24f450bSmrg vendor=hitachi 746e24f450bSmrg basic_os=hiuxwe2 74729459361Smrg ;; 74829459361Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749e24f450bSmrg cpu=hppa1.0 750e24f450bSmrg vendor=hp 75129459361Smrg ;; 75229459361Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753e24f450bSmrg cpu=m68000 754e24f450bSmrg vendor=hp 75529459361Smrg ;; 75629459361Smrg hp9k3[2-9][0-9]) 757e24f450bSmrg cpu=m68k 758e24f450bSmrg vendor=hp 75929459361Smrg ;; 76029459361Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761e24f450bSmrg cpu=hppa1.0 762e24f450bSmrg vendor=hp 76329459361Smrg ;; 76429459361Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765e24f450bSmrg cpu=hppa1.1 766e24f450bSmrg vendor=hp 76729459361Smrg ;; 76829459361Smrg hp9k78[0-9] | hp78[0-9]) 76929459361Smrg # FIXME: really hppa2.0-hp 770e24f450bSmrg cpu=hppa1.1 771e24f450bSmrg vendor=hp 77229459361Smrg ;; 77329459361Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77429459361Smrg # FIXME: really hppa2.0-hp 775e24f450bSmrg cpu=hppa1.1 776e24f450bSmrg vendor=hp 77729459361Smrg ;; 77829459361Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779e24f450bSmrg cpu=hppa1.1 780e24f450bSmrg vendor=hp 78129459361Smrg ;; 78229459361Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783e24f450bSmrg cpu=hppa1.0 784e24f450bSmrg vendor=hp 78529459361Smrg ;; 78629459361Smrg i*86v32) 787e24f450bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788e24f450bSmrg vendor=pc 789e24f450bSmrg basic_os=sysv32 79029459361Smrg ;; 79129459361Smrg i*86v4*) 792e24f450bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793e24f450bSmrg vendor=pc 794e24f450bSmrg basic_os=sysv4 79529459361Smrg ;; 79629459361Smrg i*86v) 797e24f450bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798e24f450bSmrg vendor=pc 799e24f450bSmrg basic_os=sysv 80029459361Smrg ;; 80129459361Smrg i*86sol2) 802e24f450bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803e24f450bSmrg vendor=pc 804e24f450bSmrg basic_os=solaris2 80529459361Smrg ;; 806e24f450bSmrg j90 | j90-cray) 807e24f450bSmrg cpu=j90 808e24f450bSmrg vendor=cray 809e24f450bSmrg basic_os=${basic_os:-unicos} 81029459361Smrg ;; 81129459361Smrg iris | iris4d) 812e24f450bSmrg cpu=mips 813e24f450bSmrg vendor=sgi 814e24f450bSmrg case $basic_os in 815e24f450bSmrg irix*) 81629459361Smrg ;; 81729459361Smrg *) 818e24f450bSmrg basic_os=irix4 81929459361Smrg ;; 82029459361Smrg esac 82129459361Smrg ;; 82229459361Smrg miniframe) 823e24f450bSmrg cpu=m68000 824e24f450bSmrg vendor=convergent 82529459361Smrg ;; 826e24f450bSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827e24f450bSmrg cpu=m68k 828e24f450bSmrg vendor=atari 829e24f450bSmrg basic_os=mint 83029459361Smrg ;; 83129459361Smrg news-3600 | risc-news) 832e24f450bSmrg cpu=mips 833e24f450bSmrg vendor=sony 834e24f450bSmrg basic_os=newsos 835e24f450bSmrg ;; 836e24f450bSmrg next | m*-next) 837e24f450bSmrg cpu=m68k 838e24f450bSmrg vendor=next 839e24f450bSmrg case $basic_os in 840e24f450bSmrg openstep*) 841e24f450bSmrg ;; 842e24f450bSmrg nextstep*) 84329459361Smrg ;; 844e24f450bSmrg ns2*) 845e24f450bSmrg basic_os=nextstep2 84629459361Smrg ;; 84729459361Smrg *) 848e24f450bSmrg basic_os=nextstep3 84929459361Smrg ;; 85029459361Smrg esac 85129459361Smrg ;; 85229459361Smrg np1) 853e24f450bSmrg cpu=np1 854e24f450bSmrg vendor=gould 855fa2b3b63Smrg ;; 85629459361Smrg op50n-* | op60c-*) 857e24f450bSmrg cpu=hppa1.1 858e24f450bSmrg vendor=oki 859e24f450bSmrg basic_os=proelf 86029459361Smrg ;; 86129459361Smrg pa-hitachi) 862e24f450bSmrg cpu=hppa1.1 863e24f450bSmrg vendor=hitachi 864e24f450bSmrg basic_os=hiuxwe2 86547202d7bSmrg ;; 86629459361Smrg pbd) 867e24f450bSmrg cpu=sparc 868e24f450bSmrg vendor=tti 86929459361Smrg ;; 87029459361Smrg pbb) 871e24f450bSmrg cpu=m68k 872e24f450bSmrg vendor=tti 87329459361Smrg ;; 874e24f450bSmrg pc532) 875e24f450bSmrg cpu=ns32k 876e24f450bSmrg vendor=pc532 87729459361Smrg ;; 87829459361Smrg pn) 879e24f450bSmrg cpu=pn 880e24f450bSmrg vendor=gould 88129459361Smrg ;; 882e24f450bSmrg power) 883e24f450bSmrg cpu=power 884e24f450bSmrg vendor=ibm 88529459361Smrg ;; 88629459361Smrg ps2) 887e24f450bSmrg cpu=i386 888e24f450bSmrg vendor=ibm 88929459361Smrg ;; 89029459361Smrg rm[46]00) 891e24f450bSmrg cpu=mips 892e24f450bSmrg vendor=siemens 89329459361Smrg ;; 89429459361Smrg rtpc | rtpc-*) 895e24f450bSmrg cpu=romp 896e24f450bSmrg vendor=ibm 89729459361Smrg ;; 89829459361Smrg sde) 899e24f450bSmrg cpu=mipsisa32 900e24f450bSmrg vendor=sde 901e24f450bSmrg basic_os=${basic_os:-elf} 90229459361Smrg ;; 903e24f450bSmrg simso-wrs) 904e24f450bSmrg cpu=sparclite 905e24f450bSmrg vendor=wrs 906e24f450bSmrg basic_os=vxworks 90729459361Smrg ;; 908e24f450bSmrg tower | tower-32) 909e24f450bSmrg cpu=m68k 910e24f450bSmrg vendor=ncr 91129459361Smrg ;; 912e24f450bSmrg vpp*|vx|vx-*) 913e24f450bSmrg cpu=f301 914e24f450bSmrg vendor=fujitsu 91529459361Smrg ;; 916e24f450bSmrg w65) 917e24f450bSmrg cpu=w65 918e24f450bSmrg vendor=wdc 91929459361Smrg ;; 920e24f450bSmrg w89k-*) 921e24f450bSmrg cpu=hppa1.1 922e24f450bSmrg vendor=winbond 923e24f450bSmrg basic_os=proelf 92429459361Smrg ;; 925e24f450bSmrg none) 926e24f450bSmrg cpu=none 927e24f450bSmrg vendor=none 92829459361Smrg ;; 929e24f450bSmrg leon|leon[3-9]) 930e24f450bSmrg cpu=sparc 931e24f450bSmrg vendor=$basic_machine 93229459361Smrg ;; 933e24f450bSmrg leon-*|leon[3-9]-*) 934e24f450bSmrg cpu=sparc 935e24f450bSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 93629459361Smrg ;; 937e24f450bSmrg 938e24f450bSmrg *-*) 939e24f450bSmrg # shellcheck disable=SC2162 940e24f450bSmrg saved_IFS=$IFS 941e24f450bSmrg IFS="-" read cpu vendor <<EOF 942e24f450bSmrg$basic_machine 943e24f450bSmrgEOF 944e24f450bSmrg IFS=$saved_IFS 94529459361Smrg ;; 946e24f450bSmrg # We use `pc' rather than `unknown' 947e24f450bSmrg # because (1) that's what they normally are, and 948e24f450bSmrg # (2) the word "unknown" tends to confuse beginning users. 949e24f450bSmrg i*86 | x86_64) 950e24f450bSmrg cpu=$basic_machine 951e24f450bSmrg vendor=pc 95229459361Smrg ;; 953e24f450bSmrg # These rules are duplicated from below for sake of the special case above; 954e24f450bSmrg # i.e. things that normalized to x86 arches should also default to "pc" 955e24f450bSmrg pc98) 956e24f450bSmrg cpu=i386 957e24f450bSmrg vendor=pc 9585dd2154eSmrg ;; 959e24f450bSmrg x64 | amd64) 960e24f450bSmrg cpu=x86_64 961e24f450bSmrg vendor=pc 96229459361Smrg ;; 963e24f450bSmrg # Recognize the basic CPU types without company name. 964e24f450bSmrg *) 965e24f450bSmrg cpu=$basic_machine 966e24f450bSmrg vendor=unknown 96729459361Smrg ;; 968e24f450bSmrgesac 969e24f450bSmrg 970e24f450bSmrgunset -v basic_machine 971e24f450bSmrg 972e24f450bSmrg# Decode basic machines in the full and proper CPU-Company form. 973e24f450bSmrgcase $cpu-$vendor in 974e24f450bSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975e24f450bSmrg # some cases the only manufacturer, in others, it is the most popular. 976e24f450bSmrg craynv-unknown) 977e24f450bSmrg vendor=cray 978e24f450bSmrg basic_os=${basic_os:-unicosmp} 97929459361Smrg ;; 980e24f450bSmrg c90-unknown | c90-cray) 981e24f450bSmrg vendor=cray 982e24f450bSmrg basic_os=${Basic_os:-unicos} 98329459361Smrg ;; 984e24f450bSmrg fx80-unknown) 985e24f450bSmrg vendor=alliant 98629459361Smrg ;; 987e24f450bSmrg romp-unknown) 988e24f450bSmrg vendor=ibm 98929459361Smrg ;; 990e24f450bSmrg mmix-unknown) 991e24f450bSmrg vendor=knuth 99229459361Smrg ;; 993e24f450bSmrg microblaze-unknown | microblazeel-unknown) 994e24f450bSmrg vendor=xilinx 99529459361Smrg ;; 996e24f450bSmrg rs6000-unknown) 997e24f450bSmrg vendor=ibm 99829459361Smrg ;; 999e24f450bSmrg vax-unknown) 1000e24f450bSmrg vendor=dec 100129459361Smrg ;; 1002e24f450bSmrg pdp11-unknown) 1003e24f450bSmrg vendor=dec 100429459361Smrg ;; 1005e24f450bSmrg we32k-unknown) 1006e24f450bSmrg vendor=att 100729459361Smrg ;; 1008e24f450bSmrg cydra-unknown) 1009e24f450bSmrg vendor=cydrome 101029459361Smrg ;; 1011e24f450bSmrg i370-ibm*) 1012e24f450bSmrg vendor=ibm 101329459361Smrg ;; 1014e24f450bSmrg orion-unknown) 1015e24f450bSmrg vendor=highlevel 101629459361Smrg ;; 1017e24f450bSmrg xps-unknown | xps100-unknown) 1018e24f450bSmrg cpu=xps100 1019e24f450bSmrg vendor=honeywell 102047202d7bSmrg ;; 1021e24f450bSmrg 1022e24f450bSmrg # Here we normalize CPU types with a missing or matching vendor 1023e24f450bSmrg dpx20-unknown | dpx20-bull) 1024e24f450bSmrg cpu=rs6000 1025e24f450bSmrg vendor=bull 1026e24f450bSmrg basic_os=${basic_os:-bosx} 102729459361Smrg ;; 1028e24f450bSmrg 1029e24f450bSmrg # Here we normalize CPU types irrespective of the vendor 1030e24f450bSmrg amd64-*) 1031e24f450bSmrg cpu=x86_64 103229459361Smrg ;; 1033e24f450bSmrg blackfin-*) 1034e24f450bSmrg cpu=bfin 1035e24f450bSmrg basic_os=linux 103629459361Smrg ;; 1037e24f450bSmrg c54x-*) 1038e24f450bSmrg cpu=tic54x 103929459361Smrg ;; 1040e24f450bSmrg c55x-*) 1041e24f450bSmrg cpu=tic55x 104229459361Smrg ;; 1043e24f450bSmrg c6x-*) 1044e24f450bSmrg cpu=tic6x 104529459361Smrg ;; 1046e24f450bSmrg e500v[12]-*) 1047e24f450bSmrg cpu=powerpc 1048e24f450bSmrg basic_os=${basic_os}"spe" 104929459361Smrg ;; 1050e24f450bSmrg mips3*-*) 1051e24f450bSmrg cpu=mips64 105229459361Smrg ;; 1053e24f450bSmrg ms1-*) 1054e24f450bSmrg cpu=mt 105529459361Smrg ;; 1056e24f450bSmrg m68knommu-*) 1057e24f450bSmrg cpu=m68k 1058e24f450bSmrg basic_os=linux 105929459361Smrg ;; 1060e24f450bSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1061e24f450bSmrg cpu=s12z 106229459361Smrg ;; 1063e24f450bSmrg openrisc-*) 1064e24f450bSmrg cpu=or32 106529459361Smrg ;; 1066e24f450bSmrg parisc-*) 1067e24f450bSmrg cpu=hppa 1068e24f450bSmrg basic_os=linux 106929459361Smrg ;; 1070e24f450bSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1071e24f450bSmrg cpu=i586 107229459361Smrg ;; 1073e24f450bSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 1074e24f450bSmrg cpu=i686 1075fa2b3b63Smrg ;; 1076e24f450bSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1077e24f450bSmrg cpu=i686 107829459361Smrg ;; 1079e24f450bSmrg pentium4-*) 1080e24f450bSmrg cpu=i786 108129459361Smrg ;; 1082e24f450bSmrg pc98-*) 1083e24f450bSmrg cpu=i386 108429459361Smrg ;; 1085e24f450bSmrg ppc-* | ppcbe-*) 1086e24f450bSmrg cpu=powerpc 108729459361Smrg ;; 1088e24f450bSmrg ppcle-* | powerpclittle-*) 1089e24f450bSmrg cpu=powerpcle 10905dd2154eSmrg ;; 1091e24f450bSmrg ppc64-*) 1092e24f450bSmrg cpu=powerpc64 109329459361Smrg ;; 1094e24f450bSmrg ppc64le-* | powerpc64little-*) 1095e24f450bSmrg cpu=powerpc64le 109629459361Smrg ;; 1097e24f450bSmrg sb1-*) 1098e24f450bSmrg cpu=mipsisa64sb1 109947202d7bSmrg ;; 1100e24f450bSmrg sb1el-*) 1101e24f450bSmrg cpu=mipsisa64sb1el 110229459361Smrg ;; 1103e24f450bSmrg sh5e[lb]-*) 1104e24f450bSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 110529459361Smrg ;; 1106e24f450bSmrg spur-*) 1107e24f450bSmrg cpu=spur 110829459361Smrg ;; 1109e24f450bSmrg strongarm-* | thumb-*) 1110e24f450bSmrg cpu=arm 111129459361Smrg ;; 1112e24f450bSmrg tx39-*) 1113e24f450bSmrg cpu=mipstx39 111429459361Smrg ;; 1115e24f450bSmrg tx39el-*) 1116e24f450bSmrg cpu=mipstx39el 111729459361Smrg ;; 1118e24f450bSmrg x64-*) 1119e24f450bSmrg cpu=x86_64 112029459361Smrg ;; 1121e24f450bSmrg xscale-* | xscalee[bl]-*) 1122e24f450bSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112329459361Smrg ;; 1124e24f450bSmrg arm64-*) 1125e24f450bSmrg cpu=aarch64 112629459361Smrg ;; 1127e24f450bSmrg 1128e24f450bSmrg # Recognize the canonical CPU Types that limit and/or modify the 1129e24f450bSmrg # company names they are paired with. 1130e24f450bSmrg cr16-*) 1131e24f450bSmrg basic_os=${basic_os:-elf} 113229459361Smrg ;; 1133e24f450bSmrg crisv32-* | etraxfs*-*) 1134e24f450bSmrg cpu=crisv32 1135e24f450bSmrg vendor=axis 113629459361Smrg ;; 1137e24f450bSmrg cris-* | etrax*-*) 1138e24f450bSmrg cpu=cris 1139e24f450bSmrg vendor=axis 114029459361Smrg ;; 1141e24f450bSmrg crx-*) 1142e24f450bSmrg basic_os=${basic_os:-elf} 114329459361Smrg ;; 1144e24f450bSmrg neo-tandem) 1145e24f450bSmrg cpu=neo 1146e24f450bSmrg vendor=tandem 114729459361Smrg ;; 1148e24f450bSmrg nse-tandem) 1149e24f450bSmrg cpu=nse 1150e24f450bSmrg vendor=tandem 115129459361Smrg ;; 1152e24f450bSmrg nsr-tandem) 1153e24f450bSmrg cpu=nsr 1154e24f450bSmrg vendor=tandem 115529459361Smrg ;; 1156e24f450bSmrg nsv-tandem) 1157e24f450bSmrg cpu=nsv 1158e24f450bSmrg vendor=tandem 115929459361Smrg ;; 1160e24f450bSmrg nsx-tandem) 1161e24f450bSmrg cpu=nsx 1162e24f450bSmrg vendor=tandem 116329459361Smrg ;; 1164e24f450bSmrg mipsallegrexel-sony) 1165e24f450bSmrg cpu=mipsallegrexel 1166e24f450bSmrg vendor=sony 116729459361Smrg ;; 1168e24f450bSmrg tile*-*) 1169e24f450bSmrg basic_os=${basic_os:-linux-gnu} 1170e24f450bSmrg ;; 1171e24f450bSmrg 117229459361Smrg *) 1173e24f450bSmrg # Recognize the canonical CPU types that are allowed with any 1174e24f450bSmrg # company name. 1175e24f450bSmrg case $cpu in 1176e24f450bSmrg 1750a | 580 \ 1177e24f450bSmrg | a29k \ 1178e24f450bSmrg | aarch64 | aarch64_be \ 1179e24f450bSmrg | abacus \ 1180e24f450bSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1181e24f450bSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1182e24f450bSmrg | alphapca5[67] | alpha64pca5[67] \ 1183e24f450bSmrg | am33_2.0 \ 1184e24f450bSmrg | amdgcn \ 1185e24f450bSmrg | arc | arceb | arc32 | arc64 \ 1186e24f450bSmrg | arm | arm[lb]e | arme[lb] | armv* \ 1187e24f450bSmrg | avr | avr32 \ 1188e24f450bSmrg | asmjs \ 1189e24f450bSmrg | ba \ 1190e24f450bSmrg | be32 | be64 \ 1191e24f450bSmrg | bfin | bpf | bs2000 \ 1192e24f450bSmrg | c[123]* | c30 | [cjt]90 | c4x \ 1193e24f450bSmrg | c8051 | clipper | craynv | csky | cydra \ 1194e24f450bSmrg | d10v | d30v | dlx | dsp16xx \ 1195e24f450bSmrg | e2k | elxsi | epiphany \ 1196e24f450bSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1197e24f450bSmrg | h8300 | h8500 \ 1198e24f450bSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1199e24f450bSmrg | hexagon \ 1200e24f450bSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1201e24f450bSmrg | ip2k | iq2000 \ 1202e24f450bSmrg | k1om \ 1203e24f450bSmrg | le32 | le64 \ 1204e24f450bSmrg | lm32 \ 1205e24f450bSmrg | loongarch32 | loongarch64 | loongarchx32 \ 1206e24f450bSmrg | m32c | m32r | m32rle \ 1207e24f450bSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1208e24f450bSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1209e24f450bSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1210e24f450bSmrg | microblaze | microblazeel \ 1211e24f450bSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1212e24f450bSmrg | mips16 \ 1213e24f450bSmrg | mips64 | mips64eb | mips64el \ 1214e24f450bSmrg | mips64octeon | mips64octeonel \ 1215e24f450bSmrg | mips64orion | mips64orionel \ 1216e24f450bSmrg | mips64r5900 | mips64r5900el \ 1217e24f450bSmrg | mips64vr | mips64vrel \ 1218e24f450bSmrg | mips64vr4100 | mips64vr4100el \ 1219e24f450bSmrg | mips64vr4300 | mips64vr4300el \ 1220e24f450bSmrg | mips64vr5000 | mips64vr5000el \ 1221e24f450bSmrg | mips64vr5900 | mips64vr5900el \ 1222e24f450bSmrg | mipsisa32 | mipsisa32el \ 1223e24f450bSmrg | mipsisa32r2 | mipsisa32r2el \ 1224e24f450bSmrg | mipsisa32r3 | mipsisa32r3el \ 1225e24f450bSmrg | mipsisa32r5 | mipsisa32r5el \ 1226e24f450bSmrg | mipsisa32r6 | mipsisa32r6el \ 1227e24f450bSmrg | mipsisa64 | mipsisa64el \ 1228e24f450bSmrg | mipsisa64r2 | mipsisa64r2el \ 1229e24f450bSmrg | mipsisa64r3 | mipsisa64r3el \ 1230e24f450bSmrg | mipsisa64r5 | mipsisa64r5el \ 1231e24f450bSmrg | mipsisa64r6 | mipsisa64r6el \ 1232e24f450bSmrg | mipsisa64sb1 | mipsisa64sb1el \ 1233e24f450bSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 1234e24f450bSmrg | mipsr5900 | mipsr5900el \ 1235e24f450bSmrg | mipstx39 | mipstx39el \ 1236e24f450bSmrg | mmix \ 1237e24f450bSmrg | mn10200 | mn10300 \ 1238e24f450bSmrg | moxie \ 1239e24f450bSmrg | mt \ 1240e24f450bSmrg | msp430 \ 1241e24f450bSmrg | nds32 | nds32le | nds32be \ 1242e24f450bSmrg | nfp \ 1243e24f450bSmrg | nios | nios2 | nios2eb | nios2el \ 1244e24f450bSmrg | none | np1 | ns16k | ns32k | nvptx \ 1245e24f450bSmrg | open8 \ 1246e24f450bSmrg | or1k* \ 1247e24f450bSmrg | or32 \ 1248e24f450bSmrg | orion \ 1249e24f450bSmrg | picochip \ 1250e24f450bSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1251e24f450bSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1252e24f450bSmrg | pru \ 1253e24f450bSmrg | pyramid \ 1254e24f450bSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1255e24f450bSmrg | rl78 | romp | rs6000 | rx \ 1256e24f450bSmrg | s390 | s390x \ 1257e24f450bSmrg | score \ 1258e24f450bSmrg | sh | shl \ 1259e24f450bSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1260e24f450bSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1261e24f450bSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1262e24f450bSmrg | sparclite \ 1263e24f450bSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1264e24f450bSmrg | spu \ 1265e24f450bSmrg | tahoe \ 1266e24f450bSmrg | thumbv7* \ 1267e24f450bSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1268e24f450bSmrg | tron \ 1269e24f450bSmrg | ubicom32 \ 1270e24f450bSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1271e24f450bSmrg | vax \ 1272e24f450bSmrg | visium \ 1273e24f450bSmrg | w65 \ 1274e24f450bSmrg | wasm32 | wasm64 \ 1275e24f450bSmrg | we32k \ 1276e24f450bSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1277e24f450bSmrg | xstormy16 | xtensa* \ 1278e24f450bSmrg | ymp \ 1279e24f450bSmrg | z8k | z80) 1280e24f450bSmrg ;; 1281e24f450bSmrg 1282e24f450bSmrg *) 1283e24f450bSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1284e24f450bSmrg exit 1 1285e24f450bSmrg ;; 1286e24f450bSmrg esac 128729459361Smrg ;; 128829459361Smrgesac 128929459361Smrg 129029459361Smrg# Here we canonicalize certain aliases for manufacturers. 1291e24f450bSmrgcase $vendor in 1292e24f450bSmrg digital*) 1293e24f450bSmrg vendor=dec 129429459361Smrg ;; 1295e24f450bSmrg commodore*) 1296e24f450bSmrg vendor=cbm 129729459361Smrg ;; 129829459361Smrg *) 129929459361Smrg ;; 130029459361Smrgesac 130129459361Smrg 130229459361Smrg# Decode manufacturer-specific aliases for certain operating systems. 130329459361Smrg 1304e24f450bSmrgif test x$basic_os != x 130529459361Smrgthen 1306e24f450bSmrg 1307e24f450bSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 1308e24f450bSmrg# set os. 1309e24f450bSmrgcase $basic_os in 1310e24f450bSmrg gnu/linux*) 1311e24f450bSmrg kernel=linux 1312e24f450bSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1313e24f450bSmrg ;; 1314e24f450bSmrg os2-emx) 1315e24f450bSmrg kernel=os2 1316e24f450bSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1317e24f450bSmrg ;; 1318e24f450bSmrg nto-qnx*) 1319e24f450bSmrg kernel=nto 1320e24f450bSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1321e24f450bSmrg ;; 1322e24f450bSmrg *-*) 1323e24f450bSmrg # shellcheck disable=SC2162 1324e24f450bSmrg saved_IFS=$IFS 1325e24f450bSmrg IFS="-" read kernel os <<EOF 1326e24f450bSmrg$basic_os 1327e24f450bSmrgEOF 1328e24f450bSmrg IFS=$saved_IFS 1329e24f450bSmrg ;; 1330e24f450bSmrg # Default OS when just kernel was specified 1331e24f450bSmrg nto*) 1332e24f450bSmrg kernel=nto 1333e24f450bSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1334e24f450bSmrg ;; 1335e24f450bSmrg linux*) 1336e24f450bSmrg kernel=linux 1337e24f450bSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13384fbc8bdeSmrg ;; 1339e24f450bSmrg *) 1340e24f450bSmrg kernel= 1341e24f450bSmrg os=$basic_os 134229459361Smrg ;; 1343e24f450bSmrgesac 1344e24f450bSmrg 1345e24f450bSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1346e24f450bSmrg# etc.) 1347e24f450bSmrgcase $os in 1348e24f450bSmrg # First match some system type aliases that might get confused 1349e24f450bSmrg # with valid system types. 1350e24f450bSmrg # solaris* is a basic system type, with this one exception. 1351e24f450bSmrg auroraux) 1352e24f450bSmrg os=auroraux 135329459361Smrg ;; 1354e24f450bSmrg bluegene*) 1355e24f450bSmrg os=cnk 135629459361Smrg ;; 1357e24f450bSmrg solaris1 | solaris1.*) 1358e24f450bSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 135929459361Smrg ;; 1360e24f450bSmrg solaris) 1361e24f450bSmrg os=solaris2 136229459361Smrg ;; 1363e24f450bSmrg unixware*) 1364e24f450bSmrg os=sysv4.2uw 136529459361Smrg ;; 1366e24f450bSmrg # es1800 is here to avoid being matched by es* (a different OS) 1367e24f450bSmrg es1800*) 1368e24f450bSmrg os=ose 136929459361Smrg ;; 1370e24f450bSmrg # Some version numbers need modification 1371e24f450bSmrg chorusos*) 1372e24f450bSmrg os=chorusos 137329459361Smrg ;; 1374e24f450bSmrg isc) 1375e24f450bSmrg os=isc2.2 137629459361Smrg ;; 1377e24f450bSmrg sco6) 1378e24f450bSmrg os=sco5v6 137929459361Smrg ;; 1380e24f450bSmrg sco5) 1381e24f450bSmrg os=sco3.2v5 138229459361Smrg ;; 1383e24f450bSmrg sco4) 1384e24f450bSmrg os=sco3.2v4 138529459361Smrg ;; 1386e24f450bSmrg sco3.2.[4-9]*) 1387e24f450bSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 138829459361Smrg ;; 1389e24f450bSmrg sco*v* | scout) 1390e24f450bSmrg # Don't match below 139129459361Smrg ;; 1392e24f450bSmrg sco*) 1393e24f450bSmrg os=sco3.2v2 139429459361Smrg ;; 1395e24f450bSmrg psos*) 1396e24f450bSmrg os=psos 139729459361Smrg ;; 1398e24f450bSmrg qnx*) 1399e24f450bSmrg os=qnx 140029459361Smrg ;; 1401e24f450bSmrg hiux*) 1402e24f450bSmrg os=hiuxwe2 140329459361Smrg ;; 1404e24f450bSmrg lynx*178) 1405e24f450bSmrg os=lynxos178 140629459361Smrg ;; 1407e24f450bSmrg lynx*5) 1408e24f450bSmrg os=lynxos5 140929459361Smrg ;; 1410e24f450bSmrg lynxos*) 1411e24f450bSmrg # don't get caught up in next wildcard 141229459361Smrg ;; 1413e24f450bSmrg lynx*) 1414e24f450bSmrg os=lynxos 141529459361Smrg ;; 1416e24f450bSmrg mac[0-9]*) 1417e24f450bSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 141829459361Smrg ;; 1419e24f450bSmrg opened*) 1420e24f450bSmrg os=openedition 142129459361Smrg ;; 1422e24f450bSmrg os400*) 1423e24f450bSmrg os=os400 142429459361Smrg ;; 1425e24f450bSmrg sunos5*) 1426e24f450bSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 142729459361Smrg ;; 1428e24f450bSmrg sunos6*) 1429e24f450bSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 143029459361Smrg ;; 1431e24f450bSmrg wince*) 1432e24f450bSmrg os=wince 143329459361Smrg ;; 1434e24f450bSmrg utek*) 1435e24f450bSmrg os=bsd 143629459361Smrg ;; 1437e24f450bSmrg dynix*) 1438e24f450bSmrg os=bsd 143929459361Smrg ;; 1440e24f450bSmrg acis*) 1441e24f450bSmrg os=aos 144229459361Smrg ;; 1443e24f450bSmrg atheos*) 1444e24f450bSmrg os=atheos 144529459361Smrg ;; 1446e24f450bSmrg syllable*) 1447e24f450bSmrg os=syllable 144829459361Smrg ;; 1449e24f450bSmrg 386bsd) 1450e24f450bSmrg os=bsd 145129459361Smrg ;; 1452e24f450bSmrg ctix* | uts*) 1453e24f450bSmrg os=sysv 145429459361Smrg ;; 1455e24f450bSmrg nova*) 1456e24f450bSmrg os=rtmk-nova 145729459361Smrg ;; 1458e24f450bSmrg ns2) 1459e24f450bSmrg os=nextstep2 146029459361Smrg ;; 1461e24f450bSmrg # Preserve the version number of sinix5. 1462e24f450bSmrg sinix5.*) 1463e24f450bSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 146429459361Smrg ;; 1465e24f450bSmrg sinix*) 1466e24f450bSmrg os=sysv4 146729459361Smrg ;; 1468e24f450bSmrg tpf*) 1469e24f450bSmrg os=tpf 147029459361Smrg ;; 1471e24f450bSmrg triton*) 1472e24f450bSmrg os=sysv3 147329459361Smrg ;; 1474e24f450bSmrg oss*) 1475e24f450bSmrg os=sysv3 147629459361Smrg ;; 1477e24f450bSmrg svr4*) 1478e24f450bSmrg os=sysv4 147929459361Smrg ;; 1480e24f450bSmrg svr3) 1481e24f450bSmrg os=sysv3 148229459361Smrg ;; 1483e24f450bSmrg sysvr4) 1484e24f450bSmrg os=sysv4 148547202d7bSmrg ;; 1486e24f450bSmrg ose*) 1487e24f450bSmrg os=ose 14885dd2154eSmrg ;; 1489e24f450bSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1490e24f450bSmrg os=mint 1491fa2b3b63Smrg ;; 1492e24f450bSmrg dicos*) 1493e24f450bSmrg os=dicos 1494e24f450bSmrg ;; 1495e24f450bSmrg pikeos*) 1496e24f450bSmrg # Until real need of OS specific support for 1497e24f450bSmrg # particular features comes up, bare metal 1498e24f450bSmrg # configurations are quite functional. 1499e24f450bSmrg case $cpu in 1500e24f450bSmrg arm*) 1501e24f450bSmrg os=eabi 1502e24f450bSmrg ;; 1503e24f450bSmrg *) 1504e24f450bSmrg os=elf 1505e24f450bSmrg ;; 1506e24f450bSmrg esac 150729459361Smrg ;; 150829459361Smrg *) 1509e24f450bSmrg # No normalization, but not necessarily accepted, that comes below. 151029459361Smrg ;; 151129459361Smrgesac 1512e24f450bSmrg 151329459361Smrgelse 151429459361Smrg 151529459361Smrg# Here we handle the default operating systems that come with various machines. 151629459361Smrg# The value should be what the vendor currently ships out the door with their 151729459361Smrg# machine or put another way, the most popular os provided with the machine. 151829459361Smrg 151929459361Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 152029459361Smrg# "-sun"), then you have to tell the case statement up towards the top 152129459361Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 152229459361Smrg# will signal an error saying that MANUFACTURER isn't an operating 152329459361Smrg# system, and we'll never get to this point. 152429459361Smrg 1525e24f450bSmrgkernel= 1526e24f450bSmrgcase $cpu-$vendor in 15275dd2154eSmrg score-*) 1528e24f450bSmrg os=elf 152929459361Smrg ;; 15305dd2154eSmrg spu-*) 1531e24f450bSmrg os=elf 153229459361Smrg ;; 153329459361Smrg *-acorn) 1534e24f450bSmrg os=riscix1.2 153529459361Smrg ;; 153629459361Smrg arm*-rebel) 1537e24f450bSmrg kernel=linux 1538e24f450bSmrg os=gnu 153929459361Smrg ;; 154029459361Smrg arm*-semi) 1541e24f450bSmrg os=aout 154229459361Smrg ;; 15435dd2154eSmrg c4x-* | tic4x-*) 1544e24f450bSmrg os=coff 154529459361Smrg ;; 1546fb4ebca8Smrg c8051-*) 1547e24f450bSmrg os=elf 1548e24f450bSmrg ;; 1549e24f450bSmrg clipper-intergraph) 1550e24f450bSmrg os=clix 1551fb4ebca8Smrg ;; 1552fb4ebca8Smrg hexagon-*) 1553e24f450bSmrg os=elf 1554fb4ebca8Smrg ;; 15554fbc8bdeSmrg tic54x-*) 1556e24f450bSmrg os=coff 15574fbc8bdeSmrg ;; 15584fbc8bdeSmrg tic55x-*) 1559e24f450bSmrg os=coff 15604fbc8bdeSmrg ;; 15614fbc8bdeSmrg tic6x-*) 1562e24f450bSmrg os=coff 15634fbc8bdeSmrg ;; 156429459361Smrg # This must come before the *-dec entry. 156529459361Smrg pdp10-*) 1566e24f450bSmrg os=tops20 156729459361Smrg ;; 156829459361Smrg pdp11-*) 1569e24f450bSmrg os=none 157029459361Smrg ;; 157129459361Smrg *-dec | vax-*) 1572e24f450bSmrg os=ultrix4.2 157329459361Smrg ;; 157429459361Smrg m68*-apollo) 1575e24f450bSmrg os=domain 157629459361Smrg ;; 157729459361Smrg i386-sun) 1578e24f450bSmrg os=sunos4.0.2 157929459361Smrg ;; 158029459361Smrg m68000-sun) 1581e24f450bSmrg os=sunos3 158229459361Smrg ;; 158329459361Smrg m68*-cisco) 1584e24f450bSmrg os=aout 158529459361Smrg ;; 15865dd2154eSmrg mep-*) 1587e24f450bSmrg os=elf 158847202d7bSmrg ;; 158929459361Smrg mips*-cisco) 1590e24f450bSmrg os=elf 159129459361Smrg ;; 159229459361Smrg mips*-*) 1593e24f450bSmrg os=elf 159429459361Smrg ;; 159529459361Smrg or32-*) 1596e24f450bSmrg os=coff 159729459361Smrg ;; 159829459361Smrg *-tti) # must be before sparc entry or we get the wrong os. 1599e24f450bSmrg os=sysv3 160029459361Smrg ;; 160129459361Smrg sparc-* | *-sun) 1602e24f450bSmrg os=sunos4.1.1 160329459361Smrg ;; 1604fa2b3b63Smrg pru-*) 1605e24f450bSmrg os=elf 1606fa2b3b63Smrg ;; 160729459361Smrg *-be) 1608e24f450bSmrg os=beos 160929459361Smrg ;; 161029459361Smrg *-ibm) 1611e24f450bSmrg os=aix 161229459361Smrg ;; 16135dd2154eSmrg *-knuth) 1614e24f450bSmrg os=mmixware 161529459361Smrg ;; 161629459361Smrg *-wec) 1617e24f450bSmrg os=proelf 161829459361Smrg ;; 161929459361Smrg *-winbond) 1620e24f450bSmrg os=proelf 162129459361Smrg ;; 162229459361Smrg *-oki) 1623e24f450bSmrg os=proelf 162429459361Smrg ;; 162529459361Smrg *-hp) 1626e24f450bSmrg os=hpux 162729459361Smrg ;; 162829459361Smrg *-hitachi) 1629e24f450bSmrg os=hiux 163029459361Smrg ;; 163129459361Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1632e24f450bSmrg os=sysv 163329459361Smrg ;; 163429459361Smrg *-cbm) 1635e24f450bSmrg os=amigaos 163629459361Smrg ;; 163729459361Smrg *-dg) 1638e24f450bSmrg os=dgux 163929459361Smrg ;; 164029459361Smrg *-dolphin) 1641e24f450bSmrg os=sysv3 164229459361Smrg ;; 164329459361Smrg m68k-ccur) 1644e24f450bSmrg os=rtu 164529459361Smrg ;; 164629459361Smrg m88k-omron*) 1647e24f450bSmrg os=luna 164829459361Smrg ;; 1649e24f450bSmrg *-next) 1650e24f450bSmrg os=nextstep 165129459361Smrg ;; 165229459361Smrg *-sequent) 1653e24f450bSmrg os=ptx 165429459361Smrg ;; 165529459361Smrg *-crds) 1656e24f450bSmrg os=unos 165729459361Smrg ;; 165829459361Smrg *-ns) 1659e24f450bSmrg os=genix 166029459361Smrg ;; 166129459361Smrg i370-*) 1662e24f450bSmrg os=mvs 166329459361Smrg ;; 166429459361Smrg *-gould) 1665e24f450bSmrg os=sysv 166629459361Smrg ;; 166729459361Smrg *-highlevel) 1668e24f450bSmrg os=bsd 166929459361Smrg ;; 167029459361Smrg *-encore) 1671e24f450bSmrg os=bsd 167229459361Smrg ;; 167329459361Smrg *-sgi) 1674e24f450bSmrg os=irix 167529459361Smrg ;; 167629459361Smrg *-siemens) 1677e24f450bSmrg os=sysv4 167829459361Smrg ;; 167929459361Smrg *-masscomp) 1680e24f450bSmrg os=rtu 168129459361Smrg ;; 168229459361Smrg f30[01]-fujitsu | f700-fujitsu) 1683e24f450bSmrg os=uxpv 168429459361Smrg ;; 168529459361Smrg *-rom68k) 1686e24f450bSmrg os=coff 168729459361Smrg ;; 168829459361Smrg *-*bug) 1689e24f450bSmrg os=coff 169029459361Smrg ;; 169129459361Smrg *-apple) 1692e24f450bSmrg os=macos 169329459361Smrg ;; 169429459361Smrg *-atari*) 1695e24f450bSmrg os=mint 1696e24f450bSmrg ;; 1697e24f450bSmrg *-wrs) 1698e24f450bSmrg os=vxworks 169929459361Smrg ;; 170029459361Smrg *) 1701e24f450bSmrg os=none 170229459361Smrg ;; 170329459361Smrgesac 1704e24f450bSmrg 170529459361Smrgfi 170629459361Smrg 1707e24f450bSmrg# Now, validate our (potentially fixed-up) OS. 1708e24f450bSmrgcase $os in 1709e24f450bSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1710e24f450bSmrg musl* | newlib* | relibc* | uclibc*) 1711e24f450bSmrg ;; 1712e24f450bSmrg # Likewise for "kernel-abi" 1713e24f450bSmrg eabi* | gnueabi*) 1714e24f450bSmrg ;; 1715e24f450bSmrg # VxWorks passes extra cpu info in the 4th filed. 1716e24f450bSmrg simlinux | simwindows | spe) 1717e24f450bSmrg ;; 1718e24f450bSmrg # Now accept the basic system types. 1719e24f450bSmrg # The portable systems comes first. 1720e24f450bSmrg # Each alternative MUST end in a * to match a version number. 1721e24f450bSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1722e24f450bSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1723e24f450bSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1724e24f450bSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1725e24f450bSmrg | hiux* | abug | nacl* | netware* | windows* \ 1726e24f450bSmrg | os9* | macos* | osx* | ios* \ 1727e24f450bSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1728e24f450bSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1729e24f450bSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1730e24f450bSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1731e24f450bSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1732e24f450bSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1733e24f450bSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1734e24f450bSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1735e24f450bSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1736e24f450bSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1737e24f450bSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1738e24f450bSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1739e24f450bSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1740e24f450bSmrg | midipix* | mingw32* | mingw64* | mint* \ 1741e24f450bSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1742e24f450bSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1743e24f450bSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1744e24f450bSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1745e24f450bSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1746e24f450bSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1747e24f450bSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1748e24f450bSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1749e24f450bSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1750e24f450bSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1751e24f450bSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 1752e24f450bSmrg ;; 1753e24f450bSmrg # This one is extra strict with allowed versions 1754e24f450bSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1755e24f450bSmrg # Don't forget version if it is 3.2v4 or newer. 1756e24f450bSmrg ;; 1757e24f450bSmrg none) 1758e24f450bSmrg ;; 1759e24f450bSmrg *) 1760e24f450bSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1761e24f450bSmrg exit 1 1762e24f450bSmrg ;; 1763e24f450bSmrgesac 1764e24f450bSmrg 1765e24f450bSmrg# As a final step for OS-related things, validate the OS-kernel combination 1766e24f450bSmrg# (given a valid OS), if there is a kernel. 1767e24f450bSmrgcase $kernel-$os in 1768e24f450bSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1769e24f450bSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 1770e24f450bSmrg ;; 1771e24f450bSmrg uclinux-uclibc* ) 1772e24f450bSmrg ;; 1773e24f450bSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 1774e24f450bSmrg # These are just libc implementations, not actual OSes, and thus 1775e24f450bSmrg # require a kernel. 1776e24f450bSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1777e24f450bSmrg exit 1 1778e24f450bSmrg ;; 1779e24f450bSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1780e24f450bSmrg ;; 1781e24f450bSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1782e24f450bSmrg ;; 1783e24f450bSmrg nto-qnx*) 1784e24f450bSmrg ;; 1785e24f450bSmrg os2-emx) 1786e24f450bSmrg ;; 1787e24f450bSmrg *-eabi* | *-gnueabi*) 1788e24f450bSmrg ;; 1789e24f450bSmrg -*) 1790e24f450bSmrg # Blank kernel with real OS is always fine. 1791e24f450bSmrg ;; 1792e24f450bSmrg *-*) 1793e24f450bSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1794e24f450bSmrg exit 1 1795e24f450bSmrg ;; 1796e24f450bSmrgesac 1797e24f450bSmrg 179829459361Smrg# Here we handle the case where we know the os, and the CPU type, but not the 179929459361Smrg# manufacturer. We pick the logical manufacturer. 1800e24f450bSmrgcase $vendor in 1801e24f450bSmrg unknown) 1802e24f450bSmrg case $cpu-$os in 1803e24f450bSmrg *-riscix*) 180429459361Smrg vendor=acorn 180529459361Smrg ;; 1806e24f450bSmrg *-sunos*) 180729459361Smrg vendor=sun 180829459361Smrg ;; 1809e24f450bSmrg *-cnk* | *-aix*) 181029459361Smrg vendor=ibm 181129459361Smrg ;; 1812e24f450bSmrg *-beos*) 181329459361Smrg vendor=be 181429459361Smrg ;; 1815e24f450bSmrg *-hpux*) 181629459361Smrg vendor=hp 181729459361Smrg ;; 1818e24f450bSmrg *-mpeix*) 181929459361Smrg vendor=hp 182029459361Smrg ;; 1821e24f450bSmrg *-hiux*) 182229459361Smrg vendor=hitachi 182329459361Smrg ;; 1824e24f450bSmrg *-unos*) 182529459361Smrg vendor=crds 182629459361Smrg ;; 1827e24f450bSmrg *-dgux*) 182829459361Smrg vendor=dg 182929459361Smrg ;; 1830e24f450bSmrg *-luna*) 183129459361Smrg vendor=omron 183229459361Smrg ;; 1833e24f450bSmrg *-genix*) 183429459361Smrg vendor=ns 183529459361Smrg ;; 1836e24f450bSmrg *-clix*) 1837e24f450bSmrg vendor=intergraph 1838e24f450bSmrg ;; 1839e24f450bSmrg *-mvs* | *-opened*) 1840e24f450bSmrg vendor=ibm 1841e24f450bSmrg ;; 1842e24f450bSmrg *-os400*) 184329459361Smrg vendor=ibm 184429459361Smrg ;; 1845e24f450bSmrg s390-* | s390x-*) 184629459361Smrg vendor=ibm 184729459361Smrg ;; 1848e24f450bSmrg *-ptx*) 184929459361Smrg vendor=sequent 185029459361Smrg ;; 1851e24f450bSmrg *-tpf*) 185229459361Smrg vendor=ibm 185329459361Smrg ;; 1854e24f450bSmrg *-vxsim* | *-vxworks* | *-windiss*) 185529459361Smrg vendor=wrs 185629459361Smrg ;; 1857e24f450bSmrg *-aux*) 185829459361Smrg vendor=apple 185929459361Smrg ;; 1860e24f450bSmrg *-hms*) 186129459361Smrg vendor=hitachi 186229459361Smrg ;; 1863e24f450bSmrg *-mpw* | *-macos*) 186429459361Smrg vendor=apple 186529459361Smrg ;; 1866e24f450bSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 186729459361Smrg vendor=atari 186829459361Smrg ;; 1869e24f450bSmrg *-vos*) 187029459361Smrg vendor=stratus 187129459361Smrg ;; 187229459361Smrg esac 187329459361Smrg ;; 187429459361Smrgesac 187529459361Smrg 1876e24f450bSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 187729459361Smrgexit 187829459361Smrg 187929459361Smrg# Local variables: 1880e24f450bSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 188129459361Smrg# time-stamp-start: "timestamp='" 188229459361Smrg# time-stamp-format: "%:y-%02m-%02d" 188329459361Smrg# time-stamp-end: "'" 188429459361Smrg# End: 1885