145bc899bSmrg#! /bin/sh 245bc899bSmrg# Configuration validation subroutine script. 3e8b4ed9fSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 445bc899bSmrg 5e8b4ed9fSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6e8b4ed9fSmrg 7e8b4ed9fSmrgtimestamp='2021-08-14' 845bc899bSmrg 9c97b1c41Smrg# This file is free software; you can redistribute it and/or modify it 10c97b1c41Smrg# under the terms of the GNU General Public License as published by 11c97b1c41Smrg# the Free Software Foundation; either version 3 of the License, or 1245bc899bSmrg# (at your option) any later version. 1345bc899bSmrg# 14c97b1c41Smrg# This program is distributed in the hope that it will be useful, but 15c97b1c41Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16c97b1c41Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17c97b1c41Smrg# General Public License for more details. 1845bc899bSmrg# 1945bc899bSmrg# You should have received a copy of the GNU General Public License 20a0c41156Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 2150f2e948Smrg# 2245bc899bSmrg# As a special exception to the GNU General Public License, if you 2345bc899bSmrg# distribute this file as part of a program that contains a 2445bc899bSmrg# configuration script generated by Autoconf, you may include it under 25c97b1c41Smrg# the same distribution terms that you use for the rest of that 26c97b1c41Smrg# program. This Exception is an additional permission under section 7 27c97b1c41Smrg# of the GNU General Public License, version 3 ("GPLv3"). 2845bc899bSmrg 2950f2e948Smrg 3057ba8e8bSmrg# Please send patches to <config-patches@gnu.org>. 3145bc899bSmrg# 3245bc899bSmrg# Configuration subroutine to validate and canonicalize a configuration type. 3345bc899bSmrg# Supply the specified configuration type as an argument. 3445bc899bSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 3545bc899bSmrg# Otherwise, we print the canonical config type on stdout and succeed. 3645bc899bSmrg 37b40a6198Smrg# You can get the latest version of this script from: 38e8b4ed9fSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39b40a6198Smrg 4045bc899bSmrg# This file is supposed to be the same for all GNU packages 4145bc899bSmrg# and recognize all the CPU types, system types and aliases 4245bc899bSmrg# that are meaningful with *any* GNU software. 4345bc899bSmrg# Each package is responsible for reporting which valid configurations 4445bc899bSmrg# it does not support. The user should be able to distinguish 4545bc899bSmrg# a failure to support a valid configuration from a meaningless 4645bc899bSmrg# configuration. 4745bc899bSmrg 4845bc899bSmrg# The goal of this file is to map all the various variations of a given 4945bc899bSmrg# machine specification into a single specification in the form: 5045bc899bSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5145bc899bSmrg# or in some cases, the newer four-part form: 5245bc899bSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5345bc899bSmrg# It is wrong to echo any other type of specification. 5445bc899bSmrg 55e8b4ed9fSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 56e8b4ed9fSmrg# about features and limitations of the classic Bourne shell that were 57e8b4ed9fSmrg# superseded or lifted in POSIX. However, this script identifies a wide 58e8b4ed9fSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59e8b4ed9fSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60e8b4ed9fSmrg# have a pre-POSIX /bin/sh. 61e8b4ed9fSmrg 6245bc899bSmrgme=`echo "$0" | sed -e 's,.*/,,'` 6345bc899bSmrg 6445bc899bSmrgusage="\ 65f2408745SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6645bc899bSmrg 6745bc899bSmrgCanonicalize a configuration name. 6845bc899bSmrg 69a0c41156SmrgOptions: 7045bc899bSmrg -h, --help print this help, then exit 7145bc899bSmrg -t, --time-stamp print date of last modification, then exit 7245bc899bSmrg -v, --version print version number, then exit 7345bc899bSmrg 7445bc899bSmrgReport bugs and patches to <config-patches@gnu.org>." 7545bc899bSmrg 7645bc899bSmrgversion="\ 7745bc899bSmrgGNU config.sub ($timestamp) 7845bc899bSmrg 79e8b4ed9fSmrgCopyright 1992-2021 Free Software Foundation, Inc. 8045bc899bSmrg 8145bc899bSmrgThis is free software; see the source for copying conditions. There is NO 8245bc899bSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8345bc899bSmrg 8445bc899bSmrghelp=" 8545bc899bSmrgTry \`$me --help' for more information." 8645bc899bSmrg 8745bc899bSmrg# Parse command line 8845bc899bSmrgwhile test $# -gt 0 ; do 8945bc899bSmrg case $1 in 9045bc899bSmrg --time-stamp | --time* | -t ) 9150f2e948Smrg echo "$timestamp" ; exit ;; 9245bc899bSmrg --version | -v ) 9350f2e948Smrg echo "$version" ; exit ;; 9445bc899bSmrg --help | --h* | -h ) 9550f2e948Smrg echo "$usage"; exit ;; 9645bc899bSmrg -- ) # Stop option processing 9745bc899bSmrg shift; break ;; 9845bc899bSmrg - ) # Use stdin as input. 9945bc899bSmrg break ;; 10045bc899bSmrg -* ) 101e8b4ed9fSmrg echo "$me: invalid option $1$help" >&2 10245bc899bSmrg exit 1 ;; 10345bc899bSmrg 10445bc899bSmrg *local*) 10545bc899bSmrg # First pass through any local machine types. 106a0c41156Smrg echo "$1" 10750f2e948Smrg exit ;; 10845bc899bSmrg 10945bc899bSmrg * ) 11045bc899bSmrg break ;; 11145bc899bSmrg esac 11245bc899bSmrgdone 11345bc899bSmrg 11445bc899bSmrgcase $# in 11545bc899bSmrg 0) echo "$me: missing argument$help" >&2 11645bc899bSmrg exit 1;; 11745bc899bSmrg 1) ;; 11845bc899bSmrg *) echo "$me: too many arguments$help" >&2 11945bc899bSmrg exit 1;; 12045bc899bSmrgesac 12145bc899bSmrg 122a0c41156Smrg# Split fields of configuration type 123e8b4ed9fSmrg# shellcheck disable=SC2162 124e8b4ed9fSmrgsaved_IFS=$IFS 125e8b4ed9fSmrgIFS="-" read field1 field2 field3 field4 <<EOF 126a0c41156Smrg$1 127a0c41156SmrgEOF 128e8b4ed9fSmrgIFS=$saved_IFS 12945bc899bSmrg 130a0c41156Smrg# Separate into logical components for further validation 131a0c41156Smrgcase $1 in 132a0c41156Smrg *-*-*-*-*) 133a0c41156Smrg echo Invalid configuration \`"$1"\': more than four components >&2 134a0c41156Smrg exit 1 13545bc899bSmrg ;; 136a0c41156Smrg *-*-*-*) 137a0c41156Smrg basic_machine=$field1-$field2 138e8b4ed9fSmrg basic_os=$field3-$field4 13945bc899bSmrg ;; 140a0c41156Smrg *-*-*) 141a0c41156Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142a0c41156Smrg # parts 143a0c41156Smrg maybe_os=$field2-$field3 144a0c41156Smrg case $maybe_os in 145e8b4ed9fSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 146a0c41156Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147a0c41156Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148a0c41156Smrg | storm-chaos* | os2-emx* | rtmk-nova*) 149a0c41156Smrg basic_machine=$field1 150e8b4ed9fSmrg basic_os=$maybe_os 151a0c41156Smrg ;; 152a0c41156Smrg android-linux) 153a0c41156Smrg basic_machine=$field1-unknown 154e8b4ed9fSmrg basic_os=linux-android 155a0c41156Smrg ;; 156a0c41156Smrg *) 157a0c41156Smrg basic_machine=$field1-$field2 158e8b4ed9fSmrg basic_os=$field3 159a0c41156Smrg ;; 160a0c41156Smrg esac 16145bc899bSmrg ;; 162a0c41156Smrg *-*) 163e8b4ed9fSmrg # A lone config we happen to match not fitting any pattern 164a0c41156Smrg case $field1-$field2 in 165a0c41156Smrg decstation-3100) 166a0c41156Smrg basic_machine=mips-dec 167e8b4ed9fSmrg basic_os= 168a0c41156Smrg ;; 169a0c41156Smrg *-*) 170a0c41156Smrg # Second component is usually, but not always the OS 171a0c41156Smrg case $field2 in 172a0c41156Smrg # Prevent following clause from handling this valid os 173a0c41156Smrg sun*os*) 174a0c41156Smrg basic_machine=$field1 175e8b4ed9fSmrg basic_os=$field2 176e8b4ed9fSmrg ;; 177e8b4ed9fSmrg zephyr*) 178e8b4ed9fSmrg basic_machine=$field1-unknown 179e8b4ed9fSmrg basic_os=$field2 180a0c41156Smrg ;; 181a0c41156Smrg # Manufacturers 182a0c41156Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183a0c41156Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184a0c41156Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185a0c41156Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186a0c41156Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187a0c41156Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188a0c41156Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189a0c41156Smrg | microblaze* | sim | cisco \ 190a0c41156Smrg | oki | wec | wrs | winbond) 191a0c41156Smrg basic_machine=$field1-$field2 192e8b4ed9fSmrg basic_os= 193a0c41156Smrg ;; 194a0c41156Smrg *) 195a0c41156Smrg basic_machine=$field1 196e8b4ed9fSmrg basic_os=$field2 197a0c41156Smrg ;; 198a0c41156Smrg esac 199a0c41156Smrg ;; 200a0c41156Smrg esac 20145bc899bSmrg ;; 202a0c41156Smrg *) 203a0c41156Smrg # Convert single-component short-hands not valid as part of 204a0c41156Smrg # multi-component configurations. 205a0c41156Smrg case $field1 in 206a0c41156Smrg 386bsd) 207a0c41156Smrg basic_machine=i386-pc 208e8b4ed9fSmrg basic_os=bsd 209a0c41156Smrg ;; 210a0c41156Smrg a29khif) 211a0c41156Smrg basic_machine=a29k-amd 212e8b4ed9fSmrg basic_os=udi 213a0c41156Smrg ;; 214a0c41156Smrg adobe68k) 215a0c41156Smrg basic_machine=m68010-adobe 216e8b4ed9fSmrg basic_os=scout 217a0c41156Smrg ;; 218a0c41156Smrg alliant) 219a0c41156Smrg basic_machine=fx80-alliant 220e8b4ed9fSmrg basic_os= 221a0c41156Smrg ;; 222a0c41156Smrg altos | altos3068) 223a0c41156Smrg basic_machine=m68k-altos 224e8b4ed9fSmrg basic_os= 225a0c41156Smrg ;; 226a0c41156Smrg am29k) 227a0c41156Smrg basic_machine=a29k-none 228e8b4ed9fSmrg basic_os=bsd 229a0c41156Smrg ;; 230a0c41156Smrg amdahl) 231a0c41156Smrg basic_machine=580-amdahl 232e8b4ed9fSmrg basic_os=sysv 233a0c41156Smrg ;; 234a0c41156Smrg amiga) 235a0c41156Smrg basic_machine=m68k-unknown 236e8b4ed9fSmrg basic_os= 237a0c41156Smrg ;; 238a0c41156Smrg amigaos | amigados) 239a0c41156Smrg basic_machine=m68k-unknown 240e8b4ed9fSmrg basic_os=amigaos 241a0c41156Smrg ;; 242a0c41156Smrg amigaunix | amix) 243a0c41156Smrg basic_machine=m68k-unknown 244e8b4ed9fSmrg basic_os=sysv4 245a0c41156Smrg ;; 246a0c41156Smrg apollo68) 247a0c41156Smrg basic_machine=m68k-apollo 248e8b4ed9fSmrg basic_os=sysv 249a0c41156Smrg ;; 250a0c41156Smrg apollo68bsd) 251a0c41156Smrg basic_machine=m68k-apollo 252e8b4ed9fSmrg basic_os=bsd 253a0c41156Smrg ;; 254a0c41156Smrg aros) 255a0c41156Smrg basic_machine=i386-pc 256e8b4ed9fSmrg basic_os=aros 257a0c41156Smrg ;; 258a0c41156Smrg aux) 259a0c41156Smrg basic_machine=m68k-apple 260e8b4ed9fSmrg basic_os=aux 261a0c41156Smrg ;; 262a0c41156Smrg balance) 263a0c41156Smrg basic_machine=ns32k-sequent 264e8b4ed9fSmrg basic_os=dynix 265a0c41156Smrg ;; 266a0c41156Smrg blackfin) 267a0c41156Smrg basic_machine=bfin-unknown 268e8b4ed9fSmrg basic_os=linux 269a0c41156Smrg ;; 270a0c41156Smrg cegcc) 271a0c41156Smrg basic_machine=arm-unknown 272e8b4ed9fSmrg basic_os=cegcc 273a0c41156Smrg ;; 274a0c41156Smrg convex-c1) 275a0c41156Smrg basic_machine=c1-convex 276e8b4ed9fSmrg basic_os=bsd 277a0c41156Smrg ;; 278a0c41156Smrg convex-c2) 279a0c41156Smrg basic_machine=c2-convex 280e8b4ed9fSmrg basic_os=bsd 281a0c41156Smrg ;; 282a0c41156Smrg convex-c32) 283a0c41156Smrg basic_machine=c32-convex 284e8b4ed9fSmrg basic_os=bsd 285a0c41156Smrg ;; 286a0c41156Smrg convex-c34) 287a0c41156Smrg basic_machine=c34-convex 288e8b4ed9fSmrg basic_os=bsd 289a0c41156Smrg ;; 290a0c41156Smrg convex-c38) 291a0c41156Smrg basic_machine=c38-convex 292e8b4ed9fSmrg basic_os=bsd 293a0c41156Smrg ;; 294a0c41156Smrg cray) 295a0c41156Smrg basic_machine=j90-cray 296e8b4ed9fSmrg basic_os=unicos 297a0c41156Smrg ;; 298a0c41156Smrg crds | unos) 299a0c41156Smrg basic_machine=m68k-crds 300e8b4ed9fSmrg basic_os= 301a0c41156Smrg ;; 302a0c41156Smrg da30) 303a0c41156Smrg basic_machine=m68k-da30 304e8b4ed9fSmrg basic_os= 305a0c41156Smrg ;; 306a0c41156Smrg decstation | pmax | pmin | dec3100 | decstatn) 307a0c41156Smrg basic_machine=mips-dec 308e8b4ed9fSmrg basic_os= 309a0c41156Smrg ;; 310a0c41156Smrg delta88) 311a0c41156Smrg basic_machine=m88k-motorola 312e8b4ed9fSmrg basic_os=sysv3 313a0c41156Smrg ;; 314a0c41156Smrg dicos) 315a0c41156Smrg basic_machine=i686-pc 316e8b4ed9fSmrg basic_os=dicos 317a0c41156Smrg ;; 318a0c41156Smrg djgpp) 319a0c41156Smrg basic_machine=i586-pc 320e8b4ed9fSmrg basic_os=msdosdjgpp 321a0c41156Smrg ;; 322a0c41156Smrg ebmon29k) 323a0c41156Smrg basic_machine=a29k-amd 324e8b4ed9fSmrg basic_os=ebmon 325a0c41156Smrg ;; 326a0c41156Smrg es1800 | OSE68k | ose68k | ose | OSE) 327a0c41156Smrg basic_machine=m68k-ericsson 328e8b4ed9fSmrg basic_os=ose 329a0c41156Smrg ;; 330a0c41156Smrg gmicro) 331a0c41156Smrg basic_machine=tron-gmicro 332e8b4ed9fSmrg basic_os=sysv 333a0c41156Smrg ;; 334a0c41156Smrg go32) 335a0c41156Smrg basic_machine=i386-pc 336e8b4ed9fSmrg basic_os=go32 337a0c41156Smrg ;; 338a0c41156Smrg h8300hms) 339a0c41156Smrg basic_machine=h8300-hitachi 340e8b4ed9fSmrg basic_os=hms 341a0c41156Smrg ;; 342a0c41156Smrg h8300xray) 343a0c41156Smrg basic_machine=h8300-hitachi 344e8b4ed9fSmrg basic_os=xray 345a0c41156Smrg ;; 346a0c41156Smrg h8500hms) 347a0c41156Smrg basic_machine=h8500-hitachi 348e8b4ed9fSmrg basic_os=hms 349a0c41156Smrg ;; 350a0c41156Smrg harris) 351a0c41156Smrg basic_machine=m88k-harris 352e8b4ed9fSmrg basic_os=sysv3 353a0c41156Smrg ;; 354e8b4ed9fSmrg hp300 | hp300hpux) 355a0c41156Smrg basic_machine=m68k-hp 356e8b4ed9fSmrg basic_os=hpux 357a0c41156Smrg ;; 358a0c41156Smrg hp300bsd) 359a0c41156Smrg basic_machine=m68k-hp 360e8b4ed9fSmrg basic_os=bsd 361a0c41156Smrg ;; 362a0c41156Smrg hppaosf) 363a0c41156Smrg basic_machine=hppa1.1-hp 364e8b4ed9fSmrg basic_os=osf 365a0c41156Smrg ;; 366a0c41156Smrg hppro) 367a0c41156Smrg basic_machine=hppa1.1-hp 368e8b4ed9fSmrg basic_os=proelf 369a0c41156Smrg ;; 370a0c41156Smrg i386mach) 371a0c41156Smrg basic_machine=i386-mach 372e8b4ed9fSmrg basic_os=mach 373a0c41156Smrg ;; 374a0c41156Smrg isi68 | isi) 375a0c41156Smrg basic_machine=m68k-isi 376e8b4ed9fSmrg basic_os=sysv 377a0c41156Smrg ;; 378a0c41156Smrg m68knommu) 379a0c41156Smrg basic_machine=m68k-unknown 380e8b4ed9fSmrg basic_os=linux 381a0c41156Smrg ;; 382a0c41156Smrg magnum | m3230) 383a0c41156Smrg basic_machine=mips-mips 384e8b4ed9fSmrg basic_os=sysv 385a0c41156Smrg ;; 386a0c41156Smrg merlin) 387a0c41156Smrg basic_machine=ns32k-utek 388e8b4ed9fSmrg basic_os=sysv 389a0c41156Smrg ;; 390a0c41156Smrg mingw64) 391a0c41156Smrg basic_machine=x86_64-pc 392e8b4ed9fSmrg basic_os=mingw64 393a0c41156Smrg ;; 394a0c41156Smrg mingw32) 395a0c41156Smrg basic_machine=i686-pc 396e8b4ed9fSmrg basic_os=mingw32 397a0c41156Smrg ;; 398a0c41156Smrg mingw32ce) 399a0c41156Smrg basic_machine=arm-unknown 400e8b4ed9fSmrg basic_os=mingw32ce 401a0c41156Smrg ;; 402a0c41156Smrg monitor) 403a0c41156Smrg basic_machine=m68k-rom68k 404e8b4ed9fSmrg basic_os=coff 405a0c41156Smrg ;; 406a0c41156Smrg morphos) 407a0c41156Smrg basic_machine=powerpc-unknown 408e8b4ed9fSmrg basic_os=morphos 409a0c41156Smrg ;; 410a0c41156Smrg moxiebox) 411a0c41156Smrg basic_machine=moxie-unknown 412e8b4ed9fSmrg basic_os=moxiebox 413a0c41156Smrg ;; 414a0c41156Smrg msdos) 415a0c41156Smrg basic_machine=i386-pc 416e8b4ed9fSmrg basic_os=msdos 417a0c41156Smrg ;; 418a0c41156Smrg msys) 419a0c41156Smrg basic_machine=i686-pc 420e8b4ed9fSmrg basic_os=msys 421a0c41156Smrg ;; 422a0c41156Smrg mvs) 423a0c41156Smrg basic_machine=i370-ibm 424e8b4ed9fSmrg basic_os=mvs 425a0c41156Smrg ;; 426a0c41156Smrg nacl) 427a0c41156Smrg basic_machine=le32-unknown 428e8b4ed9fSmrg basic_os=nacl 429a0c41156Smrg ;; 430a0c41156Smrg ncr3000) 431a0c41156Smrg basic_machine=i486-ncr 432e8b4ed9fSmrg basic_os=sysv4 433a0c41156Smrg ;; 434a0c41156Smrg netbsd386) 435a0c41156Smrg basic_machine=i386-pc 436e8b4ed9fSmrg basic_os=netbsd 437a0c41156Smrg ;; 438a0c41156Smrg netwinder) 439a0c41156Smrg basic_machine=armv4l-rebel 440e8b4ed9fSmrg basic_os=linux 441a0c41156Smrg ;; 442a0c41156Smrg news | news700 | news800 | news900) 443a0c41156Smrg basic_machine=m68k-sony 444e8b4ed9fSmrg basic_os=newsos 445a0c41156Smrg ;; 446a0c41156Smrg news1000) 447a0c41156Smrg basic_machine=m68030-sony 448e8b4ed9fSmrg basic_os=newsos 449a0c41156Smrg ;; 450a0c41156Smrg necv70) 451a0c41156Smrg basic_machine=v70-nec 452e8b4ed9fSmrg basic_os=sysv 453a0c41156Smrg ;; 454a0c41156Smrg nh3000) 455a0c41156Smrg basic_machine=m68k-harris 456e8b4ed9fSmrg basic_os=cxux 457a0c41156Smrg ;; 458a0c41156Smrg nh[45]000) 459a0c41156Smrg basic_machine=m88k-harris 460e8b4ed9fSmrg basic_os=cxux 461a0c41156Smrg ;; 462a0c41156Smrg nindy960) 463a0c41156Smrg basic_machine=i960-intel 464e8b4ed9fSmrg basic_os=nindy 465a0c41156Smrg ;; 466a0c41156Smrg mon960) 467a0c41156Smrg basic_machine=i960-intel 468e8b4ed9fSmrg basic_os=mon960 469a0c41156Smrg ;; 470a0c41156Smrg nonstopux) 471a0c41156Smrg basic_machine=mips-compaq 472e8b4ed9fSmrg basic_os=nonstopux 473a0c41156Smrg ;; 474a0c41156Smrg os400) 475a0c41156Smrg basic_machine=powerpc-ibm 476e8b4ed9fSmrg basic_os=os400 477a0c41156Smrg ;; 478a0c41156Smrg OSE68000 | ose68000) 479a0c41156Smrg basic_machine=m68000-ericsson 480e8b4ed9fSmrg basic_os=ose 481a0c41156Smrg ;; 482a0c41156Smrg os68k) 483a0c41156Smrg basic_machine=m68k-none 484e8b4ed9fSmrg basic_os=os68k 485a0c41156Smrg ;; 486a0c41156Smrg paragon) 487a0c41156Smrg basic_machine=i860-intel 488e8b4ed9fSmrg basic_os=osf 489a0c41156Smrg ;; 490a0c41156Smrg parisc) 491a0c41156Smrg basic_machine=hppa-unknown 492e8b4ed9fSmrg basic_os=linux 493e8b4ed9fSmrg ;; 494e8b4ed9fSmrg psp) 495e8b4ed9fSmrg basic_machine=mipsallegrexel-sony 496e8b4ed9fSmrg basic_os=psp 497a0c41156Smrg ;; 498a0c41156Smrg pw32) 499a0c41156Smrg basic_machine=i586-unknown 500e8b4ed9fSmrg basic_os=pw32 501a0c41156Smrg ;; 502a0c41156Smrg rdos | rdos64) 503a0c41156Smrg basic_machine=x86_64-pc 504e8b4ed9fSmrg basic_os=rdos 505a0c41156Smrg ;; 506a0c41156Smrg rdos32) 507a0c41156Smrg basic_machine=i386-pc 508e8b4ed9fSmrg basic_os=rdos 509a0c41156Smrg ;; 510a0c41156Smrg rom68k) 511a0c41156Smrg basic_machine=m68k-rom68k 512e8b4ed9fSmrg basic_os=coff 513a0c41156Smrg ;; 514a0c41156Smrg sa29200) 515a0c41156Smrg basic_machine=a29k-amd 516e8b4ed9fSmrg basic_os=udi 517a0c41156Smrg ;; 518a0c41156Smrg sei) 519a0c41156Smrg basic_machine=mips-sei 520e8b4ed9fSmrg basic_os=seiux 521a0c41156Smrg ;; 522a0c41156Smrg sequent) 523a0c41156Smrg basic_machine=i386-sequent 524e8b4ed9fSmrg basic_os= 525a0c41156Smrg ;; 526a0c41156Smrg sps7) 527a0c41156Smrg basic_machine=m68k-bull 528e8b4ed9fSmrg basic_os=sysv2 529a0c41156Smrg ;; 530a0c41156Smrg st2000) 531a0c41156Smrg basic_machine=m68k-tandem 532e8b4ed9fSmrg basic_os= 533a0c41156Smrg ;; 534a0c41156Smrg stratus) 535a0c41156Smrg basic_machine=i860-stratus 536e8b4ed9fSmrg basic_os=sysv4 537a0c41156Smrg ;; 538a0c41156Smrg sun2) 539a0c41156Smrg basic_machine=m68000-sun 540e8b4ed9fSmrg basic_os= 541a0c41156Smrg ;; 542a0c41156Smrg sun2os3) 543a0c41156Smrg basic_machine=m68000-sun 544e8b4ed9fSmrg basic_os=sunos3 545a0c41156Smrg ;; 546a0c41156Smrg sun2os4) 547a0c41156Smrg basic_machine=m68000-sun 548e8b4ed9fSmrg basic_os=sunos4 549a0c41156Smrg ;; 550a0c41156Smrg sun3) 551a0c41156Smrg basic_machine=m68k-sun 552e8b4ed9fSmrg basic_os= 553a0c41156Smrg ;; 554a0c41156Smrg sun3os3) 555a0c41156Smrg basic_machine=m68k-sun 556e8b4ed9fSmrg basic_os=sunos3 557a0c41156Smrg ;; 558a0c41156Smrg sun3os4) 559a0c41156Smrg basic_machine=m68k-sun 560e8b4ed9fSmrg basic_os=sunos4 561a0c41156Smrg ;; 562a0c41156Smrg sun4) 563a0c41156Smrg basic_machine=sparc-sun 564e8b4ed9fSmrg basic_os= 565a0c41156Smrg ;; 566a0c41156Smrg sun4os3) 567a0c41156Smrg basic_machine=sparc-sun 568e8b4ed9fSmrg basic_os=sunos3 569a0c41156Smrg ;; 570a0c41156Smrg sun4os4) 571a0c41156Smrg basic_machine=sparc-sun 572e8b4ed9fSmrg basic_os=sunos4 573a0c41156Smrg ;; 574a0c41156Smrg sun4sol2) 575a0c41156Smrg basic_machine=sparc-sun 576e8b4ed9fSmrg basic_os=solaris2 577a0c41156Smrg ;; 578a0c41156Smrg sun386 | sun386i | roadrunner) 579a0c41156Smrg basic_machine=i386-sun 580e8b4ed9fSmrg basic_os= 581a0c41156Smrg ;; 582a0c41156Smrg sv1) 583a0c41156Smrg basic_machine=sv1-cray 584e8b4ed9fSmrg basic_os=unicos 585a0c41156Smrg ;; 586a0c41156Smrg symmetry) 587a0c41156Smrg basic_machine=i386-sequent 588e8b4ed9fSmrg basic_os=dynix 589a0c41156Smrg ;; 590a0c41156Smrg t3e) 591a0c41156Smrg basic_machine=alphaev5-cray 592e8b4ed9fSmrg basic_os=unicos 593a0c41156Smrg ;; 594a0c41156Smrg t90) 595a0c41156Smrg basic_machine=t90-cray 596e8b4ed9fSmrg basic_os=unicos 597a0c41156Smrg ;; 598a0c41156Smrg toad1) 599a0c41156Smrg basic_machine=pdp10-xkl 600e8b4ed9fSmrg basic_os=tops20 601a0c41156Smrg ;; 602a0c41156Smrg tpf) 603a0c41156Smrg basic_machine=s390x-ibm 604e8b4ed9fSmrg basic_os=tpf 605a0c41156Smrg ;; 606a0c41156Smrg udi29k) 607a0c41156Smrg basic_machine=a29k-amd 608e8b4ed9fSmrg basic_os=udi 609a0c41156Smrg ;; 610a0c41156Smrg ultra3) 611a0c41156Smrg basic_machine=a29k-nyu 612e8b4ed9fSmrg basic_os=sym1 613a0c41156Smrg ;; 614a0c41156Smrg v810 | necv810) 615a0c41156Smrg basic_machine=v810-nec 616e8b4ed9fSmrg basic_os=none 617a0c41156Smrg ;; 618a0c41156Smrg vaxv) 619a0c41156Smrg basic_machine=vax-dec 620e8b4ed9fSmrg basic_os=sysv 621a0c41156Smrg ;; 622a0c41156Smrg vms) 623a0c41156Smrg basic_machine=vax-dec 624e8b4ed9fSmrg basic_os=vms 625e8b4ed9fSmrg ;; 626e8b4ed9fSmrg vsta) 627e8b4ed9fSmrg basic_machine=i386-pc 628e8b4ed9fSmrg basic_os=vsta 629a0c41156Smrg ;; 630a0c41156Smrg vxworks960) 631a0c41156Smrg basic_machine=i960-wrs 632e8b4ed9fSmrg basic_os=vxworks 633a0c41156Smrg ;; 634a0c41156Smrg vxworks68) 635a0c41156Smrg basic_machine=m68k-wrs 636e8b4ed9fSmrg basic_os=vxworks 637a0c41156Smrg ;; 638a0c41156Smrg vxworks29k) 639a0c41156Smrg basic_machine=a29k-wrs 640e8b4ed9fSmrg basic_os=vxworks 641a0c41156Smrg ;; 642a0c41156Smrg xbox) 643a0c41156Smrg basic_machine=i686-pc 644e8b4ed9fSmrg basic_os=mingw32 645a0c41156Smrg ;; 646a0c41156Smrg ymp) 647a0c41156Smrg basic_machine=ymp-cray 648e8b4ed9fSmrg basic_os=unicos 649a0c41156Smrg ;; 650a0c41156Smrg *) 651a0c41156Smrg basic_machine=$1 652e8b4ed9fSmrg basic_os= 653a0c41156Smrg ;; 654a0c41156Smrg esac 65545bc899bSmrg ;; 65645bc899bSmrgesac 65745bc899bSmrg 658a0c41156Smrg# Decode 1-component or ad-hoc basic machines 65945bc899bSmrgcase $basic_machine in 660a0c41156Smrg # Here we handle the default manufacturer of certain CPU types. It is in 661a0c41156Smrg # some cases the only manufacturer, in others, it is the most popular. 662a0c41156Smrg w89k) 663a0c41156Smrg cpu=hppa1.1 664a0c41156Smrg vendor=winbond 66545bc899bSmrg ;; 666a0c41156Smrg op50n) 667a0c41156Smrg cpu=hppa1.1 668a0c41156Smrg vendor=oki 66945bc899bSmrg ;; 670a0c41156Smrg op60c) 671a0c41156Smrg cpu=hppa1.1 672a0c41156Smrg vendor=oki 67350f2e948Smrg ;; 674a0c41156Smrg ibm*) 675a0c41156Smrg cpu=i370 676a0c41156Smrg vendor=ibm 677b40a6198Smrg ;; 678a0c41156Smrg orion105) 679a0c41156Smrg cpu=clipper 680a0c41156Smrg vendor=highlevel 681c97b1c41Smrg ;; 682a0c41156Smrg mac | mpw | mac-mpw) 683a0c41156Smrg cpu=m68k 684a0c41156Smrg vendor=apple 685b40a6198Smrg ;; 686a0c41156Smrg pmac | pmac-mpw) 687a0c41156Smrg cpu=powerpc 688a0c41156Smrg vendor=apple 689b40a6198Smrg ;; 690b40a6198Smrg 69145bc899bSmrg # Recognize the various machine names and aliases which stand 69245bc899bSmrg # for a CPU type and a company and sometimes even an OS. 69345bc899bSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694a0c41156Smrg cpu=m68000 695a0c41156Smrg vendor=att 69645bc899bSmrg ;; 69745bc899bSmrg 3b*) 698a0c41156Smrg cpu=we32k 699a0c41156Smrg vendor=att 70050f2e948Smrg ;; 701b40a6198Smrg bluegene*) 702a0c41156Smrg cpu=powerpc 703a0c41156Smrg vendor=ibm 704e8b4ed9fSmrg basic_os=cnk 70545bc899bSmrg ;; 70645bc899bSmrg decsystem10* | dec10*) 707a0c41156Smrg cpu=pdp10 708a0c41156Smrg vendor=dec 709e8b4ed9fSmrg basic_os=tops10 71045bc899bSmrg ;; 71145bc899bSmrg decsystem20* | dec20*) 712a0c41156Smrg cpu=pdp10 713a0c41156Smrg vendor=dec 714e8b4ed9fSmrg basic_os=tops20 71545bc899bSmrg ;; 71645bc899bSmrg delta | 3300 | motorola-3300 | motorola-delta \ 71745bc899bSmrg | 3300-motorola | delta-motorola) 718a0c41156Smrg cpu=m68k 719a0c41156Smrg vendor=motorola 72045bc899bSmrg ;; 721a0c41156Smrg dpx2*) 722a0c41156Smrg cpu=m68k 723a0c41156Smrg vendor=bull 724e8b4ed9fSmrg basic_os=sysv3 72545bc899bSmrg ;; 72645bc899bSmrg encore | umax | mmax) 727a0c41156Smrg cpu=ns32k 728a0c41156Smrg vendor=encore 72945bc899bSmrg ;; 730a0c41156Smrg elxsi) 731a0c41156Smrg cpu=elxsi 732a0c41156Smrg vendor=elxsi 733e8b4ed9fSmrg basic_os=${basic_os:-bsd} 73445bc899bSmrg ;; 73545bc899bSmrg fx2800) 736a0c41156Smrg cpu=i860 737a0c41156Smrg vendor=alliant 73845bc899bSmrg ;; 73945bc899bSmrg genix) 740a0c41156Smrg cpu=ns32k 741a0c41156Smrg vendor=ns 74245bc899bSmrg ;; 74345bc899bSmrg h3050r* | hiux*) 744a0c41156Smrg cpu=hppa1.1 745a0c41156Smrg vendor=hitachi 746e8b4ed9fSmrg basic_os=hiuxwe2 74745bc899bSmrg ;; 74845bc899bSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749a0c41156Smrg cpu=hppa1.0 750a0c41156Smrg vendor=hp 75145bc899bSmrg ;; 75245bc899bSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753a0c41156Smrg cpu=m68000 754a0c41156Smrg vendor=hp 75545bc899bSmrg ;; 75645bc899bSmrg hp9k3[2-9][0-9]) 757a0c41156Smrg cpu=m68k 758a0c41156Smrg vendor=hp 75945bc899bSmrg ;; 76045bc899bSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761a0c41156Smrg cpu=hppa1.0 762a0c41156Smrg vendor=hp 76345bc899bSmrg ;; 76445bc899bSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765a0c41156Smrg cpu=hppa1.1 766a0c41156Smrg vendor=hp 76745bc899bSmrg ;; 76845bc899bSmrg hp9k78[0-9] | hp78[0-9]) 76945bc899bSmrg # FIXME: really hppa2.0-hp 770a0c41156Smrg cpu=hppa1.1 771a0c41156Smrg vendor=hp 77245bc899bSmrg ;; 77345bc899bSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77445bc899bSmrg # FIXME: really hppa2.0-hp 775a0c41156Smrg cpu=hppa1.1 776a0c41156Smrg vendor=hp 77745bc899bSmrg ;; 77845bc899bSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779a0c41156Smrg cpu=hppa1.1 780a0c41156Smrg vendor=hp 78145bc899bSmrg ;; 78245bc899bSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783a0c41156Smrg cpu=hppa1.0 784a0c41156Smrg vendor=hp 78545bc899bSmrg ;; 78645bc899bSmrg i*86v32) 787a0c41156Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788a0c41156Smrg vendor=pc 789e8b4ed9fSmrg basic_os=sysv32 79045bc899bSmrg ;; 79145bc899bSmrg i*86v4*) 792a0c41156Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793a0c41156Smrg vendor=pc 794e8b4ed9fSmrg basic_os=sysv4 79545bc899bSmrg ;; 79645bc899bSmrg i*86v) 797a0c41156Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798a0c41156Smrg vendor=pc 799e8b4ed9fSmrg basic_os=sysv 80045bc899bSmrg ;; 80145bc899bSmrg i*86sol2) 802a0c41156Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803a0c41156Smrg vendor=pc 804e8b4ed9fSmrg basic_os=solaris2 80545bc899bSmrg ;; 806a0c41156Smrg j90 | j90-cray) 807a0c41156Smrg cpu=j90 808a0c41156Smrg vendor=cray 809e8b4ed9fSmrg basic_os=${basic_os:-unicos} 81045bc899bSmrg ;; 81145bc899bSmrg iris | iris4d) 812a0c41156Smrg cpu=mips 813a0c41156Smrg vendor=sgi 814e8b4ed9fSmrg case $basic_os in 815a0c41156Smrg irix*) 81645bc899bSmrg ;; 81745bc899bSmrg *) 818e8b4ed9fSmrg basic_os=irix4 81945bc899bSmrg ;; 82045bc899bSmrg esac 82145bc899bSmrg ;; 82245bc899bSmrg miniframe) 823a0c41156Smrg cpu=m68000 824a0c41156Smrg vendor=convergent 825b40a6198Smrg ;; 826a0c41156Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827a0c41156Smrg cpu=m68k 828a0c41156Smrg vendor=atari 829e8b4ed9fSmrg basic_os=mint 83045bc899bSmrg ;; 83145bc899bSmrg news-3600 | risc-news) 832a0c41156Smrg cpu=mips 833a0c41156Smrg vendor=sony 834e8b4ed9fSmrg basic_os=newsos 83545bc899bSmrg ;; 836a0c41156Smrg next | m*-next) 837a0c41156Smrg cpu=m68k 838a0c41156Smrg vendor=next 839e8b4ed9fSmrg case $basic_os in 840e8b4ed9fSmrg openstep*) 841e8b4ed9fSmrg ;; 842e8b4ed9fSmrg nextstep*) 84345bc899bSmrg ;; 844a0c41156Smrg ns2*) 845e8b4ed9fSmrg basic_os=nextstep2 84645bc899bSmrg ;; 84745bc899bSmrg *) 848e8b4ed9fSmrg basic_os=nextstep3 84945bc899bSmrg ;; 85045bc899bSmrg esac 85145bc899bSmrg ;; 85245bc899bSmrg np1) 853a0c41156Smrg cpu=np1 854a0c41156Smrg vendor=gould 855f2408745Smrg ;; 85645bc899bSmrg op50n-* | op60c-*) 857a0c41156Smrg cpu=hppa1.1 858a0c41156Smrg vendor=oki 859e8b4ed9fSmrg basic_os=proelf 86045bc899bSmrg ;; 86145bc899bSmrg pa-hitachi) 862a0c41156Smrg cpu=hppa1.1 863a0c41156Smrg vendor=hitachi 864e8b4ed9fSmrg basic_os=hiuxwe2 86550f2e948Smrg ;; 86645bc899bSmrg pbd) 867a0c41156Smrg cpu=sparc 868a0c41156Smrg vendor=tti 86945bc899bSmrg ;; 87045bc899bSmrg pbb) 871a0c41156Smrg cpu=m68k 872a0c41156Smrg vendor=tti 87345bc899bSmrg ;; 874a0c41156Smrg pc532) 875a0c41156Smrg cpu=ns32k 876a0c41156Smrg vendor=pc532 87745bc899bSmrg ;; 87845bc899bSmrg pn) 879a0c41156Smrg cpu=pn 880a0c41156Smrg vendor=gould 88145bc899bSmrg ;; 882a0c41156Smrg power) 883a0c41156Smrg cpu=power 884a0c41156Smrg vendor=ibm 88545bc899bSmrg ;; 88645bc899bSmrg ps2) 887a0c41156Smrg cpu=i386 888a0c41156Smrg vendor=ibm 88945bc899bSmrg ;; 89045bc899bSmrg rm[46]00) 891a0c41156Smrg cpu=mips 892a0c41156Smrg vendor=siemens 89345bc899bSmrg ;; 89445bc899bSmrg rtpc | rtpc-*) 895a0c41156Smrg cpu=romp 896a0c41156Smrg vendor=ibm 89745bc899bSmrg ;; 89850f2e948Smrg sde) 899a0c41156Smrg cpu=mipsisa32 900a0c41156Smrg vendor=sde 901e8b4ed9fSmrg basic_os=${basic_os:-elf} 90250f2e948Smrg ;; 903a0c41156Smrg simso-wrs) 904a0c41156Smrg cpu=sparclite 905a0c41156Smrg vendor=wrs 906e8b4ed9fSmrg basic_os=vxworks 90745bc899bSmrg ;; 908a0c41156Smrg tower | tower-32) 909a0c41156Smrg cpu=m68k 910a0c41156Smrg vendor=ncr 91145bc899bSmrg ;; 912a0c41156Smrg vpp*|vx|vx-*) 913a0c41156Smrg cpu=f301 914a0c41156Smrg vendor=fujitsu 91545bc899bSmrg ;; 916a0c41156Smrg w65) 917a0c41156Smrg cpu=w65 918a0c41156Smrg vendor=wdc 91950f2e948Smrg ;; 920a0c41156Smrg w89k-*) 921a0c41156Smrg cpu=hppa1.1 922a0c41156Smrg vendor=winbond 923e8b4ed9fSmrg basic_os=proelf 92445bc899bSmrg ;; 925a0c41156Smrg none) 926a0c41156Smrg cpu=none 927a0c41156Smrg vendor=none 92845bc899bSmrg ;; 929a0c41156Smrg leon|leon[3-9]) 930a0c41156Smrg cpu=sparc 931a0c41156Smrg vendor=$basic_machine 93245bc899bSmrg ;; 933a0c41156Smrg leon-*|leon[3-9]-*) 934a0c41156Smrg cpu=sparc 935a0c41156Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 93645bc899bSmrg ;; 937a0c41156Smrg 938a0c41156Smrg *-*) 939e8b4ed9fSmrg # shellcheck disable=SC2162 940e8b4ed9fSmrg saved_IFS=$IFS 941e8b4ed9fSmrg IFS="-" read cpu vendor <<EOF 942a0c41156Smrg$basic_machine 943a0c41156SmrgEOF 944e8b4ed9fSmrg IFS=$saved_IFS 94545bc899bSmrg ;; 946a0c41156Smrg # We use `pc' rather than `unknown' 947a0c41156Smrg # because (1) that's what they normally are, and 948a0c41156Smrg # (2) the word "unknown" tends to confuse beginning users. 949a0c41156Smrg i*86 | x86_64) 950a0c41156Smrg cpu=$basic_machine 951a0c41156Smrg vendor=pc 95245bc899bSmrg ;; 953a0c41156Smrg # These rules are duplicated from below for sake of the special case above; 954a0c41156Smrg # i.e. things that normalized to x86 arches should also default to "pc" 955a0c41156Smrg pc98) 956a0c41156Smrg cpu=i386 957a0c41156Smrg vendor=pc 958b40a6198Smrg ;; 959a0c41156Smrg x64 | amd64) 960a0c41156Smrg cpu=x86_64 961a0c41156Smrg vendor=pc 96245bc899bSmrg ;; 963a0c41156Smrg # Recognize the basic CPU types without company name. 964a0c41156Smrg *) 965a0c41156Smrg cpu=$basic_machine 966a0c41156Smrg vendor=unknown 96745bc899bSmrg ;; 968a0c41156Smrgesac 969a0c41156Smrg 970a0c41156Smrgunset -v basic_machine 971a0c41156Smrg 972a0c41156Smrg# Decode basic machines in the full and proper CPU-Company form. 973a0c41156Smrgcase $cpu-$vendor in 974e8b4ed9fSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975a0c41156Smrg # some cases the only manufacturer, in others, it is the most popular. 976a0c41156Smrg craynv-unknown) 977a0c41156Smrg vendor=cray 978e8b4ed9fSmrg basic_os=${basic_os:-unicosmp} 97945bc899bSmrg ;; 980a0c41156Smrg c90-unknown | c90-cray) 981a0c41156Smrg vendor=cray 982e8b4ed9fSmrg basic_os=${Basic_os:-unicos} 98345bc899bSmrg ;; 984a0c41156Smrg fx80-unknown) 985a0c41156Smrg vendor=alliant 98645bc899bSmrg ;; 987a0c41156Smrg romp-unknown) 988a0c41156Smrg vendor=ibm 98945bc899bSmrg ;; 990a0c41156Smrg mmix-unknown) 991a0c41156Smrg vendor=knuth 99245bc899bSmrg ;; 993a0c41156Smrg microblaze-unknown | microblazeel-unknown) 994a0c41156Smrg vendor=xilinx 99545bc899bSmrg ;; 996a0c41156Smrg rs6000-unknown) 997a0c41156Smrg vendor=ibm 99845bc899bSmrg ;; 999a0c41156Smrg vax-unknown) 1000a0c41156Smrg vendor=dec 100145bc899bSmrg ;; 1002a0c41156Smrg pdp11-unknown) 1003a0c41156Smrg vendor=dec 100445bc899bSmrg ;; 1005a0c41156Smrg we32k-unknown) 1006a0c41156Smrg vendor=att 100745bc899bSmrg ;; 1008a0c41156Smrg cydra-unknown) 1009a0c41156Smrg vendor=cydrome 101045bc899bSmrg ;; 1011a0c41156Smrg i370-ibm*) 1012a0c41156Smrg vendor=ibm 101345bc899bSmrg ;; 1014a0c41156Smrg orion-unknown) 1015a0c41156Smrg vendor=highlevel 101645bc899bSmrg ;; 1017a0c41156Smrg xps-unknown | xps100-unknown) 1018a0c41156Smrg cpu=xps100 1019a0c41156Smrg vendor=honeywell 102050f2e948Smrg ;; 1021a0c41156Smrg 1022a0c41156Smrg # Here we normalize CPU types with a missing or matching vendor 1023a0c41156Smrg dpx20-unknown | dpx20-bull) 1024a0c41156Smrg cpu=rs6000 1025a0c41156Smrg vendor=bull 1026e8b4ed9fSmrg basic_os=${basic_os:-bosx} 102745bc899bSmrg ;; 1028a0c41156Smrg 1029a0c41156Smrg # Here we normalize CPU types irrespective of the vendor 1030a0c41156Smrg amd64-*) 1031a0c41156Smrg cpu=x86_64 103245bc899bSmrg ;; 1033a0c41156Smrg blackfin-*) 1034a0c41156Smrg cpu=bfin 1035e8b4ed9fSmrg basic_os=linux 103645bc899bSmrg ;; 1037a0c41156Smrg c54x-*) 1038a0c41156Smrg cpu=tic54x 103945bc899bSmrg ;; 1040a0c41156Smrg c55x-*) 1041a0c41156Smrg cpu=tic55x 104250f2e948Smrg ;; 1043a0c41156Smrg c6x-*) 1044a0c41156Smrg cpu=tic6x 104545bc899bSmrg ;; 1046a0c41156Smrg e500v[12]-*) 1047a0c41156Smrg cpu=powerpc 1048e8b4ed9fSmrg basic_os=${basic_os}"spe" 104945bc899bSmrg ;; 1050a0c41156Smrg mips3*-*) 1051a0c41156Smrg cpu=mips64 105245bc899bSmrg ;; 1053a0c41156Smrg ms1-*) 1054a0c41156Smrg cpu=mt 105545bc899bSmrg ;; 1056a0c41156Smrg m68knommu-*) 1057a0c41156Smrg cpu=m68k 1058e8b4ed9fSmrg basic_os=linux 105945bc899bSmrg ;; 1060a0c41156Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1061a0c41156Smrg cpu=s12z 106245bc899bSmrg ;; 1063a0c41156Smrg openrisc-*) 1064a0c41156Smrg cpu=or32 106545bc899bSmrg ;; 1066a0c41156Smrg parisc-*) 1067a0c41156Smrg cpu=hppa 1068e8b4ed9fSmrg basic_os=linux 106945bc899bSmrg ;; 1070a0c41156Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1071a0c41156Smrg cpu=i586 107245bc899bSmrg ;; 1073a0c41156Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 1074a0c41156Smrg cpu=i686 1075f2408745Smrg ;; 1076a0c41156Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1077a0c41156Smrg cpu=i686 107845bc899bSmrg ;; 1079a0c41156Smrg pentium4-*) 1080a0c41156Smrg cpu=i786 108145bc899bSmrg ;; 1082a0c41156Smrg pc98-*) 1083a0c41156Smrg cpu=i386 108450f2e948Smrg ;; 1085a0c41156Smrg ppc-* | ppcbe-*) 1086a0c41156Smrg cpu=powerpc 108745bc899bSmrg ;; 1088a0c41156Smrg ppcle-* | powerpclittle-*) 1089a0c41156Smrg cpu=powerpcle 1090b40a6198Smrg ;; 1091a0c41156Smrg ppc64-*) 1092a0c41156Smrg cpu=powerpc64 109345bc899bSmrg ;; 1094a0c41156Smrg ppc64le-* | powerpc64little-*) 1095a0c41156Smrg cpu=powerpc64le 109645bc899bSmrg ;; 1097a0c41156Smrg sb1-*) 1098a0c41156Smrg cpu=mipsisa64sb1 1099b40a6198Smrg ;; 1100a0c41156Smrg sb1el-*) 1101a0c41156Smrg cpu=mipsisa64sb1el 110245bc899bSmrg ;; 1103a0c41156Smrg sh5e[lb]-*) 1104a0c41156Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 110545bc899bSmrg ;; 1106a0c41156Smrg spur-*) 1107a0c41156Smrg cpu=spur 110845bc899bSmrg ;; 1109a0c41156Smrg strongarm-* | thumb-*) 1110a0c41156Smrg cpu=arm 111145bc899bSmrg ;; 1112a0c41156Smrg tx39-*) 1113a0c41156Smrg cpu=mipstx39 111445bc899bSmrg ;; 1115a0c41156Smrg tx39el-*) 1116a0c41156Smrg cpu=mipstx39el 111750f2e948Smrg ;; 1118a0c41156Smrg x64-*) 1119a0c41156Smrg cpu=x86_64 112045bc899bSmrg ;; 1121a0c41156Smrg xscale-* | xscalee[bl]-*) 1122a0c41156Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112345bc899bSmrg ;; 1124e8b4ed9fSmrg arm64-*) 1125e8b4ed9fSmrg cpu=aarch64 1126e8b4ed9fSmrg ;; 1127a0c41156Smrg 1128e8b4ed9fSmrg # Recognize the canonical CPU Types that limit and/or modify the 1129a0c41156Smrg # company names they are paired with. 1130a0c41156Smrg cr16-*) 1131e8b4ed9fSmrg basic_os=${basic_os:-elf} 113245bc899bSmrg ;; 1133a0c41156Smrg crisv32-* | etraxfs*-*) 1134a0c41156Smrg cpu=crisv32 1135a0c41156Smrg vendor=axis 113645bc899bSmrg ;; 1137a0c41156Smrg cris-* | etrax*-*) 1138a0c41156Smrg cpu=cris 1139a0c41156Smrg vendor=axis 114045bc899bSmrg ;; 1141a0c41156Smrg crx-*) 1142e8b4ed9fSmrg basic_os=${basic_os:-elf} 114345bc899bSmrg ;; 1144a0c41156Smrg neo-tandem) 1145a0c41156Smrg cpu=neo 1146a0c41156Smrg vendor=tandem 114745bc899bSmrg ;; 1148a0c41156Smrg nse-tandem) 1149a0c41156Smrg cpu=nse 1150a0c41156Smrg vendor=tandem 115145bc899bSmrg ;; 1152a0c41156Smrg nsr-tandem) 1153a0c41156Smrg cpu=nsr 1154a0c41156Smrg vendor=tandem 115545bc899bSmrg ;; 1156a0c41156Smrg nsv-tandem) 1157a0c41156Smrg cpu=nsv 1158a0c41156Smrg vendor=tandem 115945bc899bSmrg ;; 1160a0c41156Smrg nsx-tandem) 1161a0c41156Smrg cpu=nsx 1162a0c41156Smrg vendor=tandem 116345bc899bSmrg ;; 1164e8b4ed9fSmrg mipsallegrexel-sony) 1165e8b4ed9fSmrg cpu=mipsallegrexel 1166e8b4ed9fSmrg vendor=sony 116745bc899bSmrg ;; 1168a0c41156Smrg tile*-*) 1169e8b4ed9fSmrg basic_os=${basic_os:-linux-gnu} 117045bc899bSmrg ;; 1171a0c41156Smrg 117245bc899bSmrg *) 1173e8b4ed9fSmrg # Recognize the canonical CPU types that are allowed with any 1174a0c41156Smrg # company name. 1175a0c41156Smrg case $cpu in 1176a0c41156Smrg 1750a | 580 \ 1177a0c41156Smrg | a29k \ 1178a0c41156Smrg | aarch64 | aarch64_be \ 1179a0c41156Smrg | abacus \ 1180a0c41156Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1181a0c41156Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1182a0c41156Smrg | alphapca5[67] | alpha64pca5[67] \ 1183a0c41156Smrg | am33_2.0 \ 1184e8b4ed9fSmrg | amdgcn \ 1185e8b4ed9fSmrg | arc | arceb | arc32 | arc64 \ 1186e8b4ed9fSmrg | arm | arm[lb]e | arme[lb] | armv* \ 1187a0c41156Smrg | avr | avr32 \ 1188a0c41156Smrg | asmjs \ 1189a0c41156Smrg | ba \ 1190a0c41156Smrg | be32 | be64 \ 1191e8b4ed9fSmrg | bfin | bpf | bs2000 \ 1192a0c41156Smrg | c[123]* | c30 | [cjt]90 | c4x \ 1193a0c41156Smrg | c8051 | clipper | craynv | csky | cydra \ 1194a0c41156Smrg | d10v | d30v | dlx | dsp16xx \ 1195a0c41156Smrg | e2k | elxsi | epiphany \ 1196a0c41156Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1197a0c41156Smrg | h8300 | h8500 \ 1198a0c41156Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1199a0c41156Smrg | hexagon \ 1200a0c41156Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1201a0c41156Smrg | ip2k | iq2000 \ 1202a0c41156Smrg | k1om \ 1203a0c41156Smrg | le32 | le64 \ 1204a0c41156Smrg | lm32 \ 1205e8b4ed9fSmrg | loongarch32 | loongarch64 | loongarchx32 \ 1206a0c41156Smrg | m32c | m32r | m32rle \ 1207e8b4ed9fSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1208e8b4ed9fSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1209a0c41156Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1210a0c41156Smrg | microblaze | microblazeel \ 1211a0c41156Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1212a0c41156Smrg | mips16 \ 1213e8b4ed9fSmrg | mips64 | mips64eb | mips64el \ 1214a0c41156Smrg | mips64octeon | mips64octeonel \ 1215a0c41156Smrg | mips64orion | mips64orionel \ 1216a0c41156Smrg | mips64r5900 | mips64r5900el \ 1217a0c41156Smrg | mips64vr | mips64vrel \ 1218a0c41156Smrg | mips64vr4100 | mips64vr4100el \ 1219a0c41156Smrg | mips64vr4300 | mips64vr4300el \ 1220a0c41156Smrg | mips64vr5000 | mips64vr5000el \ 1221a0c41156Smrg | mips64vr5900 | mips64vr5900el \ 1222a0c41156Smrg | mipsisa32 | mipsisa32el \ 1223a0c41156Smrg | mipsisa32r2 | mipsisa32r2el \ 1224e8b4ed9fSmrg | mipsisa32r3 | mipsisa32r3el \ 1225e8b4ed9fSmrg | mipsisa32r5 | mipsisa32r5el \ 1226a0c41156Smrg | mipsisa32r6 | mipsisa32r6el \ 1227a0c41156Smrg | mipsisa64 | mipsisa64el \ 1228a0c41156Smrg | mipsisa64r2 | mipsisa64r2el \ 1229e8b4ed9fSmrg | mipsisa64r3 | mipsisa64r3el \ 1230e8b4ed9fSmrg | mipsisa64r5 | mipsisa64r5el \ 1231a0c41156Smrg | mipsisa64r6 | mipsisa64r6el \ 1232a0c41156Smrg | mipsisa64sb1 | mipsisa64sb1el \ 1233a0c41156Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 1234a0c41156Smrg | mipsr5900 | mipsr5900el \ 1235a0c41156Smrg | mipstx39 | mipstx39el \ 1236a0c41156Smrg | mmix \ 1237a0c41156Smrg | mn10200 | mn10300 \ 1238a0c41156Smrg | moxie \ 1239a0c41156Smrg | mt \ 1240a0c41156Smrg | msp430 \ 1241a0c41156Smrg | nds32 | nds32le | nds32be \ 1242a0c41156Smrg | nfp \ 1243a0c41156Smrg | nios | nios2 | nios2eb | nios2el \ 1244e8b4ed9fSmrg | none | np1 | ns16k | ns32k | nvptx \ 1245a0c41156Smrg | open8 \ 1246a0c41156Smrg | or1k* \ 1247a0c41156Smrg | or32 \ 1248a0c41156Smrg | orion \ 1249e8b4ed9fSmrg | picochip \ 1250a0c41156Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1251a0c41156Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1252a0c41156Smrg | pru \ 1253a0c41156Smrg | pyramid \ 1254e8b4ed9fSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1255a0c41156Smrg | rl78 | romp | rs6000 | rx \ 1256e8b4ed9fSmrg | s390 | s390x \ 1257a0c41156Smrg | score \ 1258e8b4ed9fSmrg | sh | shl \ 1259e8b4ed9fSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1260a0c41156Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1261a0c41156Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1262a0c41156Smrg | sparclite \ 1263a0c41156Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1264a0c41156Smrg | spu \ 1265a0c41156Smrg | tahoe \ 1266e8b4ed9fSmrg | thumbv7* \ 1267a0c41156Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1268a0c41156Smrg | tron \ 1269a0c41156Smrg | ubicom32 \ 1270e8b4ed9fSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1271a0c41156Smrg | vax \ 1272a0c41156Smrg | visium \ 1273e8b4ed9fSmrg | w65 \ 1274e8b4ed9fSmrg | wasm32 | wasm64 \ 1275a0c41156Smrg | we32k \ 1276a0c41156Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1277a0c41156Smrg | xstormy16 | xtensa* \ 1278a0c41156Smrg | ymp \ 1279a0c41156Smrg | z8k | z80) 1280a0c41156Smrg ;; 1281a0c41156Smrg 1282a0c41156Smrg *) 1283a0c41156Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1284a0c41156Smrg exit 1 1285a0c41156Smrg ;; 1286a0c41156Smrg esac 128745bc899bSmrg ;; 128845bc899bSmrgesac 128945bc899bSmrg 129045bc899bSmrg# Here we canonicalize certain aliases for manufacturers. 1291a0c41156Smrgcase $vendor in 1292a0c41156Smrg digital*) 1293a0c41156Smrg vendor=dec 129445bc899bSmrg ;; 1295a0c41156Smrg commodore*) 1296a0c41156Smrg vendor=cbm 129745bc899bSmrg ;; 129845bc899bSmrg *) 129945bc899bSmrg ;; 130045bc899bSmrgesac 130145bc899bSmrg 130245bc899bSmrg# Decode manufacturer-specific aliases for certain operating systems. 130345bc899bSmrg 1304e8b4ed9fSmrgif test x$basic_os != x 130545bc899bSmrgthen 1306e8b4ed9fSmrg 1307e8b4ed9fSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 1308e8b4ed9fSmrg# set os. 1309e8b4ed9fSmrgcase $basic_os in 1310e8b4ed9fSmrg gnu/linux*) 1311e8b4ed9fSmrg kernel=linux 1312e8b4ed9fSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1313e8b4ed9fSmrg ;; 1314e8b4ed9fSmrg os2-emx) 1315e8b4ed9fSmrg kernel=os2 1316e8b4ed9fSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1317e8b4ed9fSmrg ;; 1318e8b4ed9fSmrg nto-qnx*) 1319e8b4ed9fSmrg kernel=nto 1320e8b4ed9fSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1321e8b4ed9fSmrg ;; 1322e8b4ed9fSmrg *-*) 1323e8b4ed9fSmrg # shellcheck disable=SC2162 1324e8b4ed9fSmrg saved_IFS=$IFS 1325e8b4ed9fSmrg IFS="-" read kernel os <<EOF 1326e8b4ed9fSmrg$basic_os 1327e8b4ed9fSmrgEOF 1328e8b4ed9fSmrg IFS=$saved_IFS 1329e8b4ed9fSmrg ;; 1330e8b4ed9fSmrg # Default OS when just kernel was specified 1331e8b4ed9fSmrg nto*) 1332e8b4ed9fSmrg kernel=nto 1333e8b4ed9fSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1334e8b4ed9fSmrg ;; 1335e8b4ed9fSmrg linux*) 1336e8b4ed9fSmrg kernel=linux 1337e8b4ed9fSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1338e8b4ed9fSmrg ;; 1339e8b4ed9fSmrg *) 1340e8b4ed9fSmrg kernel= 1341e8b4ed9fSmrg os=$basic_os 1342e8b4ed9fSmrg ;; 1343e8b4ed9fSmrgesac 1344e8b4ed9fSmrg 1345e8b4ed9fSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1346e8b4ed9fSmrg# etc.) 134745bc899bSmrgcase $os in 1348a0c41156Smrg # First match some system type aliases that might get confused 1349a0c41156Smrg # with valid system types. 1350a0c41156Smrg # solaris* is a basic system type, with this one exception. 1351a0c41156Smrg auroraux) 1352a0c41156Smrg os=auroraux 1353b40a6198Smrg ;; 1354a0c41156Smrg bluegene*) 1355a0c41156Smrg os=cnk 135645bc899bSmrg ;; 1357a0c41156Smrg solaris1 | solaris1.*) 1358e8b4ed9fSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 135945bc899bSmrg ;; 1360a0c41156Smrg solaris) 1361a0c41156Smrg os=solaris2 136245bc899bSmrg ;; 1363a0c41156Smrg unixware*) 1364a0c41156Smrg os=sysv4.2uw 136545bc899bSmrg ;; 1366a0c41156Smrg # es1800 is here to avoid being matched by es* (a different OS) 1367a0c41156Smrg es1800*) 1368a0c41156Smrg os=ose 1369a0c41156Smrg ;; 1370a0c41156Smrg # Some version numbers need modification 1371a0c41156Smrg chorusos*) 1372a0c41156Smrg os=chorusos 1373a0c41156Smrg ;; 1374a0c41156Smrg isc) 1375a0c41156Smrg os=isc2.2 1376a0c41156Smrg ;; 1377a0c41156Smrg sco6) 1378a0c41156Smrg os=sco5v6 1379a0c41156Smrg ;; 1380a0c41156Smrg sco5) 1381a0c41156Smrg os=sco3.2v5 1382a0c41156Smrg ;; 1383a0c41156Smrg sco4) 1384a0c41156Smrg os=sco3.2v4 1385a0c41156Smrg ;; 1386a0c41156Smrg sco3.2.[4-9]*) 1387e8b4ed9fSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1388a0c41156Smrg ;; 1389e8b4ed9fSmrg sco*v* | scout) 1390a0c41156Smrg # Don't match below 1391a0c41156Smrg ;; 1392a0c41156Smrg sco*) 1393a0c41156Smrg os=sco3.2v2 1394a0c41156Smrg ;; 1395a0c41156Smrg psos*) 1396a0c41156Smrg os=psos 1397a0c41156Smrg ;; 1398a0c41156Smrg qnx*) 1399e8b4ed9fSmrg os=qnx 140045bc899bSmrg ;; 1401a0c41156Smrg hiux*) 1402a0c41156Smrg os=hiuxwe2 140345bc899bSmrg ;; 1404a0c41156Smrg lynx*178) 1405a0c41156Smrg os=lynxos178 140645bc899bSmrg ;; 1407a0c41156Smrg lynx*5) 1408a0c41156Smrg os=lynxos5 140945bc899bSmrg ;; 1410e8b4ed9fSmrg lynxos*) 1411e8b4ed9fSmrg # don't get caught up in next wildcard 1412e8b4ed9fSmrg ;; 1413a0c41156Smrg lynx*) 1414a0c41156Smrg os=lynxos 141545bc899bSmrg ;; 1416e8b4ed9fSmrg mac[0-9]*) 1417a0c41156Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 141850f2e948Smrg ;; 1419a0c41156Smrg opened*) 1420a0c41156Smrg os=openedition 142145bc899bSmrg ;; 1422a0c41156Smrg os400*) 1423a0c41156Smrg os=os400 142445bc899bSmrg ;; 1425a0c41156Smrg sunos5*) 1426a0c41156Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 142745bc899bSmrg ;; 1428a0c41156Smrg sunos6*) 1429a0c41156Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 143045bc899bSmrg ;; 1431a0c41156Smrg wince*) 1432a0c41156Smrg os=wince 143345bc899bSmrg ;; 1434a0c41156Smrg utek*) 1435a0c41156Smrg os=bsd 143645bc899bSmrg ;; 1437a0c41156Smrg dynix*) 1438a0c41156Smrg os=bsd 143945bc899bSmrg ;; 1440a0c41156Smrg acis*) 1441a0c41156Smrg os=aos 144250f2e948Smrg ;; 1443a0c41156Smrg atheos*) 1444a0c41156Smrg os=atheos 144545bc899bSmrg ;; 1446a0c41156Smrg syllable*) 1447a0c41156Smrg os=syllable 1448a0c41156Smrg ;; 1449a0c41156Smrg 386bsd) 1450a0c41156Smrg os=bsd 145145bc899bSmrg ;; 1452a0c41156Smrg ctix* | uts*) 1453a0c41156Smrg os=sysv 145445bc899bSmrg ;; 1455a0c41156Smrg nova*) 1456a0c41156Smrg os=rtmk-nova 145745bc899bSmrg ;; 1458a0c41156Smrg ns2) 1459a0c41156Smrg os=nextstep2 1460a0c41156Smrg ;; 146145bc899bSmrg # Preserve the version number of sinix5. 1462a0c41156Smrg sinix5.*) 1463e8b4ed9fSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 146445bc899bSmrg ;; 1465a0c41156Smrg sinix*) 1466a0c41156Smrg os=sysv4 146750f2e948Smrg ;; 1468a0c41156Smrg tpf*) 1469a0c41156Smrg os=tpf 147045bc899bSmrg ;; 1471a0c41156Smrg triton*) 1472a0c41156Smrg os=sysv3 147345bc899bSmrg ;; 1474a0c41156Smrg oss*) 1475a0c41156Smrg os=sysv3 147645bc899bSmrg ;; 1477a0c41156Smrg svr4*) 1478a0c41156Smrg os=sysv4 147945bc899bSmrg ;; 1480a0c41156Smrg svr3) 1481a0c41156Smrg os=sysv3 148245bc899bSmrg ;; 1483a0c41156Smrg sysvr4) 1484a0c41156Smrg os=sysv4 148545bc899bSmrg ;; 1486a0c41156Smrg ose*) 1487a0c41156Smrg os=ose 148845bc899bSmrg ;; 1489a0c41156Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1490a0c41156Smrg os=mint 149145bc899bSmrg ;; 1492a0c41156Smrg dicos*) 1493a0c41156Smrg os=dicos 149445bc899bSmrg ;; 1495a0c41156Smrg pikeos*) 1496a0c41156Smrg # Until real need of OS specific support for 1497a0c41156Smrg # particular features comes up, bare metal 1498a0c41156Smrg # configurations are quite functional. 1499a0c41156Smrg case $cpu in 1500a0c41156Smrg arm*) 1501a0c41156Smrg os=eabi 1502a0c41156Smrg ;; 1503a0c41156Smrg *) 1504a0c41156Smrg os=elf 1505a0c41156Smrg ;; 1506a0c41156Smrg esac 150750f2e948Smrg ;; 150845bc899bSmrg *) 1509e8b4ed9fSmrg # No normalization, but not necessarily accepted, that comes below. 151045bc899bSmrg ;; 151145bc899bSmrgesac 1512e8b4ed9fSmrg 151345bc899bSmrgelse 151445bc899bSmrg 151545bc899bSmrg# Here we handle the default operating systems that come with various machines. 151645bc899bSmrg# The value should be what the vendor currently ships out the door with their 151745bc899bSmrg# machine or put another way, the most popular os provided with the machine. 151845bc899bSmrg 151945bc899bSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 152045bc899bSmrg# "-sun"), then you have to tell the case statement up towards the top 152145bc899bSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 152245bc899bSmrg# will signal an error saying that MANUFACTURER isn't an operating 152345bc899bSmrg# system, and we'll never get to this point. 152445bc899bSmrg 1525e8b4ed9fSmrgkernel= 1526a0c41156Smrgcase $cpu-$vendor in 1527b40a6198Smrg score-*) 1528a0c41156Smrg os=elf 152950f2e948Smrg ;; 1530b40a6198Smrg spu-*) 1531a0c41156Smrg os=elf 153250f2e948Smrg ;; 153345bc899bSmrg *-acorn) 1534a0c41156Smrg os=riscix1.2 153545bc899bSmrg ;; 153645bc899bSmrg arm*-rebel) 1537e8b4ed9fSmrg kernel=linux 1538e8b4ed9fSmrg os=gnu 153945bc899bSmrg ;; 154045bc899bSmrg arm*-semi) 1541a0c41156Smrg os=aout 154245bc899bSmrg ;; 1543b40a6198Smrg c4x-* | tic4x-*) 1544a0c41156Smrg os=coff 1545b40a6198Smrg ;; 1546c97b1c41Smrg c8051-*) 1547a0c41156Smrg os=elf 1548a0c41156Smrg ;; 1549a0c41156Smrg clipper-intergraph) 1550a0c41156Smrg os=clix 1551c97b1c41Smrg ;; 1552c97b1c41Smrg hexagon-*) 1553a0c41156Smrg os=elf 1554c97b1c41Smrg ;; 1555b40a6198Smrg tic54x-*) 1556a0c41156Smrg os=coff 1557b40a6198Smrg ;; 1558b40a6198Smrg tic55x-*) 1559a0c41156Smrg os=coff 1560b40a6198Smrg ;; 1561b40a6198Smrg tic6x-*) 1562a0c41156Smrg os=coff 156345bc899bSmrg ;; 156445bc899bSmrg # This must come before the *-dec entry. 156545bc899bSmrg pdp10-*) 1566a0c41156Smrg os=tops20 156745bc899bSmrg ;; 156845bc899bSmrg pdp11-*) 1569a0c41156Smrg os=none 157045bc899bSmrg ;; 157145bc899bSmrg *-dec | vax-*) 1572a0c41156Smrg os=ultrix4.2 157345bc899bSmrg ;; 157445bc899bSmrg m68*-apollo) 1575a0c41156Smrg os=domain 157645bc899bSmrg ;; 157745bc899bSmrg i386-sun) 1578a0c41156Smrg os=sunos4.0.2 157945bc899bSmrg ;; 158045bc899bSmrg m68000-sun) 1581a0c41156Smrg os=sunos3 158245bc899bSmrg ;; 158345bc899bSmrg m68*-cisco) 1584a0c41156Smrg os=aout 158545bc899bSmrg ;; 1586b40a6198Smrg mep-*) 1587a0c41156Smrg os=elf 158850f2e948Smrg ;; 158945bc899bSmrg mips*-cisco) 1590a0c41156Smrg os=elf 159145bc899bSmrg ;; 159245bc899bSmrg mips*-*) 1593a0c41156Smrg os=elf 159445bc899bSmrg ;; 159545bc899bSmrg or32-*) 1596a0c41156Smrg os=coff 159745bc899bSmrg ;; 159845bc899bSmrg *-tti) # must be before sparc entry or we get the wrong os. 1599a0c41156Smrg os=sysv3 160045bc899bSmrg ;; 160145bc899bSmrg sparc-* | *-sun) 1602a0c41156Smrg os=sunos4.1.1 160345bc899bSmrg ;; 1604f2408745Smrg pru-*) 1605a0c41156Smrg os=elf 1606f2408745Smrg ;; 160745bc899bSmrg *-be) 1608a0c41156Smrg os=beos 160950f2e948Smrg ;; 161045bc899bSmrg *-ibm) 1611a0c41156Smrg os=aix 161245bc899bSmrg ;; 1613b40a6198Smrg *-knuth) 1614a0c41156Smrg os=mmixware 161550f2e948Smrg ;; 161645bc899bSmrg *-wec) 1617a0c41156Smrg os=proelf 161845bc899bSmrg ;; 161945bc899bSmrg *-winbond) 1620a0c41156Smrg os=proelf 162145bc899bSmrg ;; 162245bc899bSmrg *-oki) 1623a0c41156Smrg os=proelf 162445bc899bSmrg ;; 162545bc899bSmrg *-hp) 1626a0c41156Smrg os=hpux 162745bc899bSmrg ;; 162845bc899bSmrg *-hitachi) 1629a0c41156Smrg os=hiux 163045bc899bSmrg ;; 163145bc899bSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1632a0c41156Smrg os=sysv 163345bc899bSmrg ;; 163445bc899bSmrg *-cbm) 1635a0c41156Smrg os=amigaos 163645bc899bSmrg ;; 163745bc899bSmrg *-dg) 1638a0c41156Smrg os=dgux 163945bc899bSmrg ;; 164045bc899bSmrg *-dolphin) 1641a0c41156Smrg os=sysv3 164245bc899bSmrg ;; 164345bc899bSmrg m68k-ccur) 1644a0c41156Smrg os=rtu 164545bc899bSmrg ;; 164645bc899bSmrg m88k-omron*) 1647a0c41156Smrg os=luna 164845bc899bSmrg ;; 1649a0c41156Smrg *-next) 1650a0c41156Smrg os=nextstep 165145bc899bSmrg ;; 165245bc899bSmrg *-sequent) 1653a0c41156Smrg os=ptx 165445bc899bSmrg ;; 165545bc899bSmrg *-crds) 1656a0c41156Smrg os=unos 165745bc899bSmrg ;; 165845bc899bSmrg *-ns) 1659a0c41156Smrg os=genix 166045bc899bSmrg ;; 166145bc899bSmrg i370-*) 1662a0c41156Smrg os=mvs 166345bc899bSmrg ;; 166445bc899bSmrg *-gould) 1665a0c41156Smrg os=sysv 166645bc899bSmrg ;; 166745bc899bSmrg *-highlevel) 1668a0c41156Smrg os=bsd 166945bc899bSmrg ;; 167045bc899bSmrg *-encore) 1671a0c41156Smrg os=bsd 167245bc899bSmrg ;; 167345bc899bSmrg *-sgi) 1674a0c41156Smrg os=irix 167545bc899bSmrg ;; 167645bc899bSmrg *-siemens) 1677a0c41156Smrg os=sysv4 167845bc899bSmrg ;; 167945bc899bSmrg *-masscomp) 1680a0c41156Smrg os=rtu 168145bc899bSmrg ;; 168245bc899bSmrg f30[01]-fujitsu | f700-fujitsu) 1683a0c41156Smrg os=uxpv 168445bc899bSmrg ;; 168545bc899bSmrg *-rom68k) 1686a0c41156Smrg os=coff 168745bc899bSmrg ;; 168845bc899bSmrg *-*bug) 1689a0c41156Smrg os=coff 169045bc899bSmrg ;; 169145bc899bSmrg *-apple) 1692a0c41156Smrg os=macos 169345bc899bSmrg ;; 169445bc899bSmrg *-atari*) 1695a0c41156Smrg os=mint 1696a0c41156Smrg ;; 1697a0c41156Smrg *-wrs) 1698a0c41156Smrg os=vxworks 169945bc899bSmrg ;; 170045bc899bSmrg *) 1701a0c41156Smrg os=none 170245bc899bSmrg ;; 170345bc899bSmrgesac 1704e8b4ed9fSmrg 170545bc899bSmrgfi 170645bc899bSmrg 1707e8b4ed9fSmrg# Now, validate our (potentially fixed-up) OS. 1708e8b4ed9fSmrgcase $os in 1709e8b4ed9fSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1710e8b4ed9fSmrg musl* | newlib* | relibc* | uclibc*) 1711e8b4ed9fSmrg ;; 1712e8b4ed9fSmrg # Likewise for "kernel-abi" 1713e8b4ed9fSmrg eabi* | gnueabi*) 1714e8b4ed9fSmrg ;; 1715e8b4ed9fSmrg # VxWorks passes extra cpu info in the 4th filed. 1716e8b4ed9fSmrg simlinux | simwindows | spe) 1717e8b4ed9fSmrg ;; 1718e8b4ed9fSmrg # Now accept the basic system types. 1719e8b4ed9fSmrg # The portable systems comes first. 1720e8b4ed9fSmrg # Each alternative MUST end in a * to match a version number. 1721e8b4ed9fSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1722e8b4ed9fSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1723e8b4ed9fSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1724e8b4ed9fSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1725e8b4ed9fSmrg | hiux* | abug | nacl* | netware* | windows* \ 1726e8b4ed9fSmrg | os9* | macos* | osx* | ios* \ 1727e8b4ed9fSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1728e8b4ed9fSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1729e8b4ed9fSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1730e8b4ed9fSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1731e8b4ed9fSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1732e8b4ed9fSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1733e8b4ed9fSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1734e8b4ed9fSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1735e8b4ed9fSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1736e8b4ed9fSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1737e8b4ed9fSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1738e8b4ed9fSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1739e8b4ed9fSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1740e8b4ed9fSmrg | midipix* | mingw32* | mingw64* | mint* \ 1741e8b4ed9fSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1742e8b4ed9fSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1743e8b4ed9fSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1744e8b4ed9fSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1745e8b4ed9fSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1746e8b4ed9fSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1747e8b4ed9fSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1748e8b4ed9fSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1749e8b4ed9fSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1750e8b4ed9fSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1751e8b4ed9fSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 1752e8b4ed9fSmrg ;; 1753e8b4ed9fSmrg # This one is extra strict with allowed versions 1754e8b4ed9fSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1755e8b4ed9fSmrg # Don't forget version if it is 3.2v4 or newer. 1756e8b4ed9fSmrg ;; 1757e8b4ed9fSmrg none) 1758e8b4ed9fSmrg ;; 1759e8b4ed9fSmrg *) 1760e8b4ed9fSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1761e8b4ed9fSmrg exit 1 1762e8b4ed9fSmrg ;; 1763e8b4ed9fSmrgesac 1764e8b4ed9fSmrg 1765e8b4ed9fSmrg# As a final step for OS-related things, validate the OS-kernel combination 1766e8b4ed9fSmrg# (given a valid OS), if there is a kernel. 1767e8b4ed9fSmrgcase $kernel-$os in 1768e8b4ed9fSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1769e8b4ed9fSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 1770e8b4ed9fSmrg ;; 1771e8b4ed9fSmrg uclinux-uclibc* ) 1772e8b4ed9fSmrg ;; 1773e8b4ed9fSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 1774e8b4ed9fSmrg # These are just libc implementations, not actual OSes, and thus 1775e8b4ed9fSmrg # require a kernel. 1776e8b4ed9fSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1777e8b4ed9fSmrg exit 1 1778e8b4ed9fSmrg ;; 1779e8b4ed9fSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1780e8b4ed9fSmrg ;; 1781e8b4ed9fSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1782e8b4ed9fSmrg ;; 1783e8b4ed9fSmrg nto-qnx*) 1784e8b4ed9fSmrg ;; 1785e8b4ed9fSmrg os2-emx) 1786e8b4ed9fSmrg ;; 1787e8b4ed9fSmrg *-eabi* | *-gnueabi*) 1788e8b4ed9fSmrg ;; 1789e8b4ed9fSmrg -*) 1790e8b4ed9fSmrg # Blank kernel with real OS is always fine. 1791e8b4ed9fSmrg ;; 1792e8b4ed9fSmrg *-*) 1793e8b4ed9fSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1794e8b4ed9fSmrg exit 1 1795e8b4ed9fSmrg ;; 1796e8b4ed9fSmrgesac 1797e8b4ed9fSmrg 179845bc899bSmrg# Here we handle the case where we know the os, and the CPU type, but not the 179945bc899bSmrg# manufacturer. We pick the logical manufacturer. 1800a0c41156Smrgcase $vendor in 1801a0c41156Smrg unknown) 1802e8b4ed9fSmrg case $cpu-$os in 1803e8b4ed9fSmrg *-riscix*) 180445bc899bSmrg vendor=acorn 180545bc899bSmrg ;; 1806e8b4ed9fSmrg *-sunos*) 180745bc899bSmrg vendor=sun 180845bc899bSmrg ;; 1809e8b4ed9fSmrg *-cnk* | *-aix*) 181045bc899bSmrg vendor=ibm 181145bc899bSmrg ;; 1812e8b4ed9fSmrg *-beos*) 181345bc899bSmrg vendor=be 181445bc899bSmrg ;; 1815e8b4ed9fSmrg *-hpux*) 181645bc899bSmrg vendor=hp 181745bc899bSmrg ;; 1818e8b4ed9fSmrg *-mpeix*) 181945bc899bSmrg vendor=hp 182045bc899bSmrg ;; 1821e8b4ed9fSmrg *-hiux*) 182245bc899bSmrg vendor=hitachi 182345bc899bSmrg ;; 1824e8b4ed9fSmrg *-unos*) 182545bc899bSmrg vendor=crds 182645bc899bSmrg ;; 1827e8b4ed9fSmrg *-dgux*) 182845bc899bSmrg vendor=dg 182945bc899bSmrg ;; 1830e8b4ed9fSmrg *-luna*) 183145bc899bSmrg vendor=omron 183245bc899bSmrg ;; 1833e8b4ed9fSmrg *-genix*) 183445bc899bSmrg vendor=ns 183545bc899bSmrg ;; 1836e8b4ed9fSmrg *-clix*) 1837a0c41156Smrg vendor=intergraph 1838a0c41156Smrg ;; 1839e8b4ed9fSmrg *-mvs* | *-opened*) 1840e8b4ed9fSmrg vendor=ibm 1841e8b4ed9fSmrg ;; 1842e8b4ed9fSmrg *-os400*) 184345bc899bSmrg vendor=ibm 184445bc899bSmrg ;; 1845e8b4ed9fSmrg s390-* | s390x-*) 184650f2e948Smrg vendor=ibm 184750f2e948Smrg ;; 1848e8b4ed9fSmrg *-ptx*) 184945bc899bSmrg vendor=sequent 185045bc899bSmrg ;; 1851e8b4ed9fSmrg *-tpf*) 185250f2e948Smrg vendor=ibm 185350f2e948Smrg ;; 1854e8b4ed9fSmrg *-vxsim* | *-vxworks* | *-windiss*) 185545bc899bSmrg vendor=wrs 185645bc899bSmrg ;; 1857e8b4ed9fSmrg *-aux*) 185845bc899bSmrg vendor=apple 185945bc899bSmrg ;; 1860e8b4ed9fSmrg *-hms*) 186145bc899bSmrg vendor=hitachi 186245bc899bSmrg ;; 1863e8b4ed9fSmrg *-mpw* | *-macos*) 186445bc899bSmrg vendor=apple 186545bc899bSmrg ;; 1866e8b4ed9fSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 186745bc899bSmrg vendor=atari 186845bc899bSmrg ;; 1869e8b4ed9fSmrg *-vos*) 187045bc899bSmrg vendor=stratus 187145bc899bSmrg ;; 187245bc899bSmrg esac 187345bc899bSmrg ;; 187445bc899bSmrgesac 187545bc899bSmrg 1876e8b4ed9fSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 187750f2e948Smrgexit 187845bc899bSmrg 187945bc899bSmrg# Local variables: 1880a0c41156Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 188145bc899bSmrg# time-stamp-start: "timestamp='" 188245bc899bSmrg# time-stamp-format: "%:y-%02m-%02d" 188345bc899bSmrg# time-stamp-end: "'" 188445bc899bSmrg# End: 1885