1692f60a7Smrg#! /bin/sh 2692f60a7Smrg# Configuration validation subroutine script. 3efb46889Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 4692f60a7Smrg 5efb46889Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6efb46889Smrg 7efb46889Smrgtimestamp='2023-01-21' 8692f60a7Smrg 9eaa3dbe0Smrg# This file is free software; you can redistribute it and/or modify it 10eaa3dbe0Smrg# under the terms of the GNU General Public License as published by 11efb46889Smrg# the Free Software Foundation, either version 3 of the License, or 12692f60a7Smrg# (at your option) any later version. 13692f60a7Smrg# 14eaa3dbe0Smrg# This program is distributed in the hope that it will be useful, but 15eaa3dbe0Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16eaa3dbe0Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17eaa3dbe0Smrg# General Public License for more details. 18692f60a7Smrg# 19692f60a7Smrg# You should have received a copy of the GNU General Public License 20efb46889Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 2154569438Smrg# 22692f60a7Smrg# As a special exception to the GNU General Public License, if you 23692f60a7Smrg# distribute this file as part of a program that contains a 24692f60a7Smrg# configuration script generated by Autoconf, you may include it under 25eaa3dbe0Smrg# the same distribution terms that you use for the rest of that 26eaa3dbe0Smrg# program. This Exception is an additional permission under section 7 27eaa3dbe0Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28692f60a7Smrg 2954569438Smrg 302f60eb46Smrg# Please send patches to <config-patches@gnu.org>. 31692f60a7Smrg# 32692f60a7Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33692f60a7Smrg# Supply the specified configuration type as an argument. 34692f60a7Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35692f60a7Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36692f60a7Smrg 373f6d0e1dSmrg# You can get the latest version of this script from: 38efb46889Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 393f6d0e1dSmrg 40692f60a7Smrg# This file is supposed to be the same for all GNU packages 41692f60a7Smrg# and recognize all the CPU types, system types and aliases 42692f60a7Smrg# that are meaningful with *any* GNU software. 43692f60a7Smrg# Each package is responsible for reporting which valid configurations 44692f60a7Smrg# it does not support. The user should be able to distinguish 45692f60a7Smrg# a failure to support a valid configuration from a meaningless 46692f60a7Smrg# configuration. 47692f60a7Smrg 48692f60a7Smrg# The goal of this file is to map all the various variations of a given 49692f60a7Smrg# machine specification into a single specification in the form: 50692f60a7Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51692f60a7Smrg# or in some cases, the newer four-part form: 52692f60a7Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53692f60a7Smrg# It is wrong to echo any other type of specification. 54692f60a7Smrg 55efb46889Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 56efb46889Smrg# about features and limitations of the classic Bourne shell that were 57efb46889Smrg# superseded or lifted in POSIX. However, this script identifies a wide 58efb46889Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59efb46889Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60efb46889Smrg# have a pre-POSIX /bin/sh. 61efb46889Smrg 62692f60a7Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63692f60a7Smrg 64692f60a7Smrgusage="\ 65efb46889SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66692f60a7Smrg 67692f60a7SmrgCanonicalize a configuration name. 68692f60a7Smrg 69efb46889SmrgOptions: 70692f60a7Smrg -h, --help print this help, then exit 71692f60a7Smrg -t, --time-stamp print date of last modification, then exit 72692f60a7Smrg -v, --version print version number, then exit 73692f60a7Smrg 74692f60a7SmrgReport bugs and patches to <config-patches@gnu.org>." 75692f60a7Smrg 76692f60a7Smrgversion="\ 77692f60a7SmrgGNU config.sub ($timestamp) 78692f60a7Smrg 79efb46889SmrgCopyright 1992-2023 Free Software Foundation, Inc. 80692f60a7Smrg 81692f60a7SmrgThis is free software; see the source for copying conditions. There is NO 82692f60a7Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83692f60a7Smrg 84692f60a7Smrghelp=" 85692f60a7SmrgTry \`$me --help' for more information." 86692f60a7Smrg 87692f60a7Smrg# Parse command line 88692f60a7Smrgwhile test $# -gt 0 ; do 89692f60a7Smrg case $1 in 90692f60a7Smrg --time-stamp | --time* | -t ) 9154569438Smrg echo "$timestamp" ; exit ;; 92692f60a7Smrg --version | -v ) 9354569438Smrg echo "$version" ; exit ;; 94692f60a7Smrg --help | --h* | -h ) 9554569438Smrg echo "$usage"; exit ;; 96692f60a7Smrg -- ) # Stop option processing 97692f60a7Smrg shift; break ;; 98692f60a7Smrg - ) # Use stdin as input. 99692f60a7Smrg break ;; 100692f60a7Smrg -* ) 101efb46889Smrg echo "$me: invalid option $1$help" >&2 102692f60a7Smrg exit 1 ;; 103692f60a7Smrg 104692f60a7Smrg *local*) 105692f60a7Smrg # First pass through any local machine types. 106efb46889Smrg echo "$1" 10754569438Smrg exit ;; 108692f60a7Smrg 109692f60a7Smrg * ) 110692f60a7Smrg break ;; 111692f60a7Smrg esac 112692f60a7Smrgdone 113692f60a7Smrg 114692f60a7Smrgcase $# in 115692f60a7Smrg 0) echo "$me: missing argument$help" >&2 116692f60a7Smrg exit 1;; 117692f60a7Smrg 1) ;; 118692f60a7Smrg *) echo "$me: too many arguments$help" >&2 119692f60a7Smrg exit 1;; 120692f60a7Smrgesac 121692f60a7Smrg 122efb46889Smrg# Split fields of configuration type 123efb46889Smrg# shellcheck disable=SC2162 124efb46889Smrgsaved_IFS=$IFS 125efb46889SmrgIFS="-" read field1 field2 field3 field4 <<EOF 126efb46889Smrg$1 127efb46889SmrgEOF 128efb46889SmrgIFS=$saved_IFS 129692f60a7Smrg 130efb46889Smrg# Separate into logical components for further validation 131efb46889Smrgcase $1 in 132efb46889Smrg *-*-*-*-*) 133efb46889Smrg echo Invalid configuration \`"$1"\': more than four components >&2 134efb46889Smrg exit 1 135692f60a7Smrg ;; 136efb46889Smrg *-*-*-*) 137efb46889Smrg basic_machine=$field1-$field2 138efb46889Smrg basic_os=$field3-$field4 139692f60a7Smrg ;; 140efb46889Smrg *-*-*) 141efb46889Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142efb46889Smrg # parts 143efb46889Smrg maybe_os=$field2-$field3 144efb46889Smrg case $maybe_os in 145efb46889Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 146efb46889Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147efb46889Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148efb46889Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 149efb46889Smrg basic_machine=$field1 150efb46889Smrg basic_os=$maybe_os 151efb46889Smrg ;; 152efb46889Smrg android-linux) 153efb46889Smrg basic_machine=$field1-unknown 154efb46889Smrg basic_os=linux-android 155efb46889Smrg ;; 156efb46889Smrg *) 157efb46889Smrg basic_machine=$field1-$field2 158efb46889Smrg basic_os=$field3 159efb46889Smrg ;; 160efb46889Smrg esac 161692f60a7Smrg ;; 162efb46889Smrg *-*) 163efb46889Smrg # A lone config we happen to match not fitting any pattern 164efb46889Smrg case $field1-$field2 in 165efb46889Smrg decstation-3100) 166efb46889Smrg basic_machine=mips-dec 167efb46889Smrg basic_os= 168efb46889Smrg ;; 169efb46889Smrg *-*) 170efb46889Smrg # Second component is usually, but not always the OS 171efb46889Smrg case $field2 in 172efb46889Smrg # Prevent following clause from handling this valid os 173efb46889Smrg sun*os*) 174efb46889Smrg basic_machine=$field1 175efb46889Smrg basic_os=$field2 176efb46889Smrg ;; 177efb46889Smrg zephyr*) 178efb46889Smrg basic_machine=$field1-unknown 179efb46889Smrg basic_os=$field2 180efb46889Smrg ;; 181efb46889Smrg # Manufacturers 182efb46889Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183efb46889Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184efb46889Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185efb46889Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186efb46889Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187efb46889Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188efb46889Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189efb46889Smrg | microblaze* | sim | cisco \ 190efb46889Smrg | oki | wec | wrs | winbond) 191efb46889Smrg basic_machine=$field1-$field2 192efb46889Smrg basic_os= 193efb46889Smrg ;; 194efb46889Smrg *) 195efb46889Smrg basic_machine=$field1 196efb46889Smrg basic_os=$field2 197efb46889Smrg ;; 198efb46889Smrg esac 199efb46889Smrg ;; 200efb46889Smrg esac 201692f60a7Smrg ;; 202efb46889Smrg *) 203efb46889Smrg # Convert single-component short-hands not valid as part of 204efb46889Smrg # multi-component configurations. 205efb46889Smrg case $field1 in 206efb46889Smrg 386bsd) 207efb46889Smrg basic_machine=i386-pc 208efb46889Smrg basic_os=bsd 209efb46889Smrg ;; 210efb46889Smrg a29khif) 211efb46889Smrg basic_machine=a29k-amd 212efb46889Smrg basic_os=udi 213efb46889Smrg ;; 214efb46889Smrg adobe68k) 215efb46889Smrg basic_machine=m68010-adobe 216efb46889Smrg basic_os=scout 217efb46889Smrg ;; 218efb46889Smrg alliant) 219efb46889Smrg basic_machine=fx80-alliant 220efb46889Smrg basic_os= 221efb46889Smrg ;; 222efb46889Smrg altos | altos3068) 223efb46889Smrg basic_machine=m68k-altos 224efb46889Smrg basic_os= 225efb46889Smrg ;; 226efb46889Smrg am29k) 227efb46889Smrg basic_machine=a29k-none 228efb46889Smrg basic_os=bsd 229efb46889Smrg ;; 230efb46889Smrg amdahl) 231efb46889Smrg basic_machine=580-amdahl 232efb46889Smrg basic_os=sysv 233efb46889Smrg ;; 234efb46889Smrg amiga) 235efb46889Smrg basic_machine=m68k-unknown 236efb46889Smrg basic_os= 237efb46889Smrg ;; 238efb46889Smrg amigaos | amigados) 239efb46889Smrg basic_machine=m68k-unknown 240efb46889Smrg basic_os=amigaos 241efb46889Smrg ;; 242efb46889Smrg amigaunix | amix) 243efb46889Smrg basic_machine=m68k-unknown 244efb46889Smrg basic_os=sysv4 245efb46889Smrg ;; 246efb46889Smrg apollo68) 247efb46889Smrg basic_machine=m68k-apollo 248efb46889Smrg basic_os=sysv 249efb46889Smrg ;; 250efb46889Smrg apollo68bsd) 251efb46889Smrg basic_machine=m68k-apollo 252efb46889Smrg basic_os=bsd 253efb46889Smrg ;; 254efb46889Smrg aros) 255efb46889Smrg basic_machine=i386-pc 256efb46889Smrg basic_os=aros 257efb46889Smrg ;; 258efb46889Smrg aux) 259efb46889Smrg basic_machine=m68k-apple 260efb46889Smrg basic_os=aux 261efb46889Smrg ;; 262efb46889Smrg balance) 263efb46889Smrg basic_machine=ns32k-sequent 264efb46889Smrg basic_os=dynix 265efb46889Smrg ;; 266efb46889Smrg blackfin) 267efb46889Smrg basic_machine=bfin-unknown 268efb46889Smrg basic_os=linux 269efb46889Smrg ;; 270efb46889Smrg cegcc) 271efb46889Smrg basic_machine=arm-unknown 272efb46889Smrg basic_os=cegcc 273efb46889Smrg ;; 274efb46889Smrg convex-c1) 275efb46889Smrg basic_machine=c1-convex 276efb46889Smrg basic_os=bsd 277efb46889Smrg ;; 278efb46889Smrg convex-c2) 279efb46889Smrg basic_machine=c2-convex 280efb46889Smrg basic_os=bsd 281efb46889Smrg ;; 282efb46889Smrg convex-c32) 283efb46889Smrg basic_machine=c32-convex 284efb46889Smrg basic_os=bsd 285efb46889Smrg ;; 286efb46889Smrg convex-c34) 287efb46889Smrg basic_machine=c34-convex 288efb46889Smrg basic_os=bsd 289efb46889Smrg ;; 290efb46889Smrg convex-c38) 291efb46889Smrg basic_machine=c38-convex 292efb46889Smrg basic_os=bsd 293efb46889Smrg ;; 294efb46889Smrg cray) 295efb46889Smrg basic_machine=j90-cray 296efb46889Smrg basic_os=unicos 297efb46889Smrg ;; 298efb46889Smrg crds | unos) 299efb46889Smrg basic_machine=m68k-crds 300efb46889Smrg basic_os= 301efb46889Smrg ;; 302efb46889Smrg da30) 303efb46889Smrg basic_machine=m68k-da30 304efb46889Smrg basic_os= 305efb46889Smrg ;; 306efb46889Smrg decstation | pmax | pmin | dec3100 | decstatn) 307efb46889Smrg basic_machine=mips-dec 308efb46889Smrg basic_os= 309efb46889Smrg ;; 310efb46889Smrg delta88) 311efb46889Smrg basic_machine=m88k-motorola 312efb46889Smrg basic_os=sysv3 313efb46889Smrg ;; 314efb46889Smrg dicos) 315efb46889Smrg basic_machine=i686-pc 316efb46889Smrg basic_os=dicos 317efb46889Smrg ;; 318efb46889Smrg djgpp) 319efb46889Smrg basic_machine=i586-pc 320efb46889Smrg basic_os=msdosdjgpp 321efb46889Smrg ;; 322efb46889Smrg ebmon29k) 323efb46889Smrg basic_machine=a29k-amd 324efb46889Smrg basic_os=ebmon 325efb46889Smrg ;; 326efb46889Smrg es1800 | OSE68k | ose68k | ose | OSE) 327efb46889Smrg basic_machine=m68k-ericsson 328efb46889Smrg basic_os=ose 329efb46889Smrg ;; 330efb46889Smrg gmicro) 331efb46889Smrg basic_machine=tron-gmicro 332efb46889Smrg basic_os=sysv 333efb46889Smrg ;; 334efb46889Smrg go32) 335efb46889Smrg basic_machine=i386-pc 336efb46889Smrg basic_os=go32 337efb46889Smrg ;; 338efb46889Smrg h8300hms) 339efb46889Smrg basic_machine=h8300-hitachi 340efb46889Smrg basic_os=hms 341efb46889Smrg ;; 342efb46889Smrg h8300xray) 343efb46889Smrg basic_machine=h8300-hitachi 344efb46889Smrg basic_os=xray 345efb46889Smrg ;; 346efb46889Smrg h8500hms) 347efb46889Smrg basic_machine=h8500-hitachi 348efb46889Smrg basic_os=hms 349efb46889Smrg ;; 350efb46889Smrg harris) 351efb46889Smrg basic_machine=m88k-harris 352efb46889Smrg basic_os=sysv3 353efb46889Smrg ;; 354efb46889Smrg hp300 | hp300hpux) 355efb46889Smrg basic_machine=m68k-hp 356efb46889Smrg basic_os=hpux 357efb46889Smrg ;; 358efb46889Smrg hp300bsd) 359efb46889Smrg basic_machine=m68k-hp 360efb46889Smrg basic_os=bsd 361efb46889Smrg ;; 362efb46889Smrg hppaosf) 363efb46889Smrg basic_machine=hppa1.1-hp 364efb46889Smrg basic_os=osf 365efb46889Smrg ;; 366efb46889Smrg hppro) 367efb46889Smrg basic_machine=hppa1.1-hp 368efb46889Smrg basic_os=proelf 369efb46889Smrg ;; 370efb46889Smrg i386mach) 371efb46889Smrg basic_machine=i386-mach 372efb46889Smrg basic_os=mach 373efb46889Smrg ;; 374efb46889Smrg isi68 | isi) 375efb46889Smrg basic_machine=m68k-isi 376efb46889Smrg basic_os=sysv 377efb46889Smrg ;; 378efb46889Smrg m68knommu) 379efb46889Smrg basic_machine=m68k-unknown 380efb46889Smrg basic_os=linux 381efb46889Smrg ;; 382efb46889Smrg magnum | m3230) 383efb46889Smrg basic_machine=mips-mips 384efb46889Smrg basic_os=sysv 385efb46889Smrg ;; 386efb46889Smrg merlin) 387efb46889Smrg basic_machine=ns32k-utek 388efb46889Smrg basic_os=sysv 389efb46889Smrg ;; 390efb46889Smrg mingw64) 391efb46889Smrg basic_machine=x86_64-pc 392efb46889Smrg basic_os=mingw64 393efb46889Smrg ;; 394efb46889Smrg mingw32) 395efb46889Smrg basic_machine=i686-pc 396efb46889Smrg basic_os=mingw32 397efb46889Smrg ;; 398efb46889Smrg mingw32ce) 399efb46889Smrg basic_machine=arm-unknown 400efb46889Smrg basic_os=mingw32ce 401efb46889Smrg ;; 402efb46889Smrg monitor) 403efb46889Smrg basic_machine=m68k-rom68k 404efb46889Smrg basic_os=coff 405efb46889Smrg ;; 406efb46889Smrg morphos) 407efb46889Smrg basic_machine=powerpc-unknown 408efb46889Smrg basic_os=morphos 409efb46889Smrg ;; 410efb46889Smrg moxiebox) 411efb46889Smrg basic_machine=moxie-unknown 412efb46889Smrg basic_os=moxiebox 413efb46889Smrg ;; 414efb46889Smrg msdos) 415efb46889Smrg basic_machine=i386-pc 416efb46889Smrg basic_os=msdos 417efb46889Smrg ;; 418efb46889Smrg msys) 419efb46889Smrg basic_machine=i686-pc 420efb46889Smrg basic_os=msys 421efb46889Smrg ;; 422efb46889Smrg mvs) 423efb46889Smrg basic_machine=i370-ibm 424efb46889Smrg basic_os=mvs 425efb46889Smrg ;; 426efb46889Smrg nacl) 427efb46889Smrg basic_machine=le32-unknown 428efb46889Smrg basic_os=nacl 429efb46889Smrg ;; 430efb46889Smrg ncr3000) 431efb46889Smrg basic_machine=i486-ncr 432efb46889Smrg basic_os=sysv4 433efb46889Smrg ;; 434efb46889Smrg netbsd386) 435efb46889Smrg basic_machine=i386-pc 436efb46889Smrg basic_os=netbsd 437efb46889Smrg ;; 438efb46889Smrg netwinder) 439efb46889Smrg basic_machine=armv4l-rebel 440efb46889Smrg basic_os=linux 441efb46889Smrg ;; 442efb46889Smrg news | news700 | news800 | news900) 443efb46889Smrg basic_machine=m68k-sony 444efb46889Smrg basic_os=newsos 445efb46889Smrg ;; 446efb46889Smrg news1000) 447efb46889Smrg basic_machine=m68030-sony 448efb46889Smrg basic_os=newsos 449efb46889Smrg ;; 450efb46889Smrg necv70) 451efb46889Smrg basic_machine=v70-nec 452efb46889Smrg basic_os=sysv 453efb46889Smrg ;; 454efb46889Smrg nh3000) 455efb46889Smrg basic_machine=m68k-harris 456efb46889Smrg basic_os=cxux 457efb46889Smrg ;; 458efb46889Smrg nh[45]000) 459efb46889Smrg basic_machine=m88k-harris 460efb46889Smrg basic_os=cxux 461efb46889Smrg ;; 462efb46889Smrg nindy960) 463efb46889Smrg basic_machine=i960-intel 464efb46889Smrg basic_os=nindy 465efb46889Smrg ;; 466efb46889Smrg mon960) 467efb46889Smrg basic_machine=i960-intel 468efb46889Smrg basic_os=mon960 469efb46889Smrg ;; 470efb46889Smrg nonstopux) 471efb46889Smrg basic_machine=mips-compaq 472efb46889Smrg basic_os=nonstopux 473efb46889Smrg ;; 474efb46889Smrg os400) 475efb46889Smrg basic_machine=powerpc-ibm 476efb46889Smrg basic_os=os400 477efb46889Smrg ;; 478efb46889Smrg OSE68000 | ose68000) 479efb46889Smrg basic_machine=m68000-ericsson 480efb46889Smrg basic_os=ose 481efb46889Smrg ;; 482efb46889Smrg os68k) 483efb46889Smrg basic_machine=m68k-none 484efb46889Smrg basic_os=os68k 485efb46889Smrg ;; 486efb46889Smrg paragon) 487efb46889Smrg basic_machine=i860-intel 488efb46889Smrg basic_os=osf 489efb46889Smrg ;; 490efb46889Smrg parisc) 491efb46889Smrg basic_machine=hppa-unknown 492efb46889Smrg basic_os=linux 493efb46889Smrg ;; 494efb46889Smrg psp) 495efb46889Smrg basic_machine=mipsallegrexel-sony 496efb46889Smrg basic_os=psp 497efb46889Smrg ;; 498efb46889Smrg pw32) 499efb46889Smrg basic_machine=i586-unknown 500efb46889Smrg basic_os=pw32 501efb46889Smrg ;; 502efb46889Smrg rdos | rdos64) 503efb46889Smrg basic_machine=x86_64-pc 504efb46889Smrg basic_os=rdos 505efb46889Smrg ;; 506efb46889Smrg rdos32) 507efb46889Smrg basic_machine=i386-pc 508efb46889Smrg basic_os=rdos 509efb46889Smrg ;; 510efb46889Smrg rom68k) 511efb46889Smrg basic_machine=m68k-rom68k 512efb46889Smrg basic_os=coff 513efb46889Smrg ;; 514efb46889Smrg sa29200) 515efb46889Smrg basic_machine=a29k-amd 516efb46889Smrg basic_os=udi 517efb46889Smrg ;; 518efb46889Smrg sei) 519efb46889Smrg basic_machine=mips-sei 520efb46889Smrg basic_os=seiux 521efb46889Smrg ;; 522efb46889Smrg sequent) 523efb46889Smrg basic_machine=i386-sequent 524efb46889Smrg basic_os= 525efb46889Smrg ;; 526efb46889Smrg sps7) 527efb46889Smrg basic_machine=m68k-bull 528efb46889Smrg basic_os=sysv2 529efb46889Smrg ;; 530efb46889Smrg st2000) 531efb46889Smrg basic_machine=m68k-tandem 532efb46889Smrg basic_os= 533efb46889Smrg ;; 534efb46889Smrg stratus) 535efb46889Smrg basic_machine=i860-stratus 536efb46889Smrg basic_os=sysv4 537efb46889Smrg ;; 538efb46889Smrg sun2) 539efb46889Smrg basic_machine=m68000-sun 540efb46889Smrg basic_os= 541efb46889Smrg ;; 542efb46889Smrg sun2os3) 543efb46889Smrg basic_machine=m68000-sun 544efb46889Smrg basic_os=sunos3 545efb46889Smrg ;; 546efb46889Smrg sun2os4) 547efb46889Smrg basic_machine=m68000-sun 548efb46889Smrg basic_os=sunos4 549efb46889Smrg ;; 550efb46889Smrg sun3) 551efb46889Smrg basic_machine=m68k-sun 552efb46889Smrg basic_os= 553efb46889Smrg ;; 554efb46889Smrg sun3os3) 555efb46889Smrg basic_machine=m68k-sun 556efb46889Smrg basic_os=sunos3 557efb46889Smrg ;; 558efb46889Smrg sun3os4) 559efb46889Smrg basic_machine=m68k-sun 560efb46889Smrg basic_os=sunos4 561efb46889Smrg ;; 562efb46889Smrg sun4) 563efb46889Smrg basic_machine=sparc-sun 564efb46889Smrg basic_os= 565efb46889Smrg ;; 566efb46889Smrg sun4os3) 567efb46889Smrg basic_machine=sparc-sun 568efb46889Smrg basic_os=sunos3 569efb46889Smrg ;; 570efb46889Smrg sun4os4) 571efb46889Smrg basic_machine=sparc-sun 572efb46889Smrg basic_os=sunos4 573efb46889Smrg ;; 574efb46889Smrg sun4sol2) 575efb46889Smrg basic_machine=sparc-sun 576efb46889Smrg basic_os=solaris2 577efb46889Smrg ;; 578efb46889Smrg sun386 | sun386i | roadrunner) 579efb46889Smrg basic_machine=i386-sun 580efb46889Smrg basic_os= 581efb46889Smrg ;; 582efb46889Smrg sv1) 583efb46889Smrg basic_machine=sv1-cray 584efb46889Smrg basic_os=unicos 585efb46889Smrg ;; 586efb46889Smrg symmetry) 587efb46889Smrg basic_machine=i386-sequent 588efb46889Smrg basic_os=dynix 589efb46889Smrg ;; 590efb46889Smrg t3e) 591efb46889Smrg basic_machine=alphaev5-cray 592efb46889Smrg basic_os=unicos 593efb46889Smrg ;; 594efb46889Smrg t90) 595efb46889Smrg basic_machine=t90-cray 596efb46889Smrg basic_os=unicos 597efb46889Smrg ;; 598efb46889Smrg toad1) 599efb46889Smrg basic_machine=pdp10-xkl 600efb46889Smrg basic_os=tops20 601efb46889Smrg ;; 602efb46889Smrg tpf) 603efb46889Smrg basic_machine=s390x-ibm 604efb46889Smrg basic_os=tpf 605efb46889Smrg ;; 606efb46889Smrg udi29k) 607efb46889Smrg basic_machine=a29k-amd 608efb46889Smrg basic_os=udi 609efb46889Smrg ;; 610efb46889Smrg ultra3) 611efb46889Smrg basic_machine=a29k-nyu 612efb46889Smrg basic_os=sym1 613efb46889Smrg ;; 614efb46889Smrg v810 | necv810) 615efb46889Smrg basic_machine=v810-nec 616efb46889Smrg basic_os=none 617efb46889Smrg ;; 618efb46889Smrg vaxv) 619efb46889Smrg basic_machine=vax-dec 620efb46889Smrg basic_os=sysv 621efb46889Smrg ;; 622efb46889Smrg vms) 623efb46889Smrg basic_machine=vax-dec 624efb46889Smrg basic_os=vms 625efb46889Smrg ;; 626efb46889Smrg vsta) 627efb46889Smrg basic_machine=i386-pc 628efb46889Smrg basic_os=vsta 629efb46889Smrg ;; 630efb46889Smrg vxworks960) 631efb46889Smrg basic_machine=i960-wrs 632efb46889Smrg basic_os=vxworks 633efb46889Smrg ;; 634efb46889Smrg vxworks68) 635efb46889Smrg basic_machine=m68k-wrs 636efb46889Smrg basic_os=vxworks 637efb46889Smrg ;; 638efb46889Smrg vxworks29k) 639efb46889Smrg basic_machine=a29k-wrs 640efb46889Smrg basic_os=vxworks 641efb46889Smrg ;; 642efb46889Smrg xbox) 643efb46889Smrg basic_machine=i686-pc 644efb46889Smrg basic_os=mingw32 645efb46889Smrg ;; 646efb46889Smrg ymp) 647efb46889Smrg basic_machine=ymp-cray 648efb46889Smrg basic_os=unicos 649efb46889Smrg ;; 650efb46889Smrg *) 651efb46889Smrg basic_machine=$1 652efb46889Smrg basic_os= 653efb46889Smrg ;; 654efb46889Smrg esac 655692f60a7Smrg ;; 656692f60a7Smrgesac 657692f60a7Smrg 658efb46889Smrg# Decode 1-component or ad-hoc basic machines 659692f60a7Smrgcase $basic_machine in 660efb46889Smrg # Here we handle the default manufacturer of certain CPU types. It is in 661efb46889Smrg # some cases the only manufacturer, in others, it is the most popular. 662efb46889Smrg w89k) 663efb46889Smrg cpu=hppa1.1 664efb46889Smrg vendor=winbond 665692f60a7Smrg ;; 666efb46889Smrg op50n) 667efb46889Smrg cpu=hppa1.1 668efb46889Smrg vendor=oki 669692f60a7Smrg ;; 670efb46889Smrg op60c) 671efb46889Smrg cpu=hppa1.1 672efb46889Smrg vendor=oki 67354569438Smrg ;; 674efb46889Smrg ibm*) 675efb46889Smrg cpu=i370 676efb46889Smrg vendor=ibm 6773f6d0e1dSmrg ;; 678efb46889Smrg orion105) 679efb46889Smrg cpu=clipper 680efb46889Smrg vendor=highlevel 681eaa3dbe0Smrg ;; 682efb46889Smrg mac | mpw | mac-mpw) 683efb46889Smrg cpu=m68k 684efb46889Smrg vendor=apple 6853f6d0e1dSmrg ;; 686efb46889Smrg pmac | pmac-mpw) 687efb46889Smrg cpu=powerpc 688efb46889Smrg vendor=apple 6893f6d0e1dSmrg ;; 6903f6d0e1dSmrg 691692f60a7Smrg # Recognize the various machine names and aliases which stand 692692f60a7Smrg # for a CPU type and a company and sometimes even an OS. 693692f60a7Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694efb46889Smrg cpu=m68000 695efb46889Smrg vendor=att 696692f60a7Smrg ;; 697692f60a7Smrg 3b*) 698efb46889Smrg cpu=we32k 699efb46889Smrg vendor=att 70054569438Smrg ;; 7013f6d0e1dSmrg bluegene*) 702efb46889Smrg cpu=powerpc 703efb46889Smrg vendor=ibm 704efb46889Smrg basic_os=cnk 705692f60a7Smrg ;; 706692f60a7Smrg decsystem10* | dec10*) 707efb46889Smrg cpu=pdp10 708efb46889Smrg vendor=dec 709efb46889Smrg basic_os=tops10 710692f60a7Smrg ;; 711692f60a7Smrg decsystem20* | dec20*) 712efb46889Smrg cpu=pdp10 713efb46889Smrg vendor=dec 714efb46889Smrg basic_os=tops20 715692f60a7Smrg ;; 716692f60a7Smrg delta | 3300 | motorola-3300 | motorola-delta \ 717692f60a7Smrg | 3300-motorola | delta-motorola) 718efb46889Smrg cpu=m68k 719efb46889Smrg vendor=motorola 72054569438Smrg ;; 721efb46889Smrg dpx2*) 722efb46889Smrg cpu=m68k 723efb46889Smrg vendor=bull 724efb46889Smrg basic_os=sysv3 725692f60a7Smrg ;; 726692f60a7Smrg encore | umax | mmax) 727efb46889Smrg cpu=ns32k 728efb46889Smrg vendor=encore 729692f60a7Smrg ;; 730efb46889Smrg elxsi) 731efb46889Smrg cpu=elxsi 732efb46889Smrg vendor=elxsi 733efb46889Smrg basic_os=${basic_os:-bsd} 734692f60a7Smrg ;; 735692f60a7Smrg fx2800) 736efb46889Smrg cpu=i860 737efb46889Smrg vendor=alliant 738692f60a7Smrg ;; 739692f60a7Smrg genix) 740efb46889Smrg cpu=ns32k 741efb46889Smrg vendor=ns 742692f60a7Smrg ;; 743692f60a7Smrg h3050r* | hiux*) 744efb46889Smrg cpu=hppa1.1 745efb46889Smrg vendor=hitachi 746efb46889Smrg basic_os=hiuxwe2 747692f60a7Smrg ;; 748692f60a7Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749efb46889Smrg cpu=hppa1.0 750efb46889Smrg vendor=hp 751692f60a7Smrg ;; 752692f60a7Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753efb46889Smrg cpu=m68000 754efb46889Smrg vendor=hp 755692f60a7Smrg ;; 756692f60a7Smrg hp9k3[2-9][0-9]) 757efb46889Smrg cpu=m68k 758efb46889Smrg vendor=hp 759692f60a7Smrg ;; 760692f60a7Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761efb46889Smrg cpu=hppa1.0 762efb46889Smrg vendor=hp 763692f60a7Smrg ;; 764692f60a7Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765efb46889Smrg cpu=hppa1.1 766efb46889Smrg vendor=hp 767692f60a7Smrg ;; 768692f60a7Smrg hp9k78[0-9] | hp78[0-9]) 769692f60a7Smrg # FIXME: really hppa2.0-hp 770efb46889Smrg cpu=hppa1.1 771efb46889Smrg vendor=hp 772692f60a7Smrg ;; 773692f60a7Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774692f60a7Smrg # FIXME: really hppa2.0-hp 775efb46889Smrg cpu=hppa1.1 776efb46889Smrg vendor=hp 777692f60a7Smrg ;; 778692f60a7Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779efb46889Smrg cpu=hppa1.1 780efb46889Smrg vendor=hp 781692f60a7Smrg ;; 782692f60a7Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783efb46889Smrg cpu=hppa1.0 784efb46889Smrg vendor=hp 785692f60a7Smrg ;; 786692f60a7Smrg i*86v32) 787efb46889Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788efb46889Smrg vendor=pc 789efb46889Smrg basic_os=sysv32 790692f60a7Smrg ;; 791692f60a7Smrg i*86v4*) 792efb46889Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793efb46889Smrg vendor=pc 794efb46889Smrg basic_os=sysv4 795692f60a7Smrg ;; 796692f60a7Smrg i*86v) 797efb46889Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798efb46889Smrg vendor=pc 799efb46889Smrg basic_os=sysv 800692f60a7Smrg ;; 801692f60a7Smrg i*86sol2) 802efb46889Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803efb46889Smrg vendor=pc 804efb46889Smrg basic_os=solaris2 805692f60a7Smrg ;; 806efb46889Smrg j90 | j90-cray) 807efb46889Smrg cpu=j90 808efb46889Smrg vendor=cray 809efb46889Smrg basic_os=${basic_os:-unicos} 810692f60a7Smrg ;; 811692f60a7Smrg iris | iris4d) 812efb46889Smrg cpu=mips 813efb46889Smrg vendor=sgi 814efb46889Smrg case $basic_os in 815efb46889Smrg irix*) 816692f60a7Smrg ;; 817692f60a7Smrg *) 818efb46889Smrg basic_os=irix4 819692f60a7Smrg ;; 820692f60a7Smrg esac 821692f60a7Smrg ;; 822692f60a7Smrg miniframe) 823efb46889Smrg cpu=m68000 824efb46889Smrg vendor=convergent 825692f60a7Smrg ;; 826efb46889Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827efb46889Smrg cpu=m68k 828efb46889Smrg vendor=atari 829efb46889Smrg basic_os=mint 830692f60a7Smrg ;; 831692f60a7Smrg news-3600 | risc-news) 832efb46889Smrg cpu=mips 833efb46889Smrg vendor=sony 834efb46889Smrg basic_os=newsos 835efb46889Smrg ;; 836efb46889Smrg next | m*-next) 837efb46889Smrg cpu=m68k 838efb46889Smrg vendor=next 839efb46889Smrg case $basic_os in 840efb46889Smrg openstep*) 841efb46889Smrg ;; 842efb46889Smrg nextstep*) 843692f60a7Smrg ;; 844efb46889Smrg ns2*) 845efb46889Smrg basic_os=nextstep2 846692f60a7Smrg ;; 847692f60a7Smrg *) 848efb46889Smrg basic_os=nextstep3 849692f60a7Smrg ;; 850692f60a7Smrg esac 851692f60a7Smrg ;; 852692f60a7Smrg np1) 853efb46889Smrg cpu=np1 854efb46889Smrg vendor=gould 855692f60a7Smrg ;; 856692f60a7Smrg op50n-* | op60c-*) 857efb46889Smrg cpu=hppa1.1 858efb46889Smrg vendor=oki 859efb46889Smrg basic_os=proelf 860692f60a7Smrg ;; 861692f60a7Smrg pa-hitachi) 862efb46889Smrg cpu=hppa1.1 863efb46889Smrg vendor=hitachi 864efb46889Smrg basic_os=hiuxwe2 86554569438Smrg ;; 866692f60a7Smrg pbd) 867efb46889Smrg cpu=sparc 868efb46889Smrg vendor=tti 869692f60a7Smrg ;; 870692f60a7Smrg pbb) 871efb46889Smrg cpu=m68k 872efb46889Smrg vendor=tti 873692f60a7Smrg ;; 874efb46889Smrg pc532) 875efb46889Smrg cpu=ns32k 876efb46889Smrg vendor=pc532 877692f60a7Smrg ;; 878692f60a7Smrg pn) 879efb46889Smrg cpu=pn 880efb46889Smrg vendor=gould 881692f60a7Smrg ;; 882efb46889Smrg power) 883efb46889Smrg cpu=power 884efb46889Smrg vendor=ibm 885692f60a7Smrg ;; 886692f60a7Smrg ps2) 887efb46889Smrg cpu=i386 888efb46889Smrg vendor=ibm 889692f60a7Smrg ;; 890692f60a7Smrg rm[46]00) 891efb46889Smrg cpu=mips 892efb46889Smrg vendor=siemens 893692f60a7Smrg ;; 894692f60a7Smrg rtpc | rtpc-*) 895efb46889Smrg cpu=romp 896efb46889Smrg vendor=ibm 89754569438Smrg ;; 898efb46889Smrg sde) 899efb46889Smrg cpu=mipsisa32 900efb46889Smrg vendor=sde 901efb46889Smrg basic_os=${basic_os:-elf} 902692f60a7Smrg ;; 903efb46889Smrg simso-wrs) 904efb46889Smrg cpu=sparclite 905efb46889Smrg vendor=wrs 906efb46889Smrg basic_os=vxworks 907692f60a7Smrg ;; 908efb46889Smrg tower | tower-32) 909efb46889Smrg cpu=m68k 910efb46889Smrg vendor=ncr 911692f60a7Smrg ;; 912efb46889Smrg vpp*|vx|vx-*) 913efb46889Smrg cpu=f301 914efb46889Smrg vendor=fujitsu 91554569438Smrg ;; 916efb46889Smrg w65) 917efb46889Smrg cpu=w65 918efb46889Smrg vendor=wdc 919692f60a7Smrg ;; 920efb46889Smrg w89k-*) 921efb46889Smrg cpu=hppa1.1 922efb46889Smrg vendor=winbond 923efb46889Smrg basic_os=proelf 924692f60a7Smrg ;; 925efb46889Smrg none) 926efb46889Smrg cpu=none 927efb46889Smrg vendor=none 928692f60a7Smrg ;; 929efb46889Smrg leon|leon[3-9]) 930efb46889Smrg cpu=sparc 931efb46889Smrg vendor=$basic_machine 93254569438Smrg ;; 933efb46889Smrg leon-*|leon[3-9]-*) 934efb46889Smrg cpu=sparc 935efb46889Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936692f60a7Smrg ;; 937efb46889Smrg 938efb46889Smrg *-*) 939efb46889Smrg # shellcheck disable=SC2162 940efb46889Smrg saved_IFS=$IFS 941efb46889Smrg IFS="-" read cpu vendor <<EOF 942efb46889Smrg$basic_machine 943efb46889SmrgEOF 944efb46889Smrg IFS=$saved_IFS 945692f60a7Smrg ;; 946efb46889Smrg # We use `pc' rather than `unknown' 947efb46889Smrg # because (1) that's what they normally are, and 948efb46889Smrg # (2) the word "unknown" tends to confuse beginning users. 949efb46889Smrg i*86 | x86_64) 950efb46889Smrg cpu=$basic_machine 951efb46889Smrg vendor=pc 952692f60a7Smrg ;; 953efb46889Smrg # These rules are duplicated from below for sake of the special case above; 954efb46889Smrg # i.e. things that normalized to x86 arches should also default to "pc" 955efb46889Smrg pc98) 956efb46889Smrg cpu=i386 957efb46889Smrg vendor=pc 958692f60a7Smrg ;; 959efb46889Smrg x64 | amd64) 960efb46889Smrg cpu=x86_64 961efb46889Smrg vendor=pc 962692f60a7Smrg ;; 963efb46889Smrg # Recognize the basic CPU types without company name. 964efb46889Smrg *) 965efb46889Smrg cpu=$basic_machine 966efb46889Smrg vendor=unknown 967692f60a7Smrg ;; 968efb46889Smrgesac 969efb46889Smrg 970efb46889Smrgunset -v basic_machine 971efb46889Smrg 972efb46889Smrg# Decode basic machines in the full and proper CPU-Company form. 973efb46889Smrgcase $cpu-$vendor in 974efb46889Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975efb46889Smrg # some cases the only manufacturer, in others, it is the most popular. 976efb46889Smrg craynv-unknown) 977efb46889Smrg vendor=cray 978efb46889Smrg basic_os=${basic_os:-unicosmp} 9793f6d0e1dSmrg ;; 980efb46889Smrg c90-unknown | c90-cray) 981efb46889Smrg vendor=cray 982efb46889Smrg basic_os=${Basic_os:-unicos} 983692f60a7Smrg ;; 984efb46889Smrg fx80-unknown) 985efb46889Smrg vendor=alliant 986692f60a7Smrg ;; 987efb46889Smrg romp-unknown) 988efb46889Smrg vendor=ibm 989692f60a7Smrg ;; 990efb46889Smrg mmix-unknown) 991efb46889Smrg vendor=knuth 992692f60a7Smrg ;; 993efb46889Smrg microblaze-unknown | microblazeel-unknown) 994efb46889Smrg vendor=xilinx 995692f60a7Smrg ;; 996efb46889Smrg rs6000-unknown) 997efb46889Smrg vendor=ibm 998692f60a7Smrg ;; 999efb46889Smrg vax-unknown) 1000efb46889Smrg vendor=dec 1001692f60a7Smrg ;; 1002efb46889Smrg pdp11-unknown) 1003efb46889Smrg vendor=dec 1004692f60a7Smrg ;; 1005efb46889Smrg we32k-unknown) 1006efb46889Smrg vendor=att 1007692f60a7Smrg ;; 1008efb46889Smrg cydra-unknown) 1009efb46889Smrg vendor=cydrome 1010692f60a7Smrg ;; 1011efb46889Smrg i370-ibm*) 1012efb46889Smrg vendor=ibm 1013692f60a7Smrg ;; 1014efb46889Smrg orion-unknown) 1015efb46889Smrg vendor=highlevel 1016692f60a7Smrg ;; 1017efb46889Smrg xps-unknown | xps100-unknown) 1018efb46889Smrg cpu=xps100 1019efb46889Smrg vendor=honeywell 1020692f60a7Smrg ;; 1021efb46889Smrg 1022efb46889Smrg # Here we normalize CPU types with a missing or matching vendor 1023efb46889Smrg armh-unknown | armh-alt) 1024efb46889Smrg cpu=armv7l 1025efb46889Smrg vendor=alt 1026efb46889Smrg basic_os=${basic_os:-linux-gnueabihf} 1027692f60a7Smrg ;; 1028efb46889Smrg dpx20-unknown | dpx20-bull) 1029efb46889Smrg cpu=rs6000 1030efb46889Smrg vendor=bull 1031efb46889Smrg basic_os=${basic_os:-bosx} 1032692f60a7Smrg ;; 1033efb46889Smrg 1034efb46889Smrg # Here we normalize CPU types irrespective of the vendor 1035efb46889Smrg amd64-*) 1036efb46889Smrg cpu=x86_64 103754569438Smrg ;; 1038efb46889Smrg blackfin-*) 1039efb46889Smrg cpu=bfin 1040efb46889Smrg basic_os=linux 1041692f60a7Smrg ;; 1042efb46889Smrg c54x-*) 1043efb46889Smrg cpu=tic54x 1044692f60a7Smrg ;; 1045efb46889Smrg c55x-*) 1046efb46889Smrg cpu=tic55x 1047692f60a7Smrg ;; 1048efb46889Smrg c6x-*) 1049efb46889Smrg cpu=tic6x 1050692f60a7Smrg ;; 1051efb46889Smrg e500v[12]-*) 1052efb46889Smrg cpu=powerpc 1053efb46889Smrg basic_os=${basic_os}"spe" 105454569438Smrg ;; 1055efb46889Smrg mips3*-*) 1056efb46889Smrg cpu=mips64 1057692f60a7Smrg ;; 1058efb46889Smrg ms1-*) 1059efb46889Smrg cpu=mt 1060692f60a7Smrg ;; 1061efb46889Smrg m68knommu-*) 1062efb46889Smrg cpu=m68k 1063efb46889Smrg basic_os=linux 1064692f60a7Smrg ;; 1065efb46889Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1066efb46889Smrg cpu=s12z 1067692f60a7Smrg ;; 1068efb46889Smrg openrisc-*) 1069efb46889Smrg cpu=or32 1070692f60a7Smrg ;; 1071efb46889Smrg parisc-*) 1072efb46889Smrg cpu=hppa 1073efb46889Smrg basic_os=linux 1074692f60a7Smrg ;; 1075efb46889Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1076efb46889Smrg cpu=i586 1077692f60a7Smrg ;; 1078efb46889Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1079efb46889Smrg cpu=i686 1080692f60a7Smrg ;; 1081efb46889Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1082efb46889Smrg cpu=i686 1083692f60a7Smrg ;; 1084efb46889Smrg pentium4-*) 1085efb46889Smrg cpu=i786 1086692f60a7Smrg ;; 1087efb46889Smrg pc98-*) 1088efb46889Smrg cpu=i386 1089692f60a7Smrg ;; 1090efb46889Smrg ppc-* | ppcbe-*) 1091efb46889Smrg cpu=powerpc 109254569438Smrg ;; 1093efb46889Smrg ppcle-* | powerpclittle-*) 1094efb46889Smrg cpu=powerpcle 1095692f60a7Smrg ;; 1096efb46889Smrg ppc64-*) 1097efb46889Smrg cpu=powerpc64 10983f6d0e1dSmrg ;; 1099efb46889Smrg ppc64le-* | powerpc64little-*) 1100efb46889Smrg cpu=powerpc64le 1101692f60a7Smrg ;; 1102efb46889Smrg sb1-*) 1103efb46889Smrg cpu=mipsisa64sb1 1104692f60a7Smrg ;; 1105efb46889Smrg sb1el-*) 1106efb46889Smrg cpu=mipsisa64sb1el 11073f6d0e1dSmrg ;; 1108efb46889Smrg sh5e[lb]-*) 1109efb46889Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1110692f60a7Smrg ;; 1111efb46889Smrg spur-*) 1112efb46889Smrg cpu=spur 1113692f60a7Smrg ;; 1114efb46889Smrg strongarm-* | thumb-*) 1115efb46889Smrg cpu=arm 1116692f60a7Smrg ;; 1117efb46889Smrg tx39-*) 1118efb46889Smrg cpu=mipstx39 1119692f60a7Smrg ;; 1120efb46889Smrg tx39el-*) 1121efb46889Smrg cpu=mipstx39el 1122692f60a7Smrg ;; 1123efb46889Smrg x64-*) 1124efb46889Smrg cpu=x86_64 112554569438Smrg ;; 1126efb46889Smrg xscale-* | xscalee[bl]-*) 1127efb46889Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1128692f60a7Smrg ;; 1129efb46889Smrg arm64-* | aarch64le-*) 1130efb46889Smrg cpu=aarch64 1131692f60a7Smrg ;; 1132efb46889Smrg 1133efb46889Smrg # Recognize the canonical CPU Types that limit and/or modify the 1134efb46889Smrg # company names they are paired with. 1135efb46889Smrg cr16-*) 1136efb46889Smrg basic_os=${basic_os:-elf} 1137692f60a7Smrg ;; 1138efb46889Smrg crisv32-* | etraxfs*-*) 1139efb46889Smrg cpu=crisv32 1140efb46889Smrg vendor=axis 1141692f60a7Smrg ;; 1142efb46889Smrg cris-* | etrax*-*) 1143efb46889Smrg cpu=cris 1144efb46889Smrg vendor=axis 1145692f60a7Smrg ;; 1146efb46889Smrg crx-*) 1147efb46889Smrg basic_os=${basic_os:-elf} 1148692f60a7Smrg ;; 1149efb46889Smrg neo-tandem) 1150efb46889Smrg cpu=neo 1151efb46889Smrg vendor=tandem 1152692f60a7Smrg ;; 1153efb46889Smrg nse-tandem) 1154efb46889Smrg cpu=nse 1155efb46889Smrg vendor=tandem 1156692f60a7Smrg ;; 1157efb46889Smrg nsr-tandem) 1158efb46889Smrg cpu=nsr 1159efb46889Smrg vendor=tandem 1160692f60a7Smrg ;; 1161efb46889Smrg nsv-tandem) 1162efb46889Smrg cpu=nsv 1163efb46889Smrg vendor=tandem 1164692f60a7Smrg ;; 1165efb46889Smrg nsx-tandem) 1166efb46889Smrg cpu=nsx 1167efb46889Smrg vendor=tandem 1168692f60a7Smrg ;; 1169efb46889Smrg mipsallegrexel-sony) 1170efb46889Smrg cpu=mipsallegrexel 1171efb46889Smrg vendor=sony 1172692f60a7Smrg ;; 1173efb46889Smrg tile*-*) 1174efb46889Smrg basic_os=${basic_os:-linux-gnu} 1175692f60a7Smrg ;; 1176efb46889Smrg 1177692f60a7Smrg *) 1178efb46889Smrg # Recognize the canonical CPU types that are allowed with any 1179efb46889Smrg # company name. 1180efb46889Smrg case $cpu in 1181efb46889Smrg 1750a | 580 \ 1182efb46889Smrg | a29k \ 1183efb46889Smrg | aarch64 | aarch64_be \ 1184efb46889Smrg | abacus \ 1185efb46889Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1186efb46889Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1187efb46889Smrg | alphapca5[67] | alpha64pca5[67] \ 1188efb46889Smrg | am33_2.0 \ 1189efb46889Smrg | amdgcn \ 1190efb46889Smrg | arc | arceb | arc32 | arc64 \ 1191efb46889Smrg | arm | arm[lb]e | arme[lb] | armv* \ 1192efb46889Smrg | avr | avr32 \ 1193efb46889Smrg | asmjs \ 1194efb46889Smrg | ba \ 1195efb46889Smrg | be32 | be64 \ 1196efb46889Smrg | bfin | bpf | bs2000 \ 1197efb46889Smrg | c[123]* | c30 | [cjt]90 | c4x \ 1198efb46889Smrg | c8051 | clipper | craynv | csky | cydra \ 1199efb46889Smrg | d10v | d30v | dlx | dsp16xx \ 1200efb46889Smrg | e2k | elxsi | epiphany \ 1201efb46889Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1202efb46889Smrg | h8300 | h8500 \ 1203efb46889Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1204efb46889Smrg | hexagon \ 1205efb46889Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1206efb46889Smrg | ip2k | iq2000 \ 1207efb46889Smrg | k1om \ 1208efb46889Smrg | le32 | le64 \ 1209efb46889Smrg | lm32 \ 1210efb46889Smrg | loongarch32 | loongarch64 \ 1211efb46889Smrg | m32c | m32r | m32rle \ 1212efb46889Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1213efb46889Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1214efb46889Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1215efb46889Smrg | microblaze | microblazeel \ 1216efb46889Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1217efb46889Smrg | mips16 \ 1218efb46889Smrg | mips64 | mips64eb | mips64el \ 1219efb46889Smrg | mips64octeon | mips64octeonel \ 1220efb46889Smrg | mips64orion | mips64orionel \ 1221efb46889Smrg | mips64r5900 | mips64r5900el \ 1222efb46889Smrg | mips64vr | mips64vrel \ 1223efb46889Smrg | mips64vr4100 | mips64vr4100el \ 1224efb46889Smrg | mips64vr4300 | mips64vr4300el \ 1225efb46889Smrg | mips64vr5000 | mips64vr5000el \ 1226efb46889Smrg | mips64vr5900 | mips64vr5900el \ 1227efb46889Smrg | mipsisa32 | mipsisa32el \ 1228efb46889Smrg | mipsisa32r2 | mipsisa32r2el \ 1229efb46889Smrg | mipsisa32r3 | mipsisa32r3el \ 1230efb46889Smrg | mipsisa32r5 | mipsisa32r5el \ 1231efb46889Smrg | mipsisa32r6 | mipsisa32r6el \ 1232efb46889Smrg | mipsisa64 | mipsisa64el \ 1233efb46889Smrg | mipsisa64r2 | mipsisa64r2el \ 1234efb46889Smrg | mipsisa64r3 | mipsisa64r3el \ 1235efb46889Smrg | mipsisa64r5 | mipsisa64r5el \ 1236efb46889Smrg | mipsisa64r6 | mipsisa64r6el \ 1237efb46889Smrg | mipsisa64sb1 | mipsisa64sb1el \ 1238efb46889Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 1239efb46889Smrg | mipsr5900 | mipsr5900el \ 1240efb46889Smrg | mipstx39 | mipstx39el \ 1241efb46889Smrg | mmix \ 1242efb46889Smrg | mn10200 | mn10300 \ 1243efb46889Smrg | moxie \ 1244efb46889Smrg | mt \ 1245efb46889Smrg | msp430 \ 1246efb46889Smrg | nds32 | nds32le | nds32be \ 1247efb46889Smrg | nfp \ 1248efb46889Smrg | nios | nios2 | nios2eb | nios2el \ 1249efb46889Smrg | none | np1 | ns16k | ns32k | nvptx \ 1250efb46889Smrg | open8 \ 1251efb46889Smrg | or1k* \ 1252efb46889Smrg | or32 \ 1253efb46889Smrg | orion \ 1254efb46889Smrg | picochip \ 1255efb46889Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1256efb46889Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1257efb46889Smrg | pru \ 1258efb46889Smrg | pyramid \ 1259efb46889Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1260efb46889Smrg | rl78 | romp | rs6000 | rx \ 1261efb46889Smrg | s390 | s390x \ 1262efb46889Smrg | score \ 1263efb46889Smrg | sh | shl \ 1264efb46889Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1265efb46889Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1266efb46889Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1267efb46889Smrg | sparclite \ 1268efb46889Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1269efb46889Smrg | spu \ 1270efb46889Smrg | tahoe \ 1271efb46889Smrg | thumbv7* \ 1272efb46889Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1273efb46889Smrg | tron \ 1274efb46889Smrg | ubicom32 \ 1275efb46889Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1276efb46889Smrg | vax \ 1277efb46889Smrg | visium \ 1278efb46889Smrg | w65 \ 1279efb46889Smrg | wasm32 | wasm64 \ 1280efb46889Smrg | we32k \ 1281efb46889Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1282efb46889Smrg | xstormy16 | xtensa* \ 1283efb46889Smrg | ymp \ 1284efb46889Smrg | z8k | z80) 1285efb46889Smrg ;; 1286efb46889Smrg 1287efb46889Smrg *) 1288efb46889Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1289efb46889Smrg exit 1 1290efb46889Smrg ;; 1291efb46889Smrg esac 1292692f60a7Smrg ;; 1293692f60a7Smrgesac 1294692f60a7Smrg 1295692f60a7Smrg# Here we canonicalize certain aliases for manufacturers. 1296efb46889Smrgcase $vendor in 1297efb46889Smrg digital*) 1298efb46889Smrg vendor=dec 1299692f60a7Smrg ;; 1300efb46889Smrg commodore*) 1301efb46889Smrg vendor=cbm 1302692f60a7Smrg ;; 1303692f60a7Smrg *) 1304692f60a7Smrg ;; 1305692f60a7Smrgesac 1306692f60a7Smrg 1307692f60a7Smrg# Decode manufacturer-specific aliases for certain operating systems. 1308692f60a7Smrg 1309efb46889Smrgif test x$basic_os != x 1310692f60a7Smrgthen 1311efb46889Smrg 1312efb46889Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1313efb46889Smrg# set os. 1314efb46889Smrgcase $basic_os in 1315efb46889Smrg gnu/linux*) 1316efb46889Smrg kernel=linux 1317efb46889Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1318efb46889Smrg ;; 1319efb46889Smrg os2-emx) 1320efb46889Smrg kernel=os2 1321efb46889Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1322efb46889Smrg ;; 1323efb46889Smrg nto-qnx*) 1324efb46889Smrg kernel=nto 1325efb46889Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1326efb46889Smrg ;; 1327efb46889Smrg *-*) 1328efb46889Smrg # shellcheck disable=SC2162 1329efb46889Smrg saved_IFS=$IFS 1330efb46889Smrg IFS="-" read kernel os <<EOF 1331efb46889Smrg$basic_os 1332efb46889SmrgEOF 1333efb46889Smrg IFS=$saved_IFS 1334efb46889Smrg ;; 1335efb46889Smrg # Default OS when just kernel was specified 1336efb46889Smrg nto*) 1337efb46889Smrg kernel=nto 1338efb46889Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1339efb46889Smrg ;; 1340efb46889Smrg linux*) 1341efb46889Smrg kernel=linux 1342efb46889Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1343efb46889Smrg ;; 1344efb46889Smrg managarm*) 1345efb46889Smrg kernel=managarm 1346efb46889Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1347efb46889Smrg ;; 1348efb46889Smrg *) 1349efb46889Smrg kernel= 1350efb46889Smrg os=$basic_os 1351efb46889Smrg ;; 1352efb46889Smrgesac 1353efb46889Smrg 1354efb46889Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1355efb46889Smrg# etc.) 1356692f60a7Smrgcase $os in 1357efb46889Smrg # First match some system type aliases that might get confused 1358efb46889Smrg # with valid system types. 1359efb46889Smrg # solaris* is a basic system type, with this one exception. 1360efb46889Smrg auroraux) 1361efb46889Smrg os=auroraux 13623f6d0e1dSmrg ;; 1363efb46889Smrg bluegene*) 1364efb46889Smrg os=cnk 1365692f60a7Smrg ;; 1366efb46889Smrg solaris1 | solaris1.*) 1367efb46889Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1368692f60a7Smrg ;; 1369efb46889Smrg solaris) 1370efb46889Smrg os=solaris2 1371692f60a7Smrg ;; 1372efb46889Smrg unixware*) 1373efb46889Smrg os=sysv4.2uw 1374692f60a7Smrg ;; 1375efb46889Smrg # es1800 is here to avoid being matched by es* (a different OS) 1376efb46889Smrg es1800*) 1377efb46889Smrg os=ose 1378692f60a7Smrg ;; 1379efb46889Smrg # Some version numbers need modification 1380efb46889Smrg chorusos*) 1381efb46889Smrg os=chorusos 1382692f60a7Smrg ;; 1383efb46889Smrg isc) 1384efb46889Smrg os=isc2.2 1385692f60a7Smrg ;; 1386efb46889Smrg sco6) 1387efb46889Smrg os=sco5v6 1388692f60a7Smrg ;; 1389efb46889Smrg sco5) 1390efb46889Smrg os=sco3.2v5 1391692f60a7Smrg ;; 1392efb46889Smrg sco4) 1393efb46889Smrg os=sco3.2v4 1394692f60a7Smrg ;; 1395efb46889Smrg sco3.2.[4-9]*) 1396efb46889Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 139754569438Smrg ;; 1398efb46889Smrg sco*v* | scout) 1399efb46889Smrg # Don't match below 1400692f60a7Smrg ;; 1401efb46889Smrg sco*) 1402efb46889Smrg os=sco3.2v2 1403692f60a7Smrg ;; 1404efb46889Smrg psos*) 1405efb46889Smrg os=psos 1406692f60a7Smrg ;; 1407efb46889Smrg qnx*) 1408efb46889Smrg os=qnx 1409692f60a7Smrg ;; 1410efb46889Smrg hiux*) 1411efb46889Smrg os=hiuxwe2 141254569438Smrg ;; 1413efb46889Smrg lynx*178) 1414efb46889Smrg os=lynxos178 1415692f60a7Smrg ;; 1416efb46889Smrg lynx*5) 1417efb46889Smrg os=lynxos5 1418692f60a7Smrg ;; 1419efb46889Smrg lynxos*) 1420efb46889Smrg # don't get caught up in next wildcard 1421692f60a7Smrg ;; 1422efb46889Smrg lynx*) 1423efb46889Smrg os=lynxos 1424692f60a7Smrg ;; 1425efb46889Smrg mac[0-9]*) 1426efb46889Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1427692f60a7Smrg ;; 1428efb46889Smrg opened*) 1429efb46889Smrg os=openedition 1430692f60a7Smrg ;; 1431efb46889Smrg os400*) 1432efb46889Smrg os=os400 1433692f60a7Smrg ;; 1434efb46889Smrg sunos5*) 1435efb46889Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 143654569438Smrg ;; 1437efb46889Smrg sunos6*) 1438efb46889Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1439692f60a7Smrg ;; 1440efb46889Smrg wince*) 1441efb46889Smrg os=wince 1442692f60a7Smrg ;; 1443efb46889Smrg utek*) 1444efb46889Smrg os=bsd 1445692f60a7Smrg ;; 1446efb46889Smrg dynix*) 1447efb46889Smrg os=bsd 1448692f60a7Smrg ;; 1449efb46889Smrg acis*) 1450efb46889Smrg os=aos 1451692f60a7Smrg ;; 1452efb46889Smrg atheos*) 1453efb46889Smrg os=atheos 1454692f60a7Smrg ;; 1455efb46889Smrg syllable*) 1456efb46889Smrg os=syllable 1457692f60a7Smrg ;; 1458efb46889Smrg 386bsd) 1459efb46889Smrg os=bsd 146054569438Smrg ;; 1461efb46889Smrg ctix* | uts*) 1462efb46889Smrg os=sysv 1463692f60a7Smrg ;; 1464efb46889Smrg nova*) 1465efb46889Smrg os=rtmk-nova 1466692f60a7Smrg ;; 1467efb46889Smrg ns2) 1468efb46889Smrg os=nextstep2 1469692f60a7Smrg ;; 1470efb46889Smrg # Preserve the version number of sinix5. 1471efb46889Smrg sinix5.*) 1472efb46889Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1473692f60a7Smrg ;; 1474efb46889Smrg sinix*) 1475efb46889Smrg os=sysv4 1476692f60a7Smrg ;; 1477efb46889Smrg tpf*) 1478efb46889Smrg os=tpf 1479692f60a7Smrg ;; 1480efb46889Smrg triton*) 1481efb46889Smrg os=sysv3 1482692f60a7Smrg ;; 1483efb46889Smrg oss*) 1484efb46889Smrg os=sysv3 1485692f60a7Smrg ;; 1486efb46889Smrg svr4*) 1487efb46889Smrg os=sysv4 1488692f60a7Smrg ;; 1489efb46889Smrg svr3) 1490efb46889Smrg os=sysv3 1491692f60a7Smrg ;; 1492efb46889Smrg sysvr4) 1493efb46889Smrg os=sysv4 1494692f60a7Smrg ;; 1495efb46889Smrg ose*) 1496efb46889Smrg os=ose 149754569438Smrg ;; 1498efb46889Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1499efb46889Smrg os=mint 15003f6d0e1dSmrg ;; 1501efb46889Smrg dicos*) 1502efb46889Smrg os=dicos 15033f6d0e1dSmrg ;; 1504efb46889Smrg pikeos*) 1505efb46889Smrg # Until real need of OS specific support for 1506efb46889Smrg # particular features comes up, bare metal 1507efb46889Smrg # configurations are quite functional. 1508efb46889Smrg case $cpu in 1509efb46889Smrg arm*) 1510efb46889Smrg os=eabi 1511efb46889Smrg ;; 1512efb46889Smrg *) 1513efb46889Smrg os=elf 1514efb46889Smrg ;; 1515efb46889Smrg esac 1516692f60a7Smrg ;; 1517692f60a7Smrg *) 1518efb46889Smrg # No normalization, but not necessarily accepted, that comes below. 1519692f60a7Smrg ;; 1520692f60a7Smrgesac 1521efb46889Smrg 1522692f60a7Smrgelse 1523692f60a7Smrg 1524692f60a7Smrg# Here we handle the default operating systems that come with various machines. 1525692f60a7Smrg# The value should be what the vendor currently ships out the door with their 1526692f60a7Smrg# machine or put another way, the most popular os provided with the machine. 1527692f60a7Smrg 1528692f60a7Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1529692f60a7Smrg# "-sun"), then you have to tell the case statement up towards the top 1530692f60a7Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1531692f60a7Smrg# will signal an error saying that MANUFACTURER isn't an operating 1532692f60a7Smrg# system, and we'll never get to this point. 1533692f60a7Smrg 1534efb46889Smrgkernel= 1535efb46889Smrgcase $cpu-$vendor in 15363f6d0e1dSmrg score-*) 1537efb46889Smrg os=elf 153854569438Smrg ;; 15393f6d0e1dSmrg spu-*) 1540efb46889Smrg os=elf 154154569438Smrg ;; 1542692f60a7Smrg *-acorn) 1543efb46889Smrg os=riscix1.2 1544692f60a7Smrg ;; 1545692f60a7Smrg arm*-rebel) 1546efb46889Smrg kernel=linux 1547efb46889Smrg os=gnu 1548692f60a7Smrg ;; 1549692f60a7Smrg arm*-semi) 1550efb46889Smrg os=aout 1551692f60a7Smrg ;; 15523f6d0e1dSmrg c4x-* | tic4x-*) 1553efb46889Smrg os=coff 15543f6d0e1dSmrg ;; 155595903e71Smrg c8051-*) 1556efb46889Smrg os=elf 1557efb46889Smrg ;; 1558efb46889Smrg clipper-intergraph) 1559efb46889Smrg os=clix 156095903e71Smrg ;; 1561eaa3dbe0Smrg hexagon-*) 1562efb46889Smrg os=elf 1563eaa3dbe0Smrg ;; 15643f6d0e1dSmrg tic54x-*) 1565efb46889Smrg os=coff 15663f6d0e1dSmrg ;; 15673f6d0e1dSmrg tic55x-*) 1568efb46889Smrg os=coff 15693f6d0e1dSmrg ;; 15703f6d0e1dSmrg tic6x-*) 1571efb46889Smrg os=coff 1572692f60a7Smrg ;; 1573692f60a7Smrg # This must come before the *-dec entry. 1574692f60a7Smrg pdp10-*) 1575efb46889Smrg os=tops20 1576692f60a7Smrg ;; 1577692f60a7Smrg pdp11-*) 1578efb46889Smrg os=none 1579692f60a7Smrg ;; 1580692f60a7Smrg *-dec | vax-*) 1581efb46889Smrg os=ultrix4.2 1582692f60a7Smrg ;; 1583692f60a7Smrg m68*-apollo) 1584efb46889Smrg os=domain 1585692f60a7Smrg ;; 1586692f60a7Smrg i386-sun) 1587efb46889Smrg os=sunos4.0.2 1588692f60a7Smrg ;; 1589692f60a7Smrg m68000-sun) 1590efb46889Smrg os=sunos3 1591692f60a7Smrg ;; 1592692f60a7Smrg m68*-cisco) 1593efb46889Smrg os=aout 1594692f60a7Smrg ;; 15953f6d0e1dSmrg mep-*) 1596efb46889Smrg os=elf 159754569438Smrg ;; 1598692f60a7Smrg mips*-cisco) 1599efb46889Smrg os=elf 1600692f60a7Smrg ;; 1601692f60a7Smrg mips*-*) 1602efb46889Smrg os=elf 1603692f60a7Smrg ;; 1604692f60a7Smrg or32-*) 1605efb46889Smrg os=coff 1606692f60a7Smrg ;; 1607692f60a7Smrg *-tti) # must be before sparc entry or we get the wrong os. 1608efb46889Smrg os=sysv3 1609692f60a7Smrg ;; 1610692f60a7Smrg sparc-* | *-sun) 1611efb46889Smrg os=sunos4.1.1 1612692f60a7Smrg ;; 1613efb46889Smrg pru-*) 1614efb46889Smrg os=elf 1615692f60a7Smrg ;; 1616efb46889Smrg *-be) 1617efb46889Smrg os=beos 161854569438Smrg ;; 1619692f60a7Smrg *-ibm) 1620efb46889Smrg os=aix 1621692f60a7Smrg ;; 16223f6d0e1dSmrg *-knuth) 1623efb46889Smrg os=mmixware 162454569438Smrg ;; 1625692f60a7Smrg *-wec) 1626efb46889Smrg os=proelf 1627692f60a7Smrg ;; 1628692f60a7Smrg *-winbond) 1629efb46889Smrg os=proelf 1630692f60a7Smrg ;; 1631692f60a7Smrg *-oki) 1632efb46889Smrg os=proelf 1633692f60a7Smrg ;; 1634692f60a7Smrg *-hp) 1635efb46889Smrg os=hpux 1636692f60a7Smrg ;; 1637692f60a7Smrg *-hitachi) 1638efb46889Smrg os=hiux 1639692f60a7Smrg ;; 1640692f60a7Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1641efb46889Smrg os=sysv 1642692f60a7Smrg ;; 1643692f60a7Smrg *-cbm) 1644efb46889Smrg os=amigaos 1645692f60a7Smrg ;; 1646692f60a7Smrg *-dg) 1647efb46889Smrg os=dgux 1648692f60a7Smrg ;; 1649692f60a7Smrg *-dolphin) 1650efb46889Smrg os=sysv3 1651692f60a7Smrg ;; 1652692f60a7Smrg m68k-ccur) 1653efb46889Smrg os=rtu 1654692f60a7Smrg ;; 1655692f60a7Smrg m88k-omron*) 1656efb46889Smrg os=luna 1657692f60a7Smrg ;; 1658efb46889Smrg *-next) 1659efb46889Smrg os=nextstep 1660692f60a7Smrg ;; 1661692f60a7Smrg *-sequent) 1662efb46889Smrg os=ptx 1663692f60a7Smrg ;; 1664692f60a7Smrg *-crds) 1665efb46889Smrg os=unos 1666692f60a7Smrg ;; 1667692f60a7Smrg *-ns) 1668efb46889Smrg os=genix 1669692f60a7Smrg ;; 1670692f60a7Smrg i370-*) 1671efb46889Smrg os=mvs 1672692f60a7Smrg ;; 1673692f60a7Smrg *-gould) 1674efb46889Smrg os=sysv 1675692f60a7Smrg ;; 1676692f60a7Smrg *-highlevel) 1677efb46889Smrg os=bsd 1678692f60a7Smrg ;; 1679692f60a7Smrg *-encore) 1680efb46889Smrg os=bsd 1681692f60a7Smrg ;; 1682692f60a7Smrg *-sgi) 1683efb46889Smrg os=irix 1684692f60a7Smrg ;; 1685692f60a7Smrg *-siemens) 1686efb46889Smrg os=sysv4 1687692f60a7Smrg ;; 1688692f60a7Smrg *-masscomp) 1689efb46889Smrg os=rtu 1690692f60a7Smrg ;; 1691692f60a7Smrg f30[01]-fujitsu | f700-fujitsu) 1692efb46889Smrg os=uxpv 1693692f60a7Smrg ;; 1694692f60a7Smrg *-rom68k) 1695efb46889Smrg os=coff 1696692f60a7Smrg ;; 1697692f60a7Smrg *-*bug) 1698efb46889Smrg os=coff 1699692f60a7Smrg ;; 1700692f60a7Smrg *-apple) 1701efb46889Smrg os=macos 1702692f60a7Smrg ;; 1703692f60a7Smrg *-atari*) 1704efb46889Smrg os=mint 1705efb46889Smrg ;; 1706efb46889Smrg *-wrs) 1707efb46889Smrg os=vxworks 1708692f60a7Smrg ;; 1709692f60a7Smrg *) 1710efb46889Smrg os=none 1711692f60a7Smrg ;; 1712692f60a7Smrgesac 1713efb46889Smrg 1714692f60a7Smrgfi 1715692f60a7Smrg 1716efb46889Smrg# Now, validate our (potentially fixed-up) OS. 1717efb46889Smrgcase $os in 1718efb46889Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1719efb46889Smrg musl* | newlib* | relibc* | uclibc*) 1720efb46889Smrg ;; 1721efb46889Smrg # Likewise for "kernel-abi" 1722efb46889Smrg eabi* | gnueabi*) 1723efb46889Smrg ;; 1724efb46889Smrg # VxWorks passes extra cpu info in the 4th filed. 1725efb46889Smrg simlinux | simwindows | spe) 1726efb46889Smrg ;; 1727efb46889Smrg # Now accept the basic system types. 1728efb46889Smrg # The portable systems comes first. 1729efb46889Smrg # Each alternative MUST end in a * to match a version number. 1730efb46889Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1731efb46889Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1732efb46889Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1733efb46889Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1734efb46889Smrg | hiux* | abug | nacl* | netware* | windows* \ 1735efb46889Smrg | os9* | macos* | osx* | ios* \ 1736efb46889Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1737efb46889Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1738efb46889Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1739efb46889Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1740efb46889Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1741efb46889Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1742efb46889Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1743efb46889Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1744efb46889Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1745efb46889Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1746efb46889Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1747efb46889Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1748efb46889Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1749efb46889Smrg | midipix* | mingw32* | mingw64* | mint* \ 1750efb46889Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1751efb46889Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1752efb46889Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1753efb46889Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1754efb46889Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1755efb46889Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1756efb46889Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1757efb46889Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1758efb46889Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1759efb46889Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1760efb46889Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1761efb46889Smrg | fiwix* | mlibc* ) 1762efb46889Smrg ;; 1763efb46889Smrg # This one is extra strict with allowed versions 1764efb46889Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1765efb46889Smrg # Don't forget version if it is 3.2v4 or newer. 1766efb46889Smrg ;; 1767efb46889Smrg none) 1768efb46889Smrg ;; 1769efb46889Smrg kernel* ) 1770efb46889Smrg # Restricted further below 1771efb46889Smrg ;; 1772efb46889Smrg *) 1773efb46889Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1774efb46889Smrg exit 1 1775efb46889Smrg ;; 1776efb46889Smrgesac 1777efb46889Smrg 1778efb46889Smrg# As a final step for OS-related things, validate the OS-kernel combination 1779efb46889Smrg# (given a valid OS), if there is a kernel. 1780efb46889Smrgcase $kernel-$os in 1781efb46889Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1782efb46889Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 1783efb46889Smrg ;; 1784efb46889Smrg uclinux-uclibc* ) 1785efb46889Smrg ;; 1786efb46889Smrg managarm-mlibc* | managarm-kernel* ) 1787efb46889Smrg ;; 1788efb46889Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 1789efb46889Smrg # These are just libc implementations, not actual OSes, and thus 1790efb46889Smrg # require a kernel. 1791efb46889Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1792efb46889Smrg exit 1 1793efb46889Smrg ;; 1794efb46889Smrg -kernel* ) 1795efb46889Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 1796efb46889Smrg exit 1 1797efb46889Smrg ;; 1798efb46889Smrg *-kernel* ) 1799efb46889Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 1800efb46889Smrg exit 1 1801efb46889Smrg ;; 1802efb46889Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1803efb46889Smrg ;; 1804efb46889Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1805efb46889Smrg ;; 1806efb46889Smrg nto-qnx*) 1807efb46889Smrg ;; 1808efb46889Smrg os2-emx) 1809efb46889Smrg ;; 1810efb46889Smrg *-eabi* | *-gnueabi*) 1811efb46889Smrg ;; 1812efb46889Smrg -*) 1813efb46889Smrg # Blank kernel with real OS is always fine. 1814efb46889Smrg ;; 1815efb46889Smrg *-*) 1816efb46889Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1817efb46889Smrg exit 1 1818efb46889Smrg ;; 1819efb46889Smrgesac 1820efb46889Smrg 1821692f60a7Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1822692f60a7Smrg# manufacturer. We pick the logical manufacturer. 1823efb46889Smrgcase $vendor in 1824efb46889Smrg unknown) 1825efb46889Smrg case $cpu-$os in 1826efb46889Smrg *-riscix*) 1827692f60a7Smrg vendor=acorn 1828692f60a7Smrg ;; 1829efb46889Smrg *-sunos*) 1830692f60a7Smrg vendor=sun 1831692f60a7Smrg ;; 1832efb46889Smrg *-cnk* | *-aix*) 1833692f60a7Smrg vendor=ibm 1834692f60a7Smrg ;; 1835efb46889Smrg *-beos*) 1836692f60a7Smrg vendor=be 1837692f60a7Smrg ;; 1838efb46889Smrg *-hpux*) 1839692f60a7Smrg vendor=hp 1840692f60a7Smrg ;; 1841efb46889Smrg *-mpeix*) 1842692f60a7Smrg vendor=hp 1843692f60a7Smrg ;; 1844efb46889Smrg *-hiux*) 1845692f60a7Smrg vendor=hitachi 1846692f60a7Smrg ;; 1847efb46889Smrg *-unos*) 1848692f60a7Smrg vendor=crds 1849692f60a7Smrg ;; 1850efb46889Smrg *-dgux*) 1851692f60a7Smrg vendor=dg 1852692f60a7Smrg ;; 1853efb46889Smrg *-luna*) 1854692f60a7Smrg vendor=omron 1855692f60a7Smrg ;; 1856efb46889Smrg *-genix*) 1857692f60a7Smrg vendor=ns 1858692f60a7Smrg ;; 1859efb46889Smrg *-clix*) 1860efb46889Smrg vendor=intergraph 1861efb46889Smrg ;; 1862efb46889Smrg *-mvs* | *-opened*) 1863efb46889Smrg vendor=ibm 1864efb46889Smrg ;; 1865efb46889Smrg *-os400*) 1866692f60a7Smrg vendor=ibm 1867692f60a7Smrg ;; 1868efb46889Smrg s390-* | s390x-*) 186954569438Smrg vendor=ibm 187054569438Smrg ;; 1871efb46889Smrg *-ptx*) 1872692f60a7Smrg vendor=sequent 1873692f60a7Smrg ;; 1874efb46889Smrg *-tpf*) 187554569438Smrg vendor=ibm 187654569438Smrg ;; 1877efb46889Smrg *-vxsim* | *-vxworks* | *-windiss*) 1878692f60a7Smrg vendor=wrs 1879692f60a7Smrg ;; 1880efb46889Smrg *-aux*) 1881692f60a7Smrg vendor=apple 1882692f60a7Smrg ;; 1883efb46889Smrg *-hms*) 1884692f60a7Smrg vendor=hitachi 1885692f60a7Smrg ;; 1886efb46889Smrg *-mpw* | *-macos*) 1887692f60a7Smrg vendor=apple 1888692f60a7Smrg ;; 1889efb46889Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1890692f60a7Smrg vendor=atari 1891692f60a7Smrg ;; 1892efb46889Smrg *-vos*) 1893692f60a7Smrg vendor=stratus 1894692f60a7Smrg ;; 1895692f60a7Smrg esac 1896692f60a7Smrg ;; 1897692f60a7Smrgesac 1898692f60a7Smrg 1899efb46889Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 190054569438Smrgexit 1901692f60a7Smrg 1902692f60a7Smrg# Local variables: 1903efb46889Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1904692f60a7Smrg# time-stamp-start: "timestamp='" 1905692f60a7Smrg# time-stamp-format: "%:y-%02m-%02d" 1906692f60a7Smrg# time-stamp-end: "'" 1907692f60a7Smrg# End: 1908