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