16f03b1f6Smrg#! /bin/sh 26f03b1f6Smrg# Configuration validation subroutine script. 30f57e2e1Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 46f03b1f6Smrg 50f57e2e1Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 60f57e2e1Smrg 70f57e2e1Smrgtimestamp='2023-01-21' 86f03b1f6Smrg 917caa701Smrg# This file is free software; you can redistribute it and/or modify it 1017caa701Smrg# under the terms of the GNU General Public License as published by 110f57e2e1Smrg# the Free Software Foundation, either version 3 of the License, or 126f03b1f6Smrg# (at your option) any later version. 136f03b1f6Smrg# 1417caa701Smrg# This program is distributed in the hope that it will be useful, but 1517caa701Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1617caa701Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1717caa701Smrg# General Public License for more details. 186f03b1f6Smrg# 196f03b1f6Smrg# You should have received a copy of the GNU General Public License 20c1e3c5d0Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 216f03b1f6Smrg# 226f03b1f6Smrg# As a special exception to the GNU General Public License, if you 236f03b1f6Smrg# distribute this file as part of a program that contains a 246f03b1f6Smrg# configuration script generated by Autoconf, you may include it under 2517caa701Smrg# the same distribution terms that you use for the rest of that 2617caa701Smrg# program. This Exception is an additional permission under section 7 2717caa701Smrg# of the GNU General Public License, version 3 ("GPLv3"). 286f03b1f6Smrg 296f03b1f6Smrg 30c1e3c5d0Smrg# Please send patches to <config-patches@gnu.org>. 316f03b1f6Smrg# 326f03b1f6Smrg# Configuration subroutine to validate and canonicalize a configuration type. 336f03b1f6Smrg# Supply the specified configuration type as an argument. 346f03b1f6Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 356f03b1f6Smrg# Otherwise, we print the canonical config type on stdout and succeed. 366f03b1f6Smrg 37356f6debSmrg# You can get the latest version of this script from: 3840613eb2Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39356f6debSmrg 406f03b1f6Smrg# This file is supposed to be the same for all GNU packages 416f03b1f6Smrg# and recognize all the CPU types, system types and aliases 426f03b1f6Smrg# that are meaningful with *any* GNU software. 436f03b1f6Smrg# Each package is responsible for reporting which valid configurations 446f03b1f6Smrg# it does not support. The user should be able to distinguish 456f03b1f6Smrg# a failure to support a valid configuration from a meaningless 466f03b1f6Smrg# configuration. 476f03b1f6Smrg 486f03b1f6Smrg# The goal of this file is to map all the various variations of a given 496f03b1f6Smrg# machine specification into a single specification in the form: 506f03b1f6Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 516f03b1f6Smrg# or in some cases, the newer four-part form: 526f03b1f6Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 536f03b1f6Smrg# It is wrong to echo any other type of specification. 546f03b1f6Smrg 550f57e2e1Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 560f57e2e1Smrg# about features and limitations of the classic Bourne shell that were 570f57e2e1Smrg# superseded or lifted in POSIX. However, this script identifies a wide 580f57e2e1Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 590f57e2e1Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 600f57e2e1Smrg# have a pre-POSIX /bin/sh. 610f57e2e1Smrg 620f57e2e1Smrgme=`echo "$0" | sed -e 's,.*/,,'` 636f03b1f6Smrg 646f03b1f6Smrgusage="\ 65c1e3c5d0SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 666f03b1f6Smrg 676f03b1f6SmrgCanonicalize a configuration name. 686f03b1f6Smrg 69c1e3c5d0SmrgOptions: 706f03b1f6Smrg -h, --help print this help, then exit 716f03b1f6Smrg -t, --time-stamp print date of last modification, then exit 726f03b1f6Smrg -v, --version print version number, then exit 736f03b1f6Smrg 746f03b1f6SmrgReport bugs and patches to <config-patches@gnu.org>." 756f03b1f6Smrg 766f03b1f6Smrgversion="\ 776f03b1f6SmrgGNU config.sub ($timestamp) 786f03b1f6Smrg 790f57e2e1SmrgCopyright 1992-2023 Free Software Foundation, Inc. 806f03b1f6Smrg 816f03b1f6SmrgThis is free software; see the source for copying conditions. There is NO 826f03b1f6Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 836f03b1f6Smrg 846f03b1f6Smrghelp=" 856f03b1f6SmrgTry \`$me --help' for more information." 866f03b1f6Smrg 876f03b1f6Smrg# Parse command line 886f03b1f6Smrgwhile test $# -gt 0 ; do 896f03b1f6Smrg case $1 in 906f03b1f6Smrg --time-stamp | --time* | -t ) 916f03b1f6Smrg echo "$timestamp" ; exit ;; 926f03b1f6Smrg --version | -v ) 936f03b1f6Smrg echo "$version" ; exit ;; 946f03b1f6Smrg --help | --h* | -h ) 956f03b1f6Smrg echo "$usage"; exit ;; 966f03b1f6Smrg -- ) # Stop option processing 976f03b1f6Smrg shift; break ;; 986f03b1f6Smrg - ) # Use stdin as input. 996f03b1f6Smrg break ;; 1006f03b1f6Smrg -* ) 10140613eb2Smrg echo "$me: invalid option $1$help" >&2 1026f03b1f6Smrg exit 1 ;; 1036f03b1f6Smrg 1046f03b1f6Smrg *local*) 1056f03b1f6Smrg # First pass through any local machine types. 106c1e3c5d0Smrg echo "$1" 1076f03b1f6Smrg exit ;; 1086f03b1f6Smrg 1096f03b1f6Smrg * ) 1106f03b1f6Smrg break ;; 1116f03b1f6Smrg esac 1126f03b1f6Smrgdone 1136f03b1f6Smrg 1146f03b1f6Smrgcase $# in 1156f03b1f6Smrg 0) echo "$me: missing argument$help" >&2 1166f03b1f6Smrg exit 1;; 1176f03b1f6Smrg 1) ;; 1186f03b1f6Smrg *) echo "$me: too many arguments$help" >&2 1196f03b1f6Smrg exit 1;; 1206f03b1f6Smrgesac 1216f03b1f6Smrg 122cfcf9057Smrg# Split fields of configuration type 12340613eb2Smrg# shellcheck disable=SC2162 1240f57e2e1Smrgsaved_IFS=$IFS 12540613eb2SmrgIFS="-" read field1 field2 field3 field4 <<EOF 126cfcf9057Smrg$1 127cfcf9057SmrgEOF 1280f57e2e1SmrgIFS=$saved_IFS 1296f03b1f6Smrg 130cfcf9057Smrg# Separate into logical components for further validation 131cfcf9057Smrgcase $1 in 132cfcf9057Smrg *-*-*-*-*) 133cfcf9057Smrg echo Invalid configuration \`"$1"\': more than four components >&2 134cfcf9057Smrg exit 1 13517caa701Smrg ;; 136cfcf9057Smrg *-*-*-*) 137cfcf9057Smrg basic_machine=$field1-$field2 13840613eb2Smrg basic_os=$field3-$field4 1396f03b1f6Smrg ;; 140cfcf9057Smrg *-*-*) 141cfcf9057Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142cfcf9057Smrg # parts 143cfcf9057Smrg maybe_os=$field2-$field3 144cfcf9057Smrg case $maybe_os in 14540613eb2Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 146cfcf9057Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147cfcf9057Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1480f57e2e1Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 149cfcf9057Smrg basic_machine=$field1 15040613eb2Smrg basic_os=$maybe_os 151cfcf9057Smrg ;; 152cfcf9057Smrg android-linux) 153cfcf9057Smrg basic_machine=$field1-unknown 15440613eb2Smrg basic_os=linux-android 155cfcf9057Smrg ;; 156cfcf9057Smrg *) 157cfcf9057Smrg basic_machine=$field1-$field2 15840613eb2Smrg basic_os=$field3 159cfcf9057Smrg ;; 160cfcf9057Smrg esac 1616f03b1f6Smrg ;; 162cfcf9057Smrg *-*) 16340613eb2Smrg # A lone config we happen to match not fitting any pattern 164cfcf9057Smrg case $field1-$field2 in 165cfcf9057Smrg decstation-3100) 166cfcf9057Smrg basic_machine=mips-dec 16740613eb2Smrg basic_os= 168cfcf9057Smrg ;; 169cfcf9057Smrg *-*) 170cfcf9057Smrg # Second component is usually, but not always the OS 171cfcf9057Smrg case $field2 in 172cfcf9057Smrg # Prevent following clause from handling this valid os 173cfcf9057Smrg sun*os*) 174cfcf9057Smrg basic_machine=$field1 17540613eb2Smrg basic_os=$field2 176cfcf9057Smrg ;; 1770f57e2e1Smrg zephyr*) 1780f57e2e1Smrg basic_machine=$field1-unknown 1790f57e2e1Smrg basic_os=$field2 1800f57e2e1Smrg ;; 181cfcf9057Smrg # Manufacturers 182cfcf9057Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183cfcf9057Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184cfcf9057Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185cfcf9057Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186cfcf9057Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187cfcf9057Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188cfcf9057Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189cfcf9057Smrg | microblaze* | sim | cisco \ 190cfcf9057Smrg | oki | wec | wrs | winbond) 191cfcf9057Smrg basic_machine=$field1-$field2 19240613eb2Smrg basic_os= 193cfcf9057Smrg ;; 194cfcf9057Smrg *) 195cfcf9057Smrg basic_machine=$field1 19640613eb2Smrg basic_os=$field2 197cfcf9057Smrg ;; 198cfcf9057Smrg esac 199cfcf9057Smrg ;; 200cfcf9057Smrg esac 2016f03b1f6Smrg ;; 202cfcf9057Smrg *) 203cfcf9057Smrg # Convert single-component short-hands not valid as part of 204cfcf9057Smrg # multi-component configurations. 205cfcf9057Smrg case $field1 in 206cfcf9057Smrg 386bsd) 207cfcf9057Smrg basic_machine=i386-pc 20840613eb2Smrg basic_os=bsd 209cfcf9057Smrg ;; 210cfcf9057Smrg a29khif) 211cfcf9057Smrg basic_machine=a29k-amd 21240613eb2Smrg basic_os=udi 213cfcf9057Smrg ;; 214cfcf9057Smrg adobe68k) 215cfcf9057Smrg basic_machine=m68010-adobe 21640613eb2Smrg basic_os=scout 217cfcf9057Smrg ;; 218cfcf9057Smrg alliant) 219cfcf9057Smrg basic_machine=fx80-alliant 22040613eb2Smrg basic_os= 221cfcf9057Smrg ;; 222cfcf9057Smrg altos | altos3068) 223cfcf9057Smrg basic_machine=m68k-altos 22440613eb2Smrg basic_os= 225cfcf9057Smrg ;; 226cfcf9057Smrg am29k) 227cfcf9057Smrg basic_machine=a29k-none 22840613eb2Smrg basic_os=bsd 229cfcf9057Smrg ;; 230cfcf9057Smrg amdahl) 231cfcf9057Smrg basic_machine=580-amdahl 23240613eb2Smrg basic_os=sysv 233cfcf9057Smrg ;; 234cfcf9057Smrg amiga) 235cfcf9057Smrg basic_machine=m68k-unknown 23640613eb2Smrg basic_os= 237cfcf9057Smrg ;; 238cfcf9057Smrg amigaos | amigados) 239cfcf9057Smrg basic_machine=m68k-unknown 24040613eb2Smrg basic_os=amigaos 241cfcf9057Smrg ;; 242cfcf9057Smrg amigaunix | amix) 243cfcf9057Smrg basic_machine=m68k-unknown 24440613eb2Smrg basic_os=sysv4 245cfcf9057Smrg ;; 246cfcf9057Smrg apollo68) 247cfcf9057Smrg basic_machine=m68k-apollo 24840613eb2Smrg basic_os=sysv 249cfcf9057Smrg ;; 250cfcf9057Smrg apollo68bsd) 251cfcf9057Smrg basic_machine=m68k-apollo 25240613eb2Smrg basic_os=bsd 253cfcf9057Smrg ;; 254cfcf9057Smrg aros) 255cfcf9057Smrg basic_machine=i386-pc 25640613eb2Smrg basic_os=aros 257cfcf9057Smrg ;; 258cfcf9057Smrg aux) 259cfcf9057Smrg basic_machine=m68k-apple 26040613eb2Smrg basic_os=aux 261cfcf9057Smrg ;; 262cfcf9057Smrg balance) 263cfcf9057Smrg basic_machine=ns32k-sequent 26440613eb2Smrg basic_os=dynix 265cfcf9057Smrg ;; 266cfcf9057Smrg blackfin) 267cfcf9057Smrg basic_machine=bfin-unknown 26840613eb2Smrg basic_os=linux 269cfcf9057Smrg ;; 270cfcf9057Smrg cegcc) 271cfcf9057Smrg basic_machine=arm-unknown 27240613eb2Smrg basic_os=cegcc 273cfcf9057Smrg ;; 274cfcf9057Smrg convex-c1) 275cfcf9057Smrg basic_machine=c1-convex 27640613eb2Smrg basic_os=bsd 277cfcf9057Smrg ;; 278cfcf9057Smrg convex-c2) 279cfcf9057Smrg basic_machine=c2-convex 28040613eb2Smrg basic_os=bsd 281cfcf9057Smrg ;; 282cfcf9057Smrg convex-c32) 283cfcf9057Smrg basic_machine=c32-convex 28440613eb2Smrg basic_os=bsd 285cfcf9057Smrg ;; 286cfcf9057Smrg convex-c34) 287cfcf9057Smrg basic_machine=c34-convex 28840613eb2Smrg basic_os=bsd 289cfcf9057Smrg ;; 290cfcf9057Smrg convex-c38) 291cfcf9057Smrg basic_machine=c38-convex 29240613eb2Smrg basic_os=bsd 293cfcf9057Smrg ;; 294cfcf9057Smrg cray) 295cfcf9057Smrg basic_machine=j90-cray 29640613eb2Smrg basic_os=unicos 297cfcf9057Smrg ;; 298cfcf9057Smrg crds | unos) 299cfcf9057Smrg basic_machine=m68k-crds 30040613eb2Smrg basic_os= 301cfcf9057Smrg ;; 302cfcf9057Smrg da30) 303cfcf9057Smrg basic_machine=m68k-da30 30440613eb2Smrg basic_os= 305cfcf9057Smrg ;; 306cfcf9057Smrg decstation | pmax | pmin | dec3100 | decstatn) 307cfcf9057Smrg basic_machine=mips-dec 30840613eb2Smrg basic_os= 309cfcf9057Smrg ;; 310cfcf9057Smrg delta88) 311cfcf9057Smrg basic_machine=m88k-motorola 31240613eb2Smrg basic_os=sysv3 313cfcf9057Smrg ;; 314cfcf9057Smrg dicos) 315cfcf9057Smrg basic_machine=i686-pc 31640613eb2Smrg basic_os=dicos 317cfcf9057Smrg ;; 318cfcf9057Smrg djgpp) 319cfcf9057Smrg basic_machine=i586-pc 32040613eb2Smrg basic_os=msdosdjgpp 321cfcf9057Smrg ;; 322cfcf9057Smrg ebmon29k) 323cfcf9057Smrg basic_machine=a29k-amd 32440613eb2Smrg basic_os=ebmon 325cfcf9057Smrg ;; 326cfcf9057Smrg es1800 | OSE68k | ose68k | ose | OSE) 327cfcf9057Smrg basic_machine=m68k-ericsson 32840613eb2Smrg basic_os=ose 329cfcf9057Smrg ;; 330cfcf9057Smrg gmicro) 331cfcf9057Smrg basic_machine=tron-gmicro 33240613eb2Smrg basic_os=sysv 333cfcf9057Smrg ;; 334cfcf9057Smrg go32) 335cfcf9057Smrg basic_machine=i386-pc 33640613eb2Smrg basic_os=go32 337cfcf9057Smrg ;; 338cfcf9057Smrg h8300hms) 339cfcf9057Smrg basic_machine=h8300-hitachi 34040613eb2Smrg basic_os=hms 341cfcf9057Smrg ;; 342cfcf9057Smrg h8300xray) 343cfcf9057Smrg basic_machine=h8300-hitachi 34440613eb2Smrg basic_os=xray 345cfcf9057Smrg ;; 346cfcf9057Smrg h8500hms) 347cfcf9057Smrg basic_machine=h8500-hitachi 34840613eb2Smrg basic_os=hms 349cfcf9057Smrg ;; 350cfcf9057Smrg harris) 351cfcf9057Smrg basic_machine=m88k-harris 35240613eb2Smrg basic_os=sysv3 353cfcf9057Smrg ;; 35440613eb2Smrg hp300 | hp300hpux) 355cfcf9057Smrg basic_machine=m68k-hp 35640613eb2Smrg basic_os=hpux 357cfcf9057Smrg ;; 358cfcf9057Smrg hp300bsd) 359cfcf9057Smrg basic_machine=m68k-hp 36040613eb2Smrg basic_os=bsd 361cfcf9057Smrg ;; 362cfcf9057Smrg hppaosf) 363cfcf9057Smrg basic_machine=hppa1.1-hp 36440613eb2Smrg basic_os=osf 365cfcf9057Smrg ;; 366cfcf9057Smrg hppro) 367cfcf9057Smrg basic_machine=hppa1.1-hp 36840613eb2Smrg basic_os=proelf 369cfcf9057Smrg ;; 370cfcf9057Smrg i386mach) 371cfcf9057Smrg basic_machine=i386-mach 37240613eb2Smrg basic_os=mach 373cfcf9057Smrg ;; 374cfcf9057Smrg isi68 | isi) 375cfcf9057Smrg basic_machine=m68k-isi 37640613eb2Smrg basic_os=sysv 377cfcf9057Smrg ;; 378cfcf9057Smrg m68knommu) 379cfcf9057Smrg basic_machine=m68k-unknown 38040613eb2Smrg basic_os=linux 381cfcf9057Smrg ;; 382cfcf9057Smrg magnum | m3230) 383cfcf9057Smrg basic_machine=mips-mips 38440613eb2Smrg basic_os=sysv 385cfcf9057Smrg ;; 386cfcf9057Smrg merlin) 387cfcf9057Smrg basic_machine=ns32k-utek 38840613eb2Smrg basic_os=sysv 389cfcf9057Smrg ;; 390cfcf9057Smrg mingw64) 391cfcf9057Smrg basic_machine=x86_64-pc 39240613eb2Smrg basic_os=mingw64 393cfcf9057Smrg ;; 394cfcf9057Smrg mingw32) 395cfcf9057Smrg basic_machine=i686-pc 39640613eb2Smrg basic_os=mingw32 397cfcf9057Smrg ;; 398cfcf9057Smrg mingw32ce) 399cfcf9057Smrg basic_machine=arm-unknown 40040613eb2Smrg basic_os=mingw32ce 401cfcf9057Smrg ;; 402cfcf9057Smrg monitor) 403cfcf9057Smrg basic_machine=m68k-rom68k 40440613eb2Smrg basic_os=coff 405cfcf9057Smrg ;; 406cfcf9057Smrg morphos) 407cfcf9057Smrg basic_machine=powerpc-unknown 40840613eb2Smrg basic_os=morphos 409cfcf9057Smrg ;; 410cfcf9057Smrg moxiebox) 411cfcf9057Smrg basic_machine=moxie-unknown 41240613eb2Smrg basic_os=moxiebox 413cfcf9057Smrg ;; 414cfcf9057Smrg msdos) 415cfcf9057Smrg basic_machine=i386-pc 41640613eb2Smrg basic_os=msdos 417cfcf9057Smrg ;; 418cfcf9057Smrg msys) 419cfcf9057Smrg basic_machine=i686-pc 42040613eb2Smrg basic_os=msys 421cfcf9057Smrg ;; 422cfcf9057Smrg mvs) 423cfcf9057Smrg basic_machine=i370-ibm 42440613eb2Smrg basic_os=mvs 425cfcf9057Smrg ;; 426cfcf9057Smrg nacl) 427cfcf9057Smrg basic_machine=le32-unknown 42840613eb2Smrg basic_os=nacl 429cfcf9057Smrg ;; 430cfcf9057Smrg ncr3000) 431cfcf9057Smrg basic_machine=i486-ncr 43240613eb2Smrg basic_os=sysv4 433cfcf9057Smrg ;; 434cfcf9057Smrg netbsd386) 435cfcf9057Smrg basic_machine=i386-pc 43640613eb2Smrg basic_os=netbsd 437cfcf9057Smrg ;; 438cfcf9057Smrg netwinder) 439cfcf9057Smrg basic_machine=armv4l-rebel 44040613eb2Smrg basic_os=linux 441cfcf9057Smrg ;; 442cfcf9057Smrg news | news700 | news800 | news900) 443cfcf9057Smrg basic_machine=m68k-sony 44440613eb2Smrg basic_os=newsos 445cfcf9057Smrg ;; 446cfcf9057Smrg news1000) 447cfcf9057Smrg basic_machine=m68030-sony 44840613eb2Smrg basic_os=newsos 449cfcf9057Smrg ;; 450cfcf9057Smrg necv70) 451cfcf9057Smrg basic_machine=v70-nec 45240613eb2Smrg basic_os=sysv 453cfcf9057Smrg ;; 454cfcf9057Smrg nh3000) 455cfcf9057Smrg basic_machine=m68k-harris 45640613eb2Smrg basic_os=cxux 457cfcf9057Smrg ;; 458cfcf9057Smrg nh[45]000) 459cfcf9057Smrg basic_machine=m88k-harris 46040613eb2Smrg basic_os=cxux 461cfcf9057Smrg ;; 462cfcf9057Smrg nindy960) 463cfcf9057Smrg basic_machine=i960-intel 46440613eb2Smrg basic_os=nindy 465cfcf9057Smrg ;; 466cfcf9057Smrg mon960) 467cfcf9057Smrg basic_machine=i960-intel 46840613eb2Smrg basic_os=mon960 469cfcf9057Smrg ;; 470cfcf9057Smrg nonstopux) 471cfcf9057Smrg basic_machine=mips-compaq 47240613eb2Smrg basic_os=nonstopux 473cfcf9057Smrg ;; 474cfcf9057Smrg os400) 475cfcf9057Smrg basic_machine=powerpc-ibm 47640613eb2Smrg basic_os=os400 477cfcf9057Smrg ;; 478cfcf9057Smrg OSE68000 | ose68000) 479cfcf9057Smrg basic_machine=m68000-ericsson 48040613eb2Smrg basic_os=ose 481cfcf9057Smrg ;; 482cfcf9057Smrg os68k) 483cfcf9057Smrg basic_machine=m68k-none 48440613eb2Smrg basic_os=os68k 485cfcf9057Smrg ;; 486cfcf9057Smrg paragon) 487cfcf9057Smrg basic_machine=i860-intel 48840613eb2Smrg basic_os=osf 489cfcf9057Smrg ;; 490cfcf9057Smrg parisc) 491cfcf9057Smrg basic_machine=hppa-unknown 49240613eb2Smrg basic_os=linux 49340613eb2Smrg ;; 49440613eb2Smrg psp) 49540613eb2Smrg basic_machine=mipsallegrexel-sony 49640613eb2Smrg basic_os=psp 497cfcf9057Smrg ;; 498cfcf9057Smrg pw32) 499cfcf9057Smrg basic_machine=i586-unknown 50040613eb2Smrg basic_os=pw32 501cfcf9057Smrg ;; 502cfcf9057Smrg rdos | rdos64) 503cfcf9057Smrg basic_machine=x86_64-pc 50440613eb2Smrg basic_os=rdos 505cfcf9057Smrg ;; 506cfcf9057Smrg rdos32) 507cfcf9057Smrg basic_machine=i386-pc 50840613eb2Smrg basic_os=rdos 509cfcf9057Smrg ;; 510cfcf9057Smrg rom68k) 511cfcf9057Smrg basic_machine=m68k-rom68k 51240613eb2Smrg basic_os=coff 513cfcf9057Smrg ;; 514cfcf9057Smrg sa29200) 515cfcf9057Smrg basic_machine=a29k-amd 51640613eb2Smrg basic_os=udi 517cfcf9057Smrg ;; 518cfcf9057Smrg sei) 519cfcf9057Smrg basic_machine=mips-sei 52040613eb2Smrg basic_os=seiux 521cfcf9057Smrg ;; 522cfcf9057Smrg sequent) 523cfcf9057Smrg basic_machine=i386-sequent 52440613eb2Smrg basic_os= 525cfcf9057Smrg ;; 526cfcf9057Smrg sps7) 527cfcf9057Smrg basic_machine=m68k-bull 52840613eb2Smrg basic_os=sysv2 529cfcf9057Smrg ;; 530cfcf9057Smrg st2000) 531cfcf9057Smrg basic_machine=m68k-tandem 53240613eb2Smrg basic_os= 533cfcf9057Smrg ;; 534cfcf9057Smrg stratus) 535cfcf9057Smrg basic_machine=i860-stratus 53640613eb2Smrg basic_os=sysv4 537cfcf9057Smrg ;; 538cfcf9057Smrg sun2) 539cfcf9057Smrg basic_machine=m68000-sun 54040613eb2Smrg basic_os= 541cfcf9057Smrg ;; 542cfcf9057Smrg sun2os3) 543cfcf9057Smrg basic_machine=m68000-sun 54440613eb2Smrg basic_os=sunos3 545cfcf9057Smrg ;; 546cfcf9057Smrg sun2os4) 547cfcf9057Smrg basic_machine=m68000-sun 54840613eb2Smrg basic_os=sunos4 549cfcf9057Smrg ;; 550cfcf9057Smrg sun3) 551cfcf9057Smrg basic_machine=m68k-sun 55240613eb2Smrg basic_os= 553cfcf9057Smrg ;; 554cfcf9057Smrg sun3os3) 555cfcf9057Smrg basic_machine=m68k-sun 55640613eb2Smrg basic_os=sunos3 557cfcf9057Smrg ;; 558cfcf9057Smrg sun3os4) 559cfcf9057Smrg basic_machine=m68k-sun 56040613eb2Smrg basic_os=sunos4 561cfcf9057Smrg ;; 562cfcf9057Smrg sun4) 563cfcf9057Smrg basic_machine=sparc-sun 56440613eb2Smrg basic_os= 565cfcf9057Smrg ;; 566cfcf9057Smrg sun4os3) 567cfcf9057Smrg basic_machine=sparc-sun 56840613eb2Smrg basic_os=sunos3 569cfcf9057Smrg ;; 570cfcf9057Smrg sun4os4) 571cfcf9057Smrg basic_machine=sparc-sun 57240613eb2Smrg basic_os=sunos4 573cfcf9057Smrg ;; 574cfcf9057Smrg sun4sol2) 575cfcf9057Smrg basic_machine=sparc-sun 57640613eb2Smrg basic_os=solaris2 577cfcf9057Smrg ;; 578cfcf9057Smrg sun386 | sun386i | roadrunner) 579cfcf9057Smrg basic_machine=i386-sun 58040613eb2Smrg basic_os= 581cfcf9057Smrg ;; 582cfcf9057Smrg sv1) 583cfcf9057Smrg basic_machine=sv1-cray 58440613eb2Smrg basic_os=unicos 585cfcf9057Smrg ;; 586cfcf9057Smrg symmetry) 587cfcf9057Smrg basic_machine=i386-sequent 58840613eb2Smrg basic_os=dynix 589cfcf9057Smrg ;; 590cfcf9057Smrg t3e) 591cfcf9057Smrg basic_machine=alphaev5-cray 59240613eb2Smrg basic_os=unicos 593cfcf9057Smrg ;; 594cfcf9057Smrg t90) 595cfcf9057Smrg basic_machine=t90-cray 59640613eb2Smrg basic_os=unicos 597cfcf9057Smrg ;; 598cfcf9057Smrg toad1) 599cfcf9057Smrg basic_machine=pdp10-xkl 60040613eb2Smrg basic_os=tops20 601cfcf9057Smrg ;; 602cfcf9057Smrg tpf) 603cfcf9057Smrg basic_machine=s390x-ibm 60440613eb2Smrg basic_os=tpf 605cfcf9057Smrg ;; 606cfcf9057Smrg udi29k) 607cfcf9057Smrg basic_machine=a29k-amd 60840613eb2Smrg basic_os=udi 609cfcf9057Smrg ;; 610cfcf9057Smrg ultra3) 611cfcf9057Smrg basic_machine=a29k-nyu 61240613eb2Smrg basic_os=sym1 613cfcf9057Smrg ;; 614cfcf9057Smrg v810 | necv810) 615cfcf9057Smrg basic_machine=v810-nec 61640613eb2Smrg basic_os=none 617cfcf9057Smrg ;; 618cfcf9057Smrg vaxv) 619cfcf9057Smrg basic_machine=vax-dec 62040613eb2Smrg basic_os=sysv 621cfcf9057Smrg ;; 622cfcf9057Smrg vms) 623cfcf9057Smrg basic_machine=vax-dec 62440613eb2Smrg basic_os=vms 62540613eb2Smrg ;; 62640613eb2Smrg vsta) 62740613eb2Smrg basic_machine=i386-pc 62840613eb2Smrg basic_os=vsta 629cfcf9057Smrg ;; 630cfcf9057Smrg vxworks960) 631cfcf9057Smrg basic_machine=i960-wrs 63240613eb2Smrg basic_os=vxworks 633cfcf9057Smrg ;; 634cfcf9057Smrg vxworks68) 635cfcf9057Smrg basic_machine=m68k-wrs 63640613eb2Smrg basic_os=vxworks 637cfcf9057Smrg ;; 638cfcf9057Smrg vxworks29k) 639cfcf9057Smrg basic_machine=a29k-wrs 64040613eb2Smrg basic_os=vxworks 641cfcf9057Smrg ;; 642cfcf9057Smrg xbox) 643cfcf9057Smrg basic_machine=i686-pc 64440613eb2Smrg basic_os=mingw32 645cfcf9057Smrg ;; 646cfcf9057Smrg ymp) 647cfcf9057Smrg basic_machine=ymp-cray 64840613eb2Smrg basic_os=unicos 649cfcf9057Smrg ;; 650cfcf9057Smrg *) 651cfcf9057Smrg basic_machine=$1 65240613eb2Smrg basic_os= 653cfcf9057Smrg ;; 654cfcf9057Smrg esac 6556f03b1f6Smrg ;; 6566f03b1f6Smrgesac 6576f03b1f6Smrg 658cfcf9057Smrg# Decode 1-component or ad-hoc basic machines 6596f03b1f6Smrgcase $basic_machine in 660cfcf9057Smrg # Here we handle the default manufacturer of certain CPU types. It is in 661cfcf9057Smrg # some cases the only manufacturer, in others, it is the most popular. 662cfcf9057Smrg w89k) 663cfcf9057Smrg cpu=hppa1.1 664cfcf9057Smrg vendor=winbond 6656f03b1f6Smrg ;; 666cfcf9057Smrg op50n) 667cfcf9057Smrg cpu=hppa1.1 668cfcf9057Smrg vendor=oki 6696f03b1f6Smrg ;; 670cfcf9057Smrg op60c) 671cfcf9057Smrg cpu=hppa1.1 672cfcf9057Smrg vendor=oki 6736f03b1f6Smrg ;; 674cfcf9057Smrg ibm*) 675cfcf9057Smrg cpu=i370 676cfcf9057Smrg vendor=ibm 67717caa701Smrg ;; 678cfcf9057Smrg orion105) 679cfcf9057Smrg cpu=clipper 680cfcf9057Smrg vendor=highlevel 68117caa701Smrg ;; 682cfcf9057Smrg mac | mpw | mac-mpw) 683cfcf9057Smrg cpu=m68k 684cfcf9057Smrg vendor=apple 68517caa701Smrg ;; 686cfcf9057Smrg pmac | pmac-mpw) 687cfcf9057Smrg cpu=powerpc 688cfcf9057Smrg vendor=apple 68917caa701Smrg ;; 69017caa701Smrg 6916f03b1f6Smrg # Recognize the various machine names and aliases which stand 6926f03b1f6Smrg # for a CPU type and a company and sometimes even an OS. 6936f03b1f6Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694cfcf9057Smrg cpu=m68000 695cfcf9057Smrg vendor=att 6966f03b1f6Smrg ;; 6976f03b1f6Smrg 3b*) 698cfcf9057Smrg cpu=we32k 699cfcf9057Smrg vendor=att 70098af18c5Smrg ;; 701356f6debSmrg bluegene*) 702cfcf9057Smrg cpu=powerpc 703cfcf9057Smrg vendor=ibm 70440613eb2Smrg basic_os=cnk 7056f03b1f6Smrg ;; 7066f03b1f6Smrg decsystem10* | dec10*) 707cfcf9057Smrg cpu=pdp10 708cfcf9057Smrg vendor=dec 70940613eb2Smrg basic_os=tops10 7106f03b1f6Smrg ;; 7116f03b1f6Smrg decsystem20* | dec20*) 712cfcf9057Smrg cpu=pdp10 713cfcf9057Smrg vendor=dec 71440613eb2Smrg basic_os=tops20 7156f03b1f6Smrg ;; 7166f03b1f6Smrg delta | 3300 | motorola-3300 | motorola-delta \ 7176f03b1f6Smrg | 3300-motorola | delta-motorola) 718cfcf9057Smrg cpu=m68k 719cfcf9057Smrg vendor=motorola 7206f03b1f6Smrg ;; 721c1e3c5d0Smrg dpx2*) 722cfcf9057Smrg cpu=m68k 723cfcf9057Smrg vendor=bull 72440613eb2Smrg basic_os=sysv3 7256f03b1f6Smrg ;; 7266f03b1f6Smrg encore | umax | mmax) 727cfcf9057Smrg cpu=ns32k 728cfcf9057Smrg vendor=encore 7296f03b1f6Smrg ;; 730cfcf9057Smrg elxsi) 731cfcf9057Smrg cpu=elxsi 732cfcf9057Smrg vendor=elxsi 73340613eb2Smrg basic_os=${basic_os:-bsd} 7346f03b1f6Smrg ;; 7356f03b1f6Smrg fx2800) 736cfcf9057Smrg cpu=i860 737cfcf9057Smrg vendor=alliant 7386f03b1f6Smrg ;; 7396f03b1f6Smrg genix) 740cfcf9057Smrg cpu=ns32k 741cfcf9057Smrg vendor=ns 7426f03b1f6Smrg ;; 7436f03b1f6Smrg h3050r* | hiux*) 744cfcf9057Smrg cpu=hppa1.1 745cfcf9057Smrg vendor=hitachi 74640613eb2Smrg basic_os=hiuxwe2 7476f03b1f6Smrg ;; 7486f03b1f6Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749cfcf9057Smrg cpu=hppa1.0 750cfcf9057Smrg vendor=hp 7516f03b1f6Smrg ;; 7526f03b1f6Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753cfcf9057Smrg cpu=m68000 754cfcf9057Smrg vendor=hp 7556f03b1f6Smrg ;; 7566f03b1f6Smrg hp9k3[2-9][0-9]) 757cfcf9057Smrg cpu=m68k 758cfcf9057Smrg vendor=hp 7596f03b1f6Smrg ;; 7606f03b1f6Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761cfcf9057Smrg cpu=hppa1.0 762cfcf9057Smrg vendor=hp 7636f03b1f6Smrg ;; 7646f03b1f6Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765cfcf9057Smrg cpu=hppa1.1 766cfcf9057Smrg vendor=hp 7676f03b1f6Smrg ;; 7686f03b1f6Smrg hp9k78[0-9] | hp78[0-9]) 7696f03b1f6Smrg # FIXME: really hppa2.0-hp 770cfcf9057Smrg cpu=hppa1.1 771cfcf9057Smrg vendor=hp 7726f03b1f6Smrg ;; 7736f03b1f6Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7746f03b1f6Smrg # FIXME: really hppa2.0-hp 775cfcf9057Smrg cpu=hppa1.1 776cfcf9057Smrg vendor=hp 7776f03b1f6Smrg ;; 7786f03b1f6Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779cfcf9057Smrg cpu=hppa1.1 780cfcf9057Smrg vendor=hp 7816f03b1f6Smrg ;; 7826f03b1f6Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783cfcf9057Smrg cpu=hppa1.0 784cfcf9057Smrg vendor=hp 7856f03b1f6Smrg ;; 7866f03b1f6Smrg i*86v32) 7870f57e2e1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788cfcf9057Smrg vendor=pc 78940613eb2Smrg basic_os=sysv32 7906f03b1f6Smrg ;; 7916f03b1f6Smrg i*86v4*) 7920f57e2e1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793cfcf9057Smrg vendor=pc 79440613eb2Smrg basic_os=sysv4 7956f03b1f6Smrg ;; 7966f03b1f6Smrg i*86v) 7970f57e2e1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798cfcf9057Smrg vendor=pc 79940613eb2Smrg basic_os=sysv 8006f03b1f6Smrg ;; 8016f03b1f6Smrg i*86sol2) 8020f57e2e1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803cfcf9057Smrg vendor=pc 80440613eb2Smrg basic_os=solaris2 8056f03b1f6Smrg ;; 806cfcf9057Smrg j90 | j90-cray) 807cfcf9057Smrg cpu=j90 808cfcf9057Smrg vendor=cray 80940613eb2Smrg basic_os=${basic_os:-unicos} 8106f03b1f6Smrg ;; 8116f03b1f6Smrg iris | iris4d) 812cfcf9057Smrg cpu=mips 813cfcf9057Smrg vendor=sgi 81440613eb2Smrg case $basic_os in 815cfcf9057Smrg irix*) 8166f03b1f6Smrg ;; 8176f03b1f6Smrg *) 81840613eb2Smrg basic_os=irix4 8196f03b1f6Smrg ;; 8206f03b1f6Smrg esac 8216f03b1f6Smrg ;; 8226f03b1f6Smrg miniframe) 823cfcf9057Smrg cpu=m68000 824cfcf9057Smrg vendor=convergent 82517caa701Smrg ;; 826cfcf9057Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827cfcf9057Smrg cpu=m68k 828cfcf9057Smrg vendor=atari 82940613eb2Smrg basic_os=mint 83040613eb2Smrg ;; 8316f03b1f6Smrg news-3600 | risc-news) 832cfcf9057Smrg cpu=mips 833cfcf9057Smrg vendor=sony 83440613eb2Smrg basic_os=newsos 8356f03b1f6Smrg ;; 836c1e3c5d0Smrg next | m*-next) 837cfcf9057Smrg cpu=m68k 838cfcf9057Smrg vendor=next 83940613eb2Smrg case $basic_os in 84040613eb2Smrg openstep*) 84140613eb2Smrg ;; 84240613eb2Smrg nextstep*) 8436f03b1f6Smrg ;; 844cfcf9057Smrg ns2*) 84540613eb2Smrg basic_os=nextstep2 8466f03b1f6Smrg ;; 8476f03b1f6Smrg *) 84840613eb2Smrg basic_os=nextstep3 8496f03b1f6Smrg ;; 8506f03b1f6Smrg esac 8516f03b1f6Smrg ;; 8526f03b1f6Smrg np1) 853cfcf9057Smrg cpu=np1 854cfcf9057Smrg vendor=gould 855c1e3c5d0Smrg ;; 8566f03b1f6Smrg op50n-* | op60c-*) 857cfcf9057Smrg cpu=hppa1.1 858cfcf9057Smrg vendor=oki 85940613eb2Smrg basic_os=proelf 8606f03b1f6Smrg ;; 8616f03b1f6Smrg pa-hitachi) 862cfcf9057Smrg cpu=hppa1.1 863cfcf9057Smrg vendor=hitachi 86440613eb2Smrg basic_os=hiuxwe2 86598af18c5Smrg ;; 8666f03b1f6Smrg pbd) 867cfcf9057Smrg cpu=sparc 868cfcf9057Smrg vendor=tti 8696f03b1f6Smrg ;; 8706f03b1f6Smrg pbb) 871cfcf9057Smrg cpu=m68k 872cfcf9057Smrg vendor=tti 8736f03b1f6Smrg ;; 874cfcf9057Smrg pc532) 875cfcf9057Smrg cpu=ns32k 876cfcf9057Smrg vendor=pc532 8776f03b1f6Smrg ;; 8786f03b1f6Smrg pn) 879cfcf9057Smrg cpu=pn 880cfcf9057Smrg vendor=gould 8816f03b1f6Smrg ;; 882cfcf9057Smrg power) 883cfcf9057Smrg cpu=power 884cfcf9057Smrg vendor=ibm 8856f03b1f6Smrg ;; 886cfcf9057Smrg ps2) 887cfcf9057Smrg cpu=i386 888cfcf9057Smrg vendor=ibm 8896f03b1f6Smrg ;; 890cfcf9057Smrg rm[46]00) 891cfcf9057Smrg cpu=mips 892cfcf9057Smrg vendor=siemens 8936f03b1f6Smrg ;; 894cfcf9057Smrg rtpc | rtpc-*) 895cfcf9057Smrg cpu=romp 896cfcf9057Smrg vendor=ibm 8976f03b1f6Smrg ;; 898cfcf9057Smrg sde) 899cfcf9057Smrg cpu=mipsisa32 900cfcf9057Smrg vendor=sde 90140613eb2Smrg basic_os=${basic_os:-elf} 9026f03b1f6Smrg ;; 903cfcf9057Smrg simso-wrs) 904cfcf9057Smrg cpu=sparclite 905cfcf9057Smrg vendor=wrs 90640613eb2Smrg basic_os=vxworks 9076f03b1f6Smrg ;; 908cfcf9057Smrg tower | tower-32) 909cfcf9057Smrg cpu=m68k 910cfcf9057Smrg vendor=ncr 9116f03b1f6Smrg ;; 912cfcf9057Smrg vpp*|vx|vx-*) 913cfcf9057Smrg cpu=f301 914cfcf9057Smrg vendor=fujitsu 91517caa701Smrg ;; 916cfcf9057Smrg w65) 917cfcf9057Smrg cpu=w65 918cfcf9057Smrg vendor=wdc 9196f03b1f6Smrg ;; 920cfcf9057Smrg w89k-*) 921cfcf9057Smrg cpu=hppa1.1 922cfcf9057Smrg vendor=winbond 92340613eb2Smrg basic_os=proelf 9246f03b1f6Smrg ;; 925cfcf9057Smrg none) 926cfcf9057Smrg cpu=none 927cfcf9057Smrg vendor=none 9286f03b1f6Smrg ;; 929cfcf9057Smrg leon|leon[3-9]) 930cfcf9057Smrg cpu=sparc 931cfcf9057Smrg vendor=$basic_machine 9326f03b1f6Smrg ;; 933cfcf9057Smrg leon-*|leon[3-9]-*) 934cfcf9057Smrg cpu=sparc 9350f57e2e1Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9366f03b1f6Smrg ;; 937cfcf9057Smrg 938cfcf9057Smrg *-*) 93940613eb2Smrg # shellcheck disable=SC2162 9400f57e2e1Smrg saved_IFS=$IFS 94140613eb2Smrg IFS="-" read cpu vendor <<EOF 942cfcf9057Smrg$basic_machine 943cfcf9057SmrgEOF 9440f57e2e1Smrg IFS=$saved_IFS 9456f03b1f6Smrg ;; 946cfcf9057Smrg # We use `pc' rather than `unknown' 947cfcf9057Smrg # because (1) that's what they normally are, and 948cfcf9057Smrg # (2) the word "unknown" tends to confuse beginning users. 949cfcf9057Smrg i*86 | x86_64) 950cfcf9057Smrg cpu=$basic_machine 951cfcf9057Smrg vendor=pc 9526f03b1f6Smrg ;; 953cfcf9057Smrg # These rules are duplicated from below for sake of the special case above; 954cfcf9057Smrg # i.e. things that normalized to x86 arches should also default to "pc" 955cfcf9057Smrg pc98) 956cfcf9057Smrg cpu=i386 957cfcf9057Smrg vendor=pc 9586f03b1f6Smrg ;; 959cfcf9057Smrg x64 | amd64) 960cfcf9057Smrg cpu=x86_64 961cfcf9057Smrg vendor=pc 9626f03b1f6Smrg ;; 963cfcf9057Smrg # Recognize the basic CPU types without company name. 964cfcf9057Smrg *) 965cfcf9057Smrg cpu=$basic_machine 966cfcf9057Smrg vendor=unknown 96798af18c5Smrg ;; 968cfcf9057Smrgesac 969cfcf9057Smrg 970cfcf9057Smrgunset -v basic_machine 971cfcf9057Smrg 972cfcf9057Smrg# Decode basic machines in the full and proper CPU-Company form. 973cfcf9057Smrgcase $cpu-$vendor in 97440613eb2Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975cfcf9057Smrg # some cases the only manufacturer, in others, it is the most popular. 976cfcf9057Smrg craynv-unknown) 977cfcf9057Smrg vendor=cray 97840613eb2Smrg basic_os=${basic_os:-unicosmp} 9796f03b1f6Smrg ;; 980cfcf9057Smrg c90-unknown | c90-cray) 981cfcf9057Smrg vendor=cray 98240613eb2Smrg basic_os=${Basic_os:-unicos} 9836f03b1f6Smrg ;; 984cfcf9057Smrg fx80-unknown) 985cfcf9057Smrg vendor=alliant 98698af18c5Smrg ;; 987cfcf9057Smrg romp-unknown) 988cfcf9057Smrg vendor=ibm 9896f03b1f6Smrg ;; 990cfcf9057Smrg mmix-unknown) 991cfcf9057Smrg vendor=knuth 9926f03b1f6Smrg ;; 993cfcf9057Smrg microblaze-unknown | microblazeel-unknown) 994cfcf9057Smrg vendor=xilinx 9956f03b1f6Smrg ;; 996cfcf9057Smrg rs6000-unknown) 997cfcf9057Smrg vendor=ibm 9986f03b1f6Smrg ;; 999cfcf9057Smrg vax-unknown) 1000cfcf9057Smrg vendor=dec 10016f03b1f6Smrg ;; 1002cfcf9057Smrg pdp11-unknown) 1003cfcf9057Smrg vendor=dec 100417caa701Smrg ;; 1005cfcf9057Smrg we32k-unknown) 1006cfcf9057Smrg vendor=att 10076f03b1f6Smrg ;; 1008cfcf9057Smrg cydra-unknown) 1009cfcf9057Smrg vendor=cydrome 10106f03b1f6Smrg ;; 1011cfcf9057Smrg i370-ibm*) 1012cfcf9057Smrg vendor=ibm 10136f03b1f6Smrg ;; 1014cfcf9057Smrg orion-unknown) 1015cfcf9057Smrg vendor=highlevel 10166f03b1f6Smrg ;; 1017cfcf9057Smrg xps-unknown | xps100-unknown) 1018cfcf9057Smrg cpu=xps100 1019cfcf9057Smrg vendor=honeywell 10206f03b1f6Smrg ;; 1021cfcf9057Smrg 1022cfcf9057Smrg # Here we normalize CPU types with a missing or matching vendor 10230f57e2e1Smrg armh-unknown | armh-alt) 10240f57e2e1Smrg cpu=armv7l 10250f57e2e1Smrg vendor=alt 10260f57e2e1Smrg basic_os=${basic_os:-linux-gnueabihf} 10270f57e2e1Smrg ;; 1028cfcf9057Smrg dpx20-unknown | dpx20-bull) 1029cfcf9057Smrg cpu=rs6000 1030cfcf9057Smrg vendor=bull 103140613eb2Smrg basic_os=${basic_os:-bosx} 10326f03b1f6Smrg ;; 1033cfcf9057Smrg 1034cfcf9057Smrg # Here we normalize CPU types irrespective of the vendor 1035cfcf9057Smrg amd64-*) 1036cfcf9057Smrg cpu=x86_64 10376f03b1f6Smrg ;; 1038cfcf9057Smrg blackfin-*) 1039cfcf9057Smrg cpu=bfin 104040613eb2Smrg basic_os=linux 10416f03b1f6Smrg ;; 1042cfcf9057Smrg c54x-*) 1043cfcf9057Smrg cpu=tic54x 10446f03b1f6Smrg ;; 1045cfcf9057Smrg c55x-*) 1046cfcf9057Smrg cpu=tic55x 10476f03b1f6Smrg ;; 1048cfcf9057Smrg c6x-*) 1049cfcf9057Smrg cpu=tic6x 10506f03b1f6Smrg ;; 1051cfcf9057Smrg e500v[12]-*) 1052cfcf9057Smrg cpu=powerpc 105340613eb2Smrg basic_os=${basic_os}"spe" 10546f03b1f6Smrg ;; 1055cfcf9057Smrg mips3*-*) 1056cfcf9057Smrg cpu=mips64 10576f03b1f6Smrg ;; 1058cfcf9057Smrg ms1-*) 1059cfcf9057Smrg cpu=mt 10606f03b1f6Smrg ;; 1061cfcf9057Smrg m68knommu-*) 1062cfcf9057Smrg cpu=m68k 106340613eb2Smrg basic_os=linux 10646f03b1f6Smrg ;; 1065cfcf9057Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1066cfcf9057Smrg cpu=s12z 106798af18c5Smrg ;; 1068cfcf9057Smrg openrisc-*) 1069cfcf9057Smrg cpu=or32 10706f03b1f6Smrg ;; 1071cfcf9057Smrg parisc-*) 1072cfcf9057Smrg cpu=hppa 107340613eb2Smrg basic_os=linux 10746f03b1f6Smrg ;; 1075cfcf9057Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1076cfcf9057Smrg cpu=i586 10776f03b1f6Smrg ;; 10780f57e2e1Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1079cfcf9057Smrg cpu=i686 10806f03b1f6Smrg ;; 1081cfcf9057Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1082cfcf9057Smrg cpu=i686 10836f03b1f6Smrg ;; 1084cfcf9057Smrg pentium4-*) 1085cfcf9057Smrg cpu=i786 10866f03b1f6Smrg ;; 1087cfcf9057Smrg pc98-*) 1088cfcf9057Smrg cpu=i386 10896f03b1f6Smrg ;; 1090cfcf9057Smrg ppc-* | ppcbe-*) 1091cfcf9057Smrg cpu=powerpc 10926f03b1f6Smrg ;; 1093cfcf9057Smrg ppcle-* | powerpclittle-*) 1094cfcf9057Smrg cpu=powerpcle 10956f03b1f6Smrg ;; 1096cfcf9057Smrg ppc64-*) 1097cfcf9057Smrg cpu=powerpc64 10986f03b1f6Smrg ;; 1099cfcf9057Smrg ppc64le-* | powerpc64little-*) 1100cfcf9057Smrg cpu=powerpc64le 11016f03b1f6Smrg ;; 1102cfcf9057Smrg sb1-*) 1103cfcf9057Smrg cpu=mipsisa64sb1 11046f03b1f6Smrg ;; 1105cfcf9057Smrg sb1el-*) 1106cfcf9057Smrg cpu=mipsisa64sb1el 11076f03b1f6Smrg ;; 1108cfcf9057Smrg sh5e[lb]-*) 11090f57e2e1Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11106f03b1f6Smrg ;; 1111cfcf9057Smrg spur-*) 1112cfcf9057Smrg cpu=spur 11136f03b1f6Smrg ;; 1114cfcf9057Smrg strongarm-* | thumb-*) 1115cfcf9057Smrg cpu=arm 11166f03b1f6Smrg ;; 1117cfcf9057Smrg tx39-*) 1118cfcf9057Smrg cpu=mipstx39 1119c1e3c5d0Smrg ;; 1120cfcf9057Smrg tx39el-*) 1121cfcf9057Smrg cpu=mipstx39el 11226f03b1f6Smrg ;; 1123cfcf9057Smrg x64-*) 1124cfcf9057Smrg cpu=x86_64 11256f03b1f6Smrg ;; 112617caa701Smrg xscale-* | xscalee[bl]-*) 11270f57e2e1Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112840613eb2Smrg ;; 11290f57e2e1Smrg arm64-* | aarch64le-*) 113040613eb2Smrg cpu=aarch64 11316f03b1f6Smrg ;; 11326f03b1f6Smrg 113340613eb2Smrg # Recognize the canonical CPU Types that limit and/or modify the 1134cfcf9057Smrg # company names they are paired with. 1135cfcf9057Smrg cr16-*) 113640613eb2Smrg basic_os=${basic_os:-elf} 11376f03b1f6Smrg ;; 1138cfcf9057Smrg crisv32-* | etraxfs*-*) 1139cfcf9057Smrg cpu=crisv32 1140cfcf9057Smrg vendor=axis 11416f03b1f6Smrg ;; 1142cfcf9057Smrg cris-* | etrax*-*) 1143cfcf9057Smrg cpu=cris 1144cfcf9057Smrg vendor=axis 11456f03b1f6Smrg ;; 1146cfcf9057Smrg crx-*) 114740613eb2Smrg basic_os=${basic_os:-elf} 11486f03b1f6Smrg ;; 1149cfcf9057Smrg neo-tandem) 1150cfcf9057Smrg cpu=neo 1151cfcf9057Smrg vendor=tandem 11526f03b1f6Smrg ;; 1153cfcf9057Smrg nse-tandem) 1154cfcf9057Smrg cpu=nse 1155cfcf9057Smrg vendor=tandem 11566f03b1f6Smrg ;; 1157cfcf9057Smrg nsr-tandem) 1158cfcf9057Smrg cpu=nsr 1159cfcf9057Smrg vendor=tandem 11606f03b1f6Smrg ;; 1161cfcf9057Smrg nsv-tandem) 1162cfcf9057Smrg cpu=nsv 1163cfcf9057Smrg vendor=tandem 11646f03b1f6Smrg ;; 1165cfcf9057Smrg nsx-tandem) 1166cfcf9057Smrg cpu=nsx 1167cfcf9057Smrg vendor=tandem 11686f03b1f6Smrg ;; 116940613eb2Smrg mipsallegrexel-sony) 117040613eb2Smrg cpu=mipsallegrexel 117140613eb2Smrg vendor=sony 11726f03b1f6Smrg ;; 1173cfcf9057Smrg tile*-*) 117440613eb2Smrg basic_os=${basic_os:-linux-gnu} 11756f03b1f6Smrg ;; 1176cfcf9057Smrg 11776f03b1f6Smrg *) 117840613eb2Smrg # Recognize the canonical CPU types that are allowed with any 1179cfcf9057Smrg # company name. 1180cfcf9057Smrg case $cpu in 1181cfcf9057Smrg 1750a | 580 \ 1182cfcf9057Smrg | a29k \ 1183cfcf9057Smrg | aarch64 | aarch64_be \ 1184cfcf9057Smrg | abacus \ 1185cfcf9057Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1186cfcf9057Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1187cfcf9057Smrg | alphapca5[67] | alpha64pca5[67] \ 1188cfcf9057Smrg | am33_2.0 \ 118940613eb2Smrg | amdgcn \ 11900f57e2e1Smrg | arc | arceb | arc32 | arc64 \ 119140613eb2Smrg | arm | arm[lb]e | arme[lb] | armv* \ 1192cfcf9057Smrg | avr | avr32 \ 1193cfcf9057Smrg | asmjs \ 1194cfcf9057Smrg | ba \ 1195cfcf9057Smrg | be32 | be64 \ 119640613eb2Smrg | bfin | bpf | bs2000 \ 1197cfcf9057Smrg | c[123]* | c30 | [cjt]90 | c4x \ 1198cfcf9057Smrg | c8051 | clipper | craynv | csky | cydra \ 11990f57e2e1Smrg | d10v | d30v | dlx | dsp16xx \ 1200cfcf9057Smrg | e2k | elxsi | epiphany \ 1201cfcf9057Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1202cfcf9057Smrg | h8300 | h8500 \ 1203cfcf9057Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1204cfcf9057Smrg | hexagon \ 1205cfcf9057Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1206cfcf9057Smrg | ip2k | iq2000 \ 1207cfcf9057Smrg | k1om \ 1208cfcf9057Smrg | le32 | le64 \ 1209cfcf9057Smrg | lm32 \ 12100f57e2e1Smrg | loongarch32 | loongarch64 \ 1211cfcf9057Smrg | m32c | m32r | m32rle \ 121240613eb2Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 121340613eb2Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1214cfcf9057Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1215cfcf9057Smrg | microblaze | microblazeel \ 1216cfcf9057Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1217cfcf9057Smrg | mips16 \ 121840613eb2Smrg | mips64 | mips64eb | mips64el \ 1219cfcf9057Smrg | mips64octeon | mips64octeonel \ 1220cfcf9057Smrg | mips64orion | mips64orionel \ 1221cfcf9057Smrg | mips64r5900 | mips64r5900el \ 1222cfcf9057Smrg | mips64vr | mips64vrel \ 1223cfcf9057Smrg | mips64vr4100 | mips64vr4100el \ 1224cfcf9057Smrg | mips64vr4300 | mips64vr4300el \ 1225cfcf9057Smrg | mips64vr5000 | mips64vr5000el \ 1226cfcf9057Smrg | mips64vr5900 | mips64vr5900el \ 1227cfcf9057Smrg | mipsisa32 | mipsisa32el \ 1228cfcf9057Smrg | mipsisa32r2 | mipsisa32r2el \ 12290f57e2e1Smrg | mipsisa32r3 | mipsisa32r3el \ 12300f57e2e1Smrg | mipsisa32r5 | mipsisa32r5el \ 1231cfcf9057Smrg | mipsisa32r6 | mipsisa32r6el \ 1232cfcf9057Smrg | mipsisa64 | mipsisa64el \ 1233cfcf9057Smrg | mipsisa64r2 | mipsisa64r2el \ 12340f57e2e1Smrg | mipsisa64r3 | mipsisa64r3el \ 12350f57e2e1Smrg | mipsisa64r5 | mipsisa64r5el \ 1236cfcf9057Smrg | mipsisa64r6 | mipsisa64r6el \ 1237cfcf9057Smrg | mipsisa64sb1 | mipsisa64sb1el \ 1238cfcf9057Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 1239cfcf9057Smrg | mipsr5900 | mipsr5900el \ 1240cfcf9057Smrg | mipstx39 | mipstx39el \ 1241cfcf9057Smrg | mmix \ 1242cfcf9057Smrg | mn10200 | mn10300 \ 1243cfcf9057Smrg | moxie \ 1244cfcf9057Smrg | mt \ 1245cfcf9057Smrg | msp430 \ 1246cfcf9057Smrg | nds32 | nds32le | nds32be \ 1247cfcf9057Smrg | nfp \ 1248cfcf9057Smrg | nios | nios2 | nios2eb | nios2el \ 124940613eb2Smrg | none | np1 | ns16k | ns32k | nvptx \ 1250cfcf9057Smrg | open8 \ 1251cfcf9057Smrg | or1k* \ 1252cfcf9057Smrg | or32 \ 1253cfcf9057Smrg | orion \ 125440613eb2Smrg | picochip \ 1255cfcf9057Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1256cfcf9057Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1257cfcf9057Smrg | pru \ 1258cfcf9057Smrg | pyramid \ 125940613eb2Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1260cfcf9057Smrg | rl78 | romp | rs6000 | rx \ 126140613eb2Smrg | s390 | s390x \ 1262cfcf9057Smrg | score \ 126340613eb2Smrg | sh | shl \ 126440613eb2Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1265cfcf9057Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1266cfcf9057Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1267cfcf9057Smrg | sparclite \ 1268cfcf9057Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1269cfcf9057Smrg | spu \ 1270cfcf9057Smrg | tahoe \ 127140613eb2Smrg | thumbv7* \ 1272cfcf9057Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1273cfcf9057Smrg | tron \ 1274cfcf9057Smrg | ubicom32 \ 127540613eb2Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1276cfcf9057Smrg | vax \ 1277cfcf9057Smrg | visium \ 127840613eb2Smrg | w65 \ 127940613eb2Smrg | wasm32 | wasm64 \ 1280cfcf9057Smrg | we32k \ 1281cfcf9057Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1282cfcf9057Smrg | xstormy16 | xtensa* \ 1283cfcf9057Smrg | ymp \ 1284cfcf9057Smrg | z8k | z80) 1285cfcf9057Smrg ;; 1286cfcf9057Smrg 1287cfcf9057Smrg *) 1288cfcf9057Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1289cfcf9057Smrg exit 1 1290cfcf9057Smrg ;; 1291cfcf9057Smrg esac 12926f03b1f6Smrg ;; 12936f03b1f6Smrgesac 12946f03b1f6Smrg 12956f03b1f6Smrg# Here we canonicalize certain aliases for manufacturers. 1296cfcf9057Smrgcase $vendor in 1297cfcf9057Smrg digital*) 1298cfcf9057Smrg vendor=dec 12996f03b1f6Smrg ;; 1300cfcf9057Smrg commodore*) 1301cfcf9057Smrg vendor=cbm 13026f03b1f6Smrg ;; 13036f03b1f6Smrg *) 13046f03b1f6Smrg ;; 13056f03b1f6Smrgesac 13066f03b1f6Smrg 13076f03b1f6Smrg# Decode manufacturer-specific aliases for certain operating systems. 13086f03b1f6Smrg 130940613eb2Smrgif test x$basic_os != x 13106f03b1f6Smrgthen 131140613eb2Smrg 13120f57e2e1Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 131340613eb2Smrg# set os. 131440613eb2Smrgcase $basic_os in 131540613eb2Smrg gnu/linux*) 131640613eb2Smrg kernel=linux 13170f57e2e1Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131840613eb2Smrg ;; 131940613eb2Smrg os2-emx) 132040613eb2Smrg kernel=os2 13210f57e2e1Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 132240613eb2Smrg ;; 132340613eb2Smrg nto-qnx*) 132440613eb2Smrg kernel=nto 13250f57e2e1Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132640613eb2Smrg ;; 132740613eb2Smrg *-*) 132840613eb2Smrg # shellcheck disable=SC2162 13290f57e2e1Smrg saved_IFS=$IFS 133040613eb2Smrg IFS="-" read kernel os <<EOF 133140613eb2Smrg$basic_os 133240613eb2SmrgEOF 13330f57e2e1Smrg IFS=$saved_IFS 133440613eb2Smrg ;; 133540613eb2Smrg # Default OS when just kernel was specified 133640613eb2Smrg nto*) 133740613eb2Smrg kernel=nto 13380f57e2e1Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133940613eb2Smrg ;; 134040613eb2Smrg linux*) 134140613eb2Smrg kernel=linux 13420f57e2e1Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13430f57e2e1Smrg ;; 13440f57e2e1Smrg managarm*) 13450f57e2e1Smrg kernel=managarm 13460f57e2e1Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 134740613eb2Smrg ;; 134840613eb2Smrg *) 134940613eb2Smrg kernel= 135040613eb2Smrg os=$basic_os 135140613eb2Smrg ;; 135240613eb2Smrgesac 135340613eb2Smrg 135440613eb2Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 135540613eb2Smrg# etc.) 13566f03b1f6Smrgcase $os in 1357c1e3c5d0Smrg # First match some system type aliases that might get confused 1358c1e3c5d0Smrg # with valid system types. 1359cfcf9057Smrg # solaris* is a basic system type, with this one exception. 1360cfcf9057Smrg auroraux) 1361cfcf9057Smrg os=auroraux 1362356f6debSmrg ;; 1363cfcf9057Smrg bluegene*) 1364cfcf9057Smrg os=cnk 1365cfcf9057Smrg ;; 1366cfcf9057Smrg solaris1 | solaris1.*) 13670f57e2e1Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13686f03b1f6Smrg ;; 1369cfcf9057Smrg solaris) 1370cfcf9057Smrg os=solaris2 13716f03b1f6Smrg ;; 1372cfcf9057Smrg unixware*) 1373cfcf9057Smrg os=sysv4.2uw 13746f03b1f6Smrg ;; 1375c1e3c5d0Smrg # es1800 is here to avoid being matched by es* (a different OS) 1376cfcf9057Smrg es1800*) 1377cfcf9057Smrg os=ose 1378cfcf9057Smrg ;; 1379cfcf9057Smrg # Some version numbers need modification 1380cfcf9057Smrg chorusos*) 1381cfcf9057Smrg os=chorusos 1382cfcf9057Smrg ;; 1383cfcf9057Smrg isc) 1384cfcf9057Smrg os=isc2.2 1385cfcf9057Smrg ;; 1386cfcf9057Smrg sco6) 1387cfcf9057Smrg os=sco5v6 1388cfcf9057Smrg ;; 1389cfcf9057Smrg sco5) 1390cfcf9057Smrg os=sco3.2v5 1391cfcf9057Smrg ;; 1392cfcf9057Smrg sco4) 1393cfcf9057Smrg os=sco3.2v4 1394cfcf9057Smrg ;; 1395cfcf9057Smrg sco3.2.[4-9]*) 13960f57e2e1Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1397cfcf9057Smrg ;; 139840613eb2Smrg sco*v* | scout) 1399cfcf9057Smrg # Don't match below 1400cfcf9057Smrg ;; 1401cfcf9057Smrg sco*) 1402cfcf9057Smrg os=sco3.2v2 1403cfcf9057Smrg ;; 1404cfcf9057Smrg psos*) 1405cfcf9057Smrg os=psos 1406c1e3c5d0Smrg ;; 1407cfcf9057Smrg qnx*) 140840613eb2Smrg os=qnx 14096f03b1f6Smrg ;; 1410cfcf9057Smrg hiux*) 1411cfcf9057Smrg os=hiuxwe2 1412cfcf9057Smrg ;; 1413cfcf9057Smrg lynx*178) 1414cfcf9057Smrg os=lynxos178 14156f03b1f6Smrg ;; 1416cfcf9057Smrg lynx*5) 1417cfcf9057Smrg os=lynxos5 1418cfcf9057Smrg ;; 141940613eb2Smrg lynxos*) 142040613eb2Smrg # don't get caught up in next wildcard 142140613eb2Smrg ;; 1422cfcf9057Smrg lynx*) 1423cfcf9057Smrg os=lynxos 1424cfcf9057Smrg ;; 142540613eb2Smrg mac[0-9]*) 14260f57e2e1Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 14276f03b1f6Smrg ;; 1428cfcf9057Smrg opened*) 1429cfcf9057Smrg os=openedition 14306f03b1f6Smrg ;; 1431cfcf9057Smrg os400*) 1432cfcf9057Smrg os=os400 14336f03b1f6Smrg ;; 1434cfcf9057Smrg sunos5*) 14350f57e2e1Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14366f03b1f6Smrg ;; 1437cfcf9057Smrg sunos6*) 14380f57e2e1Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14396f03b1f6Smrg ;; 1440cfcf9057Smrg wince*) 1441cfcf9057Smrg os=wince 14426f03b1f6Smrg ;; 1443cfcf9057Smrg utek*) 1444cfcf9057Smrg os=bsd 14456f03b1f6Smrg ;; 1446cfcf9057Smrg dynix*) 1447cfcf9057Smrg os=bsd 14486f03b1f6Smrg ;; 1449cfcf9057Smrg acis*) 1450cfcf9057Smrg os=aos 14516f03b1f6Smrg ;; 1452cfcf9057Smrg atheos*) 1453cfcf9057Smrg os=atheos 14546f03b1f6Smrg ;; 1455cfcf9057Smrg syllable*) 1456cfcf9057Smrg os=syllable 14576f03b1f6Smrg ;; 1458cfcf9057Smrg 386bsd) 1459cfcf9057Smrg os=bsd 14606f03b1f6Smrg ;; 1461cfcf9057Smrg ctix* | uts*) 1462cfcf9057Smrg os=sysv 14636f03b1f6Smrg ;; 1464cfcf9057Smrg nova*) 1465cfcf9057Smrg os=rtmk-nova 14666f03b1f6Smrg ;; 1467cfcf9057Smrg ns2) 1468cfcf9057Smrg os=nextstep2 14696f03b1f6Smrg ;; 14706f03b1f6Smrg # Preserve the version number of sinix5. 1471cfcf9057Smrg sinix5.*) 14720f57e2e1Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14736f03b1f6Smrg ;; 1474cfcf9057Smrg sinix*) 1475cfcf9057Smrg os=sysv4 14766f03b1f6Smrg ;; 1477cfcf9057Smrg tpf*) 1478cfcf9057Smrg os=tpf 14796f03b1f6Smrg ;; 1480cfcf9057Smrg triton*) 1481cfcf9057Smrg os=sysv3 14826f03b1f6Smrg ;; 1483cfcf9057Smrg oss*) 1484cfcf9057Smrg os=sysv3 14856f03b1f6Smrg ;; 1486cfcf9057Smrg svr4*) 1487cfcf9057Smrg os=sysv4 14886f03b1f6Smrg ;; 1489cfcf9057Smrg svr3) 1490cfcf9057Smrg os=sysv3 14916f03b1f6Smrg ;; 1492cfcf9057Smrg sysvr4) 1493cfcf9057Smrg os=sysv4 14946f03b1f6Smrg ;; 1495cfcf9057Smrg ose*) 1496cfcf9057Smrg os=ose 14976f03b1f6Smrg ;; 1498cfcf9057Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1499cfcf9057Smrg os=mint 15006f03b1f6Smrg ;; 1501cfcf9057Smrg dicos*) 1502cfcf9057Smrg os=dicos 1503356f6debSmrg ;; 1504cfcf9057Smrg pikeos*) 1505c1e3c5d0Smrg # Until real need of OS specific support for 1506c1e3c5d0Smrg # particular features comes up, bare metal 1507c1e3c5d0Smrg # configurations are quite functional. 1508cfcf9057Smrg case $cpu in 1509c1e3c5d0Smrg arm*) 1510cfcf9057Smrg os=eabi 1511c1e3c5d0Smrg ;; 1512c1e3c5d0Smrg *) 1513cfcf9057Smrg os=elf 1514c1e3c5d0Smrg ;; 1515c1e3c5d0Smrg esac 1516c1e3c5d0Smrg ;; 15176f03b1f6Smrg *) 151840613eb2Smrg # No normalization, but not necessarily accepted, that comes below. 15196f03b1f6Smrg ;; 15206f03b1f6Smrgesac 152140613eb2Smrg 15226f03b1f6Smrgelse 15236f03b1f6Smrg 15246f03b1f6Smrg# Here we handle the default operating systems that come with various machines. 15256f03b1f6Smrg# The value should be what the vendor currently ships out the door with their 15266f03b1f6Smrg# machine or put another way, the most popular os provided with the machine. 15276f03b1f6Smrg 15286f03b1f6Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15296f03b1f6Smrg# "-sun"), then you have to tell the case statement up towards the top 15306f03b1f6Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15316f03b1f6Smrg# will signal an error saying that MANUFACTURER isn't an operating 15326f03b1f6Smrg# system, and we'll never get to this point. 15336f03b1f6Smrg 153440613eb2Smrgkernel= 1535cfcf9057Smrgcase $cpu-$vendor in 153617caa701Smrg score-*) 1537cfcf9057Smrg os=elf 153898af18c5Smrg ;; 153917caa701Smrg spu-*) 1540cfcf9057Smrg os=elf 154198af18c5Smrg ;; 15426f03b1f6Smrg *-acorn) 1543cfcf9057Smrg os=riscix1.2 15446f03b1f6Smrg ;; 15456f03b1f6Smrg arm*-rebel) 154640613eb2Smrg kernel=linux 154740613eb2Smrg os=gnu 15486f03b1f6Smrg ;; 15496f03b1f6Smrg arm*-semi) 1550cfcf9057Smrg os=aout 15516f03b1f6Smrg ;; 155217caa701Smrg c4x-* | tic4x-*) 1553cfcf9057Smrg os=coff 155417caa701Smrg ;; 1555dcbf891fSmrg c8051-*) 1556cfcf9057Smrg os=elf 1557cfcf9057Smrg ;; 1558cfcf9057Smrg clipper-intergraph) 1559cfcf9057Smrg os=clix 1560dcbf891fSmrg ;; 156117caa701Smrg hexagon-*) 1562cfcf9057Smrg os=elf 156398af18c5Smrg ;; 156442941e3bSmrg tic54x-*) 1565cfcf9057Smrg os=coff 156642941e3bSmrg ;; 156742941e3bSmrg tic55x-*) 1568cfcf9057Smrg os=coff 156942941e3bSmrg ;; 157042941e3bSmrg tic6x-*) 1571cfcf9057Smrg os=coff 157242941e3bSmrg ;; 15736f03b1f6Smrg # This must come before the *-dec entry. 15746f03b1f6Smrg pdp10-*) 1575cfcf9057Smrg os=tops20 15766f03b1f6Smrg ;; 15776f03b1f6Smrg pdp11-*) 1578cfcf9057Smrg os=none 15796f03b1f6Smrg ;; 15806f03b1f6Smrg *-dec | vax-*) 1581cfcf9057Smrg os=ultrix4.2 15826f03b1f6Smrg ;; 15836f03b1f6Smrg m68*-apollo) 1584cfcf9057Smrg os=domain 15856f03b1f6Smrg ;; 15866f03b1f6Smrg i386-sun) 1587cfcf9057Smrg os=sunos4.0.2 15886f03b1f6Smrg ;; 15896f03b1f6Smrg m68000-sun) 1590cfcf9057Smrg os=sunos3 15916f03b1f6Smrg ;; 15926f03b1f6Smrg m68*-cisco) 1593cfcf9057Smrg os=aout 15946f03b1f6Smrg ;; 159517caa701Smrg mep-*) 1596cfcf9057Smrg os=elf 159798af18c5Smrg ;; 15986f03b1f6Smrg mips*-cisco) 1599cfcf9057Smrg os=elf 16006f03b1f6Smrg ;; 16016f03b1f6Smrg mips*-*) 1602cfcf9057Smrg os=elf 16036f03b1f6Smrg ;; 16046f03b1f6Smrg or32-*) 1605cfcf9057Smrg os=coff 16066f03b1f6Smrg ;; 16076f03b1f6Smrg *-tti) # must be before sparc entry or we get the wrong os. 1608cfcf9057Smrg os=sysv3 16096f03b1f6Smrg ;; 16106f03b1f6Smrg sparc-* | *-sun) 1611cfcf9057Smrg os=sunos4.1.1 16126f03b1f6Smrg ;; 1613c1e3c5d0Smrg pru-*) 1614cfcf9057Smrg os=elf 1615c1e3c5d0Smrg ;; 16166f03b1f6Smrg *-be) 1617cfcf9057Smrg os=beos 16186f03b1f6Smrg ;; 16196f03b1f6Smrg *-ibm) 1620cfcf9057Smrg os=aix 16216f03b1f6Smrg ;; 162217caa701Smrg *-knuth) 1623cfcf9057Smrg os=mmixware 16246f03b1f6Smrg ;; 16256f03b1f6Smrg *-wec) 1626cfcf9057Smrg os=proelf 16276f03b1f6Smrg ;; 16286f03b1f6Smrg *-winbond) 1629cfcf9057Smrg os=proelf 16306f03b1f6Smrg ;; 16316f03b1f6Smrg *-oki) 1632cfcf9057Smrg os=proelf 16336f03b1f6Smrg ;; 16346f03b1f6Smrg *-hp) 1635cfcf9057Smrg os=hpux 16366f03b1f6Smrg ;; 16376f03b1f6Smrg *-hitachi) 1638cfcf9057Smrg os=hiux 16396f03b1f6Smrg ;; 16406f03b1f6Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1641cfcf9057Smrg os=sysv 16426f03b1f6Smrg ;; 16436f03b1f6Smrg *-cbm) 1644cfcf9057Smrg os=amigaos 16456f03b1f6Smrg ;; 16466f03b1f6Smrg *-dg) 1647cfcf9057Smrg os=dgux 16486f03b1f6Smrg ;; 16496f03b1f6Smrg *-dolphin) 1650cfcf9057Smrg os=sysv3 16516f03b1f6Smrg ;; 16526f03b1f6Smrg m68k-ccur) 1653cfcf9057Smrg os=rtu 16546f03b1f6Smrg ;; 16556f03b1f6Smrg m88k-omron*) 1656cfcf9057Smrg os=luna 16576f03b1f6Smrg ;; 1658c1e3c5d0Smrg *-next) 1659cfcf9057Smrg os=nextstep 16606f03b1f6Smrg ;; 16616f03b1f6Smrg *-sequent) 1662cfcf9057Smrg os=ptx 16636f03b1f6Smrg ;; 16646f03b1f6Smrg *-crds) 1665cfcf9057Smrg os=unos 16666f03b1f6Smrg ;; 16676f03b1f6Smrg *-ns) 1668cfcf9057Smrg os=genix 16696f03b1f6Smrg ;; 16706f03b1f6Smrg i370-*) 1671cfcf9057Smrg os=mvs 16726f03b1f6Smrg ;; 16736f03b1f6Smrg *-gould) 1674cfcf9057Smrg os=sysv 16756f03b1f6Smrg ;; 16766f03b1f6Smrg *-highlevel) 1677cfcf9057Smrg os=bsd 16786f03b1f6Smrg ;; 16796f03b1f6Smrg *-encore) 1680cfcf9057Smrg os=bsd 16816f03b1f6Smrg ;; 16826f03b1f6Smrg *-sgi) 1683cfcf9057Smrg os=irix 16846f03b1f6Smrg ;; 16856f03b1f6Smrg *-siemens) 1686cfcf9057Smrg os=sysv4 16876f03b1f6Smrg ;; 16886f03b1f6Smrg *-masscomp) 1689cfcf9057Smrg os=rtu 16906f03b1f6Smrg ;; 16916f03b1f6Smrg f30[01]-fujitsu | f700-fujitsu) 1692cfcf9057Smrg os=uxpv 16936f03b1f6Smrg ;; 16946f03b1f6Smrg *-rom68k) 1695cfcf9057Smrg os=coff 16966f03b1f6Smrg ;; 16976f03b1f6Smrg *-*bug) 1698cfcf9057Smrg os=coff 16996f03b1f6Smrg ;; 17006f03b1f6Smrg *-apple) 1701cfcf9057Smrg os=macos 17026f03b1f6Smrg ;; 17036f03b1f6Smrg *-atari*) 1704cfcf9057Smrg os=mint 1705cfcf9057Smrg ;; 1706cfcf9057Smrg *-wrs) 1707cfcf9057Smrg os=vxworks 17086f03b1f6Smrg ;; 17096f03b1f6Smrg *) 1710cfcf9057Smrg os=none 17116f03b1f6Smrg ;; 17126f03b1f6Smrgesac 171340613eb2Smrg 17146f03b1f6Smrgfi 17156f03b1f6Smrg 171640613eb2Smrg# Now, validate our (potentially fixed-up) OS. 171740613eb2Smrgcase $os in 17180f57e2e1Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17190f57e2e1Smrg musl* | newlib* | relibc* | uclibc*) 172040613eb2Smrg ;; 17210f57e2e1Smrg # Likewise for "kernel-abi" 172240613eb2Smrg eabi* | gnueabi*) 172340613eb2Smrg ;; 17240f57e2e1Smrg # VxWorks passes extra cpu info in the 4th filed. 17250f57e2e1Smrg simlinux | simwindows | spe) 17260f57e2e1Smrg ;; 172740613eb2Smrg # Now accept the basic system types. 172840613eb2Smrg # The portable systems comes first. 172940613eb2Smrg # Each alternative MUST end in a * to match a version number. 173040613eb2Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 173140613eb2Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 173240613eb2Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 173340613eb2Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 173440613eb2Smrg | hiux* | abug | nacl* | netware* | windows* \ 173540613eb2Smrg | os9* | macos* | osx* | ios* \ 173640613eb2Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 173740613eb2Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 173840613eb2Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173940613eb2Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 174040613eb2Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 174140613eb2Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17420f57e2e1Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 174340613eb2Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 174440613eb2Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 174540613eb2Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 174640613eb2Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17470f57e2e1Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 174840613eb2Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174940613eb2Smrg | midipix* | mingw32* | mingw64* | mint* \ 175040613eb2Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 175140613eb2Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 175240613eb2Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17530f57e2e1Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 175440613eb2Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 175540613eb2Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 175640613eb2Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 175740613eb2Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 175840613eb2Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175940613eb2Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17600f57e2e1Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 17610f57e2e1Smrg | fiwix* | mlibc* ) 176240613eb2Smrg ;; 176340613eb2Smrg # This one is extra strict with allowed versions 176440613eb2Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 176540613eb2Smrg # Don't forget version if it is 3.2v4 or newer. 176640613eb2Smrg ;; 176740613eb2Smrg none) 176840613eb2Smrg ;; 17690f57e2e1Smrg kernel* ) 17700f57e2e1Smrg # Restricted further below 17710f57e2e1Smrg ;; 177240613eb2Smrg *) 177340613eb2Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 177440613eb2Smrg exit 1 177540613eb2Smrg ;; 177640613eb2Smrgesac 177740613eb2Smrg 177840613eb2Smrg# As a final step for OS-related things, validate the OS-kernel combination 177940613eb2Smrg# (given a valid OS), if there is a kernel. 178040613eb2Smrgcase $kernel-$os in 17810f57e2e1Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17820f57e2e1Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 178340613eb2Smrg ;; 178440613eb2Smrg uclinux-uclibc* ) 178540613eb2Smrg ;; 17860f57e2e1Smrg managarm-mlibc* | managarm-kernel* ) 17870f57e2e1Smrg ;; 17880f57e2e1Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 178940613eb2Smrg # These are just libc implementations, not actual OSes, and thus 179040613eb2Smrg # require a kernel. 179140613eb2Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 179240613eb2Smrg exit 1 179340613eb2Smrg ;; 17940f57e2e1Smrg -kernel* ) 17950f57e2e1Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 17960f57e2e1Smrg exit 1 17970f57e2e1Smrg ;; 17980f57e2e1Smrg *-kernel* ) 17990f57e2e1Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 18000f57e2e1Smrg exit 1 18010f57e2e1Smrg ;; 180240613eb2Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 180340613eb2Smrg ;; 18040f57e2e1Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 18050f57e2e1Smrg ;; 180640613eb2Smrg nto-qnx*) 180740613eb2Smrg ;; 180840613eb2Smrg os2-emx) 180940613eb2Smrg ;; 181040613eb2Smrg *-eabi* | *-gnueabi*) 181140613eb2Smrg ;; 181240613eb2Smrg -*) 181340613eb2Smrg # Blank kernel with real OS is always fine. 181440613eb2Smrg ;; 181540613eb2Smrg *-*) 181640613eb2Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 181740613eb2Smrg exit 1 181840613eb2Smrg ;; 181940613eb2Smrgesac 182040613eb2Smrg 18216f03b1f6Smrg# Here we handle the case where we know the os, and the CPU type, but not the 18226f03b1f6Smrg# manufacturer. We pick the logical manufacturer. 1823cfcf9057Smrgcase $vendor in 1824cfcf9057Smrg unknown) 182540613eb2Smrg case $cpu-$os in 182640613eb2Smrg *-riscix*) 18276f03b1f6Smrg vendor=acorn 18286f03b1f6Smrg ;; 182940613eb2Smrg *-sunos*) 18306f03b1f6Smrg vendor=sun 18316f03b1f6Smrg ;; 183240613eb2Smrg *-cnk* | *-aix*) 18336f03b1f6Smrg vendor=ibm 18346f03b1f6Smrg ;; 183540613eb2Smrg *-beos*) 18366f03b1f6Smrg vendor=be 18376f03b1f6Smrg ;; 183840613eb2Smrg *-hpux*) 18396f03b1f6Smrg vendor=hp 18406f03b1f6Smrg ;; 184140613eb2Smrg *-mpeix*) 18426f03b1f6Smrg vendor=hp 18436f03b1f6Smrg ;; 184440613eb2Smrg *-hiux*) 18456f03b1f6Smrg vendor=hitachi 18466f03b1f6Smrg ;; 184740613eb2Smrg *-unos*) 18486f03b1f6Smrg vendor=crds 18496f03b1f6Smrg ;; 185040613eb2Smrg *-dgux*) 18516f03b1f6Smrg vendor=dg 18526f03b1f6Smrg ;; 185340613eb2Smrg *-luna*) 18546f03b1f6Smrg vendor=omron 18556f03b1f6Smrg ;; 185640613eb2Smrg *-genix*) 18576f03b1f6Smrg vendor=ns 18586f03b1f6Smrg ;; 185940613eb2Smrg *-clix*) 1860cfcf9057Smrg vendor=intergraph 1861cfcf9057Smrg ;; 186240613eb2Smrg *-mvs* | *-opened*) 186340613eb2Smrg vendor=ibm 186440613eb2Smrg ;; 186540613eb2Smrg *-os400*) 18666f03b1f6Smrg vendor=ibm 18676f03b1f6Smrg ;; 186840613eb2Smrg s390-* | s390x-*) 18696f03b1f6Smrg vendor=ibm 18706f03b1f6Smrg ;; 187140613eb2Smrg *-ptx*) 18726f03b1f6Smrg vendor=sequent 18736f03b1f6Smrg ;; 187440613eb2Smrg *-tpf*) 18756f03b1f6Smrg vendor=ibm 18766f03b1f6Smrg ;; 187740613eb2Smrg *-vxsim* | *-vxworks* | *-windiss*) 18786f03b1f6Smrg vendor=wrs 18796f03b1f6Smrg ;; 188040613eb2Smrg *-aux*) 18816f03b1f6Smrg vendor=apple 18826f03b1f6Smrg ;; 188340613eb2Smrg *-hms*) 18846f03b1f6Smrg vendor=hitachi 18856f03b1f6Smrg ;; 188640613eb2Smrg *-mpw* | *-macos*) 18876f03b1f6Smrg vendor=apple 18886f03b1f6Smrg ;; 188940613eb2Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18906f03b1f6Smrg vendor=atari 18916f03b1f6Smrg ;; 189240613eb2Smrg *-vos*) 18936f03b1f6Smrg vendor=stratus 18946f03b1f6Smrg ;; 18956f03b1f6Smrg esac 18966f03b1f6Smrg ;; 18976f03b1f6Smrgesac 18986f03b1f6Smrg 189940613eb2Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 19006f03b1f6Smrgexit 19016f03b1f6Smrg 19026f03b1f6Smrg# Local variables: 1903cfcf9057Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 19046f03b1f6Smrg# time-stamp-start: "timestamp='" 19056f03b1f6Smrg# time-stamp-format: "%:y-%02m-%02d" 19066f03b1f6Smrg# time-stamp-end: "'" 19076f03b1f6Smrg# End: 1908