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