19bc46bd4Smrg#! /bin/sh 29bc46bd4Smrg# Configuration validation subroutine script. 3f403ce92Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 49bc46bd4Smrg 5f403ce92Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 69bc46bd4Smrg 7f403ce92Smrgtimestamp='2023-01-21' 8f403ce92Smrg 9f403ce92Smrg# This file is free software; you can redistribute it and/or modify it 10f403ce92Smrg# under the terms of the GNU General Public License as published by 11f403ce92Smrg# the Free Software Foundation, either version 3 of the License, or 129bc46bd4Smrg# (at your option) any later version. 139bc46bd4Smrg# 14f403ce92Smrg# This program is distributed in the hope that it will be useful, but 15f403ce92Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16f403ce92Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17f403ce92Smrg# General Public License for more details. 189bc46bd4Smrg# 199bc46bd4Smrg# You should have received a copy of the GNU General Public License 20f403ce92Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 219bc46bd4Smrg# 229bc46bd4Smrg# As a special exception to the GNU General Public License, if you 239bc46bd4Smrg# distribute this file as part of a program that contains a 249bc46bd4Smrg# configuration script generated by Autoconf, you may include it under 25f403ce92Smrg# the same distribution terms that you use for the rest of that 26f403ce92Smrg# program. This Exception is an additional permission under section 7 27f403ce92Smrg# of the GNU General Public License, version 3 ("GPLv3"). 289bc46bd4Smrg 299bc46bd4Smrg 30f403ce92Smrg# Please send patches to <config-patches@gnu.org>. 319bc46bd4Smrg# 329bc46bd4Smrg# Configuration subroutine to validate and canonicalize a configuration type. 339bc46bd4Smrg# Supply the specified configuration type as an argument. 349bc46bd4Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 359bc46bd4Smrg# Otherwise, we print the canonical config type on stdout and succeed. 369bc46bd4Smrg 37c41d98afSmrg# You can get the latest version of this script from: 38f403ce92Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39c41d98afSmrg 409bc46bd4Smrg# This file is supposed to be the same for all GNU packages 419bc46bd4Smrg# and recognize all the CPU types, system types and aliases 429bc46bd4Smrg# that are meaningful with *any* GNU software. 439bc46bd4Smrg# Each package is responsible for reporting which valid configurations 449bc46bd4Smrg# it does not support. The user should be able to distinguish 459bc46bd4Smrg# a failure to support a valid configuration from a meaningless 469bc46bd4Smrg# configuration. 479bc46bd4Smrg 489bc46bd4Smrg# The goal of this file is to map all the various variations of a given 499bc46bd4Smrg# machine specification into a single specification in the form: 509bc46bd4Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 519bc46bd4Smrg# or in some cases, the newer four-part form: 529bc46bd4Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 539bc46bd4Smrg# It is wrong to echo any other type of specification. 549bc46bd4Smrg 55f403ce92Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 56f403ce92Smrg# about features and limitations of the classic Bourne shell that were 57f403ce92Smrg# superseded or lifted in POSIX. However, this script identifies a wide 58f403ce92Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59f403ce92Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60f403ce92Smrg# have a pre-POSIX /bin/sh. 61f403ce92Smrg 629bc46bd4Smrgme=`echo "$0" | sed -e 's,.*/,,'` 639bc46bd4Smrg 649bc46bd4Smrgusage="\ 65f403ce92SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 669bc46bd4Smrg 679bc46bd4SmrgCanonicalize a configuration name. 689bc46bd4Smrg 69f403ce92SmrgOptions: 709bc46bd4Smrg -h, --help print this help, then exit 719bc46bd4Smrg -t, --time-stamp print date of last modification, then exit 729bc46bd4Smrg -v, --version print version number, then exit 739bc46bd4Smrg 749bc46bd4SmrgReport bugs and patches to <config-patches@gnu.org>." 759bc46bd4Smrg 769bc46bd4Smrgversion="\ 779bc46bd4SmrgGNU config.sub ($timestamp) 789bc46bd4Smrg 79f403ce92SmrgCopyright 1992-2023 Free Software Foundation, Inc. 809bc46bd4Smrg 819bc46bd4SmrgThis is free software; see the source for copying conditions. There is NO 829bc46bd4Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 839bc46bd4Smrg 849bc46bd4Smrghelp=" 859bc46bd4SmrgTry \`$me --help' for more information." 869bc46bd4Smrg 879bc46bd4Smrg# Parse command line 889bc46bd4Smrgwhile test $# -gt 0 ; do 899bc46bd4Smrg case $1 in 909bc46bd4Smrg --time-stamp | --time* | -t ) 919bc46bd4Smrg echo "$timestamp" ; exit ;; 929bc46bd4Smrg --version | -v ) 939bc46bd4Smrg echo "$version" ; exit ;; 949bc46bd4Smrg --help | --h* | -h ) 959bc46bd4Smrg echo "$usage"; exit ;; 969bc46bd4Smrg -- ) # Stop option processing 979bc46bd4Smrg shift; break ;; 989bc46bd4Smrg - ) # Use stdin as input. 999bc46bd4Smrg break ;; 1009bc46bd4Smrg -* ) 101f403ce92Smrg echo "$me: invalid option $1$help" >&2 1029bc46bd4Smrg exit 1 ;; 1039bc46bd4Smrg 1049bc46bd4Smrg *local*) 1059bc46bd4Smrg # First pass through any local machine types. 106f403ce92Smrg echo "$1" 1079bc46bd4Smrg exit ;; 1089bc46bd4Smrg 1099bc46bd4Smrg * ) 1109bc46bd4Smrg break ;; 1119bc46bd4Smrg esac 1129bc46bd4Smrgdone 1139bc46bd4Smrg 1149bc46bd4Smrgcase $# in 1159bc46bd4Smrg 0) echo "$me: missing argument$help" >&2 1169bc46bd4Smrg exit 1;; 1179bc46bd4Smrg 1) ;; 1189bc46bd4Smrg *) echo "$me: too many arguments$help" >&2 1199bc46bd4Smrg exit 1;; 1209bc46bd4Smrgesac 1219bc46bd4Smrg 122f403ce92Smrg# Split fields of configuration type 123f403ce92Smrg# shellcheck disable=SC2162 124f403ce92Smrgsaved_IFS=$IFS 125f403ce92SmrgIFS="-" read field1 field2 field3 field4 <<EOF 126f403ce92Smrg$1 127f403ce92SmrgEOF 128f403ce92SmrgIFS=$saved_IFS 1299bc46bd4Smrg 130f403ce92Smrg# Separate into logical components for further validation 131f403ce92Smrgcase $1 in 132f403ce92Smrg *-*-*-*-*) 133f403ce92Smrg echo Invalid configuration \`"$1"\': more than four components >&2 134f403ce92Smrg exit 1 1359bc46bd4Smrg ;; 136f403ce92Smrg *-*-*-*) 137f403ce92Smrg basic_machine=$field1-$field2 138f403ce92Smrg basic_os=$field3-$field4 1399bc46bd4Smrg ;; 140f403ce92Smrg *-*-*) 141f403ce92Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142f403ce92Smrg # parts 143f403ce92Smrg maybe_os=$field2-$field3 144f403ce92Smrg case $maybe_os in 145f403ce92Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 146f403ce92Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147f403ce92Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148f403ce92Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 149f403ce92Smrg basic_machine=$field1 150f403ce92Smrg basic_os=$maybe_os 151f403ce92Smrg ;; 152f403ce92Smrg android-linux) 153f403ce92Smrg basic_machine=$field1-unknown 154f403ce92Smrg basic_os=linux-android 155f403ce92Smrg ;; 156f403ce92Smrg *) 157f403ce92Smrg basic_machine=$field1-$field2 158f403ce92Smrg basic_os=$field3 159f403ce92Smrg ;; 160f403ce92Smrg esac 1619bc46bd4Smrg ;; 162f403ce92Smrg *-*) 163f403ce92Smrg # A lone config we happen to match not fitting any pattern 164f403ce92Smrg case $field1-$field2 in 165f403ce92Smrg decstation-3100) 166f403ce92Smrg basic_machine=mips-dec 167f403ce92Smrg basic_os= 168f403ce92Smrg ;; 169f403ce92Smrg *-*) 170f403ce92Smrg # Second component is usually, but not always the OS 171f403ce92Smrg case $field2 in 172f403ce92Smrg # Prevent following clause from handling this valid os 173f403ce92Smrg sun*os*) 174f403ce92Smrg basic_machine=$field1 175f403ce92Smrg basic_os=$field2 176f403ce92Smrg ;; 177f403ce92Smrg zephyr*) 178f403ce92Smrg basic_machine=$field1-unknown 179f403ce92Smrg basic_os=$field2 180f403ce92Smrg ;; 181f403ce92Smrg # Manufacturers 182f403ce92Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183f403ce92Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184f403ce92Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185f403ce92Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186f403ce92Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187f403ce92Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188f403ce92Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189f403ce92Smrg | microblaze* | sim | cisco \ 190f403ce92Smrg | oki | wec | wrs | winbond) 191f403ce92Smrg basic_machine=$field1-$field2 192f403ce92Smrg basic_os= 193f403ce92Smrg ;; 194f403ce92Smrg *) 195f403ce92Smrg basic_machine=$field1 196f403ce92Smrg basic_os=$field2 197f403ce92Smrg ;; 198f403ce92Smrg esac 199f403ce92Smrg ;; 200f403ce92Smrg esac 2019bc46bd4Smrg ;; 202f403ce92Smrg *) 203f403ce92Smrg # Convert single-component short-hands not valid as part of 204f403ce92Smrg # multi-component configurations. 205f403ce92Smrg case $field1 in 206f403ce92Smrg 386bsd) 207f403ce92Smrg basic_machine=i386-pc 208f403ce92Smrg basic_os=bsd 209f403ce92Smrg ;; 210f403ce92Smrg a29khif) 211f403ce92Smrg basic_machine=a29k-amd 212f403ce92Smrg basic_os=udi 213f403ce92Smrg ;; 214f403ce92Smrg adobe68k) 215f403ce92Smrg basic_machine=m68010-adobe 216f403ce92Smrg basic_os=scout 217f403ce92Smrg ;; 218f403ce92Smrg alliant) 219f403ce92Smrg basic_machine=fx80-alliant 220f403ce92Smrg basic_os= 221f403ce92Smrg ;; 222f403ce92Smrg altos | altos3068) 223f403ce92Smrg basic_machine=m68k-altos 224f403ce92Smrg basic_os= 225f403ce92Smrg ;; 226f403ce92Smrg am29k) 227f403ce92Smrg basic_machine=a29k-none 228f403ce92Smrg basic_os=bsd 229f403ce92Smrg ;; 230f403ce92Smrg amdahl) 231f403ce92Smrg basic_machine=580-amdahl 232f403ce92Smrg basic_os=sysv 233f403ce92Smrg ;; 234f403ce92Smrg amiga) 235f403ce92Smrg basic_machine=m68k-unknown 236f403ce92Smrg basic_os= 237f403ce92Smrg ;; 238f403ce92Smrg amigaos | amigados) 239f403ce92Smrg basic_machine=m68k-unknown 240f403ce92Smrg basic_os=amigaos 241f403ce92Smrg ;; 242f403ce92Smrg amigaunix | amix) 243f403ce92Smrg basic_machine=m68k-unknown 244f403ce92Smrg basic_os=sysv4 245f403ce92Smrg ;; 246f403ce92Smrg apollo68) 247f403ce92Smrg basic_machine=m68k-apollo 248f403ce92Smrg basic_os=sysv 249f403ce92Smrg ;; 250f403ce92Smrg apollo68bsd) 251f403ce92Smrg basic_machine=m68k-apollo 252f403ce92Smrg basic_os=bsd 253f403ce92Smrg ;; 254f403ce92Smrg aros) 255f403ce92Smrg basic_machine=i386-pc 256f403ce92Smrg basic_os=aros 257f403ce92Smrg ;; 258f403ce92Smrg aux) 259f403ce92Smrg basic_machine=m68k-apple 260f403ce92Smrg basic_os=aux 261f403ce92Smrg ;; 262f403ce92Smrg balance) 263f403ce92Smrg basic_machine=ns32k-sequent 264f403ce92Smrg basic_os=dynix 265f403ce92Smrg ;; 266f403ce92Smrg blackfin) 267f403ce92Smrg basic_machine=bfin-unknown 268f403ce92Smrg basic_os=linux 269f403ce92Smrg ;; 270f403ce92Smrg cegcc) 271f403ce92Smrg basic_machine=arm-unknown 272f403ce92Smrg basic_os=cegcc 273f403ce92Smrg ;; 274f403ce92Smrg convex-c1) 275f403ce92Smrg basic_machine=c1-convex 276f403ce92Smrg basic_os=bsd 277f403ce92Smrg ;; 278f403ce92Smrg convex-c2) 279f403ce92Smrg basic_machine=c2-convex 280f403ce92Smrg basic_os=bsd 281f403ce92Smrg ;; 282f403ce92Smrg convex-c32) 283f403ce92Smrg basic_machine=c32-convex 284f403ce92Smrg basic_os=bsd 285f403ce92Smrg ;; 286f403ce92Smrg convex-c34) 287f403ce92Smrg basic_machine=c34-convex 288f403ce92Smrg basic_os=bsd 289f403ce92Smrg ;; 290f403ce92Smrg convex-c38) 291f403ce92Smrg basic_machine=c38-convex 292f403ce92Smrg basic_os=bsd 293f403ce92Smrg ;; 294f403ce92Smrg cray) 295f403ce92Smrg basic_machine=j90-cray 296f403ce92Smrg basic_os=unicos 297f403ce92Smrg ;; 298f403ce92Smrg crds | unos) 299f403ce92Smrg basic_machine=m68k-crds 300f403ce92Smrg basic_os= 301f403ce92Smrg ;; 302f403ce92Smrg da30) 303f403ce92Smrg basic_machine=m68k-da30 304f403ce92Smrg basic_os= 305f403ce92Smrg ;; 306f403ce92Smrg decstation | pmax | pmin | dec3100 | decstatn) 307f403ce92Smrg basic_machine=mips-dec 308f403ce92Smrg basic_os= 309f403ce92Smrg ;; 310f403ce92Smrg delta88) 311f403ce92Smrg basic_machine=m88k-motorola 312f403ce92Smrg basic_os=sysv3 313f403ce92Smrg ;; 314f403ce92Smrg dicos) 315f403ce92Smrg basic_machine=i686-pc 316f403ce92Smrg basic_os=dicos 317f403ce92Smrg ;; 318f403ce92Smrg djgpp) 319f403ce92Smrg basic_machine=i586-pc 320f403ce92Smrg basic_os=msdosdjgpp 321f403ce92Smrg ;; 322f403ce92Smrg ebmon29k) 323f403ce92Smrg basic_machine=a29k-amd 324f403ce92Smrg basic_os=ebmon 325f403ce92Smrg ;; 326f403ce92Smrg es1800 | OSE68k | ose68k | ose | OSE) 327f403ce92Smrg basic_machine=m68k-ericsson 328f403ce92Smrg basic_os=ose 329f403ce92Smrg ;; 330f403ce92Smrg gmicro) 331f403ce92Smrg basic_machine=tron-gmicro 332f403ce92Smrg basic_os=sysv 333f403ce92Smrg ;; 334f403ce92Smrg go32) 335f403ce92Smrg basic_machine=i386-pc 336f403ce92Smrg basic_os=go32 337f403ce92Smrg ;; 338f403ce92Smrg h8300hms) 339f403ce92Smrg basic_machine=h8300-hitachi 340f403ce92Smrg basic_os=hms 341f403ce92Smrg ;; 342f403ce92Smrg h8300xray) 343f403ce92Smrg basic_machine=h8300-hitachi 344f403ce92Smrg basic_os=xray 345f403ce92Smrg ;; 346f403ce92Smrg h8500hms) 347f403ce92Smrg basic_machine=h8500-hitachi 348f403ce92Smrg basic_os=hms 349f403ce92Smrg ;; 350f403ce92Smrg harris) 351f403ce92Smrg basic_machine=m88k-harris 352f403ce92Smrg basic_os=sysv3 353f403ce92Smrg ;; 354f403ce92Smrg hp300 | hp300hpux) 355f403ce92Smrg basic_machine=m68k-hp 356f403ce92Smrg basic_os=hpux 357f403ce92Smrg ;; 358f403ce92Smrg hp300bsd) 359f403ce92Smrg basic_machine=m68k-hp 360f403ce92Smrg basic_os=bsd 361f403ce92Smrg ;; 362f403ce92Smrg hppaosf) 363f403ce92Smrg basic_machine=hppa1.1-hp 364f403ce92Smrg basic_os=osf 365f403ce92Smrg ;; 366f403ce92Smrg hppro) 367f403ce92Smrg basic_machine=hppa1.1-hp 368f403ce92Smrg basic_os=proelf 369f403ce92Smrg ;; 370f403ce92Smrg i386mach) 371f403ce92Smrg basic_machine=i386-mach 372f403ce92Smrg basic_os=mach 373f403ce92Smrg ;; 374f403ce92Smrg isi68 | isi) 375f403ce92Smrg basic_machine=m68k-isi 376f403ce92Smrg basic_os=sysv 377f403ce92Smrg ;; 378f403ce92Smrg m68knommu) 379f403ce92Smrg basic_machine=m68k-unknown 380f403ce92Smrg basic_os=linux 381f403ce92Smrg ;; 382f403ce92Smrg magnum | m3230) 383f403ce92Smrg basic_machine=mips-mips 384f403ce92Smrg basic_os=sysv 385f403ce92Smrg ;; 386f403ce92Smrg merlin) 387f403ce92Smrg basic_machine=ns32k-utek 388f403ce92Smrg basic_os=sysv 389f403ce92Smrg ;; 390f403ce92Smrg mingw64) 391f403ce92Smrg basic_machine=x86_64-pc 392f403ce92Smrg basic_os=mingw64 393f403ce92Smrg ;; 394f403ce92Smrg mingw32) 395f403ce92Smrg basic_machine=i686-pc 396f403ce92Smrg basic_os=mingw32 397f403ce92Smrg ;; 398f403ce92Smrg mingw32ce) 399f403ce92Smrg basic_machine=arm-unknown 400f403ce92Smrg basic_os=mingw32ce 401f403ce92Smrg ;; 402f403ce92Smrg monitor) 403f403ce92Smrg basic_machine=m68k-rom68k 404f403ce92Smrg basic_os=coff 405f403ce92Smrg ;; 406f403ce92Smrg morphos) 407f403ce92Smrg basic_machine=powerpc-unknown 408f403ce92Smrg basic_os=morphos 409f403ce92Smrg ;; 410f403ce92Smrg moxiebox) 411f403ce92Smrg basic_machine=moxie-unknown 412f403ce92Smrg basic_os=moxiebox 413f403ce92Smrg ;; 414f403ce92Smrg msdos) 415f403ce92Smrg basic_machine=i386-pc 416f403ce92Smrg basic_os=msdos 417f403ce92Smrg ;; 418f403ce92Smrg msys) 419f403ce92Smrg basic_machine=i686-pc 420f403ce92Smrg basic_os=msys 421f403ce92Smrg ;; 422f403ce92Smrg mvs) 423f403ce92Smrg basic_machine=i370-ibm 424f403ce92Smrg basic_os=mvs 425f403ce92Smrg ;; 426f403ce92Smrg nacl) 427f403ce92Smrg basic_machine=le32-unknown 428f403ce92Smrg basic_os=nacl 429f403ce92Smrg ;; 430f403ce92Smrg ncr3000) 431f403ce92Smrg basic_machine=i486-ncr 432f403ce92Smrg basic_os=sysv4 433f403ce92Smrg ;; 434f403ce92Smrg netbsd386) 435f403ce92Smrg basic_machine=i386-pc 436f403ce92Smrg basic_os=netbsd 437f403ce92Smrg ;; 438f403ce92Smrg netwinder) 439f403ce92Smrg basic_machine=armv4l-rebel 440f403ce92Smrg basic_os=linux 441f403ce92Smrg ;; 442f403ce92Smrg news | news700 | news800 | news900) 443f403ce92Smrg basic_machine=m68k-sony 444f403ce92Smrg basic_os=newsos 445f403ce92Smrg ;; 446f403ce92Smrg news1000) 447f403ce92Smrg basic_machine=m68030-sony 448f403ce92Smrg basic_os=newsos 449f403ce92Smrg ;; 450f403ce92Smrg necv70) 451f403ce92Smrg basic_machine=v70-nec 452f403ce92Smrg basic_os=sysv 453f403ce92Smrg ;; 454f403ce92Smrg nh3000) 455f403ce92Smrg basic_machine=m68k-harris 456f403ce92Smrg basic_os=cxux 457f403ce92Smrg ;; 458f403ce92Smrg nh[45]000) 459f403ce92Smrg basic_machine=m88k-harris 460f403ce92Smrg basic_os=cxux 461f403ce92Smrg ;; 462f403ce92Smrg nindy960) 463f403ce92Smrg basic_machine=i960-intel 464f403ce92Smrg basic_os=nindy 465f403ce92Smrg ;; 466f403ce92Smrg mon960) 467f403ce92Smrg basic_machine=i960-intel 468f403ce92Smrg basic_os=mon960 469f403ce92Smrg ;; 470f403ce92Smrg nonstopux) 471f403ce92Smrg basic_machine=mips-compaq 472f403ce92Smrg basic_os=nonstopux 473f403ce92Smrg ;; 474f403ce92Smrg os400) 475f403ce92Smrg basic_machine=powerpc-ibm 476f403ce92Smrg basic_os=os400 477f403ce92Smrg ;; 478f403ce92Smrg OSE68000 | ose68000) 479f403ce92Smrg basic_machine=m68000-ericsson 480f403ce92Smrg basic_os=ose 481f403ce92Smrg ;; 482f403ce92Smrg os68k) 483f403ce92Smrg basic_machine=m68k-none 484f403ce92Smrg basic_os=os68k 485f403ce92Smrg ;; 486f403ce92Smrg paragon) 487f403ce92Smrg basic_machine=i860-intel 488f403ce92Smrg basic_os=osf 489f403ce92Smrg ;; 490f403ce92Smrg parisc) 491f403ce92Smrg basic_machine=hppa-unknown 492f403ce92Smrg basic_os=linux 493f403ce92Smrg ;; 494f403ce92Smrg psp) 495f403ce92Smrg basic_machine=mipsallegrexel-sony 496f403ce92Smrg basic_os=psp 497f403ce92Smrg ;; 498f403ce92Smrg pw32) 499f403ce92Smrg basic_machine=i586-unknown 500f403ce92Smrg basic_os=pw32 501f403ce92Smrg ;; 502f403ce92Smrg rdos | rdos64) 503f403ce92Smrg basic_machine=x86_64-pc 504f403ce92Smrg basic_os=rdos 505f403ce92Smrg ;; 506f403ce92Smrg rdos32) 507f403ce92Smrg basic_machine=i386-pc 508f403ce92Smrg basic_os=rdos 509f403ce92Smrg ;; 510f403ce92Smrg rom68k) 511f403ce92Smrg basic_machine=m68k-rom68k 512f403ce92Smrg basic_os=coff 513f403ce92Smrg ;; 514f403ce92Smrg sa29200) 515f403ce92Smrg basic_machine=a29k-amd 516f403ce92Smrg basic_os=udi 517f403ce92Smrg ;; 518f403ce92Smrg sei) 519f403ce92Smrg basic_machine=mips-sei 520f403ce92Smrg basic_os=seiux 521f403ce92Smrg ;; 522f403ce92Smrg sequent) 523f403ce92Smrg basic_machine=i386-sequent 524f403ce92Smrg basic_os= 525f403ce92Smrg ;; 526f403ce92Smrg sps7) 527f403ce92Smrg basic_machine=m68k-bull 528f403ce92Smrg basic_os=sysv2 529f403ce92Smrg ;; 530f403ce92Smrg st2000) 531f403ce92Smrg basic_machine=m68k-tandem 532f403ce92Smrg basic_os= 533f403ce92Smrg ;; 534f403ce92Smrg stratus) 535f403ce92Smrg basic_machine=i860-stratus 536f403ce92Smrg basic_os=sysv4 537f403ce92Smrg ;; 538f403ce92Smrg sun2) 539f403ce92Smrg basic_machine=m68000-sun 540f403ce92Smrg basic_os= 541f403ce92Smrg ;; 542f403ce92Smrg sun2os3) 543f403ce92Smrg basic_machine=m68000-sun 544f403ce92Smrg basic_os=sunos3 545f403ce92Smrg ;; 546f403ce92Smrg sun2os4) 547f403ce92Smrg basic_machine=m68000-sun 548f403ce92Smrg basic_os=sunos4 549f403ce92Smrg ;; 550f403ce92Smrg sun3) 551f403ce92Smrg basic_machine=m68k-sun 552f403ce92Smrg basic_os= 553f403ce92Smrg ;; 554f403ce92Smrg sun3os3) 555f403ce92Smrg basic_machine=m68k-sun 556f403ce92Smrg basic_os=sunos3 557f403ce92Smrg ;; 558f403ce92Smrg sun3os4) 559f403ce92Smrg basic_machine=m68k-sun 560f403ce92Smrg basic_os=sunos4 561f403ce92Smrg ;; 562f403ce92Smrg sun4) 563f403ce92Smrg basic_machine=sparc-sun 564f403ce92Smrg basic_os= 565f403ce92Smrg ;; 566f403ce92Smrg sun4os3) 567f403ce92Smrg basic_machine=sparc-sun 568f403ce92Smrg basic_os=sunos3 569f403ce92Smrg ;; 570f403ce92Smrg sun4os4) 571f403ce92Smrg basic_machine=sparc-sun 572f403ce92Smrg basic_os=sunos4 573f403ce92Smrg ;; 574f403ce92Smrg sun4sol2) 575f403ce92Smrg basic_machine=sparc-sun 576f403ce92Smrg basic_os=solaris2 577f403ce92Smrg ;; 578f403ce92Smrg sun386 | sun386i | roadrunner) 579f403ce92Smrg basic_machine=i386-sun 580f403ce92Smrg basic_os= 581f403ce92Smrg ;; 582f403ce92Smrg sv1) 583f403ce92Smrg basic_machine=sv1-cray 584f403ce92Smrg basic_os=unicos 585f403ce92Smrg ;; 586f403ce92Smrg symmetry) 587f403ce92Smrg basic_machine=i386-sequent 588f403ce92Smrg basic_os=dynix 589f403ce92Smrg ;; 590f403ce92Smrg t3e) 591f403ce92Smrg basic_machine=alphaev5-cray 592f403ce92Smrg basic_os=unicos 593f403ce92Smrg ;; 594f403ce92Smrg t90) 595f403ce92Smrg basic_machine=t90-cray 596f403ce92Smrg basic_os=unicos 597f403ce92Smrg ;; 598f403ce92Smrg toad1) 599f403ce92Smrg basic_machine=pdp10-xkl 600f403ce92Smrg basic_os=tops20 601f403ce92Smrg ;; 602f403ce92Smrg tpf) 603f403ce92Smrg basic_machine=s390x-ibm 604f403ce92Smrg basic_os=tpf 605f403ce92Smrg ;; 606f403ce92Smrg udi29k) 607f403ce92Smrg basic_machine=a29k-amd 608f403ce92Smrg basic_os=udi 609f403ce92Smrg ;; 610f403ce92Smrg ultra3) 611f403ce92Smrg basic_machine=a29k-nyu 612f403ce92Smrg basic_os=sym1 613f403ce92Smrg ;; 614f403ce92Smrg v810 | necv810) 615f403ce92Smrg basic_machine=v810-nec 616f403ce92Smrg basic_os=none 617f403ce92Smrg ;; 618f403ce92Smrg vaxv) 619f403ce92Smrg basic_machine=vax-dec 620f403ce92Smrg basic_os=sysv 621f403ce92Smrg ;; 622f403ce92Smrg vms) 623f403ce92Smrg basic_machine=vax-dec 624f403ce92Smrg basic_os=vms 625f403ce92Smrg ;; 626f403ce92Smrg vsta) 627f403ce92Smrg basic_machine=i386-pc 628f403ce92Smrg basic_os=vsta 629f403ce92Smrg ;; 630f403ce92Smrg vxworks960) 631f403ce92Smrg basic_machine=i960-wrs 632f403ce92Smrg basic_os=vxworks 633f403ce92Smrg ;; 634f403ce92Smrg vxworks68) 635f403ce92Smrg basic_machine=m68k-wrs 636f403ce92Smrg basic_os=vxworks 637f403ce92Smrg ;; 638f403ce92Smrg vxworks29k) 639f403ce92Smrg basic_machine=a29k-wrs 640f403ce92Smrg basic_os=vxworks 641f403ce92Smrg ;; 642f403ce92Smrg xbox) 643f403ce92Smrg basic_machine=i686-pc 644f403ce92Smrg basic_os=mingw32 645f403ce92Smrg ;; 646f403ce92Smrg ymp) 647f403ce92Smrg basic_machine=ymp-cray 648f403ce92Smrg basic_os=unicos 649f403ce92Smrg ;; 650f403ce92Smrg *) 651f403ce92Smrg basic_machine=$1 652f403ce92Smrg basic_os= 653f403ce92Smrg ;; 654f403ce92Smrg esac 6559bc46bd4Smrg ;; 656f403ce92Smrgesac 657f403ce92Smrg 658f403ce92Smrg# Decode 1-component or ad-hoc basic machines 659f403ce92Smrgcase $basic_machine in 660f403ce92Smrg # Here we handle the default manufacturer of certain CPU types. It is in 661f403ce92Smrg # some cases the only manufacturer, in others, it is the most popular. 662f403ce92Smrg w89k) 663f403ce92Smrg cpu=hppa1.1 664f403ce92Smrg vendor=winbond 6659bc46bd4Smrg ;; 666f403ce92Smrg op50n) 667f403ce92Smrg cpu=hppa1.1 668f403ce92Smrg vendor=oki 6699bc46bd4Smrg ;; 670f403ce92Smrg op60c) 671f403ce92Smrg cpu=hppa1.1 672f403ce92Smrg vendor=oki 6739bc46bd4Smrg ;; 674f403ce92Smrg ibm*) 675f403ce92Smrg cpu=i370 676f403ce92Smrg vendor=ibm 6779bc46bd4Smrg ;; 678f403ce92Smrg orion105) 679f403ce92Smrg cpu=clipper 680f403ce92Smrg vendor=highlevel 6819bc46bd4Smrg ;; 682f403ce92Smrg mac | mpw | mac-mpw) 683f403ce92Smrg cpu=m68k 684f403ce92Smrg vendor=apple 6859bc46bd4Smrg ;; 686f403ce92Smrg pmac | pmac-mpw) 687f403ce92Smrg cpu=powerpc 688f403ce92Smrg vendor=apple 6899bc46bd4Smrg ;; 6909bc46bd4Smrg 6919bc46bd4Smrg # Recognize the various machine names and aliases which stand 6929bc46bd4Smrg # for a CPU type and a company and sometimes even an OS. 6939bc46bd4Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694f403ce92Smrg cpu=m68000 695f403ce92Smrg vendor=att 6969bc46bd4Smrg ;; 6979bc46bd4Smrg 3b*) 698f403ce92Smrg cpu=we32k 699f403ce92Smrg vendor=att 7009bc46bd4Smrg ;; 701c41d98afSmrg bluegene*) 702f403ce92Smrg cpu=powerpc 703f403ce92Smrg vendor=ibm 704f403ce92Smrg basic_os=cnk 7059bc46bd4Smrg ;; 7069bc46bd4Smrg decsystem10* | dec10*) 707f403ce92Smrg cpu=pdp10 708f403ce92Smrg vendor=dec 709f403ce92Smrg basic_os=tops10 7109bc46bd4Smrg ;; 7119bc46bd4Smrg decsystem20* | dec20*) 712f403ce92Smrg cpu=pdp10 713f403ce92Smrg vendor=dec 714f403ce92Smrg basic_os=tops20 7159bc46bd4Smrg ;; 7169bc46bd4Smrg delta | 3300 | motorola-3300 | motorola-delta \ 7179bc46bd4Smrg | 3300-motorola | delta-motorola) 718f403ce92Smrg cpu=m68k 719f403ce92Smrg vendor=motorola 7209bc46bd4Smrg ;; 721f403ce92Smrg dpx2*) 722f403ce92Smrg cpu=m68k 723f403ce92Smrg vendor=bull 724f403ce92Smrg basic_os=sysv3 7259bc46bd4Smrg ;; 7269bc46bd4Smrg encore | umax | mmax) 727f403ce92Smrg cpu=ns32k 728f403ce92Smrg vendor=encore 7299bc46bd4Smrg ;; 730f403ce92Smrg elxsi) 731f403ce92Smrg cpu=elxsi 732f403ce92Smrg vendor=elxsi 733f403ce92Smrg basic_os=${basic_os:-bsd} 7349bc46bd4Smrg ;; 7359bc46bd4Smrg fx2800) 736f403ce92Smrg cpu=i860 737f403ce92Smrg vendor=alliant 7389bc46bd4Smrg ;; 7399bc46bd4Smrg genix) 740f403ce92Smrg cpu=ns32k 741f403ce92Smrg vendor=ns 7429bc46bd4Smrg ;; 7439bc46bd4Smrg h3050r* | hiux*) 744f403ce92Smrg cpu=hppa1.1 745f403ce92Smrg vendor=hitachi 746f403ce92Smrg basic_os=hiuxwe2 7479bc46bd4Smrg ;; 7489bc46bd4Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749f403ce92Smrg cpu=hppa1.0 750f403ce92Smrg vendor=hp 7519bc46bd4Smrg ;; 7529bc46bd4Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753f403ce92Smrg cpu=m68000 754f403ce92Smrg vendor=hp 7559bc46bd4Smrg ;; 7569bc46bd4Smrg hp9k3[2-9][0-9]) 757f403ce92Smrg cpu=m68k 758f403ce92Smrg vendor=hp 7599bc46bd4Smrg ;; 7609bc46bd4Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761f403ce92Smrg cpu=hppa1.0 762f403ce92Smrg vendor=hp 7639bc46bd4Smrg ;; 7649bc46bd4Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765f403ce92Smrg cpu=hppa1.1 766f403ce92Smrg vendor=hp 7679bc46bd4Smrg ;; 7689bc46bd4Smrg hp9k78[0-9] | hp78[0-9]) 7699bc46bd4Smrg # FIXME: really hppa2.0-hp 770f403ce92Smrg cpu=hppa1.1 771f403ce92Smrg vendor=hp 7729bc46bd4Smrg ;; 7739bc46bd4Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7749bc46bd4Smrg # FIXME: really hppa2.0-hp 775f403ce92Smrg cpu=hppa1.1 776f403ce92Smrg vendor=hp 7779bc46bd4Smrg ;; 7789bc46bd4Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779f403ce92Smrg cpu=hppa1.1 780f403ce92Smrg vendor=hp 7819bc46bd4Smrg ;; 7829bc46bd4Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783f403ce92Smrg cpu=hppa1.0 784f403ce92Smrg vendor=hp 7859bc46bd4Smrg ;; 7869bc46bd4Smrg i*86v32) 787f403ce92Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788f403ce92Smrg vendor=pc 789f403ce92Smrg basic_os=sysv32 7909bc46bd4Smrg ;; 7919bc46bd4Smrg i*86v4*) 792f403ce92Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793f403ce92Smrg vendor=pc 794f403ce92Smrg basic_os=sysv4 7959bc46bd4Smrg ;; 7969bc46bd4Smrg i*86v) 797f403ce92Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798f403ce92Smrg vendor=pc 799f403ce92Smrg basic_os=sysv 8009bc46bd4Smrg ;; 8019bc46bd4Smrg i*86sol2) 802f403ce92Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803f403ce92Smrg vendor=pc 804f403ce92Smrg basic_os=solaris2 8059bc46bd4Smrg ;; 806f403ce92Smrg j90 | j90-cray) 807f403ce92Smrg cpu=j90 808f403ce92Smrg vendor=cray 809f403ce92Smrg basic_os=${basic_os:-unicos} 8109bc46bd4Smrg ;; 8119bc46bd4Smrg iris | iris4d) 812f403ce92Smrg cpu=mips 813f403ce92Smrg vendor=sgi 814f403ce92Smrg case $basic_os in 815f403ce92Smrg irix*) 8169bc46bd4Smrg ;; 8179bc46bd4Smrg *) 818f403ce92Smrg basic_os=irix4 8199bc46bd4Smrg ;; 8209bc46bd4Smrg esac 8219bc46bd4Smrg ;; 8229bc46bd4Smrg miniframe) 823f403ce92Smrg cpu=m68000 824f403ce92Smrg vendor=convergent 8259bc46bd4Smrg ;; 826f403ce92Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827f403ce92Smrg cpu=m68k 828f403ce92Smrg vendor=atari 829f403ce92Smrg basic_os=mint 8309bc46bd4Smrg ;; 8319bc46bd4Smrg news-3600 | risc-news) 832f403ce92Smrg cpu=mips 833f403ce92Smrg vendor=sony 834f403ce92Smrg basic_os=newsos 835f403ce92Smrg ;; 836f403ce92Smrg next | m*-next) 837f403ce92Smrg cpu=m68k 838f403ce92Smrg vendor=next 839f403ce92Smrg case $basic_os in 840f403ce92Smrg openstep*) 841f403ce92Smrg ;; 842f403ce92Smrg nextstep*) 8439bc46bd4Smrg ;; 844f403ce92Smrg ns2*) 845f403ce92Smrg basic_os=nextstep2 8469bc46bd4Smrg ;; 8479bc46bd4Smrg *) 848f403ce92Smrg basic_os=nextstep3 8499bc46bd4Smrg ;; 8509bc46bd4Smrg esac 8519bc46bd4Smrg ;; 8529bc46bd4Smrg np1) 853f403ce92Smrg cpu=np1 854f403ce92Smrg vendor=gould 8559bc46bd4Smrg ;; 8569bc46bd4Smrg op50n-* | op60c-*) 857f403ce92Smrg cpu=hppa1.1 858f403ce92Smrg vendor=oki 859f403ce92Smrg basic_os=proelf 8609bc46bd4Smrg ;; 8619bc46bd4Smrg pa-hitachi) 862f403ce92Smrg cpu=hppa1.1 863f403ce92Smrg vendor=hitachi 864f403ce92Smrg basic_os=hiuxwe2 8659bc46bd4Smrg ;; 8669bc46bd4Smrg pbd) 867f403ce92Smrg cpu=sparc 868f403ce92Smrg vendor=tti 8699bc46bd4Smrg ;; 8709bc46bd4Smrg pbb) 871f403ce92Smrg cpu=m68k 872f403ce92Smrg vendor=tti 8739bc46bd4Smrg ;; 874f403ce92Smrg pc532) 875f403ce92Smrg cpu=ns32k 876f403ce92Smrg vendor=pc532 8779bc46bd4Smrg ;; 8789bc46bd4Smrg pn) 879f403ce92Smrg cpu=pn 880f403ce92Smrg vendor=gould 8819bc46bd4Smrg ;; 882f403ce92Smrg power) 883f403ce92Smrg cpu=power 884f403ce92Smrg vendor=ibm 8859bc46bd4Smrg ;; 8869bc46bd4Smrg ps2) 887f403ce92Smrg cpu=i386 888f403ce92Smrg vendor=ibm 8899bc46bd4Smrg ;; 8909bc46bd4Smrg rm[46]00) 891f403ce92Smrg cpu=mips 892f403ce92Smrg vendor=siemens 8939bc46bd4Smrg ;; 8949bc46bd4Smrg rtpc | rtpc-*) 895f403ce92Smrg cpu=romp 896f403ce92Smrg vendor=ibm 8979bc46bd4Smrg ;; 898f403ce92Smrg sde) 899f403ce92Smrg cpu=mipsisa32 900f403ce92Smrg vendor=sde 901f403ce92Smrg basic_os=${basic_os:-elf} 9029bc46bd4Smrg ;; 903f403ce92Smrg simso-wrs) 904f403ce92Smrg cpu=sparclite 905f403ce92Smrg vendor=wrs 906f403ce92Smrg basic_os=vxworks 9079bc46bd4Smrg ;; 908f403ce92Smrg tower | tower-32) 909f403ce92Smrg cpu=m68k 910f403ce92Smrg vendor=ncr 9119bc46bd4Smrg ;; 912f403ce92Smrg vpp*|vx|vx-*) 913f403ce92Smrg cpu=f301 914f403ce92Smrg vendor=fujitsu 9159bc46bd4Smrg ;; 916f403ce92Smrg w65) 917f403ce92Smrg cpu=w65 918f403ce92Smrg vendor=wdc 9199bc46bd4Smrg ;; 920f403ce92Smrg w89k-*) 921f403ce92Smrg cpu=hppa1.1 922f403ce92Smrg vendor=winbond 923f403ce92Smrg basic_os=proelf 9249bc46bd4Smrg ;; 925f403ce92Smrg none) 926f403ce92Smrg cpu=none 927f403ce92Smrg vendor=none 9289bc46bd4Smrg ;; 929f403ce92Smrg leon|leon[3-9]) 930f403ce92Smrg cpu=sparc 931f403ce92Smrg vendor=$basic_machine 9329bc46bd4Smrg ;; 933f403ce92Smrg leon-*|leon[3-9]-*) 934f403ce92Smrg cpu=sparc 935f403ce92Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9369bc46bd4Smrg ;; 937f403ce92Smrg 938f403ce92Smrg *-*) 939f403ce92Smrg # shellcheck disable=SC2162 940f403ce92Smrg saved_IFS=$IFS 941f403ce92Smrg IFS="-" read cpu vendor <<EOF 942f403ce92Smrg$basic_machine 943f403ce92SmrgEOF 944f403ce92Smrg IFS=$saved_IFS 9459bc46bd4Smrg ;; 946f403ce92Smrg # We use `pc' rather than `unknown' 947f403ce92Smrg # because (1) that's what they normally are, and 948f403ce92Smrg # (2) the word "unknown" tends to confuse beginning users. 949f403ce92Smrg i*86 | x86_64) 950f403ce92Smrg cpu=$basic_machine 951f403ce92Smrg vendor=pc 9529bc46bd4Smrg ;; 953f403ce92Smrg # These rules are duplicated from below for sake of the special case above; 954f403ce92Smrg # i.e. things that normalized to x86 arches should also default to "pc" 955f403ce92Smrg pc98) 956f403ce92Smrg cpu=i386 957f403ce92Smrg vendor=pc 9589bc46bd4Smrg ;; 959f403ce92Smrg x64 | amd64) 960f403ce92Smrg cpu=x86_64 961f403ce92Smrg vendor=pc 9629bc46bd4Smrg ;; 963f403ce92Smrg # Recognize the basic CPU types without company name. 964f403ce92Smrg *) 965f403ce92Smrg cpu=$basic_machine 966f403ce92Smrg vendor=unknown 9679bc46bd4Smrg ;; 968f403ce92Smrgesac 969f403ce92Smrg 970f403ce92Smrgunset -v basic_machine 971f403ce92Smrg 972f403ce92Smrg# Decode basic machines in the full and proper CPU-Company form. 973f403ce92Smrgcase $cpu-$vendor in 974f403ce92Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975f403ce92Smrg # some cases the only manufacturer, in others, it is the most popular. 976f403ce92Smrg craynv-unknown) 977f403ce92Smrg vendor=cray 978f403ce92Smrg basic_os=${basic_os:-unicosmp} 9799bc46bd4Smrg ;; 980f403ce92Smrg c90-unknown | c90-cray) 981f403ce92Smrg vendor=cray 982f403ce92Smrg basic_os=${Basic_os:-unicos} 9839bc46bd4Smrg ;; 984f403ce92Smrg fx80-unknown) 985f403ce92Smrg vendor=alliant 9869bc46bd4Smrg ;; 987f403ce92Smrg romp-unknown) 988f403ce92Smrg vendor=ibm 9899bc46bd4Smrg ;; 990f403ce92Smrg mmix-unknown) 991f403ce92Smrg vendor=knuth 9929bc46bd4Smrg ;; 993f403ce92Smrg microblaze-unknown | microblazeel-unknown) 994f403ce92Smrg vendor=xilinx 9959bc46bd4Smrg ;; 996f403ce92Smrg rs6000-unknown) 997f403ce92Smrg vendor=ibm 9989bc46bd4Smrg ;; 999f403ce92Smrg vax-unknown) 1000f403ce92Smrg vendor=dec 10019bc46bd4Smrg ;; 1002f403ce92Smrg pdp11-unknown) 1003f403ce92Smrg vendor=dec 10049bc46bd4Smrg ;; 1005f403ce92Smrg we32k-unknown) 1006f403ce92Smrg vendor=att 10079bc46bd4Smrg ;; 1008f403ce92Smrg cydra-unknown) 1009f403ce92Smrg vendor=cydrome 10109bc46bd4Smrg ;; 1011f403ce92Smrg i370-ibm*) 1012f403ce92Smrg vendor=ibm 10139bc46bd4Smrg ;; 1014f403ce92Smrg orion-unknown) 1015f403ce92Smrg vendor=highlevel 10169bc46bd4Smrg ;; 1017f403ce92Smrg xps-unknown | xps100-unknown) 1018f403ce92Smrg cpu=xps100 1019f403ce92Smrg vendor=honeywell 10209bc46bd4Smrg ;; 1021f403ce92Smrg 1022f403ce92Smrg # Here we normalize CPU types with a missing or matching vendor 1023f403ce92Smrg armh-unknown | armh-alt) 1024f403ce92Smrg cpu=armv7l 1025f403ce92Smrg vendor=alt 1026f403ce92Smrg basic_os=${basic_os:-linux-gnueabihf} 10279bc46bd4Smrg ;; 1028f403ce92Smrg dpx20-unknown | dpx20-bull) 1029f403ce92Smrg cpu=rs6000 1030f403ce92Smrg vendor=bull 1031f403ce92Smrg basic_os=${basic_os:-bosx} 10329bc46bd4Smrg ;; 1033f403ce92Smrg 1034f403ce92Smrg # Here we normalize CPU types irrespective of the vendor 1035f403ce92Smrg amd64-*) 1036f403ce92Smrg cpu=x86_64 10379bc46bd4Smrg ;; 1038f403ce92Smrg blackfin-*) 1039f403ce92Smrg cpu=bfin 1040f403ce92Smrg basic_os=linux 10419bc46bd4Smrg ;; 1042f403ce92Smrg c54x-*) 1043f403ce92Smrg cpu=tic54x 10449bc46bd4Smrg ;; 1045f403ce92Smrg c55x-*) 1046f403ce92Smrg cpu=tic55x 10479bc46bd4Smrg ;; 1048f403ce92Smrg c6x-*) 1049f403ce92Smrg cpu=tic6x 10509bc46bd4Smrg ;; 1051f403ce92Smrg e500v[12]-*) 1052f403ce92Smrg cpu=powerpc 1053f403ce92Smrg basic_os=${basic_os}"spe" 10549bc46bd4Smrg ;; 1055f403ce92Smrg mips3*-*) 1056f403ce92Smrg cpu=mips64 10579bc46bd4Smrg ;; 1058f403ce92Smrg ms1-*) 1059f403ce92Smrg cpu=mt 10609bc46bd4Smrg ;; 1061f403ce92Smrg m68knommu-*) 1062f403ce92Smrg cpu=m68k 1063f403ce92Smrg basic_os=linux 10649bc46bd4Smrg ;; 1065f403ce92Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1066f403ce92Smrg cpu=s12z 10679bc46bd4Smrg ;; 1068f403ce92Smrg openrisc-*) 1069f403ce92Smrg cpu=or32 10709bc46bd4Smrg ;; 1071f403ce92Smrg parisc-*) 1072f403ce92Smrg cpu=hppa 1073f403ce92Smrg basic_os=linux 10749bc46bd4Smrg ;; 1075f403ce92Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1076f403ce92Smrg cpu=i586 10779bc46bd4Smrg ;; 1078f403ce92Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1079f403ce92Smrg cpu=i686 10809bc46bd4Smrg ;; 1081f403ce92Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1082f403ce92Smrg cpu=i686 10839bc46bd4Smrg ;; 1084f403ce92Smrg pentium4-*) 1085f403ce92Smrg cpu=i786 10869bc46bd4Smrg ;; 1087f403ce92Smrg pc98-*) 1088f403ce92Smrg cpu=i386 10899bc46bd4Smrg ;; 1090f403ce92Smrg ppc-* | ppcbe-*) 1091f403ce92Smrg cpu=powerpc 10929bc46bd4Smrg ;; 1093f403ce92Smrg ppcle-* | powerpclittle-*) 1094f403ce92Smrg cpu=powerpcle 10959bc46bd4Smrg ;; 1096f403ce92Smrg ppc64-*) 1097f403ce92Smrg cpu=powerpc64 10989bc46bd4Smrg ;; 1099f403ce92Smrg ppc64le-* | powerpc64little-*) 1100f403ce92Smrg cpu=powerpc64le 11019bc46bd4Smrg ;; 1102f403ce92Smrg sb1-*) 1103f403ce92Smrg cpu=mipsisa64sb1 11049bc46bd4Smrg ;; 1105f403ce92Smrg sb1el-*) 1106f403ce92Smrg cpu=mipsisa64sb1el 11079bc46bd4Smrg ;; 1108f403ce92Smrg sh5e[lb]-*) 1109f403ce92Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11109bc46bd4Smrg ;; 1111f403ce92Smrg spur-*) 1112f403ce92Smrg cpu=spur 11139bc46bd4Smrg ;; 1114f403ce92Smrg strongarm-* | thumb-*) 1115f403ce92Smrg cpu=arm 11169bc46bd4Smrg ;; 1117f403ce92Smrg tx39-*) 1118f403ce92Smrg cpu=mipstx39 11199bc46bd4Smrg ;; 1120f403ce92Smrg tx39el-*) 1121f403ce92Smrg cpu=mipstx39el 11229bc46bd4Smrg ;; 1123f403ce92Smrg x64-*) 1124f403ce92Smrg cpu=x86_64 11259bc46bd4Smrg ;; 1126f403ce92Smrg xscale-* | xscalee[bl]-*) 1127f403ce92Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11289bc46bd4Smrg ;; 1129f403ce92Smrg arm64-* | aarch64le-*) 1130f403ce92Smrg cpu=aarch64 11319bc46bd4Smrg ;; 1132f403ce92Smrg 1133f403ce92Smrg # Recognize the canonical CPU Types that limit and/or modify the 1134f403ce92Smrg # company names they are paired with. 1135f403ce92Smrg cr16-*) 1136f403ce92Smrg basic_os=${basic_os:-elf} 11379bc46bd4Smrg ;; 1138f403ce92Smrg crisv32-* | etraxfs*-*) 1139f403ce92Smrg cpu=crisv32 1140f403ce92Smrg vendor=axis 11419bc46bd4Smrg ;; 1142f403ce92Smrg cris-* | etrax*-*) 1143f403ce92Smrg cpu=cris 1144f403ce92Smrg vendor=axis 11459bc46bd4Smrg ;; 1146f403ce92Smrg crx-*) 1147f403ce92Smrg basic_os=${basic_os:-elf} 11489bc46bd4Smrg ;; 1149f403ce92Smrg neo-tandem) 1150f403ce92Smrg cpu=neo 1151f403ce92Smrg vendor=tandem 11529bc46bd4Smrg ;; 1153f403ce92Smrg nse-tandem) 1154f403ce92Smrg cpu=nse 1155f403ce92Smrg vendor=tandem 11569bc46bd4Smrg ;; 1157f403ce92Smrg nsr-tandem) 1158f403ce92Smrg cpu=nsr 1159f403ce92Smrg vendor=tandem 11609bc46bd4Smrg ;; 1161f403ce92Smrg nsv-tandem) 1162f403ce92Smrg cpu=nsv 1163f403ce92Smrg vendor=tandem 11649bc46bd4Smrg ;; 1165f403ce92Smrg nsx-tandem) 1166f403ce92Smrg cpu=nsx 1167f403ce92Smrg vendor=tandem 11689bc46bd4Smrg ;; 1169f403ce92Smrg mipsallegrexel-sony) 1170f403ce92Smrg cpu=mipsallegrexel 1171f403ce92Smrg vendor=sony 11729bc46bd4Smrg ;; 1173f403ce92Smrg tile*-*) 1174f403ce92Smrg basic_os=${basic_os:-linux-gnu} 11759bc46bd4Smrg ;; 1176f403ce92Smrg 11779bc46bd4Smrg *) 1178f403ce92Smrg # Recognize the canonical CPU types that are allowed with any 1179f403ce92Smrg # company name. 1180f403ce92Smrg case $cpu in 1181f403ce92Smrg 1750a | 580 \ 1182f403ce92Smrg | a29k \ 1183f403ce92Smrg | aarch64 | aarch64_be \ 1184f403ce92Smrg | abacus \ 1185f403ce92Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1186f403ce92Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1187f403ce92Smrg | alphapca5[67] | alpha64pca5[67] \ 1188f403ce92Smrg | am33_2.0 \ 1189f403ce92Smrg | amdgcn \ 1190f403ce92Smrg | arc | arceb | arc32 | arc64 \ 1191f403ce92Smrg | arm | arm[lb]e | arme[lb] | armv* \ 1192f403ce92Smrg | avr | avr32 \ 1193f403ce92Smrg | asmjs \ 1194f403ce92Smrg | ba \ 1195f403ce92Smrg | be32 | be64 \ 1196f403ce92Smrg | bfin | bpf | bs2000 \ 1197f403ce92Smrg | c[123]* | c30 | [cjt]90 | c4x \ 1198f403ce92Smrg | c8051 | clipper | craynv | csky | cydra \ 1199f403ce92Smrg | d10v | d30v | dlx | dsp16xx \ 1200f403ce92Smrg | e2k | elxsi | epiphany \ 1201f403ce92Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1202f403ce92Smrg | h8300 | h8500 \ 1203f403ce92Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1204f403ce92Smrg | hexagon \ 1205f403ce92Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1206f403ce92Smrg | ip2k | iq2000 \ 1207f403ce92Smrg | k1om \ 1208f403ce92Smrg | le32 | le64 \ 1209f403ce92Smrg | lm32 \ 1210f403ce92Smrg | loongarch32 | loongarch64 \ 1211f403ce92Smrg | m32c | m32r | m32rle \ 1212f403ce92Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1213f403ce92Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1214f403ce92Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1215f403ce92Smrg | microblaze | microblazeel \ 1216f403ce92Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1217f403ce92Smrg | mips16 \ 1218f403ce92Smrg | mips64 | mips64eb | mips64el \ 1219f403ce92Smrg | mips64octeon | mips64octeonel \ 1220f403ce92Smrg | mips64orion | mips64orionel \ 1221f403ce92Smrg | mips64r5900 | mips64r5900el \ 1222f403ce92Smrg | mips64vr | mips64vrel \ 1223f403ce92Smrg | mips64vr4100 | mips64vr4100el \ 1224f403ce92Smrg | mips64vr4300 | mips64vr4300el \ 1225f403ce92Smrg | mips64vr5000 | mips64vr5000el \ 1226f403ce92Smrg | mips64vr5900 | mips64vr5900el \ 1227f403ce92Smrg | mipsisa32 | mipsisa32el \ 1228f403ce92Smrg | mipsisa32r2 | mipsisa32r2el \ 1229f403ce92Smrg | mipsisa32r3 | mipsisa32r3el \ 1230f403ce92Smrg | mipsisa32r5 | mipsisa32r5el \ 1231f403ce92Smrg | mipsisa32r6 | mipsisa32r6el \ 1232f403ce92Smrg | mipsisa64 | mipsisa64el \ 1233f403ce92Smrg | mipsisa64r2 | mipsisa64r2el \ 1234f403ce92Smrg | mipsisa64r3 | mipsisa64r3el \ 1235f403ce92Smrg | mipsisa64r5 | mipsisa64r5el \ 1236f403ce92Smrg | mipsisa64r6 | mipsisa64r6el \ 1237f403ce92Smrg | mipsisa64sb1 | mipsisa64sb1el \ 1238f403ce92Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 1239f403ce92Smrg | mipsr5900 | mipsr5900el \ 1240f403ce92Smrg | mipstx39 | mipstx39el \ 1241f403ce92Smrg | mmix \ 1242f403ce92Smrg | mn10200 | mn10300 \ 1243f403ce92Smrg | moxie \ 1244f403ce92Smrg | mt \ 1245f403ce92Smrg | msp430 \ 1246f403ce92Smrg | nds32 | nds32le | nds32be \ 1247f403ce92Smrg | nfp \ 1248f403ce92Smrg | nios | nios2 | nios2eb | nios2el \ 1249f403ce92Smrg | none | np1 | ns16k | ns32k | nvptx \ 1250f403ce92Smrg | open8 \ 1251f403ce92Smrg | or1k* \ 1252f403ce92Smrg | or32 \ 1253f403ce92Smrg | orion \ 1254f403ce92Smrg | picochip \ 1255f403ce92Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1256f403ce92Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1257f403ce92Smrg | pru \ 1258f403ce92Smrg | pyramid \ 1259f403ce92Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1260f403ce92Smrg | rl78 | romp | rs6000 | rx \ 1261f403ce92Smrg | s390 | s390x \ 1262f403ce92Smrg | score \ 1263f403ce92Smrg | sh | shl \ 1264f403ce92Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1265f403ce92Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1266f403ce92Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1267f403ce92Smrg | sparclite \ 1268f403ce92Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1269f403ce92Smrg | spu \ 1270f403ce92Smrg | tahoe \ 1271f403ce92Smrg | thumbv7* \ 1272f403ce92Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1273f403ce92Smrg | tron \ 1274f403ce92Smrg | ubicom32 \ 1275f403ce92Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1276f403ce92Smrg | vax \ 1277f403ce92Smrg | visium \ 1278f403ce92Smrg | w65 \ 1279f403ce92Smrg | wasm32 | wasm64 \ 1280f403ce92Smrg | we32k \ 1281f403ce92Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1282f403ce92Smrg | xstormy16 | xtensa* \ 1283f403ce92Smrg | ymp \ 1284f403ce92Smrg | z8k | z80) 1285f403ce92Smrg ;; 1286f403ce92Smrg 1287f403ce92Smrg *) 1288f403ce92Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1289f403ce92Smrg exit 1 1290f403ce92Smrg ;; 1291f403ce92Smrg esac 12929bc46bd4Smrg ;; 12939bc46bd4Smrgesac 12949bc46bd4Smrg 12959bc46bd4Smrg# Here we canonicalize certain aliases for manufacturers. 1296f403ce92Smrgcase $vendor in 1297f403ce92Smrg digital*) 1298f403ce92Smrg vendor=dec 12999bc46bd4Smrg ;; 1300f403ce92Smrg commodore*) 1301f403ce92Smrg vendor=cbm 13029bc46bd4Smrg ;; 13039bc46bd4Smrg *) 13049bc46bd4Smrg ;; 13059bc46bd4Smrgesac 13069bc46bd4Smrg 13079bc46bd4Smrg# Decode manufacturer-specific aliases for certain operating systems. 13089bc46bd4Smrg 1309f403ce92Smrgif test x$basic_os != x 13109bc46bd4Smrgthen 1311f403ce92Smrg 1312f403ce92Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1313f403ce92Smrg# set os. 1314f403ce92Smrgcase $basic_os in 1315f403ce92Smrg gnu/linux*) 1316f403ce92Smrg kernel=linux 1317f403ce92Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1318f403ce92Smrg ;; 1319f403ce92Smrg os2-emx) 1320f403ce92Smrg kernel=os2 1321f403ce92Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1322f403ce92Smrg ;; 1323f403ce92Smrg nto-qnx*) 1324f403ce92Smrg kernel=nto 1325f403ce92Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1326f403ce92Smrg ;; 1327f403ce92Smrg *-*) 1328f403ce92Smrg # shellcheck disable=SC2162 1329f403ce92Smrg saved_IFS=$IFS 1330f403ce92Smrg IFS="-" read kernel os <<EOF 1331f403ce92Smrg$basic_os 1332f403ce92SmrgEOF 1333f403ce92Smrg IFS=$saved_IFS 1334f403ce92Smrg ;; 1335f403ce92Smrg # Default OS when just kernel was specified 1336f403ce92Smrg nto*) 1337f403ce92Smrg kernel=nto 1338f403ce92Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1339f403ce92Smrg ;; 1340f403ce92Smrg linux*) 1341f403ce92Smrg kernel=linux 1342f403ce92Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1343f403ce92Smrg ;; 1344f403ce92Smrg managarm*) 1345f403ce92Smrg kernel=managarm 1346f403ce92Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1347f403ce92Smrg ;; 1348f403ce92Smrg *) 1349f403ce92Smrg kernel= 1350f403ce92Smrg os=$basic_os 1351f403ce92Smrg ;; 1352f403ce92Smrgesac 1353f403ce92Smrg 1354f403ce92Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1355f403ce92Smrg# etc.) 13569bc46bd4Smrgcase $os in 1357f403ce92Smrg # First match some system type aliases that might get confused 1358f403ce92Smrg # with valid system types. 1359f403ce92Smrg # solaris* is a basic system type, with this one exception. 1360f403ce92Smrg auroraux) 1361f403ce92Smrg os=auroraux 1362c41d98afSmrg ;; 1363f403ce92Smrg bluegene*) 1364f403ce92Smrg os=cnk 13659bc46bd4Smrg ;; 1366f403ce92Smrg solaris1 | solaris1.*) 1367f403ce92Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13689bc46bd4Smrg ;; 1369f403ce92Smrg solaris) 1370f403ce92Smrg os=solaris2 13719bc46bd4Smrg ;; 1372f403ce92Smrg unixware*) 1373f403ce92Smrg os=sysv4.2uw 13749bc46bd4Smrg ;; 1375f403ce92Smrg # es1800 is here to avoid being matched by es* (a different OS) 1376f403ce92Smrg es1800*) 1377f403ce92Smrg os=ose 13789bc46bd4Smrg ;; 1379f403ce92Smrg # Some version numbers need modification 1380f403ce92Smrg chorusos*) 1381f403ce92Smrg os=chorusos 13829bc46bd4Smrg ;; 1383f403ce92Smrg isc) 1384f403ce92Smrg os=isc2.2 13859bc46bd4Smrg ;; 1386f403ce92Smrg sco6) 1387f403ce92Smrg os=sco5v6 13889bc46bd4Smrg ;; 1389f403ce92Smrg sco5) 1390f403ce92Smrg os=sco3.2v5 13919bc46bd4Smrg ;; 1392f403ce92Smrg sco4) 1393f403ce92Smrg os=sco3.2v4 13949bc46bd4Smrg ;; 1395f403ce92Smrg sco3.2.[4-9]*) 1396f403ce92Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13979bc46bd4Smrg ;; 1398f403ce92Smrg sco*v* | scout) 1399f403ce92Smrg # Don't match below 14009bc46bd4Smrg ;; 1401f403ce92Smrg sco*) 1402f403ce92Smrg os=sco3.2v2 14039bc46bd4Smrg ;; 1404f403ce92Smrg psos*) 1405f403ce92Smrg os=psos 14069bc46bd4Smrg ;; 1407f403ce92Smrg qnx*) 1408f403ce92Smrg os=qnx 14099bc46bd4Smrg ;; 1410f403ce92Smrg hiux*) 1411f403ce92Smrg os=hiuxwe2 14129bc46bd4Smrg ;; 1413f403ce92Smrg lynx*178) 1414f403ce92Smrg os=lynxos178 14159bc46bd4Smrg ;; 1416f403ce92Smrg lynx*5) 1417f403ce92Smrg os=lynxos5 14189bc46bd4Smrg ;; 1419f403ce92Smrg lynxos*) 1420f403ce92Smrg # don't get caught up in next wildcard 14219bc46bd4Smrg ;; 1422f403ce92Smrg lynx*) 1423f403ce92Smrg os=lynxos 14249bc46bd4Smrg ;; 1425f403ce92Smrg mac[0-9]*) 1426f403ce92Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 14279bc46bd4Smrg ;; 1428f403ce92Smrg opened*) 1429f403ce92Smrg os=openedition 14309bc46bd4Smrg ;; 1431f403ce92Smrg os400*) 1432f403ce92Smrg os=os400 14339bc46bd4Smrg ;; 1434f403ce92Smrg sunos5*) 1435f403ce92Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14369bc46bd4Smrg ;; 1437f403ce92Smrg sunos6*) 1438f403ce92Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14399bc46bd4Smrg ;; 1440f403ce92Smrg wince*) 1441f403ce92Smrg os=wince 14429bc46bd4Smrg ;; 1443f403ce92Smrg utek*) 1444f403ce92Smrg os=bsd 14459bc46bd4Smrg ;; 1446f403ce92Smrg dynix*) 1447f403ce92Smrg os=bsd 14489bc46bd4Smrg ;; 1449f403ce92Smrg acis*) 1450f403ce92Smrg os=aos 14519bc46bd4Smrg ;; 1452f403ce92Smrg atheos*) 1453f403ce92Smrg os=atheos 14549bc46bd4Smrg ;; 1455f403ce92Smrg syllable*) 1456f403ce92Smrg os=syllable 14579bc46bd4Smrg ;; 1458f403ce92Smrg 386bsd) 1459f403ce92Smrg os=bsd 14609bc46bd4Smrg ;; 1461f403ce92Smrg ctix* | uts*) 1462f403ce92Smrg os=sysv 14639bc46bd4Smrg ;; 1464f403ce92Smrg nova*) 1465f403ce92Smrg os=rtmk-nova 14669bc46bd4Smrg ;; 1467f403ce92Smrg ns2) 1468f403ce92Smrg os=nextstep2 14699bc46bd4Smrg ;; 1470f403ce92Smrg # Preserve the version number of sinix5. 1471f403ce92Smrg sinix5.*) 1472f403ce92Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14739bc46bd4Smrg ;; 1474f403ce92Smrg sinix*) 1475f403ce92Smrg os=sysv4 14769bc46bd4Smrg ;; 1477f403ce92Smrg tpf*) 1478f403ce92Smrg os=tpf 14799bc46bd4Smrg ;; 1480f403ce92Smrg triton*) 1481f403ce92Smrg os=sysv3 14829bc46bd4Smrg ;; 1483f403ce92Smrg oss*) 1484f403ce92Smrg os=sysv3 14859bc46bd4Smrg ;; 1486f403ce92Smrg svr4*) 1487f403ce92Smrg os=sysv4 14889bc46bd4Smrg ;; 1489f403ce92Smrg svr3) 1490f403ce92Smrg os=sysv3 14919bc46bd4Smrg ;; 1492f403ce92Smrg sysvr4) 1493f403ce92Smrg os=sysv4 14949bc46bd4Smrg ;; 1495f403ce92Smrg ose*) 1496f403ce92Smrg os=ose 14979bc46bd4Smrg ;; 1498f403ce92Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1499f403ce92Smrg os=mint 15009bc46bd4Smrg ;; 1501f403ce92Smrg dicos*) 1502f403ce92Smrg os=dicos 15039bc46bd4Smrg ;; 1504f403ce92Smrg pikeos*) 1505f403ce92Smrg # Until real need of OS specific support for 1506f403ce92Smrg # particular features comes up, bare metal 1507f403ce92Smrg # configurations are quite functional. 1508f403ce92Smrg case $cpu in 1509f403ce92Smrg arm*) 1510f403ce92Smrg os=eabi 1511f403ce92Smrg ;; 1512f403ce92Smrg *) 1513f403ce92Smrg os=elf 1514f403ce92Smrg ;; 1515f403ce92Smrg esac 15169bc46bd4Smrg ;; 15179bc46bd4Smrg *) 1518f403ce92Smrg # No normalization, but not necessarily accepted, that comes below. 15199bc46bd4Smrg ;; 15209bc46bd4Smrgesac 1521f403ce92Smrg 15229bc46bd4Smrgelse 15239bc46bd4Smrg 15249bc46bd4Smrg# Here we handle the default operating systems that come with various machines. 15259bc46bd4Smrg# The value should be what the vendor currently ships out the door with their 15269bc46bd4Smrg# machine or put another way, the most popular os provided with the machine. 15279bc46bd4Smrg 15289bc46bd4Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15299bc46bd4Smrg# "-sun"), then you have to tell the case statement up towards the top 15309bc46bd4Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15319bc46bd4Smrg# will signal an error saying that MANUFACTURER isn't an operating 15329bc46bd4Smrg# system, and we'll never get to this point. 15339bc46bd4Smrg 1534f403ce92Smrgkernel= 1535f403ce92Smrgcase $cpu-$vendor in 1536f403ce92Smrg score-*) 1537f403ce92Smrg os=elf 15389bc46bd4Smrg ;; 1539f403ce92Smrg spu-*) 1540f403ce92Smrg os=elf 15419bc46bd4Smrg ;; 15429bc46bd4Smrg *-acorn) 1543f403ce92Smrg os=riscix1.2 15449bc46bd4Smrg ;; 15459bc46bd4Smrg arm*-rebel) 1546f403ce92Smrg kernel=linux 1547f403ce92Smrg os=gnu 15489bc46bd4Smrg ;; 15499bc46bd4Smrg arm*-semi) 1550f403ce92Smrg os=aout 1551f403ce92Smrg ;; 1552f403ce92Smrg c4x-* | tic4x-*) 1553f403ce92Smrg os=coff 1554f403ce92Smrg ;; 1555f403ce92Smrg c8051-*) 1556f403ce92Smrg os=elf 1557f403ce92Smrg ;; 1558f403ce92Smrg clipper-intergraph) 1559f403ce92Smrg os=clix 15609bc46bd4Smrg ;; 1561f403ce92Smrg hexagon-*) 1562f403ce92Smrg os=elf 15639bc46bd4Smrg ;; 1564c41d98afSmrg tic54x-*) 1565f403ce92Smrg os=coff 1566c41d98afSmrg ;; 1567c41d98afSmrg tic55x-*) 1568f403ce92Smrg os=coff 1569c41d98afSmrg ;; 1570c41d98afSmrg tic6x-*) 1571f403ce92Smrg os=coff 1572c41d98afSmrg ;; 15739bc46bd4Smrg # This must come before the *-dec entry. 15749bc46bd4Smrg pdp10-*) 1575f403ce92Smrg os=tops20 15769bc46bd4Smrg ;; 15779bc46bd4Smrg pdp11-*) 1578f403ce92Smrg os=none 15799bc46bd4Smrg ;; 15809bc46bd4Smrg *-dec | vax-*) 1581f403ce92Smrg os=ultrix4.2 15829bc46bd4Smrg ;; 15839bc46bd4Smrg m68*-apollo) 1584f403ce92Smrg os=domain 15859bc46bd4Smrg ;; 15869bc46bd4Smrg i386-sun) 1587f403ce92Smrg os=sunos4.0.2 15889bc46bd4Smrg ;; 15899bc46bd4Smrg m68000-sun) 1590f403ce92Smrg os=sunos3 15919bc46bd4Smrg ;; 15929bc46bd4Smrg m68*-cisco) 1593f403ce92Smrg os=aout 15949bc46bd4Smrg ;; 1595f403ce92Smrg mep-*) 1596f403ce92Smrg os=elf 15979bc46bd4Smrg ;; 15989bc46bd4Smrg mips*-cisco) 1599f403ce92Smrg os=elf 16009bc46bd4Smrg ;; 16019bc46bd4Smrg mips*-*) 1602f403ce92Smrg os=elf 16039bc46bd4Smrg ;; 16049bc46bd4Smrg or32-*) 1605f403ce92Smrg os=coff 16069bc46bd4Smrg ;; 16079bc46bd4Smrg *-tti) # must be before sparc entry or we get the wrong os. 1608f403ce92Smrg os=sysv3 16099bc46bd4Smrg ;; 16109bc46bd4Smrg sparc-* | *-sun) 1611f403ce92Smrg os=sunos4.1.1 16129bc46bd4Smrg ;; 1613f403ce92Smrg pru-*) 1614f403ce92Smrg os=elf 16159bc46bd4Smrg ;; 1616f403ce92Smrg *-be) 1617f403ce92Smrg os=beos 16189bc46bd4Smrg ;; 16199bc46bd4Smrg *-ibm) 1620f403ce92Smrg os=aix 16219bc46bd4Smrg ;; 1622f403ce92Smrg *-knuth) 1623f403ce92Smrg os=mmixware 16249bc46bd4Smrg ;; 16259bc46bd4Smrg *-wec) 1626f403ce92Smrg os=proelf 16279bc46bd4Smrg ;; 16289bc46bd4Smrg *-winbond) 1629f403ce92Smrg os=proelf 16309bc46bd4Smrg ;; 16319bc46bd4Smrg *-oki) 1632f403ce92Smrg os=proelf 16339bc46bd4Smrg ;; 16349bc46bd4Smrg *-hp) 1635f403ce92Smrg os=hpux 16369bc46bd4Smrg ;; 16379bc46bd4Smrg *-hitachi) 1638f403ce92Smrg os=hiux 16399bc46bd4Smrg ;; 16409bc46bd4Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1641f403ce92Smrg os=sysv 16429bc46bd4Smrg ;; 16439bc46bd4Smrg *-cbm) 1644f403ce92Smrg os=amigaos 16459bc46bd4Smrg ;; 16469bc46bd4Smrg *-dg) 1647f403ce92Smrg os=dgux 16489bc46bd4Smrg ;; 16499bc46bd4Smrg *-dolphin) 1650f403ce92Smrg os=sysv3 16519bc46bd4Smrg ;; 16529bc46bd4Smrg m68k-ccur) 1653f403ce92Smrg os=rtu 16549bc46bd4Smrg ;; 16559bc46bd4Smrg m88k-omron*) 1656f403ce92Smrg os=luna 16579bc46bd4Smrg ;; 1658f403ce92Smrg *-next) 1659f403ce92Smrg os=nextstep 16609bc46bd4Smrg ;; 16619bc46bd4Smrg *-sequent) 1662f403ce92Smrg os=ptx 16639bc46bd4Smrg ;; 16649bc46bd4Smrg *-crds) 1665f403ce92Smrg os=unos 16669bc46bd4Smrg ;; 16679bc46bd4Smrg *-ns) 1668f403ce92Smrg os=genix 16699bc46bd4Smrg ;; 16709bc46bd4Smrg i370-*) 1671f403ce92Smrg os=mvs 16729bc46bd4Smrg ;; 16739bc46bd4Smrg *-gould) 1674f403ce92Smrg os=sysv 16759bc46bd4Smrg ;; 16769bc46bd4Smrg *-highlevel) 1677f403ce92Smrg os=bsd 16789bc46bd4Smrg ;; 16799bc46bd4Smrg *-encore) 1680f403ce92Smrg os=bsd 16819bc46bd4Smrg ;; 16829bc46bd4Smrg *-sgi) 1683f403ce92Smrg os=irix 16849bc46bd4Smrg ;; 16859bc46bd4Smrg *-siemens) 1686f403ce92Smrg os=sysv4 16879bc46bd4Smrg ;; 16889bc46bd4Smrg *-masscomp) 1689f403ce92Smrg os=rtu 16909bc46bd4Smrg ;; 16919bc46bd4Smrg f30[01]-fujitsu | f700-fujitsu) 1692f403ce92Smrg os=uxpv 16939bc46bd4Smrg ;; 16949bc46bd4Smrg *-rom68k) 1695f403ce92Smrg os=coff 16969bc46bd4Smrg ;; 16979bc46bd4Smrg *-*bug) 1698f403ce92Smrg os=coff 16999bc46bd4Smrg ;; 17009bc46bd4Smrg *-apple) 1701f403ce92Smrg os=macos 17029bc46bd4Smrg ;; 17039bc46bd4Smrg *-atari*) 1704f403ce92Smrg os=mint 1705f403ce92Smrg ;; 1706f403ce92Smrg *-wrs) 1707f403ce92Smrg os=vxworks 17089bc46bd4Smrg ;; 17099bc46bd4Smrg *) 1710f403ce92Smrg os=none 17119bc46bd4Smrg ;; 17129bc46bd4Smrgesac 1713f403ce92Smrg 17149bc46bd4Smrgfi 17159bc46bd4Smrg 1716f403ce92Smrg# Now, validate our (potentially fixed-up) OS. 1717f403ce92Smrgcase $os in 1718f403ce92Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1719f403ce92Smrg musl* | newlib* | relibc* | uclibc*) 1720f403ce92Smrg ;; 1721f403ce92Smrg # Likewise for "kernel-abi" 1722f403ce92Smrg eabi* | gnueabi*) 1723f403ce92Smrg ;; 1724f403ce92Smrg # VxWorks passes extra cpu info in the 4th filed. 1725f403ce92Smrg simlinux | simwindows | spe) 1726f403ce92Smrg ;; 1727f403ce92Smrg # Now accept the basic system types. 1728f403ce92Smrg # The portable systems comes first. 1729f403ce92Smrg # Each alternative MUST end in a * to match a version number. 1730f403ce92Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1731f403ce92Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1732f403ce92Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1733f403ce92Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1734f403ce92Smrg | hiux* | abug | nacl* | netware* | windows* \ 1735f403ce92Smrg | os9* | macos* | osx* | ios* \ 1736f403ce92Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1737f403ce92Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1738f403ce92Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1739f403ce92Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1740f403ce92Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1741f403ce92Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1742f403ce92Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1743f403ce92Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1744f403ce92Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1745f403ce92Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1746f403ce92Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1747f403ce92Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1748f403ce92Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1749f403ce92Smrg | midipix* | mingw32* | mingw64* | mint* \ 1750f403ce92Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1751f403ce92Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1752f403ce92Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1753f403ce92Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1754f403ce92Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1755f403ce92Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1756f403ce92Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1757f403ce92Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1758f403ce92Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1759f403ce92Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1760f403ce92Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1761f403ce92Smrg | fiwix* | mlibc* ) 1762f403ce92Smrg ;; 1763f403ce92Smrg # This one is extra strict with allowed versions 1764f403ce92Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1765f403ce92Smrg # Don't forget version if it is 3.2v4 or newer. 1766f403ce92Smrg ;; 1767f403ce92Smrg none) 1768f403ce92Smrg ;; 1769f403ce92Smrg kernel* ) 1770f403ce92Smrg # Restricted further below 1771f403ce92Smrg ;; 1772f403ce92Smrg *) 1773f403ce92Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1774f403ce92Smrg exit 1 1775f403ce92Smrg ;; 1776f403ce92Smrgesac 1777f403ce92Smrg 1778f403ce92Smrg# As a final step for OS-related things, validate the OS-kernel combination 1779f403ce92Smrg# (given a valid OS), if there is a kernel. 1780f403ce92Smrgcase $kernel-$os in 1781f403ce92Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1782f403ce92Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 1783f403ce92Smrg ;; 1784f403ce92Smrg uclinux-uclibc* ) 1785f403ce92Smrg ;; 1786f403ce92Smrg managarm-mlibc* | managarm-kernel* ) 1787f403ce92Smrg ;; 1788f403ce92Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 1789f403ce92Smrg # These are just libc implementations, not actual OSes, and thus 1790f403ce92Smrg # require a kernel. 1791f403ce92Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1792f403ce92Smrg exit 1 1793f403ce92Smrg ;; 1794f403ce92Smrg -kernel* ) 1795f403ce92Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 1796f403ce92Smrg exit 1 1797f403ce92Smrg ;; 1798f403ce92Smrg *-kernel* ) 1799f403ce92Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 1800f403ce92Smrg exit 1 1801f403ce92Smrg ;; 1802f403ce92Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1803f403ce92Smrg ;; 1804f403ce92Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1805f403ce92Smrg ;; 1806f403ce92Smrg nto-qnx*) 1807f403ce92Smrg ;; 1808f403ce92Smrg os2-emx) 1809f403ce92Smrg ;; 1810f403ce92Smrg *-eabi* | *-gnueabi*) 1811f403ce92Smrg ;; 1812f403ce92Smrg -*) 1813f403ce92Smrg # Blank kernel with real OS is always fine. 1814f403ce92Smrg ;; 1815f403ce92Smrg *-*) 1816f403ce92Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1817f403ce92Smrg exit 1 1818f403ce92Smrg ;; 1819f403ce92Smrgesac 1820f403ce92Smrg 18219bc46bd4Smrg# Here we handle the case where we know the os, and the CPU type, but not the 18229bc46bd4Smrg# manufacturer. We pick the logical manufacturer. 1823f403ce92Smrgcase $vendor in 1824f403ce92Smrg unknown) 1825f403ce92Smrg case $cpu-$os in 1826f403ce92Smrg *-riscix*) 18279bc46bd4Smrg vendor=acorn 18289bc46bd4Smrg ;; 1829f403ce92Smrg *-sunos*) 18309bc46bd4Smrg vendor=sun 18319bc46bd4Smrg ;; 1832f403ce92Smrg *-cnk* | *-aix*) 18339bc46bd4Smrg vendor=ibm 18349bc46bd4Smrg ;; 1835f403ce92Smrg *-beos*) 18369bc46bd4Smrg vendor=be 18379bc46bd4Smrg ;; 1838f403ce92Smrg *-hpux*) 18399bc46bd4Smrg vendor=hp 18409bc46bd4Smrg ;; 1841f403ce92Smrg *-mpeix*) 18429bc46bd4Smrg vendor=hp 18439bc46bd4Smrg ;; 1844f403ce92Smrg *-hiux*) 18459bc46bd4Smrg vendor=hitachi 18469bc46bd4Smrg ;; 1847f403ce92Smrg *-unos*) 18489bc46bd4Smrg vendor=crds 18499bc46bd4Smrg ;; 1850f403ce92Smrg *-dgux*) 18519bc46bd4Smrg vendor=dg 18529bc46bd4Smrg ;; 1853f403ce92Smrg *-luna*) 18549bc46bd4Smrg vendor=omron 18559bc46bd4Smrg ;; 1856f403ce92Smrg *-genix*) 18579bc46bd4Smrg vendor=ns 18589bc46bd4Smrg ;; 1859f403ce92Smrg *-clix*) 1860f403ce92Smrg vendor=intergraph 1861f403ce92Smrg ;; 1862f403ce92Smrg *-mvs* | *-opened*) 1863f403ce92Smrg vendor=ibm 1864f403ce92Smrg ;; 1865f403ce92Smrg *-os400*) 18669bc46bd4Smrg vendor=ibm 18679bc46bd4Smrg ;; 1868f403ce92Smrg s390-* | s390x-*) 18699bc46bd4Smrg vendor=ibm 18709bc46bd4Smrg ;; 1871f403ce92Smrg *-ptx*) 18729bc46bd4Smrg vendor=sequent 18739bc46bd4Smrg ;; 1874f403ce92Smrg *-tpf*) 18759bc46bd4Smrg vendor=ibm 18769bc46bd4Smrg ;; 1877f403ce92Smrg *-vxsim* | *-vxworks* | *-windiss*) 18789bc46bd4Smrg vendor=wrs 18799bc46bd4Smrg ;; 1880f403ce92Smrg *-aux*) 18819bc46bd4Smrg vendor=apple 18829bc46bd4Smrg ;; 1883f403ce92Smrg *-hms*) 18849bc46bd4Smrg vendor=hitachi 18859bc46bd4Smrg ;; 1886f403ce92Smrg *-mpw* | *-macos*) 18879bc46bd4Smrg vendor=apple 18889bc46bd4Smrg ;; 1889f403ce92Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18909bc46bd4Smrg vendor=atari 18919bc46bd4Smrg ;; 1892f403ce92Smrg *-vos*) 18939bc46bd4Smrg vendor=stratus 18949bc46bd4Smrg ;; 18959bc46bd4Smrg esac 18969bc46bd4Smrg ;; 18979bc46bd4Smrgesac 18989bc46bd4Smrg 1899f403ce92Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 19009bc46bd4Smrgexit 19019bc46bd4Smrg 19029bc46bd4Smrg# Local variables: 1903f403ce92Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 19049bc46bd4Smrg# time-stamp-start: "timestamp='" 19059bc46bd4Smrg# time-stamp-format: "%:y-%02m-%02d" 19069bc46bd4Smrg# time-stamp-end: "'" 19079bc46bd4Smrg# End: 1908