114c0a534Smrg#! /bin/sh 214c0a534Smrg# Configuration validation subroutine script. 37015785aSmrg# Copyright 1992-2024 Free Software Foundation, Inc. 414c0a534Smrg 5bdc460c5Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6bdc460c5Smrg 77015785aSmrgtimestamp='2024-01-01' 814c0a534Smrg 924047306Smrg# This file is free software; you can redistribute it and/or modify it 1024047306Smrg# under the terms of the GNU General Public License as published by 117015785aSmrg# the Free Software Foundation, either version 3 of the License, or 1214c0a534Smrg# (at your option) any later version. 1314c0a534Smrg# 1424047306Smrg# This program is distributed in the hope that it will be useful, but 1524047306Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1624047306Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1724047306Smrg# General Public License for more details. 1814c0a534Smrg# 1914c0a534Smrg# You should have received a copy of the GNU General Public License 20bdc460c5Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 2114c0a534Smrg# 2214c0a534Smrg# As a special exception to the GNU General Public License, if you 2314c0a534Smrg# distribute this file as part of a program that contains a 2414c0a534Smrg# configuration script generated by Autoconf, you may include it under 2524047306Smrg# the same distribution terms that you use for the rest of that 2624047306Smrg# program. This Exception is an additional permission under section 7 2724047306Smrg# of the GNU General Public License, version 3 ("GPLv3"). 2814c0a534Smrg 2914c0a534Smrg 3024047306Smrg# Please send patches to <config-patches@gnu.org>. 3114c0a534Smrg# 3214c0a534Smrg# Configuration subroutine to validate and canonicalize a configuration type. 3314c0a534Smrg# Supply the specified configuration type as an argument. 3414c0a534Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 3514c0a534Smrg# Otherwise, we print the canonical config type on stdout and succeed. 3614c0a534Smrg 37576bae58Smrg# You can get the latest version of this script from: 38bdc460c5Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39576bae58Smrg 4014c0a534Smrg# This file is supposed to be the same for all GNU packages 4114c0a534Smrg# and recognize all the CPU types, system types and aliases 4214c0a534Smrg# that are meaningful with *any* GNU software. 4314c0a534Smrg# Each package is responsible for reporting which valid configurations 4414c0a534Smrg# it does not support. The user should be able to distinguish 4514c0a534Smrg# a failure to support a valid configuration from a meaningless 4614c0a534Smrg# configuration. 4714c0a534Smrg 4814c0a534Smrg# The goal of this file is to map all the various variations of a given 4914c0a534Smrg# machine specification into a single specification in the form: 5014c0a534Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5114c0a534Smrg# or in some cases, the newer four-part form: 5214c0a534Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5314c0a534Smrg# It is wrong to echo any other type of specification. 5414c0a534Smrg 55bdc460c5Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 56bdc460c5Smrg# about features and limitations of the classic Bourne shell that were 57bdc460c5Smrg# superseded or lifted in POSIX. However, this script identifies a wide 58bdc460c5Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59bdc460c5Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60bdc460c5Smrg# have a pre-POSIX /bin/sh. 61bdc460c5Smrg 6214c0a534Smrgme=`echo "$0" | sed -e 's,.*/,,'` 6314c0a534Smrg 6414c0a534Smrgusage="\ 65bdc460c5SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6614c0a534Smrg 6714c0a534SmrgCanonicalize a configuration name. 6814c0a534Smrg 69bdc460c5SmrgOptions: 7014c0a534Smrg -h, --help print this help, then exit 7114c0a534Smrg -t, --time-stamp print date of last modification, then exit 7214c0a534Smrg -v, --version print version number, then exit 7314c0a534Smrg 7414c0a534SmrgReport bugs and patches to <config-patches@gnu.org>." 7514c0a534Smrg 7614c0a534Smrgversion="\ 7714c0a534SmrgGNU config.sub ($timestamp) 7814c0a534Smrg 797015785aSmrgCopyright 1992-2024 Free Software Foundation, Inc. 8014c0a534Smrg 8114c0a534SmrgThis is free software; see the source for copying conditions. There is NO 8214c0a534Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8314c0a534Smrg 8414c0a534Smrghelp=" 857015785aSmrgTry '$me --help' for more information." 8614c0a534Smrg 8714c0a534Smrg# Parse command line 8814c0a534Smrgwhile test $# -gt 0 ; do 8914c0a534Smrg case $1 in 9014c0a534Smrg --time-stamp | --time* | -t ) 9114c0a534Smrg echo "$timestamp" ; exit ;; 9214c0a534Smrg --version | -v ) 9314c0a534Smrg echo "$version" ; exit ;; 9414c0a534Smrg --help | --h* | -h ) 9514c0a534Smrg echo "$usage"; exit ;; 9614c0a534Smrg -- ) # Stop option processing 9714c0a534Smrg shift; break ;; 9814c0a534Smrg - ) # Use stdin as input. 9914c0a534Smrg break ;; 10014c0a534Smrg -* ) 101bdc460c5Smrg echo "$me: invalid option $1$help" >&2 10214c0a534Smrg exit 1 ;; 10314c0a534Smrg 10414c0a534Smrg *local*) 10514c0a534Smrg # First pass through any local machine types. 106bdc460c5Smrg echo "$1" 10714c0a534Smrg exit ;; 10814c0a534Smrg 10914c0a534Smrg * ) 11014c0a534Smrg break ;; 11114c0a534Smrg esac 11214c0a534Smrgdone 11314c0a534Smrg 11414c0a534Smrgcase $# in 11514c0a534Smrg 0) echo "$me: missing argument$help" >&2 11614c0a534Smrg exit 1;; 11714c0a534Smrg 1) ;; 11814c0a534Smrg *) echo "$me: too many arguments$help" >&2 11914c0a534Smrg exit 1;; 12014c0a534Smrgesac 12114c0a534Smrg 122bdc460c5Smrg# Split fields of configuration type 123bdc460c5Smrg# shellcheck disable=SC2162 124bdc460c5Smrgsaved_IFS=$IFS 125bdc460c5SmrgIFS="-" read field1 field2 field3 field4 <<EOF 126bdc460c5Smrg$1 127bdc460c5SmrgEOF 128bdc460c5SmrgIFS=$saved_IFS 12914c0a534Smrg 130bdc460c5Smrg# Separate into logical components for further validation 131bdc460c5Smrgcase $1 in 132bdc460c5Smrg *-*-*-*-*) 1337015785aSmrg echo "Invalid configuration '$1': more than four components" >&2 134bdc460c5Smrg exit 1 13514c0a534Smrg ;; 136bdc460c5Smrg *-*-*-*) 137bdc460c5Smrg basic_machine=$field1-$field2 138bdc460c5Smrg basic_os=$field3-$field4 13914c0a534Smrg ;; 140bdc460c5Smrg *-*-*) 141bdc460c5Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142bdc460c5Smrg # parts 143bdc460c5Smrg maybe_os=$field2-$field3 144bdc460c5Smrg case $maybe_os in 145bdc460c5Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 146bdc460c5Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147bdc460c5Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1487015785aSmrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ 1497015785aSmrg | windows-* ) 150bdc460c5Smrg basic_machine=$field1 151bdc460c5Smrg basic_os=$maybe_os 152bdc460c5Smrg ;; 153bdc460c5Smrg android-linux) 154bdc460c5Smrg basic_machine=$field1-unknown 155bdc460c5Smrg basic_os=linux-android 156bdc460c5Smrg ;; 157bdc460c5Smrg *) 158bdc460c5Smrg basic_machine=$field1-$field2 159bdc460c5Smrg basic_os=$field3 160bdc460c5Smrg ;; 161bdc460c5Smrg esac 16214c0a534Smrg ;; 163bdc460c5Smrg *-*) 164bdc460c5Smrg # A lone config we happen to match not fitting any pattern 165bdc460c5Smrg case $field1-$field2 in 166bdc460c5Smrg decstation-3100) 167bdc460c5Smrg basic_machine=mips-dec 168bdc460c5Smrg basic_os= 169bdc460c5Smrg ;; 170bdc460c5Smrg *-*) 171bdc460c5Smrg # Second component is usually, but not always the OS 172bdc460c5Smrg case $field2 in 173bdc460c5Smrg # Prevent following clause from handling this valid os 174bdc460c5Smrg sun*os*) 175bdc460c5Smrg basic_machine=$field1 176bdc460c5Smrg basic_os=$field2 177bdc460c5Smrg ;; 178bdc460c5Smrg zephyr*) 179bdc460c5Smrg basic_machine=$field1-unknown 180bdc460c5Smrg basic_os=$field2 181bdc460c5Smrg ;; 182bdc460c5Smrg # Manufacturers 183bdc460c5Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 184bdc460c5Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 185bdc460c5Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 186bdc460c5Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 187bdc460c5Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 188bdc460c5Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 189bdc460c5Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 190bdc460c5Smrg | microblaze* | sim | cisco \ 191bdc460c5Smrg | oki | wec | wrs | winbond) 192bdc460c5Smrg basic_machine=$field1-$field2 193bdc460c5Smrg basic_os= 194bdc460c5Smrg ;; 195bdc460c5Smrg *) 196bdc460c5Smrg basic_machine=$field1 197bdc460c5Smrg basic_os=$field2 198bdc460c5Smrg ;; 199bdc460c5Smrg esac 200bdc460c5Smrg ;; 201bdc460c5Smrg esac 20214c0a534Smrg ;; 203bdc460c5Smrg *) 204bdc460c5Smrg # Convert single-component short-hands not valid as part of 205bdc460c5Smrg # multi-component configurations. 206bdc460c5Smrg case $field1 in 207bdc460c5Smrg 386bsd) 208bdc460c5Smrg basic_machine=i386-pc 209bdc460c5Smrg basic_os=bsd 210bdc460c5Smrg ;; 211bdc460c5Smrg a29khif) 212bdc460c5Smrg basic_machine=a29k-amd 213bdc460c5Smrg basic_os=udi 214bdc460c5Smrg ;; 215bdc460c5Smrg adobe68k) 216bdc460c5Smrg basic_machine=m68010-adobe 217bdc460c5Smrg basic_os=scout 218bdc460c5Smrg ;; 219bdc460c5Smrg alliant) 220bdc460c5Smrg basic_machine=fx80-alliant 221bdc460c5Smrg basic_os= 222bdc460c5Smrg ;; 223bdc460c5Smrg altos | altos3068) 224bdc460c5Smrg basic_machine=m68k-altos 225bdc460c5Smrg basic_os= 226bdc460c5Smrg ;; 227bdc460c5Smrg am29k) 228bdc460c5Smrg basic_machine=a29k-none 229bdc460c5Smrg basic_os=bsd 230bdc460c5Smrg ;; 231bdc460c5Smrg amdahl) 232bdc460c5Smrg basic_machine=580-amdahl 233bdc460c5Smrg basic_os=sysv 234bdc460c5Smrg ;; 235bdc460c5Smrg amiga) 236bdc460c5Smrg basic_machine=m68k-unknown 237bdc460c5Smrg basic_os= 238bdc460c5Smrg ;; 239bdc460c5Smrg amigaos | amigados) 240bdc460c5Smrg basic_machine=m68k-unknown 241bdc460c5Smrg basic_os=amigaos 242bdc460c5Smrg ;; 243bdc460c5Smrg amigaunix | amix) 244bdc460c5Smrg basic_machine=m68k-unknown 245bdc460c5Smrg basic_os=sysv4 246bdc460c5Smrg ;; 247bdc460c5Smrg apollo68) 248bdc460c5Smrg basic_machine=m68k-apollo 249bdc460c5Smrg basic_os=sysv 250bdc460c5Smrg ;; 251bdc460c5Smrg apollo68bsd) 252bdc460c5Smrg basic_machine=m68k-apollo 253bdc460c5Smrg basic_os=bsd 254bdc460c5Smrg ;; 255bdc460c5Smrg aros) 256bdc460c5Smrg basic_machine=i386-pc 257bdc460c5Smrg basic_os=aros 258bdc460c5Smrg ;; 259bdc460c5Smrg aux) 260bdc460c5Smrg basic_machine=m68k-apple 261bdc460c5Smrg basic_os=aux 262bdc460c5Smrg ;; 263bdc460c5Smrg balance) 264bdc460c5Smrg basic_machine=ns32k-sequent 265bdc460c5Smrg basic_os=dynix 266bdc460c5Smrg ;; 267bdc460c5Smrg blackfin) 268bdc460c5Smrg basic_machine=bfin-unknown 269bdc460c5Smrg basic_os=linux 270bdc460c5Smrg ;; 271bdc460c5Smrg cegcc) 272bdc460c5Smrg basic_machine=arm-unknown 273bdc460c5Smrg basic_os=cegcc 274bdc460c5Smrg ;; 275bdc460c5Smrg convex-c1) 276bdc460c5Smrg basic_machine=c1-convex 277bdc460c5Smrg basic_os=bsd 278bdc460c5Smrg ;; 279bdc460c5Smrg convex-c2) 280bdc460c5Smrg basic_machine=c2-convex 281bdc460c5Smrg basic_os=bsd 282bdc460c5Smrg ;; 283bdc460c5Smrg convex-c32) 284bdc460c5Smrg basic_machine=c32-convex 285bdc460c5Smrg basic_os=bsd 286bdc460c5Smrg ;; 287bdc460c5Smrg convex-c34) 288bdc460c5Smrg basic_machine=c34-convex 289bdc460c5Smrg basic_os=bsd 290bdc460c5Smrg ;; 291bdc460c5Smrg convex-c38) 292bdc460c5Smrg basic_machine=c38-convex 293bdc460c5Smrg basic_os=bsd 294bdc460c5Smrg ;; 295bdc460c5Smrg cray) 296bdc460c5Smrg basic_machine=j90-cray 297bdc460c5Smrg basic_os=unicos 298bdc460c5Smrg ;; 299bdc460c5Smrg crds | unos) 300bdc460c5Smrg basic_machine=m68k-crds 301bdc460c5Smrg basic_os= 302bdc460c5Smrg ;; 303bdc460c5Smrg da30) 304bdc460c5Smrg basic_machine=m68k-da30 305bdc460c5Smrg basic_os= 306bdc460c5Smrg ;; 307bdc460c5Smrg decstation | pmax | pmin | dec3100 | decstatn) 308bdc460c5Smrg basic_machine=mips-dec 309bdc460c5Smrg basic_os= 310bdc460c5Smrg ;; 311bdc460c5Smrg delta88) 312bdc460c5Smrg basic_machine=m88k-motorola 313bdc460c5Smrg basic_os=sysv3 314bdc460c5Smrg ;; 315bdc460c5Smrg dicos) 316bdc460c5Smrg basic_machine=i686-pc 317bdc460c5Smrg basic_os=dicos 318bdc460c5Smrg ;; 319bdc460c5Smrg djgpp) 320bdc460c5Smrg basic_machine=i586-pc 321bdc460c5Smrg basic_os=msdosdjgpp 322bdc460c5Smrg ;; 323bdc460c5Smrg ebmon29k) 324bdc460c5Smrg basic_machine=a29k-amd 325bdc460c5Smrg basic_os=ebmon 326bdc460c5Smrg ;; 327bdc460c5Smrg es1800 | OSE68k | ose68k | ose | OSE) 328bdc460c5Smrg basic_machine=m68k-ericsson 329bdc460c5Smrg basic_os=ose 330bdc460c5Smrg ;; 331bdc460c5Smrg gmicro) 332bdc460c5Smrg basic_machine=tron-gmicro 333bdc460c5Smrg basic_os=sysv 334bdc460c5Smrg ;; 335bdc460c5Smrg go32) 336bdc460c5Smrg basic_machine=i386-pc 337bdc460c5Smrg basic_os=go32 338bdc460c5Smrg ;; 339bdc460c5Smrg h8300hms) 340bdc460c5Smrg basic_machine=h8300-hitachi 341bdc460c5Smrg basic_os=hms 342bdc460c5Smrg ;; 343bdc460c5Smrg h8300xray) 344bdc460c5Smrg basic_machine=h8300-hitachi 345bdc460c5Smrg basic_os=xray 346bdc460c5Smrg ;; 347bdc460c5Smrg h8500hms) 348bdc460c5Smrg basic_machine=h8500-hitachi 349bdc460c5Smrg basic_os=hms 350bdc460c5Smrg ;; 351bdc460c5Smrg harris) 352bdc460c5Smrg basic_machine=m88k-harris 353bdc460c5Smrg basic_os=sysv3 354bdc460c5Smrg ;; 355bdc460c5Smrg hp300 | hp300hpux) 356bdc460c5Smrg basic_machine=m68k-hp 357bdc460c5Smrg basic_os=hpux 358bdc460c5Smrg ;; 359bdc460c5Smrg hp300bsd) 360bdc460c5Smrg basic_machine=m68k-hp 361bdc460c5Smrg basic_os=bsd 362bdc460c5Smrg ;; 363bdc460c5Smrg hppaosf) 364bdc460c5Smrg basic_machine=hppa1.1-hp 365bdc460c5Smrg basic_os=osf 366bdc460c5Smrg ;; 367bdc460c5Smrg hppro) 368bdc460c5Smrg basic_machine=hppa1.1-hp 369bdc460c5Smrg basic_os=proelf 370bdc460c5Smrg ;; 371bdc460c5Smrg i386mach) 372bdc460c5Smrg basic_machine=i386-mach 373bdc460c5Smrg basic_os=mach 374bdc460c5Smrg ;; 375bdc460c5Smrg isi68 | isi) 376bdc460c5Smrg basic_machine=m68k-isi 377bdc460c5Smrg basic_os=sysv 378bdc460c5Smrg ;; 379bdc460c5Smrg m68knommu) 380bdc460c5Smrg basic_machine=m68k-unknown 381bdc460c5Smrg basic_os=linux 382bdc460c5Smrg ;; 383bdc460c5Smrg magnum | m3230) 384bdc460c5Smrg basic_machine=mips-mips 385bdc460c5Smrg basic_os=sysv 386bdc460c5Smrg ;; 387bdc460c5Smrg merlin) 388bdc460c5Smrg basic_machine=ns32k-utek 389bdc460c5Smrg basic_os=sysv 390bdc460c5Smrg ;; 391bdc460c5Smrg mingw64) 392bdc460c5Smrg basic_machine=x86_64-pc 393bdc460c5Smrg basic_os=mingw64 394bdc460c5Smrg ;; 395bdc460c5Smrg mingw32) 396bdc460c5Smrg basic_machine=i686-pc 397bdc460c5Smrg basic_os=mingw32 398bdc460c5Smrg ;; 399bdc460c5Smrg mingw32ce) 400bdc460c5Smrg basic_machine=arm-unknown 401bdc460c5Smrg basic_os=mingw32ce 402bdc460c5Smrg ;; 403bdc460c5Smrg monitor) 404bdc460c5Smrg basic_machine=m68k-rom68k 405bdc460c5Smrg basic_os=coff 406bdc460c5Smrg ;; 407bdc460c5Smrg morphos) 408bdc460c5Smrg basic_machine=powerpc-unknown 409bdc460c5Smrg basic_os=morphos 410bdc460c5Smrg ;; 411bdc460c5Smrg moxiebox) 412bdc460c5Smrg basic_machine=moxie-unknown 413bdc460c5Smrg basic_os=moxiebox 414bdc460c5Smrg ;; 415bdc460c5Smrg msdos) 416bdc460c5Smrg basic_machine=i386-pc 417bdc460c5Smrg basic_os=msdos 418bdc460c5Smrg ;; 419bdc460c5Smrg msys) 420bdc460c5Smrg basic_machine=i686-pc 421bdc460c5Smrg basic_os=msys 422bdc460c5Smrg ;; 423bdc460c5Smrg mvs) 424bdc460c5Smrg basic_machine=i370-ibm 425bdc460c5Smrg basic_os=mvs 426bdc460c5Smrg ;; 427bdc460c5Smrg nacl) 428bdc460c5Smrg basic_machine=le32-unknown 429bdc460c5Smrg basic_os=nacl 430bdc460c5Smrg ;; 431bdc460c5Smrg ncr3000) 432bdc460c5Smrg basic_machine=i486-ncr 433bdc460c5Smrg basic_os=sysv4 434bdc460c5Smrg ;; 435bdc460c5Smrg netbsd386) 436bdc460c5Smrg basic_machine=i386-pc 437bdc460c5Smrg basic_os=netbsd 438bdc460c5Smrg ;; 439bdc460c5Smrg netwinder) 440bdc460c5Smrg basic_machine=armv4l-rebel 441bdc460c5Smrg basic_os=linux 442bdc460c5Smrg ;; 443bdc460c5Smrg news | news700 | news800 | news900) 444bdc460c5Smrg basic_machine=m68k-sony 445bdc460c5Smrg basic_os=newsos 446bdc460c5Smrg ;; 447bdc460c5Smrg news1000) 448bdc460c5Smrg basic_machine=m68030-sony 449bdc460c5Smrg basic_os=newsos 450bdc460c5Smrg ;; 451bdc460c5Smrg necv70) 452bdc460c5Smrg basic_machine=v70-nec 453bdc460c5Smrg basic_os=sysv 454bdc460c5Smrg ;; 455bdc460c5Smrg nh3000) 456bdc460c5Smrg basic_machine=m68k-harris 457bdc460c5Smrg basic_os=cxux 458bdc460c5Smrg ;; 459bdc460c5Smrg nh[45]000) 460bdc460c5Smrg basic_machine=m88k-harris 461bdc460c5Smrg basic_os=cxux 462bdc460c5Smrg ;; 463bdc460c5Smrg nindy960) 464bdc460c5Smrg basic_machine=i960-intel 465bdc460c5Smrg basic_os=nindy 466bdc460c5Smrg ;; 467bdc460c5Smrg mon960) 468bdc460c5Smrg basic_machine=i960-intel 469bdc460c5Smrg basic_os=mon960 470bdc460c5Smrg ;; 471bdc460c5Smrg nonstopux) 472bdc460c5Smrg basic_machine=mips-compaq 473bdc460c5Smrg basic_os=nonstopux 474bdc460c5Smrg ;; 475bdc460c5Smrg os400) 476bdc460c5Smrg basic_machine=powerpc-ibm 477bdc460c5Smrg basic_os=os400 478bdc460c5Smrg ;; 479bdc460c5Smrg OSE68000 | ose68000) 480bdc460c5Smrg basic_machine=m68000-ericsson 481bdc460c5Smrg basic_os=ose 482bdc460c5Smrg ;; 483bdc460c5Smrg os68k) 484bdc460c5Smrg basic_machine=m68k-none 485bdc460c5Smrg basic_os=os68k 486bdc460c5Smrg ;; 487bdc460c5Smrg paragon) 488bdc460c5Smrg basic_machine=i860-intel 489bdc460c5Smrg basic_os=osf 490bdc460c5Smrg ;; 491bdc460c5Smrg parisc) 492bdc460c5Smrg basic_machine=hppa-unknown 493bdc460c5Smrg basic_os=linux 494bdc460c5Smrg ;; 495bdc460c5Smrg psp) 496bdc460c5Smrg basic_machine=mipsallegrexel-sony 497bdc460c5Smrg basic_os=psp 498bdc460c5Smrg ;; 499bdc460c5Smrg pw32) 500bdc460c5Smrg basic_machine=i586-unknown 501bdc460c5Smrg basic_os=pw32 502bdc460c5Smrg ;; 503bdc460c5Smrg rdos | rdos64) 504bdc460c5Smrg basic_machine=x86_64-pc 505bdc460c5Smrg basic_os=rdos 506bdc460c5Smrg ;; 507bdc460c5Smrg rdos32) 508bdc460c5Smrg basic_machine=i386-pc 509bdc460c5Smrg basic_os=rdos 510bdc460c5Smrg ;; 511bdc460c5Smrg rom68k) 512bdc460c5Smrg basic_machine=m68k-rom68k 513bdc460c5Smrg basic_os=coff 514bdc460c5Smrg ;; 515bdc460c5Smrg sa29200) 516bdc460c5Smrg basic_machine=a29k-amd 517bdc460c5Smrg basic_os=udi 518bdc460c5Smrg ;; 519bdc460c5Smrg sei) 520bdc460c5Smrg basic_machine=mips-sei 521bdc460c5Smrg basic_os=seiux 522bdc460c5Smrg ;; 523bdc460c5Smrg sequent) 524bdc460c5Smrg basic_machine=i386-sequent 525bdc460c5Smrg basic_os= 526bdc460c5Smrg ;; 527bdc460c5Smrg sps7) 528bdc460c5Smrg basic_machine=m68k-bull 529bdc460c5Smrg basic_os=sysv2 530bdc460c5Smrg ;; 531bdc460c5Smrg st2000) 532bdc460c5Smrg basic_machine=m68k-tandem 533bdc460c5Smrg basic_os= 534bdc460c5Smrg ;; 535bdc460c5Smrg stratus) 536bdc460c5Smrg basic_machine=i860-stratus 537bdc460c5Smrg basic_os=sysv4 538bdc460c5Smrg ;; 539bdc460c5Smrg sun2) 540bdc460c5Smrg basic_machine=m68000-sun 541bdc460c5Smrg basic_os= 542bdc460c5Smrg ;; 543bdc460c5Smrg sun2os3) 544bdc460c5Smrg basic_machine=m68000-sun 545bdc460c5Smrg basic_os=sunos3 546bdc460c5Smrg ;; 547bdc460c5Smrg sun2os4) 548bdc460c5Smrg basic_machine=m68000-sun 549bdc460c5Smrg basic_os=sunos4 550bdc460c5Smrg ;; 551bdc460c5Smrg sun3) 552bdc460c5Smrg basic_machine=m68k-sun 553bdc460c5Smrg basic_os= 554bdc460c5Smrg ;; 555bdc460c5Smrg sun3os3) 556bdc460c5Smrg basic_machine=m68k-sun 557bdc460c5Smrg basic_os=sunos3 558bdc460c5Smrg ;; 559bdc460c5Smrg sun3os4) 560bdc460c5Smrg basic_machine=m68k-sun 561bdc460c5Smrg basic_os=sunos4 562bdc460c5Smrg ;; 563bdc460c5Smrg sun4) 564bdc460c5Smrg basic_machine=sparc-sun 565bdc460c5Smrg basic_os= 566bdc460c5Smrg ;; 567bdc460c5Smrg sun4os3) 568bdc460c5Smrg basic_machine=sparc-sun 569bdc460c5Smrg basic_os=sunos3 570bdc460c5Smrg ;; 571bdc460c5Smrg sun4os4) 572bdc460c5Smrg basic_machine=sparc-sun 573bdc460c5Smrg basic_os=sunos4 574bdc460c5Smrg ;; 575bdc460c5Smrg sun4sol2) 576bdc460c5Smrg basic_machine=sparc-sun 577bdc460c5Smrg basic_os=solaris2 578bdc460c5Smrg ;; 579bdc460c5Smrg sun386 | sun386i | roadrunner) 580bdc460c5Smrg basic_machine=i386-sun 581bdc460c5Smrg basic_os= 582bdc460c5Smrg ;; 583bdc460c5Smrg sv1) 584bdc460c5Smrg basic_machine=sv1-cray 585bdc460c5Smrg basic_os=unicos 586bdc460c5Smrg ;; 587bdc460c5Smrg symmetry) 588bdc460c5Smrg basic_machine=i386-sequent 589bdc460c5Smrg basic_os=dynix 590bdc460c5Smrg ;; 591bdc460c5Smrg t3e) 592bdc460c5Smrg basic_machine=alphaev5-cray 593bdc460c5Smrg basic_os=unicos 594bdc460c5Smrg ;; 595bdc460c5Smrg t90) 596bdc460c5Smrg basic_machine=t90-cray 597bdc460c5Smrg basic_os=unicos 598bdc460c5Smrg ;; 599bdc460c5Smrg toad1) 600bdc460c5Smrg basic_machine=pdp10-xkl 601bdc460c5Smrg basic_os=tops20 602bdc460c5Smrg ;; 603bdc460c5Smrg tpf) 604bdc460c5Smrg basic_machine=s390x-ibm 605bdc460c5Smrg basic_os=tpf 606bdc460c5Smrg ;; 607bdc460c5Smrg udi29k) 608bdc460c5Smrg basic_machine=a29k-amd 609bdc460c5Smrg basic_os=udi 610bdc460c5Smrg ;; 611bdc460c5Smrg ultra3) 612bdc460c5Smrg basic_machine=a29k-nyu 613bdc460c5Smrg basic_os=sym1 614bdc460c5Smrg ;; 615bdc460c5Smrg v810 | necv810) 616bdc460c5Smrg basic_machine=v810-nec 617bdc460c5Smrg basic_os=none 618bdc460c5Smrg ;; 619bdc460c5Smrg vaxv) 620bdc460c5Smrg basic_machine=vax-dec 621bdc460c5Smrg basic_os=sysv 622bdc460c5Smrg ;; 623bdc460c5Smrg vms) 624bdc460c5Smrg basic_machine=vax-dec 625bdc460c5Smrg basic_os=vms 626bdc460c5Smrg ;; 627bdc460c5Smrg vsta) 628bdc460c5Smrg basic_machine=i386-pc 629bdc460c5Smrg basic_os=vsta 630bdc460c5Smrg ;; 631bdc460c5Smrg vxworks960) 632bdc460c5Smrg basic_machine=i960-wrs 633bdc460c5Smrg basic_os=vxworks 634bdc460c5Smrg ;; 635bdc460c5Smrg vxworks68) 636bdc460c5Smrg basic_machine=m68k-wrs 637bdc460c5Smrg basic_os=vxworks 638bdc460c5Smrg ;; 639bdc460c5Smrg vxworks29k) 640bdc460c5Smrg basic_machine=a29k-wrs 641bdc460c5Smrg basic_os=vxworks 642bdc460c5Smrg ;; 643bdc460c5Smrg xbox) 644bdc460c5Smrg basic_machine=i686-pc 645bdc460c5Smrg basic_os=mingw32 646bdc460c5Smrg ;; 647bdc460c5Smrg ymp) 648bdc460c5Smrg basic_machine=ymp-cray 649bdc460c5Smrg basic_os=unicos 650bdc460c5Smrg ;; 651bdc460c5Smrg *) 652bdc460c5Smrg basic_machine=$1 653bdc460c5Smrg basic_os= 654bdc460c5Smrg ;; 655bdc460c5Smrg esac 65614c0a534Smrg ;; 65714c0a534Smrgesac 65814c0a534Smrg 659bdc460c5Smrg# Decode 1-component or ad-hoc basic machines 66014c0a534Smrgcase $basic_machine in 661bdc460c5Smrg # Here we handle the default manufacturer of certain CPU types. It is in 662bdc460c5Smrg # some cases the only manufacturer, in others, it is the most popular. 663bdc460c5Smrg w89k) 664bdc460c5Smrg cpu=hppa1.1 665bdc460c5Smrg vendor=winbond 66624047306Smrg ;; 667bdc460c5Smrg op50n) 668bdc460c5Smrg cpu=hppa1.1 669bdc460c5Smrg vendor=oki 67014c0a534Smrg ;; 671bdc460c5Smrg op60c) 672bdc460c5Smrg cpu=hppa1.1 673bdc460c5Smrg vendor=oki 67414c0a534Smrg ;; 675bdc460c5Smrg ibm*) 676bdc460c5Smrg cpu=i370 677bdc460c5Smrg vendor=ibm 678bf2eeab3Smrg ;; 679bdc460c5Smrg orion105) 680bdc460c5Smrg cpu=clipper 681bdc460c5Smrg vendor=highlevel 68224047306Smrg ;; 683bdc460c5Smrg mac | mpw | mac-mpw) 684bdc460c5Smrg cpu=m68k 685bdc460c5Smrg vendor=apple 68624047306Smrg ;; 687bdc460c5Smrg pmac | pmac-mpw) 688bdc460c5Smrg cpu=powerpc 689bdc460c5Smrg vendor=apple 69024047306Smrg ;; 69124047306Smrg 69214c0a534Smrg # Recognize the various machine names and aliases which stand 69314c0a534Smrg # for a CPU type and a company and sometimes even an OS. 69414c0a534Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 695bdc460c5Smrg cpu=m68000 696bdc460c5Smrg vendor=att 69714c0a534Smrg ;; 69814c0a534Smrg 3b*) 699bdc460c5Smrg cpu=we32k 700bdc460c5Smrg vendor=att 701bf2eeab3Smrg ;; 702576bae58Smrg bluegene*) 703bdc460c5Smrg cpu=powerpc 704bdc460c5Smrg vendor=ibm 705bdc460c5Smrg basic_os=cnk 70614c0a534Smrg ;; 70714c0a534Smrg decsystem10* | dec10*) 708bdc460c5Smrg cpu=pdp10 709bdc460c5Smrg vendor=dec 710bdc460c5Smrg basic_os=tops10 71114c0a534Smrg ;; 71214c0a534Smrg decsystem20* | dec20*) 713bdc460c5Smrg cpu=pdp10 714bdc460c5Smrg vendor=dec 715bdc460c5Smrg basic_os=tops20 71614c0a534Smrg ;; 71714c0a534Smrg delta | 3300 | motorola-3300 | motorola-delta \ 71814c0a534Smrg | 3300-motorola | delta-motorola) 719bdc460c5Smrg cpu=m68k 720bdc460c5Smrg vendor=motorola 72114c0a534Smrg ;; 722bdc460c5Smrg dpx2*) 723bdc460c5Smrg cpu=m68k 724bdc460c5Smrg vendor=bull 725bdc460c5Smrg basic_os=sysv3 72614c0a534Smrg ;; 72714c0a534Smrg encore | umax | mmax) 728bdc460c5Smrg cpu=ns32k 729bdc460c5Smrg vendor=encore 73014c0a534Smrg ;; 731bdc460c5Smrg elxsi) 732bdc460c5Smrg cpu=elxsi 733bdc460c5Smrg vendor=elxsi 734bdc460c5Smrg basic_os=${basic_os:-bsd} 73514c0a534Smrg ;; 73614c0a534Smrg fx2800) 737bdc460c5Smrg cpu=i860 738bdc460c5Smrg vendor=alliant 73914c0a534Smrg ;; 74014c0a534Smrg genix) 741bdc460c5Smrg cpu=ns32k 742bdc460c5Smrg vendor=ns 74314c0a534Smrg ;; 74414c0a534Smrg h3050r* | hiux*) 745bdc460c5Smrg cpu=hppa1.1 746bdc460c5Smrg vendor=hitachi 747bdc460c5Smrg basic_os=hiuxwe2 74814c0a534Smrg ;; 74914c0a534Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 750bdc460c5Smrg cpu=hppa1.0 751bdc460c5Smrg vendor=hp 75214c0a534Smrg ;; 75314c0a534Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 754bdc460c5Smrg cpu=m68000 755bdc460c5Smrg vendor=hp 75614c0a534Smrg ;; 75714c0a534Smrg hp9k3[2-9][0-9]) 758bdc460c5Smrg cpu=m68k 759bdc460c5Smrg vendor=hp 76014c0a534Smrg ;; 76114c0a534Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 762bdc460c5Smrg cpu=hppa1.0 763bdc460c5Smrg vendor=hp 76414c0a534Smrg ;; 76514c0a534Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 766bdc460c5Smrg cpu=hppa1.1 767bdc460c5Smrg vendor=hp 76814c0a534Smrg ;; 76914c0a534Smrg hp9k78[0-9] | hp78[0-9]) 77014c0a534Smrg # FIXME: really hppa2.0-hp 771bdc460c5Smrg cpu=hppa1.1 772bdc460c5Smrg vendor=hp 77314c0a534Smrg ;; 77414c0a534Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77514c0a534Smrg # FIXME: really hppa2.0-hp 776bdc460c5Smrg cpu=hppa1.1 777bdc460c5Smrg vendor=hp 77814c0a534Smrg ;; 77914c0a534Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 780bdc460c5Smrg cpu=hppa1.1 781bdc460c5Smrg vendor=hp 78214c0a534Smrg ;; 78314c0a534Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 784bdc460c5Smrg cpu=hppa1.0 785bdc460c5Smrg vendor=hp 78614c0a534Smrg ;; 78714c0a534Smrg i*86v32) 788bdc460c5Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 789bdc460c5Smrg vendor=pc 790bdc460c5Smrg basic_os=sysv32 79114c0a534Smrg ;; 79214c0a534Smrg i*86v4*) 793bdc460c5Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 794bdc460c5Smrg vendor=pc 795bdc460c5Smrg basic_os=sysv4 79614c0a534Smrg ;; 79714c0a534Smrg i*86v) 798bdc460c5Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 799bdc460c5Smrg vendor=pc 800bdc460c5Smrg basic_os=sysv 80114c0a534Smrg ;; 80214c0a534Smrg i*86sol2) 803bdc460c5Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 804bdc460c5Smrg vendor=pc 805bdc460c5Smrg basic_os=solaris2 80614c0a534Smrg ;; 807bdc460c5Smrg j90 | j90-cray) 808bdc460c5Smrg cpu=j90 809bdc460c5Smrg vendor=cray 810bdc460c5Smrg basic_os=${basic_os:-unicos} 81114c0a534Smrg ;; 81214c0a534Smrg iris | iris4d) 813bdc460c5Smrg cpu=mips 814bdc460c5Smrg vendor=sgi 815bdc460c5Smrg case $basic_os in 816bdc460c5Smrg irix*) 81714c0a534Smrg ;; 81814c0a534Smrg *) 819bdc460c5Smrg basic_os=irix4 82014c0a534Smrg ;; 82114c0a534Smrg esac 82214c0a534Smrg ;; 82314c0a534Smrg miniframe) 824bdc460c5Smrg cpu=m68000 825bdc460c5Smrg vendor=convergent 82624047306Smrg ;; 827bdc460c5Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 828bdc460c5Smrg cpu=m68k 829bdc460c5Smrg vendor=atari 830bdc460c5Smrg basic_os=mint 83114c0a534Smrg ;; 83214c0a534Smrg news-3600 | risc-news) 833bdc460c5Smrg cpu=mips 834bdc460c5Smrg vendor=sony 835bdc460c5Smrg basic_os=newsos 836bdc460c5Smrg ;; 837bdc460c5Smrg next | m*-next) 838bdc460c5Smrg cpu=m68k 839bdc460c5Smrg vendor=next 840bdc460c5Smrg case $basic_os in 841bdc460c5Smrg openstep*) 842bdc460c5Smrg ;; 843bdc460c5Smrg nextstep*) 84414c0a534Smrg ;; 845bdc460c5Smrg ns2*) 846bdc460c5Smrg basic_os=nextstep2 84714c0a534Smrg ;; 84814c0a534Smrg *) 849bdc460c5Smrg basic_os=nextstep3 85014c0a534Smrg ;; 85114c0a534Smrg esac 85214c0a534Smrg ;; 85314c0a534Smrg np1) 854bdc460c5Smrg cpu=np1 855bdc460c5Smrg vendor=gould 85614c0a534Smrg ;; 85714c0a534Smrg op50n-* | op60c-*) 858bdc460c5Smrg cpu=hppa1.1 859bdc460c5Smrg vendor=oki 860bdc460c5Smrg basic_os=proelf 86114c0a534Smrg ;; 86214c0a534Smrg pa-hitachi) 863bdc460c5Smrg cpu=hppa1.1 864bdc460c5Smrg vendor=hitachi 865bdc460c5Smrg basic_os=hiuxwe2 866bf2eeab3Smrg ;; 86714c0a534Smrg pbd) 868bdc460c5Smrg cpu=sparc 869bdc460c5Smrg vendor=tti 87014c0a534Smrg ;; 87114c0a534Smrg pbb) 872bdc460c5Smrg cpu=m68k 873bdc460c5Smrg vendor=tti 874bf2eeab3Smrg ;; 875bdc460c5Smrg pc532) 876bdc460c5Smrg cpu=ns32k 877bdc460c5Smrg vendor=pc532 87814c0a534Smrg ;; 87914c0a534Smrg pn) 880bdc460c5Smrg cpu=pn 881bdc460c5Smrg vendor=gould 88214c0a534Smrg ;; 883bdc460c5Smrg power) 884bdc460c5Smrg cpu=power 885bdc460c5Smrg vendor=ibm 88614c0a534Smrg ;; 88714c0a534Smrg ps2) 888bdc460c5Smrg cpu=i386 889bdc460c5Smrg vendor=ibm 89014c0a534Smrg ;; 89114c0a534Smrg rm[46]00) 892bdc460c5Smrg cpu=mips 893bdc460c5Smrg vendor=siemens 89414c0a534Smrg ;; 89514c0a534Smrg rtpc | rtpc-*) 896bdc460c5Smrg cpu=romp 897bdc460c5Smrg vendor=ibm 89814c0a534Smrg ;; 899bdc460c5Smrg sde) 900bdc460c5Smrg cpu=mipsisa32 901bdc460c5Smrg vendor=sde 902bdc460c5Smrg basic_os=${basic_os:-elf} 90314c0a534Smrg ;; 904bdc460c5Smrg simso-wrs) 905bdc460c5Smrg cpu=sparclite 906bdc460c5Smrg vendor=wrs 907bdc460c5Smrg basic_os=vxworks 90814c0a534Smrg ;; 909bdc460c5Smrg tower | tower-32) 910bdc460c5Smrg cpu=m68k 911bdc460c5Smrg vendor=ncr 912bf2eeab3Smrg ;; 913bdc460c5Smrg vpp*|vx|vx-*) 914bdc460c5Smrg cpu=f301 915bdc460c5Smrg vendor=fujitsu 91614c0a534Smrg ;; 917bdc460c5Smrg w65) 918bdc460c5Smrg cpu=w65 919bdc460c5Smrg vendor=wdc 92014c0a534Smrg ;; 921bdc460c5Smrg w89k-*) 922bdc460c5Smrg cpu=hppa1.1 923bdc460c5Smrg vendor=winbond 924bdc460c5Smrg basic_os=proelf 92514c0a534Smrg ;; 926bdc460c5Smrg none) 927bdc460c5Smrg cpu=none 928bdc460c5Smrg vendor=none 929bf2eeab3Smrg ;; 930bdc460c5Smrg leon|leon[3-9]) 931bdc460c5Smrg cpu=sparc 932bdc460c5Smrg vendor=$basic_machine 93314c0a534Smrg ;; 934bdc460c5Smrg leon-*|leon[3-9]-*) 935bdc460c5Smrg cpu=sparc 936bdc460c5Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 93714c0a534Smrg ;; 938bdc460c5Smrg 939bdc460c5Smrg *-*) 940bdc460c5Smrg # shellcheck disable=SC2162 941bdc460c5Smrg saved_IFS=$IFS 942bdc460c5Smrg IFS="-" read cpu vendor <<EOF 943bdc460c5Smrg$basic_machine 944bdc460c5SmrgEOF 945bdc460c5Smrg IFS=$saved_IFS 94614c0a534Smrg ;; 9477015785aSmrg # We use 'pc' rather than 'unknown' 948bdc460c5Smrg # because (1) that's what they normally are, and 949bdc460c5Smrg # (2) the word "unknown" tends to confuse beginning users. 950bdc460c5Smrg i*86 | x86_64) 951bdc460c5Smrg cpu=$basic_machine 952bdc460c5Smrg vendor=pc 95314c0a534Smrg ;; 954bdc460c5Smrg # These rules are duplicated from below for sake of the special case above; 955bdc460c5Smrg # i.e. things that normalized to x86 arches should also default to "pc" 956bdc460c5Smrg pc98) 957bdc460c5Smrg cpu=i386 958bdc460c5Smrg vendor=pc 95914c0a534Smrg ;; 960bdc460c5Smrg x64 | amd64) 961bdc460c5Smrg cpu=x86_64 962bdc460c5Smrg vendor=pc 96314c0a534Smrg ;; 964bdc460c5Smrg # Recognize the basic CPU types without company name. 965bdc460c5Smrg *) 966bdc460c5Smrg cpu=$basic_machine 967bdc460c5Smrg vendor=unknown 96824047306Smrg ;; 969bdc460c5Smrgesac 970bdc460c5Smrg 971bdc460c5Smrgunset -v basic_machine 972bdc460c5Smrg 973bdc460c5Smrg# Decode basic machines in the full and proper CPU-Company form. 974bdc460c5Smrgcase $cpu-$vendor in 975bdc460c5Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 976bdc460c5Smrg # some cases the only manufacturer, in others, it is the most popular. 977bdc460c5Smrg craynv-unknown) 978bdc460c5Smrg vendor=cray 979bdc460c5Smrg basic_os=${basic_os:-unicosmp} 98014c0a534Smrg ;; 981bdc460c5Smrg c90-unknown | c90-cray) 982bdc460c5Smrg vendor=cray 983bdc460c5Smrg basic_os=${Basic_os:-unicos} 98414c0a534Smrg ;; 985bdc460c5Smrg fx80-unknown) 986bdc460c5Smrg vendor=alliant 98714c0a534Smrg ;; 988bdc460c5Smrg romp-unknown) 989bdc460c5Smrg vendor=ibm 99014c0a534Smrg ;; 991bdc460c5Smrg mmix-unknown) 992bdc460c5Smrg vendor=knuth 99314c0a534Smrg ;; 994bdc460c5Smrg microblaze-unknown | microblazeel-unknown) 995bdc460c5Smrg vendor=xilinx 99614c0a534Smrg ;; 997bdc460c5Smrg rs6000-unknown) 998bdc460c5Smrg vendor=ibm 99914c0a534Smrg ;; 1000bdc460c5Smrg vax-unknown) 1001bdc460c5Smrg vendor=dec 100214c0a534Smrg ;; 1003bdc460c5Smrg pdp11-unknown) 1004bdc460c5Smrg vendor=dec 100514c0a534Smrg ;; 1006bdc460c5Smrg we32k-unknown) 1007bdc460c5Smrg vendor=att 100814c0a534Smrg ;; 1009bdc460c5Smrg cydra-unknown) 1010bdc460c5Smrg vendor=cydrome 101114c0a534Smrg ;; 1012bdc460c5Smrg i370-ibm*) 1013bdc460c5Smrg vendor=ibm 101414c0a534Smrg ;; 1015bdc460c5Smrg orion-unknown) 1016bdc460c5Smrg vendor=highlevel 101714c0a534Smrg ;; 1018bdc460c5Smrg xps-unknown | xps100-unknown) 1019bdc460c5Smrg cpu=xps100 1020bdc460c5Smrg vendor=honeywell 102114c0a534Smrg ;; 1022bdc460c5Smrg 1023bdc460c5Smrg # Here we normalize CPU types with a missing or matching vendor 10247015785aSmrg armh-unknown | armh-alt) 10257015785aSmrg cpu=armv7l 10267015785aSmrg vendor=alt 10277015785aSmrg basic_os=${basic_os:-linux-gnueabihf} 10287015785aSmrg ;; 1029bdc460c5Smrg dpx20-unknown | dpx20-bull) 1030bdc460c5Smrg cpu=rs6000 1031bdc460c5Smrg vendor=bull 1032bdc460c5Smrg basic_os=${basic_os:-bosx} 103314c0a534Smrg ;; 1034bdc460c5Smrg 1035bdc460c5Smrg # Here we normalize CPU types irrespective of the vendor 1036bdc460c5Smrg amd64-*) 1037bdc460c5Smrg cpu=x86_64 1038bf2eeab3Smrg ;; 1039bdc460c5Smrg blackfin-*) 1040bdc460c5Smrg cpu=bfin 1041bdc460c5Smrg basic_os=linux 104214c0a534Smrg ;; 1043bdc460c5Smrg c54x-*) 1044bdc460c5Smrg cpu=tic54x 104514c0a534Smrg ;; 1046bdc460c5Smrg c55x-*) 1047bdc460c5Smrg cpu=tic55x 104814c0a534Smrg ;; 1049bdc460c5Smrg c6x-*) 1050bdc460c5Smrg cpu=tic6x 105114c0a534Smrg ;; 1052bdc460c5Smrg e500v[12]-*) 1053bdc460c5Smrg cpu=powerpc 1054bdc460c5Smrg basic_os=${basic_os}"spe" 105514c0a534Smrg ;; 1056bdc460c5Smrg mips3*-*) 1057bdc460c5Smrg cpu=mips64 105814c0a534Smrg ;; 1059bdc460c5Smrg ms1-*) 1060bdc460c5Smrg cpu=mt 106114c0a534Smrg ;; 1062bdc460c5Smrg m68knommu-*) 1063bdc460c5Smrg cpu=m68k 1064bdc460c5Smrg basic_os=linux 106514c0a534Smrg ;; 1066bdc460c5Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1067bdc460c5Smrg cpu=s12z 106814c0a534Smrg ;; 1069bdc460c5Smrg openrisc-*) 1070bdc460c5Smrg cpu=or32 107114c0a534Smrg ;; 1072bdc460c5Smrg parisc-*) 1073bdc460c5Smrg cpu=hppa 1074bdc460c5Smrg basic_os=linux 107514c0a534Smrg ;; 1076bdc460c5Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1077bdc460c5Smrg cpu=i586 107814c0a534Smrg ;; 10797015785aSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1080bdc460c5Smrg cpu=i686 108114c0a534Smrg ;; 1082bdc460c5Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1083bdc460c5Smrg cpu=i686 108414c0a534Smrg ;; 1085bdc460c5Smrg pentium4-*) 1086bdc460c5Smrg cpu=i786 108714c0a534Smrg ;; 1088bdc460c5Smrg pc98-*) 1089bdc460c5Smrg cpu=i386 109014c0a534Smrg ;; 1091bdc460c5Smrg ppc-* | ppcbe-*) 1092bdc460c5Smrg cpu=powerpc 109314c0a534Smrg ;; 1094bdc460c5Smrg ppcle-* | powerpclittle-*) 1095bdc460c5Smrg cpu=powerpcle 109614c0a534Smrg ;; 1097bdc460c5Smrg ppc64-*) 1098bdc460c5Smrg cpu=powerpc64 109924047306Smrg ;; 1100bdc460c5Smrg ppc64le-* | powerpc64little-*) 1101bdc460c5Smrg cpu=powerpc64le 110214c0a534Smrg ;; 1103bdc460c5Smrg sb1-*) 1104bdc460c5Smrg cpu=mipsisa64sb1 110514c0a534Smrg ;; 1106bdc460c5Smrg sb1el-*) 1107bdc460c5Smrg cpu=mipsisa64sb1el 1108bf2eeab3Smrg ;; 1109bdc460c5Smrg sh5e[lb]-*) 1110bdc460c5Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 111114c0a534Smrg ;; 1112bdc460c5Smrg spur-*) 1113bdc460c5Smrg cpu=spur 111414c0a534Smrg ;; 1115bdc460c5Smrg strongarm-* | thumb-*) 1116bdc460c5Smrg cpu=arm 111714c0a534Smrg ;; 1118bdc460c5Smrg tx39-*) 1119bdc460c5Smrg cpu=mipstx39 112014c0a534Smrg ;; 1121bdc460c5Smrg tx39el-*) 1122bdc460c5Smrg cpu=mipstx39el 112314c0a534Smrg ;; 1124bdc460c5Smrg x64-*) 1125bdc460c5Smrg cpu=x86_64 112614c0a534Smrg ;; 1127bdc460c5Smrg xscale-* | xscalee[bl]-*) 1128bdc460c5Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112914c0a534Smrg ;; 11307015785aSmrg arm64-* | aarch64le-*) 1131bdc460c5Smrg cpu=aarch64 113214c0a534Smrg ;; 1133bdc460c5Smrg 1134bdc460c5Smrg # Recognize the canonical CPU Types that limit and/or modify the 1135bdc460c5Smrg # company names they are paired with. 1136bdc460c5Smrg cr16-*) 1137bdc460c5Smrg basic_os=${basic_os:-elf} 113814c0a534Smrg ;; 1139bdc460c5Smrg crisv32-* | etraxfs*-*) 1140bdc460c5Smrg cpu=crisv32 1141bdc460c5Smrg vendor=axis 114214c0a534Smrg ;; 1143bdc460c5Smrg cris-* | etrax*-*) 1144bdc460c5Smrg cpu=cris 1145bdc460c5Smrg vendor=axis 114614c0a534Smrg ;; 1147bdc460c5Smrg crx-*) 1148bdc460c5Smrg basic_os=${basic_os:-elf} 114914c0a534Smrg ;; 1150bdc460c5Smrg neo-tandem) 1151bdc460c5Smrg cpu=neo 1152bdc460c5Smrg vendor=tandem 115314c0a534Smrg ;; 1154bdc460c5Smrg nse-tandem) 1155bdc460c5Smrg cpu=nse 1156bdc460c5Smrg vendor=tandem 115714c0a534Smrg ;; 1158bdc460c5Smrg nsr-tandem) 1159bdc460c5Smrg cpu=nsr 1160bdc460c5Smrg vendor=tandem 116114c0a534Smrg ;; 1162bdc460c5Smrg nsv-tandem) 1163bdc460c5Smrg cpu=nsv 1164bdc460c5Smrg vendor=tandem 116514c0a534Smrg ;; 1166bdc460c5Smrg nsx-tandem) 1167bdc460c5Smrg cpu=nsx 1168bdc460c5Smrg vendor=tandem 116914c0a534Smrg ;; 1170bdc460c5Smrg mipsallegrexel-sony) 1171bdc460c5Smrg cpu=mipsallegrexel 1172bdc460c5Smrg vendor=sony 117314c0a534Smrg ;; 1174bdc460c5Smrg tile*-*) 1175bdc460c5Smrg basic_os=${basic_os:-linux-gnu} 117614c0a534Smrg ;; 1177bdc460c5Smrg 117814c0a534Smrg *) 1179bdc460c5Smrg # Recognize the canonical CPU types that are allowed with any 1180bdc460c5Smrg # company name. 1181bdc460c5Smrg case $cpu in 1182bdc460c5Smrg 1750a | 580 \ 1183bdc460c5Smrg | a29k \ 11847015785aSmrg | aarch64 | aarch64_be | aarch64c | arm64ec \ 1185bdc460c5Smrg | abacus \ 1186bdc460c5Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1187bdc460c5Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1188bdc460c5Smrg | alphapca5[67] | alpha64pca5[67] \ 1189bdc460c5Smrg | am33_2.0 \ 1190bdc460c5Smrg | amdgcn \ 1191bdc460c5Smrg | arc | arceb | arc32 | arc64 \ 1192bdc460c5Smrg | arm | arm[lb]e | arme[lb] | armv* \ 1193bdc460c5Smrg | avr | avr32 \ 1194bdc460c5Smrg | asmjs \ 1195bdc460c5Smrg | ba \ 1196bdc460c5Smrg | be32 | be64 \ 1197bdc460c5Smrg | bfin | bpf | bs2000 \ 1198bdc460c5Smrg | c[123]* | c30 | [cjt]90 | c4x \ 1199bdc460c5Smrg | c8051 | clipper | craynv | csky | cydra \ 1200bdc460c5Smrg | d10v | d30v | dlx | dsp16xx \ 1201bdc460c5Smrg | e2k | elxsi | epiphany \ 1202bdc460c5Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 12037015785aSmrg | javascript \ 1204bdc460c5Smrg | h8300 | h8500 \ 1205bdc460c5Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1206bdc460c5Smrg | hexagon \ 1207bdc460c5Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1208bdc460c5Smrg | ip2k | iq2000 \ 1209bdc460c5Smrg | k1om \ 12107015785aSmrg | kvx \ 1211bdc460c5Smrg | le32 | le64 \ 1212bdc460c5Smrg | lm32 \ 12137015785aSmrg | loongarch32 | loongarch64 \ 1214bdc460c5Smrg | m32c | m32r | m32rle \ 1215bdc460c5Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1216bdc460c5Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1217bdc460c5Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1218bdc460c5Smrg | microblaze | microblazeel \ 12197015785aSmrg | mips* \ 1220bdc460c5Smrg | mmix \ 1221bdc460c5Smrg | mn10200 | mn10300 \ 1222bdc460c5Smrg | moxie \ 1223bdc460c5Smrg | mt \ 1224bdc460c5Smrg | msp430 \ 12257015785aSmrg | nanomips* \ 1226bdc460c5Smrg | nds32 | nds32le | nds32be \ 1227bdc460c5Smrg | nfp \ 1228bdc460c5Smrg | nios | nios2 | nios2eb | nios2el \ 1229bdc460c5Smrg | none | np1 | ns16k | ns32k | nvptx \ 1230bdc460c5Smrg | open8 \ 1231bdc460c5Smrg | or1k* \ 1232bdc460c5Smrg | or32 \ 1233bdc460c5Smrg | orion \ 1234bdc460c5Smrg | picochip \ 1235bdc460c5Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1236bdc460c5Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1237bdc460c5Smrg | pru \ 1238bdc460c5Smrg | pyramid \ 1239bdc460c5Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1240bdc460c5Smrg | rl78 | romp | rs6000 | rx \ 1241bdc460c5Smrg | s390 | s390x \ 1242bdc460c5Smrg | score \ 1243bdc460c5Smrg | sh | shl \ 1244bdc460c5Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1245bdc460c5Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1246bdc460c5Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1247bdc460c5Smrg | sparclite \ 1248bdc460c5Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1249bdc460c5Smrg | spu \ 1250bdc460c5Smrg | tahoe \ 1251bdc460c5Smrg | thumbv7* \ 1252bdc460c5Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1253bdc460c5Smrg | tron \ 1254bdc460c5Smrg | ubicom32 \ 1255bdc460c5Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1256bdc460c5Smrg | vax \ 12577015785aSmrg | vc4 \ 1258bdc460c5Smrg | visium \ 1259bdc460c5Smrg | w65 \ 1260bdc460c5Smrg | wasm32 | wasm64 \ 1261bdc460c5Smrg | we32k \ 1262bdc460c5Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1263bdc460c5Smrg | xstormy16 | xtensa* \ 1264bdc460c5Smrg | ymp \ 1265bdc460c5Smrg | z8k | z80) 1266bdc460c5Smrg ;; 1267bdc460c5Smrg 1268bdc460c5Smrg *) 12697015785aSmrg echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 1270bdc460c5Smrg exit 1 1271bdc460c5Smrg ;; 1272bdc460c5Smrg esac 127314c0a534Smrg ;; 127414c0a534Smrgesac 127514c0a534Smrg 127614c0a534Smrg# Here we canonicalize certain aliases for manufacturers. 1277bdc460c5Smrgcase $vendor in 1278bdc460c5Smrg digital*) 1279bdc460c5Smrg vendor=dec 128014c0a534Smrg ;; 1281bdc460c5Smrg commodore*) 1282bdc460c5Smrg vendor=cbm 128314c0a534Smrg ;; 128414c0a534Smrg *) 128514c0a534Smrg ;; 128614c0a534Smrgesac 128714c0a534Smrg 128814c0a534Smrg# Decode manufacturer-specific aliases for certain operating systems. 128914c0a534Smrg 12907015785aSmrgif test x"$basic_os" != x 129114c0a534Smrgthen 1292bdc460c5Smrg 12937015785aSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1294bdc460c5Smrg# set os. 12957015785aSmrgobj= 1296bdc460c5Smrgcase $basic_os in 1297bdc460c5Smrg gnu/linux*) 1298bdc460c5Smrg kernel=linux 1299bdc460c5Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1300bdc460c5Smrg ;; 1301bdc460c5Smrg os2-emx) 1302bdc460c5Smrg kernel=os2 1303bdc460c5Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1304bdc460c5Smrg ;; 1305bdc460c5Smrg nto-qnx*) 1306bdc460c5Smrg kernel=nto 1307bdc460c5Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1308bdc460c5Smrg ;; 1309bdc460c5Smrg *-*) 1310bdc460c5Smrg # shellcheck disable=SC2162 1311bdc460c5Smrg saved_IFS=$IFS 1312bdc460c5Smrg IFS="-" read kernel os <<EOF 1313bdc460c5Smrg$basic_os 1314bdc460c5SmrgEOF 1315bdc460c5Smrg IFS=$saved_IFS 1316bdc460c5Smrg ;; 1317bdc460c5Smrg # Default OS when just kernel was specified 1318bdc460c5Smrg nto*) 1319bdc460c5Smrg kernel=nto 1320bdc460c5Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1321bdc460c5Smrg ;; 1322bdc460c5Smrg linux*) 1323bdc460c5Smrg kernel=linux 1324bdc460c5Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1325bdc460c5Smrg ;; 13267015785aSmrg managarm*) 13277015785aSmrg kernel=managarm 13287015785aSmrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 13297015785aSmrg ;; 1330bdc460c5Smrg *) 1331bdc460c5Smrg kernel= 1332bdc460c5Smrg os=$basic_os 1333bdc460c5Smrg ;; 1334bdc460c5Smrgesac 1335bdc460c5Smrg 1336bdc460c5Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1337bdc460c5Smrg# etc.) 133814c0a534Smrgcase $os in 1339bdc460c5Smrg # First match some system type aliases that might get confused 1340bdc460c5Smrg # with valid system types. 1341bdc460c5Smrg # solaris* is a basic system type, with this one exception. 1342bdc460c5Smrg auroraux) 1343bdc460c5Smrg os=auroraux 1344576bae58Smrg ;; 1345bdc460c5Smrg bluegene*) 1346bdc460c5Smrg os=cnk 134714c0a534Smrg ;; 1348bdc460c5Smrg solaris1 | solaris1.*) 1349bdc460c5Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 135014c0a534Smrg ;; 1351bdc460c5Smrg solaris) 1352bdc460c5Smrg os=solaris2 135314c0a534Smrg ;; 1354bdc460c5Smrg unixware*) 1355bdc460c5Smrg os=sysv4.2uw 135614c0a534Smrg ;; 1357bdc460c5Smrg # es1800 is here to avoid being matched by es* (a different OS) 1358bdc460c5Smrg es1800*) 1359bdc460c5Smrg os=ose 136014c0a534Smrg ;; 1361bdc460c5Smrg # Some version numbers need modification 1362bdc460c5Smrg chorusos*) 1363bdc460c5Smrg os=chorusos 136414c0a534Smrg ;; 1365bdc460c5Smrg isc) 1366bdc460c5Smrg os=isc2.2 136714c0a534Smrg ;; 1368bdc460c5Smrg sco6) 1369bdc460c5Smrg os=sco5v6 137014c0a534Smrg ;; 1371bdc460c5Smrg sco5) 1372bdc460c5Smrg os=sco3.2v5 137314c0a534Smrg ;; 1374bdc460c5Smrg sco4) 1375bdc460c5Smrg os=sco3.2v4 137614c0a534Smrg ;; 1377bdc460c5Smrg sco3.2.[4-9]*) 1378bdc460c5Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 137914c0a534Smrg ;; 1380bdc460c5Smrg sco*v* | scout) 1381bdc460c5Smrg # Don't match below 138214c0a534Smrg ;; 1383bdc460c5Smrg sco*) 1384bdc460c5Smrg os=sco3.2v2 138514c0a534Smrg ;; 1386bdc460c5Smrg psos*) 1387bdc460c5Smrg os=psos 138814c0a534Smrg ;; 1389bdc460c5Smrg qnx*) 1390bdc460c5Smrg os=qnx 139114c0a534Smrg ;; 1392bdc460c5Smrg hiux*) 1393bdc460c5Smrg os=hiuxwe2 139414c0a534Smrg ;; 1395bdc460c5Smrg lynx*178) 1396bdc460c5Smrg os=lynxos178 139714c0a534Smrg ;; 1398bdc460c5Smrg lynx*5) 1399bdc460c5Smrg os=lynxos5 140014c0a534Smrg ;; 1401bdc460c5Smrg lynxos*) 1402bdc460c5Smrg # don't get caught up in next wildcard 140314c0a534Smrg ;; 1404bdc460c5Smrg lynx*) 1405bdc460c5Smrg os=lynxos 140614c0a534Smrg ;; 1407bdc460c5Smrg mac[0-9]*) 1408bdc460c5Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 140914c0a534Smrg ;; 1410bdc460c5Smrg opened*) 1411bdc460c5Smrg os=openedition 141214c0a534Smrg ;; 1413bdc460c5Smrg os400*) 1414bdc460c5Smrg os=os400 141514c0a534Smrg ;; 1416bdc460c5Smrg sunos5*) 1417bdc460c5Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 141814c0a534Smrg ;; 1419bdc460c5Smrg sunos6*) 1420bdc460c5Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 142114c0a534Smrg ;; 1422bdc460c5Smrg wince*) 1423bdc460c5Smrg os=wince 142414c0a534Smrg ;; 1425bdc460c5Smrg utek*) 1426bdc460c5Smrg os=bsd 142714c0a534Smrg ;; 1428bdc460c5Smrg dynix*) 1429bdc460c5Smrg os=bsd 143014c0a534Smrg ;; 1431bdc460c5Smrg acis*) 1432bdc460c5Smrg os=aos 143314c0a534Smrg ;; 1434bdc460c5Smrg atheos*) 1435bdc460c5Smrg os=atheos 143614c0a534Smrg ;; 1437bdc460c5Smrg syllable*) 1438bdc460c5Smrg os=syllable 143914c0a534Smrg ;; 1440bdc460c5Smrg 386bsd) 1441bdc460c5Smrg os=bsd 144214c0a534Smrg ;; 1443bdc460c5Smrg ctix* | uts*) 1444bdc460c5Smrg os=sysv 144514c0a534Smrg ;; 1446bdc460c5Smrg nova*) 1447bdc460c5Smrg os=rtmk-nova 144814c0a534Smrg ;; 1449bdc460c5Smrg ns2) 1450bdc460c5Smrg os=nextstep2 145114c0a534Smrg ;; 1452bdc460c5Smrg # Preserve the version number of sinix5. 1453bdc460c5Smrg sinix5.*) 1454bdc460c5Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 145514c0a534Smrg ;; 1456bdc460c5Smrg sinix*) 1457bdc460c5Smrg os=sysv4 145814c0a534Smrg ;; 1459bdc460c5Smrg tpf*) 1460bdc460c5Smrg os=tpf 146114c0a534Smrg ;; 1462bdc460c5Smrg triton*) 1463bdc460c5Smrg os=sysv3 146414c0a534Smrg ;; 1465bdc460c5Smrg oss*) 1466bdc460c5Smrg os=sysv3 146714c0a534Smrg ;; 1468bdc460c5Smrg svr4*) 1469bdc460c5Smrg os=sysv4 147014c0a534Smrg ;; 1471bdc460c5Smrg svr3) 1472bdc460c5Smrg os=sysv3 147314c0a534Smrg ;; 1474bdc460c5Smrg sysvr4) 1475bdc460c5Smrg os=sysv4 147614c0a534Smrg ;; 1477bdc460c5Smrg ose*) 1478bdc460c5Smrg os=ose 147914c0a534Smrg ;; 1480bdc460c5Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1481bdc460c5Smrg os=mint 1482bf2eeab3Smrg ;; 1483bdc460c5Smrg dicos*) 1484bdc460c5Smrg os=dicos 148524047306Smrg ;; 1486bdc460c5Smrg pikeos*) 1487bdc460c5Smrg # Until real need of OS specific support for 1488bdc460c5Smrg # particular features comes up, bare metal 1489bdc460c5Smrg # configurations are quite functional. 1490bdc460c5Smrg case $cpu in 1491bdc460c5Smrg arm*) 1492bdc460c5Smrg os=eabi 1493bdc460c5Smrg ;; 1494bdc460c5Smrg *) 14957015785aSmrg os= 14967015785aSmrg obj=elf 1497bdc460c5Smrg ;; 1498bdc460c5Smrg esac 149914c0a534Smrg ;; 15007015785aSmrg aout* | coff* | elf* | pe*) 15017015785aSmrg # These are machine code file formats, not OSes 15027015785aSmrg obj=$os 15037015785aSmrg os= 15047015785aSmrg ;; 150514c0a534Smrg *) 1506bdc460c5Smrg # No normalization, but not necessarily accepted, that comes below. 150714c0a534Smrg ;; 150814c0a534Smrgesac 1509bdc460c5Smrg 151014c0a534Smrgelse 151114c0a534Smrg 151214c0a534Smrg# Here we handle the default operating systems that come with various machines. 151314c0a534Smrg# The value should be what the vendor currently ships out the door with their 151414c0a534Smrg# machine or put another way, the most popular os provided with the machine. 151514c0a534Smrg 151614c0a534Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 151714c0a534Smrg# "-sun"), then you have to tell the case statement up towards the top 151814c0a534Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 151914c0a534Smrg# will signal an error saying that MANUFACTURER isn't an operating 152014c0a534Smrg# system, and we'll never get to this point. 152114c0a534Smrg 1522bdc460c5Smrgkernel= 15237015785aSmrgobj= 1524bdc460c5Smrgcase $cpu-$vendor in 152524047306Smrg score-*) 15267015785aSmrg os= 15277015785aSmrg obj=elf 1528bf2eeab3Smrg ;; 152924047306Smrg spu-*) 15307015785aSmrg os= 15317015785aSmrg obj=elf 1532bf2eeab3Smrg ;; 153314c0a534Smrg *-acorn) 1534bdc460c5Smrg os=riscix1.2 153514c0a534Smrg ;; 153614c0a534Smrg arm*-rebel) 1537bdc460c5Smrg kernel=linux 1538bdc460c5Smrg os=gnu 153914c0a534Smrg ;; 154014c0a534Smrg arm*-semi) 15417015785aSmrg os= 15427015785aSmrg obj=aout 154314c0a534Smrg ;; 154424047306Smrg c4x-* | tic4x-*) 15457015785aSmrg os= 15467015785aSmrg obj=coff 154724047306Smrg ;; 154824047306Smrg c8051-*) 15497015785aSmrg os= 15507015785aSmrg obj=elf 1551bdc460c5Smrg ;; 1552bdc460c5Smrg clipper-intergraph) 1553bdc460c5Smrg os=clix 155424047306Smrg ;; 155524047306Smrg hexagon-*) 15567015785aSmrg os= 15577015785aSmrg obj=elf 1558bf2eeab3Smrg ;; 1559576bae58Smrg tic54x-*) 15607015785aSmrg os= 15617015785aSmrg obj=coff 1562576bae58Smrg ;; 1563576bae58Smrg tic55x-*) 15647015785aSmrg os= 15657015785aSmrg obj=coff 1566576bae58Smrg ;; 1567576bae58Smrg tic6x-*) 15687015785aSmrg os= 15697015785aSmrg obj=coff 1570576bae58Smrg ;; 157114c0a534Smrg # This must come before the *-dec entry. 157214c0a534Smrg pdp10-*) 1573bdc460c5Smrg os=tops20 157414c0a534Smrg ;; 157514c0a534Smrg pdp11-*) 1576bdc460c5Smrg os=none 157714c0a534Smrg ;; 157814c0a534Smrg *-dec | vax-*) 1579bdc460c5Smrg os=ultrix4.2 158014c0a534Smrg ;; 158114c0a534Smrg m68*-apollo) 1582bdc460c5Smrg os=domain 158314c0a534Smrg ;; 158414c0a534Smrg i386-sun) 1585bdc460c5Smrg os=sunos4.0.2 158614c0a534Smrg ;; 158714c0a534Smrg m68000-sun) 1588bdc460c5Smrg os=sunos3 158914c0a534Smrg ;; 159014c0a534Smrg m68*-cisco) 15917015785aSmrg os= 15927015785aSmrg obj=aout 159314c0a534Smrg ;; 159424047306Smrg mep-*) 15957015785aSmrg os= 15967015785aSmrg obj=elf 1597bf2eeab3Smrg ;; 159814c0a534Smrg mips*-cisco) 15997015785aSmrg os= 16007015785aSmrg obj=elf 160114c0a534Smrg ;; 16027015785aSmrg mips*-*|nanomips*-*) 16037015785aSmrg os= 16047015785aSmrg obj=elf 160514c0a534Smrg ;; 160614c0a534Smrg or32-*) 16077015785aSmrg os= 16087015785aSmrg obj=coff 160914c0a534Smrg ;; 161014c0a534Smrg *-tti) # must be before sparc entry or we get the wrong os. 1611bdc460c5Smrg os=sysv3 161214c0a534Smrg ;; 161314c0a534Smrg sparc-* | *-sun) 1614bdc460c5Smrg os=sunos4.1.1 161514c0a534Smrg ;; 1616bdc460c5Smrg pru-*) 16177015785aSmrg os= 16187015785aSmrg obj=elf 161914c0a534Smrg ;; 1620bdc460c5Smrg *-be) 1621bdc460c5Smrg os=beos 162214c0a534Smrg ;; 162314c0a534Smrg *-ibm) 1624bdc460c5Smrg os=aix 162514c0a534Smrg ;; 162624047306Smrg *-knuth) 1627bdc460c5Smrg os=mmixware 162814c0a534Smrg ;; 162914c0a534Smrg *-wec) 1630bdc460c5Smrg os=proelf 163114c0a534Smrg ;; 163214c0a534Smrg *-winbond) 1633bdc460c5Smrg os=proelf 163414c0a534Smrg ;; 163514c0a534Smrg *-oki) 1636bdc460c5Smrg os=proelf 163714c0a534Smrg ;; 163814c0a534Smrg *-hp) 1639bdc460c5Smrg os=hpux 164014c0a534Smrg ;; 164114c0a534Smrg *-hitachi) 1642bdc460c5Smrg os=hiux 164314c0a534Smrg ;; 164414c0a534Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1645bdc460c5Smrg os=sysv 164614c0a534Smrg ;; 164714c0a534Smrg *-cbm) 1648bdc460c5Smrg os=amigaos 164914c0a534Smrg ;; 165014c0a534Smrg *-dg) 1651bdc460c5Smrg os=dgux 165214c0a534Smrg ;; 165314c0a534Smrg *-dolphin) 1654bdc460c5Smrg os=sysv3 165514c0a534Smrg ;; 165614c0a534Smrg m68k-ccur) 1657bdc460c5Smrg os=rtu 165814c0a534Smrg ;; 165914c0a534Smrg m88k-omron*) 1660bdc460c5Smrg os=luna 166114c0a534Smrg ;; 1662bdc460c5Smrg *-next) 1663bdc460c5Smrg os=nextstep 166414c0a534Smrg ;; 166514c0a534Smrg *-sequent) 1666bdc460c5Smrg os=ptx 166714c0a534Smrg ;; 166814c0a534Smrg *-crds) 1669bdc460c5Smrg os=unos 167014c0a534Smrg ;; 167114c0a534Smrg *-ns) 1672bdc460c5Smrg os=genix 167314c0a534Smrg ;; 167414c0a534Smrg i370-*) 1675bdc460c5Smrg os=mvs 167614c0a534Smrg ;; 167714c0a534Smrg *-gould) 1678bdc460c5Smrg os=sysv 167914c0a534Smrg ;; 168014c0a534Smrg *-highlevel) 1681bdc460c5Smrg os=bsd 168214c0a534Smrg ;; 168314c0a534Smrg *-encore) 1684bdc460c5Smrg os=bsd 168514c0a534Smrg ;; 168614c0a534Smrg *-sgi) 1687bdc460c5Smrg os=irix 168814c0a534Smrg ;; 168914c0a534Smrg *-siemens) 1690bdc460c5Smrg os=sysv4 169114c0a534Smrg ;; 169214c0a534Smrg *-masscomp) 1693bdc460c5Smrg os=rtu 169414c0a534Smrg ;; 169514c0a534Smrg f30[01]-fujitsu | f700-fujitsu) 1696bdc460c5Smrg os=uxpv 169714c0a534Smrg ;; 169814c0a534Smrg *-rom68k) 16997015785aSmrg os= 17007015785aSmrg obj=coff 170114c0a534Smrg ;; 170214c0a534Smrg *-*bug) 17037015785aSmrg os= 17047015785aSmrg obj=coff 170514c0a534Smrg ;; 170614c0a534Smrg *-apple) 1707bdc460c5Smrg os=macos 170814c0a534Smrg ;; 170914c0a534Smrg *-atari*) 1710bdc460c5Smrg os=mint 1711bdc460c5Smrg ;; 1712bdc460c5Smrg *-wrs) 1713bdc460c5Smrg os=vxworks 171414c0a534Smrg ;; 171514c0a534Smrg *) 1716bdc460c5Smrg os=none 171714c0a534Smrg ;; 171814c0a534Smrgesac 1719bdc460c5Smrg 172014c0a534Smrgfi 172114c0a534Smrg 17227015785aSmrg# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ). 17237015785aSmrg 1724bdc460c5Smrgcase $os in 1725bdc460c5Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17267015785aSmrg llvm* | musl* | newlib* | relibc* | uclibc*) 1727bdc460c5Smrg ;; 1728bdc460c5Smrg # Likewise for "kernel-abi" 1729bdc460c5Smrg eabi* | gnueabi*) 1730bdc460c5Smrg ;; 1731bdc460c5Smrg # VxWorks passes extra cpu info in the 4th filed. 1732bdc460c5Smrg simlinux | simwindows | spe) 1733bdc460c5Smrg ;; 17347015785aSmrg # See `case $cpu-$os` validation below 17357015785aSmrg ghcjs) 17367015785aSmrg ;; 1737bdc460c5Smrg # Now accept the basic system types. 1738bdc460c5Smrg # The portable systems comes first. 1739bdc460c5Smrg # Each alternative MUST end in a * to match a version number. 1740bdc460c5Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1741bdc460c5Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1742bdc460c5Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1743bdc460c5Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1744bdc460c5Smrg | hiux* | abug | nacl* | netware* | windows* \ 17457015785aSmrg | os9* | macos* | osx* | ios* | tvos* | watchos* \ 1746bdc460c5Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1747bdc460c5Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1748bdc460c5Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1749bdc460c5Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1750bdc460c5Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1751bdc460c5Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1752bdc460c5Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1753bdc460c5Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17547015785aSmrg | bosx* | nextstep* | cxux* | oabi* \ 17557015785aSmrg | ptx* | ecoff* | winnt* | domain* | vsta* \ 1756bdc460c5Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1757bdc460c5Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17587015785aSmrg | cygwin* | msys* | moss* | proelf* | rtems* \ 1759bdc460c5Smrg | midipix* | mingw32* | mingw64* | mint* \ 1760bdc460c5Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1761bdc460c5Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1762bdc460c5Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1763bdc460c5Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1764bdc460c5Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1765bdc460c5Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1766bdc460c5Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1767bdc460c5Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1768bdc460c5Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1769bdc460c5Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17707015785aSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 17717015785aSmrg | fiwix* | mlibc* | cos* | mbr* | ironclad* ) 1772bdc460c5Smrg ;; 1773bdc460c5Smrg # This one is extra strict with allowed versions 1774bdc460c5Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1775bdc460c5Smrg # Don't forget version if it is 3.2v4 or newer. 1776bdc460c5Smrg ;; 17777015785aSmrg # This refers to builds using the UEFI calling convention 17787015785aSmrg # (which depends on the architecture) and PE file format. 17797015785aSmrg # Note that this is both a different calling convention and 17807015785aSmrg # different file format than that of GNU-EFI 17817015785aSmrg # (x86_64-w64-mingw32). 17827015785aSmrg uefi) 17837015785aSmrg ;; 1784bdc460c5Smrg none) 1785bdc460c5Smrg ;; 17867015785aSmrg kernel* | msvc* ) 17877015785aSmrg # Restricted further below 17887015785aSmrg ;; 17897015785aSmrg '') 17907015785aSmrg if test x"$obj" = x 17917015785aSmrg then 17927015785aSmrg echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2 17937015785aSmrg fi 17947015785aSmrg ;; 1795bdc460c5Smrg *) 17967015785aSmrg echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 17977015785aSmrg exit 1 17987015785aSmrg ;; 17997015785aSmrgesac 18007015785aSmrg 18017015785aSmrgcase $obj in 18027015785aSmrg aout* | coff* | elf* | pe*) 18037015785aSmrg ;; 18047015785aSmrg '') 18057015785aSmrg # empty is fine 18067015785aSmrg ;; 18077015785aSmrg *) 18087015785aSmrg echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 18097015785aSmrg exit 1 18107015785aSmrg ;; 18117015785aSmrgesac 18127015785aSmrg 18137015785aSmrg# Here we handle the constraint that a (synthetic) cpu and os are 18147015785aSmrg# valid only in combination with each other and nowhere else. 18157015785aSmrgcase $cpu-$os in 18167015785aSmrg # The "javascript-unknown-ghcjs" triple is used by GHC; we 18177015785aSmrg # accept it here in order to tolerate that, but reject any 18187015785aSmrg # variations. 18197015785aSmrg javascript-ghcjs) 18207015785aSmrg ;; 18217015785aSmrg javascript-* | *-ghcjs) 18227015785aSmrg echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 1823bdc460c5Smrg exit 1 1824bdc460c5Smrg ;; 1825bdc460c5Smrgesac 1826bdc460c5Smrg 1827bdc460c5Smrg# As a final step for OS-related things, validate the OS-kernel combination 1828bdc460c5Smrg# (given a valid OS), if there is a kernel. 18297015785aSmrgcase $kernel-$os-$obj in 18307015785aSmrg linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ 18317015785aSmrg | linux-mlibc*- | linux-musl*- | linux-newlib*- \ 18327015785aSmrg | linux-relibc*- | linux-uclibc*- ) 18337015785aSmrg ;; 18347015785aSmrg uclinux-uclibc*- ) 18357015785aSmrg ;; 18367015785aSmrg managarm-mlibc*- | managarm-kernel*- ) 1837bdc460c5Smrg ;; 18387015785aSmrg windows*-msvc*-) 1839bdc460c5Smrg ;; 18407015785aSmrg -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ 18417015785aSmrg | -uclibc*- ) 1842bdc460c5Smrg # These are just libc implementations, not actual OSes, and thus 1843bdc460c5Smrg # require a kernel. 18447015785aSmrg echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 1845bdc460c5Smrg exit 1 1846bdc460c5Smrg ;; 18477015785aSmrg -kernel*- ) 18487015785aSmrg echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 18497015785aSmrg exit 1 1850bdc460c5Smrg ;; 18517015785aSmrg *-kernel*- ) 18527015785aSmrg echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 18537015785aSmrg exit 1 1854bdc460c5Smrg ;; 18557015785aSmrg *-msvc*- ) 18567015785aSmrg echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 18577015785aSmrg exit 1 1858bdc460c5Smrg ;; 18597015785aSmrg kfreebsd*-gnu*- | kopensolaris*-gnu*-) 18607015785aSmrg ;; 18617015785aSmrg vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) 18627015785aSmrg ;; 18637015785aSmrg nto-qnx*-) 18647015785aSmrg ;; 18657015785aSmrg os2-emx-) 1866bdc460c5Smrg ;; 18677015785aSmrg *-eabi*- | *-gnueabi*-) 1868bdc460c5Smrg ;; 18697015785aSmrg none--*) 18707015785aSmrg # None (no kernel, i.e. freestanding / bare metal), 18717015785aSmrg # can be paired with an machine code file format 18727015785aSmrg ;; 18737015785aSmrg -*-) 1874bdc460c5Smrg # Blank kernel with real OS is always fine. 1875bdc460c5Smrg ;; 18767015785aSmrg --*) 18777015785aSmrg # Blank kernel and OS with real machine code file format is always fine. 18787015785aSmrg ;; 18797015785aSmrg *-*-*) 18807015785aSmrg echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 1881bdc460c5Smrg exit 1 1882bdc460c5Smrg ;; 1883bdc460c5Smrgesac 1884bdc460c5Smrg 188514c0a534Smrg# Here we handle the case where we know the os, and the CPU type, but not the 188614c0a534Smrg# manufacturer. We pick the logical manufacturer. 1887bdc460c5Smrgcase $vendor in 1888bdc460c5Smrg unknown) 1889bdc460c5Smrg case $cpu-$os in 1890bdc460c5Smrg *-riscix*) 189114c0a534Smrg vendor=acorn 189214c0a534Smrg ;; 1893bdc460c5Smrg *-sunos*) 189414c0a534Smrg vendor=sun 189514c0a534Smrg ;; 1896bdc460c5Smrg *-cnk* | *-aix*) 189714c0a534Smrg vendor=ibm 189814c0a534Smrg ;; 1899bdc460c5Smrg *-beos*) 190014c0a534Smrg vendor=be 190114c0a534Smrg ;; 1902bdc460c5Smrg *-hpux*) 190314c0a534Smrg vendor=hp 190414c0a534Smrg ;; 1905bdc460c5Smrg *-mpeix*) 190614c0a534Smrg vendor=hp 190714c0a534Smrg ;; 1908bdc460c5Smrg *-hiux*) 190914c0a534Smrg vendor=hitachi 191014c0a534Smrg ;; 1911bdc460c5Smrg *-unos*) 191214c0a534Smrg vendor=crds 191314c0a534Smrg ;; 1914bdc460c5Smrg *-dgux*) 191514c0a534Smrg vendor=dg 191614c0a534Smrg ;; 1917bdc460c5Smrg *-luna*) 191814c0a534Smrg vendor=omron 191914c0a534Smrg ;; 1920bdc460c5Smrg *-genix*) 192114c0a534Smrg vendor=ns 192214c0a534Smrg ;; 1923bdc460c5Smrg *-clix*) 1924bdc460c5Smrg vendor=intergraph 1925bdc460c5Smrg ;; 1926bdc460c5Smrg *-mvs* | *-opened*) 1927bdc460c5Smrg vendor=ibm 1928bdc460c5Smrg ;; 1929bdc460c5Smrg *-os400*) 193014c0a534Smrg vendor=ibm 193114c0a534Smrg ;; 1932bdc460c5Smrg s390-* | s390x-*) 193314c0a534Smrg vendor=ibm 193414c0a534Smrg ;; 1935bdc460c5Smrg *-ptx*) 193614c0a534Smrg vendor=sequent 193714c0a534Smrg ;; 1938bdc460c5Smrg *-tpf*) 193914c0a534Smrg vendor=ibm 194014c0a534Smrg ;; 1941bdc460c5Smrg *-vxsim* | *-vxworks* | *-windiss*) 194214c0a534Smrg vendor=wrs 194314c0a534Smrg ;; 1944bdc460c5Smrg *-aux*) 194514c0a534Smrg vendor=apple 194614c0a534Smrg ;; 1947bdc460c5Smrg *-hms*) 194814c0a534Smrg vendor=hitachi 194914c0a534Smrg ;; 1950bdc460c5Smrg *-mpw* | *-macos*) 195114c0a534Smrg vendor=apple 195214c0a534Smrg ;; 1953bdc460c5Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 195414c0a534Smrg vendor=atari 195514c0a534Smrg ;; 1956bdc460c5Smrg *-vos*) 195714c0a534Smrg vendor=stratus 195814c0a534Smrg ;; 195914c0a534Smrg esac 196014c0a534Smrg ;; 196114c0a534Smrgesac 196214c0a534Smrg 19637015785aSmrgecho "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" 196414c0a534Smrgexit 196514c0a534Smrg 196614c0a534Smrg# Local variables: 1967bdc460c5Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 196814c0a534Smrg# time-stamp-start: "timestamp='" 196914c0a534Smrg# time-stamp-format: "%:y-%02m-%02d" 197014c0a534Smrg# time-stamp-end: "'" 197114c0a534Smrg# End: 1972