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