115fb4814Smrg#! /bin/sh 215fb4814Smrg# Configuration validation subroutine script. 3f010a93dSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 415fb4814Smrg 5f010a93dSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6f010a93dSmrg 7f010a93dSmrgtimestamp='2021-08-14' 815fb4814Smrg 9cf503b78Smrg# This file is free software; you can redistribute it and/or modify it 10cf503b78Smrg# under the terms of the GNU General Public License as published by 11cf503b78Smrg# the Free Software Foundation; either version 3 of the License, or 1215fb4814Smrg# (at your option) any later version. 1315fb4814Smrg# 14cf503b78Smrg# This program is distributed in the hope that it will be useful, but 15cf503b78Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16cf503b78Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17cf503b78Smrg# General Public License for more details. 1815fb4814Smrg# 1915fb4814Smrg# You should have received a copy of the GNU General Public License 20f010a93dSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21de78e416Smrg# 2215fb4814Smrg# As a special exception to the GNU General Public License, if you 2315fb4814Smrg# distribute this file as part of a program that contains a 2415fb4814Smrg# configuration script generated by Autoconf, you may include it under 25cf503b78Smrg# the same distribution terms that you use for the rest of that 26cf503b78Smrg# program. This Exception is an additional permission under section 7 27cf503b78Smrg# of the GNU General Public License, version 3 ("GPLv3"). 2815fb4814Smrg 29de78e416Smrg 30f010a93dSmrg# Please send patches to <config-patches@gnu.org>. 3115fb4814Smrg# 3215fb4814Smrg# Configuration subroutine to validate and canonicalize a configuration type. 3315fb4814Smrg# Supply the specified configuration type as an argument. 3415fb4814Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 3515fb4814Smrg# Otherwise, we print the canonical config type on stdout and succeed. 3615fb4814Smrg 37b4d38c65Smrg# You can get the latest version of this script from: 38f010a93dSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39b4d38c65Smrg 4015fb4814Smrg# This file is supposed to be the same for all GNU packages 4115fb4814Smrg# and recognize all the CPU types, system types and aliases 4215fb4814Smrg# that are meaningful with *any* GNU software. 4315fb4814Smrg# Each package is responsible for reporting which valid configurations 4415fb4814Smrg# it does not support. The user should be able to distinguish 4515fb4814Smrg# a failure to support a valid configuration from a meaningless 4615fb4814Smrg# configuration. 4715fb4814Smrg 4815fb4814Smrg# The goal of this file is to map all the various variations of a given 4915fb4814Smrg# machine specification into a single specification in the form: 5015fb4814Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5115fb4814Smrg# or in some cases, the newer four-part form: 5215fb4814Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5315fb4814Smrg# It is wrong to echo any other type of specification. 5415fb4814Smrg 55f010a93dSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 56f010a93dSmrg# about features and limitations of the classic Bourne shell that were 57f010a93dSmrg# superseded or lifted in POSIX. However, this script identifies a wide 58f010a93dSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59f010a93dSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60f010a93dSmrg# have a pre-POSIX /bin/sh. 61f010a93dSmrg 6215fb4814Smrgme=`echo "$0" | sed -e 's,.*/,,'` 6315fb4814Smrg 6415fb4814Smrgusage="\ 65f010a93dSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6615fb4814Smrg 6715fb4814SmrgCanonicalize a configuration name. 6815fb4814Smrg 69f010a93dSmrgOptions: 7015fb4814Smrg -h, --help print this help, then exit 7115fb4814Smrg -t, --time-stamp print date of last modification, then exit 7215fb4814Smrg -v, --version print version number, then exit 7315fb4814Smrg 7415fb4814SmrgReport bugs and patches to <config-patches@gnu.org>." 7515fb4814Smrg 7615fb4814Smrgversion="\ 7715fb4814SmrgGNU config.sub ($timestamp) 7815fb4814Smrg 79f010a93dSmrgCopyright 1992-2021 Free Software Foundation, Inc. 8015fb4814Smrg 8115fb4814SmrgThis is free software; see the source for copying conditions. There is NO 8215fb4814Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8315fb4814Smrg 8415fb4814Smrghelp=" 8515fb4814SmrgTry \`$me --help' for more information." 8615fb4814Smrg 8715fb4814Smrg# Parse command line 8815fb4814Smrgwhile test $# -gt 0 ; do 8915fb4814Smrg case $1 in 9015fb4814Smrg --time-stamp | --time* | -t ) 91de78e416Smrg echo "$timestamp" ; exit ;; 9215fb4814Smrg --version | -v ) 93de78e416Smrg echo "$version" ; exit ;; 9415fb4814Smrg --help | --h* | -h ) 95de78e416Smrg echo "$usage"; exit ;; 9615fb4814Smrg -- ) # Stop option processing 9715fb4814Smrg shift; break ;; 9815fb4814Smrg - ) # Use stdin as input. 9915fb4814Smrg break ;; 10015fb4814Smrg -* ) 101f010a93dSmrg echo "$me: invalid option $1$help" >&2 10215fb4814Smrg exit 1 ;; 10315fb4814Smrg 10415fb4814Smrg *local*) 10515fb4814Smrg # First pass through any local machine types. 106f010a93dSmrg echo "$1" 107de78e416Smrg exit ;; 10815fb4814Smrg 10915fb4814Smrg * ) 11015fb4814Smrg break ;; 11115fb4814Smrg esac 11215fb4814Smrgdone 11315fb4814Smrg 11415fb4814Smrgcase $# in 11515fb4814Smrg 0) echo "$me: missing argument$help" >&2 11615fb4814Smrg exit 1;; 11715fb4814Smrg 1) ;; 11815fb4814Smrg *) echo "$me: too many arguments$help" >&2 11915fb4814Smrg exit 1;; 12015fb4814Smrgesac 12115fb4814Smrg 122f010a93dSmrg# Split fields of configuration type 123f010a93dSmrg# shellcheck disable=SC2162 124f010a93dSmrgsaved_IFS=$IFS 125f010a93dSmrgIFS="-" read field1 field2 field3 field4 <<EOF 126f010a93dSmrg$1 127f010a93dSmrgEOF 128f010a93dSmrgIFS=$saved_IFS 12915fb4814Smrg 130f010a93dSmrg# Separate into logical components for further validation 131f010a93dSmrgcase $1 in 132f010a93dSmrg *-*-*-*-*) 133f010a93dSmrg echo Invalid configuration \`"$1"\': more than four components >&2 134f010a93dSmrg exit 1 13515fb4814Smrg ;; 136f010a93dSmrg *-*-*-*) 137f010a93dSmrg basic_machine=$field1-$field2 138f010a93dSmrg basic_os=$field3-$field4 13915fb4814Smrg ;; 140f010a93dSmrg *-*-*) 141f010a93dSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142f010a93dSmrg # parts 143f010a93dSmrg maybe_os=$field2-$field3 144f010a93dSmrg case $maybe_os in 145f010a93dSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 146f010a93dSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147f010a93dSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148f010a93dSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 149f010a93dSmrg basic_machine=$field1 150f010a93dSmrg basic_os=$maybe_os 151f010a93dSmrg ;; 152f010a93dSmrg android-linux) 153f010a93dSmrg basic_machine=$field1-unknown 154f010a93dSmrg basic_os=linux-android 155f010a93dSmrg ;; 156f010a93dSmrg *) 157f010a93dSmrg basic_machine=$field1-$field2 158f010a93dSmrg basic_os=$field3 159f010a93dSmrg ;; 160f010a93dSmrg esac 16115fb4814Smrg ;; 162f010a93dSmrg *-*) 163f010a93dSmrg # A lone config we happen to match not fitting any pattern 164f010a93dSmrg case $field1-$field2 in 165f010a93dSmrg decstation-3100) 166f010a93dSmrg basic_machine=mips-dec 167f010a93dSmrg basic_os= 168f010a93dSmrg ;; 169f010a93dSmrg *-*) 170f010a93dSmrg # Second component is usually, but not always the OS 171f010a93dSmrg case $field2 in 172f010a93dSmrg # Prevent following clause from handling this valid os 173f010a93dSmrg sun*os*) 174f010a93dSmrg basic_machine=$field1 175f010a93dSmrg basic_os=$field2 176f010a93dSmrg ;; 177f010a93dSmrg zephyr*) 178f010a93dSmrg basic_machine=$field1-unknown 179f010a93dSmrg basic_os=$field2 180f010a93dSmrg ;; 181f010a93dSmrg # Manufacturers 182f010a93dSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183f010a93dSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184f010a93dSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185f010a93dSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186f010a93dSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187f010a93dSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188f010a93dSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189f010a93dSmrg | microblaze* | sim | cisco \ 190f010a93dSmrg | oki | wec | wrs | winbond) 191f010a93dSmrg basic_machine=$field1-$field2 192f010a93dSmrg basic_os= 193f010a93dSmrg ;; 194f010a93dSmrg *) 195f010a93dSmrg basic_machine=$field1 196f010a93dSmrg basic_os=$field2 197f010a93dSmrg ;; 198f010a93dSmrg esac 199f010a93dSmrg ;; 200f010a93dSmrg esac 20115fb4814Smrg ;; 202f010a93dSmrg *) 203f010a93dSmrg # Convert single-component short-hands not valid as part of 204f010a93dSmrg # multi-component configurations. 205f010a93dSmrg case $field1 in 206f010a93dSmrg 386bsd) 207f010a93dSmrg basic_machine=i386-pc 208f010a93dSmrg basic_os=bsd 209f010a93dSmrg ;; 210f010a93dSmrg a29khif) 211f010a93dSmrg basic_machine=a29k-amd 212f010a93dSmrg basic_os=udi 213f010a93dSmrg ;; 214f010a93dSmrg adobe68k) 215f010a93dSmrg basic_machine=m68010-adobe 216f010a93dSmrg basic_os=scout 217f010a93dSmrg ;; 218f010a93dSmrg alliant) 219f010a93dSmrg basic_machine=fx80-alliant 220f010a93dSmrg basic_os= 221f010a93dSmrg ;; 222f010a93dSmrg altos | altos3068) 223f010a93dSmrg basic_machine=m68k-altos 224f010a93dSmrg basic_os= 225f010a93dSmrg ;; 226f010a93dSmrg am29k) 227f010a93dSmrg basic_machine=a29k-none 228f010a93dSmrg basic_os=bsd 229f010a93dSmrg ;; 230f010a93dSmrg amdahl) 231f010a93dSmrg basic_machine=580-amdahl 232f010a93dSmrg basic_os=sysv 233f010a93dSmrg ;; 234f010a93dSmrg amiga) 235f010a93dSmrg basic_machine=m68k-unknown 236f010a93dSmrg basic_os= 237f010a93dSmrg ;; 238f010a93dSmrg amigaos | amigados) 239f010a93dSmrg basic_machine=m68k-unknown 240f010a93dSmrg basic_os=amigaos 241f010a93dSmrg ;; 242f010a93dSmrg amigaunix | amix) 243f010a93dSmrg basic_machine=m68k-unknown 244f010a93dSmrg basic_os=sysv4 245f010a93dSmrg ;; 246f010a93dSmrg apollo68) 247f010a93dSmrg basic_machine=m68k-apollo 248f010a93dSmrg basic_os=sysv 249f010a93dSmrg ;; 250f010a93dSmrg apollo68bsd) 251f010a93dSmrg basic_machine=m68k-apollo 252f010a93dSmrg basic_os=bsd 253f010a93dSmrg ;; 254f010a93dSmrg aros) 255f010a93dSmrg basic_machine=i386-pc 256f010a93dSmrg basic_os=aros 257f010a93dSmrg ;; 258f010a93dSmrg aux) 259f010a93dSmrg basic_machine=m68k-apple 260f010a93dSmrg basic_os=aux 261f010a93dSmrg ;; 262f010a93dSmrg balance) 263f010a93dSmrg basic_machine=ns32k-sequent 264f010a93dSmrg basic_os=dynix 265f010a93dSmrg ;; 266f010a93dSmrg blackfin) 267f010a93dSmrg basic_machine=bfin-unknown 268f010a93dSmrg basic_os=linux 269f010a93dSmrg ;; 270f010a93dSmrg cegcc) 271f010a93dSmrg basic_machine=arm-unknown 272f010a93dSmrg basic_os=cegcc 273f010a93dSmrg ;; 274f010a93dSmrg convex-c1) 275f010a93dSmrg basic_machine=c1-convex 276f010a93dSmrg basic_os=bsd 277f010a93dSmrg ;; 278f010a93dSmrg convex-c2) 279f010a93dSmrg basic_machine=c2-convex 280f010a93dSmrg basic_os=bsd 281f010a93dSmrg ;; 282f010a93dSmrg convex-c32) 283f010a93dSmrg basic_machine=c32-convex 284f010a93dSmrg basic_os=bsd 285f010a93dSmrg ;; 286f010a93dSmrg convex-c34) 287f010a93dSmrg basic_machine=c34-convex 288f010a93dSmrg basic_os=bsd 289f010a93dSmrg ;; 290f010a93dSmrg convex-c38) 291f010a93dSmrg basic_machine=c38-convex 292f010a93dSmrg basic_os=bsd 293f010a93dSmrg ;; 294f010a93dSmrg cray) 295f010a93dSmrg basic_machine=j90-cray 296f010a93dSmrg basic_os=unicos 297f010a93dSmrg ;; 298f010a93dSmrg crds | unos) 299f010a93dSmrg basic_machine=m68k-crds 300f010a93dSmrg basic_os= 301f010a93dSmrg ;; 302f010a93dSmrg da30) 303f010a93dSmrg basic_machine=m68k-da30 304f010a93dSmrg basic_os= 305f010a93dSmrg ;; 306f010a93dSmrg decstation | pmax | pmin | dec3100 | decstatn) 307f010a93dSmrg basic_machine=mips-dec 308f010a93dSmrg basic_os= 309f010a93dSmrg ;; 310f010a93dSmrg delta88) 311f010a93dSmrg basic_machine=m88k-motorola 312f010a93dSmrg basic_os=sysv3 313f010a93dSmrg ;; 314f010a93dSmrg dicos) 315f010a93dSmrg basic_machine=i686-pc 316f010a93dSmrg basic_os=dicos 317f010a93dSmrg ;; 318f010a93dSmrg djgpp) 319f010a93dSmrg basic_machine=i586-pc 320f010a93dSmrg basic_os=msdosdjgpp 321f010a93dSmrg ;; 322f010a93dSmrg ebmon29k) 323f010a93dSmrg basic_machine=a29k-amd 324f010a93dSmrg basic_os=ebmon 325f010a93dSmrg ;; 326f010a93dSmrg es1800 | OSE68k | ose68k | ose | OSE) 327f010a93dSmrg basic_machine=m68k-ericsson 328f010a93dSmrg basic_os=ose 329f010a93dSmrg ;; 330f010a93dSmrg gmicro) 331f010a93dSmrg basic_machine=tron-gmicro 332f010a93dSmrg basic_os=sysv 333f010a93dSmrg ;; 334f010a93dSmrg go32) 335f010a93dSmrg basic_machine=i386-pc 336f010a93dSmrg basic_os=go32 337f010a93dSmrg ;; 338f010a93dSmrg h8300hms) 339f010a93dSmrg basic_machine=h8300-hitachi 340f010a93dSmrg basic_os=hms 341f010a93dSmrg ;; 342f010a93dSmrg h8300xray) 343f010a93dSmrg basic_machine=h8300-hitachi 344f010a93dSmrg basic_os=xray 345f010a93dSmrg ;; 346f010a93dSmrg h8500hms) 347f010a93dSmrg basic_machine=h8500-hitachi 348f010a93dSmrg basic_os=hms 349f010a93dSmrg ;; 350f010a93dSmrg harris) 351f010a93dSmrg basic_machine=m88k-harris 352f010a93dSmrg basic_os=sysv3 353f010a93dSmrg ;; 354f010a93dSmrg hp300 | hp300hpux) 355f010a93dSmrg basic_machine=m68k-hp 356f010a93dSmrg basic_os=hpux 357f010a93dSmrg ;; 358f010a93dSmrg hp300bsd) 359f010a93dSmrg basic_machine=m68k-hp 360f010a93dSmrg basic_os=bsd 361f010a93dSmrg ;; 362f010a93dSmrg hppaosf) 363f010a93dSmrg basic_machine=hppa1.1-hp 364f010a93dSmrg basic_os=osf 365f010a93dSmrg ;; 366f010a93dSmrg hppro) 367f010a93dSmrg basic_machine=hppa1.1-hp 368f010a93dSmrg basic_os=proelf 369f010a93dSmrg ;; 370f010a93dSmrg i386mach) 371f010a93dSmrg basic_machine=i386-mach 372f010a93dSmrg basic_os=mach 373f010a93dSmrg ;; 374f010a93dSmrg isi68 | isi) 375f010a93dSmrg basic_machine=m68k-isi 376f010a93dSmrg basic_os=sysv 377f010a93dSmrg ;; 378f010a93dSmrg m68knommu) 379f010a93dSmrg basic_machine=m68k-unknown 380f010a93dSmrg basic_os=linux 381f010a93dSmrg ;; 382f010a93dSmrg magnum | m3230) 383f010a93dSmrg basic_machine=mips-mips 384f010a93dSmrg basic_os=sysv 385f010a93dSmrg ;; 386f010a93dSmrg merlin) 387f010a93dSmrg basic_machine=ns32k-utek 388f010a93dSmrg basic_os=sysv 389f010a93dSmrg ;; 390f010a93dSmrg mingw64) 391f010a93dSmrg basic_machine=x86_64-pc 392f010a93dSmrg basic_os=mingw64 393f010a93dSmrg ;; 394f010a93dSmrg mingw32) 395f010a93dSmrg basic_machine=i686-pc 396f010a93dSmrg basic_os=mingw32 397f010a93dSmrg ;; 398f010a93dSmrg mingw32ce) 399f010a93dSmrg basic_machine=arm-unknown 400f010a93dSmrg basic_os=mingw32ce 401f010a93dSmrg ;; 402f010a93dSmrg monitor) 403f010a93dSmrg basic_machine=m68k-rom68k 404f010a93dSmrg basic_os=coff 405f010a93dSmrg ;; 406f010a93dSmrg morphos) 407f010a93dSmrg basic_machine=powerpc-unknown 408f010a93dSmrg basic_os=morphos 409f010a93dSmrg ;; 410f010a93dSmrg moxiebox) 411f010a93dSmrg basic_machine=moxie-unknown 412f010a93dSmrg basic_os=moxiebox 413f010a93dSmrg ;; 414f010a93dSmrg msdos) 415f010a93dSmrg basic_machine=i386-pc 416f010a93dSmrg basic_os=msdos 417f010a93dSmrg ;; 418f010a93dSmrg msys) 419f010a93dSmrg basic_machine=i686-pc 420f010a93dSmrg basic_os=msys 421f010a93dSmrg ;; 422f010a93dSmrg mvs) 423f010a93dSmrg basic_machine=i370-ibm 424f010a93dSmrg basic_os=mvs 425f010a93dSmrg ;; 426f010a93dSmrg nacl) 427f010a93dSmrg basic_machine=le32-unknown 428f010a93dSmrg basic_os=nacl 429f010a93dSmrg ;; 430f010a93dSmrg ncr3000) 431f010a93dSmrg basic_machine=i486-ncr 432f010a93dSmrg basic_os=sysv4 433f010a93dSmrg ;; 434f010a93dSmrg netbsd386) 435f010a93dSmrg basic_machine=i386-pc 436f010a93dSmrg basic_os=netbsd 437f010a93dSmrg ;; 438f010a93dSmrg netwinder) 439f010a93dSmrg basic_machine=armv4l-rebel 440f010a93dSmrg basic_os=linux 441f010a93dSmrg ;; 442f010a93dSmrg news | news700 | news800 | news900) 443f010a93dSmrg basic_machine=m68k-sony 444f010a93dSmrg basic_os=newsos 445f010a93dSmrg ;; 446f010a93dSmrg news1000) 447f010a93dSmrg basic_machine=m68030-sony 448f010a93dSmrg basic_os=newsos 449f010a93dSmrg ;; 450f010a93dSmrg necv70) 451f010a93dSmrg basic_machine=v70-nec 452f010a93dSmrg basic_os=sysv 453f010a93dSmrg ;; 454f010a93dSmrg nh3000) 455f010a93dSmrg basic_machine=m68k-harris 456f010a93dSmrg basic_os=cxux 457f010a93dSmrg ;; 458f010a93dSmrg nh[45]000) 459f010a93dSmrg basic_machine=m88k-harris 460f010a93dSmrg basic_os=cxux 461f010a93dSmrg ;; 462f010a93dSmrg nindy960) 463f010a93dSmrg basic_machine=i960-intel 464f010a93dSmrg basic_os=nindy 465f010a93dSmrg ;; 466f010a93dSmrg mon960) 467f010a93dSmrg basic_machine=i960-intel 468f010a93dSmrg basic_os=mon960 469f010a93dSmrg ;; 470f010a93dSmrg nonstopux) 471f010a93dSmrg basic_machine=mips-compaq 472f010a93dSmrg basic_os=nonstopux 473f010a93dSmrg ;; 474f010a93dSmrg os400) 475f010a93dSmrg basic_machine=powerpc-ibm 476f010a93dSmrg basic_os=os400 477f010a93dSmrg ;; 478f010a93dSmrg OSE68000 | ose68000) 479f010a93dSmrg basic_machine=m68000-ericsson 480f010a93dSmrg basic_os=ose 481f010a93dSmrg ;; 482f010a93dSmrg os68k) 483f010a93dSmrg basic_machine=m68k-none 484f010a93dSmrg basic_os=os68k 485f010a93dSmrg ;; 486f010a93dSmrg paragon) 487f010a93dSmrg basic_machine=i860-intel 488f010a93dSmrg basic_os=osf 489f010a93dSmrg ;; 490f010a93dSmrg parisc) 491f010a93dSmrg basic_machine=hppa-unknown 492f010a93dSmrg basic_os=linux 493f010a93dSmrg ;; 494f010a93dSmrg psp) 495f010a93dSmrg basic_machine=mipsallegrexel-sony 496f010a93dSmrg basic_os=psp 497f010a93dSmrg ;; 498f010a93dSmrg pw32) 499f010a93dSmrg basic_machine=i586-unknown 500f010a93dSmrg basic_os=pw32 501f010a93dSmrg ;; 502f010a93dSmrg rdos | rdos64) 503f010a93dSmrg basic_machine=x86_64-pc 504f010a93dSmrg basic_os=rdos 505f010a93dSmrg ;; 506f010a93dSmrg rdos32) 507f010a93dSmrg basic_machine=i386-pc 508f010a93dSmrg basic_os=rdos 509f010a93dSmrg ;; 510f010a93dSmrg rom68k) 511f010a93dSmrg basic_machine=m68k-rom68k 512f010a93dSmrg basic_os=coff 513f010a93dSmrg ;; 514f010a93dSmrg sa29200) 515f010a93dSmrg basic_machine=a29k-amd 516f010a93dSmrg basic_os=udi 517f010a93dSmrg ;; 518f010a93dSmrg sei) 519f010a93dSmrg basic_machine=mips-sei 520f010a93dSmrg basic_os=seiux 521f010a93dSmrg ;; 522f010a93dSmrg sequent) 523f010a93dSmrg basic_machine=i386-sequent 524f010a93dSmrg basic_os= 525f010a93dSmrg ;; 526f010a93dSmrg sps7) 527f010a93dSmrg basic_machine=m68k-bull 528f010a93dSmrg basic_os=sysv2 529f010a93dSmrg ;; 530f010a93dSmrg st2000) 531f010a93dSmrg basic_machine=m68k-tandem 532f010a93dSmrg basic_os= 533f010a93dSmrg ;; 534f010a93dSmrg stratus) 535f010a93dSmrg basic_machine=i860-stratus 536f010a93dSmrg basic_os=sysv4 537f010a93dSmrg ;; 538f010a93dSmrg sun2) 539f010a93dSmrg basic_machine=m68000-sun 540f010a93dSmrg basic_os= 541f010a93dSmrg ;; 542f010a93dSmrg sun2os3) 543f010a93dSmrg basic_machine=m68000-sun 544f010a93dSmrg basic_os=sunos3 545f010a93dSmrg ;; 546f010a93dSmrg sun2os4) 547f010a93dSmrg basic_machine=m68000-sun 548f010a93dSmrg basic_os=sunos4 549f010a93dSmrg ;; 550f010a93dSmrg sun3) 551f010a93dSmrg basic_machine=m68k-sun 552f010a93dSmrg basic_os= 553f010a93dSmrg ;; 554f010a93dSmrg sun3os3) 555f010a93dSmrg basic_machine=m68k-sun 556f010a93dSmrg basic_os=sunos3 557f010a93dSmrg ;; 558f010a93dSmrg sun3os4) 559f010a93dSmrg basic_machine=m68k-sun 560f010a93dSmrg basic_os=sunos4 561f010a93dSmrg ;; 562f010a93dSmrg sun4) 563f010a93dSmrg basic_machine=sparc-sun 564f010a93dSmrg basic_os= 565f010a93dSmrg ;; 566f010a93dSmrg sun4os3) 567f010a93dSmrg basic_machine=sparc-sun 568f010a93dSmrg basic_os=sunos3 569f010a93dSmrg ;; 570f010a93dSmrg sun4os4) 571f010a93dSmrg basic_machine=sparc-sun 572f010a93dSmrg basic_os=sunos4 573f010a93dSmrg ;; 574f010a93dSmrg sun4sol2) 575f010a93dSmrg basic_machine=sparc-sun 576f010a93dSmrg basic_os=solaris2 577f010a93dSmrg ;; 578f010a93dSmrg sun386 | sun386i | roadrunner) 579f010a93dSmrg basic_machine=i386-sun 580f010a93dSmrg basic_os= 581f010a93dSmrg ;; 582f010a93dSmrg sv1) 583f010a93dSmrg basic_machine=sv1-cray 584f010a93dSmrg basic_os=unicos 585f010a93dSmrg ;; 586f010a93dSmrg symmetry) 587f010a93dSmrg basic_machine=i386-sequent 588f010a93dSmrg basic_os=dynix 589f010a93dSmrg ;; 590f010a93dSmrg t3e) 591f010a93dSmrg basic_machine=alphaev5-cray 592f010a93dSmrg basic_os=unicos 593f010a93dSmrg ;; 594f010a93dSmrg t90) 595f010a93dSmrg basic_machine=t90-cray 596f010a93dSmrg basic_os=unicos 597f010a93dSmrg ;; 598f010a93dSmrg toad1) 599f010a93dSmrg basic_machine=pdp10-xkl 600f010a93dSmrg basic_os=tops20 601f010a93dSmrg ;; 602f010a93dSmrg tpf) 603f010a93dSmrg basic_machine=s390x-ibm 604f010a93dSmrg basic_os=tpf 605f010a93dSmrg ;; 606f010a93dSmrg udi29k) 607f010a93dSmrg basic_machine=a29k-amd 608f010a93dSmrg basic_os=udi 609f010a93dSmrg ;; 610f010a93dSmrg ultra3) 611f010a93dSmrg basic_machine=a29k-nyu 612f010a93dSmrg basic_os=sym1 613f010a93dSmrg ;; 614f010a93dSmrg v810 | necv810) 615f010a93dSmrg basic_machine=v810-nec 616f010a93dSmrg basic_os=none 617f010a93dSmrg ;; 618f010a93dSmrg vaxv) 619f010a93dSmrg basic_machine=vax-dec 620f010a93dSmrg basic_os=sysv 621f010a93dSmrg ;; 622f010a93dSmrg vms) 623f010a93dSmrg basic_machine=vax-dec 624f010a93dSmrg basic_os=vms 625f010a93dSmrg ;; 626f010a93dSmrg vsta) 627f010a93dSmrg basic_machine=i386-pc 628f010a93dSmrg basic_os=vsta 629f010a93dSmrg ;; 630f010a93dSmrg vxworks960) 631f010a93dSmrg basic_machine=i960-wrs 632f010a93dSmrg basic_os=vxworks 633f010a93dSmrg ;; 634f010a93dSmrg vxworks68) 635f010a93dSmrg basic_machine=m68k-wrs 636f010a93dSmrg basic_os=vxworks 637f010a93dSmrg ;; 638f010a93dSmrg vxworks29k) 639f010a93dSmrg basic_machine=a29k-wrs 640f010a93dSmrg basic_os=vxworks 641f010a93dSmrg ;; 642f010a93dSmrg xbox) 643f010a93dSmrg basic_machine=i686-pc 644f010a93dSmrg basic_os=mingw32 645f010a93dSmrg ;; 646f010a93dSmrg ymp) 647f010a93dSmrg basic_machine=ymp-cray 648f010a93dSmrg basic_os=unicos 649f010a93dSmrg ;; 650f010a93dSmrg *) 651f010a93dSmrg basic_machine=$1 652f010a93dSmrg basic_os= 653f010a93dSmrg ;; 654f010a93dSmrg esac 65515fb4814Smrg ;; 65615fb4814Smrgesac 65715fb4814Smrg 658f010a93dSmrg# Decode 1-component or ad-hoc basic machines 65915fb4814Smrgcase $basic_machine in 660f010a93dSmrg # Here we handle the default manufacturer of certain CPU types. It is in 661f010a93dSmrg # some cases the only manufacturer, in others, it is the most popular. 662f010a93dSmrg w89k) 663f010a93dSmrg cpu=hppa1.1 664f010a93dSmrg vendor=winbond 665de78e416Smrg ;; 666f010a93dSmrg op50n) 667f010a93dSmrg cpu=hppa1.1 668f010a93dSmrg vendor=oki 669cf503b78Smrg ;; 670f010a93dSmrg op60c) 671f010a93dSmrg cpu=hppa1.1 672f010a93dSmrg vendor=oki 673cf503b78Smrg ;; 674f010a93dSmrg ibm*) 675f010a93dSmrg cpu=i370 676f010a93dSmrg vendor=ibm 677cf503b78Smrg ;; 678f010a93dSmrg orion105) 679f010a93dSmrg cpu=clipper 680f010a93dSmrg vendor=highlevel 681cf503b78Smrg ;; 682f010a93dSmrg mac | mpw | mac-mpw) 683f010a93dSmrg cpu=m68k 684f010a93dSmrg vendor=apple 68515fb4814Smrg ;; 686f010a93dSmrg pmac | pmac-mpw) 687f010a93dSmrg cpu=powerpc 688f010a93dSmrg vendor=apple 68983cab373Smrg ;; 690f010a93dSmrg 69115fb4814Smrg # Recognize the various machine names and aliases which stand 69215fb4814Smrg # for a CPU type and a company and sometimes even an OS. 69315fb4814Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694f010a93dSmrg cpu=m68000 695f010a93dSmrg vendor=att 69615fb4814Smrg ;; 69715fb4814Smrg 3b*) 698f010a93dSmrg cpu=we32k 699f010a93dSmrg vendor=att 700b4d38c65Smrg ;; 701b4d38c65Smrg bluegene*) 702f010a93dSmrg cpu=powerpc 703f010a93dSmrg vendor=ibm 704f010a93dSmrg basic_os=cnk 70515fb4814Smrg ;; 70615fb4814Smrg decsystem10* | dec10*) 707f010a93dSmrg cpu=pdp10 708f010a93dSmrg vendor=dec 709f010a93dSmrg basic_os=tops10 71015fb4814Smrg ;; 71115fb4814Smrg decsystem20* | dec20*) 712f010a93dSmrg cpu=pdp10 713f010a93dSmrg vendor=dec 714f010a93dSmrg basic_os=tops20 71515fb4814Smrg ;; 71615fb4814Smrg delta | 3300 | motorola-3300 | motorola-delta \ 71715fb4814Smrg | 3300-motorola | delta-motorola) 718f010a93dSmrg cpu=m68k 719f010a93dSmrg vendor=motorola 72015fb4814Smrg ;; 721f010a93dSmrg dpx2*) 722f010a93dSmrg cpu=m68k 723f010a93dSmrg vendor=bull 724f010a93dSmrg basic_os=sysv3 72515fb4814Smrg ;; 72615fb4814Smrg encore | umax | mmax) 727f010a93dSmrg cpu=ns32k 728f010a93dSmrg vendor=encore 72915fb4814Smrg ;; 730f010a93dSmrg elxsi) 731f010a93dSmrg cpu=elxsi 732f010a93dSmrg vendor=elxsi 733f010a93dSmrg basic_os=${basic_os:-bsd} 73415fb4814Smrg ;; 73515fb4814Smrg fx2800) 736f010a93dSmrg cpu=i860 737f010a93dSmrg vendor=alliant 73815fb4814Smrg ;; 73915fb4814Smrg genix) 740f010a93dSmrg cpu=ns32k 741f010a93dSmrg vendor=ns 74215fb4814Smrg ;; 74315fb4814Smrg h3050r* | hiux*) 744f010a93dSmrg cpu=hppa1.1 745f010a93dSmrg vendor=hitachi 746f010a93dSmrg basic_os=hiuxwe2 74715fb4814Smrg ;; 74815fb4814Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749f010a93dSmrg cpu=hppa1.0 750f010a93dSmrg vendor=hp 75115fb4814Smrg ;; 75215fb4814Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753f010a93dSmrg cpu=m68000 754f010a93dSmrg vendor=hp 75515fb4814Smrg ;; 75615fb4814Smrg hp9k3[2-9][0-9]) 757f010a93dSmrg cpu=m68k 758f010a93dSmrg vendor=hp 75915fb4814Smrg ;; 76015fb4814Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761f010a93dSmrg cpu=hppa1.0 762f010a93dSmrg vendor=hp 76315fb4814Smrg ;; 76415fb4814Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765f010a93dSmrg cpu=hppa1.1 766f010a93dSmrg vendor=hp 76715fb4814Smrg ;; 76815fb4814Smrg hp9k78[0-9] | hp78[0-9]) 76915fb4814Smrg # FIXME: really hppa2.0-hp 770f010a93dSmrg cpu=hppa1.1 771f010a93dSmrg vendor=hp 77215fb4814Smrg ;; 77315fb4814Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77415fb4814Smrg # FIXME: really hppa2.0-hp 775f010a93dSmrg cpu=hppa1.1 776f010a93dSmrg vendor=hp 77715fb4814Smrg ;; 77815fb4814Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779f010a93dSmrg cpu=hppa1.1 780f010a93dSmrg vendor=hp 78115fb4814Smrg ;; 78215fb4814Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783f010a93dSmrg cpu=hppa1.0 784f010a93dSmrg vendor=hp 78515fb4814Smrg ;; 78615fb4814Smrg i*86v32) 787f010a93dSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788f010a93dSmrg vendor=pc 789f010a93dSmrg basic_os=sysv32 79015fb4814Smrg ;; 79115fb4814Smrg i*86v4*) 792f010a93dSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793f010a93dSmrg vendor=pc 794f010a93dSmrg basic_os=sysv4 79515fb4814Smrg ;; 79615fb4814Smrg i*86v) 797f010a93dSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798f010a93dSmrg vendor=pc 799f010a93dSmrg basic_os=sysv 80015fb4814Smrg ;; 80115fb4814Smrg i*86sol2) 802f010a93dSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803f010a93dSmrg vendor=pc 804f010a93dSmrg basic_os=solaris2 80515fb4814Smrg ;; 806f010a93dSmrg j90 | j90-cray) 807f010a93dSmrg cpu=j90 808f010a93dSmrg vendor=cray 809f010a93dSmrg basic_os=${basic_os:-unicos} 81015fb4814Smrg ;; 81115fb4814Smrg iris | iris4d) 812f010a93dSmrg cpu=mips 813f010a93dSmrg vendor=sgi 814f010a93dSmrg case $basic_os in 815f010a93dSmrg irix*) 81615fb4814Smrg ;; 81715fb4814Smrg *) 818f010a93dSmrg basic_os=irix4 81915fb4814Smrg ;; 82015fb4814Smrg esac 82115fb4814Smrg ;; 82215fb4814Smrg miniframe) 823f010a93dSmrg cpu=m68000 824f010a93dSmrg vendor=convergent 82515fb4814Smrg ;; 826f010a93dSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827f010a93dSmrg cpu=m68k 828f010a93dSmrg vendor=atari 829f010a93dSmrg basic_os=mint 83015fb4814Smrg ;; 83115fb4814Smrg news-3600 | risc-news) 832f010a93dSmrg cpu=mips 833f010a93dSmrg vendor=sony 834f010a93dSmrg basic_os=newsos 835f010a93dSmrg ;; 836f010a93dSmrg next | m*-next) 837f010a93dSmrg cpu=m68k 838f010a93dSmrg vendor=next 839f010a93dSmrg case $basic_os in 840f010a93dSmrg openstep*) 841f010a93dSmrg ;; 842f010a93dSmrg nextstep*) 84315fb4814Smrg ;; 844f010a93dSmrg ns2*) 845f010a93dSmrg basic_os=nextstep2 84615fb4814Smrg ;; 84715fb4814Smrg *) 848f010a93dSmrg basic_os=nextstep3 84915fb4814Smrg ;; 85015fb4814Smrg esac 85115fb4814Smrg ;; 85215fb4814Smrg np1) 853f010a93dSmrg cpu=np1 854f010a93dSmrg vendor=gould 85515fb4814Smrg ;; 85615fb4814Smrg op50n-* | op60c-*) 857f010a93dSmrg cpu=hppa1.1 858f010a93dSmrg vendor=oki 859f010a93dSmrg basic_os=proelf 86015fb4814Smrg ;; 86115fb4814Smrg pa-hitachi) 862f010a93dSmrg cpu=hppa1.1 863f010a93dSmrg vendor=hitachi 864f010a93dSmrg basic_os=hiuxwe2 865b4d38c65Smrg ;; 86615fb4814Smrg pbd) 867f010a93dSmrg cpu=sparc 868f010a93dSmrg vendor=tti 86915fb4814Smrg ;; 87015fb4814Smrg pbb) 871f010a93dSmrg cpu=m68k 872f010a93dSmrg vendor=tti 873de78e416Smrg ;; 874f010a93dSmrg pc532) 875f010a93dSmrg cpu=ns32k 876f010a93dSmrg vendor=pc532 87715fb4814Smrg ;; 87815fb4814Smrg pn) 879f010a93dSmrg cpu=pn 880f010a93dSmrg vendor=gould 88115fb4814Smrg ;; 882f010a93dSmrg power) 883f010a93dSmrg cpu=power 884f010a93dSmrg vendor=ibm 88515fb4814Smrg ;; 88615fb4814Smrg ps2) 887f010a93dSmrg cpu=i386 888f010a93dSmrg vendor=ibm 88915fb4814Smrg ;; 89015fb4814Smrg rm[46]00) 891f010a93dSmrg cpu=mips 892f010a93dSmrg vendor=siemens 89315fb4814Smrg ;; 89415fb4814Smrg rtpc | rtpc-*) 895f010a93dSmrg cpu=romp 896f010a93dSmrg vendor=ibm 89715fb4814Smrg ;; 898f010a93dSmrg sde) 899f010a93dSmrg cpu=mipsisa32 900f010a93dSmrg vendor=sde 901f010a93dSmrg basic_os=${basic_os:-elf} 90215fb4814Smrg ;; 903f010a93dSmrg simso-wrs) 904f010a93dSmrg cpu=sparclite 905f010a93dSmrg vendor=wrs 906f010a93dSmrg basic_os=vxworks 90715fb4814Smrg ;; 908f010a93dSmrg tower | tower-32) 909f010a93dSmrg cpu=m68k 910f010a93dSmrg vendor=ncr 911de78e416Smrg ;; 912f010a93dSmrg vpp*|vx|vx-*) 913f010a93dSmrg cpu=f301 914f010a93dSmrg vendor=fujitsu 91515fb4814Smrg ;; 916f010a93dSmrg w65) 917f010a93dSmrg cpu=w65 918f010a93dSmrg vendor=wdc 91915fb4814Smrg ;; 920f010a93dSmrg w89k-*) 921f010a93dSmrg cpu=hppa1.1 922f010a93dSmrg vendor=winbond 923f010a93dSmrg basic_os=proelf 92415fb4814Smrg ;; 925f010a93dSmrg none) 926f010a93dSmrg cpu=none 927f010a93dSmrg vendor=none 928de78e416Smrg ;; 929f010a93dSmrg leon|leon[3-9]) 930f010a93dSmrg cpu=sparc 931f010a93dSmrg vendor=$basic_machine 93215fb4814Smrg ;; 933f010a93dSmrg leon-*|leon[3-9]-*) 934f010a93dSmrg cpu=sparc 935f010a93dSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 93615fb4814Smrg ;; 937f010a93dSmrg 938f010a93dSmrg *-*) 939f010a93dSmrg # shellcheck disable=SC2162 940f010a93dSmrg saved_IFS=$IFS 941f010a93dSmrg IFS="-" read cpu vendor <<EOF 942f010a93dSmrg$basic_machine 943f010a93dSmrgEOF 944f010a93dSmrg IFS=$saved_IFS 94515fb4814Smrg ;; 946f010a93dSmrg # We use `pc' rather than `unknown' 947f010a93dSmrg # because (1) that's what they normally are, and 948f010a93dSmrg # (2) the word "unknown" tends to confuse beginning users. 949f010a93dSmrg i*86 | x86_64) 950f010a93dSmrg cpu=$basic_machine 951f010a93dSmrg vendor=pc 95215fb4814Smrg ;; 953f010a93dSmrg # These rules are duplicated from below for sake of the special case above; 954f010a93dSmrg # i.e. things that normalized to x86 arches should also default to "pc" 955f010a93dSmrg pc98) 956f010a93dSmrg cpu=i386 957f010a93dSmrg vendor=pc 95815fb4814Smrg ;; 959f010a93dSmrg x64 | amd64) 960f010a93dSmrg cpu=x86_64 961f010a93dSmrg vendor=pc 96215fb4814Smrg ;; 963f010a93dSmrg # Recognize the basic CPU types without company name. 964f010a93dSmrg *) 965f010a93dSmrg cpu=$basic_machine 966f010a93dSmrg vendor=unknown 967cf503b78Smrg ;; 968f010a93dSmrgesac 969f010a93dSmrg 970f010a93dSmrgunset -v basic_machine 971f010a93dSmrg 972f010a93dSmrg# Decode basic machines in the full and proper CPU-Company form. 973f010a93dSmrgcase $cpu-$vendor in 974f010a93dSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975f010a93dSmrg # some cases the only manufacturer, in others, it is the most popular. 976f010a93dSmrg craynv-unknown) 977f010a93dSmrg vendor=cray 978f010a93dSmrg basic_os=${basic_os:-unicosmp} 97915fb4814Smrg ;; 980f010a93dSmrg c90-unknown | c90-cray) 981f010a93dSmrg vendor=cray 982f010a93dSmrg basic_os=${Basic_os:-unicos} 98315fb4814Smrg ;; 984f010a93dSmrg fx80-unknown) 985f010a93dSmrg vendor=alliant 98615fb4814Smrg ;; 987f010a93dSmrg romp-unknown) 988f010a93dSmrg vendor=ibm 98915fb4814Smrg ;; 990f010a93dSmrg mmix-unknown) 991f010a93dSmrg vendor=knuth 99215fb4814Smrg ;; 993f010a93dSmrg microblaze-unknown | microblazeel-unknown) 994f010a93dSmrg vendor=xilinx 99515fb4814Smrg ;; 996f010a93dSmrg rs6000-unknown) 997f010a93dSmrg vendor=ibm 99815fb4814Smrg ;; 999f010a93dSmrg vax-unknown) 1000f010a93dSmrg vendor=dec 100115fb4814Smrg ;; 1002f010a93dSmrg pdp11-unknown) 1003f010a93dSmrg vendor=dec 100415fb4814Smrg ;; 1005f010a93dSmrg we32k-unknown) 1006f010a93dSmrg vendor=att 100715fb4814Smrg ;; 1008f010a93dSmrg cydra-unknown) 1009f010a93dSmrg vendor=cydrome 101015fb4814Smrg ;; 1011f010a93dSmrg i370-ibm*) 1012f010a93dSmrg vendor=ibm 101315fb4814Smrg ;; 1014f010a93dSmrg orion-unknown) 1015f010a93dSmrg vendor=highlevel 101615fb4814Smrg ;; 1017f010a93dSmrg xps-unknown | xps100-unknown) 1018f010a93dSmrg cpu=xps100 1019f010a93dSmrg vendor=honeywell 102015fb4814Smrg ;; 1021f010a93dSmrg 1022f010a93dSmrg # Here we normalize CPU types with a missing or matching vendor 1023f010a93dSmrg dpx20-unknown | dpx20-bull) 1024f010a93dSmrg cpu=rs6000 1025f010a93dSmrg vendor=bull 1026f010a93dSmrg basic_os=${basic_os:-bosx} 102715fb4814Smrg ;; 1028f010a93dSmrg 1029f010a93dSmrg # Here we normalize CPU types irrespective of the vendor 1030f010a93dSmrg amd64-*) 1031f010a93dSmrg cpu=x86_64 103215fb4814Smrg ;; 1033f010a93dSmrg blackfin-*) 1034f010a93dSmrg cpu=bfin 1035f010a93dSmrg basic_os=linux 103615fb4814Smrg ;; 1037f010a93dSmrg c54x-*) 1038f010a93dSmrg cpu=tic54x 103915fb4814Smrg ;; 1040f010a93dSmrg c55x-*) 1041f010a93dSmrg cpu=tic55x 104215fb4814Smrg ;; 1043f010a93dSmrg c6x-*) 1044f010a93dSmrg cpu=tic6x 104515fb4814Smrg ;; 1046f010a93dSmrg e500v[12]-*) 1047f010a93dSmrg cpu=powerpc 1048f010a93dSmrg basic_os=${basic_os}"spe" 1049de78e416Smrg ;; 1050f010a93dSmrg mips3*-*) 1051f010a93dSmrg cpu=mips64 105215fb4814Smrg ;; 1053f010a93dSmrg ms1-*) 1054f010a93dSmrg cpu=mt 105515fb4814Smrg ;; 1056f010a93dSmrg m68knommu-*) 1057f010a93dSmrg cpu=m68k 1058f010a93dSmrg basic_os=linux 105915fb4814Smrg ;; 1060f010a93dSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1061f010a93dSmrg cpu=s12z 106215fb4814Smrg ;; 1063f010a93dSmrg openrisc-*) 1064f010a93dSmrg cpu=or32 106515fb4814Smrg ;; 1066f010a93dSmrg parisc-*) 1067f010a93dSmrg cpu=hppa 1068f010a93dSmrg basic_os=linux 106915fb4814Smrg ;; 1070f010a93dSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1071f010a93dSmrg cpu=i586 107215fb4814Smrg ;; 1073f010a93dSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 1074f010a93dSmrg cpu=i686 107515fb4814Smrg ;; 1076f010a93dSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1077f010a93dSmrg cpu=i686 107815fb4814Smrg ;; 1079f010a93dSmrg pentium4-*) 1080f010a93dSmrg cpu=i786 108115fb4814Smrg ;; 1082f010a93dSmrg pc98-*) 1083f010a93dSmrg cpu=i386 108415fb4814Smrg ;; 1085f010a93dSmrg ppc-* | ppcbe-*) 1086f010a93dSmrg cpu=powerpc 1087de78e416Smrg ;; 1088f010a93dSmrg ppcle-* | powerpclittle-*) 1089f010a93dSmrg cpu=powerpcle 109015fb4814Smrg ;; 1091f010a93dSmrg ppc64-*) 1092f010a93dSmrg cpu=powerpc64 1093cf503b78Smrg ;; 1094f010a93dSmrg ppc64le-* | powerpc64little-*) 1095f010a93dSmrg cpu=powerpc64le 109615fb4814Smrg ;; 1097f010a93dSmrg sb1-*) 1098f010a93dSmrg cpu=mipsisa64sb1 109915fb4814Smrg ;; 1100f010a93dSmrg sb1el-*) 1101f010a93dSmrg cpu=mipsisa64sb1el 1102b4d38c65Smrg ;; 1103f010a93dSmrg sh5e[lb]-*) 1104f010a93dSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 110515fb4814Smrg ;; 1106f010a93dSmrg spur-*) 1107f010a93dSmrg cpu=spur 110815fb4814Smrg ;; 1109f010a93dSmrg strongarm-* | thumb-*) 1110f010a93dSmrg cpu=arm 111115fb4814Smrg ;; 1112f010a93dSmrg tx39-*) 1113f010a93dSmrg cpu=mipstx39 111415fb4814Smrg ;; 1115f010a93dSmrg tx39el-*) 1116f010a93dSmrg cpu=mipstx39el 111715fb4814Smrg ;; 1118f010a93dSmrg x64-*) 1119f010a93dSmrg cpu=x86_64 1120de78e416Smrg ;; 1121f010a93dSmrg xscale-* | xscalee[bl]-*) 1122f010a93dSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112315fb4814Smrg ;; 1124f010a93dSmrg arm64-*) 1125f010a93dSmrg cpu=aarch64 112615fb4814Smrg ;; 1127f010a93dSmrg 1128f010a93dSmrg # Recognize the canonical CPU Types that limit and/or modify the 1129f010a93dSmrg # company names they are paired with. 1130f010a93dSmrg cr16-*) 1131f010a93dSmrg basic_os=${basic_os:-elf} 113215fb4814Smrg ;; 1133f010a93dSmrg crisv32-* | etraxfs*-*) 1134f010a93dSmrg cpu=crisv32 1135f010a93dSmrg vendor=axis 113615fb4814Smrg ;; 1137f010a93dSmrg cris-* | etrax*-*) 1138f010a93dSmrg cpu=cris 1139f010a93dSmrg vendor=axis 114015fb4814Smrg ;; 1141f010a93dSmrg crx-*) 1142f010a93dSmrg basic_os=${basic_os:-elf} 114315fb4814Smrg ;; 1144f010a93dSmrg neo-tandem) 1145f010a93dSmrg cpu=neo 1146f010a93dSmrg vendor=tandem 114715fb4814Smrg ;; 1148f010a93dSmrg nse-tandem) 1149f010a93dSmrg cpu=nse 1150f010a93dSmrg vendor=tandem 115115fb4814Smrg ;; 1152f010a93dSmrg nsr-tandem) 1153f010a93dSmrg cpu=nsr 1154f010a93dSmrg vendor=tandem 115515fb4814Smrg ;; 1156f010a93dSmrg nsv-tandem) 1157f010a93dSmrg cpu=nsv 1158f010a93dSmrg vendor=tandem 115915fb4814Smrg ;; 1160f010a93dSmrg nsx-tandem) 1161f010a93dSmrg cpu=nsx 1162f010a93dSmrg vendor=tandem 116315fb4814Smrg ;; 1164f010a93dSmrg mipsallegrexel-sony) 1165f010a93dSmrg cpu=mipsallegrexel 1166f010a93dSmrg vendor=sony 116715fb4814Smrg ;; 1168f010a93dSmrg tile*-*) 1169f010a93dSmrg basic_os=${basic_os:-linux-gnu} 117015fb4814Smrg ;; 1171f010a93dSmrg 117215fb4814Smrg *) 1173f010a93dSmrg # Recognize the canonical CPU types that are allowed with any 1174f010a93dSmrg # company name. 1175f010a93dSmrg case $cpu in 1176f010a93dSmrg 1750a | 580 \ 1177f010a93dSmrg | a29k \ 1178f010a93dSmrg | aarch64 | aarch64_be \ 1179f010a93dSmrg | abacus \ 1180f010a93dSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1181f010a93dSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1182f010a93dSmrg | alphapca5[67] | alpha64pca5[67] \ 1183f010a93dSmrg | am33_2.0 \ 1184f010a93dSmrg | amdgcn \ 1185f010a93dSmrg | arc | arceb | arc32 | arc64 \ 1186f010a93dSmrg | arm | arm[lb]e | arme[lb] | armv* \ 1187f010a93dSmrg | avr | avr32 \ 1188f010a93dSmrg | asmjs \ 1189f010a93dSmrg | ba \ 1190f010a93dSmrg | be32 | be64 \ 1191f010a93dSmrg | bfin | bpf | bs2000 \ 1192f010a93dSmrg | c[123]* | c30 | [cjt]90 | c4x \ 1193f010a93dSmrg | c8051 | clipper | craynv | csky | cydra \ 1194f010a93dSmrg | d10v | d30v | dlx | dsp16xx \ 1195f010a93dSmrg | e2k | elxsi | epiphany \ 1196f010a93dSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1197f010a93dSmrg | h8300 | h8500 \ 1198f010a93dSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1199f010a93dSmrg | hexagon \ 1200f010a93dSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1201f010a93dSmrg | ip2k | iq2000 \ 1202f010a93dSmrg | k1om \ 1203f010a93dSmrg | le32 | le64 \ 1204f010a93dSmrg | lm32 \ 1205f010a93dSmrg | loongarch32 | loongarch64 | loongarchx32 \ 1206f010a93dSmrg | m32c | m32r | m32rle \ 1207f010a93dSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1208f010a93dSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1209f010a93dSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1210f010a93dSmrg | microblaze | microblazeel \ 1211f010a93dSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1212f010a93dSmrg | mips16 \ 1213f010a93dSmrg | mips64 | mips64eb | mips64el \ 1214f010a93dSmrg | mips64octeon | mips64octeonel \ 1215f010a93dSmrg | mips64orion | mips64orionel \ 1216f010a93dSmrg | mips64r5900 | mips64r5900el \ 1217f010a93dSmrg | mips64vr | mips64vrel \ 1218f010a93dSmrg | mips64vr4100 | mips64vr4100el \ 1219f010a93dSmrg | mips64vr4300 | mips64vr4300el \ 1220f010a93dSmrg | mips64vr5000 | mips64vr5000el \ 1221f010a93dSmrg | mips64vr5900 | mips64vr5900el \ 1222f010a93dSmrg | mipsisa32 | mipsisa32el \ 1223f010a93dSmrg | mipsisa32r2 | mipsisa32r2el \ 1224f010a93dSmrg | mipsisa32r3 | mipsisa32r3el \ 1225f010a93dSmrg | mipsisa32r5 | mipsisa32r5el \ 1226f010a93dSmrg | mipsisa32r6 | mipsisa32r6el \ 1227f010a93dSmrg | mipsisa64 | mipsisa64el \ 1228f010a93dSmrg | mipsisa64r2 | mipsisa64r2el \ 1229f010a93dSmrg | mipsisa64r3 | mipsisa64r3el \ 1230f010a93dSmrg | mipsisa64r5 | mipsisa64r5el \ 1231f010a93dSmrg | mipsisa64r6 | mipsisa64r6el \ 1232f010a93dSmrg | mipsisa64sb1 | mipsisa64sb1el \ 1233f010a93dSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 1234f010a93dSmrg | mipsr5900 | mipsr5900el \ 1235f010a93dSmrg | mipstx39 | mipstx39el \ 1236f010a93dSmrg | mmix \ 1237f010a93dSmrg | mn10200 | mn10300 \ 1238f010a93dSmrg | moxie \ 1239f010a93dSmrg | mt \ 1240f010a93dSmrg | msp430 \ 1241f010a93dSmrg | nds32 | nds32le | nds32be \ 1242f010a93dSmrg | nfp \ 1243f010a93dSmrg | nios | nios2 | nios2eb | nios2el \ 1244f010a93dSmrg | none | np1 | ns16k | ns32k | nvptx \ 1245f010a93dSmrg | open8 \ 1246f010a93dSmrg | or1k* \ 1247f010a93dSmrg | or32 \ 1248f010a93dSmrg | orion \ 1249f010a93dSmrg | picochip \ 1250f010a93dSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1251f010a93dSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1252f010a93dSmrg | pru \ 1253f010a93dSmrg | pyramid \ 1254f010a93dSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1255f010a93dSmrg | rl78 | romp | rs6000 | rx \ 1256f010a93dSmrg | s390 | s390x \ 1257f010a93dSmrg | score \ 1258f010a93dSmrg | sh | shl \ 1259f010a93dSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1260f010a93dSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1261f010a93dSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1262f010a93dSmrg | sparclite \ 1263f010a93dSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1264f010a93dSmrg | spu \ 1265f010a93dSmrg | tahoe \ 1266f010a93dSmrg | thumbv7* \ 1267f010a93dSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1268f010a93dSmrg | tron \ 1269f010a93dSmrg | ubicom32 \ 1270f010a93dSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1271f010a93dSmrg | vax \ 1272f010a93dSmrg | visium \ 1273f010a93dSmrg | w65 \ 1274f010a93dSmrg | wasm32 | wasm64 \ 1275f010a93dSmrg | we32k \ 1276f010a93dSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1277f010a93dSmrg | xstormy16 | xtensa* \ 1278f010a93dSmrg | ymp \ 1279f010a93dSmrg | z8k | z80) 1280f010a93dSmrg ;; 1281f010a93dSmrg 1282f010a93dSmrg *) 1283f010a93dSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1284f010a93dSmrg exit 1 1285f010a93dSmrg ;; 1286f010a93dSmrg esac 128715fb4814Smrg ;; 128815fb4814Smrgesac 128915fb4814Smrg 129015fb4814Smrg# Here we canonicalize certain aliases for manufacturers. 1291f010a93dSmrgcase $vendor in 1292f010a93dSmrg digital*) 1293f010a93dSmrg vendor=dec 129415fb4814Smrg ;; 1295f010a93dSmrg commodore*) 1296f010a93dSmrg vendor=cbm 129715fb4814Smrg ;; 129815fb4814Smrg *) 129915fb4814Smrg ;; 130015fb4814Smrgesac 130115fb4814Smrg 130215fb4814Smrg# Decode manufacturer-specific aliases for certain operating systems. 130315fb4814Smrg 1304f010a93dSmrgif test x$basic_os != x 130515fb4814Smrgthen 1306f010a93dSmrg 1307f010a93dSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 1308f010a93dSmrg# set os. 1309f010a93dSmrgcase $basic_os in 1310f010a93dSmrg gnu/linux*) 1311f010a93dSmrg kernel=linux 1312f010a93dSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1313f010a93dSmrg ;; 1314f010a93dSmrg os2-emx) 1315f010a93dSmrg kernel=os2 1316f010a93dSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1317f010a93dSmrg ;; 1318f010a93dSmrg nto-qnx*) 1319f010a93dSmrg kernel=nto 1320f010a93dSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1321f010a93dSmrg ;; 1322f010a93dSmrg *-*) 1323f010a93dSmrg # shellcheck disable=SC2162 1324f010a93dSmrg saved_IFS=$IFS 1325f010a93dSmrg IFS="-" read kernel os <<EOF 1326f010a93dSmrg$basic_os 1327f010a93dSmrgEOF 1328f010a93dSmrg IFS=$saved_IFS 1329f010a93dSmrg ;; 1330f010a93dSmrg # Default OS when just kernel was specified 1331f010a93dSmrg nto*) 1332f010a93dSmrg kernel=nto 1333f010a93dSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1334f010a93dSmrg ;; 1335f010a93dSmrg linux*) 1336f010a93dSmrg kernel=linux 1337f010a93dSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1338f010a93dSmrg ;; 1339f010a93dSmrg *) 1340f010a93dSmrg kernel= 1341f010a93dSmrg os=$basic_os 1342f010a93dSmrg ;; 1343f010a93dSmrgesac 1344f010a93dSmrg 1345f010a93dSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1346f010a93dSmrg# etc.) 134715fb4814Smrgcase $os in 1348f010a93dSmrg # First match some system type aliases that might get confused 1349f010a93dSmrg # with valid system types. 1350f010a93dSmrg # solaris* is a basic system type, with this one exception. 1351f010a93dSmrg auroraux) 1352f010a93dSmrg os=auroraux 1353b4d38c65Smrg ;; 1354f010a93dSmrg bluegene*) 1355f010a93dSmrg os=cnk 135615fb4814Smrg ;; 1357f010a93dSmrg solaris1 | solaris1.*) 1358f010a93dSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 135915fb4814Smrg ;; 1360f010a93dSmrg solaris) 1361f010a93dSmrg os=solaris2 136215fb4814Smrg ;; 1363f010a93dSmrg unixware*) 1364f010a93dSmrg os=sysv4.2uw 136515fb4814Smrg ;; 1366f010a93dSmrg # es1800 is here to avoid being matched by es* (a different OS) 1367f010a93dSmrg es1800*) 1368f010a93dSmrg os=ose 136915fb4814Smrg ;; 1370f010a93dSmrg # Some version numbers need modification 1371f010a93dSmrg chorusos*) 1372f010a93dSmrg os=chorusos 137315fb4814Smrg ;; 1374f010a93dSmrg isc) 1375f010a93dSmrg os=isc2.2 137615fb4814Smrg ;; 1377f010a93dSmrg sco6) 1378f010a93dSmrg os=sco5v6 137915fb4814Smrg ;; 1380f010a93dSmrg sco5) 1381f010a93dSmrg os=sco3.2v5 138215fb4814Smrg ;; 1383f010a93dSmrg sco4) 1384f010a93dSmrg os=sco3.2v4 138515fb4814Smrg ;; 1386f010a93dSmrg sco3.2.[4-9]*) 1387f010a93dSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1388de78e416Smrg ;; 1389f010a93dSmrg sco*v* | scout) 1390f010a93dSmrg # Don't match below 139115fb4814Smrg ;; 1392f010a93dSmrg sco*) 1393f010a93dSmrg os=sco3.2v2 139415fb4814Smrg ;; 1395f010a93dSmrg psos*) 1396f010a93dSmrg os=psos 139715fb4814Smrg ;; 1398f010a93dSmrg qnx*) 1399f010a93dSmrg os=qnx 140015fb4814Smrg ;; 1401f010a93dSmrg hiux*) 1402f010a93dSmrg os=hiuxwe2 1403de78e416Smrg ;; 1404f010a93dSmrg lynx*178) 1405f010a93dSmrg os=lynxos178 140615fb4814Smrg ;; 1407f010a93dSmrg lynx*5) 1408f010a93dSmrg os=lynxos5 140915fb4814Smrg ;; 1410f010a93dSmrg lynxos*) 1411f010a93dSmrg # don't get caught up in next wildcard 141215fb4814Smrg ;; 1413f010a93dSmrg lynx*) 1414f010a93dSmrg os=lynxos 141515fb4814Smrg ;; 1416f010a93dSmrg mac[0-9]*) 1417f010a93dSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 141815fb4814Smrg ;; 1419f010a93dSmrg opened*) 1420f010a93dSmrg os=openedition 142115fb4814Smrg ;; 1422f010a93dSmrg os400*) 1423f010a93dSmrg os=os400 142415fb4814Smrg ;; 1425f010a93dSmrg sunos5*) 1426f010a93dSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1427de78e416Smrg ;; 1428f010a93dSmrg sunos6*) 1429f010a93dSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 143015fb4814Smrg ;; 1431f010a93dSmrg wince*) 1432f010a93dSmrg os=wince 143315fb4814Smrg ;; 1434f010a93dSmrg utek*) 1435f010a93dSmrg os=bsd 143615fb4814Smrg ;; 1437f010a93dSmrg dynix*) 1438f010a93dSmrg os=bsd 143915fb4814Smrg ;; 1440f010a93dSmrg acis*) 1441f010a93dSmrg os=aos 144215fb4814Smrg ;; 1443f010a93dSmrg atheos*) 1444f010a93dSmrg os=atheos 144515fb4814Smrg ;; 1446f010a93dSmrg syllable*) 1447f010a93dSmrg os=syllable 144815fb4814Smrg ;; 1449f010a93dSmrg 386bsd) 1450f010a93dSmrg os=bsd 1451de78e416Smrg ;; 1452f010a93dSmrg ctix* | uts*) 1453f010a93dSmrg os=sysv 145415fb4814Smrg ;; 1455f010a93dSmrg nova*) 1456f010a93dSmrg os=rtmk-nova 145715fb4814Smrg ;; 1458f010a93dSmrg ns2) 1459f010a93dSmrg os=nextstep2 146015fb4814Smrg ;; 1461f010a93dSmrg # Preserve the version number of sinix5. 1462f010a93dSmrg sinix5.*) 1463f010a93dSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 146415fb4814Smrg ;; 1465f010a93dSmrg sinix*) 1466f010a93dSmrg os=sysv4 146715fb4814Smrg ;; 1468f010a93dSmrg tpf*) 1469f010a93dSmrg os=tpf 147015fb4814Smrg ;; 1471f010a93dSmrg triton*) 1472f010a93dSmrg os=sysv3 147315fb4814Smrg ;; 1474f010a93dSmrg oss*) 1475f010a93dSmrg os=sysv3 147615fb4814Smrg ;; 1477f010a93dSmrg svr4*) 1478f010a93dSmrg os=sysv4 147915fb4814Smrg ;; 1480f010a93dSmrg svr3) 1481f010a93dSmrg os=sysv3 148215fb4814Smrg ;; 1483f010a93dSmrg sysvr4) 1484f010a93dSmrg os=sysv4 148515fb4814Smrg ;; 1486f010a93dSmrg ose*) 1487f010a93dSmrg os=ose 1488de78e416Smrg ;; 1489f010a93dSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1490f010a93dSmrg os=mint 1491b4d38c65Smrg ;; 1492f010a93dSmrg dicos*) 1493f010a93dSmrg os=dicos 1494cf503b78Smrg ;; 1495f010a93dSmrg pikeos*) 1496f010a93dSmrg # Until real need of OS specific support for 1497f010a93dSmrg # particular features comes up, bare metal 1498f010a93dSmrg # configurations are quite functional. 1499f010a93dSmrg case $cpu in 1500f010a93dSmrg arm*) 1501f010a93dSmrg os=eabi 1502f010a93dSmrg ;; 1503f010a93dSmrg *) 1504f010a93dSmrg os=elf 1505f010a93dSmrg ;; 1506f010a93dSmrg esac 150715fb4814Smrg ;; 150815fb4814Smrg *) 1509f010a93dSmrg # No normalization, but not necessarily accepted, that comes below. 151015fb4814Smrg ;; 151115fb4814Smrgesac 1512f010a93dSmrg 151315fb4814Smrgelse 151415fb4814Smrg 151515fb4814Smrg# Here we handle the default operating systems that come with various machines. 151615fb4814Smrg# The value should be what the vendor currently ships out the door with their 151715fb4814Smrg# machine or put another way, the most popular os provided with the machine. 151815fb4814Smrg 151915fb4814Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 152015fb4814Smrg# "-sun"), then you have to tell the case statement up towards the top 152115fb4814Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 152215fb4814Smrg# will signal an error saying that MANUFACTURER isn't an operating 152315fb4814Smrg# system, and we'll never get to this point. 152415fb4814Smrg 1525f010a93dSmrgkernel= 1526f010a93dSmrgcase $cpu-$vendor in 1527cf503b78Smrg score-*) 1528f010a93dSmrg os=elf 1529de78e416Smrg ;; 1530cf503b78Smrg spu-*) 1531f010a93dSmrg os=elf 1532de78e416Smrg ;; 153315fb4814Smrg *-acorn) 1534f010a93dSmrg os=riscix1.2 153515fb4814Smrg ;; 153615fb4814Smrg arm*-rebel) 1537f010a93dSmrg kernel=linux 1538f010a93dSmrg os=gnu 153915fb4814Smrg ;; 154015fb4814Smrg arm*-semi) 1541f010a93dSmrg os=aout 154215fb4814Smrg ;; 1543cf503b78Smrg c4x-* | tic4x-*) 1544f010a93dSmrg os=coff 1545f010a93dSmrg ;; 1546f010a93dSmrg c8051-*) 1547f010a93dSmrg os=elf 1548f010a93dSmrg ;; 1549f010a93dSmrg clipper-intergraph) 1550f010a93dSmrg os=clix 1551cf503b78Smrg ;; 1552cf503b78Smrg hexagon-*) 1553f010a93dSmrg os=elf 1554cf503b78Smrg ;; 1555cf503b78Smrg tic54x-*) 1556f010a93dSmrg os=coff 1557cf503b78Smrg ;; 1558cf503b78Smrg tic55x-*) 1559f010a93dSmrg os=coff 1560cf503b78Smrg ;; 1561cf503b78Smrg tic6x-*) 1562f010a93dSmrg os=coff 156315fb4814Smrg ;; 156415fb4814Smrg # This must come before the *-dec entry. 156515fb4814Smrg pdp10-*) 1566f010a93dSmrg os=tops20 156715fb4814Smrg ;; 156815fb4814Smrg pdp11-*) 1569f010a93dSmrg os=none 157015fb4814Smrg ;; 157115fb4814Smrg *-dec | vax-*) 1572f010a93dSmrg os=ultrix4.2 157315fb4814Smrg ;; 157415fb4814Smrg m68*-apollo) 1575f010a93dSmrg os=domain 157615fb4814Smrg ;; 157715fb4814Smrg i386-sun) 1578f010a93dSmrg os=sunos4.0.2 157915fb4814Smrg ;; 158015fb4814Smrg m68000-sun) 1581f010a93dSmrg os=sunos3 158215fb4814Smrg ;; 158315fb4814Smrg m68*-cisco) 1584f010a93dSmrg os=aout 158515fb4814Smrg ;; 1586cf503b78Smrg mep-*) 1587f010a93dSmrg os=elf 1588de78e416Smrg ;; 158915fb4814Smrg mips*-cisco) 1590f010a93dSmrg os=elf 159115fb4814Smrg ;; 159215fb4814Smrg mips*-*) 1593f010a93dSmrg os=elf 1594cf503b78Smrg ;; 159515fb4814Smrg or32-*) 1596f010a93dSmrg os=coff 159715fb4814Smrg ;; 159815fb4814Smrg *-tti) # must be before sparc entry or we get the wrong os. 1599f010a93dSmrg os=sysv3 160015fb4814Smrg ;; 160115fb4814Smrg sparc-* | *-sun) 1602f010a93dSmrg os=sunos4.1.1 160315fb4814Smrg ;; 1604f010a93dSmrg pru-*) 1605f010a93dSmrg os=elf 160615fb4814Smrg ;; 1607f010a93dSmrg *-be) 1608f010a93dSmrg os=beos 1609de78e416Smrg ;; 161015fb4814Smrg *-ibm) 1611f010a93dSmrg os=aix 161215fb4814Smrg ;; 1613cf503b78Smrg *-knuth) 1614f010a93dSmrg os=mmixware 1615de78e416Smrg ;; 161615fb4814Smrg *-wec) 1617f010a93dSmrg os=proelf 161815fb4814Smrg ;; 161915fb4814Smrg *-winbond) 1620f010a93dSmrg os=proelf 162115fb4814Smrg ;; 162215fb4814Smrg *-oki) 1623f010a93dSmrg os=proelf 162415fb4814Smrg ;; 162515fb4814Smrg *-hp) 1626f010a93dSmrg os=hpux 162715fb4814Smrg ;; 162815fb4814Smrg *-hitachi) 1629f010a93dSmrg os=hiux 163015fb4814Smrg ;; 163115fb4814Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1632f010a93dSmrg os=sysv 163315fb4814Smrg ;; 163415fb4814Smrg *-cbm) 1635f010a93dSmrg os=amigaos 163615fb4814Smrg ;; 163715fb4814Smrg *-dg) 1638f010a93dSmrg os=dgux 163915fb4814Smrg ;; 164015fb4814Smrg *-dolphin) 1641f010a93dSmrg os=sysv3 164215fb4814Smrg ;; 164315fb4814Smrg m68k-ccur) 1644f010a93dSmrg os=rtu 164515fb4814Smrg ;; 164615fb4814Smrg m88k-omron*) 1647f010a93dSmrg os=luna 164815fb4814Smrg ;; 1649f010a93dSmrg *-next) 1650f010a93dSmrg os=nextstep 165115fb4814Smrg ;; 165215fb4814Smrg *-sequent) 1653f010a93dSmrg os=ptx 165415fb4814Smrg ;; 165515fb4814Smrg *-crds) 1656f010a93dSmrg os=unos 165715fb4814Smrg ;; 165815fb4814Smrg *-ns) 1659f010a93dSmrg os=genix 166015fb4814Smrg ;; 166115fb4814Smrg i370-*) 1662f010a93dSmrg os=mvs 166315fb4814Smrg ;; 166415fb4814Smrg *-gould) 1665f010a93dSmrg os=sysv 166615fb4814Smrg ;; 166715fb4814Smrg *-highlevel) 1668f010a93dSmrg os=bsd 166915fb4814Smrg ;; 167015fb4814Smrg *-encore) 1671f010a93dSmrg os=bsd 167215fb4814Smrg ;; 167315fb4814Smrg *-sgi) 1674f010a93dSmrg os=irix 167515fb4814Smrg ;; 167615fb4814Smrg *-siemens) 1677f010a93dSmrg os=sysv4 167815fb4814Smrg ;; 167915fb4814Smrg *-masscomp) 1680f010a93dSmrg os=rtu 168115fb4814Smrg ;; 168215fb4814Smrg f30[01]-fujitsu | f700-fujitsu) 1683f010a93dSmrg os=uxpv 168415fb4814Smrg ;; 168515fb4814Smrg *-rom68k) 1686f010a93dSmrg os=coff 168715fb4814Smrg ;; 168815fb4814Smrg *-*bug) 1689f010a93dSmrg os=coff 169015fb4814Smrg ;; 169115fb4814Smrg *-apple) 1692f010a93dSmrg os=macos 169315fb4814Smrg ;; 169415fb4814Smrg *-atari*) 1695f010a93dSmrg os=mint 1696f010a93dSmrg ;; 1697f010a93dSmrg *-wrs) 1698f010a93dSmrg os=vxworks 169915fb4814Smrg ;; 170015fb4814Smrg *) 1701f010a93dSmrg os=none 170215fb4814Smrg ;; 170315fb4814Smrgesac 1704f010a93dSmrg 170515fb4814Smrgfi 170615fb4814Smrg 1707f010a93dSmrg# Now, validate our (potentially fixed-up) OS. 1708f010a93dSmrgcase $os in 1709f010a93dSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1710f010a93dSmrg musl* | newlib* | relibc* | uclibc*) 1711f010a93dSmrg ;; 1712f010a93dSmrg # Likewise for "kernel-abi" 1713f010a93dSmrg eabi* | gnueabi*) 1714f010a93dSmrg ;; 1715f010a93dSmrg # VxWorks passes extra cpu info in the 4th filed. 1716f010a93dSmrg simlinux | simwindows | spe) 1717f010a93dSmrg ;; 1718f010a93dSmrg # Now accept the basic system types. 1719f010a93dSmrg # The portable systems comes first. 1720f010a93dSmrg # Each alternative MUST end in a * to match a version number. 1721f010a93dSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1722f010a93dSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1723f010a93dSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1724f010a93dSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1725f010a93dSmrg | hiux* | abug | nacl* | netware* | windows* \ 1726f010a93dSmrg | os9* | macos* | osx* | ios* \ 1727f010a93dSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1728f010a93dSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1729f010a93dSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1730f010a93dSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1731f010a93dSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1732f010a93dSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1733f010a93dSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1734f010a93dSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1735f010a93dSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1736f010a93dSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1737f010a93dSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1738f010a93dSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1739f010a93dSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1740f010a93dSmrg | midipix* | mingw32* | mingw64* | mint* \ 1741f010a93dSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1742f010a93dSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1743f010a93dSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1744f010a93dSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1745f010a93dSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1746f010a93dSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1747f010a93dSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1748f010a93dSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1749f010a93dSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1750f010a93dSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1751f010a93dSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 1752f010a93dSmrg ;; 1753f010a93dSmrg # This one is extra strict with allowed versions 1754f010a93dSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1755f010a93dSmrg # Don't forget version if it is 3.2v4 or newer. 1756f010a93dSmrg ;; 1757f010a93dSmrg none) 1758f010a93dSmrg ;; 1759f010a93dSmrg *) 1760f010a93dSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1761f010a93dSmrg exit 1 1762f010a93dSmrg ;; 1763f010a93dSmrgesac 1764f010a93dSmrg 1765f010a93dSmrg# As a final step for OS-related things, validate the OS-kernel combination 1766f010a93dSmrg# (given a valid OS), if there is a kernel. 1767f010a93dSmrgcase $kernel-$os in 1768f010a93dSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1769f010a93dSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 1770f010a93dSmrg ;; 1771f010a93dSmrg uclinux-uclibc* ) 1772f010a93dSmrg ;; 1773f010a93dSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 1774f010a93dSmrg # These are just libc implementations, not actual OSes, and thus 1775f010a93dSmrg # require a kernel. 1776f010a93dSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1777f010a93dSmrg exit 1 1778f010a93dSmrg ;; 1779f010a93dSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1780f010a93dSmrg ;; 1781f010a93dSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1782f010a93dSmrg ;; 1783f010a93dSmrg nto-qnx*) 1784f010a93dSmrg ;; 1785f010a93dSmrg os2-emx) 1786f010a93dSmrg ;; 1787f010a93dSmrg *-eabi* | *-gnueabi*) 1788f010a93dSmrg ;; 1789f010a93dSmrg -*) 1790f010a93dSmrg # Blank kernel with real OS is always fine. 1791f010a93dSmrg ;; 1792f010a93dSmrg *-*) 1793f010a93dSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1794f010a93dSmrg exit 1 1795f010a93dSmrg ;; 1796f010a93dSmrgesac 1797f010a93dSmrg 179815fb4814Smrg# Here we handle the case where we know the os, and the CPU type, but not the 179915fb4814Smrg# manufacturer. We pick the logical manufacturer. 1800f010a93dSmrgcase $vendor in 1801f010a93dSmrg unknown) 1802f010a93dSmrg case $cpu-$os in 1803f010a93dSmrg *-riscix*) 180415fb4814Smrg vendor=acorn 180515fb4814Smrg ;; 1806f010a93dSmrg *-sunos*) 180715fb4814Smrg vendor=sun 180815fb4814Smrg ;; 1809f010a93dSmrg *-cnk* | *-aix*) 181015fb4814Smrg vendor=ibm 181115fb4814Smrg ;; 1812f010a93dSmrg *-beos*) 181315fb4814Smrg vendor=be 181415fb4814Smrg ;; 1815f010a93dSmrg *-hpux*) 181615fb4814Smrg vendor=hp 181715fb4814Smrg ;; 1818f010a93dSmrg *-mpeix*) 181915fb4814Smrg vendor=hp 182015fb4814Smrg ;; 1821f010a93dSmrg *-hiux*) 182215fb4814Smrg vendor=hitachi 182315fb4814Smrg ;; 1824f010a93dSmrg *-unos*) 182515fb4814Smrg vendor=crds 182615fb4814Smrg ;; 1827f010a93dSmrg *-dgux*) 182815fb4814Smrg vendor=dg 182915fb4814Smrg ;; 1830f010a93dSmrg *-luna*) 183115fb4814Smrg vendor=omron 183215fb4814Smrg ;; 1833f010a93dSmrg *-genix*) 183415fb4814Smrg vendor=ns 183515fb4814Smrg ;; 1836f010a93dSmrg *-clix*) 1837f010a93dSmrg vendor=intergraph 1838f010a93dSmrg ;; 1839f010a93dSmrg *-mvs* | *-opened*) 1840f010a93dSmrg vendor=ibm 1841f010a93dSmrg ;; 1842f010a93dSmrg *-os400*) 184315fb4814Smrg vendor=ibm 184415fb4814Smrg ;; 1845f010a93dSmrg s390-* | s390x-*) 1846de78e416Smrg vendor=ibm 1847de78e416Smrg ;; 1848f010a93dSmrg *-ptx*) 184915fb4814Smrg vendor=sequent 185015fb4814Smrg ;; 1851f010a93dSmrg *-tpf*) 1852de78e416Smrg vendor=ibm 1853de78e416Smrg ;; 1854f010a93dSmrg *-vxsim* | *-vxworks* | *-windiss*) 185515fb4814Smrg vendor=wrs 185615fb4814Smrg ;; 1857f010a93dSmrg *-aux*) 185815fb4814Smrg vendor=apple 185915fb4814Smrg ;; 1860f010a93dSmrg *-hms*) 186115fb4814Smrg vendor=hitachi 186215fb4814Smrg ;; 1863f010a93dSmrg *-mpw* | *-macos*) 186415fb4814Smrg vendor=apple 186515fb4814Smrg ;; 1866f010a93dSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 186715fb4814Smrg vendor=atari 186815fb4814Smrg ;; 1869f010a93dSmrg *-vos*) 187015fb4814Smrg vendor=stratus 187115fb4814Smrg ;; 187215fb4814Smrg esac 187315fb4814Smrg ;; 187415fb4814Smrgesac 187515fb4814Smrg 1876f010a93dSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1877de78e416Smrgexit 187815fb4814Smrg 187915fb4814Smrg# Local variables: 1880f010a93dSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 188115fb4814Smrg# time-stamp-start: "timestamp='" 188215fb4814Smrg# time-stamp-format: "%:y-%02m-%02d" 188315fb4814Smrg# time-stamp-end: "'" 188415fb4814Smrg# End: 1885