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