18ae04fa6Smrg#! /bin/sh 28ae04fa6Smrg# Configuration validation subroutine script. 3138a9f8aSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 48ae04fa6Smrg 5138a9f8aSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6138a9f8aSmrg 7138a9f8aSmrgtimestamp='2021-08-14' 88ae04fa6Smrg 980f56f3aSmrg# This file is free software; you can redistribute it and/or modify it 1080f56f3aSmrg# under the terms of the GNU General Public License as published by 1180f56f3aSmrg# the Free Software Foundation; either version 3 of the License, or 128ae04fa6Smrg# (at your option) any later version. 138ae04fa6Smrg# 1480f56f3aSmrg# This program is distributed in the hope that it will be useful, but 1580f56f3aSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1680f56f3aSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1780f56f3aSmrg# General Public License for more details. 188ae04fa6Smrg# 198ae04fa6Smrg# You should have received a copy of the GNU General Public License 20d71d4977Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 218ae04fa6Smrg# 228ae04fa6Smrg# As a special exception to the GNU General Public License, if you 238ae04fa6Smrg# distribute this file as part of a program that contains a 248ae04fa6Smrg# configuration script generated by Autoconf, you may include it under 2580f56f3aSmrg# the same distribution terms that you use for the rest of that 2680f56f3aSmrg# program. This Exception is an additional permission under section 7 2780f56f3aSmrg# of the GNU General Public License, version 3 ("GPLv3"). 288ae04fa6Smrg 298ae04fa6Smrg 3080f56f3aSmrg# Please send patches to <config-patches@gnu.org>. 318ae04fa6Smrg# 328ae04fa6Smrg# Configuration subroutine to validate and canonicalize a configuration type. 338ae04fa6Smrg# Supply the specified configuration type as an argument. 348ae04fa6Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 358ae04fa6Smrg# Otherwise, we print the canonical config type on stdout and succeed. 368ae04fa6Smrg 372d1d20fcSmrg# You can get the latest version of this script from: 38138a9f8aSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 392d1d20fcSmrg 408ae04fa6Smrg# This file is supposed to be the same for all GNU packages 418ae04fa6Smrg# and recognize all the CPU types, system types and aliases 428ae04fa6Smrg# that are meaningful with *any* GNU software. 438ae04fa6Smrg# Each package is responsible for reporting which valid configurations 448ae04fa6Smrg# it does not support. The user should be able to distinguish 458ae04fa6Smrg# a failure to support a valid configuration from a meaningless 468ae04fa6Smrg# configuration. 478ae04fa6Smrg 488ae04fa6Smrg# The goal of this file is to map all the various variations of a given 498ae04fa6Smrg# machine specification into a single specification in the form: 508ae04fa6Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 518ae04fa6Smrg# or in some cases, the newer four-part form: 528ae04fa6Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 538ae04fa6Smrg# It is wrong to echo any other type of specification. 548ae04fa6Smrg 55138a9f8aSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 56138a9f8aSmrg# about features and limitations of the classic Bourne shell that were 57138a9f8aSmrg# superseded or lifted in POSIX. However, this script identifies a wide 58138a9f8aSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59138a9f8aSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60138a9f8aSmrg# have a pre-POSIX /bin/sh. 61138a9f8aSmrg 628ae04fa6Smrgme=`echo "$0" | sed -e 's,.*/,,'` 638ae04fa6Smrg 648ae04fa6Smrgusage="\ 65d71d4977SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 668ae04fa6Smrg 678ae04fa6SmrgCanonicalize a configuration name. 688ae04fa6Smrg 69d71d4977SmrgOptions: 708ae04fa6Smrg -h, --help print this help, then exit 718ae04fa6Smrg -t, --time-stamp print date of last modification, then exit 728ae04fa6Smrg -v, --version print version number, then exit 738ae04fa6Smrg 748ae04fa6SmrgReport bugs and patches to <config-patches@gnu.org>." 758ae04fa6Smrg 768ae04fa6Smrgversion="\ 778ae04fa6SmrgGNU config.sub ($timestamp) 788ae04fa6Smrg 79138a9f8aSmrgCopyright 1992-2021 Free Software Foundation, Inc. 808ae04fa6Smrg 818ae04fa6SmrgThis is free software; see the source for copying conditions. There is NO 828ae04fa6Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 838ae04fa6Smrg 848ae04fa6Smrghelp=" 858ae04fa6SmrgTry \`$me --help' for more information." 868ae04fa6Smrg 878ae04fa6Smrg# Parse command line 888ae04fa6Smrgwhile test $# -gt 0 ; do 898ae04fa6Smrg case $1 in 908ae04fa6Smrg --time-stamp | --time* | -t ) 918ae04fa6Smrg echo "$timestamp" ; exit ;; 928ae04fa6Smrg --version | -v ) 938ae04fa6Smrg echo "$version" ; exit ;; 948ae04fa6Smrg --help | --h* | -h ) 958ae04fa6Smrg echo "$usage"; exit ;; 968ae04fa6Smrg -- ) # Stop option processing 978ae04fa6Smrg shift; break ;; 988ae04fa6Smrg - ) # Use stdin as input. 998ae04fa6Smrg break ;; 1008ae04fa6Smrg -* ) 101138a9f8aSmrg echo "$me: invalid option $1$help" >&2 1028ae04fa6Smrg exit 1 ;; 1038ae04fa6Smrg 1048ae04fa6Smrg *local*) 1058ae04fa6Smrg # First pass through any local machine types. 106d71d4977Smrg echo "$1" 1078ae04fa6Smrg exit ;; 1088ae04fa6Smrg 1098ae04fa6Smrg * ) 1108ae04fa6Smrg break ;; 1118ae04fa6Smrg esac 1128ae04fa6Smrgdone 1138ae04fa6Smrg 1148ae04fa6Smrgcase $# in 1158ae04fa6Smrg 0) echo "$me: missing argument$help" >&2 1168ae04fa6Smrg exit 1;; 1178ae04fa6Smrg 1) ;; 1188ae04fa6Smrg *) echo "$me: too many arguments$help" >&2 1198ae04fa6Smrg exit 1;; 1208ae04fa6Smrgesac 1218ae04fa6Smrg 122138a9f8aSmrg# Split fields of configuration type 123138a9f8aSmrg# shellcheck disable=SC2162 124138a9f8aSmrgsaved_IFS=$IFS 125138a9f8aSmrgIFS="-" read field1 field2 field3 field4 <<EOF 126138a9f8aSmrg$1 127138a9f8aSmrgEOF 128138a9f8aSmrgIFS=$saved_IFS 1298ae04fa6Smrg 130138a9f8aSmrg# Separate into logical components for further validation 131138a9f8aSmrgcase $1 in 132138a9f8aSmrg *-*-*-*-*) 133138a9f8aSmrg echo Invalid configuration \`"$1"\': more than four components >&2 134138a9f8aSmrg exit 1 13580f56f3aSmrg ;; 136138a9f8aSmrg *-*-*-*) 137138a9f8aSmrg basic_machine=$field1-$field2 138138a9f8aSmrg basic_os=$field3-$field4 1398ae04fa6Smrg ;; 140138a9f8aSmrg *-*-*) 141138a9f8aSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142138a9f8aSmrg # parts 143138a9f8aSmrg maybe_os=$field2-$field3 144138a9f8aSmrg case $maybe_os in 145138a9f8aSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 146138a9f8aSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147138a9f8aSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148138a9f8aSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 149138a9f8aSmrg basic_machine=$field1 150138a9f8aSmrg basic_os=$maybe_os 151138a9f8aSmrg ;; 152138a9f8aSmrg android-linux) 153138a9f8aSmrg basic_machine=$field1-unknown 154138a9f8aSmrg basic_os=linux-android 155138a9f8aSmrg ;; 156138a9f8aSmrg *) 157138a9f8aSmrg basic_machine=$field1-$field2 158138a9f8aSmrg basic_os=$field3 159138a9f8aSmrg ;; 160138a9f8aSmrg esac 1618ae04fa6Smrg ;; 162138a9f8aSmrg *-*) 163138a9f8aSmrg # A lone config we happen to match not fitting any pattern 164138a9f8aSmrg case $field1-$field2 in 165138a9f8aSmrg decstation-3100) 166138a9f8aSmrg basic_machine=mips-dec 167138a9f8aSmrg basic_os= 168138a9f8aSmrg ;; 169138a9f8aSmrg *-*) 170138a9f8aSmrg # Second component is usually, but not always the OS 171138a9f8aSmrg case $field2 in 172138a9f8aSmrg # Prevent following clause from handling this valid os 173138a9f8aSmrg sun*os*) 174138a9f8aSmrg basic_machine=$field1 175138a9f8aSmrg basic_os=$field2 176138a9f8aSmrg ;; 177138a9f8aSmrg zephyr*) 178138a9f8aSmrg basic_machine=$field1-unknown 179138a9f8aSmrg basic_os=$field2 180138a9f8aSmrg ;; 181138a9f8aSmrg # Manufacturers 182138a9f8aSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183138a9f8aSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184138a9f8aSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185138a9f8aSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186138a9f8aSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187138a9f8aSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188138a9f8aSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189138a9f8aSmrg | microblaze* | sim | cisco \ 190138a9f8aSmrg | oki | wec | wrs | winbond) 191138a9f8aSmrg basic_machine=$field1-$field2 192138a9f8aSmrg basic_os= 193138a9f8aSmrg ;; 194138a9f8aSmrg *) 195138a9f8aSmrg basic_machine=$field1 196138a9f8aSmrg basic_os=$field2 197138a9f8aSmrg ;; 198138a9f8aSmrg esac 199138a9f8aSmrg ;; 200138a9f8aSmrg esac 2018ae04fa6Smrg ;; 202138a9f8aSmrg *) 203138a9f8aSmrg # Convert single-component short-hands not valid as part of 204138a9f8aSmrg # multi-component configurations. 205138a9f8aSmrg case $field1 in 206138a9f8aSmrg 386bsd) 207138a9f8aSmrg basic_machine=i386-pc 208138a9f8aSmrg basic_os=bsd 209138a9f8aSmrg ;; 210138a9f8aSmrg a29khif) 211138a9f8aSmrg basic_machine=a29k-amd 212138a9f8aSmrg basic_os=udi 213138a9f8aSmrg ;; 214138a9f8aSmrg adobe68k) 215138a9f8aSmrg basic_machine=m68010-adobe 216138a9f8aSmrg basic_os=scout 217138a9f8aSmrg ;; 218138a9f8aSmrg alliant) 219138a9f8aSmrg basic_machine=fx80-alliant 220138a9f8aSmrg basic_os= 221138a9f8aSmrg ;; 222138a9f8aSmrg altos | altos3068) 223138a9f8aSmrg basic_machine=m68k-altos 224138a9f8aSmrg basic_os= 225138a9f8aSmrg ;; 226138a9f8aSmrg am29k) 227138a9f8aSmrg basic_machine=a29k-none 228138a9f8aSmrg basic_os=bsd 229138a9f8aSmrg ;; 230138a9f8aSmrg amdahl) 231138a9f8aSmrg basic_machine=580-amdahl 232138a9f8aSmrg basic_os=sysv 233138a9f8aSmrg ;; 234138a9f8aSmrg amiga) 235138a9f8aSmrg basic_machine=m68k-unknown 236138a9f8aSmrg basic_os= 237138a9f8aSmrg ;; 238138a9f8aSmrg amigaos | amigados) 239138a9f8aSmrg basic_machine=m68k-unknown 240138a9f8aSmrg basic_os=amigaos 241138a9f8aSmrg ;; 242138a9f8aSmrg amigaunix | amix) 243138a9f8aSmrg basic_machine=m68k-unknown 244138a9f8aSmrg basic_os=sysv4 245138a9f8aSmrg ;; 246138a9f8aSmrg apollo68) 247138a9f8aSmrg basic_machine=m68k-apollo 248138a9f8aSmrg basic_os=sysv 249138a9f8aSmrg ;; 250138a9f8aSmrg apollo68bsd) 251138a9f8aSmrg basic_machine=m68k-apollo 252138a9f8aSmrg basic_os=bsd 253138a9f8aSmrg ;; 254138a9f8aSmrg aros) 255138a9f8aSmrg basic_machine=i386-pc 256138a9f8aSmrg basic_os=aros 257138a9f8aSmrg ;; 258138a9f8aSmrg aux) 259138a9f8aSmrg basic_machine=m68k-apple 260138a9f8aSmrg basic_os=aux 261138a9f8aSmrg ;; 262138a9f8aSmrg balance) 263138a9f8aSmrg basic_machine=ns32k-sequent 264138a9f8aSmrg basic_os=dynix 265138a9f8aSmrg ;; 266138a9f8aSmrg blackfin) 267138a9f8aSmrg basic_machine=bfin-unknown 268138a9f8aSmrg basic_os=linux 269138a9f8aSmrg ;; 270138a9f8aSmrg cegcc) 271138a9f8aSmrg basic_machine=arm-unknown 272138a9f8aSmrg basic_os=cegcc 273138a9f8aSmrg ;; 274138a9f8aSmrg convex-c1) 275138a9f8aSmrg basic_machine=c1-convex 276138a9f8aSmrg basic_os=bsd 277138a9f8aSmrg ;; 278138a9f8aSmrg convex-c2) 279138a9f8aSmrg basic_machine=c2-convex 280138a9f8aSmrg basic_os=bsd 281138a9f8aSmrg ;; 282138a9f8aSmrg convex-c32) 283138a9f8aSmrg basic_machine=c32-convex 284138a9f8aSmrg basic_os=bsd 285138a9f8aSmrg ;; 286138a9f8aSmrg convex-c34) 287138a9f8aSmrg basic_machine=c34-convex 288138a9f8aSmrg basic_os=bsd 289138a9f8aSmrg ;; 290138a9f8aSmrg convex-c38) 291138a9f8aSmrg basic_machine=c38-convex 292138a9f8aSmrg basic_os=bsd 293138a9f8aSmrg ;; 294138a9f8aSmrg cray) 295138a9f8aSmrg basic_machine=j90-cray 296138a9f8aSmrg basic_os=unicos 297138a9f8aSmrg ;; 298138a9f8aSmrg crds | unos) 299138a9f8aSmrg basic_machine=m68k-crds 300138a9f8aSmrg basic_os= 301138a9f8aSmrg ;; 302138a9f8aSmrg da30) 303138a9f8aSmrg basic_machine=m68k-da30 304138a9f8aSmrg basic_os= 305138a9f8aSmrg ;; 306138a9f8aSmrg decstation | pmax | pmin | dec3100 | decstatn) 307138a9f8aSmrg basic_machine=mips-dec 308138a9f8aSmrg basic_os= 309138a9f8aSmrg ;; 310138a9f8aSmrg delta88) 311138a9f8aSmrg basic_machine=m88k-motorola 312138a9f8aSmrg basic_os=sysv3 313138a9f8aSmrg ;; 314138a9f8aSmrg dicos) 315138a9f8aSmrg basic_machine=i686-pc 316138a9f8aSmrg basic_os=dicos 317138a9f8aSmrg ;; 318138a9f8aSmrg djgpp) 319138a9f8aSmrg basic_machine=i586-pc 320138a9f8aSmrg basic_os=msdosdjgpp 321138a9f8aSmrg ;; 322138a9f8aSmrg ebmon29k) 323138a9f8aSmrg basic_machine=a29k-amd 324138a9f8aSmrg basic_os=ebmon 325138a9f8aSmrg ;; 326138a9f8aSmrg es1800 | OSE68k | ose68k | ose | OSE) 327138a9f8aSmrg basic_machine=m68k-ericsson 328138a9f8aSmrg basic_os=ose 329138a9f8aSmrg ;; 330138a9f8aSmrg gmicro) 331138a9f8aSmrg basic_machine=tron-gmicro 332138a9f8aSmrg basic_os=sysv 333138a9f8aSmrg ;; 334138a9f8aSmrg go32) 335138a9f8aSmrg basic_machine=i386-pc 336138a9f8aSmrg basic_os=go32 337138a9f8aSmrg ;; 338138a9f8aSmrg h8300hms) 339138a9f8aSmrg basic_machine=h8300-hitachi 340138a9f8aSmrg basic_os=hms 341138a9f8aSmrg ;; 342138a9f8aSmrg h8300xray) 343138a9f8aSmrg basic_machine=h8300-hitachi 344138a9f8aSmrg basic_os=xray 345138a9f8aSmrg ;; 346138a9f8aSmrg h8500hms) 347138a9f8aSmrg basic_machine=h8500-hitachi 348138a9f8aSmrg basic_os=hms 349138a9f8aSmrg ;; 350138a9f8aSmrg harris) 351138a9f8aSmrg basic_machine=m88k-harris 352138a9f8aSmrg basic_os=sysv3 353138a9f8aSmrg ;; 354138a9f8aSmrg hp300 | hp300hpux) 355138a9f8aSmrg basic_machine=m68k-hp 356138a9f8aSmrg basic_os=hpux 357138a9f8aSmrg ;; 358138a9f8aSmrg hp300bsd) 359138a9f8aSmrg basic_machine=m68k-hp 360138a9f8aSmrg basic_os=bsd 361138a9f8aSmrg ;; 362138a9f8aSmrg hppaosf) 363138a9f8aSmrg basic_machine=hppa1.1-hp 364138a9f8aSmrg basic_os=osf 365138a9f8aSmrg ;; 366138a9f8aSmrg hppro) 367138a9f8aSmrg basic_machine=hppa1.1-hp 368138a9f8aSmrg basic_os=proelf 369138a9f8aSmrg ;; 370138a9f8aSmrg i386mach) 371138a9f8aSmrg basic_machine=i386-mach 372138a9f8aSmrg basic_os=mach 373138a9f8aSmrg ;; 374138a9f8aSmrg isi68 | isi) 375138a9f8aSmrg basic_machine=m68k-isi 376138a9f8aSmrg basic_os=sysv 377138a9f8aSmrg ;; 378138a9f8aSmrg m68knommu) 379138a9f8aSmrg basic_machine=m68k-unknown 380138a9f8aSmrg basic_os=linux 381138a9f8aSmrg ;; 382138a9f8aSmrg magnum | m3230) 383138a9f8aSmrg basic_machine=mips-mips 384138a9f8aSmrg basic_os=sysv 385138a9f8aSmrg ;; 386138a9f8aSmrg merlin) 387138a9f8aSmrg basic_machine=ns32k-utek 388138a9f8aSmrg basic_os=sysv 389138a9f8aSmrg ;; 390138a9f8aSmrg mingw64) 391138a9f8aSmrg basic_machine=x86_64-pc 392138a9f8aSmrg basic_os=mingw64 393138a9f8aSmrg ;; 394138a9f8aSmrg mingw32) 395138a9f8aSmrg basic_machine=i686-pc 396138a9f8aSmrg basic_os=mingw32 397138a9f8aSmrg ;; 398138a9f8aSmrg mingw32ce) 399138a9f8aSmrg basic_machine=arm-unknown 400138a9f8aSmrg basic_os=mingw32ce 401138a9f8aSmrg ;; 402138a9f8aSmrg monitor) 403138a9f8aSmrg basic_machine=m68k-rom68k 404138a9f8aSmrg basic_os=coff 405138a9f8aSmrg ;; 406138a9f8aSmrg morphos) 407138a9f8aSmrg basic_machine=powerpc-unknown 408138a9f8aSmrg basic_os=morphos 409138a9f8aSmrg ;; 410138a9f8aSmrg moxiebox) 411138a9f8aSmrg basic_machine=moxie-unknown 412138a9f8aSmrg basic_os=moxiebox 413138a9f8aSmrg ;; 414138a9f8aSmrg msdos) 415138a9f8aSmrg basic_machine=i386-pc 416138a9f8aSmrg basic_os=msdos 417138a9f8aSmrg ;; 418138a9f8aSmrg msys) 419138a9f8aSmrg basic_machine=i686-pc 420138a9f8aSmrg basic_os=msys 421138a9f8aSmrg ;; 422138a9f8aSmrg mvs) 423138a9f8aSmrg basic_machine=i370-ibm 424138a9f8aSmrg basic_os=mvs 425138a9f8aSmrg ;; 426138a9f8aSmrg nacl) 427138a9f8aSmrg basic_machine=le32-unknown 428138a9f8aSmrg basic_os=nacl 429138a9f8aSmrg ;; 430138a9f8aSmrg ncr3000) 431138a9f8aSmrg basic_machine=i486-ncr 432138a9f8aSmrg basic_os=sysv4 433138a9f8aSmrg ;; 434138a9f8aSmrg netbsd386) 435138a9f8aSmrg basic_machine=i386-pc 436138a9f8aSmrg basic_os=netbsd 437138a9f8aSmrg ;; 438138a9f8aSmrg netwinder) 439138a9f8aSmrg basic_machine=armv4l-rebel 440138a9f8aSmrg basic_os=linux 441138a9f8aSmrg ;; 442138a9f8aSmrg news | news700 | news800 | news900) 443138a9f8aSmrg basic_machine=m68k-sony 444138a9f8aSmrg basic_os=newsos 445138a9f8aSmrg ;; 446138a9f8aSmrg news1000) 447138a9f8aSmrg basic_machine=m68030-sony 448138a9f8aSmrg basic_os=newsos 449138a9f8aSmrg ;; 450138a9f8aSmrg necv70) 451138a9f8aSmrg basic_machine=v70-nec 452138a9f8aSmrg basic_os=sysv 453138a9f8aSmrg ;; 454138a9f8aSmrg nh3000) 455138a9f8aSmrg basic_machine=m68k-harris 456138a9f8aSmrg basic_os=cxux 457138a9f8aSmrg ;; 458138a9f8aSmrg nh[45]000) 459138a9f8aSmrg basic_machine=m88k-harris 460138a9f8aSmrg basic_os=cxux 461138a9f8aSmrg ;; 462138a9f8aSmrg nindy960) 463138a9f8aSmrg basic_machine=i960-intel 464138a9f8aSmrg basic_os=nindy 465138a9f8aSmrg ;; 466138a9f8aSmrg mon960) 467138a9f8aSmrg basic_machine=i960-intel 468138a9f8aSmrg basic_os=mon960 469138a9f8aSmrg ;; 470138a9f8aSmrg nonstopux) 471138a9f8aSmrg basic_machine=mips-compaq 472138a9f8aSmrg basic_os=nonstopux 473138a9f8aSmrg ;; 474138a9f8aSmrg os400) 475138a9f8aSmrg basic_machine=powerpc-ibm 476138a9f8aSmrg basic_os=os400 477138a9f8aSmrg ;; 478138a9f8aSmrg OSE68000 | ose68000) 479138a9f8aSmrg basic_machine=m68000-ericsson 480138a9f8aSmrg basic_os=ose 481138a9f8aSmrg ;; 482138a9f8aSmrg os68k) 483138a9f8aSmrg basic_machine=m68k-none 484138a9f8aSmrg basic_os=os68k 485138a9f8aSmrg ;; 486138a9f8aSmrg paragon) 487138a9f8aSmrg basic_machine=i860-intel 488138a9f8aSmrg basic_os=osf 489138a9f8aSmrg ;; 490138a9f8aSmrg parisc) 491138a9f8aSmrg basic_machine=hppa-unknown 492138a9f8aSmrg basic_os=linux 493138a9f8aSmrg ;; 494138a9f8aSmrg psp) 495138a9f8aSmrg basic_machine=mipsallegrexel-sony 496138a9f8aSmrg basic_os=psp 497138a9f8aSmrg ;; 498138a9f8aSmrg pw32) 499138a9f8aSmrg basic_machine=i586-unknown 500138a9f8aSmrg basic_os=pw32 501138a9f8aSmrg ;; 502138a9f8aSmrg rdos | rdos64) 503138a9f8aSmrg basic_machine=x86_64-pc 504138a9f8aSmrg basic_os=rdos 505138a9f8aSmrg ;; 506138a9f8aSmrg rdos32) 507138a9f8aSmrg basic_machine=i386-pc 508138a9f8aSmrg basic_os=rdos 509138a9f8aSmrg ;; 510138a9f8aSmrg rom68k) 511138a9f8aSmrg basic_machine=m68k-rom68k 512138a9f8aSmrg basic_os=coff 513138a9f8aSmrg ;; 514138a9f8aSmrg sa29200) 515138a9f8aSmrg basic_machine=a29k-amd 516138a9f8aSmrg basic_os=udi 517138a9f8aSmrg ;; 518138a9f8aSmrg sei) 519138a9f8aSmrg basic_machine=mips-sei 520138a9f8aSmrg basic_os=seiux 521138a9f8aSmrg ;; 522138a9f8aSmrg sequent) 523138a9f8aSmrg basic_machine=i386-sequent 524138a9f8aSmrg basic_os= 525138a9f8aSmrg ;; 526138a9f8aSmrg sps7) 527138a9f8aSmrg basic_machine=m68k-bull 528138a9f8aSmrg basic_os=sysv2 529138a9f8aSmrg ;; 530138a9f8aSmrg st2000) 531138a9f8aSmrg basic_machine=m68k-tandem 532138a9f8aSmrg basic_os= 533138a9f8aSmrg ;; 534138a9f8aSmrg stratus) 535138a9f8aSmrg basic_machine=i860-stratus 536138a9f8aSmrg basic_os=sysv4 537138a9f8aSmrg ;; 538138a9f8aSmrg sun2) 539138a9f8aSmrg basic_machine=m68000-sun 540138a9f8aSmrg basic_os= 541138a9f8aSmrg ;; 542138a9f8aSmrg sun2os3) 543138a9f8aSmrg basic_machine=m68000-sun 544138a9f8aSmrg basic_os=sunos3 545138a9f8aSmrg ;; 546138a9f8aSmrg sun2os4) 547138a9f8aSmrg basic_machine=m68000-sun 548138a9f8aSmrg basic_os=sunos4 549138a9f8aSmrg ;; 550138a9f8aSmrg sun3) 551138a9f8aSmrg basic_machine=m68k-sun 552138a9f8aSmrg basic_os= 553138a9f8aSmrg ;; 554138a9f8aSmrg sun3os3) 555138a9f8aSmrg basic_machine=m68k-sun 556138a9f8aSmrg basic_os=sunos3 557138a9f8aSmrg ;; 558138a9f8aSmrg sun3os4) 559138a9f8aSmrg basic_machine=m68k-sun 560138a9f8aSmrg basic_os=sunos4 561138a9f8aSmrg ;; 562138a9f8aSmrg sun4) 563138a9f8aSmrg basic_machine=sparc-sun 564138a9f8aSmrg basic_os= 565138a9f8aSmrg ;; 566138a9f8aSmrg sun4os3) 567138a9f8aSmrg basic_machine=sparc-sun 568138a9f8aSmrg basic_os=sunos3 569138a9f8aSmrg ;; 570138a9f8aSmrg sun4os4) 571138a9f8aSmrg basic_machine=sparc-sun 572138a9f8aSmrg basic_os=sunos4 573138a9f8aSmrg ;; 574138a9f8aSmrg sun4sol2) 575138a9f8aSmrg basic_machine=sparc-sun 576138a9f8aSmrg basic_os=solaris2 577138a9f8aSmrg ;; 578138a9f8aSmrg sun386 | sun386i | roadrunner) 579138a9f8aSmrg basic_machine=i386-sun 580138a9f8aSmrg basic_os= 581138a9f8aSmrg ;; 582138a9f8aSmrg sv1) 583138a9f8aSmrg basic_machine=sv1-cray 584138a9f8aSmrg basic_os=unicos 585138a9f8aSmrg ;; 586138a9f8aSmrg symmetry) 587138a9f8aSmrg basic_machine=i386-sequent 588138a9f8aSmrg basic_os=dynix 589138a9f8aSmrg ;; 590138a9f8aSmrg t3e) 591138a9f8aSmrg basic_machine=alphaev5-cray 592138a9f8aSmrg basic_os=unicos 593138a9f8aSmrg ;; 594138a9f8aSmrg t90) 595138a9f8aSmrg basic_machine=t90-cray 596138a9f8aSmrg basic_os=unicos 597138a9f8aSmrg ;; 598138a9f8aSmrg toad1) 599138a9f8aSmrg basic_machine=pdp10-xkl 600138a9f8aSmrg basic_os=tops20 601138a9f8aSmrg ;; 602138a9f8aSmrg tpf) 603138a9f8aSmrg basic_machine=s390x-ibm 604138a9f8aSmrg basic_os=tpf 605138a9f8aSmrg ;; 606138a9f8aSmrg udi29k) 607138a9f8aSmrg basic_machine=a29k-amd 608138a9f8aSmrg basic_os=udi 609138a9f8aSmrg ;; 610138a9f8aSmrg ultra3) 611138a9f8aSmrg basic_machine=a29k-nyu 612138a9f8aSmrg basic_os=sym1 613138a9f8aSmrg ;; 614138a9f8aSmrg v810 | necv810) 615138a9f8aSmrg basic_machine=v810-nec 616138a9f8aSmrg basic_os=none 617138a9f8aSmrg ;; 618138a9f8aSmrg vaxv) 619138a9f8aSmrg basic_machine=vax-dec 620138a9f8aSmrg basic_os=sysv 621138a9f8aSmrg ;; 622138a9f8aSmrg vms) 623138a9f8aSmrg basic_machine=vax-dec 624138a9f8aSmrg basic_os=vms 625138a9f8aSmrg ;; 626138a9f8aSmrg vsta) 627138a9f8aSmrg basic_machine=i386-pc 628138a9f8aSmrg basic_os=vsta 629138a9f8aSmrg ;; 630138a9f8aSmrg vxworks960) 631138a9f8aSmrg basic_machine=i960-wrs 632138a9f8aSmrg basic_os=vxworks 633138a9f8aSmrg ;; 634138a9f8aSmrg vxworks68) 635138a9f8aSmrg basic_machine=m68k-wrs 636138a9f8aSmrg basic_os=vxworks 637138a9f8aSmrg ;; 638138a9f8aSmrg vxworks29k) 639138a9f8aSmrg basic_machine=a29k-wrs 640138a9f8aSmrg basic_os=vxworks 641138a9f8aSmrg ;; 642138a9f8aSmrg xbox) 643138a9f8aSmrg basic_machine=i686-pc 644138a9f8aSmrg basic_os=mingw32 645138a9f8aSmrg ;; 646138a9f8aSmrg ymp) 647138a9f8aSmrg basic_machine=ymp-cray 648138a9f8aSmrg basic_os=unicos 649138a9f8aSmrg ;; 650138a9f8aSmrg *) 651138a9f8aSmrg basic_machine=$1 652138a9f8aSmrg basic_os= 653138a9f8aSmrg ;; 654138a9f8aSmrg esac 6558ae04fa6Smrg ;; 6568ae04fa6Smrgesac 6578ae04fa6Smrg 658138a9f8aSmrg# Decode 1-component or ad-hoc basic machines 6598ae04fa6Smrgcase $basic_machine in 660138a9f8aSmrg # Here we handle the default manufacturer of certain CPU types. It is in 661138a9f8aSmrg # some cases the only manufacturer, in others, it is the most popular. 662138a9f8aSmrg w89k) 663138a9f8aSmrg cpu=hppa1.1 664138a9f8aSmrg vendor=winbond 66580f56f3aSmrg ;; 666138a9f8aSmrg op50n) 667138a9f8aSmrg cpu=hppa1.1 668138a9f8aSmrg vendor=oki 6698ae04fa6Smrg ;; 670138a9f8aSmrg op60c) 671138a9f8aSmrg cpu=hppa1.1 672138a9f8aSmrg vendor=oki 6738ae04fa6Smrg ;; 674138a9f8aSmrg ibm*) 675138a9f8aSmrg cpu=i370 676138a9f8aSmrg vendor=ibm 6778ae04fa6Smrg ;; 678138a9f8aSmrg orion105) 679138a9f8aSmrg cpu=clipper 680138a9f8aSmrg vendor=highlevel 68180f56f3aSmrg ;; 682138a9f8aSmrg mac | mpw | mac-mpw) 683138a9f8aSmrg cpu=m68k 684138a9f8aSmrg vendor=apple 685405c8079Smrg ;; 686138a9f8aSmrg pmac | pmac-mpw) 687138a9f8aSmrg cpu=powerpc 688138a9f8aSmrg vendor=apple 689405c8079Smrg ;; 690405c8079Smrg 6918ae04fa6Smrg # Recognize the various machine names and aliases which stand 6928ae04fa6Smrg # for a CPU type and a company and sometimes even an OS. 6938ae04fa6Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694138a9f8aSmrg cpu=m68000 695138a9f8aSmrg vendor=att 6968ae04fa6Smrg ;; 6978ae04fa6Smrg 3b*) 698138a9f8aSmrg cpu=we32k 699138a9f8aSmrg vendor=att 70044af7230Smrg ;; 7012d1d20fcSmrg bluegene*) 702138a9f8aSmrg cpu=powerpc 703138a9f8aSmrg vendor=ibm 704138a9f8aSmrg basic_os=cnk 7058ae04fa6Smrg ;; 7068ae04fa6Smrg decsystem10* | dec10*) 707138a9f8aSmrg cpu=pdp10 708138a9f8aSmrg vendor=dec 709138a9f8aSmrg basic_os=tops10 7108ae04fa6Smrg ;; 7118ae04fa6Smrg decsystem20* | dec20*) 712138a9f8aSmrg cpu=pdp10 713138a9f8aSmrg vendor=dec 714138a9f8aSmrg basic_os=tops20 7158ae04fa6Smrg ;; 7168ae04fa6Smrg delta | 3300 | motorola-3300 | motorola-delta \ 7178ae04fa6Smrg | 3300-motorola | delta-motorola) 718138a9f8aSmrg cpu=m68k 719138a9f8aSmrg vendor=motorola 7208ae04fa6Smrg ;; 721d71d4977Smrg dpx2*) 722138a9f8aSmrg cpu=m68k 723138a9f8aSmrg vendor=bull 724138a9f8aSmrg basic_os=sysv3 7258ae04fa6Smrg ;; 7268ae04fa6Smrg encore | umax | mmax) 727138a9f8aSmrg cpu=ns32k 728138a9f8aSmrg vendor=encore 7298ae04fa6Smrg ;; 730138a9f8aSmrg elxsi) 731138a9f8aSmrg cpu=elxsi 732138a9f8aSmrg vendor=elxsi 733138a9f8aSmrg basic_os=${basic_os:-bsd} 7348ae04fa6Smrg ;; 7358ae04fa6Smrg fx2800) 736138a9f8aSmrg cpu=i860 737138a9f8aSmrg vendor=alliant 7388ae04fa6Smrg ;; 7398ae04fa6Smrg genix) 740138a9f8aSmrg cpu=ns32k 741138a9f8aSmrg vendor=ns 7428ae04fa6Smrg ;; 7438ae04fa6Smrg h3050r* | hiux*) 744138a9f8aSmrg cpu=hppa1.1 745138a9f8aSmrg vendor=hitachi 746138a9f8aSmrg basic_os=hiuxwe2 7478ae04fa6Smrg ;; 7488ae04fa6Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749138a9f8aSmrg cpu=hppa1.0 750138a9f8aSmrg vendor=hp 7518ae04fa6Smrg ;; 7528ae04fa6Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753138a9f8aSmrg cpu=m68000 754138a9f8aSmrg vendor=hp 7558ae04fa6Smrg ;; 7568ae04fa6Smrg hp9k3[2-9][0-9]) 757138a9f8aSmrg cpu=m68k 758138a9f8aSmrg vendor=hp 7598ae04fa6Smrg ;; 7608ae04fa6Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761138a9f8aSmrg cpu=hppa1.0 762138a9f8aSmrg vendor=hp 7638ae04fa6Smrg ;; 7648ae04fa6Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765138a9f8aSmrg cpu=hppa1.1 766138a9f8aSmrg vendor=hp 7678ae04fa6Smrg ;; 7688ae04fa6Smrg hp9k78[0-9] | hp78[0-9]) 7698ae04fa6Smrg # FIXME: really hppa2.0-hp 770138a9f8aSmrg cpu=hppa1.1 771138a9f8aSmrg vendor=hp 7728ae04fa6Smrg ;; 7738ae04fa6Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7748ae04fa6Smrg # FIXME: really hppa2.0-hp 775138a9f8aSmrg cpu=hppa1.1 776138a9f8aSmrg vendor=hp 7778ae04fa6Smrg ;; 7788ae04fa6Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779138a9f8aSmrg cpu=hppa1.1 780138a9f8aSmrg vendor=hp 7818ae04fa6Smrg ;; 7828ae04fa6Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783138a9f8aSmrg cpu=hppa1.0 784138a9f8aSmrg vendor=hp 7858ae04fa6Smrg ;; 7868ae04fa6Smrg i*86v32) 787138a9f8aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788138a9f8aSmrg vendor=pc 789138a9f8aSmrg basic_os=sysv32 7908ae04fa6Smrg ;; 7918ae04fa6Smrg i*86v4*) 792138a9f8aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793138a9f8aSmrg vendor=pc 794138a9f8aSmrg basic_os=sysv4 7958ae04fa6Smrg ;; 7968ae04fa6Smrg i*86v) 797138a9f8aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798138a9f8aSmrg vendor=pc 799138a9f8aSmrg basic_os=sysv 8008ae04fa6Smrg ;; 8018ae04fa6Smrg i*86sol2) 802138a9f8aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803138a9f8aSmrg vendor=pc 804138a9f8aSmrg basic_os=solaris2 8058ae04fa6Smrg ;; 806138a9f8aSmrg j90 | j90-cray) 807138a9f8aSmrg cpu=j90 808138a9f8aSmrg vendor=cray 809138a9f8aSmrg basic_os=${basic_os:-unicos} 8108ae04fa6Smrg ;; 8118ae04fa6Smrg iris | iris4d) 812138a9f8aSmrg cpu=mips 813138a9f8aSmrg vendor=sgi 814138a9f8aSmrg case $basic_os in 815138a9f8aSmrg irix*) 8168ae04fa6Smrg ;; 8178ae04fa6Smrg *) 818138a9f8aSmrg basic_os=irix4 8198ae04fa6Smrg ;; 8208ae04fa6Smrg esac 8218ae04fa6Smrg ;; 8228ae04fa6Smrg miniframe) 823138a9f8aSmrg cpu=m68000 824138a9f8aSmrg vendor=convergent 8258ae04fa6Smrg ;; 826138a9f8aSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827138a9f8aSmrg cpu=m68k 828138a9f8aSmrg vendor=atari 829138a9f8aSmrg basic_os=mint 8308ae04fa6Smrg ;; 8318ae04fa6Smrg news-3600 | risc-news) 832138a9f8aSmrg cpu=mips 833138a9f8aSmrg vendor=sony 834138a9f8aSmrg basic_os=newsos 8358ae04fa6Smrg ;; 836d71d4977Smrg next | m*-next) 837138a9f8aSmrg cpu=m68k 838138a9f8aSmrg vendor=next 839138a9f8aSmrg case $basic_os in 840138a9f8aSmrg openstep*) 841138a9f8aSmrg ;; 842138a9f8aSmrg nextstep*) 8438ae04fa6Smrg ;; 844138a9f8aSmrg ns2*) 845138a9f8aSmrg basic_os=nextstep2 8468ae04fa6Smrg ;; 8478ae04fa6Smrg *) 848138a9f8aSmrg basic_os=nextstep3 8498ae04fa6Smrg ;; 8508ae04fa6Smrg esac 8518ae04fa6Smrg ;; 8528ae04fa6Smrg np1) 853138a9f8aSmrg cpu=np1 854138a9f8aSmrg vendor=gould 855d71d4977Smrg ;; 8568ae04fa6Smrg op50n-* | op60c-*) 857138a9f8aSmrg cpu=hppa1.1 858138a9f8aSmrg vendor=oki 859138a9f8aSmrg basic_os=proelf 8608ae04fa6Smrg ;; 8618ae04fa6Smrg pa-hitachi) 862138a9f8aSmrg cpu=hppa1.1 863138a9f8aSmrg vendor=hitachi 864138a9f8aSmrg basic_os=hiuxwe2 86544af7230Smrg ;; 8668ae04fa6Smrg pbd) 867138a9f8aSmrg cpu=sparc 868138a9f8aSmrg vendor=tti 8698ae04fa6Smrg ;; 8708ae04fa6Smrg pbb) 871138a9f8aSmrg cpu=m68k 872138a9f8aSmrg vendor=tti 8738ae04fa6Smrg ;; 874138a9f8aSmrg pc532) 875138a9f8aSmrg cpu=ns32k 876138a9f8aSmrg vendor=pc532 8778ae04fa6Smrg ;; 8788ae04fa6Smrg pn) 879138a9f8aSmrg cpu=pn 880138a9f8aSmrg vendor=gould 8818ae04fa6Smrg ;; 882138a9f8aSmrg power) 883138a9f8aSmrg cpu=power 884138a9f8aSmrg vendor=ibm 8858ae04fa6Smrg ;; 886138a9f8aSmrg ps2) 887138a9f8aSmrg cpu=i386 888138a9f8aSmrg vendor=ibm 8898ae04fa6Smrg ;; 890138a9f8aSmrg rm[46]00) 891138a9f8aSmrg cpu=mips 892138a9f8aSmrg vendor=siemens 8938ae04fa6Smrg ;; 894138a9f8aSmrg rtpc | rtpc-*) 895138a9f8aSmrg cpu=romp 896138a9f8aSmrg vendor=ibm 8978ae04fa6Smrg ;; 898138a9f8aSmrg sde) 899138a9f8aSmrg cpu=mipsisa32 900138a9f8aSmrg vendor=sde 901138a9f8aSmrg basic_os=${basic_os:-elf} 9028ae04fa6Smrg ;; 903138a9f8aSmrg simso-wrs) 904138a9f8aSmrg cpu=sparclite 905138a9f8aSmrg vendor=wrs 906138a9f8aSmrg basic_os=vxworks 9078ae04fa6Smrg ;; 908138a9f8aSmrg tower | tower-32) 909138a9f8aSmrg cpu=m68k 910138a9f8aSmrg vendor=ncr 9118ae04fa6Smrg ;; 912138a9f8aSmrg vpp*|vx|vx-*) 913138a9f8aSmrg cpu=f301 914138a9f8aSmrg vendor=fujitsu 91580f56f3aSmrg ;; 916138a9f8aSmrg w65) 917138a9f8aSmrg cpu=w65 918138a9f8aSmrg vendor=wdc 9198ae04fa6Smrg ;; 920138a9f8aSmrg w89k-*) 921138a9f8aSmrg cpu=hppa1.1 922138a9f8aSmrg vendor=winbond 923138a9f8aSmrg basic_os=proelf 9248ae04fa6Smrg ;; 925138a9f8aSmrg none) 926138a9f8aSmrg cpu=none 927138a9f8aSmrg vendor=none 9288ae04fa6Smrg ;; 929138a9f8aSmrg leon|leon[3-9]) 930138a9f8aSmrg cpu=sparc 931138a9f8aSmrg vendor=$basic_machine 9328ae04fa6Smrg ;; 933138a9f8aSmrg leon-*|leon[3-9]-*) 934138a9f8aSmrg cpu=sparc 935138a9f8aSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9368ae04fa6Smrg ;; 937138a9f8aSmrg 938138a9f8aSmrg *-*) 939138a9f8aSmrg # shellcheck disable=SC2162 940138a9f8aSmrg saved_IFS=$IFS 941138a9f8aSmrg IFS="-" read cpu vendor <<EOF 942138a9f8aSmrg$basic_machine 943138a9f8aSmrgEOF 944138a9f8aSmrg IFS=$saved_IFS 9458ae04fa6Smrg ;; 946138a9f8aSmrg # We use `pc' rather than `unknown' 947138a9f8aSmrg # because (1) that's what they normally are, and 948138a9f8aSmrg # (2) the word "unknown" tends to confuse beginning users. 949138a9f8aSmrg i*86 | x86_64) 950138a9f8aSmrg cpu=$basic_machine 951138a9f8aSmrg vendor=pc 9528ae04fa6Smrg ;; 953138a9f8aSmrg # These rules are duplicated from below for sake of the special case above; 954138a9f8aSmrg # i.e. things that normalized to x86 arches should also default to "pc" 955138a9f8aSmrg pc98) 956138a9f8aSmrg cpu=i386 957138a9f8aSmrg vendor=pc 9588ae04fa6Smrg ;; 959138a9f8aSmrg x64 | amd64) 960138a9f8aSmrg cpu=x86_64 961138a9f8aSmrg vendor=pc 9628ae04fa6Smrg ;; 963138a9f8aSmrg # Recognize the basic CPU types without company name. 964138a9f8aSmrg *) 965138a9f8aSmrg cpu=$basic_machine 966138a9f8aSmrg vendor=unknown 9678ae04fa6Smrg ;; 968138a9f8aSmrgesac 969138a9f8aSmrg 970138a9f8aSmrgunset -v basic_machine 971138a9f8aSmrg 972138a9f8aSmrg# Decode basic machines in the full and proper CPU-Company form. 973138a9f8aSmrgcase $cpu-$vendor in 974138a9f8aSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975138a9f8aSmrg # some cases the only manufacturer, in others, it is the most popular. 976138a9f8aSmrg craynv-unknown) 977138a9f8aSmrg vendor=cray 978138a9f8aSmrg basic_os=${basic_os:-unicosmp} 9798ae04fa6Smrg ;; 980138a9f8aSmrg c90-unknown | c90-cray) 981138a9f8aSmrg vendor=cray 982138a9f8aSmrg basic_os=${Basic_os:-unicos} 9838ae04fa6Smrg ;; 984138a9f8aSmrg fx80-unknown) 985138a9f8aSmrg vendor=alliant 98644af7230Smrg ;; 987138a9f8aSmrg romp-unknown) 988138a9f8aSmrg vendor=ibm 9898ae04fa6Smrg ;; 990138a9f8aSmrg mmix-unknown) 991138a9f8aSmrg vendor=knuth 9928ae04fa6Smrg ;; 993138a9f8aSmrg microblaze-unknown | microblazeel-unknown) 994138a9f8aSmrg vendor=xilinx 9958ae04fa6Smrg ;; 996138a9f8aSmrg rs6000-unknown) 997138a9f8aSmrg vendor=ibm 9988ae04fa6Smrg ;; 999138a9f8aSmrg vax-unknown) 1000138a9f8aSmrg vendor=dec 10018ae04fa6Smrg ;; 1002138a9f8aSmrg pdp11-unknown) 1003138a9f8aSmrg vendor=dec 1004405c8079Smrg ;; 1005138a9f8aSmrg we32k-unknown) 1006138a9f8aSmrg vendor=att 10078ae04fa6Smrg ;; 1008138a9f8aSmrg cydra-unknown) 1009138a9f8aSmrg vendor=cydrome 10108ae04fa6Smrg ;; 1011138a9f8aSmrg i370-ibm*) 1012138a9f8aSmrg vendor=ibm 10138ae04fa6Smrg ;; 1014138a9f8aSmrg orion-unknown) 1015138a9f8aSmrg vendor=highlevel 10168ae04fa6Smrg ;; 1017138a9f8aSmrg xps-unknown | xps100-unknown) 1018138a9f8aSmrg cpu=xps100 1019138a9f8aSmrg vendor=honeywell 10208ae04fa6Smrg ;; 1021138a9f8aSmrg 1022138a9f8aSmrg # Here we normalize CPU types with a missing or matching vendor 1023138a9f8aSmrg dpx20-unknown | dpx20-bull) 1024138a9f8aSmrg cpu=rs6000 1025138a9f8aSmrg vendor=bull 1026138a9f8aSmrg basic_os=${basic_os:-bosx} 10278ae04fa6Smrg ;; 1028138a9f8aSmrg 1029138a9f8aSmrg # Here we normalize CPU types irrespective of the vendor 1030138a9f8aSmrg amd64-*) 1031138a9f8aSmrg cpu=x86_64 10328ae04fa6Smrg ;; 1033138a9f8aSmrg blackfin-*) 1034138a9f8aSmrg cpu=bfin 1035138a9f8aSmrg basic_os=linux 10368ae04fa6Smrg ;; 1037138a9f8aSmrg c54x-*) 1038138a9f8aSmrg cpu=tic54x 10398ae04fa6Smrg ;; 1040138a9f8aSmrg c55x-*) 1041138a9f8aSmrg cpu=tic55x 10428ae04fa6Smrg ;; 1043138a9f8aSmrg c6x-*) 1044138a9f8aSmrg cpu=tic6x 10458ae04fa6Smrg ;; 1046138a9f8aSmrg e500v[12]-*) 1047138a9f8aSmrg cpu=powerpc 1048138a9f8aSmrg basic_os=${basic_os}"spe" 10498ae04fa6Smrg ;; 1050138a9f8aSmrg mips3*-*) 1051138a9f8aSmrg cpu=mips64 10528ae04fa6Smrg ;; 1053138a9f8aSmrg ms1-*) 1054138a9f8aSmrg cpu=mt 10558ae04fa6Smrg ;; 1056138a9f8aSmrg m68knommu-*) 1057138a9f8aSmrg cpu=m68k 1058138a9f8aSmrg basic_os=linux 10598ae04fa6Smrg ;; 1060138a9f8aSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1061138a9f8aSmrg cpu=s12z 106244af7230Smrg ;; 1063138a9f8aSmrg openrisc-*) 1064138a9f8aSmrg cpu=or32 10658ae04fa6Smrg ;; 1066138a9f8aSmrg parisc-*) 1067138a9f8aSmrg cpu=hppa 1068138a9f8aSmrg basic_os=linux 10698ae04fa6Smrg ;; 1070138a9f8aSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1071138a9f8aSmrg cpu=i586 10728ae04fa6Smrg ;; 1073138a9f8aSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 1074138a9f8aSmrg cpu=i686 10758ae04fa6Smrg ;; 1076138a9f8aSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1077138a9f8aSmrg cpu=i686 10788ae04fa6Smrg ;; 1079138a9f8aSmrg pentium4-*) 1080138a9f8aSmrg cpu=i786 10818ae04fa6Smrg ;; 1082138a9f8aSmrg pc98-*) 1083138a9f8aSmrg cpu=i386 10848ae04fa6Smrg ;; 1085138a9f8aSmrg ppc-* | ppcbe-*) 1086138a9f8aSmrg cpu=powerpc 10878ae04fa6Smrg ;; 1088138a9f8aSmrg ppcle-* | powerpclittle-*) 1089138a9f8aSmrg cpu=powerpcle 10908ae04fa6Smrg ;; 1091138a9f8aSmrg ppc64-*) 1092138a9f8aSmrg cpu=powerpc64 10938ae04fa6Smrg ;; 1094138a9f8aSmrg ppc64le-* | powerpc64little-*) 1095138a9f8aSmrg cpu=powerpc64le 10968ae04fa6Smrg ;; 1097138a9f8aSmrg sb1-*) 1098138a9f8aSmrg cpu=mipsisa64sb1 10998ae04fa6Smrg ;; 1100138a9f8aSmrg sb1el-*) 1101138a9f8aSmrg cpu=mipsisa64sb1el 11028ae04fa6Smrg ;; 1103138a9f8aSmrg sh5e[lb]-*) 1104138a9f8aSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11058ae04fa6Smrg ;; 1106138a9f8aSmrg spur-*) 1107138a9f8aSmrg cpu=spur 11088ae04fa6Smrg ;; 1109138a9f8aSmrg strongarm-* | thumb-*) 1110138a9f8aSmrg cpu=arm 11118ae04fa6Smrg ;; 1112138a9f8aSmrg tx39-*) 1113138a9f8aSmrg cpu=mipstx39 1114d71d4977Smrg ;; 1115138a9f8aSmrg tx39el-*) 1116138a9f8aSmrg cpu=mipstx39el 11178ae04fa6Smrg ;; 1118138a9f8aSmrg x64-*) 1119138a9f8aSmrg cpu=x86_64 11208ae04fa6Smrg ;; 1121405c8079Smrg xscale-* | xscalee[bl]-*) 1122138a9f8aSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11238ae04fa6Smrg ;; 1124138a9f8aSmrg arm64-*) 1125138a9f8aSmrg cpu=aarch64 11268ae04fa6Smrg ;; 11278ae04fa6Smrg 1128138a9f8aSmrg # Recognize the canonical CPU Types that limit and/or modify the 1129138a9f8aSmrg # company names they are paired with. 1130138a9f8aSmrg cr16-*) 1131138a9f8aSmrg basic_os=${basic_os:-elf} 11328ae04fa6Smrg ;; 1133138a9f8aSmrg crisv32-* | etraxfs*-*) 1134138a9f8aSmrg cpu=crisv32 1135138a9f8aSmrg vendor=axis 11368ae04fa6Smrg ;; 1137138a9f8aSmrg cris-* | etrax*-*) 1138138a9f8aSmrg cpu=cris 1139138a9f8aSmrg vendor=axis 11408ae04fa6Smrg ;; 1141138a9f8aSmrg crx-*) 1142138a9f8aSmrg basic_os=${basic_os:-elf} 11438ae04fa6Smrg ;; 1144138a9f8aSmrg neo-tandem) 1145138a9f8aSmrg cpu=neo 1146138a9f8aSmrg vendor=tandem 11478ae04fa6Smrg ;; 1148138a9f8aSmrg nse-tandem) 1149138a9f8aSmrg cpu=nse 1150138a9f8aSmrg vendor=tandem 11518ae04fa6Smrg ;; 1152138a9f8aSmrg nsr-tandem) 1153138a9f8aSmrg cpu=nsr 1154138a9f8aSmrg vendor=tandem 11558ae04fa6Smrg ;; 1156138a9f8aSmrg nsv-tandem) 1157138a9f8aSmrg cpu=nsv 1158138a9f8aSmrg vendor=tandem 11598ae04fa6Smrg ;; 1160138a9f8aSmrg nsx-tandem) 1161138a9f8aSmrg cpu=nsx 1162138a9f8aSmrg vendor=tandem 11638ae04fa6Smrg ;; 1164138a9f8aSmrg mipsallegrexel-sony) 1165138a9f8aSmrg cpu=mipsallegrexel 1166138a9f8aSmrg vendor=sony 11678ae04fa6Smrg ;; 1168138a9f8aSmrg tile*-*) 1169138a9f8aSmrg basic_os=${basic_os:-linux-gnu} 11708ae04fa6Smrg ;; 1171138a9f8aSmrg 11728ae04fa6Smrg *) 1173138a9f8aSmrg # Recognize the canonical CPU types that are allowed with any 1174138a9f8aSmrg # company name. 1175138a9f8aSmrg case $cpu in 1176138a9f8aSmrg 1750a | 580 \ 1177138a9f8aSmrg | a29k \ 1178138a9f8aSmrg | aarch64 | aarch64_be \ 1179138a9f8aSmrg | abacus \ 1180138a9f8aSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1181138a9f8aSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1182138a9f8aSmrg | alphapca5[67] | alpha64pca5[67] \ 1183138a9f8aSmrg | am33_2.0 \ 1184138a9f8aSmrg | amdgcn \ 1185138a9f8aSmrg | arc | arceb | arc32 | arc64 \ 1186138a9f8aSmrg | arm | arm[lb]e | arme[lb] | armv* \ 1187138a9f8aSmrg | avr | avr32 \ 1188138a9f8aSmrg | asmjs \ 1189138a9f8aSmrg | ba \ 1190138a9f8aSmrg | be32 | be64 \ 1191138a9f8aSmrg | bfin | bpf | bs2000 \ 1192138a9f8aSmrg | c[123]* | c30 | [cjt]90 | c4x \ 1193138a9f8aSmrg | c8051 | clipper | craynv | csky | cydra \ 1194138a9f8aSmrg | d10v | d30v | dlx | dsp16xx \ 1195138a9f8aSmrg | e2k | elxsi | epiphany \ 1196138a9f8aSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1197138a9f8aSmrg | h8300 | h8500 \ 1198138a9f8aSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1199138a9f8aSmrg | hexagon \ 1200138a9f8aSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1201138a9f8aSmrg | ip2k | iq2000 \ 1202138a9f8aSmrg | k1om \ 1203138a9f8aSmrg | le32 | le64 \ 1204138a9f8aSmrg | lm32 \ 1205138a9f8aSmrg | loongarch32 | loongarch64 | loongarchx32 \ 1206138a9f8aSmrg | m32c | m32r | m32rle \ 1207138a9f8aSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1208138a9f8aSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1209138a9f8aSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1210138a9f8aSmrg | microblaze | microblazeel \ 1211138a9f8aSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1212138a9f8aSmrg | mips16 \ 1213138a9f8aSmrg | mips64 | mips64eb | mips64el \ 1214138a9f8aSmrg | mips64octeon | mips64octeonel \ 1215138a9f8aSmrg | mips64orion | mips64orionel \ 1216138a9f8aSmrg | mips64r5900 | mips64r5900el \ 1217138a9f8aSmrg | mips64vr | mips64vrel \ 1218138a9f8aSmrg | mips64vr4100 | mips64vr4100el \ 1219138a9f8aSmrg | mips64vr4300 | mips64vr4300el \ 1220138a9f8aSmrg | mips64vr5000 | mips64vr5000el \ 1221138a9f8aSmrg | mips64vr5900 | mips64vr5900el \ 1222138a9f8aSmrg | mipsisa32 | mipsisa32el \ 1223138a9f8aSmrg | mipsisa32r2 | mipsisa32r2el \ 1224138a9f8aSmrg | mipsisa32r3 | mipsisa32r3el \ 1225138a9f8aSmrg | mipsisa32r5 | mipsisa32r5el \ 1226138a9f8aSmrg | mipsisa32r6 | mipsisa32r6el \ 1227138a9f8aSmrg | mipsisa64 | mipsisa64el \ 1228138a9f8aSmrg | mipsisa64r2 | mipsisa64r2el \ 1229138a9f8aSmrg | mipsisa64r3 | mipsisa64r3el \ 1230138a9f8aSmrg | mipsisa64r5 | mipsisa64r5el \ 1231138a9f8aSmrg | mipsisa64r6 | mipsisa64r6el \ 1232138a9f8aSmrg | mipsisa64sb1 | mipsisa64sb1el \ 1233138a9f8aSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 1234138a9f8aSmrg | mipsr5900 | mipsr5900el \ 1235138a9f8aSmrg | mipstx39 | mipstx39el \ 1236138a9f8aSmrg | mmix \ 1237138a9f8aSmrg | mn10200 | mn10300 \ 1238138a9f8aSmrg | moxie \ 1239138a9f8aSmrg | mt \ 1240138a9f8aSmrg | msp430 \ 1241138a9f8aSmrg | nds32 | nds32le | nds32be \ 1242138a9f8aSmrg | nfp \ 1243138a9f8aSmrg | nios | nios2 | nios2eb | nios2el \ 1244138a9f8aSmrg | none | np1 | ns16k | ns32k | nvptx \ 1245138a9f8aSmrg | open8 \ 1246138a9f8aSmrg | or1k* \ 1247138a9f8aSmrg | or32 \ 1248138a9f8aSmrg | orion \ 1249138a9f8aSmrg | picochip \ 1250138a9f8aSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1251138a9f8aSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1252138a9f8aSmrg | pru \ 1253138a9f8aSmrg | pyramid \ 1254138a9f8aSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1255138a9f8aSmrg | rl78 | romp | rs6000 | rx \ 1256138a9f8aSmrg | s390 | s390x \ 1257138a9f8aSmrg | score \ 1258138a9f8aSmrg | sh | shl \ 1259138a9f8aSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1260138a9f8aSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1261138a9f8aSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1262138a9f8aSmrg | sparclite \ 1263138a9f8aSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1264138a9f8aSmrg | spu \ 1265138a9f8aSmrg | tahoe \ 1266138a9f8aSmrg | thumbv7* \ 1267138a9f8aSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1268138a9f8aSmrg | tron \ 1269138a9f8aSmrg | ubicom32 \ 1270138a9f8aSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1271138a9f8aSmrg | vax \ 1272138a9f8aSmrg | visium \ 1273138a9f8aSmrg | w65 \ 1274138a9f8aSmrg | wasm32 | wasm64 \ 1275138a9f8aSmrg | we32k \ 1276138a9f8aSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1277138a9f8aSmrg | xstormy16 | xtensa* \ 1278138a9f8aSmrg | ymp \ 1279138a9f8aSmrg | z8k | z80) 1280138a9f8aSmrg ;; 1281138a9f8aSmrg 1282138a9f8aSmrg *) 1283138a9f8aSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1284138a9f8aSmrg exit 1 1285138a9f8aSmrg ;; 1286138a9f8aSmrg esac 12878ae04fa6Smrg ;; 12888ae04fa6Smrgesac 12898ae04fa6Smrg 12908ae04fa6Smrg# Here we canonicalize certain aliases for manufacturers. 1291138a9f8aSmrgcase $vendor in 1292138a9f8aSmrg digital*) 1293138a9f8aSmrg vendor=dec 12948ae04fa6Smrg ;; 1295138a9f8aSmrg commodore*) 1296138a9f8aSmrg vendor=cbm 12978ae04fa6Smrg ;; 12988ae04fa6Smrg *) 12998ae04fa6Smrg ;; 13008ae04fa6Smrgesac 13018ae04fa6Smrg 13028ae04fa6Smrg# Decode manufacturer-specific aliases for certain operating systems. 13038ae04fa6Smrg 1304138a9f8aSmrgif test x$basic_os != x 13058ae04fa6Smrgthen 1306138a9f8aSmrg 1307138a9f8aSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 1308138a9f8aSmrg# set os. 1309138a9f8aSmrgcase $basic_os in 1310138a9f8aSmrg gnu/linux*) 1311138a9f8aSmrg kernel=linux 1312138a9f8aSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1313138a9f8aSmrg ;; 1314138a9f8aSmrg os2-emx) 1315138a9f8aSmrg kernel=os2 1316138a9f8aSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1317138a9f8aSmrg ;; 1318138a9f8aSmrg nto-qnx*) 1319138a9f8aSmrg kernel=nto 1320138a9f8aSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1321138a9f8aSmrg ;; 1322138a9f8aSmrg *-*) 1323138a9f8aSmrg # shellcheck disable=SC2162 1324138a9f8aSmrg saved_IFS=$IFS 1325138a9f8aSmrg IFS="-" read kernel os <<EOF 1326138a9f8aSmrg$basic_os 1327138a9f8aSmrgEOF 1328138a9f8aSmrg IFS=$saved_IFS 1329138a9f8aSmrg ;; 1330138a9f8aSmrg # Default OS when just kernel was specified 1331138a9f8aSmrg nto*) 1332138a9f8aSmrg kernel=nto 1333138a9f8aSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1334138a9f8aSmrg ;; 1335138a9f8aSmrg linux*) 1336138a9f8aSmrg kernel=linux 1337138a9f8aSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1338138a9f8aSmrg ;; 1339138a9f8aSmrg *) 1340138a9f8aSmrg kernel= 1341138a9f8aSmrg os=$basic_os 1342138a9f8aSmrg ;; 1343138a9f8aSmrgesac 1344138a9f8aSmrg 1345138a9f8aSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1346138a9f8aSmrg# etc.) 13478ae04fa6Smrgcase $os in 1348d71d4977Smrg # First match some system type aliases that might get confused 1349d71d4977Smrg # with valid system types. 1350138a9f8aSmrg # solaris* is a basic system type, with this one exception. 1351138a9f8aSmrg auroraux) 1352138a9f8aSmrg os=auroraux 13532d1d20fcSmrg ;; 1354138a9f8aSmrg bluegene*) 1355138a9f8aSmrg os=cnk 13568ae04fa6Smrg ;; 1357138a9f8aSmrg solaris1 | solaris1.*) 1358138a9f8aSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13598ae04fa6Smrg ;; 1360138a9f8aSmrg solaris) 1361138a9f8aSmrg os=solaris2 13628ae04fa6Smrg ;; 1363138a9f8aSmrg unixware*) 1364138a9f8aSmrg os=sysv4.2uw 13658ae04fa6Smrg ;; 1366d71d4977Smrg # es1800 is here to avoid being matched by es* (a different OS) 1367138a9f8aSmrg es1800*) 1368138a9f8aSmrg os=ose 1369d71d4977Smrg ;; 1370138a9f8aSmrg # Some version numbers need modification 1371138a9f8aSmrg chorusos*) 1372138a9f8aSmrg os=chorusos 13738ae04fa6Smrg ;; 1374138a9f8aSmrg isc) 1375138a9f8aSmrg os=isc2.2 13768ae04fa6Smrg ;; 1377138a9f8aSmrg sco6) 1378138a9f8aSmrg os=sco5v6 13798ae04fa6Smrg ;; 1380138a9f8aSmrg sco5) 1381138a9f8aSmrg os=sco3.2v5 13828ae04fa6Smrg ;; 1383138a9f8aSmrg sco4) 1384138a9f8aSmrg os=sco3.2v4 13858ae04fa6Smrg ;; 1386138a9f8aSmrg sco3.2.[4-9]*) 1387138a9f8aSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13888ae04fa6Smrg ;; 1389138a9f8aSmrg sco*v* | scout) 1390138a9f8aSmrg # Don't match below 13918ae04fa6Smrg ;; 1392138a9f8aSmrg sco*) 1393138a9f8aSmrg os=sco3.2v2 13948ae04fa6Smrg ;; 1395138a9f8aSmrg psos*) 1396138a9f8aSmrg os=psos 13978ae04fa6Smrg ;; 1398138a9f8aSmrg qnx*) 1399138a9f8aSmrg os=qnx 14008ae04fa6Smrg ;; 1401138a9f8aSmrg hiux*) 1402138a9f8aSmrg os=hiuxwe2 14038ae04fa6Smrg ;; 1404138a9f8aSmrg lynx*178) 1405138a9f8aSmrg os=lynxos178 14068ae04fa6Smrg ;; 1407138a9f8aSmrg lynx*5) 1408138a9f8aSmrg os=lynxos5 14098ae04fa6Smrg ;; 1410138a9f8aSmrg lynxos*) 1411138a9f8aSmrg # don't get caught up in next wildcard 14128ae04fa6Smrg ;; 1413138a9f8aSmrg lynx*) 1414138a9f8aSmrg os=lynxos 14158ae04fa6Smrg ;; 1416138a9f8aSmrg mac[0-9]*) 1417138a9f8aSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 14188ae04fa6Smrg ;; 1419138a9f8aSmrg opened*) 1420138a9f8aSmrg os=openedition 14218ae04fa6Smrg ;; 1422138a9f8aSmrg os400*) 1423138a9f8aSmrg os=os400 14248ae04fa6Smrg ;; 1425138a9f8aSmrg sunos5*) 1426138a9f8aSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14278ae04fa6Smrg ;; 1428138a9f8aSmrg sunos6*) 1429138a9f8aSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14308ae04fa6Smrg ;; 1431138a9f8aSmrg wince*) 1432138a9f8aSmrg os=wince 14338ae04fa6Smrg ;; 1434138a9f8aSmrg utek*) 1435138a9f8aSmrg os=bsd 14368ae04fa6Smrg ;; 1437138a9f8aSmrg dynix*) 1438138a9f8aSmrg os=bsd 14398ae04fa6Smrg ;; 1440138a9f8aSmrg acis*) 1441138a9f8aSmrg os=aos 14428ae04fa6Smrg ;; 1443138a9f8aSmrg atheos*) 1444138a9f8aSmrg os=atheos 14458ae04fa6Smrg ;; 1446138a9f8aSmrg syllable*) 1447138a9f8aSmrg os=syllable 1448138a9f8aSmrg ;; 1449138a9f8aSmrg 386bsd) 1450138a9f8aSmrg os=bsd 1451138a9f8aSmrg ;; 1452138a9f8aSmrg ctix* | uts*) 1453138a9f8aSmrg os=sysv 1454138a9f8aSmrg ;; 1455138a9f8aSmrg nova*) 1456138a9f8aSmrg os=rtmk-nova 1457138a9f8aSmrg ;; 1458138a9f8aSmrg ns2) 1459138a9f8aSmrg os=nextstep2 1460138a9f8aSmrg ;; 1461138a9f8aSmrg # Preserve the version number of sinix5. 1462138a9f8aSmrg sinix5.*) 1463138a9f8aSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14648ae04fa6Smrg ;; 1465138a9f8aSmrg sinix*) 1466138a9f8aSmrg os=sysv4 14678ae04fa6Smrg ;; 1468138a9f8aSmrg tpf*) 1469138a9f8aSmrg os=tpf 14708ae04fa6Smrg ;; 1471138a9f8aSmrg triton*) 1472138a9f8aSmrg os=sysv3 14738ae04fa6Smrg ;; 1474138a9f8aSmrg oss*) 1475138a9f8aSmrg os=sysv3 14768ae04fa6Smrg ;; 1477138a9f8aSmrg svr4*) 1478138a9f8aSmrg os=sysv4 14798ae04fa6Smrg ;; 1480138a9f8aSmrg svr3) 1481138a9f8aSmrg os=sysv3 14828ae04fa6Smrg ;; 1483138a9f8aSmrg sysvr4) 1484138a9f8aSmrg os=sysv4 14858ae04fa6Smrg ;; 1486138a9f8aSmrg ose*) 1487138a9f8aSmrg os=ose 14888ae04fa6Smrg ;; 1489138a9f8aSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1490138a9f8aSmrg os=mint 149144af7230Smrg ;; 1492138a9f8aSmrg dicos*) 1493138a9f8aSmrg os=dicos 1494138a9f8aSmrg ;; 1495138a9f8aSmrg pikeos*) 1496d71d4977Smrg # Until real need of OS specific support for 1497d71d4977Smrg # particular features comes up, bare metal 1498d71d4977Smrg # configurations are quite functional. 1499138a9f8aSmrg case $cpu in 1500d71d4977Smrg arm*) 1501138a9f8aSmrg os=eabi 1502d71d4977Smrg ;; 1503d71d4977Smrg *) 1504138a9f8aSmrg os=elf 1505d71d4977Smrg ;; 1506d71d4977Smrg esac 1507d71d4977Smrg ;; 15088ae04fa6Smrg *) 1509138a9f8aSmrg # No normalization, but not necessarily accepted, that comes below. 15108ae04fa6Smrg ;; 15118ae04fa6Smrgesac 1512138a9f8aSmrg 15138ae04fa6Smrgelse 15148ae04fa6Smrg 15158ae04fa6Smrg# Here we handle the default operating systems that come with various machines. 15168ae04fa6Smrg# The value should be what the vendor currently ships out the door with their 15178ae04fa6Smrg# machine or put another way, the most popular os provided with the machine. 15188ae04fa6Smrg 15198ae04fa6Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15208ae04fa6Smrg# "-sun"), then you have to tell the case statement up towards the top 15218ae04fa6Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15228ae04fa6Smrg# will signal an error saying that MANUFACTURER isn't an operating 15238ae04fa6Smrg# system, and we'll never get to this point. 15248ae04fa6Smrg 1525138a9f8aSmrgkernel= 1526138a9f8aSmrgcase $cpu-$vendor in 1527405c8079Smrg score-*) 1528138a9f8aSmrg os=elf 15298ae04fa6Smrg ;; 1530405c8079Smrg spu-*) 1531138a9f8aSmrg os=elf 15328ae04fa6Smrg ;; 15338ae04fa6Smrg *-acorn) 1534138a9f8aSmrg os=riscix1.2 15358ae04fa6Smrg ;; 15368ae04fa6Smrg arm*-rebel) 1537138a9f8aSmrg kernel=linux 1538138a9f8aSmrg os=gnu 15398ae04fa6Smrg ;; 15408ae04fa6Smrg arm*-semi) 1541138a9f8aSmrg os=aout 15428ae04fa6Smrg ;; 1543405c8079Smrg c4x-* | tic4x-*) 1544138a9f8aSmrg os=coff 15458ae04fa6Smrg ;; 154680f56f3aSmrg c8051-*) 1547138a9f8aSmrg os=elf 1548138a9f8aSmrg ;; 1549138a9f8aSmrg clipper-intergraph) 1550138a9f8aSmrg os=clix 155180f56f3aSmrg ;; 155280f56f3aSmrg hexagon-*) 1553138a9f8aSmrg os=elf 155480f56f3aSmrg ;; 15552d1d20fcSmrg tic54x-*) 1556138a9f8aSmrg os=coff 15572d1d20fcSmrg ;; 15582d1d20fcSmrg tic55x-*) 1559138a9f8aSmrg os=coff 15602d1d20fcSmrg ;; 15612d1d20fcSmrg tic6x-*) 1562138a9f8aSmrg os=coff 15632d1d20fcSmrg ;; 15648ae04fa6Smrg # This must come before the *-dec entry. 15658ae04fa6Smrg pdp10-*) 1566138a9f8aSmrg os=tops20 15678ae04fa6Smrg ;; 15688ae04fa6Smrg pdp11-*) 1569138a9f8aSmrg os=none 15708ae04fa6Smrg ;; 15718ae04fa6Smrg *-dec | vax-*) 1572138a9f8aSmrg os=ultrix4.2 15738ae04fa6Smrg ;; 15748ae04fa6Smrg m68*-apollo) 1575138a9f8aSmrg os=domain 15768ae04fa6Smrg ;; 15778ae04fa6Smrg i386-sun) 1578138a9f8aSmrg os=sunos4.0.2 15798ae04fa6Smrg ;; 15808ae04fa6Smrg m68000-sun) 1581138a9f8aSmrg os=sunos3 15828ae04fa6Smrg ;; 15838ae04fa6Smrg m68*-cisco) 1584138a9f8aSmrg os=aout 15858ae04fa6Smrg ;; 1586405c8079Smrg mep-*) 1587138a9f8aSmrg os=elf 158844af7230Smrg ;; 15898ae04fa6Smrg mips*-cisco) 1590138a9f8aSmrg os=elf 15918ae04fa6Smrg ;; 15928ae04fa6Smrg mips*-*) 1593138a9f8aSmrg os=elf 15948ae04fa6Smrg ;; 15958ae04fa6Smrg or32-*) 1596138a9f8aSmrg os=coff 15978ae04fa6Smrg ;; 15988ae04fa6Smrg *-tti) # must be before sparc entry or we get the wrong os. 1599138a9f8aSmrg os=sysv3 16008ae04fa6Smrg ;; 16018ae04fa6Smrg sparc-* | *-sun) 1602138a9f8aSmrg os=sunos4.1.1 16038ae04fa6Smrg ;; 1604d71d4977Smrg pru-*) 1605138a9f8aSmrg os=elf 1606d71d4977Smrg ;; 16078ae04fa6Smrg *-be) 1608138a9f8aSmrg os=beos 16098ae04fa6Smrg ;; 16108ae04fa6Smrg *-ibm) 1611138a9f8aSmrg os=aix 16128ae04fa6Smrg ;; 1613405c8079Smrg *-knuth) 1614138a9f8aSmrg os=mmixware 16158ae04fa6Smrg ;; 16168ae04fa6Smrg *-wec) 1617138a9f8aSmrg os=proelf 16188ae04fa6Smrg ;; 16198ae04fa6Smrg *-winbond) 1620138a9f8aSmrg os=proelf 16218ae04fa6Smrg ;; 16228ae04fa6Smrg *-oki) 1623138a9f8aSmrg os=proelf 16248ae04fa6Smrg ;; 16258ae04fa6Smrg *-hp) 1626138a9f8aSmrg os=hpux 16278ae04fa6Smrg ;; 16288ae04fa6Smrg *-hitachi) 1629138a9f8aSmrg os=hiux 16308ae04fa6Smrg ;; 16318ae04fa6Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1632138a9f8aSmrg os=sysv 16338ae04fa6Smrg ;; 16348ae04fa6Smrg *-cbm) 1635138a9f8aSmrg os=amigaos 16368ae04fa6Smrg ;; 16378ae04fa6Smrg *-dg) 1638138a9f8aSmrg os=dgux 16398ae04fa6Smrg ;; 16408ae04fa6Smrg *-dolphin) 1641138a9f8aSmrg os=sysv3 16428ae04fa6Smrg ;; 16438ae04fa6Smrg m68k-ccur) 1644138a9f8aSmrg os=rtu 16458ae04fa6Smrg ;; 16468ae04fa6Smrg m88k-omron*) 1647138a9f8aSmrg os=luna 16488ae04fa6Smrg ;; 1649d71d4977Smrg *-next) 1650138a9f8aSmrg os=nextstep 16518ae04fa6Smrg ;; 16528ae04fa6Smrg *-sequent) 1653138a9f8aSmrg os=ptx 16548ae04fa6Smrg ;; 16558ae04fa6Smrg *-crds) 1656138a9f8aSmrg os=unos 16578ae04fa6Smrg ;; 16588ae04fa6Smrg *-ns) 1659138a9f8aSmrg os=genix 16608ae04fa6Smrg ;; 16618ae04fa6Smrg i370-*) 1662138a9f8aSmrg os=mvs 16638ae04fa6Smrg ;; 16648ae04fa6Smrg *-gould) 1665138a9f8aSmrg os=sysv 16668ae04fa6Smrg ;; 16678ae04fa6Smrg *-highlevel) 1668138a9f8aSmrg os=bsd 16698ae04fa6Smrg ;; 16708ae04fa6Smrg *-encore) 1671138a9f8aSmrg os=bsd 16728ae04fa6Smrg ;; 16738ae04fa6Smrg *-sgi) 1674138a9f8aSmrg os=irix 16758ae04fa6Smrg ;; 16768ae04fa6Smrg *-siemens) 1677138a9f8aSmrg os=sysv4 16788ae04fa6Smrg ;; 16798ae04fa6Smrg *-masscomp) 1680138a9f8aSmrg os=rtu 16818ae04fa6Smrg ;; 16828ae04fa6Smrg f30[01]-fujitsu | f700-fujitsu) 1683138a9f8aSmrg os=uxpv 16848ae04fa6Smrg ;; 16858ae04fa6Smrg *-rom68k) 1686138a9f8aSmrg os=coff 16878ae04fa6Smrg ;; 16888ae04fa6Smrg *-*bug) 1689138a9f8aSmrg os=coff 16908ae04fa6Smrg ;; 16918ae04fa6Smrg *-apple) 1692138a9f8aSmrg os=macos 16938ae04fa6Smrg ;; 16948ae04fa6Smrg *-atari*) 1695138a9f8aSmrg os=mint 1696138a9f8aSmrg ;; 1697138a9f8aSmrg *-wrs) 1698138a9f8aSmrg os=vxworks 16998ae04fa6Smrg ;; 17008ae04fa6Smrg *) 1701138a9f8aSmrg os=none 17028ae04fa6Smrg ;; 17038ae04fa6Smrgesac 1704138a9f8aSmrg 17058ae04fa6Smrgfi 17068ae04fa6Smrg 1707138a9f8aSmrg# Now, validate our (potentially fixed-up) OS. 1708138a9f8aSmrgcase $os in 1709138a9f8aSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1710138a9f8aSmrg musl* | newlib* | relibc* | uclibc*) 1711138a9f8aSmrg ;; 1712138a9f8aSmrg # Likewise for "kernel-abi" 1713138a9f8aSmrg eabi* | gnueabi*) 1714138a9f8aSmrg ;; 1715138a9f8aSmrg # VxWorks passes extra cpu info in the 4th filed. 1716138a9f8aSmrg simlinux | simwindows | spe) 1717138a9f8aSmrg ;; 1718138a9f8aSmrg # Now accept the basic system types. 1719138a9f8aSmrg # The portable systems comes first. 1720138a9f8aSmrg # Each alternative MUST end in a * to match a version number. 1721138a9f8aSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1722138a9f8aSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1723138a9f8aSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1724138a9f8aSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1725138a9f8aSmrg | hiux* | abug | nacl* | netware* | windows* \ 1726138a9f8aSmrg | os9* | macos* | osx* | ios* \ 1727138a9f8aSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1728138a9f8aSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1729138a9f8aSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1730138a9f8aSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1731138a9f8aSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1732138a9f8aSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1733138a9f8aSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1734138a9f8aSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1735138a9f8aSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1736138a9f8aSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1737138a9f8aSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1738138a9f8aSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1739138a9f8aSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1740138a9f8aSmrg | midipix* | mingw32* | mingw64* | mint* \ 1741138a9f8aSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1742138a9f8aSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1743138a9f8aSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1744138a9f8aSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1745138a9f8aSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1746138a9f8aSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1747138a9f8aSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1748138a9f8aSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1749138a9f8aSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1750138a9f8aSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1751138a9f8aSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 1752138a9f8aSmrg ;; 1753138a9f8aSmrg # This one is extra strict with allowed versions 1754138a9f8aSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1755138a9f8aSmrg # Don't forget version if it is 3.2v4 or newer. 1756138a9f8aSmrg ;; 1757138a9f8aSmrg none) 1758138a9f8aSmrg ;; 1759138a9f8aSmrg *) 1760138a9f8aSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1761138a9f8aSmrg exit 1 1762138a9f8aSmrg ;; 1763138a9f8aSmrgesac 1764138a9f8aSmrg 1765138a9f8aSmrg# As a final step for OS-related things, validate the OS-kernel combination 1766138a9f8aSmrg# (given a valid OS), if there is a kernel. 1767138a9f8aSmrgcase $kernel-$os in 1768138a9f8aSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1769138a9f8aSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 1770138a9f8aSmrg ;; 1771138a9f8aSmrg uclinux-uclibc* ) 1772138a9f8aSmrg ;; 1773138a9f8aSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 1774138a9f8aSmrg # These are just libc implementations, not actual OSes, and thus 1775138a9f8aSmrg # require a kernel. 1776138a9f8aSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1777138a9f8aSmrg exit 1 1778138a9f8aSmrg ;; 1779138a9f8aSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1780138a9f8aSmrg ;; 1781138a9f8aSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1782138a9f8aSmrg ;; 1783138a9f8aSmrg nto-qnx*) 1784138a9f8aSmrg ;; 1785138a9f8aSmrg os2-emx) 1786138a9f8aSmrg ;; 1787138a9f8aSmrg *-eabi* | *-gnueabi*) 1788138a9f8aSmrg ;; 1789138a9f8aSmrg -*) 1790138a9f8aSmrg # Blank kernel with real OS is always fine. 1791138a9f8aSmrg ;; 1792138a9f8aSmrg *-*) 1793138a9f8aSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1794138a9f8aSmrg exit 1 1795138a9f8aSmrg ;; 1796138a9f8aSmrgesac 1797138a9f8aSmrg 17988ae04fa6Smrg# Here we handle the case where we know the os, and the CPU type, but not the 17998ae04fa6Smrg# manufacturer. We pick the logical manufacturer. 1800138a9f8aSmrgcase $vendor in 1801138a9f8aSmrg unknown) 1802138a9f8aSmrg case $cpu-$os in 1803138a9f8aSmrg *-riscix*) 18048ae04fa6Smrg vendor=acorn 18058ae04fa6Smrg ;; 1806138a9f8aSmrg *-sunos*) 18078ae04fa6Smrg vendor=sun 18088ae04fa6Smrg ;; 1809138a9f8aSmrg *-cnk* | *-aix*) 18108ae04fa6Smrg vendor=ibm 18118ae04fa6Smrg ;; 1812138a9f8aSmrg *-beos*) 18138ae04fa6Smrg vendor=be 18148ae04fa6Smrg ;; 1815138a9f8aSmrg *-hpux*) 18168ae04fa6Smrg vendor=hp 18178ae04fa6Smrg ;; 1818138a9f8aSmrg *-mpeix*) 18198ae04fa6Smrg vendor=hp 18208ae04fa6Smrg ;; 1821138a9f8aSmrg *-hiux*) 18228ae04fa6Smrg vendor=hitachi 18238ae04fa6Smrg ;; 1824138a9f8aSmrg *-unos*) 18258ae04fa6Smrg vendor=crds 18268ae04fa6Smrg ;; 1827138a9f8aSmrg *-dgux*) 18288ae04fa6Smrg vendor=dg 18298ae04fa6Smrg ;; 1830138a9f8aSmrg *-luna*) 18318ae04fa6Smrg vendor=omron 18328ae04fa6Smrg ;; 1833138a9f8aSmrg *-genix*) 18348ae04fa6Smrg vendor=ns 18358ae04fa6Smrg ;; 1836138a9f8aSmrg *-clix*) 1837138a9f8aSmrg vendor=intergraph 1838138a9f8aSmrg ;; 1839138a9f8aSmrg *-mvs* | *-opened*) 1840138a9f8aSmrg vendor=ibm 1841138a9f8aSmrg ;; 1842138a9f8aSmrg *-os400*) 18438ae04fa6Smrg vendor=ibm 18448ae04fa6Smrg ;; 1845138a9f8aSmrg s390-* | s390x-*) 18468ae04fa6Smrg vendor=ibm 18478ae04fa6Smrg ;; 1848138a9f8aSmrg *-ptx*) 18498ae04fa6Smrg vendor=sequent 18508ae04fa6Smrg ;; 1851138a9f8aSmrg *-tpf*) 18528ae04fa6Smrg vendor=ibm 18538ae04fa6Smrg ;; 1854138a9f8aSmrg *-vxsim* | *-vxworks* | *-windiss*) 18558ae04fa6Smrg vendor=wrs 18568ae04fa6Smrg ;; 1857138a9f8aSmrg *-aux*) 18588ae04fa6Smrg vendor=apple 18598ae04fa6Smrg ;; 1860138a9f8aSmrg *-hms*) 18618ae04fa6Smrg vendor=hitachi 18628ae04fa6Smrg ;; 1863138a9f8aSmrg *-mpw* | *-macos*) 18648ae04fa6Smrg vendor=apple 18658ae04fa6Smrg ;; 1866138a9f8aSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18678ae04fa6Smrg vendor=atari 18688ae04fa6Smrg ;; 1869138a9f8aSmrg *-vos*) 18708ae04fa6Smrg vendor=stratus 18718ae04fa6Smrg ;; 18728ae04fa6Smrg esac 18738ae04fa6Smrg ;; 18748ae04fa6Smrgesac 18758ae04fa6Smrg 1876138a9f8aSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 18778ae04fa6Smrgexit 18788ae04fa6Smrg 18798ae04fa6Smrg# Local variables: 1880138a9f8aSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 18818ae04fa6Smrg# time-stamp-start: "timestamp='" 18828ae04fa6Smrg# time-stamp-format: "%:y-%02m-%02d" 18838ae04fa6Smrg# time-stamp-end: "'" 18848ae04fa6Smrg# End: 1885