164ce7165Smrg#! /bin/sh 264ce7165Smrg# Configuration validation subroutine script. 3b71ad168Smrg# Copyright 1992-2021 Free Software Foundation, Inc. 464ce7165Smrg 5b71ad168Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6b71ad168Smrg 7b71ad168Smrgtimestamp='2021-08-14' 864ce7165Smrg 981440437Smrg# This file is free software; you can redistribute it and/or modify it 1081440437Smrg# under the terms of the GNU General Public License as published by 1181440437Smrg# the Free Software Foundation; either version 3 of the License, or 1264ce7165Smrg# (at your option) any later version. 1364ce7165Smrg# 1481440437Smrg# This program is distributed in the hope that it will be useful, but 1581440437Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1681440437Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1781440437Smrg# General Public License for more details. 1864ce7165Smrg# 1964ce7165Smrg# You should have received a copy of the GNU General Public License 20aadd013eSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 2164ce7165Smrg# 2264ce7165Smrg# As a special exception to the GNU General Public License, if you 2364ce7165Smrg# distribute this file as part of a program that contains a 2464ce7165Smrg# configuration script generated by Autoconf, you may include it under 2581440437Smrg# the same distribution terms that you use for the rest of that 2681440437Smrg# program. This Exception is an additional permission under section 7 2781440437Smrg# of the GNU General Public License, version 3 ("GPLv3"). 2864ce7165Smrg 2964ce7165Smrg 3095fdd44cSmrg# Please send patches to <config-patches@gnu.org>. 3164ce7165Smrg# 3264ce7165Smrg# Configuration subroutine to validate and canonicalize a configuration type. 3364ce7165Smrg# Supply the specified configuration type as an argument. 3464ce7165Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 3564ce7165Smrg# Otherwise, we print the canonical config type on stdout and succeed. 3664ce7165Smrg 37169a0819Smrg# You can get the latest version of this script from: 38b71ad168Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39169a0819Smrg 4064ce7165Smrg# This file is supposed to be the same for all GNU packages 4164ce7165Smrg# and recognize all the CPU types, system types and aliases 4264ce7165Smrg# that are meaningful with *any* GNU software. 4364ce7165Smrg# Each package is responsible for reporting which valid configurations 4464ce7165Smrg# it does not support. The user should be able to distinguish 4564ce7165Smrg# a failure to support a valid configuration from a meaningless 4664ce7165Smrg# configuration. 4764ce7165Smrg 4864ce7165Smrg# The goal of this file is to map all the various variations of a given 4964ce7165Smrg# machine specification into a single specification in the form: 5064ce7165Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5164ce7165Smrg# or in some cases, the newer four-part form: 5264ce7165Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5364ce7165Smrg# It is wrong to echo any other type of specification. 5464ce7165Smrg 55b71ad168Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 56b71ad168Smrg# about features and limitations of the classic Bourne shell that were 57b71ad168Smrg# superseded or lifted in POSIX. However, this script identifies a wide 58b71ad168Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59b71ad168Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60b71ad168Smrg# have a pre-POSIX /bin/sh. 61b71ad168Smrg 6264ce7165Smrgme=`echo "$0" | sed -e 's,.*/,,'` 6364ce7165Smrg 6464ce7165Smrgusage="\ 65aadd013eSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6664ce7165Smrg 6764ce7165SmrgCanonicalize a configuration name. 6864ce7165Smrg 69aadd013eSmrgOptions: 7064ce7165Smrg -h, --help print this help, then exit 7164ce7165Smrg -t, --time-stamp print date of last modification, then exit 7264ce7165Smrg -v, --version print version number, then exit 7364ce7165Smrg 7464ce7165SmrgReport bugs and patches to <config-patches@gnu.org>." 7564ce7165Smrg 7664ce7165Smrgversion="\ 7764ce7165SmrgGNU config.sub ($timestamp) 7864ce7165Smrg 79b71ad168SmrgCopyright 1992-2021 Free Software Foundation, Inc. 8064ce7165Smrg 8164ce7165SmrgThis is free software; see the source for copying conditions. There is NO 8264ce7165Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8364ce7165Smrg 8464ce7165Smrghelp=" 8564ce7165SmrgTry \`$me --help' for more information." 8664ce7165Smrg 8764ce7165Smrg# Parse command line 8864ce7165Smrgwhile test $# -gt 0 ; do 8964ce7165Smrg case $1 in 9064ce7165Smrg --time-stamp | --time* | -t ) 9164ce7165Smrg echo "$timestamp" ; exit ;; 9264ce7165Smrg --version | -v ) 9364ce7165Smrg echo "$version" ; exit ;; 9464ce7165Smrg --help | --h* | -h ) 9564ce7165Smrg echo "$usage"; exit ;; 9664ce7165Smrg -- ) # Stop option processing 9764ce7165Smrg shift; break ;; 9864ce7165Smrg - ) # Use stdin as input. 9964ce7165Smrg break ;; 10064ce7165Smrg -* ) 101b71ad168Smrg echo "$me: invalid option $1$help" >&2 10264ce7165Smrg exit 1 ;; 10364ce7165Smrg 10464ce7165Smrg *local*) 10564ce7165Smrg # First pass through any local machine types. 106aadd013eSmrg echo "$1" 10764ce7165Smrg exit ;; 10864ce7165Smrg 10964ce7165Smrg * ) 11064ce7165Smrg break ;; 11164ce7165Smrg esac 11264ce7165Smrgdone 11364ce7165Smrg 11464ce7165Smrgcase $# in 11564ce7165Smrg 0) echo "$me: missing argument$help" >&2 11664ce7165Smrg exit 1;; 11764ce7165Smrg 1) ;; 11864ce7165Smrg *) echo "$me: too many arguments$help" >&2 11964ce7165Smrg exit 1;; 12064ce7165Smrgesac 12164ce7165Smrg 122b71ad168Smrg# Split fields of configuration type 123b71ad168Smrg# shellcheck disable=SC2162 124b71ad168Smrgsaved_IFS=$IFS 125b71ad168SmrgIFS="-" read field1 field2 field3 field4 <<EOF 126b71ad168Smrg$1 127b71ad168SmrgEOF 128b71ad168SmrgIFS=$saved_IFS 12964ce7165Smrg 130b71ad168Smrg# Separate into logical components for further validation 131b71ad168Smrgcase $1 in 132b71ad168Smrg *-*-*-*-*) 133b71ad168Smrg echo Invalid configuration \`"$1"\': more than four components >&2 134b71ad168Smrg exit 1 13581440437Smrg ;; 136b71ad168Smrg *-*-*-*) 137b71ad168Smrg basic_machine=$field1-$field2 138b71ad168Smrg basic_os=$field3-$field4 13964ce7165Smrg ;; 140b71ad168Smrg *-*-*) 141b71ad168Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142b71ad168Smrg # parts 143b71ad168Smrg maybe_os=$field2-$field3 144b71ad168Smrg case $maybe_os in 145b71ad168Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 146b71ad168Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147b71ad168Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148b71ad168Smrg | storm-chaos* | os2-emx* | rtmk-nova*) 149b71ad168Smrg basic_machine=$field1 150b71ad168Smrg basic_os=$maybe_os 151b71ad168Smrg ;; 152b71ad168Smrg android-linux) 153b71ad168Smrg basic_machine=$field1-unknown 154b71ad168Smrg basic_os=linux-android 155b71ad168Smrg ;; 156b71ad168Smrg *) 157b71ad168Smrg basic_machine=$field1-$field2 158b71ad168Smrg basic_os=$field3 159b71ad168Smrg ;; 160b71ad168Smrg esac 16164ce7165Smrg ;; 162b71ad168Smrg *-*) 163b71ad168Smrg # A lone config we happen to match not fitting any pattern 164b71ad168Smrg case $field1-$field2 in 165b71ad168Smrg decstation-3100) 166b71ad168Smrg basic_machine=mips-dec 167b71ad168Smrg basic_os= 168b71ad168Smrg ;; 169b71ad168Smrg *-*) 170b71ad168Smrg # Second component is usually, but not always the OS 171b71ad168Smrg case $field2 in 172b71ad168Smrg # Prevent following clause from handling this valid os 173b71ad168Smrg sun*os*) 174b71ad168Smrg basic_machine=$field1 175b71ad168Smrg basic_os=$field2 176b71ad168Smrg ;; 177b71ad168Smrg zephyr*) 178b71ad168Smrg basic_machine=$field1-unknown 179b71ad168Smrg basic_os=$field2 180b71ad168Smrg ;; 181b71ad168Smrg # Manufacturers 182b71ad168Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183b71ad168Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184b71ad168Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185b71ad168Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186b71ad168Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187b71ad168Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188b71ad168Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189b71ad168Smrg | microblaze* | sim | cisco \ 190b71ad168Smrg | oki | wec | wrs | winbond) 191b71ad168Smrg basic_machine=$field1-$field2 192b71ad168Smrg basic_os= 193b71ad168Smrg ;; 194b71ad168Smrg *) 195b71ad168Smrg basic_machine=$field1 196b71ad168Smrg basic_os=$field2 197b71ad168Smrg ;; 198b71ad168Smrg esac 199b71ad168Smrg ;; 200b71ad168Smrg esac 20164ce7165Smrg ;; 202b71ad168Smrg *) 203b71ad168Smrg # Convert single-component short-hands not valid as part of 204b71ad168Smrg # multi-component configurations. 205b71ad168Smrg case $field1 in 206b71ad168Smrg 386bsd) 207b71ad168Smrg basic_machine=i386-pc 208b71ad168Smrg basic_os=bsd 209b71ad168Smrg ;; 210b71ad168Smrg a29khif) 211b71ad168Smrg basic_machine=a29k-amd 212b71ad168Smrg basic_os=udi 213b71ad168Smrg ;; 214b71ad168Smrg adobe68k) 215b71ad168Smrg basic_machine=m68010-adobe 216b71ad168Smrg basic_os=scout 217b71ad168Smrg ;; 218b71ad168Smrg alliant) 219b71ad168Smrg basic_machine=fx80-alliant 220b71ad168Smrg basic_os= 221b71ad168Smrg ;; 222b71ad168Smrg altos | altos3068) 223b71ad168Smrg basic_machine=m68k-altos 224b71ad168Smrg basic_os= 225b71ad168Smrg ;; 226b71ad168Smrg am29k) 227b71ad168Smrg basic_machine=a29k-none 228b71ad168Smrg basic_os=bsd 229b71ad168Smrg ;; 230b71ad168Smrg amdahl) 231b71ad168Smrg basic_machine=580-amdahl 232b71ad168Smrg basic_os=sysv 233b71ad168Smrg ;; 234b71ad168Smrg amiga) 235b71ad168Smrg basic_machine=m68k-unknown 236b71ad168Smrg basic_os= 237b71ad168Smrg ;; 238b71ad168Smrg amigaos | amigados) 239b71ad168Smrg basic_machine=m68k-unknown 240b71ad168Smrg basic_os=amigaos 241b71ad168Smrg ;; 242b71ad168Smrg amigaunix | amix) 243b71ad168Smrg basic_machine=m68k-unknown 244b71ad168Smrg basic_os=sysv4 245b71ad168Smrg ;; 246b71ad168Smrg apollo68) 247b71ad168Smrg basic_machine=m68k-apollo 248b71ad168Smrg basic_os=sysv 249b71ad168Smrg ;; 250b71ad168Smrg apollo68bsd) 251b71ad168Smrg basic_machine=m68k-apollo 252b71ad168Smrg basic_os=bsd 253b71ad168Smrg ;; 254b71ad168Smrg aros) 255b71ad168Smrg basic_machine=i386-pc 256b71ad168Smrg basic_os=aros 257b71ad168Smrg ;; 258b71ad168Smrg aux) 259b71ad168Smrg basic_machine=m68k-apple 260b71ad168Smrg basic_os=aux 261b71ad168Smrg ;; 262b71ad168Smrg balance) 263b71ad168Smrg basic_machine=ns32k-sequent 264b71ad168Smrg basic_os=dynix 265b71ad168Smrg ;; 266b71ad168Smrg blackfin) 267b71ad168Smrg basic_machine=bfin-unknown 268b71ad168Smrg basic_os=linux 269b71ad168Smrg ;; 270b71ad168Smrg cegcc) 271b71ad168Smrg basic_machine=arm-unknown 272b71ad168Smrg basic_os=cegcc 273b71ad168Smrg ;; 274b71ad168Smrg convex-c1) 275b71ad168Smrg basic_machine=c1-convex 276b71ad168Smrg basic_os=bsd 277b71ad168Smrg ;; 278b71ad168Smrg convex-c2) 279b71ad168Smrg basic_machine=c2-convex 280b71ad168Smrg basic_os=bsd 281b71ad168Smrg ;; 282b71ad168Smrg convex-c32) 283b71ad168Smrg basic_machine=c32-convex 284b71ad168Smrg basic_os=bsd 285b71ad168Smrg ;; 286b71ad168Smrg convex-c34) 287b71ad168Smrg basic_machine=c34-convex 288b71ad168Smrg basic_os=bsd 289b71ad168Smrg ;; 290b71ad168Smrg convex-c38) 291b71ad168Smrg basic_machine=c38-convex 292b71ad168Smrg basic_os=bsd 293b71ad168Smrg ;; 294b71ad168Smrg cray) 295b71ad168Smrg basic_machine=j90-cray 296b71ad168Smrg basic_os=unicos 297b71ad168Smrg ;; 298b71ad168Smrg crds | unos) 299b71ad168Smrg basic_machine=m68k-crds 300b71ad168Smrg basic_os= 301b71ad168Smrg ;; 302b71ad168Smrg da30) 303b71ad168Smrg basic_machine=m68k-da30 304b71ad168Smrg basic_os= 305b71ad168Smrg ;; 306b71ad168Smrg decstation | pmax | pmin | dec3100 | decstatn) 307b71ad168Smrg basic_machine=mips-dec 308b71ad168Smrg basic_os= 309b71ad168Smrg ;; 310b71ad168Smrg delta88) 311b71ad168Smrg basic_machine=m88k-motorola 312b71ad168Smrg basic_os=sysv3 313b71ad168Smrg ;; 314b71ad168Smrg dicos) 315b71ad168Smrg basic_machine=i686-pc 316b71ad168Smrg basic_os=dicos 317b71ad168Smrg ;; 318b71ad168Smrg djgpp) 319b71ad168Smrg basic_machine=i586-pc 320b71ad168Smrg basic_os=msdosdjgpp 321b71ad168Smrg ;; 322b71ad168Smrg ebmon29k) 323b71ad168Smrg basic_machine=a29k-amd 324b71ad168Smrg basic_os=ebmon 325b71ad168Smrg ;; 326b71ad168Smrg es1800 | OSE68k | ose68k | ose | OSE) 327b71ad168Smrg basic_machine=m68k-ericsson 328b71ad168Smrg basic_os=ose 329b71ad168Smrg ;; 330b71ad168Smrg gmicro) 331b71ad168Smrg basic_machine=tron-gmicro 332b71ad168Smrg basic_os=sysv 333b71ad168Smrg ;; 334b71ad168Smrg go32) 335b71ad168Smrg basic_machine=i386-pc 336b71ad168Smrg basic_os=go32 337b71ad168Smrg ;; 338b71ad168Smrg h8300hms) 339b71ad168Smrg basic_machine=h8300-hitachi 340b71ad168Smrg basic_os=hms 341b71ad168Smrg ;; 342b71ad168Smrg h8300xray) 343b71ad168Smrg basic_machine=h8300-hitachi 344b71ad168Smrg basic_os=xray 345b71ad168Smrg ;; 346b71ad168Smrg h8500hms) 347b71ad168Smrg basic_machine=h8500-hitachi 348b71ad168Smrg basic_os=hms 349b71ad168Smrg ;; 350b71ad168Smrg harris) 351b71ad168Smrg basic_machine=m88k-harris 352b71ad168Smrg basic_os=sysv3 353b71ad168Smrg ;; 354b71ad168Smrg hp300 | hp300hpux) 355b71ad168Smrg basic_machine=m68k-hp 356b71ad168Smrg basic_os=hpux 357b71ad168Smrg ;; 358b71ad168Smrg hp300bsd) 359b71ad168Smrg basic_machine=m68k-hp 360b71ad168Smrg basic_os=bsd 361b71ad168Smrg ;; 362b71ad168Smrg hppaosf) 363b71ad168Smrg basic_machine=hppa1.1-hp 364b71ad168Smrg basic_os=osf 365b71ad168Smrg ;; 366b71ad168Smrg hppro) 367b71ad168Smrg basic_machine=hppa1.1-hp 368b71ad168Smrg basic_os=proelf 369b71ad168Smrg ;; 370b71ad168Smrg i386mach) 371b71ad168Smrg basic_machine=i386-mach 372b71ad168Smrg basic_os=mach 373b71ad168Smrg ;; 374b71ad168Smrg isi68 | isi) 375b71ad168Smrg basic_machine=m68k-isi 376b71ad168Smrg basic_os=sysv 377b71ad168Smrg ;; 378b71ad168Smrg m68knommu) 379b71ad168Smrg basic_machine=m68k-unknown 380b71ad168Smrg basic_os=linux 381b71ad168Smrg ;; 382b71ad168Smrg magnum | m3230) 383b71ad168Smrg basic_machine=mips-mips 384b71ad168Smrg basic_os=sysv 385b71ad168Smrg ;; 386b71ad168Smrg merlin) 387b71ad168Smrg basic_machine=ns32k-utek 388b71ad168Smrg basic_os=sysv 389b71ad168Smrg ;; 390b71ad168Smrg mingw64) 391b71ad168Smrg basic_machine=x86_64-pc 392b71ad168Smrg basic_os=mingw64 393b71ad168Smrg ;; 394b71ad168Smrg mingw32) 395b71ad168Smrg basic_machine=i686-pc 396b71ad168Smrg basic_os=mingw32 397b71ad168Smrg ;; 398b71ad168Smrg mingw32ce) 399b71ad168Smrg basic_machine=arm-unknown 400b71ad168Smrg basic_os=mingw32ce 401b71ad168Smrg ;; 402b71ad168Smrg monitor) 403b71ad168Smrg basic_machine=m68k-rom68k 404b71ad168Smrg basic_os=coff 405b71ad168Smrg ;; 406b71ad168Smrg morphos) 407b71ad168Smrg basic_machine=powerpc-unknown 408b71ad168Smrg basic_os=morphos 409b71ad168Smrg ;; 410b71ad168Smrg moxiebox) 411b71ad168Smrg basic_machine=moxie-unknown 412b71ad168Smrg basic_os=moxiebox 413b71ad168Smrg ;; 414b71ad168Smrg msdos) 415b71ad168Smrg basic_machine=i386-pc 416b71ad168Smrg basic_os=msdos 417b71ad168Smrg ;; 418b71ad168Smrg msys) 419b71ad168Smrg basic_machine=i686-pc 420b71ad168Smrg basic_os=msys 421b71ad168Smrg ;; 422b71ad168Smrg mvs) 423b71ad168Smrg basic_machine=i370-ibm 424b71ad168Smrg basic_os=mvs 425b71ad168Smrg ;; 426b71ad168Smrg nacl) 427b71ad168Smrg basic_machine=le32-unknown 428b71ad168Smrg basic_os=nacl 429b71ad168Smrg ;; 430b71ad168Smrg ncr3000) 431b71ad168Smrg basic_machine=i486-ncr 432b71ad168Smrg basic_os=sysv4 433b71ad168Smrg ;; 434b71ad168Smrg netbsd386) 435b71ad168Smrg basic_machine=i386-pc 436b71ad168Smrg basic_os=netbsd 437b71ad168Smrg ;; 438b71ad168Smrg netwinder) 439b71ad168Smrg basic_machine=armv4l-rebel 440b71ad168Smrg basic_os=linux 441b71ad168Smrg ;; 442b71ad168Smrg news | news700 | news800 | news900) 443b71ad168Smrg basic_machine=m68k-sony 444b71ad168Smrg basic_os=newsos 445b71ad168Smrg ;; 446b71ad168Smrg news1000) 447b71ad168Smrg basic_machine=m68030-sony 448b71ad168Smrg basic_os=newsos 449b71ad168Smrg ;; 450b71ad168Smrg necv70) 451b71ad168Smrg basic_machine=v70-nec 452b71ad168Smrg basic_os=sysv 453b71ad168Smrg ;; 454b71ad168Smrg nh3000) 455b71ad168Smrg basic_machine=m68k-harris 456b71ad168Smrg basic_os=cxux 457b71ad168Smrg ;; 458b71ad168Smrg nh[45]000) 459b71ad168Smrg basic_machine=m88k-harris 460b71ad168Smrg basic_os=cxux 461b71ad168Smrg ;; 462b71ad168Smrg nindy960) 463b71ad168Smrg basic_machine=i960-intel 464b71ad168Smrg basic_os=nindy 465b71ad168Smrg ;; 466b71ad168Smrg mon960) 467b71ad168Smrg basic_machine=i960-intel 468b71ad168Smrg basic_os=mon960 469b71ad168Smrg ;; 470b71ad168Smrg nonstopux) 471b71ad168Smrg basic_machine=mips-compaq 472b71ad168Smrg basic_os=nonstopux 473b71ad168Smrg ;; 474b71ad168Smrg os400) 475b71ad168Smrg basic_machine=powerpc-ibm 476b71ad168Smrg basic_os=os400 477b71ad168Smrg ;; 478b71ad168Smrg OSE68000 | ose68000) 479b71ad168Smrg basic_machine=m68000-ericsson 480b71ad168Smrg basic_os=ose 481b71ad168Smrg ;; 482b71ad168Smrg os68k) 483b71ad168Smrg basic_machine=m68k-none 484b71ad168Smrg basic_os=os68k 485b71ad168Smrg ;; 486b71ad168Smrg paragon) 487b71ad168Smrg basic_machine=i860-intel 488b71ad168Smrg basic_os=osf 489b71ad168Smrg ;; 490b71ad168Smrg parisc) 491b71ad168Smrg basic_machine=hppa-unknown 492b71ad168Smrg basic_os=linux 493b71ad168Smrg ;; 494b71ad168Smrg psp) 495b71ad168Smrg basic_machine=mipsallegrexel-sony 496b71ad168Smrg basic_os=psp 497b71ad168Smrg ;; 498b71ad168Smrg pw32) 499b71ad168Smrg basic_machine=i586-unknown 500b71ad168Smrg basic_os=pw32 501b71ad168Smrg ;; 502b71ad168Smrg rdos | rdos64) 503b71ad168Smrg basic_machine=x86_64-pc 504b71ad168Smrg basic_os=rdos 505b71ad168Smrg ;; 506b71ad168Smrg rdos32) 507b71ad168Smrg basic_machine=i386-pc 508b71ad168Smrg basic_os=rdos 509b71ad168Smrg ;; 510b71ad168Smrg rom68k) 511b71ad168Smrg basic_machine=m68k-rom68k 512b71ad168Smrg basic_os=coff 513b71ad168Smrg ;; 514b71ad168Smrg sa29200) 515b71ad168Smrg basic_machine=a29k-amd 516b71ad168Smrg basic_os=udi 517b71ad168Smrg ;; 518b71ad168Smrg sei) 519b71ad168Smrg basic_machine=mips-sei 520b71ad168Smrg basic_os=seiux 521b71ad168Smrg ;; 522b71ad168Smrg sequent) 523b71ad168Smrg basic_machine=i386-sequent 524b71ad168Smrg basic_os= 525b71ad168Smrg ;; 526b71ad168Smrg sps7) 527b71ad168Smrg basic_machine=m68k-bull 528b71ad168Smrg basic_os=sysv2 529b71ad168Smrg ;; 530b71ad168Smrg st2000) 531b71ad168Smrg basic_machine=m68k-tandem 532b71ad168Smrg basic_os= 533b71ad168Smrg ;; 534b71ad168Smrg stratus) 535b71ad168Smrg basic_machine=i860-stratus 536b71ad168Smrg basic_os=sysv4 537b71ad168Smrg ;; 538b71ad168Smrg sun2) 539b71ad168Smrg basic_machine=m68000-sun 540b71ad168Smrg basic_os= 541b71ad168Smrg ;; 542b71ad168Smrg sun2os3) 543b71ad168Smrg basic_machine=m68000-sun 544b71ad168Smrg basic_os=sunos3 545b71ad168Smrg ;; 546b71ad168Smrg sun2os4) 547b71ad168Smrg basic_machine=m68000-sun 548b71ad168Smrg basic_os=sunos4 549b71ad168Smrg ;; 550b71ad168Smrg sun3) 551b71ad168Smrg basic_machine=m68k-sun 552b71ad168Smrg basic_os= 553b71ad168Smrg ;; 554b71ad168Smrg sun3os3) 555b71ad168Smrg basic_machine=m68k-sun 556b71ad168Smrg basic_os=sunos3 557b71ad168Smrg ;; 558b71ad168Smrg sun3os4) 559b71ad168Smrg basic_machine=m68k-sun 560b71ad168Smrg basic_os=sunos4 561b71ad168Smrg ;; 562b71ad168Smrg sun4) 563b71ad168Smrg basic_machine=sparc-sun 564b71ad168Smrg basic_os= 565b71ad168Smrg ;; 566b71ad168Smrg sun4os3) 567b71ad168Smrg basic_machine=sparc-sun 568b71ad168Smrg basic_os=sunos3 569b71ad168Smrg ;; 570b71ad168Smrg sun4os4) 571b71ad168Smrg basic_machine=sparc-sun 572b71ad168Smrg basic_os=sunos4 573b71ad168Smrg ;; 574b71ad168Smrg sun4sol2) 575b71ad168Smrg basic_machine=sparc-sun 576b71ad168Smrg basic_os=solaris2 577b71ad168Smrg ;; 578b71ad168Smrg sun386 | sun386i | roadrunner) 579b71ad168Smrg basic_machine=i386-sun 580b71ad168Smrg basic_os= 581b71ad168Smrg ;; 582b71ad168Smrg sv1) 583b71ad168Smrg basic_machine=sv1-cray 584b71ad168Smrg basic_os=unicos 585b71ad168Smrg ;; 586b71ad168Smrg symmetry) 587b71ad168Smrg basic_machine=i386-sequent 588b71ad168Smrg basic_os=dynix 589b71ad168Smrg ;; 590b71ad168Smrg t3e) 591b71ad168Smrg basic_machine=alphaev5-cray 592b71ad168Smrg basic_os=unicos 593b71ad168Smrg ;; 594b71ad168Smrg t90) 595b71ad168Smrg basic_machine=t90-cray 596b71ad168Smrg basic_os=unicos 597b71ad168Smrg ;; 598b71ad168Smrg toad1) 599b71ad168Smrg basic_machine=pdp10-xkl 600b71ad168Smrg basic_os=tops20 601b71ad168Smrg ;; 602b71ad168Smrg tpf) 603b71ad168Smrg basic_machine=s390x-ibm 604b71ad168Smrg basic_os=tpf 605b71ad168Smrg ;; 606b71ad168Smrg udi29k) 607b71ad168Smrg basic_machine=a29k-amd 608b71ad168Smrg basic_os=udi 609b71ad168Smrg ;; 610b71ad168Smrg ultra3) 611b71ad168Smrg basic_machine=a29k-nyu 612b71ad168Smrg basic_os=sym1 613b71ad168Smrg ;; 614b71ad168Smrg v810 | necv810) 615b71ad168Smrg basic_machine=v810-nec 616b71ad168Smrg basic_os=none 617b71ad168Smrg ;; 618b71ad168Smrg vaxv) 619b71ad168Smrg basic_machine=vax-dec 620b71ad168Smrg basic_os=sysv 621b71ad168Smrg ;; 622b71ad168Smrg vms) 623b71ad168Smrg basic_machine=vax-dec 624b71ad168Smrg basic_os=vms 625b71ad168Smrg ;; 626b71ad168Smrg vsta) 627b71ad168Smrg basic_machine=i386-pc 628b71ad168Smrg basic_os=vsta 629b71ad168Smrg ;; 630b71ad168Smrg vxworks960) 631b71ad168Smrg basic_machine=i960-wrs 632b71ad168Smrg basic_os=vxworks 633b71ad168Smrg ;; 634b71ad168Smrg vxworks68) 635b71ad168Smrg basic_machine=m68k-wrs 636b71ad168Smrg basic_os=vxworks 637b71ad168Smrg ;; 638b71ad168Smrg vxworks29k) 639b71ad168Smrg basic_machine=a29k-wrs 640b71ad168Smrg basic_os=vxworks 641b71ad168Smrg ;; 642b71ad168Smrg xbox) 643b71ad168Smrg basic_machine=i686-pc 644b71ad168Smrg basic_os=mingw32 645b71ad168Smrg ;; 646b71ad168Smrg ymp) 647b71ad168Smrg basic_machine=ymp-cray 648b71ad168Smrg basic_os=unicos 649b71ad168Smrg ;; 650b71ad168Smrg *) 651b71ad168Smrg basic_machine=$1 652b71ad168Smrg basic_os= 653b71ad168Smrg ;; 654b71ad168Smrg esac 65564ce7165Smrg ;; 65664ce7165Smrgesac 65764ce7165Smrg 658b71ad168Smrg# Decode 1-component or ad-hoc basic machines 65964ce7165Smrgcase $basic_machine in 660b71ad168Smrg # Here we handle the default manufacturer of certain CPU types. It is in 661b71ad168Smrg # some cases the only manufacturer, in others, it is the most popular. 662b71ad168Smrg w89k) 663b71ad168Smrg cpu=hppa1.1 664b71ad168Smrg vendor=winbond 66595fdd44cSmrg ;; 666b71ad168Smrg op50n) 667b71ad168Smrg cpu=hppa1.1 668b71ad168Smrg vendor=oki 66964ce7165Smrg ;; 670b71ad168Smrg op60c) 671b71ad168Smrg cpu=hppa1.1 672b71ad168Smrg vendor=oki 67364ce7165Smrg ;; 674b71ad168Smrg ibm*) 675b71ad168Smrg cpu=i370 676b71ad168Smrg vendor=ibm 67764ce7165Smrg ;; 678b71ad168Smrg orion105) 679b71ad168Smrg cpu=clipper 680b71ad168Smrg vendor=highlevel 68181440437Smrg ;; 682b71ad168Smrg mac | mpw | mac-mpw) 683b71ad168Smrg cpu=m68k 684b71ad168Smrg vendor=apple 68581440437Smrg ;; 686b71ad168Smrg pmac | pmac-mpw) 687b71ad168Smrg cpu=powerpc 688b71ad168Smrg vendor=apple 68981440437Smrg ;; 69081440437Smrg 69164ce7165Smrg # Recognize the various machine names and aliases which stand 69264ce7165Smrg # for a CPU type and a company and sometimes even an OS. 69364ce7165Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694b71ad168Smrg cpu=m68000 695b71ad168Smrg vendor=att 69664ce7165Smrg ;; 69764ce7165Smrg 3b*) 698b71ad168Smrg cpu=we32k 699b71ad168Smrg vendor=att 700fb23d3a8Smrg ;; 701169a0819Smrg bluegene*) 702b71ad168Smrg cpu=powerpc 703b71ad168Smrg vendor=ibm 704b71ad168Smrg basic_os=cnk 70564ce7165Smrg ;; 70664ce7165Smrg decsystem10* | dec10*) 707b71ad168Smrg cpu=pdp10 708b71ad168Smrg vendor=dec 709b71ad168Smrg basic_os=tops10 71064ce7165Smrg ;; 71164ce7165Smrg decsystem20* | dec20*) 712b71ad168Smrg cpu=pdp10 713b71ad168Smrg vendor=dec 714b71ad168Smrg basic_os=tops20 71564ce7165Smrg ;; 71664ce7165Smrg delta | 3300 | motorola-3300 | motorola-delta \ 71764ce7165Smrg | 3300-motorola | delta-motorola) 718b71ad168Smrg cpu=m68k 719b71ad168Smrg vendor=motorola 72064ce7165Smrg ;; 721aadd013eSmrg dpx2*) 722b71ad168Smrg cpu=m68k 723b71ad168Smrg vendor=bull 724b71ad168Smrg basic_os=sysv3 72564ce7165Smrg ;; 72664ce7165Smrg encore | umax | mmax) 727b71ad168Smrg cpu=ns32k 728b71ad168Smrg vendor=encore 72964ce7165Smrg ;; 730b71ad168Smrg elxsi) 731b71ad168Smrg cpu=elxsi 732b71ad168Smrg vendor=elxsi 733b71ad168Smrg basic_os=${basic_os:-bsd} 73464ce7165Smrg ;; 73564ce7165Smrg fx2800) 736b71ad168Smrg cpu=i860 737b71ad168Smrg vendor=alliant 73864ce7165Smrg ;; 73964ce7165Smrg genix) 740b71ad168Smrg cpu=ns32k 741b71ad168Smrg vendor=ns 74264ce7165Smrg ;; 74364ce7165Smrg h3050r* | hiux*) 744b71ad168Smrg cpu=hppa1.1 745b71ad168Smrg vendor=hitachi 746b71ad168Smrg basic_os=hiuxwe2 74764ce7165Smrg ;; 74864ce7165Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749b71ad168Smrg cpu=hppa1.0 750b71ad168Smrg vendor=hp 75164ce7165Smrg ;; 75264ce7165Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753b71ad168Smrg cpu=m68000 754b71ad168Smrg vendor=hp 75564ce7165Smrg ;; 75664ce7165Smrg hp9k3[2-9][0-9]) 757b71ad168Smrg cpu=m68k 758b71ad168Smrg vendor=hp 75964ce7165Smrg ;; 76064ce7165Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761b71ad168Smrg cpu=hppa1.0 762b71ad168Smrg vendor=hp 76364ce7165Smrg ;; 76464ce7165Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765b71ad168Smrg cpu=hppa1.1 766b71ad168Smrg vendor=hp 76764ce7165Smrg ;; 76864ce7165Smrg hp9k78[0-9] | hp78[0-9]) 76964ce7165Smrg # FIXME: really hppa2.0-hp 770b71ad168Smrg cpu=hppa1.1 771b71ad168Smrg vendor=hp 77264ce7165Smrg ;; 77364ce7165Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77464ce7165Smrg # FIXME: really hppa2.0-hp 775b71ad168Smrg cpu=hppa1.1 776b71ad168Smrg vendor=hp 77764ce7165Smrg ;; 77864ce7165Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779b71ad168Smrg cpu=hppa1.1 780b71ad168Smrg vendor=hp 78164ce7165Smrg ;; 78264ce7165Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783b71ad168Smrg cpu=hppa1.0 784b71ad168Smrg vendor=hp 78564ce7165Smrg ;; 78664ce7165Smrg i*86v32) 787b71ad168Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788b71ad168Smrg vendor=pc 789b71ad168Smrg basic_os=sysv32 79064ce7165Smrg ;; 79164ce7165Smrg i*86v4*) 792b71ad168Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793b71ad168Smrg vendor=pc 794b71ad168Smrg basic_os=sysv4 79564ce7165Smrg ;; 79664ce7165Smrg i*86v) 797b71ad168Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798b71ad168Smrg vendor=pc 799b71ad168Smrg basic_os=sysv 80064ce7165Smrg ;; 80164ce7165Smrg i*86sol2) 802b71ad168Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803b71ad168Smrg vendor=pc 804b71ad168Smrg basic_os=solaris2 80564ce7165Smrg ;; 806b71ad168Smrg j90 | j90-cray) 807b71ad168Smrg cpu=j90 808b71ad168Smrg vendor=cray 809b71ad168Smrg basic_os=${basic_os:-unicos} 81064ce7165Smrg ;; 81164ce7165Smrg iris | iris4d) 812b71ad168Smrg cpu=mips 813b71ad168Smrg vendor=sgi 814b71ad168Smrg case $basic_os in 815b71ad168Smrg irix*) 81664ce7165Smrg ;; 81764ce7165Smrg *) 818b71ad168Smrg basic_os=irix4 81964ce7165Smrg ;; 82064ce7165Smrg esac 82164ce7165Smrg ;; 82264ce7165Smrg miniframe) 823b71ad168Smrg cpu=m68000 824b71ad168Smrg vendor=convergent 82564ce7165Smrg ;; 826b71ad168Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827b71ad168Smrg cpu=m68k 828b71ad168Smrg vendor=atari 829b71ad168Smrg basic_os=mint 83064ce7165Smrg ;; 83164ce7165Smrg news-3600 | risc-news) 832b71ad168Smrg cpu=mips 833b71ad168Smrg vendor=sony 834b71ad168Smrg basic_os=newsos 83564ce7165Smrg ;; 836aadd013eSmrg next | m*-next) 837b71ad168Smrg cpu=m68k 838b71ad168Smrg vendor=next 839b71ad168Smrg case $basic_os in 840b71ad168Smrg openstep*) 841b71ad168Smrg ;; 842b71ad168Smrg nextstep*) 84364ce7165Smrg ;; 844b71ad168Smrg ns2*) 845b71ad168Smrg basic_os=nextstep2 84664ce7165Smrg ;; 84764ce7165Smrg *) 848b71ad168Smrg basic_os=nextstep3 84964ce7165Smrg ;; 85064ce7165Smrg esac 85164ce7165Smrg ;; 85264ce7165Smrg np1) 853b71ad168Smrg cpu=np1 854b71ad168Smrg vendor=gould 855aadd013eSmrg ;; 85664ce7165Smrg op50n-* | op60c-*) 857b71ad168Smrg cpu=hppa1.1 858b71ad168Smrg vendor=oki 859b71ad168Smrg basic_os=proelf 86064ce7165Smrg ;; 86164ce7165Smrg pa-hitachi) 862b71ad168Smrg cpu=hppa1.1 863b71ad168Smrg vendor=hitachi 864b71ad168Smrg basic_os=hiuxwe2 865fb23d3a8Smrg ;; 86664ce7165Smrg pbd) 867b71ad168Smrg cpu=sparc 868b71ad168Smrg vendor=tti 86964ce7165Smrg ;; 87064ce7165Smrg pbb) 871b71ad168Smrg cpu=m68k 872b71ad168Smrg vendor=tti 87364ce7165Smrg ;; 874b71ad168Smrg pc532) 875b71ad168Smrg cpu=ns32k 876b71ad168Smrg vendor=pc532 87764ce7165Smrg ;; 87864ce7165Smrg pn) 879b71ad168Smrg cpu=pn 880b71ad168Smrg vendor=gould 88164ce7165Smrg ;; 882b71ad168Smrg power) 883b71ad168Smrg cpu=power 884b71ad168Smrg vendor=ibm 88564ce7165Smrg ;; 886b71ad168Smrg ps2) 887b71ad168Smrg cpu=i386 888b71ad168Smrg vendor=ibm 88964ce7165Smrg ;; 890b71ad168Smrg rm[46]00) 891b71ad168Smrg cpu=mips 892b71ad168Smrg vendor=siemens 89364ce7165Smrg ;; 894b71ad168Smrg rtpc | rtpc-*) 895b71ad168Smrg cpu=romp 896b71ad168Smrg vendor=ibm 89764ce7165Smrg ;; 898b71ad168Smrg sde) 899b71ad168Smrg cpu=mipsisa32 900b71ad168Smrg vendor=sde 901b71ad168Smrg basic_os=${basic_os:-elf} 90264ce7165Smrg ;; 903b71ad168Smrg simso-wrs) 904b71ad168Smrg cpu=sparclite 905b71ad168Smrg vendor=wrs 906b71ad168Smrg basic_os=vxworks 90764ce7165Smrg ;; 908b71ad168Smrg tower | tower-32) 909b71ad168Smrg cpu=m68k 910b71ad168Smrg vendor=ncr 91164ce7165Smrg ;; 912b71ad168Smrg vpp*|vx|vx-*) 913b71ad168Smrg cpu=f301 914b71ad168Smrg vendor=fujitsu 91581440437Smrg ;; 916b71ad168Smrg w65) 917b71ad168Smrg cpu=w65 918b71ad168Smrg vendor=wdc 91964ce7165Smrg ;; 920b71ad168Smrg w89k-*) 921b71ad168Smrg cpu=hppa1.1 922b71ad168Smrg vendor=winbond 923b71ad168Smrg basic_os=proelf 92464ce7165Smrg ;; 925b71ad168Smrg none) 926b71ad168Smrg cpu=none 927b71ad168Smrg vendor=none 92864ce7165Smrg ;; 929b71ad168Smrg leon|leon[3-9]) 930b71ad168Smrg cpu=sparc 931b71ad168Smrg vendor=$basic_machine 93264ce7165Smrg ;; 933b71ad168Smrg leon-*|leon[3-9]-*) 934b71ad168Smrg cpu=sparc 935b71ad168Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 93664ce7165Smrg ;; 937b71ad168Smrg 938b71ad168Smrg *-*) 939b71ad168Smrg # shellcheck disable=SC2162 940b71ad168Smrg saved_IFS=$IFS 941b71ad168Smrg IFS="-" read cpu vendor <<EOF 942b71ad168Smrg$basic_machine 943b71ad168SmrgEOF 944b71ad168Smrg IFS=$saved_IFS 94564ce7165Smrg ;; 946b71ad168Smrg # We use `pc' rather than `unknown' 947b71ad168Smrg # because (1) that's what they normally are, and 948b71ad168Smrg # (2) the word "unknown" tends to confuse beginning users. 949b71ad168Smrg i*86 | x86_64) 950b71ad168Smrg cpu=$basic_machine 951b71ad168Smrg vendor=pc 95264ce7165Smrg ;; 953b71ad168Smrg # These rules are duplicated from below for sake of the special case above; 954b71ad168Smrg # i.e. things that normalized to x86 arches should also default to "pc" 955b71ad168Smrg pc98) 956b71ad168Smrg cpu=i386 957b71ad168Smrg vendor=pc 95864ce7165Smrg ;; 959b71ad168Smrg x64 | amd64) 960b71ad168Smrg cpu=x86_64 961b71ad168Smrg vendor=pc 96264ce7165Smrg ;; 963b71ad168Smrg # Recognize the basic CPU types without company name. 964b71ad168Smrg *) 965b71ad168Smrg cpu=$basic_machine 966b71ad168Smrg vendor=unknown 96764ce7165Smrg ;; 968b71ad168Smrgesac 969b71ad168Smrg 970b71ad168Smrgunset -v basic_machine 971b71ad168Smrg 972b71ad168Smrg# Decode basic machines in the full and proper CPU-Company form. 973b71ad168Smrgcase $cpu-$vendor in 974b71ad168Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975b71ad168Smrg # some cases the only manufacturer, in others, it is the most popular. 976b71ad168Smrg craynv-unknown) 977b71ad168Smrg vendor=cray 978b71ad168Smrg basic_os=${basic_os:-unicosmp} 97964ce7165Smrg ;; 980b71ad168Smrg c90-unknown | c90-cray) 981b71ad168Smrg vendor=cray 982b71ad168Smrg basic_os=${Basic_os:-unicos} 98364ce7165Smrg ;; 984b71ad168Smrg fx80-unknown) 985b71ad168Smrg vendor=alliant 986fb23d3a8Smrg ;; 987b71ad168Smrg romp-unknown) 988b71ad168Smrg vendor=ibm 98964ce7165Smrg ;; 990b71ad168Smrg mmix-unknown) 991b71ad168Smrg vendor=knuth 99264ce7165Smrg ;; 993b71ad168Smrg microblaze-unknown | microblazeel-unknown) 994b71ad168Smrg vendor=xilinx 99564ce7165Smrg ;; 996b71ad168Smrg rs6000-unknown) 997b71ad168Smrg vendor=ibm 99864ce7165Smrg ;; 999b71ad168Smrg vax-unknown) 1000b71ad168Smrg vendor=dec 100164ce7165Smrg ;; 1002b71ad168Smrg pdp11-unknown) 1003b71ad168Smrg vendor=dec 100481440437Smrg ;; 1005b71ad168Smrg we32k-unknown) 1006b71ad168Smrg vendor=att 100764ce7165Smrg ;; 1008b71ad168Smrg cydra-unknown) 1009b71ad168Smrg vendor=cydrome 101064ce7165Smrg ;; 1011b71ad168Smrg i370-ibm*) 1012b71ad168Smrg vendor=ibm 101364ce7165Smrg ;; 1014b71ad168Smrg orion-unknown) 1015b71ad168Smrg vendor=highlevel 101664ce7165Smrg ;; 1017b71ad168Smrg xps-unknown | xps100-unknown) 1018b71ad168Smrg cpu=xps100 1019b71ad168Smrg vendor=honeywell 102064ce7165Smrg ;; 1021b71ad168Smrg 1022b71ad168Smrg # Here we normalize CPU types with a missing or matching vendor 1023b71ad168Smrg dpx20-unknown | dpx20-bull) 1024b71ad168Smrg cpu=rs6000 1025b71ad168Smrg vendor=bull 1026b71ad168Smrg basic_os=${basic_os:-bosx} 102764ce7165Smrg ;; 1028b71ad168Smrg 1029b71ad168Smrg # Here we normalize CPU types irrespective of the vendor 1030b71ad168Smrg amd64-*) 1031b71ad168Smrg cpu=x86_64 103264ce7165Smrg ;; 1033b71ad168Smrg blackfin-*) 1034b71ad168Smrg cpu=bfin 1035b71ad168Smrg basic_os=linux 103664ce7165Smrg ;; 1037b71ad168Smrg c54x-*) 1038b71ad168Smrg cpu=tic54x 103964ce7165Smrg ;; 1040b71ad168Smrg c55x-*) 1041b71ad168Smrg cpu=tic55x 104264ce7165Smrg ;; 1043b71ad168Smrg c6x-*) 1044b71ad168Smrg cpu=tic6x 104564ce7165Smrg ;; 1046b71ad168Smrg e500v[12]-*) 1047b71ad168Smrg cpu=powerpc 1048b71ad168Smrg basic_os=${basic_os}"spe" 104964ce7165Smrg ;; 1050b71ad168Smrg mips3*-*) 1051b71ad168Smrg cpu=mips64 105264ce7165Smrg ;; 1053b71ad168Smrg ms1-*) 1054b71ad168Smrg cpu=mt 105564ce7165Smrg ;; 1056b71ad168Smrg m68knommu-*) 1057b71ad168Smrg cpu=m68k 1058b71ad168Smrg basic_os=linux 105964ce7165Smrg ;; 1060b71ad168Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1061b71ad168Smrg cpu=s12z 1062fb23d3a8Smrg ;; 1063b71ad168Smrg openrisc-*) 1064b71ad168Smrg cpu=or32 106564ce7165Smrg ;; 1066b71ad168Smrg parisc-*) 1067b71ad168Smrg cpu=hppa 1068b71ad168Smrg basic_os=linux 106964ce7165Smrg ;; 1070b71ad168Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1071b71ad168Smrg cpu=i586 107264ce7165Smrg ;; 1073b71ad168Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 1074b71ad168Smrg cpu=i686 107564ce7165Smrg ;; 1076b71ad168Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1077b71ad168Smrg cpu=i686 107864ce7165Smrg ;; 1079b71ad168Smrg pentium4-*) 1080b71ad168Smrg cpu=i786 108164ce7165Smrg ;; 1082b71ad168Smrg pc98-*) 1083b71ad168Smrg cpu=i386 108464ce7165Smrg ;; 1085b71ad168Smrg ppc-* | ppcbe-*) 1086b71ad168Smrg cpu=powerpc 108764ce7165Smrg ;; 1088b71ad168Smrg ppcle-* | powerpclittle-*) 1089b71ad168Smrg cpu=powerpcle 109064ce7165Smrg ;; 1091b71ad168Smrg ppc64-*) 1092b71ad168Smrg cpu=powerpc64 109364ce7165Smrg ;; 1094b71ad168Smrg ppc64le-* | powerpc64little-*) 1095b71ad168Smrg cpu=powerpc64le 109664ce7165Smrg ;; 1097b71ad168Smrg sb1-*) 1098b71ad168Smrg cpu=mipsisa64sb1 109964ce7165Smrg ;; 1100b71ad168Smrg sb1el-*) 1101b71ad168Smrg cpu=mipsisa64sb1el 110264ce7165Smrg ;; 1103b71ad168Smrg sh5e[lb]-*) 1104b71ad168Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 110564ce7165Smrg ;; 1106b71ad168Smrg spur-*) 1107b71ad168Smrg cpu=spur 110864ce7165Smrg ;; 1109b71ad168Smrg strongarm-* | thumb-*) 1110b71ad168Smrg cpu=arm 111164ce7165Smrg ;; 1112b71ad168Smrg tx39-*) 1113b71ad168Smrg cpu=mipstx39 1114aadd013eSmrg ;; 1115b71ad168Smrg tx39el-*) 1116b71ad168Smrg cpu=mipstx39el 111764ce7165Smrg ;; 1118b71ad168Smrg x64-*) 1119b71ad168Smrg cpu=x86_64 112064ce7165Smrg ;; 112181440437Smrg xscale-* | xscalee[bl]-*) 1122b71ad168Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112364ce7165Smrg ;; 1124b71ad168Smrg arm64-*) 1125b71ad168Smrg cpu=aarch64 112664ce7165Smrg ;; 112764ce7165Smrg 1128b71ad168Smrg # Recognize the canonical CPU Types that limit and/or modify the 1129b71ad168Smrg # company names they are paired with. 1130b71ad168Smrg cr16-*) 1131b71ad168Smrg basic_os=${basic_os:-elf} 113264ce7165Smrg ;; 1133b71ad168Smrg crisv32-* | etraxfs*-*) 1134b71ad168Smrg cpu=crisv32 1135b71ad168Smrg vendor=axis 113664ce7165Smrg ;; 1137b71ad168Smrg cris-* | etrax*-*) 1138b71ad168Smrg cpu=cris 1139b71ad168Smrg vendor=axis 114064ce7165Smrg ;; 1141b71ad168Smrg crx-*) 1142b71ad168Smrg basic_os=${basic_os:-elf} 114364ce7165Smrg ;; 1144b71ad168Smrg neo-tandem) 1145b71ad168Smrg cpu=neo 1146b71ad168Smrg vendor=tandem 114764ce7165Smrg ;; 1148b71ad168Smrg nse-tandem) 1149b71ad168Smrg cpu=nse 1150b71ad168Smrg vendor=tandem 115164ce7165Smrg ;; 1152b71ad168Smrg nsr-tandem) 1153b71ad168Smrg cpu=nsr 1154b71ad168Smrg vendor=tandem 115564ce7165Smrg ;; 1156b71ad168Smrg nsv-tandem) 1157b71ad168Smrg cpu=nsv 1158b71ad168Smrg vendor=tandem 115964ce7165Smrg ;; 1160b71ad168Smrg nsx-tandem) 1161b71ad168Smrg cpu=nsx 1162b71ad168Smrg vendor=tandem 116364ce7165Smrg ;; 1164b71ad168Smrg mipsallegrexel-sony) 1165b71ad168Smrg cpu=mipsallegrexel 1166b71ad168Smrg vendor=sony 116764ce7165Smrg ;; 1168b71ad168Smrg tile*-*) 1169b71ad168Smrg basic_os=${basic_os:-linux-gnu} 117064ce7165Smrg ;; 1171b71ad168Smrg 117264ce7165Smrg *) 1173b71ad168Smrg # Recognize the canonical CPU types that are allowed with any 1174b71ad168Smrg # company name. 1175b71ad168Smrg case $cpu in 1176b71ad168Smrg 1750a | 580 \ 1177b71ad168Smrg | a29k \ 1178b71ad168Smrg | aarch64 | aarch64_be \ 1179b71ad168Smrg | abacus \ 1180b71ad168Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1181b71ad168Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1182b71ad168Smrg | alphapca5[67] | alpha64pca5[67] \ 1183b71ad168Smrg | am33_2.0 \ 1184b71ad168Smrg | amdgcn \ 1185b71ad168Smrg | arc | arceb | arc32 | arc64 \ 1186b71ad168Smrg | arm | arm[lb]e | arme[lb] | armv* \ 1187b71ad168Smrg | avr | avr32 \ 1188b71ad168Smrg | asmjs \ 1189b71ad168Smrg | ba \ 1190b71ad168Smrg | be32 | be64 \ 1191b71ad168Smrg | bfin | bpf | bs2000 \ 1192b71ad168Smrg | c[123]* | c30 | [cjt]90 | c4x \ 1193b71ad168Smrg | c8051 | clipper | craynv | csky | cydra \ 1194b71ad168Smrg | d10v | d30v | dlx | dsp16xx \ 1195b71ad168Smrg | e2k | elxsi | epiphany \ 1196b71ad168Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1197b71ad168Smrg | h8300 | h8500 \ 1198b71ad168Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1199b71ad168Smrg | hexagon \ 1200b71ad168Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1201b71ad168Smrg | ip2k | iq2000 \ 1202b71ad168Smrg | k1om \ 1203b71ad168Smrg | le32 | le64 \ 1204b71ad168Smrg | lm32 \ 1205b71ad168Smrg | loongarch32 | loongarch64 | loongarchx32 \ 1206b71ad168Smrg | m32c | m32r | m32rle \ 1207b71ad168Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1208b71ad168Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1209b71ad168Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1210b71ad168Smrg | microblaze | microblazeel \ 1211b71ad168Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1212b71ad168Smrg | mips16 \ 1213b71ad168Smrg | mips64 | mips64eb | mips64el \ 1214b71ad168Smrg | mips64octeon | mips64octeonel \ 1215b71ad168Smrg | mips64orion | mips64orionel \ 1216b71ad168Smrg | mips64r5900 | mips64r5900el \ 1217b71ad168Smrg | mips64vr | mips64vrel \ 1218b71ad168Smrg | mips64vr4100 | mips64vr4100el \ 1219b71ad168Smrg | mips64vr4300 | mips64vr4300el \ 1220b71ad168Smrg | mips64vr5000 | mips64vr5000el \ 1221b71ad168Smrg | mips64vr5900 | mips64vr5900el \ 1222b71ad168Smrg | mipsisa32 | mipsisa32el \ 1223b71ad168Smrg | mipsisa32r2 | mipsisa32r2el \ 1224b71ad168Smrg | mipsisa32r3 | mipsisa32r3el \ 1225b71ad168Smrg | mipsisa32r5 | mipsisa32r5el \ 1226b71ad168Smrg | mipsisa32r6 | mipsisa32r6el \ 1227b71ad168Smrg | mipsisa64 | mipsisa64el \ 1228b71ad168Smrg | mipsisa64r2 | mipsisa64r2el \ 1229b71ad168Smrg | mipsisa64r3 | mipsisa64r3el \ 1230b71ad168Smrg | mipsisa64r5 | mipsisa64r5el \ 1231b71ad168Smrg | mipsisa64r6 | mipsisa64r6el \ 1232b71ad168Smrg | mipsisa64sb1 | mipsisa64sb1el \ 1233b71ad168Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 1234b71ad168Smrg | mipsr5900 | mipsr5900el \ 1235b71ad168Smrg | mipstx39 | mipstx39el \ 1236b71ad168Smrg | mmix \ 1237b71ad168Smrg | mn10200 | mn10300 \ 1238b71ad168Smrg | moxie \ 1239b71ad168Smrg | mt \ 1240b71ad168Smrg | msp430 \ 1241b71ad168Smrg | nds32 | nds32le | nds32be \ 1242b71ad168Smrg | nfp \ 1243b71ad168Smrg | nios | nios2 | nios2eb | nios2el \ 1244b71ad168Smrg | none | np1 | ns16k | ns32k | nvptx \ 1245b71ad168Smrg | open8 \ 1246b71ad168Smrg | or1k* \ 1247b71ad168Smrg | or32 \ 1248b71ad168Smrg | orion \ 1249b71ad168Smrg | picochip \ 1250b71ad168Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1251b71ad168Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1252b71ad168Smrg | pru \ 1253b71ad168Smrg | pyramid \ 1254b71ad168Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1255b71ad168Smrg | rl78 | romp | rs6000 | rx \ 1256b71ad168Smrg | s390 | s390x \ 1257b71ad168Smrg | score \ 1258b71ad168Smrg | sh | shl \ 1259b71ad168Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1260b71ad168Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1261b71ad168Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1262b71ad168Smrg | sparclite \ 1263b71ad168Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1264b71ad168Smrg | spu \ 1265b71ad168Smrg | tahoe \ 1266b71ad168Smrg | thumbv7* \ 1267b71ad168Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1268b71ad168Smrg | tron \ 1269b71ad168Smrg | ubicom32 \ 1270b71ad168Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1271b71ad168Smrg | vax \ 1272b71ad168Smrg | visium \ 1273b71ad168Smrg | w65 \ 1274b71ad168Smrg | wasm32 | wasm64 \ 1275b71ad168Smrg | we32k \ 1276b71ad168Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1277b71ad168Smrg | xstormy16 | xtensa* \ 1278b71ad168Smrg | ymp \ 1279b71ad168Smrg | z8k | z80) 1280b71ad168Smrg ;; 1281b71ad168Smrg 1282b71ad168Smrg *) 1283b71ad168Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1284b71ad168Smrg exit 1 1285b71ad168Smrg ;; 1286b71ad168Smrg esac 128764ce7165Smrg ;; 128864ce7165Smrgesac 128964ce7165Smrg 129064ce7165Smrg# Here we canonicalize certain aliases for manufacturers. 1291b71ad168Smrgcase $vendor in 1292b71ad168Smrg digital*) 1293b71ad168Smrg vendor=dec 129464ce7165Smrg ;; 1295b71ad168Smrg commodore*) 1296b71ad168Smrg vendor=cbm 129764ce7165Smrg ;; 129864ce7165Smrg *) 129964ce7165Smrg ;; 130064ce7165Smrgesac 130164ce7165Smrg 130264ce7165Smrg# Decode manufacturer-specific aliases for certain operating systems. 130364ce7165Smrg 1304b71ad168Smrgif test x$basic_os != x 130564ce7165Smrgthen 1306b71ad168Smrg 1307b71ad168Smrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 1308b71ad168Smrg# set os. 1309b71ad168Smrgcase $basic_os in 1310b71ad168Smrg gnu/linux*) 1311b71ad168Smrg kernel=linux 1312b71ad168Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1313b71ad168Smrg ;; 1314b71ad168Smrg os2-emx) 1315b71ad168Smrg kernel=os2 1316b71ad168Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1317b71ad168Smrg ;; 1318b71ad168Smrg nto-qnx*) 1319b71ad168Smrg kernel=nto 1320b71ad168Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1321b71ad168Smrg ;; 1322b71ad168Smrg *-*) 1323b71ad168Smrg # shellcheck disable=SC2162 1324b71ad168Smrg saved_IFS=$IFS 1325b71ad168Smrg IFS="-" read kernel os <<EOF 1326b71ad168Smrg$basic_os 1327b71ad168SmrgEOF 1328b71ad168Smrg IFS=$saved_IFS 1329b71ad168Smrg ;; 1330b71ad168Smrg # Default OS when just kernel was specified 1331b71ad168Smrg nto*) 1332b71ad168Smrg kernel=nto 1333b71ad168Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1334b71ad168Smrg ;; 1335b71ad168Smrg linux*) 1336b71ad168Smrg kernel=linux 1337b71ad168Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1338b71ad168Smrg ;; 1339b71ad168Smrg *) 1340b71ad168Smrg kernel= 1341b71ad168Smrg os=$basic_os 1342b71ad168Smrg ;; 1343b71ad168Smrgesac 1344b71ad168Smrg 1345b71ad168Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1346b71ad168Smrg# etc.) 134764ce7165Smrgcase $os in 1348aadd013eSmrg # First match some system type aliases that might get confused 1349aadd013eSmrg # with valid system types. 1350b71ad168Smrg # solaris* is a basic system type, with this one exception. 1351b71ad168Smrg auroraux) 1352b71ad168Smrg os=auroraux 1353169a0819Smrg ;; 1354b71ad168Smrg bluegene*) 1355b71ad168Smrg os=cnk 135664ce7165Smrg ;; 1357b71ad168Smrg solaris1 | solaris1.*) 1358b71ad168Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 135964ce7165Smrg ;; 1360b71ad168Smrg solaris) 1361b71ad168Smrg os=solaris2 136264ce7165Smrg ;; 1363b71ad168Smrg unixware*) 1364b71ad168Smrg os=sysv4.2uw 136564ce7165Smrg ;; 1366aadd013eSmrg # es1800 is here to avoid being matched by es* (a different OS) 1367b71ad168Smrg es1800*) 1368b71ad168Smrg os=ose 1369aadd013eSmrg ;; 1370b71ad168Smrg # Some version numbers need modification 1371b71ad168Smrg chorusos*) 1372b71ad168Smrg os=chorusos 137364ce7165Smrg ;; 1374b71ad168Smrg isc) 1375b71ad168Smrg os=isc2.2 137664ce7165Smrg ;; 1377b71ad168Smrg sco6) 1378b71ad168Smrg os=sco5v6 137964ce7165Smrg ;; 1380b71ad168Smrg sco5) 1381b71ad168Smrg os=sco3.2v5 138264ce7165Smrg ;; 1383b71ad168Smrg sco4) 1384b71ad168Smrg os=sco3.2v4 138564ce7165Smrg ;; 1386b71ad168Smrg sco3.2.[4-9]*) 1387b71ad168Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 138864ce7165Smrg ;; 1389b71ad168Smrg sco*v* | scout) 1390b71ad168Smrg # Don't match below 139164ce7165Smrg ;; 1392b71ad168Smrg sco*) 1393b71ad168Smrg os=sco3.2v2 139464ce7165Smrg ;; 1395b71ad168Smrg psos*) 1396b71ad168Smrg os=psos 139764ce7165Smrg ;; 1398b71ad168Smrg qnx*) 1399b71ad168Smrg os=qnx 140064ce7165Smrg ;; 1401b71ad168Smrg hiux*) 1402b71ad168Smrg os=hiuxwe2 140364ce7165Smrg ;; 1404b71ad168Smrg lynx*178) 1405b71ad168Smrg os=lynxos178 140664ce7165Smrg ;; 1407b71ad168Smrg lynx*5) 1408b71ad168Smrg os=lynxos5 140964ce7165Smrg ;; 1410b71ad168Smrg lynxos*) 1411b71ad168Smrg # don't get caught up in next wildcard 141264ce7165Smrg ;; 1413b71ad168Smrg lynx*) 1414b71ad168Smrg os=lynxos 141564ce7165Smrg ;; 1416b71ad168Smrg mac[0-9]*) 1417b71ad168Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 141864ce7165Smrg ;; 1419b71ad168Smrg opened*) 1420b71ad168Smrg os=openedition 142164ce7165Smrg ;; 1422b71ad168Smrg os400*) 1423b71ad168Smrg os=os400 142464ce7165Smrg ;; 1425b71ad168Smrg sunos5*) 1426b71ad168Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 142764ce7165Smrg ;; 1428b71ad168Smrg sunos6*) 1429b71ad168Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 143064ce7165Smrg ;; 1431b71ad168Smrg wince*) 1432b71ad168Smrg os=wince 143364ce7165Smrg ;; 1434b71ad168Smrg utek*) 1435b71ad168Smrg os=bsd 143664ce7165Smrg ;; 1437b71ad168Smrg dynix*) 1438b71ad168Smrg os=bsd 143964ce7165Smrg ;; 1440b71ad168Smrg acis*) 1441b71ad168Smrg os=aos 144264ce7165Smrg ;; 1443b71ad168Smrg atheos*) 1444b71ad168Smrg os=atheos 144564ce7165Smrg ;; 1446b71ad168Smrg syllable*) 1447b71ad168Smrg os=syllable 1448b71ad168Smrg ;; 1449b71ad168Smrg 386bsd) 1450b71ad168Smrg os=bsd 1451b71ad168Smrg ;; 1452b71ad168Smrg ctix* | uts*) 1453b71ad168Smrg os=sysv 1454b71ad168Smrg ;; 1455b71ad168Smrg nova*) 1456b71ad168Smrg os=rtmk-nova 1457b71ad168Smrg ;; 1458b71ad168Smrg ns2) 1459b71ad168Smrg os=nextstep2 1460b71ad168Smrg ;; 1461b71ad168Smrg # Preserve the version number of sinix5. 1462b71ad168Smrg sinix5.*) 1463b71ad168Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 146464ce7165Smrg ;; 1465b71ad168Smrg sinix*) 1466b71ad168Smrg os=sysv4 146764ce7165Smrg ;; 1468b71ad168Smrg tpf*) 1469b71ad168Smrg os=tpf 147064ce7165Smrg ;; 1471b71ad168Smrg triton*) 1472b71ad168Smrg os=sysv3 147364ce7165Smrg ;; 1474b71ad168Smrg oss*) 1475b71ad168Smrg os=sysv3 147664ce7165Smrg ;; 1477b71ad168Smrg svr4*) 1478b71ad168Smrg os=sysv4 147964ce7165Smrg ;; 1480b71ad168Smrg svr3) 1481b71ad168Smrg os=sysv3 148264ce7165Smrg ;; 1483b71ad168Smrg sysvr4) 1484b71ad168Smrg os=sysv4 148564ce7165Smrg ;; 1486b71ad168Smrg ose*) 1487b71ad168Smrg os=ose 148864ce7165Smrg ;; 1489b71ad168Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1490b71ad168Smrg os=mint 1491fb23d3a8Smrg ;; 1492b71ad168Smrg dicos*) 1493b71ad168Smrg os=dicos 1494b71ad168Smrg ;; 1495b71ad168Smrg pikeos*) 1496aadd013eSmrg # Until real need of OS specific support for 1497aadd013eSmrg # particular features comes up, bare metal 1498aadd013eSmrg # configurations are quite functional. 1499b71ad168Smrg case $cpu in 1500aadd013eSmrg arm*) 1501b71ad168Smrg os=eabi 1502aadd013eSmrg ;; 1503aadd013eSmrg *) 1504b71ad168Smrg os=elf 1505aadd013eSmrg ;; 1506aadd013eSmrg esac 1507aadd013eSmrg ;; 150864ce7165Smrg *) 1509b71ad168Smrg # No normalization, but not necessarily accepted, that comes below. 151064ce7165Smrg ;; 151164ce7165Smrgesac 1512b71ad168Smrg 151364ce7165Smrgelse 151464ce7165Smrg 151564ce7165Smrg# Here we handle the default operating systems that come with various machines. 151664ce7165Smrg# The value should be what the vendor currently ships out the door with their 151764ce7165Smrg# machine or put another way, the most popular os provided with the machine. 151864ce7165Smrg 151964ce7165Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 152064ce7165Smrg# "-sun"), then you have to tell the case statement up towards the top 152164ce7165Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 152264ce7165Smrg# will signal an error saying that MANUFACTURER isn't an operating 152364ce7165Smrg# system, and we'll never get to this point. 152464ce7165Smrg 1525b71ad168Smrgkernel= 1526b71ad168Smrgcase $cpu-$vendor in 152781440437Smrg score-*) 1528b71ad168Smrg os=elf 152964ce7165Smrg ;; 153081440437Smrg spu-*) 1531b71ad168Smrg os=elf 153264ce7165Smrg ;; 153364ce7165Smrg *-acorn) 1534b71ad168Smrg os=riscix1.2 153564ce7165Smrg ;; 153664ce7165Smrg arm*-rebel) 1537b71ad168Smrg kernel=linux 1538b71ad168Smrg os=gnu 153964ce7165Smrg ;; 154064ce7165Smrg arm*-semi) 1541b71ad168Smrg os=aout 154264ce7165Smrg ;; 154381440437Smrg c4x-* | tic4x-*) 1544b71ad168Smrg os=coff 154581440437Smrg ;; 154695fdd44cSmrg c8051-*) 1547b71ad168Smrg os=elf 1548b71ad168Smrg ;; 1549b71ad168Smrg clipper-intergraph) 1550b71ad168Smrg os=clix 155195fdd44cSmrg ;; 155281440437Smrg hexagon-*) 1553b71ad168Smrg os=elf 155464ce7165Smrg ;; 1555169a0819Smrg tic54x-*) 1556b71ad168Smrg os=coff 1557169a0819Smrg ;; 1558169a0819Smrg tic55x-*) 1559b71ad168Smrg os=coff 1560169a0819Smrg ;; 1561169a0819Smrg tic6x-*) 1562b71ad168Smrg os=coff 1563169a0819Smrg ;; 156464ce7165Smrg # This must come before the *-dec entry. 156564ce7165Smrg pdp10-*) 1566b71ad168Smrg os=tops20 156764ce7165Smrg ;; 156864ce7165Smrg pdp11-*) 1569b71ad168Smrg os=none 157064ce7165Smrg ;; 157164ce7165Smrg *-dec | vax-*) 1572b71ad168Smrg os=ultrix4.2 157364ce7165Smrg ;; 157464ce7165Smrg m68*-apollo) 1575b71ad168Smrg os=domain 157664ce7165Smrg ;; 157764ce7165Smrg i386-sun) 1578b71ad168Smrg os=sunos4.0.2 157964ce7165Smrg ;; 158064ce7165Smrg m68000-sun) 1581b71ad168Smrg os=sunos3 158264ce7165Smrg ;; 158364ce7165Smrg m68*-cisco) 1584b71ad168Smrg os=aout 158564ce7165Smrg ;; 158681440437Smrg mep-*) 1587b71ad168Smrg os=elf 1588fb23d3a8Smrg ;; 158964ce7165Smrg mips*-cisco) 1590b71ad168Smrg os=elf 159164ce7165Smrg ;; 159264ce7165Smrg mips*-*) 1593b71ad168Smrg os=elf 159464ce7165Smrg ;; 159564ce7165Smrg or32-*) 1596b71ad168Smrg os=coff 159764ce7165Smrg ;; 159864ce7165Smrg *-tti) # must be before sparc entry or we get the wrong os. 1599b71ad168Smrg os=sysv3 160064ce7165Smrg ;; 160164ce7165Smrg sparc-* | *-sun) 1602b71ad168Smrg os=sunos4.1.1 160364ce7165Smrg ;; 1604aadd013eSmrg pru-*) 1605b71ad168Smrg os=elf 1606aadd013eSmrg ;; 160764ce7165Smrg *-be) 1608b71ad168Smrg os=beos 160964ce7165Smrg ;; 161064ce7165Smrg *-ibm) 1611b71ad168Smrg os=aix 161264ce7165Smrg ;; 161381440437Smrg *-knuth) 1614b71ad168Smrg os=mmixware 161564ce7165Smrg ;; 161664ce7165Smrg *-wec) 1617b71ad168Smrg os=proelf 161864ce7165Smrg ;; 161964ce7165Smrg *-winbond) 1620b71ad168Smrg os=proelf 162164ce7165Smrg ;; 162264ce7165Smrg *-oki) 1623b71ad168Smrg os=proelf 162464ce7165Smrg ;; 162564ce7165Smrg *-hp) 1626b71ad168Smrg os=hpux 162764ce7165Smrg ;; 162864ce7165Smrg *-hitachi) 1629b71ad168Smrg os=hiux 163064ce7165Smrg ;; 163164ce7165Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1632b71ad168Smrg os=sysv 163364ce7165Smrg ;; 163464ce7165Smrg *-cbm) 1635b71ad168Smrg os=amigaos 163664ce7165Smrg ;; 163764ce7165Smrg *-dg) 1638b71ad168Smrg os=dgux 163964ce7165Smrg ;; 164064ce7165Smrg *-dolphin) 1641b71ad168Smrg os=sysv3 164264ce7165Smrg ;; 164364ce7165Smrg m68k-ccur) 1644b71ad168Smrg os=rtu 164564ce7165Smrg ;; 164664ce7165Smrg m88k-omron*) 1647b71ad168Smrg os=luna 164864ce7165Smrg ;; 1649aadd013eSmrg *-next) 1650b71ad168Smrg os=nextstep 165164ce7165Smrg ;; 165264ce7165Smrg *-sequent) 1653b71ad168Smrg os=ptx 165464ce7165Smrg ;; 165564ce7165Smrg *-crds) 1656b71ad168Smrg os=unos 165764ce7165Smrg ;; 165864ce7165Smrg *-ns) 1659b71ad168Smrg os=genix 166064ce7165Smrg ;; 166164ce7165Smrg i370-*) 1662b71ad168Smrg os=mvs 166364ce7165Smrg ;; 166464ce7165Smrg *-gould) 1665b71ad168Smrg os=sysv 166664ce7165Smrg ;; 166764ce7165Smrg *-highlevel) 1668b71ad168Smrg os=bsd 166964ce7165Smrg ;; 167064ce7165Smrg *-encore) 1671b71ad168Smrg os=bsd 167264ce7165Smrg ;; 167364ce7165Smrg *-sgi) 1674b71ad168Smrg os=irix 167564ce7165Smrg ;; 167664ce7165Smrg *-siemens) 1677b71ad168Smrg os=sysv4 167864ce7165Smrg ;; 167964ce7165Smrg *-masscomp) 1680b71ad168Smrg os=rtu 168164ce7165Smrg ;; 168264ce7165Smrg f30[01]-fujitsu | f700-fujitsu) 1683b71ad168Smrg os=uxpv 168464ce7165Smrg ;; 168564ce7165Smrg *-rom68k) 1686b71ad168Smrg os=coff 168764ce7165Smrg ;; 168864ce7165Smrg *-*bug) 1689b71ad168Smrg os=coff 169064ce7165Smrg ;; 169164ce7165Smrg *-apple) 1692b71ad168Smrg os=macos 169364ce7165Smrg ;; 169464ce7165Smrg *-atari*) 1695b71ad168Smrg os=mint 1696b71ad168Smrg ;; 1697b71ad168Smrg *-wrs) 1698b71ad168Smrg os=vxworks 169964ce7165Smrg ;; 170064ce7165Smrg *) 1701b71ad168Smrg os=none 170264ce7165Smrg ;; 170364ce7165Smrgesac 1704b71ad168Smrg 170564ce7165Smrgfi 170664ce7165Smrg 1707b71ad168Smrg# Now, validate our (potentially fixed-up) OS. 1708b71ad168Smrgcase $os in 1709b71ad168Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1710b71ad168Smrg musl* | newlib* | relibc* | uclibc*) 1711b71ad168Smrg ;; 1712b71ad168Smrg # Likewise for "kernel-abi" 1713b71ad168Smrg eabi* | gnueabi*) 1714b71ad168Smrg ;; 1715b71ad168Smrg # VxWorks passes extra cpu info in the 4th filed. 1716b71ad168Smrg simlinux | simwindows | spe) 1717b71ad168Smrg ;; 1718b71ad168Smrg # Now accept the basic system types. 1719b71ad168Smrg # The portable systems comes first. 1720b71ad168Smrg # Each alternative MUST end in a * to match a version number. 1721b71ad168Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1722b71ad168Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1723b71ad168Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1724b71ad168Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1725b71ad168Smrg | hiux* | abug | nacl* | netware* | windows* \ 1726b71ad168Smrg | os9* | macos* | osx* | ios* \ 1727b71ad168Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1728b71ad168Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1729b71ad168Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1730b71ad168Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1731b71ad168Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1732b71ad168Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1733b71ad168Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1734b71ad168Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1735b71ad168Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1736b71ad168Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1737b71ad168Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1738b71ad168Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1739b71ad168Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1740b71ad168Smrg | midipix* | mingw32* | mingw64* | mint* \ 1741b71ad168Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1742b71ad168Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1743b71ad168Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1744b71ad168Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1745b71ad168Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1746b71ad168Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1747b71ad168Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1748b71ad168Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1749b71ad168Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1750b71ad168Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1751b71ad168Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 1752b71ad168Smrg ;; 1753b71ad168Smrg # This one is extra strict with allowed versions 1754b71ad168Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1755b71ad168Smrg # Don't forget version if it is 3.2v4 or newer. 1756b71ad168Smrg ;; 1757b71ad168Smrg none) 1758b71ad168Smrg ;; 1759b71ad168Smrg *) 1760b71ad168Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1761b71ad168Smrg exit 1 1762b71ad168Smrg ;; 1763b71ad168Smrgesac 1764b71ad168Smrg 1765b71ad168Smrg# As a final step for OS-related things, validate the OS-kernel combination 1766b71ad168Smrg# (given a valid OS), if there is a kernel. 1767b71ad168Smrgcase $kernel-$os in 1768b71ad168Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1769b71ad168Smrg | linux-musl* | linux-relibc* | linux-uclibc* ) 1770b71ad168Smrg ;; 1771b71ad168Smrg uclinux-uclibc* ) 1772b71ad168Smrg ;; 1773b71ad168Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 1774b71ad168Smrg # These are just libc implementations, not actual OSes, and thus 1775b71ad168Smrg # require a kernel. 1776b71ad168Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1777b71ad168Smrg exit 1 1778b71ad168Smrg ;; 1779b71ad168Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1780b71ad168Smrg ;; 1781b71ad168Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1782b71ad168Smrg ;; 1783b71ad168Smrg nto-qnx*) 1784b71ad168Smrg ;; 1785b71ad168Smrg os2-emx) 1786b71ad168Smrg ;; 1787b71ad168Smrg *-eabi* | *-gnueabi*) 1788b71ad168Smrg ;; 1789b71ad168Smrg -*) 1790b71ad168Smrg # Blank kernel with real OS is always fine. 1791b71ad168Smrg ;; 1792b71ad168Smrg *-*) 1793b71ad168Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1794b71ad168Smrg exit 1 1795b71ad168Smrg ;; 1796b71ad168Smrgesac 1797b71ad168Smrg 179864ce7165Smrg# Here we handle the case where we know the os, and the CPU type, but not the 179964ce7165Smrg# manufacturer. We pick the logical manufacturer. 1800b71ad168Smrgcase $vendor in 1801b71ad168Smrg unknown) 1802b71ad168Smrg case $cpu-$os in 1803b71ad168Smrg *-riscix*) 180464ce7165Smrg vendor=acorn 180564ce7165Smrg ;; 1806b71ad168Smrg *-sunos*) 180764ce7165Smrg vendor=sun 180864ce7165Smrg ;; 1809b71ad168Smrg *-cnk* | *-aix*) 181064ce7165Smrg vendor=ibm 181164ce7165Smrg ;; 1812b71ad168Smrg *-beos*) 181364ce7165Smrg vendor=be 181464ce7165Smrg ;; 1815b71ad168Smrg *-hpux*) 181664ce7165Smrg vendor=hp 181764ce7165Smrg ;; 1818b71ad168Smrg *-mpeix*) 181964ce7165Smrg vendor=hp 182064ce7165Smrg ;; 1821b71ad168Smrg *-hiux*) 182264ce7165Smrg vendor=hitachi 182364ce7165Smrg ;; 1824b71ad168Smrg *-unos*) 182564ce7165Smrg vendor=crds 182664ce7165Smrg ;; 1827b71ad168Smrg *-dgux*) 182864ce7165Smrg vendor=dg 182964ce7165Smrg ;; 1830b71ad168Smrg *-luna*) 183164ce7165Smrg vendor=omron 183264ce7165Smrg ;; 1833b71ad168Smrg *-genix*) 183464ce7165Smrg vendor=ns 183564ce7165Smrg ;; 1836b71ad168Smrg *-clix*) 1837b71ad168Smrg vendor=intergraph 1838b71ad168Smrg ;; 1839b71ad168Smrg *-mvs* | *-opened*) 1840b71ad168Smrg vendor=ibm 1841b71ad168Smrg ;; 1842b71ad168Smrg *-os400*) 184364ce7165Smrg vendor=ibm 184464ce7165Smrg ;; 1845b71ad168Smrg s390-* | s390x-*) 184664ce7165Smrg vendor=ibm 184764ce7165Smrg ;; 1848b71ad168Smrg *-ptx*) 184964ce7165Smrg vendor=sequent 185064ce7165Smrg ;; 1851b71ad168Smrg *-tpf*) 185264ce7165Smrg vendor=ibm 185364ce7165Smrg ;; 1854b71ad168Smrg *-vxsim* | *-vxworks* | *-windiss*) 185564ce7165Smrg vendor=wrs 185664ce7165Smrg ;; 1857b71ad168Smrg *-aux*) 185864ce7165Smrg vendor=apple 185964ce7165Smrg ;; 1860b71ad168Smrg *-hms*) 186164ce7165Smrg vendor=hitachi 186264ce7165Smrg ;; 1863b71ad168Smrg *-mpw* | *-macos*) 186464ce7165Smrg vendor=apple 186564ce7165Smrg ;; 1866b71ad168Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 186764ce7165Smrg vendor=atari 186864ce7165Smrg ;; 1869b71ad168Smrg *-vos*) 187064ce7165Smrg vendor=stratus 187164ce7165Smrg ;; 187264ce7165Smrg esac 187364ce7165Smrg ;; 187464ce7165Smrgesac 187564ce7165Smrg 1876b71ad168Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 187764ce7165Smrgexit 187864ce7165Smrg 187964ce7165Smrg# Local variables: 1880b71ad168Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 188164ce7165Smrg# time-stamp-start: "timestamp='" 188264ce7165Smrg# time-stamp-format: "%:y-%02m-%02d" 188364ce7165Smrg# time-stamp-end: "'" 188464ce7165Smrg# End: 1885