153354cdbSmrg#! /bin/sh 253354cdbSmrg# Configuration validation subroutine script. 3afb14e9bSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 453354cdbSmrg 5afb14e9bSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6afb14e9bSmrg 7afb14e9bSmrgtimestamp='2021-08-14' 853354cdbSmrg 9ecb85c42Smrg# This file is free software; you can redistribute it and/or modify it 10ecb85c42Smrg# under the terms of the GNU General Public License as published by 11ecb85c42Smrg# the Free Software Foundation; either version 3 of the License, or 1253354cdbSmrg# (at your option) any later version. 1353354cdbSmrg# 14ecb85c42Smrg# This program is distributed in the hope that it will be useful, but 15ecb85c42Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16ecb85c42Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17ecb85c42Smrg# General Public License for more details. 1853354cdbSmrg# 1953354cdbSmrg# You should have received a copy of the GNU General Public License 20afb14e9bSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 2153354cdbSmrg# 2253354cdbSmrg# As a special exception to the GNU General Public License, if you 2353354cdbSmrg# distribute this file as part of a program that contains a 2453354cdbSmrg# configuration script generated by Autoconf, you may include it under 25ecb85c42Smrg# the same distribution terms that you use for the rest of that 26ecb85c42Smrg# program. This Exception is an additional permission under section 7 27ecb85c42Smrg# of the GNU General Public License, version 3 ("GPLv3"). 2853354cdbSmrg 2953354cdbSmrg 30afb14e9bSmrg# Please send patches to <config-patches@gnu.org>. 3153354cdbSmrg# 3253354cdbSmrg# Configuration subroutine to validate and canonicalize a configuration type. 3353354cdbSmrg# Supply the specified configuration type as an argument. 3453354cdbSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 3553354cdbSmrg# Otherwise, we print the canonical config type on stdout and succeed. 3653354cdbSmrg 3786bbecbeSmrg# You can get the latest version of this script from: 38afb14e9bSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 3986bbecbeSmrg 4053354cdbSmrg# This file is supposed to be the same for all GNU packages 4153354cdbSmrg# and recognize all the CPU types, system types and aliases 4253354cdbSmrg# that are meaningful with *any* GNU software. 4353354cdbSmrg# Each package is responsible for reporting which valid configurations 4453354cdbSmrg# it does not support. The user should be able to distinguish 4553354cdbSmrg# a failure to support a valid configuration from a meaningless 4653354cdbSmrg# configuration. 4753354cdbSmrg 4853354cdbSmrg# The goal of this file is to map all the various variations of a given 4953354cdbSmrg# machine specification into a single specification in the form: 5053354cdbSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5153354cdbSmrg# or in some cases, the newer four-part form: 5253354cdbSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5353354cdbSmrg# It is wrong to echo any other type of specification. 5453354cdbSmrg 55afb14e9bSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 56afb14e9bSmrg# about features and limitations of the classic Bourne shell that were 57afb14e9bSmrg# superseded or lifted in POSIX. However, this script identifies a wide 58afb14e9bSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59afb14e9bSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60afb14e9bSmrg# have a pre-POSIX /bin/sh. 61afb14e9bSmrg 6253354cdbSmrgme=`echo "$0" | sed -e 's,.*/,,'` 6353354cdbSmrg 6453354cdbSmrgusage="\ 65afb14e9bSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6653354cdbSmrg 6753354cdbSmrgCanonicalize a configuration name. 6853354cdbSmrg 69afb14e9bSmrgOptions: 7053354cdbSmrg -h, --help print this help, then exit 7153354cdbSmrg -t, --time-stamp print date of last modification, then exit 7253354cdbSmrg -v, --version print version number, then exit 7353354cdbSmrg 7453354cdbSmrgReport bugs and patches to <config-patches@gnu.org>." 7553354cdbSmrg 7653354cdbSmrgversion="\ 7753354cdbSmrgGNU config.sub ($timestamp) 7853354cdbSmrg 79afb14e9bSmrgCopyright 1992-2021 Free Software Foundation, Inc. 8053354cdbSmrg 8153354cdbSmrgThis is free software; see the source for copying conditions. There is NO 8253354cdbSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8353354cdbSmrg 8453354cdbSmrghelp=" 8553354cdbSmrgTry \`$me --help' for more information." 8653354cdbSmrg 8753354cdbSmrg# Parse command line 8853354cdbSmrgwhile test $# -gt 0 ; do 8953354cdbSmrg case $1 in 9053354cdbSmrg --time-stamp | --time* | -t ) 9153354cdbSmrg echo "$timestamp" ; exit ;; 9253354cdbSmrg --version | -v ) 9353354cdbSmrg echo "$version" ; exit ;; 9453354cdbSmrg --help | --h* | -h ) 9553354cdbSmrg echo "$usage"; exit ;; 9653354cdbSmrg -- ) # Stop option processing 9753354cdbSmrg shift; break ;; 9853354cdbSmrg - ) # Use stdin as input. 9953354cdbSmrg break ;; 10053354cdbSmrg -* ) 101afb14e9bSmrg echo "$me: invalid option $1$help" >&2 10253354cdbSmrg exit 1 ;; 10353354cdbSmrg 10453354cdbSmrg *local*) 10553354cdbSmrg # First pass through any local machine types. 106afb14e9bSmrg echo "$1" 10753354cdbSmrg exit ;; 10853354cdbSmrg 10953354cdbSmrg * ) 11053354cdbSmrg break ;; 11153354cdbSmrg esac 11253354cdbSmrgdone 11353354cdbSmrg 11453354cdbSmrgcase $# in 11553354cdbSmrg 0) echo "$me: missing argument$help" >&2 11653354cdbSmrg exit 1;; 11753354cdbSmrg 1) ;; 11853354cdbSmrg *) echo "$me: too many arguments$help" >&2 11953354cdbSmrg exit 1;; 12053354cdbSmrgesac 12153354cdbSmrg 122afb14e9bSmrg# Split fields of configuration type 123afb14e9bSmrg# shellcheck disable=SC2162 124afb14e9bSmrgsaved_IFS=$IFS 125afb14e9bSmrgIFS="-" read field1 field2 field3 field4 <<EOF 126afb14e9bSmrg$1 127afb14e9bSmrgEOF 128afb14e9bSmrgIFS=$saved_IFS 12953354cdbSmrg 130afb14e9bSmrg# Separate into logical components for further validation 131afb14e9bSmrgcase $1 in 132afb14e9bSmrg *-*-*-*-*) 133afb14e9bSmrg echo Invalid configuration \`"$1"\': more than four components >&2 134afb14e9bSmrg exit 1 13553354cdbSmrg ;; 136afb14e9bSmrg *-*-*-*) 137afb14e9bSmrg basic_machine=$field1-$field2 138afb14e9bSmrg basic_os=$field3-$field4 13953354cdbSmrg ;; 140afb14e9bSmrg *-*-*) 141afb14e9bSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142afb14e9bSmrg # parts 143afb14e9bSmrg maybe_os=$field2-$field3 144afb14e9bSmrg case $maybe_os in 145afb14e9bSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 146afb14e9bSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147afb14e9bSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148afb14e9bSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 149afb14e9bSmrg basic_machine=$field1 150afb14e9bSmrg basic_os=$maybe_os 151afb14e9bSmrg ;; 152afb14e9bSmrg android-linux) 153afb14e9bSmrg basic_machine=$field1-unknown 154afb14e9bSmrg basic_os=linux-android 155afb14e9bSmrg ;; 156afb14e9bSmrg *) 157afb14e9bSmrg basic_machine=$field1-$field2 158afb14e9bSmrg basic_os=$field3 159afb14e9bSmrg ;; 160afb14e9bSmrg esac 16153354cdbSmrg ;; 162afb14e9bSmrg *-*) 163afb14e9bSmrg # A lone config we happen to match not fitting any pattern 164afb14e9bSmrg case $field1-$field2 in 165afb14e9bSmrg decstation-3100) 166afb14e9bSmrg basic_machine=mips-dec 167afb14e9bSmrg basic_os= 168afb14e9bSmrg ;; 169afb14e9bSmrg *-*) 170afb14e9bSmrg # Second component is usually, but not always the OS 171afb14e9bSmrg case $field2 in 172afb14e9bSmrg # Prevent following clause from handling this valid os 173afb14e9bSmrg sun*os*) 174afb14e9bSmrg basic_machine=$field1 175afb14e9bSmrg basic_os=$field2 176afb14e9bSmrg ;; 177afb14e9bSmrg zephyr*) 178afb14e9bSmrg basic_machine=$field1-unknown 179afb14e9bSmrg basic_os=$field2 180afb14e9bSmrg ;; 181afb14e9bSmrg # Manufacturers 182afb14e9bSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183afb14e9bSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184afb14e9bSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185afb14e9bSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186afb14e9bSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187afb14e9bSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188afb14e9bSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189afb14e9bSmrg | microblaze* | sim | cisco \ 190afb14e9bSmrg | oki | wec | wrs | winbond) 191afb14e9bSmrg basic_machine=$field1-$field2 192afb14e9bSmrg basic_os= 193afb14e9bSmrg ;; 194afb14e9bSmrg *) 195afb14e9bSmrg basic_machine=$field1 196afb14e9bSmrg basic_os=$field2 197afb14e9bSmrg ;; 198afb14e9bSmrg esac 199afb14e9bSmrg ;; 200afb14e9bSmrg esac 20153354cdbSmrg ;; 202afb14e9bSmrg *) 203afb14e9bSmrg # Convert single-component short-hands not valid as part of 204afb14e9bSmrg # multi-component configurations. 205afb14e9bSmrg case $field1 in 206afb14e9bSmrg 386bsd) 207afb14e9bSmrg basic_machine=i386-pc 208afb14e9bSmrg basic_os=bsd 209afb14e9bSmrg ;; 210afb14e9bSmrg a29khif) 211afb14e9bSmrg basic_machine=a29k-amd 212afb14e9bSmrg basic_os=udi 213afb14e9bSmrg ;; 214afb14e9bSmrg adobe68k) 215afb14e9bSmrg basic_machine=m68010-adobe 216afb14e9bSmrg basic_os=scout 217afb14e9bSmrg ;; 218afb14e9bSmrg alliant) 219afb14e9bSmrg basic_machine=fx80-alliant 220afb14e9bSmrg basic_os= 221afb14e9bSmrg ;; 222afb14e9bSmrg altos | altos3068) 223afb14e9bSmrg basic_machine=m68k-altos 224afb14e9bSmrg basic_os= 225afb14e9bSmrg ;; 226afb14e9bSmrg am29k) 227afb14e9bSmrg basic_machine=a29k-none 228afb14e9bSmrg basic_os=bsd 229afb14e9bSmrg ;; 230afb14e9bSmrg amdahl) 231afb14e9bSmrg basic_machine=580-amdahl 232afb14e9bSmrg basic_os=sysv 233afb14e9bSmrg ;; 234afb14e9bSmrg amiga) 235afb14e9bSmrg basic_machine=m68k-unknown 236afb14e9bSmrg basic_os= 237afb14e9bSmrg ;; 238afb14e9bSmrg amigaos | amigados) 239afb14e9bSmrg basic_machine=m68k-unknown 240afb14e9bSmrg basic_os=amigaos 241afb14e9bSmrg ;; 242afb14e9bSmrg amigaunix | amix) 243afb14e9bSmrg basic_machine=m68k-unknown 244afb14e9bSmrg basic_os=sysv4 245afb14e9bSmrg ;; 246afb14e9bSmrg apollo68) 247afb14e9bSmrg basic_machine=m68k-apollo 248afb14e9bSmrg basic_os=sysv 249afb14e9bSmrg ;; 250afb14e9bSmrg apollo68bsd) 251afb14e9bSmrg basic_machine=m68k-apollo 252afb14e9bSmrg basic_os=bsd 253afb14e9bSmrg ;; 254afb14e9bSmrg aros) 255afb14e9bSmrg basic_machine=i386-pc 256afb14e9bSmrg basic_os=aros 257afb14e9bSmrg ;; 258afb14e9bSmrg aux) 259afb14e9bSmrg basic_machine=m68k-apple 260afb14e9bSmrg basic_os=aux 261afb14e9bSmrg ;; 262afb14e9bSmrg balance) 263afb14e9bSmrg basic_machine=ns32k-sequent 264afb14e9bSmrg basic_os=dynix 265afb14e9bSmrg ;; 266afb14e9bSmrg blackfin) 267afb14e9bSmrg basic_machine=bfin-unknown 268afb14e9bSmrg basic_os=linux 269afb14e9bSmrg ;; 270afb14e9bSmrg cegcc) 271afb14e9bSmrg basic_machine=arm-unknown 272afb14e9bSmrg basic_os=cegcc 273afb14e9bSmrg ;; 274afb14e9bSmrg convex-c1) 275afb14e9bSmrg basic_machine=c1-convex 276afb14e9bSmrg basic_os=bsd 277afb14e9bSmrg ;; 278afb14e9bSmrg convex-c2) 279afb14e9bSmrg basic_machine=c2-convex 280afb14e9bSmrg basic_os=bsd 281afb14e9bSmrg ;; 282afb14e9bSmrg convex-c32) 283afb14e9bSmrg basic_machine=c32-convex 284afb14e9bSmrg basic_os=bsd 285afb14e9bSmrg ;; 286afb14e9bSmrg convex-c34) 287afb14e9bSmrg basic_machine=c34-convex 288afb14e9bSmrg basic_os=bsd 289afb14e9bSmrg ;; 290afb14e9bSmrg convex-c38) 291afb14e9bSmrg basic_machine=c38-convex 292afb14e9bSmrg basic_os=bsd 293afb14e9bSmrg ;; 294afb14e9bSmrg cray) 295afb14e9bSmrg basic_machine=j90-cray 296afb14e9bSmrg basic_os=unicos 297afb14e9bSmrg ;; 298afb14e9bSmrg crds | unos) 299afb14e9bSmrg basic_machine=m68k-crds 300afb14e9bSmrg basic_os= 301afb14e9bSmrg ;; 302afb14e9bSmrg da30) 303afb14e9bSmrg basic_machine=m68k-da30 304afb14e9bSmrg basic_os= 305afb14e9bSmrg ;; 306afb14e9bSmrg decstation | pmax | pmin | dec3100 | decstatn) 307afb14e9bSmrg basic_machine=mips-dec 308afb14e9bSmrg basic_os= 309afb14e9bSmrg ;; 310afb14e9bSmrg delta88) 311afb14e9bSmrg basic_machine=m88k-motorola 312afb14e9bSmrg basic_os=sysv3 313afb14e9bSmrg ;; 314afb14e9bSmrg dicos) 315afb14e9bSmrg basic_machine=i686-pc 316afb14e9bSmrg basic_os=dicos 317afb14e9bSmrg ;; 318afb14e9bSmrg djgpp) 319afb14e9bSmrg basic_machine=i586-pc 320afb14e9bSmrg basic_os=msdosdjgpp 321afb14e9bSmrg ;; 322afb14e9bSmrg ebmon29k) 323afb14e9bSmrg basic_machine=a29k-amd 324afb14e9bSmrg basic_os=ebmon 325afb14e9bSmrg ;; 326afb14e9bSmrg es1800 | OSE68k | ose68k | ose | OSE) 327afb14e9bSmrg basic_machine=m68k-ericsson 328afb14e9bSmrg basic_os=ose 329afb14e9bSmrg ;; 330afb14e9bSmrg gmicro) 331afb14e9bSmrg basic_machine=tron-gmicro 332afb14e9bSmrg basic_os=sysv 333afb14e9bSmrg ;; 334afb14e9bSmrg go32) 335afb14e9bSmrg basic_machine=i386-pc 336afb14e9bSmrg basic_os=go32 337afb14e9bSmrg ;; 338afb14e9bSmrg h8300hms) 339afb14e9bSmrg basic_machine=h8300-hitachi 340afb14e9bSmrg basic_os=hms 341afb14e9bSmrg ;; 342afb14e9bSmrg h8300xray) 343afb14e9bSmrg basic_machine=h8300-hitachi 344afb14e9bSmrg basic_os=xray 345afb14e9bSmrg ;; 346afb14e9bSmrg h8500hms) 347afb14e9bSmrg basic_machine=h8500-hitachi 348afb14e9bSmrg basic_os=hms 349afb14e9bSmrg ;; 350afb14e9bSmrg harris) 351afb14e9bSmrg basic_machine=m88k-harris 352afb14e9bSmrg basic_os=sysv3 353afb14e9bSmrg ;; 354afb14e9bSmrg hp300 | hp300hpux) 355afb14e9bSmrg basic_machine=m68k-hp 356afb14e9bSmrg basic_os=hpux 357afb14e9bSmrg ;; 358afb14e9bSmrg hp300bsd) 359afb14e9bSmrg basic_machine=m68k-hp 360afb14e9bSmrg basic_os=bsd 361afb14e9bSmrg ;; 362afb14e9bSmrg hppaosf) 363afb14e9bSmrg basic_machine=hppa1.1-hp 364afb14e9bSmrg basic_os=osf 365afb14e9bSmrg ;; 366afb14e9bSmrg hppro) 367afb14e9bSmrg basic_machine=hppa1.1-hp 368afb14e9bSmrg basic_os=proelf 369afb14e9bSmrg ;; 370afb14e9bSmrg i386mach) 371afb14e9bSmrg basic_machine=i386-mach 372afb14e9bSmrg basic_os=mach 373afb14e9bSmrg ;; 374afb14e9bSmrg isi68 | isi) 375afb14e9bSmrg basic_machine=m68k-isi 376afb14e9bSmrg basic_os=sysv 377afb14e9bSmrg ;; 378afb14e9bSmrg m68knommu) 379afb14e9bSmrg basic_machine=m68k-unknown 380afb14e9bSmrg basic_os=linux 381afb14e9bSmrg ;; 382afb14e9bSmrg magnum | m3230) 383afb14e9bSmrg basic_machine=mips-mips 384afb14e9bSmrg basic_os=sysv 385afb14e9bSmrg ;; 386afb14e9bSmrg merlin) 387afb14e9bSmrg basic_machine=ns32k-utek 388afb14e9bSmrg basic_os=sysv 389afb14e9bSmrg ;; 390afb14e9bSmrg mingw64) 391afb14e9bSmrg basic_machine=x86_64-pc 392afb14e9bSmrg basic_os=mingw64 393afb14e9bSmrg ;; 394afb14e9bSmrg mingw32) 395afb14e9bSmrg basic_machine=i686-pc 396afb14e9bSmrg basic_os=mingw32 397afb14e9bSmrg ;; 398afb14e9bSmrg mingw32ce) 399afb14e9bSmrg basic_machine=arm-unknown 400afb14e9bSmrg basic_os=mingw32ce 401afb14e9bSmrg ;; 402afb14e9bSmrg monitor) 403afb14e9bSmrg basic_machine=m68k-rom68k 404afb14e9bSmrg basic_os=coff 405afb14e9bSmrg ;; 406afb14e9bSmrg morphos) 407afb14e9bSmrg basic_machine=powerpc-unknown 408afb14e9bSmrg basic_os=morphos 409afb14e9bSmrg ;; 410afb14e9bSmrg moxiebox) 411afb14e9bSmrg basic_machine=moxie-unknown 412afb14e9bSmrg basic_os=moxiebox 413afb14e9bSmrg ;; 414afb14e9bSmrg msdos) 415afb14e9bSmrg basic_machine=i386-pc 416afb14e9bSmrg basic_os=msdos 417afb14e9bSmrg ;; 418afb14e9bSmrg msys) 419afb14e9bSmrg basic_machine=i686-pc 420afb14e9bSmrg basic_os=msys 421afb14e9bSmrg ;; 422afb14e9bSmrg mvs) 423afb14e9bSmrg basic_machine=i370-ibm 424afb14e9bSmrg basic_os=mvs 425afb14e9bSmrg ;; 426afb14e9bSmrg nacl) 427afb14e9bSmrg basic_machine=le32-unknown 428afb14e9bSmrg basic_os=nacl 429afb14e9bSmrg ;; 430afb14e9bSmrg ncr3000) 431afb14e9bSmrg basic_machine=i486-ncr 432afb14e9bSmrg basic_os=sysv4 433afb14e9bSmrg ;; 434afb14e9bSmrg netbsd386) 435afb14e9bSmrg basic_machine=i386-pc 436afb14e9bSmrg basic_os=netbsd 437afb14e9bSmrg ;; 438afb14e9bSmrg netwinder) 439afb14e9bSmrg basic_machine=armv4l-rebel 440afb14e9bSmrg basic_os=linux 441afb14e9bSmrg ;; 442afb14e9bSmrg news | news700 | news800 | news900) 443afb14e9bSmrg basic_machine=m68k-sony 444afb14e9bSmrg basic_os=newsos 445afb14e9bSmrg ;; 446afb14e9bSmrg news1000) 447afb14e9bSmrg basic_machine=m68030-sony 448afb14e9bSmrg basic_os=newsos 449afb14e9bSmrg ;; 450afb14e9bSmrg necv70) 451afb14e9bSmrg basic_machine=v70-nec 452afb14e9bSmrg basic_os=sysv 453afb14e9bSmrg ;; 454afb14e9bSmrg nh3000) 455afb14e9bSmrg basic_machine=m68k-harris 456afb14e9bSmrg basic_os=cxux 457afb14e9bSmrg ;; 458afb14e9bSmrg nh[45]000) 459afb14e9bSmrg basic_machine=m88k-harris 460afb14e9bSmrg basic_os=cxux 461afb14e9bSmrg ;; 462afb14e9bSmrg nindy960) 463afb14e9bSmrg basic_machine=i960-intel 464afb14e9bSmrg basic_os=nindy 465afb14e9bSmrg ;; 466afb14e9bSmrg mon960) 467afb14e9bSmrg basic_machine=i960-intel 468afb14e9bSmrg basic_os=mon960 469afb14e9bSmrg ;; 470afb14e9bSmrg nonstopux) 471afb14e9bSmrg basic_machine=mips-compaq 472afb14e9bSmrg basic_os=nonstopux 473afb14e9bSmrg ;; 474afb14e9bSmrg os400) 475afb14e9bSmrg basic_machine=powerpc-ibm 476afb14e9bSmrg basic_os=os400 477afb14e9bSmrg ;; 478afb14e9bSmrg OSE68000 | ose68000) 479afb14e9bSmrg basic_machine=m68000-ericsson 480afb14e9bSmrg basic_os=ose 481afb14e9bSmrg ;; 482afb14e9bSmrg os68k) 483afb14e9bSmrg basic_machine=m68k-none 484afb14e9bSmrg basic_os=os68k 485afb14e9bSmrg ;; 486afb14e9bSmrg paragon) 487afb14e9bSmrg basic_machine=i860-intel 488afb14e9bSmrg basic_os=osf 489afb14e9bSmrg ;; 490afb14e9bSmrg parisc) 491afb14e9bSmrg basic_machine=hppa-unknown 492afb14e9bSmrg basic_os=linux 493afb14e9bSmrg ;; 494afb14e9bSmrg psp) 495afb14e9bSmrg basic_machine=mipsallegrexel-sony 496afb14e9bSmrg basic_os=psp 497afb14e9bSmrg ;; 498afb14e9bSmrg pw32) 499afb14e9bSmrg basic_machine=i586-unknown 500afb14e9bSmrg basic_os=pw32 501afb14e9bSmrg ;; 502afb14e9bSmrg rdos | rdos64) 503afb14e9bSmrg basic_machine=x86_64-pc 504afb14e9bSmrg basic_os=rdos 505afb14e9bSmrg ;; 506afb14e9bSmrg rdos32) 507afb14e9bSmrg basic_machine=i386-pc 508afb14e9bSmrg basic_os=rdos 509afb14e9bSmrg ;; 510afb14e9bSmrg rom68k) 511afb14e9bSmrg basic_machine=m68k-rom68k 512afb14e9bSmrg basic_os=coff 513afb14e9bSmrg ;; 514afb14e9bSmrg sa29200) 515afb14e9bSmrg basic_machine=a29k-amd 516afb14e9bSmrg basic_os=udi 517afb14e9bSmrg ;; 518afb14e9bSmrg sei) 519afb14e9bSmrg basic_machine=mips-sei 520afb14e9bSmrg basic_os=seiux 521afb14e9bSmrg ;; 522afb14e9bSmrg sequent) 523afb14e9bSmrg basic_machine=i386-sequent 524afb14e9bSmrg basic_os= 525afb14e9bSmrg ;; 526afb14e9bSmrg sps7) 527afb14e9bSmrg basic_machine=m68k-bull 528afb14e9bSmrg basic_os=sysv2 529afb14e9bSmrg ;; 530afb14e9bSmrg st2000) 531afb14e9bSmrg basic_machine=m68k-tandem 532afb14e9bSmrg basic_os= 533afb14e9bSmrg ;; 534afb14e9bSmrg stratus) 535afb14e9bSmrg basic_machine=i860-stratus 536afb14e9bSmrg basic_os=sysv4 537afb14e9bSmrg ;; 538afb14e9bSmrg sun2) 539afb14e9bSmrg basic_machine=m68000-sun 540afb14e9bSmrg basic_os= 541afb14e9bSmrg ;; 542afb14e9bSmrg sun2os3) 543afb14e9bSmrg basic_machine=m68000-sun 544afb14e9bSmrg basic_os=sunos3 545afb14e9bSmrg ;; 546afb14e9bSmrg sun2os4) 547afb14e9bSmrg basic_machine=m68000-sun 548afb14e9bSmrg basic_os=sunos4 549afb14e9bSmrg ;; 550afb14e9bSmrg sun3) 551afb14e9bSmrg basic_machine=m68k-sun 552afb14e9bSmrg basic_os= 553afb14e9bSmrg ;; 554afb14e9bSmrg sun3os3) 555afb14e9bSmrg basic_machine=m68k-sun 556afb14e9bSmrg basic_os=sunos3 557afb14e9bSmrg ;; 558afb14e9bSmrg sun3os4) 559afb14e9bSmrg basic_machine=m68k-sun 560afb14e9bSmrg basic_os=sunos4 561afb14e9bSmrg ;; 562afb14e9bSmrg sun4) 563afb14e9bSmrg basic_machine=sparc-sun 564afb14e9bSmrg basic_os= 565afb14e9bSmrg ;; 566afb14e9bSmrg sun4os3) 567afb14e9bSmrg basic_machine=sparc-sun 568afb14e9bSmrg basic_os=sunos3 569afb14e9bSmrg ;; 570afb14e9bSmrg sun4os4) 571afb14e9bSmrg basic_machine=sparc-sun 572afb14e9bSmrg basic_os=sunos4 573afb14e9bSmrg ;; 574afb14e9bSmrg sun4sol2) 575afb14e9bSmrg basic_machine=sparc-sun 576afb14e9bSmrg basic_os=solaris2 577afb14e9bSmrg ;; 578afb14e9bSmrg sun386 | sun386i | roadrunner) 579afb14e9bSmrg basic_machine=i386-sun 580afb14e9bSmrg basic_os= 581afb14e9bSmrg ;; 582afb14e9bSmrg sv1) 583afb14e9bSmrg basic_machine=sv1-cray 584afb14e9bSmrg basic_os=unicos 585afb14e9bSmrg ;; 586afb14e9bSmrg symmetry) 587afb14e9bSmrg basic_machine=i386-sequent 588afb14e9bSmrg basic_os=dynix 589afb14e9bSmrg ;; 590afb14e9bSmrg t3e) 591afb14e9bSmrg basic_machine=alphaev5-cray 592afb14e9bSmrg basic_os=unicos 593afb14e9bSmrg ;; 594afb14e9bSmrg t90) 595afb14e9bSmrg basic_machine=t90-cray 596afb14e9bSmrg basic_os=unicos 597afb14e9bSmrg ;; 598afb14e9bSmrg toad1) 599afb14e9bSmrg basic_machine=pdp10-xkl 600afb14e9bSmrg basic_os=tops20 601afb14e9bSmrg ;; 602afb14e9bSmrg tpf) 603afb14e9bSmrg basic_machine=s390x-ibm 604afb14e9bSmrg basic_os=tpf 605afb14e9bSmrg ;; 606afb14e9bSmrg udi29k) 607afb14e9bSmrg basic_machine=a29k-amd 608afb14e9bSmrg basic_os=udi 609afb14e9bSmrg ;; 610afb14e9bSmrg ultra3) 611afb14e9bSmrg basic_machine=a29k-nyu 612afb14e9bSmrg basic_os=sym1 613afb14e9bSmrg ;; 614afb14e9bSmrg v810 | necv810) 615afb14e9bSmrg basic_machine=v810-nec 616afb14e9bSmrg basic_os=none 617afb14e9bSmrg ;; 618afb14e9bSmrg vaxv) 619afb14e9bSmrg basic_machine=vax-dec 620afb14e9bSmrg basic_os=sysv 621afb14e9bSmrg ;; 622afb14e9bSmrg vms) 623afb14e9bSmrg basic_machine=vax-dec 624afb14e9bSmrg basic_os=vms 625afb14e9bSmrg ;; 626afb14e9bSmrg vsta) 627afb14e9bSmrg basic_machine=i386-pc 628afb14e9bSmrg basic_os=vsta 629afb14e9bSmrg ;; 630afb14e9bSmrg vxworks960) 631afb14e9bSmrg basic_machine=i960-wrs 632afb14e9bSmrg basic_os=vxworks 633afb14e9bSmrg ;; 634afb14e9bSmrg vxworks68) 635afb14e9bSmrg basic_machine=m68k-wrs 636afb14e9bSmrg basic_os=vxworks 637afb14e9bSmrg ;; 638afb14e9bSmrg vxworks29k) 639afb14e9bSmrg basic_machine=a29k-wrs 640afb14e9bSmrg basic_os=vxworks 641afb14e9bSmrg ;; 642afb14e9bSmrg xbox) 643afb14e9bSmrg basic_machine=i686-pc 644afb14e9bSmrg basic_os=mingw32 645afb14e9bSmrg ;; 646afb14e9bSmrg ymp) 647afb14e9bSmrg basic_machine=ymp-cray 648afb14e9bSmrg basic_os=unicos 649afb14e9bSmrg ;; 650afb14e9bSmrg *) 651afb14e9bSmrg basic_machine=$1 652afb14e9bSmrg basic_os= 653afb14e9bSmrg ;; 654afb14e9bSmrg esac 65553354cdbSmrg ;; 65653354cdbSmrgesac 65753354cdbSmrg 658afb14e9bSmrg# Decode 1-component or ad-hoc basic machines 65953354cdbSmrgcase $basic_machine in 660afb14e9bSmrg # Here we handle the default manufacturer of certain CPU types. It is in 661afb14e9bSmrg # some cases the only manufacturer, in others, it is the most popular. 662afb14e9bSmrg w89k) 663afb14e9bSmrg cpu=hppa1.1 664afb14e9bSmrg vendor=winbond 66553354cdbSmrg ;; 666afb14e9bSmrg op50n) 667afb14e9bSmrg cpu=hppa1.1 668afb14e9bSmrg vendor=oki 66961c899d4Smrg ;; 670afb14e9bSmrg op60c) 671afb14e9bSmrg cpu=hppa1.1 672afb14e9bSmrg vendor=oki 673ecb85c42Smrg ;; 674afb14e9bSmrg ibm*) 675afb14e9bSmrg cpu=i370 676afb14e9bSmrg vendor=ibm 67761c899d4Smrg ;; 678afb14e9bSmrg orion105) 679afb14e9bSmrg cpu=clipper 680afb14e9bSmrg vendor=highlevel 68161c899d4Smrg ;; 682afb14e9bSmrg mac | mpw | mac-mpw) 683afb14e9bSmrg cpu=m68k 684afb14e9bSmrg vendor=apple 68553354cdbSmrg ;; 686afb14e9bSmrg pmac | pmac-mpw) 687afb14e9bSmrg cpu=powerpc 688afb14e9bSmrg vendor=apple 68953354cdbSmrg ;; 690afb14e9bSmrg 69153354cdbSmrg # Recognize the various machine names and aliases which stand 69253354cdbSmrg # for a CPU type and a company and sometimes even an OS. 69353354cdbSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694afb14e9bSmrg cpu=m68000 695afb14e9bSmrg vendor=att 69653354cdbSmrg ;; 69753354cdbSmrg 3b*) 698afb14e9bSmrg cpu=we32k 699afb14e9bSmrg vendor=att 70053354cdbSmrg ;; 70186bbecbeSmrg bluegene*) 702afb14e9bSmrg cpu=powerpc 703afb14e9bSmrg vendor=ibm 704afb14e9bSmrg basic_os=cnk 70553354cdbSmrg ;; 70653354cdbSmrg decsystem10* | dec10*) 707afb14e9bSmrg cpu=pdp10 708afb14e9bSmrg vendor=dec 709afb14e9bSmrg basic_os=tops10 71053354cdbSmrg ;; 71153354cdbSmrg decsystem20* | dec20*) 712afb14e9bSmrg cpu=pdp10 713afb14e9bSmrg vendor=dec 714afb14e9bSmrg basic_os=tops20 71553354cdbSmrg ;; 71653354cdbSmrg delta | 3300 | motorola-3300 | motorola-delta \ 71753354cdbSmrg | 3300-motorola | delta-motorola) 718afb14e9bSmrg cpu=m68k 719afb14e9bSmrg vendor=motorola 72053354cdbSmrg ;; 721afb14e9bSmrg dpx2*) 722afb14e9bSmrg cpu=m68k 723afb14e9bSmrg vendor=bull 724afb14e9bSmrg basic_os=sysv3 72553354cdbSmrg ;; 72653354cdbSmrg encore | umax | mmax) 727afb14e9bSmrg cpu=ns32k 728afb14e9bSmrg vendor=encore 72953354cdbSmrg ;; 730afb14e9bSmrg elxsi) 731afb14e9bSmrg cpu=elxsi 732afb14e9bSmrg vendor=elxsi 733afb14e9bSmrg basic_os=${basic_os:-bsd} 73453354cdbSmrg ;; 73553354cdbSmrg fx2800) 736afb14e9bSmrg cpu=i860 737afb14e9bSmrg vendor=alliant 73853354cdbSmrg ;; 73953354cdbSmrg genix) 740afb14e9bSmrg cpu=ns32k 741afb14e9bSmrg vendor=ns 74253354cdbSmrg ;; 74353354cdbSmrg h3050r* | hiux*) 744afb14e9bSmrg cpu=hppa1.1 745afb14e9bSmrg vendor=hitachi 746afb14e9bSmrg basic_os=hiuxwe2 74753354cdbSmrg ;; 74853354cdbSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749afb14e9bSmrg cpu=hppa1.0 750afb14e9bSmrg vendor=hp 75153354cdbSmrg ;; 75253354cdbSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753afb14e9bSmrg cpu=m68000 754afb14e9bSmrg vendor=hp 75553354cdbSmrg ;; 75653354cdbSmrg hp9k3[2-9][0-9]) 757afb14e9bSmrg cpu=m68k 758afb14e9bSmrg vendor=hp 75953354cdbSmrg ;; 76053354cdbSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761afb14e9bSmrg cpu=hppa1.0 762afb14e9bSmrg vendor=hp 76353354cdbSmrg ;; 76453354cdbSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765afb14e9bSmrg cpu=hppa1.1 766afb14e9bSmrg vendor=hp 76753354cdbSmrg ;; 76853354cdbSmrg hp9k78[0-9] | hp78[0-9]) 76953354cdbSmrg # FIXME: really hppa2.0-hp 770afb14e9bSmrg cpu=hppa1.1 771afb14e9bSmrg vendor=hp 77253354cdbSmrg ;; 77353354cdbSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77453354cdbSmrg # FIXME: really hppa2.0-hp 775afb14e9bSmrg cpu=hppa1.1 776afb14e9bSmrg vendor=hp 77753354cdbSmrg ;; 77853354cdbSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779afb14e9bSmrg cpu=hppa1.1 780afb14e9bSmrg vendor=hp 78153354cdbSmrg ;; 78253354cdbSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783afb14e9bSmrg cpu=hppa1.0 784afb14e9bSmrg vendor=hp 78553354cdbSmrg ;; 78653354cdbSmrg i*86v32) 787afb14e9bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788afb14e9bSmrg vendor=pc 789afb14e9bSmrg basic_os=sysv32 79053354cdbSmrg ;; 79153354cdbSmrg i*86v4*) 792afb14e9bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793afb14e9bSmrg vendor=pc 794afb14e9bSmrg basic_os=sysv4 79553354cdbSmrg ;; 79653354cdbSmrg i*86v) 797afb14e9bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798afb14e9bSmrg vendor=pc 799afb14e9bSmrg basic_os=sysv 80053354cdbSmrg ;; 80153354cdbSmrg i*86sol2) 802afb14e9bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803afb14e9bSmrg vendor=pc 804afb14e9bSmrg basic_os=solaris2 80553354cdbSmrg ;; 806afb14e9bSmrg j90 | j90-cray) 807afb14e9bSmrg cpu=j90 808afb14e9bSmrg vendor=cray 809afb14e9bSmrg basic_os=${basic_os:-unicos} 81053354cdbSmrg ;; 81153354cdbSmrg iris | iris4d) 812afb14e9bSmrg cpu=mips 813afb14e9bSmrg vendor=sgi 814afb14e9bSmrg case $basic_os in 815afb14e9bSmrg irix*) 81653354cdbSmrg ;; 81753354cdbSmrg *) 818afb14e9bSmrg basic_os=irix4 81953354cdbSmrg ;; 82053354cdbSmrg esac 82153354cdbSmrg ;; 82253354cdbSmrg miniframe) 823afb14e9bSmrg cpu=m68000 824afb14e9bSmrg vendor=convergent 82553354cdbSmrg ;; 826afb14e9bSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827afb14e9bSmrg cpu=m68k 828afb14e9bSmrg vendor=atari 829afb14e9bSmrg basic_os=mint 83053354cdbSmrg ;; 83153354cdbSmrg news-3600 | risc-news) 832afb14e9bSmrg cpu=mips 833afb14e9bSmrg vendor=sony 834afb14e9bSmrg basic_os=newsos 835afb14e9bSmrg ;; 836afb14e9bSmrg next | m*-next) 837afb14e9bSmrg cpu=m68k 838afb14e9bSmrg vendor=next 839afb14e9bSmrg case $basic_os in 840afb14e9bSmrg openstep*) 841afb14e9bSmrg ;; 842afb14e9bSmrg nextstep*) 84353354cdbSmrg ;; 844afb14e9bSmrg ns2*) 845afb14e9bSmrg basic_os=nextstep2 84653354cdbSmrg ;; 84753354cdbSmrg *) 848afb14e9bSmrg basic_os=nextstep3 84953354cdbSmrg ;; 85053354cdbSmrg esac 85153354cdbSmrg ;; 85253354cdbSmrg np1) 853afb14e9bSmrg cpu=np1 854afb14e9bSmrg vendor=gould 85553354cdbSmrg ;; 85653354cdbSmrg op50n-* | op60c-*) 857afb14e9bSmrg cpu=hppa1.1 858afb14e9bSmrg vendor=oki 859afb14e9bSmrg basic_os=proelf 86053354cdbSmrg ;; 86153354cdbSmrg pa-hitachi) 862afb14e9bSmrg cpu=hppa1.1 863afb14e9bSmrg vendor=hitachi 864afb14e9bSmrg basic_os=hiuxwe2 86553354cdbSmrg ;; 86653354cdbSmrg pbd) 867afb14e9bSmrg cpu=sparc 868afb14e9bSmrg vendor=tti 86953354cdbSmrg ;; 87053354cdbSmrg pbb) 871afb14e9bSmrg cpu=m68k 872afb14e9bSmrg vendor=tti 87353354cdbSmrg ;; 874afb14e9bSmrg pc532) 875afb14e9bSmrg cpu=ns32k 876afb14e9bSmrg vendor=pc532 87753354cdbSmrg ;; 87853354cdbSmrg pn) 879afb14e9bSmrg cpu=pn 880afb14e9bSmrg vendor=gould 88153354cdbSmrg ;; 882afb14e9bSmrg power) 883afb14e9bSmrg cpu=power 884afb14e9bSmrg vendor=ibm 88553354cdbSmrg ;; 88653354cdbSmrg ps2) 887afb14e9bSmrg cpu=i386 888afb14e9bSmrg vendor=ibm 88953354cdbSmrg ;; 89053354cdbSmrg rm[46]00) 891afb14e9bSmrg cpu=mips 892afb14e9bSmrg vendor=siemens 89353354cdbSmrg ;; 89453354cdbSmrg rtpc | rtpc-*) 895afb14e9bSmrg cpu=romp 896afb14e9bSmrg vendor=ibm 89753354cdbSmrg ;; 898afb14e9bSmrg sde) 899afb14e9bSmrg cpu=mipsisa32 900afb14e9bSmrg vendor=sde 901afb14e9bSmrg basic_os=${basic_os:-elf} 90253354cdbSmrg ;; 903afb14e9bSmrg simso-wrs) 904afb14e9bSmrg cpu=sparclite 905afb14e9bSmrg vendor=wrs 906afb14e9bSmrg basic_os=vxworks 90753354cdbSmrg ;; 908afb14e9bSmrg tower | tower-32) 909afb14e9bSmrg cpu=m68k 910afb14e9bSmrg vendor=ncr 91153354cdbSmrg ;; 912afb14e9bSmrg vpp*|vx|vx-*) 913afb14e9bSmrg cpu=f301 914afb14e9bSmrg vendor=fujitsu 91553354cdbSmrg ;; 916afb14e9bSmrg w65) 917afb14e9bSmrg cpu=w65 918afb14e9bSmrg vendor=wdc 91953354cdbSmrg ;; 920afb14e9bSmrg w89k-*) 921afb14e9bSmrg cpu=hppa1.1 922afb14e9bSmrg vendor=winbond 923afb14e9bSmrg basic_os=proelf 92453354cdbSmrg ;; 925afb14e9bSmrg none) 926afb14e9bSmrg cpu=none 927afb14e9bSmrg vendor=none 92853354cdbSmrg ;; 929afb14e9bSmrg leon|leon[3-9]) 930afb14e9bSmrg cpu=sparc 931afb14e9bSmrg vendor=$basic_machine 93253354cdbSmrg ;; 933afb14e9bSmrg leon-*|leon[3-9]-*) 934afb14e9bSmrg cpu=sparc 935afb14e9bSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 93653354cdbSmrg ;; 937afb14e9bSmrg 938afb14e9bSmrg *-*) 939afb14e9bSmrg # shellcheck disable=SC2162 940afb14e9bSmrg saved_IFS=$IFS 941afb14e9bSmrg IFS="-" read cpu vendor <<EOF 942afb14e9bSmrg$basic_machine 943afb14e9bSmrgEOF 944afb14e9bSmrg IFS=$saved_IFS 94553354cdbSmrg ;; 946afb14e9bSmrg # We use `pc' rather than `unknown' 947afb14e9bSmrg # because (1) that's what they normally are, and 948afb14e9bSmrg # (2) the word "unknown" tends to confuse beginning users. 949afb14e9bSmrg i*86 | x86_64) 950afb14e9bSmrg cpu=$basic_machine 951afb14e9bSmrg vendor=pc 95253354cdbSmrg ;; 953afb14e9bSmrg # These rules are duplicated from below for sake of the special case above; 954afb14e9bSmrg # i.e. things that normalized to x86 arches should also default to "pc" 955afb14e9bSmrg pc98) 956afb14e9bSmrg cpu=i386 957afb14e9bSmrg vendor=pc 95853354cdbSmrg ;; 959afb14e9bSmrg x64 | amd64) 960afb14e9bSmrg cpu=x86_64 961afb14e9bSmrg vendor=pc 96253354cdbSmrg ;; 963afb14e9bSmrg # Recognize the basic CPU types without company name. 964afb14e9bSmrg *) 965afb14e9bSmrg cpu=$basic_machine 966afb14e9bSmrg vendor=unknown 96761c899d4Smrg ;; 968afb14e9bSmrgesac 969afb14e9bSmrg 970afb14e9bSmrgunset -v basic_machine 971afb14e9bSmrg 972afb14e9bSmrg# Decode basic machines in the full and proper CPU-Company form. 973afb14e9bSmrgcase $cpu-$vendor in 974afb14e9bSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975afb14e9bSmrg # some cases the only manufacturer, in others, it is the most popular. 976afb14e9bSmrg craynv-unknown) 977afb14e9bSmrg vendor=cray 978afb14e9bSmrg basic_os=${basic_os:-unicosmp} 97953354cdbSmrg ;; 980afb14e9bSmrg c90-unknown | c90-cray) 981afb14e9bSmrg vendor=cray 982afb14e9bSmrg basic_os=${Basic_os:-unicos} 98353354cdbSmrg ;; 984afb14e9bSmrg fx80-unknown) 985afb14e9bSmrg vendor=alliant 98653354cdbSmrg ;; 987afb14e9bSmrg romp-unknown) 988afb14e9bSmrg vendor=ibm 98953354cdbSmrg ;; 990afb14e9bSmrg mmix-unknown) 991afb14e9bSmrg vendor=knuth 99253354cdbSmrg ;; 993afb14e9bSmrg microblaze-unknown | microblazeel-unknown) 994afb14e9bSmrg vendor=xilinx 99553354cdbSmrg ;; 996afb14e9bSmrg rs6000-unknown) 997afb14e9bSmrg vendor=ibm 99853354cdbSmrg ;; 999afb14e9bSmrg vax-unknown) 1000afb14e9bSmrg vendor=dec 100153354cdbSmrg ;; 1002afb14e9bSmrg pdp11-unknown) 1003afb14e9bSmrg vendor=dec 100453354cdbSmrg ;; 1005afb14e9bSmrg we32k-unknown) 1006afb14e9bSmrg vendor=att 100753354cdbSmrg ;; 1008afb14e9bSmrg cydra-unknown) 1009afb14e9bSmrg vendor=cydrome 101053354cdbSmrg ;; 1011afb14e9bSmrg i370-ibm*) 1012afb14e9bSmrg vendor=ibm 101353354cdbSmrg ;; 1014afb14e9bSmrg orion-unknown) 1015afb14e9bSmrg vendor=highlevel 101653354cdbSmrg ;; 1017afb14e9bSmrg xps-unknown | xps100-unknown) 1018afb14e9bSmrg cpu=xps100 1019afb14e9bSmrg vendor=honeywell 102053354cdbSmrg ;; 1021afb14e9bSmrg 1022afb14e9bSmrg # Here we normalize CPU types with a missing or matching vendor 1023afb14e9bSmrg dpx20-unknown | dpx20-bull) 1024afb14e9bSmrg cpu=rs6000 1025afb14e9bSmrg vendor=bull 1026afb14e9bSmrg basic_os=${basic_os:-bosx} 102753354cdbSmrg ;; 1028afb14e9bSmrg 1029afb14e9bSmrg # Here we normalize CPU types irrespective of the vendor 1030afb14e9bSmrg amd64-*) 1031afb14e9bSmrg cpu=x86_64 103253354cdbSmrg ;; 1033afb14e9bSmrg blackfin-*) 1034afb14e9bSmrg cpu=bfin 1035afb14e9bSmrg basic_os=linux 103653354cdbSmrg ;; 1037afb14e9bSmrg c54x-*) 1038afb14e9bSmrg cpu=tic54x 103953354cdbSmrg ;; 1040afb14e9bSmrg c55x-*) 1041afb14e9bSmrg cpu=tic55x 104253354cdbSmrg ;; 1043afb14e9bSmrg c6x-*) 1044afb14e9bSmrg cpu=tic6x 104553354cdbSmrg ;; 1046afb14e9bSmrg e500v[12]-*) 1047afb14e9bSmrg cpu=powerpc 1048afb14e9bSmrg basic_os=${basic_os}"spe" 104953354cdbSmrg ;; 1050afb14e9bSmrg mips3*-*) 1051afb14e9bSmrg cpu=mips64 105253354cdbSmrg ;; 1053afb14e9bSmrg ms1-*) 1054afb14e9bSmrg cpu=mt 105553354cdbSmrg ;; 1056afb14e9bSmrg m68knommu-*) 1057afb14e9bSmrg cpu=m68k 1058afb14e9bSmrg basic_os=linux 105953354cdbSmrg ;; 1060afb14e9bSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1061afb14e9bSmrg cpu=s12z 106253354cdbSmrg ;; 1063afb14e9bSmrg openrisc-*) 1064afb14e9bSmrg cpu=or32 106553354cdbSmrg ;; 1066afb14e9bSmrg parisc-*) 1067afb14e9bSmrg cpu=hppa 1068afb14e9bSmrg basic_os=linux 106953354cdbSmrg ;; 1070afb14e9bSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1071afb14e9bSmrg cpu=i586 107253354cdbSmrg ;; 1073afb14e9bSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 1074afb14e9bSmrg cpu=i686 107553354cdbSmrg ;; 1076afb14e9bSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1077afb14e9bSmrg cpu=i686 107853354cdbSmrg ;; 1079afb14e9bSmrg pentium4-*) 1080afb14e9bSmrg cpu=i786 108153354cdbSmrg ;; 1082afb14e9bSmrg pc98-*) 1083afb14e9bSmrg cpu=i386 108453354cdbSmrg ;; 1085afb14e9bSmrg ppc-* | ppcbe-*) 1086afb14e9bSmrg cpu=powerpc 108753354cdbSmrg ;; 1088afb14e9bSmrg ppcle-* | powerpclittle-*) 1089afb14e9bSmrg cpu=powerpcle 109053354cdbSmrg ;; 1091afb14e9bSmrg ppc64-*) 1092afb14e9bSmrg cpu=powerpc64 109361c899d4Smrg ;; 1094afb14e9bSmrg ppc64le-* | powerpc64little-*) 1095afb14e9bSmrg cpu=powerpc64le 109653354cdbSmrg ;; 1097afb14e9bSmrg sb1-*) 1098afb14e9bSmrg cpu=mipsisa64sb1 109953354cdbSmrg ;; 1100afb14e9bSmrg sb1el-*) 1101afb14e9bSmrg cpu=mipsisa64sb1el 110286bbecbeSmrg ;; 1103afb14e9bSmrg sh5e[lb]-*) 1104afb14e9bSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 110553354cdbSmrg ;; 1106afb14e9bSmrg spur-*) 1107afb14e9bSmrg cpu=spur 110853354cdbSmrg ;; 1109afb14e9bSmrg strongarm-* | thumb-*) 1110afb14e9bSmrg cpu=arm 111153354cdbSmrg ;; 1112afb14e9bSmrg tx39-*) 1113afb14e9bSmrg cpu=mipstx39 111453354cdbSmrg ;; 1115afb14e9bSmrg tx39el-*) 1116afb14e9bSmrg cpu=mipstx39el 111753354cdbSmrg ;; 1118afb14e9bSmrg x64-*) 1119afb14e9bSmrg cpu=x86_64 112053354cdbSmrg ;; 1121afb14e9bSmrg xscale-* | xscalee[bl]-*) 1122afb14e9bSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112353354cdbSmrg ;; 1124afb14e9bSmrg arm64-*) 1125afb14e9bSmrg cpu=aarch64 112653354cdbSmrg ;; 1127afb14e9bSmrg 1128afb14e9bSmrg # Recognize the canonical CPU Types that limit and/or modify the 1129afb14e9bSmrg # company names they are paired with. 1130afb14e9bSmrg cr16-*) 1131afb14e9bSmrg basic_os=${basic_os:-elf} 113253354cdbSmrg ;; 1133afb14e9bSmrg crisv32-* | etraxfs*-*) 1134afb14e9bSmrg cpu=crisv32 1135afb14e9bSmrg vendor=axis 113653354cdbSmrg ;; 1137afb14e9bSmrg cris-* | etrax*-*) 1138afb14e9bSmrg cpu=cris 1139afb14e9bSmrg vendor=axis 114053354cdbSmrg ;; 1141afb14e9bSmrg crx-*) 1142afb14e9bSmrg basic_os=${basic_os:-elf} 114353354cdbSmrg ;; 1144afb14e9bSmrg neo-tandem) 1145afb14e9bSmrg cpu=neo 1146afb14e9bSmrg vendor=tandem 114753354cdbSmrg ;; 1148afb14e9bSmrg nse-tandem) 1149afb14e9bSmrg cpu=nse 1150afb14e9bSmrg vendor=tandem 115153354cdbSmrg ;; 1152afb14e9bSmrg nsr-tandem) 1153afb14e9bSmrg cpu=nsr 1154afb14e9bSmrg vendor=tandem 115553354cdbSmrg ;; 1156afb14e9bSmrg nsv-tandem) 1157afb14e9bSmrg cpu=nsv 1158afb14e9bSmrg vendor=tandem 115953354cdbSmrg ;; 1160afb14e9bSmrg nsx-tandem) 1161afb14e9bSmrg cpu=nsx 1162afb14e9bSmrg vendor=tandem 116353354cdbSmrg ;; 1164afb14e9bSmrg mipsallegrexel-sony) 1165afb14e9bSmrg cpu=mipsallegrexel 1166afb14e9bSmrg vendor=sony 116753354cdbSmrg ;; 1168afb14e9bSmrg tile*-*) 1169afb14e9bSmrg basic_os=${basic_os:-linux-gnu} 117053354cdbSmrg ;; 1171afb14e9bSmrg 117253354cdbSmrg *) 1173afb14e9bSmrg # Recognize the canonical CPU types that are allowed with any 1174afb14e9bSmrg # company name. 1175afb14e9bSmrg case $cpu in 1176afb14e9bSmrg 1750a | 580 \ 1177afb14e9bSmrg | a29k \ 1178afb14e9bSmrg | aarch64 | aarch64_be \ 1179afb14e9bSmrg | abacus \ 1180afb14e9bSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1181afb14e9bSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1182afb14e9bSmrg | alphapca5[67] | alpha64pca5[67] \ 1183afb14e9bSmrg | am33_2.0 \ 1184afb14e9bSmrg | amdgcn \ 1185afb14e9bSmrg | arc | arceb | arc32 | arc64 \ 1186afb14e9bSmrg | arm | arm[lb]e | arme[lb] | armv* \ 1187afb14e9bSmrg | avr | avr32 \ 1188afb14e9bSmrg | asmjs \ 1189afb14e9bSmrg | ba \ 1190afb14e9bSmrg | be32 | be64 \ 1191afb14e9bSmrg | bfin | bpf | bs2000 \ 1192afb14e9bSmrg | c[123]* | c30 | [cjt]90 | c4x \ 1193afb14e9bSmrg | c8051 | clipper | craynv | csky | cydra \ 1194afb14e9bSmrg | d10v | d30v | dlx | dsp16xx \ 1195afb14e9bSmrg | e2k | elxsi | epiphany \ 1196afb14e9bSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1197afb14e9bSmrg | h8300 | h8500 \ 1198afb14e9bSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1199afb14e9bSmrg | hexagon \ 1200afb14e9bSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1201afb14e9bSmrg | ip2k | iq2000 \ 1202afb14e9bSmrg | k1om \ 1203afb14e9bSmrg | le32 | le64 \ 1204afb14e9bSmrg | lm32 \ 1205afb14e9bSmrg | loongarch32 | loongarch64 | loongarchx32 \ 1206afb14e9bSmrg | m32c | m32r | m32rle \ 1207afb14e9bSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1208afb14e9bSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1209afb14e9bSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1210afb14e9bSmrg | microblaze | microblazeel \ 1211afb14e9bSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1212afb14e9bSmrg | mips16 \ 1213afb14e9bSmrg | mips64 | mips64eb | mips64el \ 1214afb14e9bSmrg | mips64octeon | mips64octeonel \ 1215afb14e9bSmrg | mips64orion | mips64orionel \ 1216afb14e9bSmrg | mips64r5900 | mips64r5900el \ 1217afb14e9bSmrg | mips64vr | mips64vrel \ 1218afb14e9bSmrg | mips64vr4100 | mips64vr4100el \ 1219afb14e9bSmrg | mips64vr4300 | mips64vr4300el \ 1220afb14e9bSmrg | mips64vr5000 | mips64vr5000el \ 1221afb14e9bSmrg | mips64vr5900 | mips64vr5900el \ 1222afb14e9bSmrg | mipsisa32 | mipsisa32el \ 1223afb14e9bSmrg | mipsisa32r2 | mipsisa32r2el \ 1224afb14e9bSmrg | mipsisa32r3 | mipsisa32r3el \ 1225afb14e9bSmrg | mipsisa32r5 | mipsisa32r5el \ 1226afb14e9bSmrg | mipsisa32r6 | mipsisa32r6el \ 1227afb14e9bSmrg | mipsisa64 | mipsisa64el \ 1228afb14e9bSmrg | mipsisa64r2 | mipsisa64r2el \ 1229afb14e9bSmrg | mipsisa64r3 | mipsisa64r3el \ 1230afb14e9bSmrg | mipsisa64r5 | mipsisa64r5el \ 1231afb14e9bSmrg | mipsisa64r6 | mipsisa64r6el \ 1232afb14e9bSmrg | mipsisa64sb1 | mipsisa64sb1el \ 1233afb14e9bSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 1234afb14e9bSmrg | mipsr5900 | mipsr5900el \ 1235afb14e9bSmrg | mipstx39 | mipstx39el \ 1236afb14e9bSmrg | mmix \ 1237afb14e9bSmrg | mn10200 | mn10300 \ 1238afb14e9bSmrg | moxie \ 1239afb14e9bSmrg | mt \ 1240afb14e9bSmrg | msp430 \ 1241afb14e9bSmrg | nds32 | nds32le | nds32be \ 1242afb14e9bSmrg | nfp \ 1243afb14e9bSmrg | nios | nios2 | nios2eb | nios2el \ 1244afb14e9bSmrg | none | np1 | ns16k | ns32k | nvptx \ 1245afb14e9bSmrg | open8 \ 1246afb14e9bSmrg | or1k* \ 1247afb14e9bSmrg | or32 \ 1248afb14e9bSmrg | orion \ 1249afb14e9bSmrg | picochip \ 1250afb14e9bSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1251afb14e9bSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1252afb14e9bSmrg | pru \ 1253afb14e9bSmrg | pyramid \ 1254afb14e9bSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1255afb14e9bSmrg | rl78 | romp | rs6000 | rx \ 1256afb14e9bSmrg | s390 | s390x \ 1257afb14e9bSmrg | score \ 1258afb14e9bSmrg | sh | shl \ 1259afb14e9bSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1260afb14e9bSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1261afb14e9bSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1262afb14e9bSmrg | sparclite \ 1263afb14e9bSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1264afb14e9bSmrg | spu \ 1265afb14e9bSmrg | tahoe \ 1266afb14e9bSmrg | thumbv7* \ 1267afb14e9bSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1268afb14e9bSmrg | tron \ 1269afb14e9bSmrg | ubicom32 \ 1270afb14e9bSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1271afb14e9bSmrg | vax \ 1272afb14e9bSmrg | visium \ 1273afb14e9bSmrg | w65 \ 1274afb14e9bSmrg | wasm32 | wasm64 \ 1275afb14e9bSmrg | we32k \ 1276afb14e9bSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1277afb14e9bSmrg | xstormy16 | xtensa* \ 1278afb14e9bSmrg | ymp \ 1279afb14e9bSmrg | z8k | z80) 1280afb14e9bSmrg ;; 1281afb14e9bSmrg 1282afb14e9bSmrg *) 1283afb14e9bSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1284afb14e9bSmrg exit 1 1285afb14e9bSmrg ;; 1286afb14e9bSmrg esac 128753354cdbSmrg ;; 128853354cdbSmrgesac 128953354cdbSmrg 129053354cdbSmrg# Here we canonicalize certain aliases for manufacturers. 1291afb14e9bSmrgcase $vendor in 1292afb14e9bSmrg digital*) 1293afb14e9bSmrg vendor=dec 129453354cdbSmrg ;; 1295afb14e9bSmrg commodore*) 1296afb14e9bSmrg vendor=cbm 129753354cdbSmrg ;; 129853354cdbSmrg *) 129953354cdbSmrg ;; 130053354cdbSmrgesac 130153354cdbSmrg 130253354cdbSmrg# Decode manufacturer-specific aliases for certain operating systems. 130353354cdbSmrg 1304afb14e9bSmrgif test x$basic_os != x 130553354cdbSmrgthen 1306afb14e9bSmrg 1307afb14e9bSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 1308afb14e9bSmrg# set os. 1309afb14e9bSmrgcase $basic_os in 1310afb14e9bSmrg gnu/linux*) 1311afb14e9bSmrg kernel=linux 1312afb14e9bSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1313afb14e9bSmrg ;; 1314afb14e9bSmrg os2-emx) 1315afb14e9bSmrg kernel=os2 1316afb14e9bSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1317afb14e9bSmrg ;; 1318afb14e9bSmrg nto-qnx*) 1319afb14e9bSmrg kernel=nto 1320afb14e9bSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1321afb14e9bSmrg ;; 1322afb14e9bSmrg *-*) 1323afb14e9bSmrg # shellcheck disable=SC2162 1324afb14e9bSmrg saved_IFS=$IFS 1325afb14e9bSmrg IFS="-" read kernel os <<EOF 1326afb14e9bSmrg$basic_os 1327afb14e9bSmrgEOF 1328afb14e9bSmrg IFS=$saved_IFS 1329afb14e9bSmrg ;; 1330afb14e9bSmrg # Default OS when just kernel was specified 1331afb14e9bSmrg nto*) 1332afb14e9bSmrg kernel=nto 1333afb14e9bSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1334afb14e9bSmrg ;; 1335afb14e9bSmrg linux*) 1336afb14e9bSmrg kernel=linux 1337afb14e9bSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1338afb14e9bSmrg ;; 1339afb14e9bSmrg *) 1340afb14e9bSmrg kernel= 1341afb14e9bSmrg os=$basic_os 1342afb14e9bSmrg ;; 1343afb14e9bSmrgesac 1344afb14e9bSmrg 1345afb14e9bSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1346afb14e9bSmrg# etc.) 134753354cdbSmrgcase $os in 1348afb14e9bSmrg # First match some system type aliases that might get confused 1349afb14e9bSmrg # with valid system types. 1350afb14e9bSmrg # solaris* is a basic system type, with this one exception. 1351afb14e9bSmrg auroraux) 1352afb14e9bSmrg os=auroraux 135386bbecbeSmrg ;; 1354afb14e9bSmrg bluegene*) 1355afb14e9bSmrg os=cnk 135653354cdbSmrg ;; 1357afb14e9bSmrg solaris1 | solaris1.*) 1358afb14e9bSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 135953354cdbSmrg ;; 1360afb14e9bSmrg solaris) 1361afb14e9bSmrg os=solaris2 136253354cdbSmrg ;; 1363afb14e9bSmrg unixware*) 1364afb14e9bSmrg os=sysv4.2uw 136553354cdbSmrg ;; 1366afb14e9bSmrg # es1800 is here to avoid being matched by es* (a different OS) 1367afb14e9bSmrg es1800*) 1368afb14e9bSmrg os=ose 136953354cdbSmrg ;; 1370afb14e9bSmrg # Some version numbers need modification 1371afb14e9bSmrg chorusos*) 1372afb14e9bSmrg os=chorusos 137353354cdbSmrg ;; 1374afb14e9bSmrg isc) 1375afb14e9bSmrg os=isc2.2 137653354cdbSmrg ;; 1377afb14e9bSmrg sco6) 1378afb14e9bSmrg os=sco5v6 137953354cdbSmrg ;; 1380afb14e9bSmrg sco5) 1381afb14e9bSmrg os=sco3.2v5 138253354cdbSmrg ;; 1383afb14e9bSmrg sco4) 1384afb14e9bSmrg os=sco3.2v4 138553354cdbSmrg ;; 1386afb14e9bSmrg sco3.2.[4-9]*) 1387afb14e9bSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 138853354cdbSmrg ;; 1389afb14e9bSmrg sco*v* | scout) 1390afb14e9bSmrg # Don't match below 139153354cdbSmrg ;; 1392afb14e9bSmrg sco*) 1393afb14e9bSmrg os=sco3.2v2 139453354cdbSmrg ;; 1395afb14e9bSmrg psos*) 1396afb14e9bSmrg os=psos 139753354cdbSmrg ;; 1398afb14e9bSmrg qnx*) 1399afb14e9bSmrg os=qnx 140053354cdbSmrg ;; 1401afb14e9bSmrg hiux*) 1402afb14e9bSmrg os=hiuxwe2 140353354cdbSmrg ;; 1404afb14e9bSmrg lynx*178) 1405afb14e9bSmrg os=lynxos178 140653354cdbSmrg ;; 1407afb14e9bSmrg lynx*5) 1408afb14e9bSmrg os=lynxos5 140953354cdbSmrg ;; 1410afb14e9bSmrg lynxos*) 1411afb14e9bSmrg # don't get caught up in next wildcard 141253354cdbSmrg ;; 1413afb14e9bSmrg lynx*) 1414afb14e9bSmrg os=lynxos 141553354cdbSmrg ;; 1416afb14e9bSmrg mac[0-9]*) 1417afb14e9bSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 141853354cdbSmrg ;; 1419afb14e9bSmrg opened*) 1420afb14e9bSmrg os=openedition 142153354cdbSmrg ;; 1422afb14e9bSmrg os400*) 1423afb14e9bSmrg os=os400 142453354cdbSmrg ;; 1425afb14e9bSmrg sunos5*) 1426afb14e9bSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 142753354cdbSmrg ;; 1428afb14e9bSmrg sunos6*) 1429afb14e9bSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 143053354cdbSmrg ;; 1431afb14e9bSmrg wince*) 1432afb14e9bSmrg os=wince 143353354cdbSmrg ;; 1434afb14e9bSmrg utek*) 1435afb14e9bSmrg os=bsd 143653354cdbSmrg ;; 1437afb14e9bSmrg dynix*) 1438afb14e9bSmrg os=bsd 143953354cdbSmrg ;; 1440afb14e9bSmrg acis*) 1441afb14e9bSmrg os=aos 144253354cdbSmrg ;; 1443afb14e9bSmrg atheos*) 1444afb14e9bSmrg os=atheos 144553354cdbSmrg ;; 1446afb14e9bSmrg syllable*) 1447afb14e9bSmrg os=syllable 144853354cdbSmrg ;; 1449afb14e9bSmrg 386bsd) 1450afb14e9bSmrg os=bsd 145153354cdbSmrg ;; 1452afb14e9bSmrg ctix* | uts*) 1453afb14e9bSmrg os=sysv 145453354cdbSmrg ;; 1455afb14e9bSmrg nova*) 1456afb14e9bSmrg os=rtmk-nova 145753354cdbSmrg ;; 1458afb14e9bSmrg ns2) 1459afb14e9bSmrg os=nextstep2 146053354cdbSmrg ;; 1461afb14e9bSmrg # Preserve the version number of sinix5. 1462afb14e9bSmrg sinix5.*) 1463afb14e9bSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 146453354cdbSmrg ;; 1465afb14e9bSmrg sinix*) 1466afb14e9bSmrg os=sysv4 146753354cdbSmrg ;; 1468afb14e9bSmrg tpf*) 1469afb14e9bSmrg os=tpf 147053354cdbSmrg ;; 1471afb14e9bSmrg triton*) 1472afb14e9bSmrg os=sysv3 147353354cdbSmrg ;; 1474afb14e9bSmrg oss*) 1475afb14e9bSmrg os=sysv3 147653354cdbSmrg ;; 1477afb14e9bSmrg svr4*) 1478afb14e9bSmrg os=sysv4 147953354cdbSmrg ;; 1480afb14e9bSmrg svr3) 1481afb14e9bSmrg os=sysv3 148253354cdbSmrg ;; 1483afb14e9bSmrg sysvr4) 1484afb14e9bSmrg os=sysv4 148553354cdbSmrg ;; 1486afb14e9bSmrg ose*) 1487afb14e9bSmrg os=ose 148853354cdbSmrg ;; 1489afb14e9bSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1490afb14e9bSmrg os=mint 149186bbecbeSmrg ;; 1492afb14e9bSmrg dicos*) 1493afb14e9bSmrg os=dicos 149461c899d4Smrg ;; 1495afb14e9bSmrg pikeos*) 1496afb14e9bSmrg # Until real need of OS specific support for 1497afb14e9bSmrg # particular features comes up, bare metal 1498afb14e9bSmrg # configurations are quite functional. 1499afb14e9bSmrg case $cpu in 1500afb14e9bSmrg arm*) 1501afb14e9bSmrg os=eabi 1502afb14e9bSmrg ;; 1503afb14e9bSmrg *) 1504afb14e9bSmrg os=elf 1505afb14e9bSmrg ;; 1506afb14e9bSmrg esac 150753354cdbSmrg ;; 150853354cdbSmrg *) 1509afb14e9bSmrg # No normalization, but not necessarily accepted, that comes below. 151053354cdbSmrg ;; 151153354cdbSmrgesac 1512afb14e9bSmrg 151353354cdbSmrgelse 151453354cdbSmrg 151553354cdbSmrg# Here we handle the default operating systems that come with various machines. 151653354cdbSmrg# The value should be what the vendor currently ships out the door with their 151753354cdbSmrg# machine or put another way, the most popular os provided with the machine. 151853354cdbSmrg 151953354cdbSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 152053354cdbSmrg# "-sun"), then you have to tell the case statement up towards the top 152153354cdbSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 152253354cdbSmrg# will signal an error saying that MANUFACTURER isn't an operating 152353354cdbSmrg# system, and we'll never get to this point. 152453354cdbSmrg 1525afb14e9bSmrgkernel= 1526afb14e9bSmrgcase $cpu-$vendor in 152761c899d4Smrg score-*) 1528afb14e9bSmrg os=elf 152953354cdbSmrg ;; 153061c899d4Smrg spu-*) 1531afb14e9bSmrg os=elf 153253354cdbSmrg ;; 153353354cdbSmrg *-acorn) 1534afb14e9bSmrg os=riscix1.2 153553354cdbSmrg ;; 153653354cdbSmrg arm*-rebel) 1537afb14e9bSmrg kernel=linux 1538afb14e9bSmrg os=gnu 153953354cdbSmrg ;; 154053354cdbSmrg arm*-semi) 1541afb14e9bSmrg os=aout 154253354cdbSmrg ;; 154361c899d4Smrg c4x-* | tic4x-*) 1544afb14e9bSmrg os=coff 154553354cdbSmrg ;; 1546ecb85c42Smrg c8051-*) 1547afb14e9bSmrg os=elf 1548afb14e9bSmrg ;; 1549afb14e9bSmrg clipper-intergraph) 1550afb14e9bSmrg os=clix 1551ecb85c42Smrg ;; 1552ecb85c42Smrg hexagon-*) 1553afb14e9bSmrg os=elf 1554ecb85c42Smrg ;; 155586bbecbeSmrg tic54x-*) 1556afb14e9bSmrg os=coff 155786bbecbeSmrg ;; 155886bbecbeSmrg tic55x-*) 1559afb14e9bSmrg os=coff 156086bbecbeSmrg ;; 156186bbecbeSmrg tic6x-*) 1562afb14e9bSmrg os=coff 156386bbecbeSmrg ;; 156453354cdbSmrg # This must come before the *-dec entry. 156553354cdbSmrg pdp10-*) 1566afb14e9bSmrg os=tops20 156753354cdbSmrg ;; 156853354cdbSmrg pdp11-*) 1569afb14e9bSmrg os=none 157053354cdbSmrg ;; 157153354cdbSmrg *-dec | vax-*) 1572afb14e9bSmrg os=ultrix4.2 157353354cdbSmrg ;; 157453354cdbSmrg m68*-apollo) 1575afb14e9bSmrg os=domain 157653354cdbSmrg ;; 157753354cdbSmrg i386-sun) 1578afb14e9bSmrg os=sunos4.0.2 157953354cdbSmrg ;; 158053354cdbSmrg m68000-sun) 1581afb14e9bSmrg os=sunos3 158253354cdbSmrg ;; 158353354cdbSmrg m68*-cisco) 1584afb14e9bSmrg os=aout 158553354cdbSmrg ;; 158661c899d4Smrg mep-*) 1587afb14e9bSmrg os=elf 158853354cdbSmrg ;; 158953354cdbSmrg mips*-cisco) 1590afb14e9bSmrg os=elf 159153354cdbSmrg ;; 159253354cdbSmrg mips*-*) 1593afb14e9bSmrg os=elf 1594ecb85c42Smrg ;; 159553354cdbSmrg or32-*) 1596afb14e9bSmrg os=coff 159753354cdbSmrg ;; 159853354cdbSmrg *-tti) # must be before sparc entry or we get the wrong os. 1599afb14e9bSmrg os=sysv3 160053354cdbSmrg ;; 160153354cdbSmrg sparc-* | *-sun) 1602afb14e9bSmrg os=sunos4.1.1 160353354cdbSmrg ;; 1604afb14e9bSmrg pru-*) 1605afb14e9bSmrg os=elf 160653354cdbSmrg ;; 1607afb14e9bSmrg *-be) 1608afb14e9bSmrg os=beos 160953354cdbSmrg ;; 161053354cdbSmrg *-ibm) 1611afb14e9bSmrg os=aix 161253354cdbSmrg ;; 161361c899d4Smrg *-knuth) 1614afb14e9bSmrg os=mmixware 161553354cdbSmrg ;; 161653354cdbSmrg *-wec) 1617afb14e9bSmrg os=proelf 161853354cdbSmrg ;; 161953354cdbSmrg *-winbond) 1620afb14e9bSmrg os=proelf 162153354cdbSmrg ;; 162253354cdbSmrg *-oki) 1623afb14e9bSmrg os=proelf 162453354cdbSmrg ;; 162553354cdbSmrg *-hp) 1626afb14e9bSmrg os=hpux 162753354cdbSmrg ;; 162853354cdbSmrg *-hitachi) 1629afb14e9bSmrg os=hiux 163053354cdbSmrg ;; 163153354cdbSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1632afb14e9bSmrg os=sysv 163353354cdbSmrg ;; 163453354cdbSmrg *-cbm) 1635afb14e9bSmrg os=amigaos 163653354cdbSmrg ;; 163753354cdbSmrg *-dg) 1638afb14e9bSmrg os=dgux 163953354cdbSmrg ;; 164053354cdbSmrg *-dolphin) 1641afb14e9bSmrg os=sysv3 164253354cdbSmrg ;; 164353354cdbSmrg m68k-ccur) 1644afb14e9bSmrg os=rtu 164553354cdbSmrg ;; 164653354cdbSmrg m88k-omron*) 1647afb14e9bSmrg os=luna 164853354cdbSmrg ;; 1649afb14e9bSmrg *-next) 1650afb14e9bSmrg os=nextstep 165153354cdbSmrg ;; 165253354cdbSmrg *-sequent) 1653afb14e9bSmrg os=ptx 165453354cdbSmrg ;; 165553354cdbSmrg *-crds) 1656afb14e9bSmrg os=unos 165753354cdbSmrg ;; 165853354cdbSmrg *-ns) 1659afb14e9bSmrg os=genix 166053354cdbSmrg ;; 166153354cdbSmrg i370-*) 1662afb14e9bSmrg os=mvs 166353354cdbSmrg ;; 166453354cdbSmrg *-gould) 1665afb14e9bSmrg os=sysv 166653354cdbSmrg ;; 166753354cdbSmrg *-highlevel) 1668afb14e9bSmrg os=bsd 166953354cdbSmrg ;; 167053354cdbSmrg *-encore) 1671afb14e9bSmrg os=bsd 167253354cdbSmrg ;; 167353354cdbSmrg *-sgi) 1674afb14e9bSmrg os=irix 167553354cdbSmrg ;; 167653354cdbSmrg *-siemens) 1677afb14e9bSmrg os=sysv4 167853354cdbSmrg ;; 167953354cdbSmrg *-masscomp) 1680afb14e9bSmrg os=rtu 168153354cdbSmrg ;; 168253354cdbSmrg f30[01]-fujitsu | f700-fujitsu) 1683afb14e9bSmrg os=uxpv 168453354cdbSmrg ;; 168553354cdbSmrg *-rom68k) 1686afb14e9bSmrg os=coff 168753354cdbSmrg ;; 168853354cdbSmrg *-*bug) 1689afb14e9bSmrg os=coff 169053354cdbSmrg ;; 169153354cdbSmrg *-apple) 1692afb14e9bSmrg os=macos 169353354cdbSmrg ;; 169453354cdbSmrg *-atari*) 1695afb14e9bSmrg os=mint 1696afb14e9bSmrg ;; 1697afb14e9bSmrg *-wrs) 1698afb14e9bSmrg os=vxworks 169953354cdbSmrg ;; 170053354cdbSmrg *) 1701afb14e9bSmrg os=none 170253354cdbSmrg ;; 170353354cdbSmrgesac 1704afb14e9bSmrg 170553354cdbSmrgfi 170653354cdbSmrg 1707afb14e9bSmrg# Now, validate our (potentially fixed-up) OS. 1708afb14e9bSmrgcase $os in 1709afb14e9bSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1710afb14e9bSmrg musl* | newlib* | relibc* | uclibc*) 1711afb14e9bSmrg ;; 1712afb14e9bSmrg # Likewise for "kernel-abi" 1713afb14e9bSmrg eabi* | gnueabi*) 1714afb14e9bSmrg ;; 1715afb14e9bSmrg # VxWorks passes extra cpu info in the 4th filed. 1716afb14e9bSmrg simlinux | simwindows | spe) 1717afb14e9bSmrg ;; 1718afb14e9bSmrg # Now accept the basic system types. 1719afb14e9bSmrg # The portable systems comes first. 1720afb14e9bSmrg # Each alternative MUST end in a * to match a version number. 1721afb14e9bSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1722afb14e9bSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1723afb14e9bSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1724afb14e9bSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1725afb14e9bSmrg | hiux* | abug | nacl* | netware* | windows* \ 1726afb14e9bSmrg | os9* | macos* | osx* | ios* \ 1727afb14e9bSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1728afb14e9bSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1729afb14e9bSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1730afb14e9bSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1731afb14e9bSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1732afb14e9bSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1733afb14e9bSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1734afb14e9bSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1735afb14e9bSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1736afb14e9bSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1737afb14e9bSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1738afb14e9bSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1739afb14e9bSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1740afb14e9bSmrg | midipix* | mingw32* | mingw64* | mint* \ 1741afb14e9bSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1742afb14e9bSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1743afb14e9bSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1744afb14e9bSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1745afb14e9bSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1746afb14e9bSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1747afb14e9bSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1748afb14e9bSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1749afb14e9bSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1750afb14e9bSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1751afb14e9bSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 1752afb14e9bSmrg ;; 1753afb14e9bSmrg # This one is extra strict with allowed versions 1754afb14e9bSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1755afb14e9bSmrg # Don't forget version if it is 3.2v4 or newer. 1756afb14e9bSmrg ;; 1757afb14e9bSmrg none) 1758afb14e9bSmrg ;; 1759afb14e9bSmrg *) 1760afb14e9bSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1761afb14e9bSmrg exit 1 1762afb14e9bSmrg ;; 1763afb14e9bSmrgesac 1764afb14e9bSmrg 1765afb14e9bSmrg# As a final step for OS-related things, validate the OS-kernel combination 1766afb14e9bSmrg# (given a valid OS), if there is a kernel. 1767afb14e9bSmrgcase $kernel-$os in 1768afb14e9bSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1769afb14e9bSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 1770afb14e9bSmrg ;; 1771afb14e9bSmrg uclinux-uclibc* ) 1772afb14e9bSmrg ;; 1773afb14e9bSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 1774afb14e9bSmrg # These are just libc implementations, not actual OSes, and thus 1775afb14e9bSmrg # require a kernel. 1776afb14e9bSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1777afb14e9bSmrg exit 1 1778afb14e9bSmrg ;; 1779afb14e9bSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1780afb14e9bSmrg ;; 1781afb14e9bSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1782afb14e9bSmrg ;; 1783afb14e9bSmrg nto-qnx*) 1784afb14e9bSmrg ;; 1785afb14e9bSmrg os2-emx) 1786afb14e9bSmrg ;; 1787afb14e9bSmrg *-eabi* | *-gnueabi*) 1788afb14e9bSmrg ;; 1789afb14e9bSmrg -*) 1790afb14e9bSmrg # Blank kernel with real OS is always fine. 1791afb14e9bSmrg ;; 1792afb14e9bSmrg *-*) 1793afb14e9bSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1794afb14e9bSmrg exit 1 1795afb14e9bSmrg ;; 1796afb14e9bSmrgesac 1797afb14e9bSmrg 179853354cdbSmrg# Here we handle the case where we know the os, and the CPU type, but not the 179953354cdbSmrg# manufacturer. We pick the logical manufacturer. 1800afb14e9bSmrgcase $vendor in 1801afb14e9bSmrg unknown) 1802afb14e9bSmrg case $cpu-$os in 1803afb14e9bSmrg *-riscix*) 180453354cdbSmrg vendor=acorn 180553354cdbSmrg ;; 1806afb14e9bSmrg *-sunos*) 180753354cdbSmrg vendor=sun 180853354cdbSmrg ;; 1809afb14e9bSmrg *-cnk* | *-aix*) 181053354cdbSmrg vendor=ibm 181153354cdbSmrg ;; 1812afb14e9bSmrg *-beos*) 181353354cdbSmrg vendor=be 181453354cdbSmrg ;; 1815afb14e9bSmrg *-hpux*) 181653354cdbSmrg vendor=hp 181753354cdbSmrg ;; 1818afb14e9bSmrg *-mpeix*) 181953354cdbSmrg vendor=hp 182053354cdbSmrg ;; 1821afb14e9bSmrg *-hiux*) 182253354cdbSmrg vendor=hitachi 182353354cdbSmrg ;; 1824afb14e9bSmrg *-unos*) 182553354cdbSmrg vendor=crds 182653354cdbSmrg ;; 1827afb14e9bSmrg *-dgux*) 182853354cdbSmrg vendor=dg 182953354cdbSmrg ;; 1830afb14e9bSmrg *-luna*) 183153354cdbSmrg vendor=omron 183253354cdbSmrg ;; 1833afb14e9bSmrg *-genix*) 183453354cdbSmrg vendor=ns 183553354cdbSmrg ;; 1836afb14e9bSmrg *-clix*) 1837afb14e9bSmrg vendor=intergraph 1838afb14e9bSmrg ;; 1839afb14e9bSmrg *-mvs* | *-opened*) 1840afb14e9bSmrg vendor=ibm 1841afb14e9bSmrg ;; 1842afb14e9bSmrg *-os400*) 184353354cdbSmrg vendor=ibm 184453354cdbSmrg ;; 1845afb14e9bSmrg s390-* | s390x-*) 184653354cdbSmrg vendor=ibm 184753354cdbSmrg ;; 1848afb14e9bSmrg *-ptx*) 184953354cdbSmrg vendor=sequent 185053354cdbSmrg ;; 1851afb14e9bSmrg *-tpf*) 185253354cdbSmrg vendor=ibm 185353354cdbSmrg ;; 1854afb14e9bSmrg *-vxsim* | *-vxworks* | *-windiss*) 185553354cdbSmrg vendor=wrs 185653354cdbSmrg ;; 1857afb14e9bSmrg *-aux*) 185853354cdbSmrg vendor=apple 185953354cdbSmrg ;; 1860afb14e9bSmrg *-hms*) 186153354cdbSmrg vendor=hitachi 186253354cdbSmrg ;; 1863afb14e9bSmrg *-mpw* | *-macos*) 186453354cdbSmrg vendor=apple 186553354cdbSmrg ;; 1866afb14e9bSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 186753354cdbSmrg vendor=atari 186853354cdbSmrg ;; 1869afb14e9bSmrg *-vos*) 187053354cdbSmrg vendor=stratus 187153354cdbSmrg ;; 187253354cdbSmrg esac 187353354cdbSmrg ;; 187453354cdbSmrgesac 187553354cdbSmrg 1876afb14e9bSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 187753354cdbSmrgexit 187853354cdbSmrg 187953354cdbSmrg# Local variables: 1880afb14e9bSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 188153354cdbSmrg# time-stamp-start: "timestamp='" 188253354cdbSmrg# time-stamp-format: "%:y-%02m-%02d" 188353354cdbSmrg# time-stamp-end: "'" 188453354cdbSmrg# End: 1885