config.sub revision 635a5eb8
1ffe57424Smrg#!/usr/bin/sh 217ca54c3Smrg# Configuration validation subroutine script. 3635a5eb8Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 417ca54c3Smrg 5452262e1Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6452262e1Smrg 7635a5eb8Smrgtimestamp='2023-06-23' 817ca54c3Smrg 917ca54c3Smrg# This file is free software; you can redistribute it and/or modify it 1017ca54c3Smrg# under the terms of the GNU General Public License as published by 11452262e1Smrg# the Free Software Foundation, either version 3 of the License, or 1217ca54c3Smrg# (at your option) any later version. 1317ca54c3Smrg# 1417ca54c3Smrg# This program is distributed in the hope that it will be useful, but 1517ca54c3Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1617ca54c3Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1717ca54c3Smrg# General Public License for more details. 1817ca54c3Smrg# 1917ca54c3Smrg# You should have received a copy of the GNU General Public License 20452262e1Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 2117ca54c3Smrg# 2217ca54c3Smrg# As a special exception to the GNU General Public License, if you 2317ca54c3Smrg# distribute this file as part of a program that contains a 2417ca54c3Smrg# configuration script generated by Autoconf, you may include it under 2517ca54c3Smrg# the same distribution terms that you use for the rest of that 2617ca54c3Smrg# program. This Exception is an additional permission under section 7 2717ca54c3Smrg# of the GNU General Public License, version 3 ("GPLv3"). 2817ca54c3Smrg 2917ca54c3Smrg 3017ca54c3Smrg# Please send patches to <config-patches@gnu.org>. 3117ca54c3Smrg# 3217ca54c3Smrg# Configuration subroutine to validate and canonicalize a configuration type. 3317ca54c3Smrg# Supply the specified configuration type as an argument. 3417ca54c3Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 3517ca54c3Smrg# Otherwise, we print the canonical config type on stdout and succeed. 3617ca54c3Smrg 3717ca54c3Smrg# You can get the latest version of this script from: 38452262e1Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 3917ca54c3Smrg 4017ca54c3Smrg# This file is supposed to be the same for all GNU packages 4117ca54c3Smrg# and recognize all the CPU types, system types and aliases 4217ca54c3Smrg# that are meaningful with *any* GNU software. 4317ca54c3Smrg# Each package is responsible for reporting which valid configurations 4417ca54c3Smrg# it does not support. The user should be able to distinguish 4517ca54c3Smrg# a failure to support a valid configuration from a meaningless 4617ca54c3Smrg# configuration. 4717ca54c3Smrg 4817ca54c3Smrg# The goal of this file is to map all the various variations of a given 4917ca54c3Smrg# machine specification into a single specification in the form: 5017ca54c3Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5117ca54c3Smrg# or in some cases, the newer four-part form: 5217ca54c3Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5317ca54c3Smrg# It is wrong to echo any other type of specification. 5417ca54c3Smrg 55452262e1Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 56452262e1Smrg# about features and limitations of the classic Bourne shell that were 57452262e1Smrg# superseded or lifted in POSIX. However, this script identifies a wide 58452262e1Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59452262e1Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60452262e1Smrg# have a pre-POSIX /bin/sh. 61452262e1Smrg 6217ca54c3Smrgme=`echo "$0" | sed -e 's,.*/,,'` 6317ca54c3Smrg 6417ca54c3Smrgusage="\ 6517ca54c3SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6617ca54c3Smrg 6717ca54c3SmrgCanonicalize a configuration name. 6817ca54c3Smrg 69452262e1SmrgOptions: 7017ca54c3Smrg -h, --help print this help, then exit 7117ca54c3Smrg -t, --time-stamp print date of last modification, then exit 7217ca54c3Smrg -v, --version print version number, then exit 7317ca54c3Smrg 7417ca54c3SmrgReport bugs and patches to <config-patches@gnu.org>." 7517ca54c3Smrg 7617ca54c3Smrgversion="\ 7717ca54c3SmrgGNU config.sub ($timestamp) 7817ca54c3Smrg 79635a5eb8SmrgCopyright 1992-2023 Free Software Foundation, Inc. 8017ca54c3Smrg 8117ca54c3SmrgThis is free software; see the source for copying conditions. There is NO 8217ca54c3Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8317ca54c3Smrg 8417ca54c3Smrghelp=" 85635a5eb8SmrgTry '$me --help' for more information." 8617ca54c3Smrg 8717ca54c3Smrg# Parse command line 8817ca54c3Smrgwhile test $# -gt 0 ; do 8917ca54c3Smrg case $1 in 9017ca54c3Smrg --time-stamp | --time* | -t ) 9117ca54c3Smrg echo "$timestamp" ; exit ;; 9217ca54c3Smrg --version | -v ) 9317ca54c3Smrg echo "$version" ; exit ;; 9417ca54c3Smrg --help | --h* | -h ) 9517ca54c3Smrg echo "$usage"; exit ;; 9617ca54c3Smrg -- ) # Stop option processing 9717ca54c3Smrg shift; break ;; 9817ca54c3Smrg - ) # Use stdin as input. 9917ca54c3Smrg break ;; 10017ca54c3Smrg -* ) 101452262e1Smrg echo "$me: invalid option $1$help" >&2 10217ca54c3Smrg exit 1 ;; 10317ca54c3Smrg 10417ca54c3Smrg *local*) 10517ca54c3Smrg # First pass through any local machine types. 106452262e1Smrg echo "$1" 10717ca54c3Smrg exit ;; 10817ca54c3Smrg 10917ca54c3Smrg * ) 11017ca54c3Smrg break ;; 11117ca54c3Smrg esac 11217ca54c3Smrgdone 11317ca54c3Smrg 11417ca54c3Smrgcase $# in 11517ca54c3Smrg 0) echo "$me: missing argument$help" >&2 11617ca54c3Smrg exit 1;; 11717ca54c3Smrg 1) ;; 11817ca54c3Smrg *) echo "$me: too many arguments$help" >&2 11917ca54c3Smrg exit 1;; 12017ca54c3Smrgesac 12117ca54c3Smrg 122452262e1Smrg# Split fields of configuration type 123452262e1Smrg# shellcheck disable=SC2162 124452262e1Smrgsaved_IFS=$IFS 125452262e1SmrgIFS="-" read field1 field2 field3 field4 <<EOF 126452262e1Smrg$1 127452262e1SmrgEOF 128452262e1SmrgIFS=$saved_IFS 12917ca54c3Smrg 130452262e1Smrg# Separate into logical components for further validation 131452262e1Smrgcase $1 in 132452262e1Smrg *-*-*-*-*) 133635a5eb8Smrg echo "Invalid configuration '$1': more than four components" >&2 134452262e1Smrg exit 1 135f2ea6e01Smrg ;; 136452262e1Smrg *-*-*-*) 137452262e1Smrg basic_machine=$field1-$field2 138452262e1Smrg basic_os=$field3-$field4 139ffe57424Smrg ;; 140452262e1Smrg *-*-*) 141452262e1Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142452262e1Smrg # parts 143452262e1Smrg maybe_os=$field2-$field3 144452262e1Smrg case $maybe_os in 145452262e1Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 146452262e1Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147452262e1Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148635a5eb8Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 149452262e1Smrg basic_machine=$field1 150452262e1Smrg basic_os=$maybe_os 151452262e1Smrg ;; 152452262e1Smrg android-linux) 153452262e1Smrg basic_machine=$field1-unknown 154452262e1Smrg basic_os=linux-android 155452262e1Smrg ;; 156452262e1Smrg *) 157452262e1Smrg basic_machine=$field1-$field2 158452262e1Smrg basic_os=$field3 159452262e1Smrg ;; 160452262e1Smrg esac 161f2ea6e01Smrg ;; 162452262e1Smrg *-*) 163452262e1Smrg # A lone config we happen to match not fitting any pattern 164452262e1Smrg case $field1-$field2 in 165452262e1Smrg decstation-3100) 166452262e1Smrg basic_machine=mips-dec 167452262e1Smrg basic_os= 168452262e1Smrg ;; 169452262e1Smrg *-*) 170452262e1Smrg # Second component is usually, but not always the OS 171452262e1Smrg case $field2 in 172452262e1Smrg # Prevent following clause from handling this valid os 173452262e1Smrg sun*os*) 174452262e1Smrg basic_machine=$field1 175452262e1Smrg basic_os=$field2 176452262e1Smrg ;; 177452262e1Smrg zephyr*) 178452262e1Smrg basic_machine=$field1-unknown 179452262e1Smrg basic_os=$field2 180452262e1Smrg ;; 181452262e1Smrg # Manufacturers 182452262e1Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183452262e1Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184452262e1Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185452262e1Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186452262e1Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187452262e1Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188452262e1Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189452262e1Smrg | microblaze* | sim | cisco \ 190452262e1Smrg | oki | wec | wrs | winbond) 191452262e1Smrg basic_machine=$field1-$field2 192452262e1Smrg basic_os= 193452262e1Smrg ;; 194452262e1Smrg *) 195452262e1Smrg basic_machine=$field1 196452262e1Smrg basic_os=$field2 197452262e1Smrg ;; 198452262e1Smrg esac 199452262e1Smrg ;; 200452262e1Smrg esac 201f2ea6e01Smrg ;; 202452262e1Smrg *) 203452262e1Smrg # Convert single-component short-hands not valid as part of 204452262e1Smrg # multi-component configurations. 205452262e1Smrg case $field1 in 206452262e1Smrg 386bsd) 207452262e1Smrg basic_machine=i386-pc 208452262e1Smrg basic_os=bsd 209452262e1Smrg ;; 210452262e1Smrg a29khif) 211452262e1Smrg basic_machine=a29k-amd 212452262e1Smrg basic_os=udi 213452262e1Smrg ;; 214452262e1Smrg adobe68k) 215452262e1Smrg basic_machine=m68010-adobe 216452262e1Smrg basic_os=scout 217452262e1Smrg ;; 218452262e1Smrg alliant) 219452262e1Smrg basic_machine=fx80-alliant 220452262e1Smrg basic_os= 221452262e1Smrg ;; 222452262e1Smrg altos | altos3068) 223452262e1Smrg basic_machine=m68k-altos 224452262e1Smrg basic_os= 225452262e1Smrg ;; 226452262e1Smrg am29k) 227452262e1Smrg basic_machine=a29k-none 228452262e1Smrg basic_os=bsd 229452262e1Smrg ;; 230452262e1Smrg amdahl) 231452262e1Smrg basic_machine=580-amdahl 232452262e1Smrg basic_os=sysv 233452262e1Smrg ;; 234452262e1Smrg amiga) 235452262e1Smrg basic_machine=m68k-unknown 236452262e1Smrg basic_os= 237452262e1Smrg ;; 238452262e1Smrg amigaos | amigados) 239452262e1Smrg basic_machine=m68k-unknown 240452262e1Smrg basic_os=amigaos 241452262e1Smrg ;; 242452262e1Smrg amigaunix | amix) 243452262e1Smrg basic_machine=m68k-unknown 244452262e1Smrg basic_os=sysv4 245452262e1Smrg ;; 246452262e1Smrg apollo68) 247452262e1Smrg basic_machine=m68k-apollo 248452262e1Smrg basic_os=sysv 249452262e1Smrg ;; 250452262e1Smrg apollo68bsd) 251452262e1Smrg basic_machine=m68k-apollo 252452262e1Smrg basic_os=bsd 253452262e1Smrg ;; 254452262e1Smrg aros) 255452262e1Smrg basic_machine=i386-pc 256452262e1Smrg basic_os=aros 257452262e1Smrg ;; 258452262e1Smrg aux) 259452262e1Smrg basic_machine=m68k-apple 260452262e1Smrg basic_os=aux 261452262e1Smrg ;; 262452262e1Smrg balance) 263452262e1Smrg basic_machine=ns32k-sequent 264452262e1Smrg basic_os=dynix 265452262e1Smrg ;; 266452262e1Smrg blackfin) 267452262e1Smrg basic_machine=bfin-unknown 268452262e1Smrg basic_os=linux 269452262e1Smrg ;; 270452262e1Smrg cegcc) 271452262e1Smrg basic_machine=arm-unknown 272452262e1Smrg basic_os=cegcc 273452262e1Smrg ;; 274452262e1Smrg convex-c1) 275452262e1Smrg basic_machine=c1-convex 276452262e1Smrg basic_os=bsd 277452262e1Smrg ;; 278452262e1Smrg convex-c2) 279452262e1Smrg basic_machine=c2-convex 280452262e1Smrg basic_os=bsd 281452262e1Smrg ;; 282452262e1Smrg convex-c32) 283452262e1Smrg basic_machine=c32-convex 284452262e1Smrg basic_os=bsd 285452262e1Smrg ;; 286452262e1Smrg convex-c34) 287452262e1Smrg basic_machine=c34-convex 288452262e1Smrg basic_os=bsd 289452262e1Smrg ;; 290452262e1Smrg convex-c38) 291452262e1Smrg basic_machine=c38-convex 292452262e1Smrg basic_os=bsd 293452262e1Smrg ;; 294452262e1Smrg cray) 295452262e1Smrg basic_machine=j90-cray 296452262e1Smrg basic_os=unicos 297452262e1Smrg ;; 298452262e1Smrg crds | unos) 299452262e1Smrg basic_machine=m68k-crds 300452262e1Smrg basic_os= 301452262e1Smrg ;; 302452262e1Smrg da30) 303452262e1Smrg basic_machine=m68k-da30 304452262e1Smrg basic_os= 305452262e1Smrg ;; 306452262e1Smrg decstation | pmax | pmin | dec3100 | decstatn) 307452262e1Smrg basic_machine=mips-dec 308452262e1Smrg basic_os= 309452262e1Smrg ;; 310452262e1Smrg delta88) 311452262e1Smrg basic_machine=m88k-motorola 312452262e1Smrg basic_os=sysv3 313452262e1Smrg ;; 314452262e1Smrg dicos) 315452262e1Smrg basic_machine=i686-pc 316452262e1Smrg basic_os=dicos 317452262e1Smrg ;; 318452262e1Smrg djgpp) 319452262e1Smrg basic_machine=i586-pc 320452262e1Smrg basic_os=msdosdjgpp 321452262e1Smrg ;; 322452262e1Smrg ebmon29k) 323452262e1Smrg basic_machine=a29k-amd 324452262e1Smrg basic_os=ebmon 325452262e1Smrg ;; 326452262e1Smrg es1800 | OSE68k | ose68k | ose | OSE) 327452262e1Smrg basic_machine=m68k-ericsson 328452262e1Smrg basic_os=ose 329452262e1Smrg ;; 330452262e1Smrg gmicro) 331452262e1Smrg basic_machine=tron-gmicro 332452262e1Smrg basic_os=sysv 333452262e1Smrg ;; 334452262e1Smrg go32) 335452262e1Smrg basic_machine=i386-pc 336452262e1Smrg basic_os=go32 337452262e1Smrg ;; 338452262e1Smrg h8300hms) 339452262e1Smrg basic_machine=h8300-hitachi 340452262e1Smrg basic_os=hms 341452262e1Smrg ;; 342452262e1Smrg h8300xray) 343452262e1Smrg basic_machine=h8300-hitachi 344452262e1Smrg basic_os=xray 345452262e1Smrg ;; 346452262e1Smrg h8500hms) 347452262e1Smrg basic_machine=h8500-hitachi 348452262e1Smrg basic_os=hms 349452262e1Smrg ;; 350452262e1Smrg harris) 351452262e1Smrg basic_machine=m88k-harris 352452262e1Smrg basic_os=sysv3 353452262e1Smrg ;; 354452262e1Smrg hp300 | hp300hpux) 355452262e1Smrg basic_machine=m68k-hp 356452262e1Smrg basic_os=hpux 357452262e1Smrg ;; 358452262e1Smrg hp300bsd) 359452262e1Smrg basic_machine=m68k-hp 360452262e1Smrg basic_os=bsd 361452262e1Smrg ;; 362452262e1Smrg hppaosf) 363452262e1Smrg basic_machine=hppa1.1-hp 364452262e1Smrg basic_os=osf 365452262e1Smrg ;; 366452262e1Smrg hppro) 367452262e1Smrg basic_machine=hppa1.1-hp 368452262e1Smrg basic_os=proelf 369452262e1Smrg ;; 370452262e1Smrg i386mach) 371452262e1Smrg basic_machine=i386-mach 372452262e1Smrg basic_os=mach 373452262e1Smrg ;; 374452262e1Smrg isi68 | isi) 375452262e1Smrg basic_machine=m68k-isi 376452262e1Smrg basic_os=sysv 377452262e1Smrg ;; 378452262e1Smrg m68knommu) 379452262e1Smrg basic_machine=m68k-unknown 380452262e1Smrg basic_os=linux 381452262e1Smrg ;; 382452262e1Smrg magnum | m3230) 383452262e1Smrg basic_machine=mips-mips 384452262e1Smrg basic_os=sysv 385452262e1Smrg ;; 386452262e1Smrg merlin) 387452262e1Smrg basic_machine=ns32k-utek 388452262e1Smrg basic_os=sysv 389452262e1Smrg ;; 390452262e1Smrg mingw64) 391452262e1Smrg basic_machine=x86_64-pc 392452262e1Smrg basic_os=mingw64 393452262e1Smrg ;; 394452262e1Smrg mingw32) 395452262e1Smrg basic_machine=i686-pc 396452262e1Smrg basic_os=mingw32 397452262e1Smrg ;; 398452262e1Smrg mingw32ce) 399452262e1Smrg basic_machine=arm-unknown 400452262e1Smrg basic_os=mingw32ce 401452262e1Smrg ;; 402452262e1Smrg monitor) 403452262e1Smrg basic_machine=m68k-rom68k 404452262e1Smrg basic_os=coff 405452262e1Smrg ;; 406452262e1Smrg morphos) 407452262e1Smrg basic_machine=powerpc-unknown 408452262e1Smrg basic_os=morphos 409452262e1Smrg ;; 410452262e1Smrg moxiebox) 411452262e1Smrg basic_machine=moxie-unknown 412452262e1Smrg basic_os=moxiebox 413452262e1Smrg ;; 414452262e1Smrg msdos) 415452262e1Smrg basic_machine=i386-pc 416452262e1Smrg basic_os=msdos 417452262e1Smrg ;; 418452262e1Smrg msys) 419452262e1Smrg basic_machine=i686-pc 420452262e1Smrg basic_os=msys 421452262e1Smrg ;; 422452262e1Smrg mvs) 423452262e1Smrg basic_machine=i370-ibm 424452262e1Smrg basic_os=mvs 425452262e1Smrg ;; 426452262e1Smrg nacl) 427452262e1Smrg basic_machine=le32-unknown 428452262e1Smrg basic_os=nacl 429452262e1Smrg ;; 430452262e1Smrg ncr3000) 431452262e1Smrg basic_machine=i486-ncr 432452262e1Smrg basic_os=sysv4 433452262e1Smrg ;; 434452262e1Smrg netbsd386) 435452262e1Smrg basic_machine=i386-pc 436452262e1Smrg basic_os=netbsd 437452262e1Smrg ;; 438452262e1Smrg netwinder) 439452262e1Smrg basic_machine=armv4l-rebel 440452262e1Smrg basic_os=linux 441452262e1Smrg ;; 442452262e1Smrg news | news700 | news800 | news900) 443452262e1Smrg basic_machine=m68k-sony 444452262e1Smrg basic_os=newsos 445452262e1Smrg ;; 446452262e1Smrg news1000) 447452262e1Smrg basic_machine=m68030-sony 448452262e1Smrg basic_os=newsos 449452262e1Smrg ;; 450452262e1Smrg necv70) 451452262e1Smrg basic_machine=v70-nec 452452262e1Smrg basic_os=sysv 453452262e1Smrg ;; 454452262e1Smrg nh3000) 455452262e1Smrg basic_machine=m68k-harris 456452262e1Smrg basic_os=cxux 457452262e1Smrg ;; 458452262e1Smrg nh[45]000) 459452262e1Smrg basic_machine=m88k-harris 460452262e1Smrg basic_os=cxux 461452262e1Smrg ;; 462452262e1Smrg nindy960) 463452262e1Smrg basic_machine=i960-intel 464452262e1Smrg basic_os=nindy 465452262e1Smrg ;; 466452262e1Smrg mon960) 467452262e1Smrg basic_machine=i960-intel 468452262e1Smrg basic_os=mon960 469452262e1Smrg ;; 470452262e1Smrg nonstopux) 471452262e1Smrg basic_machine=mips-compaq 472452262e1Smrg basic_os=nonstopux 473452262e1Smrg ;; 474452262e1Smrg os400) 475452262e1Smrg basic_machine=powerpc-ibm 476452262e1Smrg basic_os=os400 477452262e1Smrg ;; 478452262e1Smrg OSE68000 | ose68000) 479452262e1Smrg basic_machine=m68000-ericsson 480452262e1Smrg basic_os=ose 481452262e1Smrg ;; 482452262e1Smrg os68k) 483452262e1Smrg basic_machine=m68k-none 484452262e1Smrg basic_os=os68k 485452262e1Smrg ;; 486452262e1Smrg paragon) 487452262e1Smrg basic_machine=i860-intel 488452262e1Smrg basic_os=osf 489452262e1Smrg ;; 490452262e1Smrg parisc) 491452262e1Smrg basic_machine=hppa-unknown 492452262e1Smrg basic_os=linux 493452262e1Smrg ;; 494452262e1Smrg psp) 495452262e1Smrg basic_machine=mipsallegrexel-sony 496452262e1Smrg basic_os=psp 497452262e1Smrg ;; 498452262e1Smrg pw32) 499452262e1Smrg basic_machine=i586-unknown 500452262e1Smrg basic_os=pw32 501452262e1Smrg ;; 502452262e1Smrg rdos | rdos64) 503452262e1Smrg basic_machine=x86_64-pc 504452262e1Smrg basic_os=rdos 505452262e1Smrg ;; 506452262e1Smrg rdos32) 507452262e1Smrg basic_machine=i386-pc 508452262e1Smrg basic_os=rdos 509452262e1Smrg ;; 510452262e1Smrg rom68k) 511452262e1Smrg basic_machine=m68k-rom68k 512452262e1Smrg basic_os=coff 513452262e1Smrg ;; 514452262e1Smrg sa29200) 515452262e1Smrg basic_machine=a29k-amd 516452262e1Smrg basic_os=udi 517452262e1Smrg ;; 518452262e1Smrg sei) 519452262e1Smrg basic_machine=mips-sei 520452262e1Smrg basic_os=seiux 521452262e1Smrg ;; 522452262e1Smrg sequent) 523452262e1Smrg basic_machine=i386-sequent 524452262e1Smrg basic_os= 525452262e1Smrg ;; 526452262e1Smrg sps7) 527452262e1Smrg basic_machine=m68k-bull 528452262e1Smrg basic_os=sysv2 529452262e1Smrg ;; 530452262e1Smrg st2000) 531452262e1Smrg basic_machine=m68k-tandem 532452262e1Smrg basic_os= 533452262e1Smrg ;; 534452262e1Smrg stratus) 535452262e1Smrg basic_machine=i860-stratus 536452262e1Smrg basic_os=sysv4 537452262e1Smrg ;; 538452262e1Smrg sun2) 539452262e1Smrg basic_machine=m68000-sun 540452262e1Smrg basic_os= 541452262e1Smrg ;; 542452262e1Smrg sun2os3) 543452262e1Smrg basic_machine=m68000-sun 544452262e1Smrg basic_os=sunos3 545452262e1Smrg ;; 546452262e1Smrg sun2os4) 547452262e1Smrg basic_machine=m68000-sun 548452262e1Smrg basic_os=sunos4 549452262e1Smrg ;; 550452262e1Smrg sun3) 551452262e1Smrg basic_machine=m68k-sun 552452262e1Smrg basic_os= 553452262e1Smrg ;; 554452262e1Smrg sun3os3) 555452262e1Smrg basic_machine=m68k-sun 556452262e1Smrg basic_os=sunos3 557452262e1Smrg ;; 558452262e1Smrg sun3os4) 559452262e1Smrg basic_machine=m68k-sun 560452262e1Smrg basic_os=sunos4 561452262e1Smrg ;; 562452262e1Smrg sun4) 563452262e1Smrg basic_machine=sparc-sun 564452262e1Smrg basic_os= 565452262e1Smrg ;; 566452262e1Smrg sun4os3) 567452262e1Smrg basic_machine=sparc-sun 568452262e1Smrg basic_os=sunos3 569452262e1Smrg ;; 570452262e1Smrg sun4os4) 571452262e1Smrg basic_machine=sparc-sun 572452262e1Smrg basic_os=sunos4 573452262e1Smrg ;; 574452262e1Smrg sun4sol2) 575452262e1Smrg basic_machine=sparc-sun 576452262e1Smrg basic_os=solaris2 577452262e1Smrg ;; 578452262e1Smrg sun386 | sun386i | roadrunner) 579452262e1Smrg basic_machine=i386-sun 580452262e1Smrg basic_os= 581452262e1Smrg ;; 582452262e1Smrg sv1) 583452262e1Smrg basic_machine=sv1-cray 584452262e1Smrg basic_os=unicos 585452262e1Smrg ;; 586452262e1Smrg symmetry) 587452262e1Smrg basic_machine=i386-sequent 588452262e1Smrg basic_os=dynix 589452262e1Smrg ;; 590452262e1Smrg t3e) 591452262e1Smrg basic_machine=alphaev5-cray 592452262e1Smrg basic_os=unicos 593452262e1Smrg ;; 594452262e1Smrg t90) 595452262e1Smrg basic_machine=t90-cray 596452262e1Smrg basic_os=unicos 597452262e1Smrg ;; 598452262e1Smrg toad1) 599452262e1Smrg basic_machine=pdp10-xkl 600452262e1Smrg basic_os=tops20 601452262e1Smrg ;; 602452262e1Smrg tpf) 603452262e1Smrg basic_machine=s390x-ibm 604452262e1Smrg basic_os=tpf 605452262e1Smrg ;; 606452262e1Smrg udi29k) 607452262e1Smrg basic_machine=a29k-amd 608452262e1Smrg basic_os=udi 609452262e1Smrg ;; 610452262e1Smrg ultra3) 611452262e1Smrg basic_machine=a29k-nyu 612452262e1Smrg basic_os=sym1 613452262e1Smrg ;; 614452262e1Smrg v810 | necv810) 615452262e1Smrg basic_machine=v810-nec 616452262e1Smrg basic_os=none 617452262e1Smrg ;; 618452262e1Smrg vaxv) 619452262e1Smrg basic_machine=vax-dec 620452262e1Smrg basic_os=sysv 621452262e1Smrg ;; 622452262e1Smrg vms) 623452262e1Smrg basic_machine=vax-dec 624452262e1Smrg basic_os=vms 625452262e1Smrg ;; 626452262e1Smrg vsta) 627452262e1Smrg basic_machine=i386-pc 628452262e1Smrg basic_os=vsta 629452262e1Smrg ;; 630452262e1Smrg vxworks960) 631452262e1Smrg basic_machine=i960-wrs 632452262e1Smrg basic_os=vxworks 633452262e1Smrg ;; 634452262e1Smrg vxworks68) 635452262e1Smrg basic_machine=m68k-wrs 636452262e1Smrg basic_os=vxworks 637452262e1Smrg ;; 638452262e1Smrg vxworks29k) 639452262e1Smrg basic_machine=a29k-wrs 640452262e1Smrg basic_os=vxworks 641452262e1Smrg ;; 642452262e1Smrg xbox) 643452262e1Smrg basic_machine=i686-pc 644452262e1Smrg basic_os=mingw32 645452262e1Smrg ;; 646452262e1Smrg ymp) 647452262e1Smrg basic_machine=ymp-cray 648452262e1Smrg basic_os=unicos 649452262e1Smrg ;; 650452262e1Smrg *) 651452262e1Smrg basic_machine=$1 652452262e1Smrg basic_os= 653452262e1Smrg ;; 654452262e1Smrg esac 65517ca54c3Smrg ;; 65617ca54c3Smrgesac 65717ca54c3Smrg 658452262e1Smrg# Decode 1-component or ad-hoc basic machines 65917ca54c3Smrgcase $basic_machine in 660452262e1Smrg # Here we handle the default manufacturer of certain CPU types. It is in 661452262e1Smrg # some cases the only manufacturer, in others, it is the most popular. 662452262e1Smrg w89k) 663452262e1Smrg cpu=hppa1.1 664452262e1Smrg vendor=winbond 66517ca54c3Smrg ;; 666452262e1Smrg op50n) 667452262e1Smrg cpu=hppa1.1 668452262e1Smrg vendor=oki 66917ca54c3Smrg ;; 670452262e1Smrg op60c) 671452262e1Smrg cpu=hppa1.1 672452262e1Smrg vendor=oki 67317ca54c3Smrg ;; 674452262e1Smrg ibm*) 675452262e1Smrg cpu=i370 676452262e1Smrg vendor=ibm 67717ca54c3Smrg ;; 678452262e1Smrg orion105) 679452262e1Smrg cpu=clipper 680452262e1Smrg vendor=highlevel 681f2ea6e01Smrg ;; 682452262e1Smrg mac | mpw | mac-mpw) 683452262e1Smrg cpu=m68k 684452262e1Smrg vendor=apple 685f2ea6e01Smrg ;; 686452262e1Smrg pmac | pmac-mpw) 687452262e1Smrg cpu=powerpc 688452262e1Smrg vendor=apple 68917ca54c3Smrg ;; 69017ca54c3Smrg 69117ca54c3Smrg # Recognize the various machine names and aliases which stand 69217ca54c3Smrg # for a CPU type and a company and sometimes even an OS. 69317ca54c3Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694452262e1Smrg cpu=m68000 695452262e1Smrg vendor=att 69617ca54c3Smrg ;; 69717ca54c3Smrg 3b*) 698452262e1Smrg cpu=we32k 699452262e1Smrg vendor=att 70017ca54c3Smrg ;; 70117ca54c3Smrg bluegene*) 702452262e1Smrg cpu=powerpc 703452262e1Smrg vendor=ibm 704452262e1Smrg basic_os=cnk 70517ca54c3Smrg ;; 70617ca54c3Smrg decsystem10* | dec10*) 707452262e1Smrg cpu=pdp10 708452262e1Smrg vendor=dec 709452262e1Smrg basic_os=tops10 71017ca54c3Smrg ;; 71117ca54c3Smrg decsystem20* | dec20*) 712452262e1Smrg cpu=pdp10 713452262e1Smrg vendor=dec 714452262e1Smrg basic_os=tops20 71517ca54c3Smrg ;; 71617ca54c3Smrg delta | 3300 | motorola-3300 | motorola-delta \ 71717ca54c3Smrg | 3300-motorola | delta-motorola) 718452262e1Smrg cpu=m68k 719452262e1Smrg vendor=motorola 720f2ea6e01Smrg ;; 721452262e1Smrg dpx2*) 722452262e1Smrg cpu=m68k 723452262e1Smrg vendor=bull 724452262e1Smrg basic_os=sysv3 725f2ea6e01Smrg ;; 726f2ea6e01Smrg encore | umax | mmax) 727452262e1Smrg cpu=ns32k 728452262e1Smrg vendor=encore 729f2ea6e01Smrg ;; 730452262e1Smrg elxsi) 731452262e1Smrg cpu=elxsi 732452262e1Smrg vendor=elxsi 733452262e1Smrg basic_os=${basic_os:-bsd} 73417ca54c3Smrg ;; 73517ca54c3Smrg fx2800) 736452262e1Smrg cpu=i860 737452262e1Smrg vendor=alliant 73817ca54c3Smrg ;; 73917ca54c3Smrg genix) 740452262e1Smrg cpu=ns32k 741452262e1Smrg vendor=ns 74217ca54c3Smrg ;; 74317ca54c3Smrg h3050r* | hiux*) 744452262e1Smrg cpu=hppa1.1 745452262e1Smrg vendor=hitachi 746452262e1Smrg basic_os=hiuxwe2 74717ca54c3Smrg ;; 74817ca54c3Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749452262e1Smrg cpu=hppa1.0 750452262e1Smrg vendor=hp 75117ca54c3Smrg ;; 75217ca54c3Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753452262e1Smrg cpu=m68000 754452262e1Smrg vendor=hp 75517ca54c3Smrg ;; 75617ca54c3Smrg hp9k3[2-9][0-9]) 757452262e1Smrg cpu=m68k 758452262e1Smrg vendor=hp 75917ca54c3Smrg ;; 76017ca54c3Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761452262e1Smrg cpu=hppa1.0 762452262e1Smrg vendor=hp 76317ca54c3Smrg ;; 76417ca54c3Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765452262e1Smrg cpu=hppa1.1 766452262e1Smrg vendor=hp 76717ca54c3Smrg ;; 76817ca54c3Smrg hp9k78[0-9] | hp78[0-9]) 76917ca54c3Smrg # FIXME: really hppa2.0-hp 770452262e1Smrg cpu=hppa1.1 771452262e1Smrg vendor=hp 77217ca54c3Smrg ;; 77317ca54c3Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77417ca54c3Smrg # FIXME: really hppa2.0-hp 775452262e1Smrg cpu=hppa1.1 776452262e1Smrg vendor=hp 77717ca54c3Smrg ;; 77817ca54c3Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779452262e1Smrg cpu=hppa1.1 780452262e1Smrg vendor=hp 78117ca54c3Smrg ;; 78217ca54c3Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783452262e1Smrg cpu=hppa1.0 784452262e1Smrg vendor=hp 78517ca54c3Smrg ;; 78617ca54c3Smrg i*86v32) 787452262e1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788452262e1Smrg vendor=pc 789452262e1Smrg basic_os=sysv32 79017ca54c3Smrg ;; 79117ca54c3Smrg i*86v4*) 792452262e1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793452262e1Smrg vendor=pc 794452262e1Smrg basic_os=sysv4 79517ca54c3Smrg ;; 79617ca54c3Smrg i*86v) 797452262e1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798452262e1Smrg vendor=pc 799452262e1Smrg basic_os=sysv 80017ca54c3Smrg ;; 80117ca54c3Smrg i*86sol2) 802452262e1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803452262e1Smrg vendor=pc 804452262e1Smrg basic_os=solaris2 80517ca54c3Smrg ;; 806452262e1Smrg j90 | j90-cray) 807452262e1Smrg cpu=j90 808452262e1Smrg vendor=cray 809452262e1Smrg basic_os=${basic_os:-unicos} 81017ca54c3Smrg ;; 81117ca54c3Smrg iris | iris4d) 812452262e1Smrg cpu=mips 813452262e1Smrg vendor=sgi 814452262e1Smrg case $basic_os in 815452262e1Smrg irix*) 81617ca54c3Smrg ;; 81717ca54c3Smrg *) 818452262e1Smrg basic_os=irix4 81917ca54c3Smrg ;; 82017ca54c3Smrg esac 82117ca54c3Smrg ;; 82217ca54c3Smrg miniframe) 823452262e1Smrg cpu=m68000 824452262e1Smrg vendor=convergent 82517ca54c3Smrg ;; 826452262e1Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827452262e1Smrg cpu=m68k 828452262e1Smrg vendor=atari 829452262e1Smrg basic_os=mint 83017ca54c3Smrg ;; 83117ca54c3Smrg news-3600 | risc-news) 832452262e1Smrg cpu=mips 833452262e1Smrg vendor=sony 834452262e1Smrg basic_os=newsos 835452262e1Smrg ;; 836452262e1Smrg next | m*-next) 837452262e1Smrg cpu=m68k 838452262e1Smrg vendor=next 839452262e1Smrg case $basic_os in 840452262e1Smrg openstep*) 841452262e1Smrg ;; 842452262e1Smrg nextstep*) 84317ca54c3Smrg ;; 844452262e1Smrg ns2*) 845452262e1Smrg basic_os=nextstep2 84617ca54c3Smrg ;; 84717ca54c3Smrg *) 848452262e1Smrg basic_os=nextstep3 84917ca54c3Smrg ;; 85017ca54c3Smrg esac 85117ca54c3Smrg ;; 85217ca54c3Smrg np1) 853452262e1Smrg cpu=np1 854452262e1Smrg vendor=gould 855f2ea6e01Smrg ;; 85617ca54c3Smrg op50n-* | op60c-*) 857452262e1Smrg cpu=hppa1.1 858452262e1Smrg vendor=oki 859452262e1Smrg basic_os=proelf 86017ca54c3Smrg ;; 86117ca54c3Smrg pa-hitachi) 862452262e1Smrg cpu=hppa1.1 863452262e1Smrg vendor=hitachi 864452262e1Smrg basic_os=hiuxwe2 86517ca54c3Smrg ;; 86617ca54c3Smrg pbd) 867452262e1Smrg cpu=sparc 868452262e1Smrg vendor=tti 86917ca54c3Smrg ;; 87017ca54c3Smrg pbb) 871452262e1Smrg cpu=m68k 872452262e1Smrg vendor=tti 873f2ea6e01Smrg ;; 874452262e1Smrg pc532) 875452262e1Smrg cpu=ns32k 876452262e1Smrg vendor=pc532 87717ca54c3Smrg ;; 87817ca54c3Smrg pn) 879452262e1Smrg cpu=pn 880452262e1Smrg vendor=gould 88117ca54c3Smrg ;; 882452262e1Smrg power) 883452262e1Smrg cpu=power 884452262e1Smrg vendor=ibm 88517ca54c3Smrg ;; 886f2ea6e01Smrg ps2) 887452262e1Smrg cpu=i386 888452262e1Smrg vendor=ibm 88917ca54c3Smrg ;; 890f2ea6e01Smrg rm[46]00) 891452262e1Smrg cpu=mips 892452262e1Smrg vendor=siemens 89317ca54c3Smrg ;; 894f2ea6e01Smrg rtpc | rtpc-*) 895452262e1Smrg cpu=romp 896452262e1Smrg vendor=ibm 89717ca54c3Smrg ;; 898452262e1Smrg sde) 899452262e1Smrg cpu=mipsisa32 900452262e1Smrg vendor=sde 901452262e1Smrg basic_os=${basic_os:-elf} 90217ca54c3Smrg ;; 903452262e1Smrg simso-wrs) 904452262e1Smrg cpu=sparclite 905452262e1Smrg vendor=wrs 906452262e1Smrg basic_os=vxworks 90717ca54c3Smrg ;; 908452262e1Smrg tower | tower-32) 909452262e1Smrg cpu=m68k 910452262e1Smrg vendor=ncr 91117ca54c3Smrg ;; 912452262e1Smrg vpp*|vx|vx-*) 913452262e1Smrg cpu=f301 914452262e1Smrg vendor=fujitsu 91517ca54c3Smrg ;; 916452262e1Smrg w65) 917452262e1Smrg cpu=w65 918452262e1Smrg vendor=wdc 91917ca54c3Smrg ;; 920452262e1Smrg w89k-*) 921452262e1Smrg cpu=hppa1.1 922452262e1Smrg vendor=winbond 923452262e1Smrg basic_os=proelf 92417ca54c3Smrg ;; 925452262e1Smrg none) 926452262e1Smrg cpu=none 927452262e1Smrg vendor=none 928ffe57424Smrg ;; 929452262e1Smrg leon|leon[3-9]) 930452262e1Smrg cpu=sparc 931452262e1Smrg vendor=$basic_machine 93217ca54c3Smrg ;; 933452262e1Smrg leon-*|leon[3-9]-*) 934452262e1Smrg cpu=sparc 935452262e1Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936ffe57424Smrg ;; 937452262e1Smrg 938452262e1Smrg *-*) 939452262e1Smrg # shellcheck disable=SC2162 940452262e1Smrg saved_IFS=$IFS 941452262e1Smrg IFS="-" read cpu vendor <<EOF 942452262e1Smrg$basic_machine 943452262e1SmrgEOF 944452262e1Smrg IFS=$saved_IFS 94517ca54c3Smrg ;; 946635a5eb8Smrg # We use 'pc' rather than 'unknown' 947452262e1Smrg # because (1) that's what they normally are, and 948452262e1Smrg # (2) the word "unknown" tends to confuse beginning users. 949452262e1Smrg i*86 | x86_64) 950452262e1Smrg cpu=$basic_machine 951452262e1Smrg vendor=pc 95217ca54c3Smrg ;; 953452262e1Smrg # These rules are duplicated from below for sake of the special case above; 954452262e1Smrg # i.e. things that normalized to x86 arches should also default to "pc" 955452262e1Smrg pc98) 956452262e1Smrg cpu=i386 957452262e1Smrg vendor=pc 95817ca54c3Smrg ;; 959452262e1Smrg x64 | amd64) 960452262e1Smrg cpu=x86_64 961452262e1Smrg vendor=pc 96217ca54c3Smrg ;; 963452262e1Smrg # Recognize the basic CPU types without company name. 964452262e1Smrg *) 965452262e1Smrg cpu=$basic_machine 966452262e1Smrg vendor=unknown 96717ca54c3Smrg ;; 968452262e1Smrgesac 969452262e1Smrg 970452262e1Smrgunset -v basic_machine 971452262e1Smrg 972452262e1Smrg# Decode basic machines in the full and proper CPU-Company form. 973452262e1Smrgcase $cpu-$vendor in 974452262e1Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975452262e1Smrg # some cases the only manufacturer, in others, it is the most popular. 976452262e1Smrg craynv-unknown) 977452262e1Smrg vendor=cray 978452262e1Smrg basic_os=${basic_os:-unicosmp} 97917ca54c3Smrg ;; 980452262e1Smrg c90-unknown | c90-cray) 981452262e1Smrg vendor=cray 982452262e1Smrg basic_os=${Basic_os:-unicos} 98317ca54c3Smrg ;; 984452262e1Smrg fx80-unknown) 985452262e1Smrg vendor=alliant 98617ca54c3Smrg ;; 987452262e1Smrg romp-unknown) 988452262e1Smrg vendor=ibm 98917ca54c3Smrg ;; 990452262e1Smrg mmix-unknown) 991452262e1Smrg vendor=knuth 99217ca54c3Smrg ;; 993452262e1Smrg microblaze-unknown | microblazeel-unknown) 994452262e1Smrg vendor=xilinx 99517ca54c3Smrg ;; 996452262e1Smrg rs6000-unknown) 997452262e1Smrg vendor=ibm 99817ca54c3Smrg ;; 999452262e1Smrg vax-unknown) 1000452262e1Smrg vendor=dec 100117ca54c3Smrg ;; 1002452262e1Smrg pdp11-unknown) 1003452262e1Smrg vendor=dec 100417ca54c3Smrg ;; 1005452262e1Smrg we32k-unknown) 1006452262e1Smrg vendor=att 100717ca54c3Smrg ;; 1008452262e1Smrg cydra-unknown) 1009452262e1Smrg vendor=cydrome 101017ca54c3Smrg ;; 1011452262e1Smrg i370-ibm*) 1012452262e1Smrg vendor=ibm 101317ca54c3Smrg ;; 1014452262e1Smrg orion-unknown) 1015452262e1Smrg vendor=highlevel 101617ca54c3Smrg ;; 1017452262e1Smrg xps-unknown | xps100-unknown) 1018452262e1Smrg cpu=xps100 1019452262e1Smrg vendor=honeywell 102017ca54c3Smrg ;; 1021452262e1Smrg 1022452262e1Smrg # Here we normalize CPU types with a missing or matching vendor 1023452262e1Smrg armh-unknown | armh-alt) 1024452262e1Smrg cpu=armv7l 1025452262e1Smrg vendor=alt 1026452262e1Smrg basic_os=${basic_os:-linux-gnueabihf} 102717ca54c3Smrg ;; 1028452262e1Smrg dpx20-unknown | dpx20-bull) 1029452262e1Smrg cpu=rs6000 1030452262e1Smrg vendor=bull 1031452262e1Smrg basic_os=${basic_os:-bosx} 103217ca54c3Smrg ;; 1033452262e1Smrg 1034452262e1Smrg # Here we normalize CPU types irrespective of the vendor 1035452262e1Smrg amd64-*) 1036452262e1Smrg cpu=x86_64 103717ca54c3Smrg ;; 1038452262e1Smrg blackfin-*) 1039452262e1Smrg cpu=bfin 1040452262e1Smrg basic_os=linux 104117ca54c3Smrg ;; 1042452262e1Smrg c54x-*) 1043452262e1Smrg cpu=tic54x 104417ca54c3Smrg ;; 1045452262e1Smrg c55x-*) 1046452262e1Smrg cpu=tic55x 104717ca54c3Smrg ;; 1048452262e1Smrg c6x-*) 1049452262e1Smrg cpu=tic6x 105017ca54c3Smrg ;; 1051452262e1Smrg e500v[12]-*) 1052452262e1Smrg cpu=powerpc 1053452262e1Smrg basic_os=${basic_os}"spe" 105417ca54c3Smrg ;; 1055452262e1Smrg mips3*-*) 1056452262e1Smrg cpu=mips64 105717ca54c3Smrg ;; 1058452262e1Smrg ms1-*) 1059452262e1Smrg cpu=mt 106017ca54c3Smrg ;; 1061452262e1Smrg m68knommu-*) 1062452262e1Smrg cpu=m68k 1063452262e1Smrg basic_os=linux 106417ca54c3Smrg ;; 1065452262e1Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1066452262e1Smrg cpu=s12z 106717ca54c3Smrg ;; 1068452262e1Smrg openrisc-*) 1069452262e1Smrg cpu=or32 107017ca54c3Smrg ;; 1071452262e1Smrg parisc-*) 1072452262e1Smrg cpu=hppa 1073452262e1Smrg basic_os=linux 107417ca54c3Smrg ;; 1075452262e1Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1076452262e1Smrg cpu=i586 107717ca54c3Smrg ;; 1078635a5eb8Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1079452262e1Smrg cpu=i686 1080f2ea6e01Smrg ;; 1081452262e1Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1082452262e1Smrg cpu=i686 108317ca54c3Smrg ;; 1084452262e1Smrg pentium4-*) 1085452262e1Smrg cpu=i786 108617ca54c3Smrg ;; 1087452262e1Smrg pc98-*) 1088452262e1Smrg cpu=i386 108917ca54c3Smrg ;; 1090452262e1Smrg ppc-* | ppcbe-*) 1091452262e1Smrg cpu=powerpc 1092f2ea6e01Smrg ;; 1093452262e1Smrg ppcle-* | powerpclittle-*) 1094452262e1Smrg cpu=powerpcle 109517ca54c3Smrg ;; 1096452262e1Smrg ppc64-*) 1097452262e1Smrg cpu=powerpc64 1098f2ea6e01Smrg ;; 1099452262e1Smrg ppc64le-* | powerpc64little-*) 1100452262e1Smrg cpu=powerpc64le 1101f2ea6e01Smrg ;; 1102452262e1Smrg sb1-*) 1103452262e1Smrg cpu=mipsisa64sb1 1104ffe57424Smrg ;; 1105452262e1Smrg sb1el-*) 1106452262e1Smrg cpu=mipsisa64sb1el 1107ffe57424Smrg ;; 1108452262e1Smrg sh5e[lb]-*) 1109452262e1Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 111017ca54c3Smrg ;; 1111452262e1Smrg spur-*) 1112452262e1Smrg cpu=spur 111317ca54c3Smrg ;; 1114452262e1Smrg strongarm-* | thumb-*) 1115452262e1Smrg cpu=arm 111617ca54c3Smrg ;; 1117452262e1Smrg tx39-*) 1118452262e1Smrg cpu=mipstx39 111917ca54c3Smrg ;; 1120452262e1Smrg tx39el-*) 1121452262e1Smrg cpu=mipstx39el 112217ca54c3Smrg ;; 1123452262e1Smrg x64-*) 1124452262e1Smrg cpu=x86_64 112517ca54c3Smrg ;; 1126452262e1Smrg xscale-* | xscalee[bl]-*) 1127452262e1Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112817ca54c3Smrg ;; 1129452262e1Smrg arm64-* | aarch64le-*) 1130452262e1Smrg cpu=aarch64 113117ca54c3Smrg ;; 1132452262e1Smrg 1133452262e1Smrg # Recognize the canonical CPU Types that limit and/or modify the 1134452262e1Smrg # company names they are paired with. 1135452262e1Smrg cr16-*) 1136452262e1Smrg basic_os=${basic_os:-elf} 1137ffe57424Smrg ;; 1138452262e1Smrg crisv32-* | etraxfs*-*) 1139452262e1Smrg cpu=crisv32 1140452262e1Smrg vendor=axis 114117ca54c3Smrg ;; 1142452262e1Smrg cris-* | etrax*-*) 1143452262e1Smrg cpu=cris 1144452262e1Smrg vendor=axis 114517ca54c3Smrg ;; 1146452262e1Smrg crx-*) 1147452262e1Smrg basic_os=${basic_os:-elf} 1148ea1d6981Smrg ;; 1149452262e1Smrg neo-tandem) 1150452262e1Smrg cpu=neo 1151452262e1Smrg vendor=tandem 1152ffe57424Smrg ;; 1153452262e1Smrg nse-tandem) 1154452262e1Smrg cpu=nse 1155452262e1Smrg vendor=tandem 115617ca54c3Smrg ;; 1157452262e1Smrg nsr-tandem) 1158452262e1Smrg cpu=nsr 1159452262e1Smrg vendor=tandem 1160f2ea6e01Smrg ;; 1161452262e1Smrg nsv-tandem) 1162452262e1Smrg cpu=nsv 1163452262e1Smrg vendor=tandem 1164f2ea6e01Smrg ;; 1165452262e1Smrg nsx-tandem) 1166452262e1Smrg cpu=nsx 1167452262e1Smrg vendor=tandem 1168f2ea6e01Smrg ;; 1169452262e1Smrg mipsallegrexel-sony) 1170452262e1Smrg cpu=mipsallegrexel 1171452262e1Smrg vendor=sony 1172f2ea6e01Smrg ;; 1173452262e1Smrg tile*-*) 1174452262e1Smrg basic_os=${basic_os:-linux-gnu} 117517ca54c3Smrg ;; 1176452262e1Smrg 117717ca54c3Smrg *) 1178452262e1Smrg # Recognize the canonical CPU types that are allowed with any 1179452262e1Smrg # company name. 1180452262e1Smrg case $cpu in 1181452262e1Smrg 1750a | 580 \ 1182452262e1Smrg | a29k \ 1183452262e1Smrg | aarch64 | aarch64_be \ 1184452262e1Smrg | abacus \ 1185452262e1Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1186452262e1Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1187452262e1Smrg | alphapca5[67] | alpha64pca5[67] \ 1188452262e1Smrg | am33_2.0 \ 1189452262e1Smrg | amdgcn \ 1190452262e1Smrg | arc | arceb | arc32 | arc64 \ 1191452262e1Smrg | arm | arm[lb]e | arme[lb] | armv* \ 1192452262e1Smrg | avr | avr32 \ 1193452262e1Smrg | asmjs \ 1194452262e1Smrg | ba \ 1195452262e1Smrg | be32 | be64 \ 1196452262e1Smrg | bfin | bpf | bs2000 \ 1197452262e1Smrg | c[123]* | c30 | [cjt]90 | c4x \ 1198452262e1Smrg | c8051 | clipper | craynv | csky | cydra \ 1199452262e1Smrg | d10v | d30v | dlx | dsp16xx \ 1200452262e1Smrg | e2k | elxsi | epiphany \ 1201452262e1Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1202452262e1Smrg | h8300 | h8500 \ 1203452262e1Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1204452262e1Smrg | hexagon \ 1205452262e1Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1206452262e1Smrg | ip2k | iq2000 \ 1207452262e1Smrg | k1om \ 1208452262e1Smrg | le32 | le64 \ 1209452262e1Smrg | lm32 \ 1210635a5eb8Smrg | loongarch32 | loongarch64 \ 1211452262e1Smrg | m32c | m32r | m32rle \ 1212452262e1Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1213452262e1Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1214452262e1Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1215452262e1Smrg | microblaze | microblazeel \ 1216452262e1Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1217452262e1Smrg | mips16 \ 1218452262e1Smrg | mips64 | mips64eb | mips64el \ 1219452262e1Smrg | mips64octeon | mips64octeonel \ 1220452262e1Smrg | mips64orion | mips64orionel \ 1221452262e1Smrg | mips64r5900 | mips64r5900el \ 1222452262e1Smrg | mips64vr | mips64vrel \ 1223452262e1Smrg | mips64vr4100 | mips64vr4100el \ 1224452262e1Smrg | mips64vr4300 | mips64vr4300el \ 1225452262e1Smrg | mips64vr5000 | mips64vr5000el \ 1226452262e1Smrg | mips64vr5900 | mips64vr5900el \ 1227452262e1Smrg | mipsisa32 | mipsisa32el \ 1228452262e1Smrg | mipsisa32r2 | mipsisa32r2el \ 1229452262e1Smrg | mipsisa32r3 | mipsisa32r3el \ 1230452262e1Smrg | mipsisa32r5 | mipsisa32r5el \ 1231452262e1Smrg | mipsisa32r6 | mipsisa32r6el \ 1232452262e1Smrg | mipsisa64 | mipsisa64el \ 1233452262e1Smrg | mipsisa64r2 | mipsisa64r2el \ 1234452262e1Smrg | mipsisa64r3 | mipsisa64r3el \ 1235452262e1Smrg | mipsisa64r5 | mipsisa64r5el \ 1236452262e1Smrg | mipsisa64r6 | mipsisa64r6el \ 1237452262e1Smrg | mipsisa64sb1 | mipsisa64sb1el \ 1238452262e1Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 1239452262e1Smrg | mipsr5900 | mipsr5900el \ 1240452262e1Smrg | mipstx39 | mipstx39el \ 1241452262e1Smrg | mmix \ 1242452262e1Smrg | mn10200 | mn10300 \ 1243452262e1Smrg | moxie \ 1244452262e1Smrg | mt \ 1245452262e1Smrg | msp430 \ 1246452262e1Smrg | nds32 | nds32le | nds32be \ 1247452262e1Smrg | nfp \ 1248452262e1Smrg | nios | nios2 | nios2eb | nios2el \ 1249452262e1Smrg | none | np1 | ns16k | ns32k | nvptx \ 1250452262e1Smrg | open8 \ 1251452262e1Smrg | or1k* \ 1252452262e1Smrg | or32 \ 1253452262e1Smrg | orion \ 1254452262e1Smrg | picochip \ 1255452262e1Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1256452262e1Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1257452262e1Smrg | pru \ 1258452262e1Smrg | pyramid \ 1259452262e1Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1260452262e1Smrg | rl78 | romp | rs6000 | rx \ 1261452262e1Smrg | s390 | s390x \ 1262452262e1Smrg | score \ 1263452262e1Smrg | sh | shl \ 1264452262e1Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1265452262e1Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1266452262e1Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1267452262e1Smrg | sparclite \ 1268452262e1Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1269452262e1Smrg | spu \ 1270452262e1Smrg | tahoe \ 1271452262e1Smrg | thumbv7* \ 1272452262e1Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1273452262e1Smrg | tron \ 1274452262e1Smrg | ubicom32 \ 1275452262e1Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1276452262e1Smrg | vax \ 1277452262e1Smrg | visium \ 1278452262e1Smrg | w65 \ 1279452262e1Smrg | wasm32 | wasm64 \ 1280452262e1Smrg | we32k \ 1281452262e1Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1282452262e1Smrg | xstormy16 | xtensa* \ 1283452262e1Smrg | ymp \ 1284452262e1Smrg | z8k | z80) 1285452262e1Smrg ;; 1286452262e1Smrg 1287452262e1Smrg *) 1288635a5eb8Smrg echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 1289452262e1Smrg exit 1 1290452262e1Smrg ;; 1291452262e1Smrg esac 129217ca54c3Smrg ;; 129317ca54c3Smrgesac 129417ca54c3Smrg 129517ca54c3Smrg# Here we canonicalize certain aliases for manufacturers. 1296452262e1Smrgcase $vendor in 1297452262e1Smrg digital*) 1298452262e1Smrg vendor=dec 129917ca54c3Smrg ;; 1300452262e1Smrg commodore*) 1301452262e1Smrg vendor=cbm 130217ca54c3Smrg ;; 130317ca54c3Smrg *) 130417ca54c3Smrg ;; 130517ca54c3Smrgesac 130617ca54c3Smrg 130717ca54c3Smrg# Decode manufacturer-specific aliases for certain operating systems. 130817ca54c3Smrg 1309452262e1Smrgif test x$basic_os != x 131017ca54c3Smrgthen 1311452262e1Smrg 1312452262e1Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1313452262e1Smrg# set os. 1314452262e1Smrgcase $basic_os in 1315452262e1Smrg gnu/linux*) 1316452262e1Smrg kernel=linux 1317452262e1Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1318452262e1Smrg ;; 1319452262e1Smrg os2-emx) 1320452262e1Smrg kernel=os2 1321452262e1Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1322452262e1Smrg ;; 1323452262e1Smrg nto-qnx*) 1324452262e1Smrg kernel=nto 1325452262e1Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1326452262e1Smrg ;; 1327452262e1Smrg *-*) 1328452262e1Smrg # shellcheck disable=SC2162 1329452262e1Smrg saved_IFS=$IFS 1330452262e1Smrg IFS="-" read kernel os <<EOF 1331452262e1Smrg$basic_os 1332452262e1SmrgEOF 1333452262e1Smrg IFS=$saved_IFS 1334452262e1Smrg ;; 1335452262e1Smrg # Default OS when just kernel was specified 1336452262e1Smrg nto*) 1337452262e1Smrg kernel=nto 1338452262e1Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1339452262e1Smrg ;; 1340452262e1Smrg linux*) 1341452262e1Smrg kernel=linux 1342452262e1Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 134317ca54c3Smrg ;; 1344635a5eb8Smrg managarm*) 1345635a5eb8Smrg kernel=managarm 1346635a5eb8Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1347635a5eb8Smrg ;; 1348452262e1Smrg *) 1349452262e1Smrg kernel= 1350452262e1Smrg os=$basic_os 1351452262e1Smrg ;; 1352452262e1Smrgesac 1353452262e1Smrg 1354452262e1Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1355452262e1Smrg# etc.) 1356452262e1Smrgcase $os in 1357452262e1Smrg # First match some system type aliases that might get confused 1358452262e1Smrg # with valid system types. 1359452262e1Smrg # solaris* is a basic system type, with this one exception. 1360452262e1Smrg auroraux) 1361452262e1Smrg os=auroraux 136217ca54c3Smrg ;; 1363452262e1Smrg bluegene*) 1364452262e1Smrg os=cnk 136517ca54c3Smrg ;; 1366452262e1Smrg solaris1 | solaris1.*) 1367452262e1Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1368ffe57424Smrg ;; 1369452262e1Smrg solaris) 1370452262e1Smrg os=solaris2 137117ca54c3Smrg ;; 1372452262e1Smrg unixware*) 1373452262e1Smrg os=sysv4.2uw 137417ca54c3Smrg ;; 1375452262e1Smrg # es1800 is here to avoid being matched by es* (a different OS) 1376452262e1Smrg es1800*) 1377452262e1Smrg os=ose 137817ca54c3Smrg ;; 1379452262e1Smrg # Some version numbers need modification 1380452262e1Smrg chorusos*) 1381452262e1Smrg os=chorusos 138217ca54c3Smrg ;; 1383452262e1Smrg isc) 1384452262e1Smrg os=isc2.2 138517ca54c3Smrg ;; 1386452262e1Smrg sco6) 1387452262e1Smrg os=sco5v6 138817ca54c3Smrg ;; 1389452262e1Smrg sco5) 1390452262e1Smrg os=sco3.2v5 139117ca54c3Smrg ;; 1392452262e1Smrg sco4) 1393452262e1Smrg os=sco3.2v4 139417ca54c3Smrg ;; 1395452262e1Smrg sco3.2.[4-9]*) 1396452262e1Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 139717ca54c3Smrg ;; 1398452262e1Smrg sco*v* | scout) 1399452262e1Smrg # Don't match below 140017ca54c3Smrg ;; 1401452262e1Smrg sco*) 1402452262e1Smrg os=sco3.2v2 140317ca54c3Smrg ;; 1404452262e1Smrg psos*) 1405452262e1Smrg os=psos 140617ca54c3Smrg ;; 1407452262e1Smrg qnx*) 1408452262e1Smrg os=qnx 140917ca54c3Smrg ;; 1410452262e1Smrg hiux*) 1411452262e1Smrg os=hiuxwe2 141217ca54c3Smrg ;; 1413452262e1Smrg lynx*178) 1414452262e1Smrg os=lynxos178 1415ffe57424Smrg ;; 1416452262e1Smrg lynx*5) 1417452262e1Smrg os=lynxos5 1418ffe57424Smrg ;; 1419452262e1Smrg lynxos*) 1420452262e1Smrg # don't get caught up in next wildcard 142117ca54c3Smrg ;; 1422452262e1Smrg lynx*) 1423452262e1Smrg os=lynxos 142417ca54c3Smrg ;; 1425452262e1Smrg mac[0-9]*) 1426452262e1Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1427ea1d6981Smrg ;; 1428452262e1Smrg opened*) 1429452262e1Smrg os=openedition 143017ca54c3Smrg ;; 1431452262e1Smrg os400*) 1432452262e1Smrg os=os400 143317ca54c3Smrg ;; 1434452262e1Smrg sunos5*) 1435452262e1Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 143617ca54c3Smrg ;; 1437452262e1Smrg sunos6*) 1438452262e1Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1439ea1d6981Smrg ;; 1440452262e1Smrg wince*) 1441452262e1Smrg os=wince 1442f2ea6e01Smrg ;; 1443452262e1Smrg utek*) 1444452262e1Smrg os=bsd 1445f2ea6e01Smrg ;; 1446452262e1Smrg dynix*) 1447452262e1Smrg os=bsd 144817ca54c3Smrg ;; 1449452262e1Smrg acis*) 1450452262e1Smrg os=aos 145117ca54c3Smrg ;; 1452452262e1Smrg atheos*) 1453452262e1Smrg os=atheos 145417ca54c3Smrg ;; 1455452262e1Smrg syllable*) 1456452262e1Smrg os=syllable 145717ca54c3Smrg ;; 1458452262e1Smrg 386bsd) 1459452262e1Smrg os=bsd 146017ca54c3Smrg ;; 1461452262e1Smrg ctix* | uts*) 1462452262e1Smrg os=sysv 146317ca54c3Smrg ;; 1464452262e1Smrg nova*) 1465452262e1Smrg os=rtmk-nova 146617ca54c3Smrg ;; 1467452262e1Smrg ns2) 1468452262e1Smrg os=nextstep2 146917ca54c3Smrg ;; 1470452262e1Smrg # Preserve the version number of sinix5. 1471452262e1Smrg sinix5.*) 1472452262e1Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 147317ca54c3Smrg ;; 1474452262e1Smrg sinix*) 1475452262e1Smrg os=sysv4 147617ca54c3Smrg ;; 1477452262e1Smrg tpf*) 1478452262e1Smrg os=tpf 147917ca54c3Smrg ;; 1480452262e1Smrg triton*) 1481452262e1Smrg os=sysv3 1482ffe57424Smrg ;; 1483452262e1Smrg oss*) 1484452262e1Smrg os=sysv3 1485ffe57424Smrg ;; 1486452262e1Smrg svr4*) 1487452262e1Smrg os=sysv4 148817ca54c3Smrg ;; 1489452262e1Smrg svr3) 1490452262e1Smrg os=sysv3 1491ffe57424Smrg ;; 1492452262e1Smrg sysvr4) 1493452262e1Smrg os=sysv4 149417ca54c3Smrg ;; 1495452262e1Smrg ose*) 1496452262e1Smrg os=ose 149717ca54c3Smrg ;; 1498452262e1Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1499452262e1Smrg os=mint 150017ca54c3Smrg ;; 1501452262e1Smrg dicos*) 1502452262e1Smrg os=dicos 150317ca54c3Smrg ;; 1504452262e1Smrg pikeos*) 1505452262e1Smrg # Until real need of OS specific support for 1506452262e1Smrg # particular features comes up, bare metal 1507452262e1Smrg # configurations are quite functional. 1508452262e1Smrg case $cpu in 1509452262e1Smrg arm*) 1510452262e1Smrg os=eabi 1511452262e1Smrg ;; 1512452262e1Smrg *) 1513452262e1Smrg os=elf 1514452262e1Smrg ;; 1515452262e1Smrg esac 151617ca54c3Smrg ;; 151717ca54c3Smrg *) 1518452262e1Smrg # No normalization, but not necessarily accepted, that comes below. 151917ca54c3Smrg ;; 152017ca54c3Smrgesac 1521452262e1Smrg 152217ca54c3Smrgelse 152317ca54c3Smrg 152417ca54c3Smrg# Here we handle the default operating systems that come with various machines. 152517ca54c3Smrg# The value should be what the vendor currently ships out the door with their 152617ca54c3Smrg# machine or put another way, the most popular os provided with the machine. 152717ca54c3Smrg 152817ca54c3Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 152917ca54c3Smrg# "-sun"), then you have to tell the case statement up towards the top 153017ca54c3Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 153117ca54c3Smrg# will signal an error saying that MANUFACTURER isn't an operating 153217ca54c3Smrg# system, and we'll never get to this point. 153317ca54c3Smrg 1534452262e1Smrgkernel= 1535452262e1Smrgcase $cpu-$vendor in 153617ca54c3Smrg score-*) 1537452262e1Smrg os=elf 153817ca54c3Smrg ;; 153917ca54c3Smrg spu-*) 1540452262e1Smrg os=elf 154117ca54c3Smrg ;; 154217ca54c3Smrg *-acorn) 1543452262e1Smrg os=riscix1.2 154417ca54c3Smrg ;; 154517ca54c3Smrg arm*-rebel) 1546452262e1Smrg kernel=linux 1547452262e1Smrg os=gnu 154817ca54c3Smrg ;; 154917ca54c3Smrg arm*-semi) 1550452262e1Smrg os=aout 155117ca54c3Smrg ;; 155217ca54c3Smrg c4x-* | tic4x-*) 1553452262e1Smrg os=coff 155417ca54c3Smrg ;; 155517ca54c3Smrg c8051-*) 1556452262e1Smrg os=elf 1557452262e1Smrg ;; 1558452262e1Smrg clipper-intergraph) 1559452262e1Smrg os=clix 156017ca54c3Smrg ;; 156117ca54c3Smrg hexagon-*) 1562452262e1Smrg os=elf 156317ca54c3Smrg ;; 156417ca54c3Smrg tic54x-*) 1565452262e1Smrg os=coff 156617ca54c3Smrg ;; 156717ca54c3Smrg tic55x-*) 1568452262e1Smrg os=coff 156917ca54c3Smrg ;; 157017ca54c3Smrg tic6x-*) 1571452262e1Smrg os=coff 157217ca54c3Smrg ;; 157317ca54c3Smrg # This must come before the *-dec entry. 157417ca54c3Smrg pdp10-*) 1575452262e1Smrg os=tops20 157617ca54c3Smrg ;; 157717ca54c3Smrg pdp11-*) 1578452262e1Smrg os=none 157917ca54c3Smrg ;; 158017ca54c3Smrg *-dec | vax-*) 1581452262e1Smrg os=ultrix4.2 158217ca54c3Smrg ;; 158317ca54c3Smrg m68*-apollo) 1584452262e1Smrg os=domain 158517ca54c3Smrg ;; 158617ca54c3Smrg i386-sun) 1587452262e1Smrg os=sunos4.0.2 158817ca54c3Smrg ;; 158917ca54c3Smrg m68000-sun) 1590452262e1Smrg os=sunos3 159117ca54c3Smrg ;; 159217ca54c3Smrg m68*-cisco) 1593452262e1Smrg os=aout 159417ca54c3Smrg ;; 159517ca54c3Smrg mep-*) 1596452262e1Smrg os=elf 159717ca54c3Smrg ;; 159817ca54c3Smrg mips*-cisco) 1599452262e1Smrg os=elf 160017ca54c3Smrg ;; 160117ca54c3Smrg mips*-*) 1602452262e1Smrg os=elf 160317ca54c3Smrg ;; 160417ca54c3Smrg or32-*) 1605452262e1Smrg os=coff 160617ca54c3Smrg ;; 160717ca54c3Smrg *-tti) # must be before sparc entry or we get the wrong os. 1608452262e1Smrg os=sysv3 160917ca54c3Smrg ;; 161017ca54c3Smrg sparc-* | *-sun) 1611452262e1Smrg os=sunos4.1.1 161217ca54c3Smrg ;; 1613452262e1Smrg pru-*) 1614452262e1Smrg os=elf 161517ca54c3Smrg ;; 1616452262e1Smrg *-be) 1617452262e1Smrg os=beos 1618ffe57424Smrg ;; 161917ca54c3Smrg *-ibm) 1620452262e1Smrg os=aix 162117ca54c3Smrg ;; 162217ca54c3Smrg *-knuth) 1623452262e1Smrg os=mmixware 162417ca54c3Smrg ;; 162517ca54c3Smrg *-wec) 1626452262e1Smrg os=proelf 162717ca54c3Smrg ;; 162817ca54c3Smrg *-winbond) 1629452262e1Smrg os=proelf 163017ca54c3Smrg ;; 163117ca54c3Smrg *-oki) 1632452262e1Smrg os=proelf 163317ca54c3Smrg ;; 163417ca54c3Smrg *-hp) 1635452262e1Smrg os=hpux 163617ca54c3Smrg ;; 163717ca54c3Smrg *-hitachi) 1638452262e1Smrg os=hiux 163917ca54c3Smrg ;; 164017ca54c3Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1641452262e1Smrg os=sysv 164217ca54c3Smrg ;; 164317ca54c3Smrg *-cbm) 1644452262e1Smrg os=amigaos 164517ca54c3Smrg ;; 164617ca54c3Smrg *-dg) 1647452262e1Smrg os=dgux 164817ca54c3Smrg ;; 164917ca54c3Smrg *-dolphin) 1650452262e1Smrg os=sysv3 165117ca54c3Smrg ;; 165217ca54c3Smrg m68k-ccur) 1653452262e1Smrg os=rtu 165417ca54c3Smrg ;; 165517ca54c3Smrg m88k-omron*) 1656452262e1Smrg os=luna 165717ca54c3Smrg ;; 1658452262e1Smrg *-next) 1659452262e1Smrg os=nextstep 166017ca54c3Smrg ;; 166117ca54c3Smrg *-sequent) 1662452262e1Smrg os=ptx 166317ca54c3Smrg ;; 166417ca54c3Smrg *-crds) 1665452262e1Smrg os=unos 166617ca54c3Smrg ;; 166717ca54c3Smrg *-ns) 1668452262e1Smrg os=genix 166917ca54c3Smrg ;; 167017ca54c3Smrg i370-*) 1671452262e1Smrg os=mvs 1672ffe57424Smrg ;; 167317ca54c3Smrg *-gould) 1674452262e1Smrg os=sysv 167517ca54c3Smrg ;; 167617ca54c3Smrg *-highlevel) 1677452262e1Smrg os=bsd 167817ca54c3Smrg ;; 167917ca54c3Smrg *-encore) 1680452262e1Smrg os=bsd 168117ca54c3Smrg ;; 168217ca54c3Smrg *-sgi) 1683452262e1Smrg os=irix 168417ca54c3Smrg ;; 168517ca54c3Smrg *-siemens) 1686452262e1Smrg os=sysv4 168717ca54c3Smrg ;; 168817ca54c3Smrg *-masscomp) 1689452262e1Smrg os=rtu 169017ca54c3Smrg ;; 169117ca54c3Smrg f30[01]-fujitsu | f700-fujitsu) 1692452262e1Smrg os=uxpv 169317ca54c3Smrg ;; 169417ca54c3Smrg *-rom68k) 1695452262e1Smrg os=coff 169617ca54c3Smrg ;; 169717ca54c3Smrg *-*bug) 1698452262e1Smrg os=coff 169917ca54c3Smrg ;; 170017ca54c3Smrg *-apple) 1701452262e1Smrg os=macos 170217ca54c3Smrg ;; 170317ca54c3Smrg *-atari*) 1704452262e1Smrg os=mint 1705452262e1Smrg ;; 1706452262e1Smrg *-wrs) 1707452262e1Smrg os=vxworks 170817ca54c3Smrg ;; 170917ca54c3Smrg *) 1710452262e1Smrg os=none 171117ca54c3Smrg ;; 171217ca54c3Smrgesac 1713452262e1Smrg 171417ca54c3Smrgfi 171517ca54c3Smrg 1716452262e1Smrg# Now, validate our (potentially fixed-up) OS. 1717452262e1Smrgcase $os in 1718452262e1Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1719452262e1Smrg musl* | newlib* | relibc* | uclibc*) 1720452262e1Smrg ;; 1721452262e1Smrg # Likewise for "kernel-abi" 1722452262e1Smrg eabi* | gnueabi*) 1723452262e1Smrg ;; 1724452262e1Smrg # VxWorks passes extra cpu info in the 4th filed. 1725452262e1Smrg simlinux | simwindows | spe) 1726452262e1Smrg ;; 1727452262e1Smrg # Now accept the basic system types. 1728452262e1Smrg # The portable systems comes first. 1729452262e1Smrg # Each alternative MUST end in a * to match a version number. 1730452262e1Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1731452262e1Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1732452262e1Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1733452262e1Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1734452262e1Smrg | hiux* | abug | nacl* | netware* | windows* \ 1735452262e1Smrg | os9* | macos* | osx* | ios* \ 1736452262e1Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1737452262e1Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1738452262e1Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1739452262e1Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1740452262e1Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1741452262e1Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1742452262e1Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1743452262e1Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1744452262e1Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1745452262e1Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1746452262e1Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1747452262e1Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1748452262e1Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1749452262e1Smrg | midipix* | mingw32* | mingw64* | mint* \ 1750452262e1Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1751452262e1Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1752452262e1Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1753452262e1Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1754452262e1Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1755452262e1Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1756452262e1Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1757452262e1Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1758452262e1Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1759452262e1Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1760452262e1Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1761635a5eb8Smrg | fiwix* | mlibc* ) 1762452262e1Smrg ;; 1763452262e1Smrg # This one is extra strict with allowed versions 1764452262e1Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1765452262e1Smrg # Don't forget version if it is 3.2v4 or newer. 1766452262e1Smrg ;; 1767452262e1Smrg none) 1768452262e1Smrg ;; 1769635a5eb8Smrg kernel* ) 1770635a5eb8Smrg # Restricted further below 1771635a5eb8Smrg ;; 1772452262e1Smrg *) 1773635a5eb8Smrg echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 1774452262e1Smrg exit 1 1775452262e1Smrg ;; 1776452262e1Smrgesac 1777452262e1Smrg 1778452262e1Smrg# As a final step for OS-related things, validate the OS-kernel combination 1779452262e1Smrg# (given a valid OS), if there is a kernel. 1780452262e1Smrgcase $kernel-$os in 1781452262e1Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1782635a5eb8Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 1783452262e1Smrg ;; 1784452262e1Smrg uclinux-uclibc* ) 1785452262e1Smrg ;; 1786635a5eb8Smrg managarm-mlibc* | managarm-kernel* ) 1787635a5eb8Smrg ;; 1788635a5eb8Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 1789452262e1Smrg # These are just libc implementations, not actual OSes, and thus 1790452262e1Smrg # require a kernel. 1791635a5eb8Smrg echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 1792635a5eb8Smrg exit 1 1793635a5eb8Smrg ;; 1794635a5eb8Smrg -kernel* ) 1795635a5eb8Smrg echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 1796635a5eb8Smrg exit 1 1797635a5eb8Smrg ;; 1798635a5eb8Smrg *-kernel* ) 1799635a5eb8Smrg echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 1800452262e1Smrg exit 1 1801452262e1Smrg ;; 1802452262e1Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1803452262e1Smrg ;; 1804452262e1Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1805452262e1Smrg ;; 1806452262e1Smrg nto-qnx*) 1807452262e1Smrg ;; 1808452262e1Smrg os2-emx) 1809452262e1Smrg ;; 1810452262e1Smrg *-eabi* | *-gnueabi*) 1811452262e1Smrg ;; 1812452262e1Smrg -*) 1813452262e1Smrg # Blank kernel with real OS is always fine. 1814452262e1Smrg ;; 1815452262e1Smrg *-*) 1816635a5eb8Smrg echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 1817452262e1Smrg exit 1 1818452262e1Smrg ;; 1819452262e1Smrgesac 1820452262e1Smrg 182117ca54c3Smrg# Here we handle the case where we know the os, and the CPU type, but not the 182217ca54c3Smrg# manufacturer. We pick the logical manufacturer. 1823452262e1Smrgcase $vendor in 1824452262e1Smrg unknown) 1825452262e1Smrg case $cpu-$os in 1826452262e1Smrg *-riscix*) 182717ca54c3Smrg vendor=acorn 182817ca54c3Smrg ;; 1829452262e1Smrg *-sunos*) 183017ca54c3Smrg vendor=sun 183117ca54c3Smrg ;; 1832452262e1Smrg *-cnk* | *-aix*) 183317ca54c3Smrg vendor=ibm 183417ca54c3Smrg ;; 1835452262e1Smrg *-beos*) 183617ca54c3Smrg vendor=be 183717ca54c3Smrg ;; 1838452262e1Smrg *-hpux*) 183917ca54c3Smrg vendor=hp 184017ca54c3Smrg ;; 1841452262e1Smrg *-mpeix*) 184217ca54c3Smrg vendor=hp 184317ca54c3Smrg ;; 1844452262e1Smrg *-hiux*) 184517ca54c3Smrg vendor=hitachi 184617ca54c3Smrg ;; 1847452262e1Smrg *-unos*) 184817ca54c3Smrg vendor=crds 184917ca54c3Smrg ;; 1850452262e1Smrg *-dgux*) 185117ca54c3Smrg vendor=dg 185217ca54c3Smrg ;; 1853452262e1Smrg *-luna*) 185417ca54c3Smrg vendor=omron 185517ca54c3Smrg ;; 1856452262e1Smrg *-genix*) 185717ca54c3Smrg vendor=ns 185817ca54c3Smrg ;; 1859452262e1Smrg *-clix*) 1860452262e1Smrg vendor=intergraph 1861452262e1Smrg ;; 1862452262e1Smrg *-mvs* | *-opened*) 1863452262e1Smrg vendor=ibm 1864452262e1Smrg ;; 1865452262e1Smrg *-os400*) 186617ca54c3Smrg vendor=ibm 186717ca54c3Smrg ;; 1868452262e1Smrg s390-* | s390x-*) 186917ca54c3Smrg vendor=ibm 187017ca54c3Smrg ;; 1871452262e1Smrg *-ptx*) 187217ca54c3Smrg vendor=sequent 187317ca54c3Smrg ;; 1874452262e1Smrg *-tpf*) 187517ca54c3Smrg vendor=ibm 187617ca54c3Smrg ;; 1877452262e1Smrg *-vxsim* | *-vxworks* | *-windiss*) 187817ca54c3Smrg vendor=wrs 187917ca54c3Smrg ;; 1880452262e1Smrg *-aux*) 188117ca54c3Smrg vendor=apple 188217ca54c3Smrg ;; 1883452262e1Smrg *-hms*) 188417ca54c3Smrg vendor=hitachi 188517ca54c3Smrg ;; 1886452262e1Smrg *-mpw* | *-macos*) 188717ca54c3Smrg vendor=apple 188817ca54c3Smrg ;; 1889452262e1Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 189017ca54c3Smrg vendor=atari 189117ca54c3Smrg ;; 1892452262e1Smrg *-vos*) 189317ca54c3Smrg vendor=stratus 189417ca54c3Smrg ;; 189517ca54c3Smrg esac 189617ca54c3Smrg ;; 189717ca54c3Smrgesac 189817ca54c3Smrg 1899452262e1Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 190017ca54c3Smrgexit 190117ca54c3Smrg 190217ca54c3Smrg# Local variables: 1903452262e1Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 190417ca54c3Smrg# time-stamp-start: "timestamp='" 190517ca54c3Smrg# time-stamp-format: "%:y-%02m-%02d" 190617ca54c3Smrg# time-stamp-end: "'" 190717ca54c3Smrg# End: 1908