config.sub revision fbfaf8f3
1ea148d1dSmrg#! /bin/sh 243f32c10Smrg# Configuration validation subroutine script. 3fbfaf8f3Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 443f32c10Smrg 5fbfaf8f3Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6fbfaf8f3Smrg 7fbfaf8f3Smrgtimestamp='2023-01-21' 843f32c10Smrg 96ef05171Smrg# This file is free software; you can redistribute it and/or modify it 106ef05171Smrg# under the terms of the GNU General Public License as published by 11fbfaf8f3Smrg# the Free Software Foundation, either version 3 of the License, or 1243f32c10Smrg# (at your option) any later version. 1343f32c10Smrg# 146ef05171Smrg# This program is distributed in the hope that it will be useful, but 156ef05171Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 166ef05171Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 176ef05171Smrg# General Public License for more details. 1843f32c10Smrg# 1943f32c10Smrg# You should have received a copy of the GNU General Public License 20ea148d1dSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 2143f32c10Smrg# 2243f32c10Smrg# As a special exception to the GNU General Public License, if you 2343f32c10Smrg# distribute this file as part of a program that contains a 2443f32c10Smrg# configuration script generated by Autoconf, you may include it under 256ef05171Smrg# the same distribution terms that you use for the rest of that 266ef05171Smrg# program. This Exception is an additional permission under section 7 276ef05171Smrg# of the GNU General Public License, version 3 ("GPLv3"). 2843f32c10Smrg 2943f32c10Smrg 306ef05171Smrg# Please send patches to <config-patches@gnu.org>. 3143f32c10Smrg# 3243f32c10Smrg# Configuration subroutine to validate and canonicalize a configuration type. 3343f32c10Smrg# Supply the specified configuration type as an argument. 3443f32c10Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 3543f32c10Smrg# Otherwise, we print the canonical config type on stdout and succeed. 3643f32c10Smrg 376ef05171Smrg# You can get the latest version of this script from: 38fbfaf8f3Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 396ef05171Smrg 4043f32c10Smrg# This file is supposed to be the same for all GNU packages 4143f32c10Smrg# and recognize all the CPU types, system types and aliases 4243f32c10Smrg# that are meaningful with *any* GNU software. 4343f32c10Smrg# Each package is responsible for reporting which valid configurations 4443f32c10Smrg# it does not support. The user should be able to distinguish 4543f32c10Smrg# a failure to support a valid configuration from a meaningless 4643f32c10Smrg# configuration. 4743f32c10Smrg 4843f32c10Smrg# The goal of this file is to map all the various variations of a given 4943f32c10Smrg# machine specification into a single specification in the form: 5043f32c10Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5143f32c10Smrg# or in some cases, the newer four-part form: 5243f32c10Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5343f32c10Smrg# It is wrong to echo any other type of specification. 5443f32c10Smrg 55fbfaf8f3Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 56fbfaf8f3Smrg# about features and limitations of the classic Bourne shell that were 57fbfaf8f3Smrg# superseded or lifted in POSIX. However, this script identifies a wide 58fbfaf8f3Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 59fbfaf8f3Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 60fbfaf8f3Smrg# have a pre-POSIX /bin/sh. 61fbfaf8f3Smrg 6243f32c10Smrgme=`echo "$0" | sed -e 's,.*/,,'` 6343f32c10Smrg 6443f32c10Smrgusage="\ 656ef05171SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6643f32c10Smrg 6743f32c10SmrgCanonicalize a configuration name. 6843f32c10Smrg 69ea148d1dSmrgOptions: 7043f32c10Smrg -h, --help print this help, then exit 7143f32c10Smrg -t, --time-stamp print date of last modification, then exit 7243f32c10Smrg -v, --version print version number, then exit 7343f32c10Smrg 7443f32c10SmrgReport bugs and patches to <config-patches@gnu.org>." 7543f32c10Smrg 7643f32c10Smrgversion="\ 7743f32c10SmrgGNU config.sub ($timestamp) 7843f32c10Smrg 79fbfaf8f3SmrgCopyright 1992-2023 Free Software Foundation, Inc. 8043f32c10Smrg 8143f32c10SmrgThis is free software; see the source for copying conditions. There is NO 8243f32c10Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8343f32c10Smrg 8443f32c10Smrghelp=" 8543f32c10SmrgTry \`$me --help' for more information." 8643f32c10Smrg 8743f32c10Smrg# Parse command line 8843f32c10Smrgwhile test $# -gt 0 ; do 8943f32c10Smrg case $1 in 9043f32c10Smrg --time-stamp | --time* | -t ) 9143f32c10Smrg echo "$timestamp" ; exit ;; 9243f32c10Smrg --version | -v ) 9343f32c10Smrg echo "$version" ; exit ;; 9443f32c10Smrg --help | --h* | -h ) 9543f32c10Smrg echo "$usage"; exit ;; 9643f32c10Smrg -- ) # Stop option processing 9743f32c10Smrg shift; break ;; 9843f32c10Smrg - ) # Use stdin as input. 9943f32c10Smrg break ;; 10043f32c10Smrg -* ) 101fbfaf8f3Smrg echo "$me: invalid option $1$help" >&2 10243f32c10Smrg exit 1 ;; 10343f32c10Smrg 10443f32c10Smrg *local*) 10543f32c10Smrg # First pass through any local machine types. 106ea148d1dSmrg echo "$1" 10743f32c10Smrg exit ;; 10843f32c10Smrg 10943f32c10Smrg * ) 11043f32c10Smrg break ;; 11143f32c10Smrg esac 11243f32c10Smrgdone 11343f32c10Smrg 11443f32c10Smrgcase $# in 11543f32c10Smrg 0) echo "$me: missing argument$help" >&2 11643f32c10Smrg exit 1;; 11743f32c10Smrg 1) ;; 11843f32c10Smrg *) echo "$me: too many arguments$help" >&2 11943f32c10Smrg exit 1;; 12043f32c10Smrgesac 12143f32c10Smrg 122ea148d1dSmrg# Split fields of configuration type 123fbfaf8f3Smrg# shellcheck disable=SC2162 124fbfaf8f3Smrgsaved_IFS=$IFS 125fbfaf8f3SmrgIFS="-" read field1 field2 field3 field4 <<EOF 126ea148d1dSmrg$1 127ea148d1dSmrgEOF 128fbfaf8f3SmrgIFS=$saved_IFS 12943f32c10Smrg 130ea148d1dSmrg# Separate into logical components for further validation 131ea148d1dSmrgcase $1 in 132ea148d1dSmrg *-*-*-*-*) 133ea148d1dSmrg echo Invalid configuration \`"$1"\': more than four components >&2 134ea148d1dSmrg exit 1 13543f32c10Smrg ;; 136ea148d1dSmrg *-*-*-*) 137ea148d1dSmrg basic_machine=$field1-$field2 138fbfaf8f3Smrg basic_os=$field3-$field4 13943f32c10Smrg ;; 140ea148d1dSmrg *-*-*) 141ea148d1dSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142ea148d1dSmrg # parts 143ea148d1dSmrg maybe_os=$field2-$field3 144ea148d1dSmrg case $maybe_os in 145fbfaf8f3Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 146ea148d1dSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147ea148d1dSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148fbfaf8f3Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 149ea148d1dSmrg basic_machine=$field1 150fbfaf8f3Smrg basic_os=$maybe_os 151ea148d1dSmrg ;; 152ea148d1dSmrg android-linux) 153ea148d1dSmrg basic_machine=$field1-unknown 154fbfaf8f3Smrg basic_os=linux-android 155ea148d1dSmrg ;; 156ea148d1dSmrg *) 157ea148d1dSmrg basic_machine=$field1-$field2 158fbfaf8f3Smrg basic_os=$field3 159ea148d1dSmrg ;; 160ea148d1dSmrg esac 16143f32c10Smrg ;; 162ea148d1dSmrg *-*) 163fbfaf8f3Smrg # A lone config we happen to match not fitting any pattern 164ea148d1dSmrg case $field1-$field2 in 165ea148d1dSmrg decstation-3100) 166ea148d1dSmrg basic_machine=mips-dec 167fbfaf8f3Smrg basic_os= 168ea148d1dSmrg ;; 169ea148d1dSmrg *-*) 170ea148d1dSmrg # Second component is usually, but not always the OS 171ea148d1dSmrg case $field2 in 172ea148d1dSmrg # Prevent following clause from handling this valid os 173ea148d1dSmrg sun*os*) 174ea148d1dSmrg basic_machine=$field1 175fbfaf8f3Smrg basic_os=$field2 176fbfaf8f3Smrg ;; 177fbfaf8f3Smrg zephyr*) 178fbfaf8f3Smrg basic_machine=$field1-unknown 179fbfaf8f3Smrg basic_os=$field2 180ea148d1dSmrg ;; 181ea148d1dSmrg # Manufacturers 182ea148d1dSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183ea148d1dSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184ea148d1dSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185ea148d1dSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186ea148d1dSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187ea148d1dSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188ea148d1dSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189ea148d1dSmrg | microblaze* | sim | cisco \ 190ea148d1dSmrg | oki | wec | wrs | winbond) 191ea148d1dSmrg basic_machine=$field1-$field2 192fbfaf8f3Smrg basic_os= 193ea148d1dSmrg ;; 194ea148d1dSmrg *) 195ea148d1dSmrg basic_machine=$field1 196fbfaf8f3Smrg basic_os=$field2 197ea148d1dSmrg ;; 198ea148d1dSmrg esac 199ea148d1dSmrg ;; 200ea148d1dSmrg esac 20143f32c10Smrg ;; 202ea148d1dSmrg *) 203ea148d1dSmrg # Convert single-component short-hands not valid as part of 204ea148d1dSmrg # multi-component configurations. 205ea148d1dSmrg case $field1 in 206ea148d1dSmrg 386bsd) 207ea148d1dSmrg basic_machine=i386-pc 208fbfaf8f3Smrg basic_os=bsd 209ea148d1dSmrg ;; 210ea148d1dSmrg a29khif) 211ea148d1dSmrg basic_machine=a29k-amd 212fbfaf8f3Smrg basic_os=udi 213ea148d1dSmrg ;; 214ea148d1dSmrg adobe68k) 215ea148d1dSmrg basic_machine=m68010-adobe 216fbfaf8f3Smrg basic_os=scout 217ea148d1dSmrg ;; 218ea148d1dSmrg alliant) 219ea148d1dSmrg basic_machine=fx80-alliant 220fbfaf8f3Smrg basic_os= 221ea148d1dSmrg ;; 222ea148d1dSmrg altos | altos3068) 223ea148d1dSmrg basic_machine=m68k-altos 224fbfaf8f3Smrg basic_os= 225ea148d1dSmrg ;; 226ea148d1dSmrg am29k) 227ea148d1dSmrg basic_machine=a29k-none 228fbfaf8f3Smrg basic_os=bsd 229ea148d1dSmrg ;; 230ea148d1dSmrg amdahl) 231ea148d1dSmrg basic_machine=580-amdahl 232fbfaf8f3Smrg basic_os=sysv 233ea148d1dSmrg ;; 234ea148d1dSmrg amiga) 235ea148d1dSmrg basic_machine=m68k-unknown 236fbfaf8f3Smrg basic_os= 237ea148d1dSmrg ;; 238ea148d1dSmrg amigaos | amigados) 239ea148d1dSmrg basic_machine=m68k-unknown 240fbfaf8f3Smrg basic_os=amigaos 241ea148d1dSmrg ;; 242ea148d1dSmrg amigaunix | amix) 243ea148d1dSmrg basic_machine=m68k-unknown 244fbfaf8f3Smrg basic_os=sysv4 245ea148d1dSmrg ;; 246ea148d1dSmrg apollo68) 247ea148d1dSmrg basic_machine=m68k-apollo 248fbfaf8f3Smrg basic_os=sysv 249ea148d1dSmrg ;; 250ea148d1dSmrg apollo68bsd) 251ea148d1dSmrg basic_machine=m68k-apollo 252fbfaf8f3Smrg basic_os=bsd 253ea148d1dSmrg ;; 254ea148d1dSmrg aros) 255ea148d1dSmrg basic_machine=i386-pc 256fbfaf8f3Smrg basic_os=aros 257ea148d1dSmrg ;; 258ea148d1dSmrg aux) 259ea148d1dSmrg basic_machine=m68k-apple 260fbfaf8f3Smrg basic_os=aux 261ea148d1dSmrg ;; 262ea148d1dSmrg balance) 263ea148d1dSmrg basic_machine=ns32k-sequent 264fbfaf8f3Smrg basic_os=dynix 265ea148d1dSmrg ;; 266ea148d1dSmrg blackfin) 267ea148d1dSmrg basic_machine=bfin-unknown 268fbfaf8f3Smrg basic_os=linux 269ea148d1dSmrg ;; 270ea148d1dSmrg cegcc) 271ea148d1dSmrg basic_machine=arm-unknown 272fbfaf8f3Smrg basic_os=cegcc 273ea148d1dSmrg ;; 274ea148d1dSmrg convex-c1) 275ea148d1dSmrg basic_machine=c1-convex 276fbfaf8f3Smrg basic_os=bsd 277ea148d1dSmrg ;; 278ea148d1dSmrg convex-c2) 279ea148d1dSmrg basic_machine=c2-convex 280fbfaf8f3Smrg basic_os=bsd 281ea148d1dSmrg ;; 282ea148d1dSmrg convex-c32) 283ea148d1dSmrg basic_machine=c32-convex 284fbfaf8f3Smrg basic_os=bsd 285ea148d1dSmrg ;; 286ea148d1dSmrg convex-c34) 287ea148d1dSmrg basic_machine=c34-convex 288fbfaf8f3Smrg basic_os=bsd 289ea148d1dSmrg ;; 290ea148d1dSmrg convex-c38) 291ea148d1dSmrg basic_machine=c38-convex 292fbfaf8f3Smrg basic_os=bsd 293ea148d1dSmrg ;; 294ea148d1dSmrg cray) 295ea148d1dSmrg basic_machine=j90-cray 296fbfaf8f3Smrg basic_os=unicos 297ea148d1dSmrg ;; 298ea148d1dSmrg crds | unos) 299ea148d1dSmrg basic_machine=m68k-crds 300fbfaf8f3Smrg basic_os= 301ea148d1dSmrg ;; 302ea148d1dSmrg da30) 303ea148d1dSmrg basic_machine=m68k-da30 304fbfaf8f3Smrg basic_os= 305ea148d1dSmrg ;; 306ea148d1dSmrg decstation | pmax | pmin | dec3100 | decstatn) 307ea148d1dSmrg basic_machine=mips-dec 308fbfaf8f3Smrg basic_os= 309ea148d1dSmrg ;; 310ea148d1dSmrg delta88) 311ea148d1dSmrg basic_machine=m88k-motorola 312fbfaf8f3Smrg basic_os=sysv3 313ea148d1dSmrg ;; 314ea148d1dSmrg dicos) 315ea148d1dSmrg basic_machine=i686-pc 316fbfaf8f3Smrg basic_os=dicos 317ea148d1dSmrg ;; 318ea148d1dSmrg djgpp) 319ea148d1dSmrg basic_machine=i586-pc 320fbfaf8f3Smrg basic_os=msdosdjgpp 321ea148d1dSmrg ;; 322ea148d1dSmrg ebmon29k) 323ea148d1dSmrg basic_machine=a29k-amd 324fbfaf8f3Smrg basic_os=ebmon 325ea148d1dSmrg ;; 326ea148d1dSmrg es1800 | OSE68k | ose68k | ose | OSE) 327ea148d1dSmrg basic_machine=m68k-ericsson 328fbfaf8f3Smrg basic_os=ose 329ea148d1dSmrg ;; 330ea148d1dSmrg gmicro) 331ea148d1dSmrg basic_machine=tron-gmicro 332fbfaf8f3Smrg basic_os=sysv 333ea148d1dSmrg ;; 334ea148d1dSmrg go32) 335ea148d1dSmrg basic_machine=i386-pc 336fbfaf8f3Smrg basic_os=go32 337ea148d1dSmrg ;; 338ea148d1dSmrg h8300hms) 339ea148d1dSmrg basic_machine=h8300-hitachi 340fbfaf8f3Smrg basic_os=hms 341ea148d1dSmrg ;; 342ea148d1dSmrg h8300xray) 343ea148d1dSmrg basic_machine=h8300-hitachi 344fbfaf8f3Smrg basic_os=xray 345ea148d1dSmrg ;; 346ea148d1dSmrg h8500hms) 347ea148d1dSmrg basic_machine=h8500-hitachi 348fbfaf8f3Smrg basic_os=hms 349ea148d1dSmrg ;; 350ea148d1dSmrg harris) 351ea148d1dSmrg basic_machine=m88k-harris 352fbfaf8f3Smrg basic_os=sysv3 353ea148d1dSmrg ;; 354fbfaf8f3Smrg hp300 | hp300hpux) 355ea148d1dSmrg basic_machine=m68k-hp 356fbfaf8f3Smrg basic_os=hpux 357ea148d1dSmrg ;; 358ea148d1dSmrg hp300bsd) 359ea148d1dSmrg basic_machine=m68k-hp 360fbfaf8f3Smrg basic_os=bsd 361ea148d1dSmrg ;; 362ea148d1dSmrg hppaosf) 363ea148d1dSmrg basic_machine=hppa1.1-hp 364fbfaf8f3Smrg basic_os=osf 365ea148d1dSmrg ;; 366ea148d1dSmrg hppro) 367ea148d1dSmrg basic_machine=hppa1.1-hp 368fbfaf8f3Smrg basic_os=proelf 369ea148d1dSmrg ;; 370ea148d1dSmrg i386mach) 371ea148d1dSmrg basic_machine=i386-mach 372fbfaf8f3Smrg basic_os=mach 373ea148d1dSmrg ;; 374ea148d1dSmrg isi68 | isi) 375ea148d1dSmrg basic_machine=m68k-isi 376fbfaf8f3Smrg basic_os=sysv 377ea148d1dSmrg ;; 378ea148d1dSmrg m68knommu) 379ea148d1dSmrg basic_machine=m68k-unknown 380fbfaf8f3Smrg basic_os=linux 381ea148d1dSmrg ;; 382ea148d1dSmrg magnum | m3230) 383ea148d1dSmrg basic_machine=mips-mips 384fbfaf8f3Smrg basic_os=sysv 385ea148d1dSmrg ;; 386ea148d1dSmrg merlin) 387ea148d1dSmrg basic_machine=ns32k-utek 388fbfaf8f3Smrg basic_os=sysv 389ea148d1dSmrg ;; 390ea148d1dSmrg mingw64) 391ea148d1dSmrg basic_machine=x86_64-pc 392fbfaf8f3Smrg basic_os=mingw64 393ea148d1dSmrg ;; 394ea148d1dSmrg mingw32) 395ea148d1dSmrg basic_machine=i686-pc 396fbfaf8f3Smrg basic_os=mingw32 397ea148d1dSmrg ;; 398ea148d1dSmrg mingw32ce) 399ea148d1dSmrg basic_machine=arm-unknown 400fbfaf8f3Smrg basic_os=mingw32ce 401ea148d1dSmrg ;; 402ea148d1dSmrg monitor) 403ea148d1dSmrg basic_machine=m68k-rom68k 404fbfaf8f3Smrg basic_os=coff 405ea148d1dSmrg ;; 406ea148d1dSmrg morphos) 407ea148d1dSmrg basic_machine=powerpc-unknown 408fbfaf8f3Smrg basic_os=morphos 409ea148d1dSmrg ;; 410ea148d1dSmrg moxiebox) 411ea148d1dSmrg basic_machine=moxie-unknown 412fbfaf8f3Smrg basic_os=moxiebox 413ea148d1dSmrg ;; 414ea148d1dSmrg msdos) 415ea148d1dSmrg basic_machine=i386-pc 416fbfaf8f3Smrg basic_os=msdos 417ea148d1dSmrg ;; 418ea148d1dSmrg msys) 419ea148d1dSmrg basic_machine=i686-pc 420fbfaf8f3Smrg basic_os=msys 421ea148d1dSmrg ;; 422ea148d1dSmrg mvs) 423ea148d1dSmrg basic_machine=i370-ibm 424fbfaf8f3Smrg basic_os=mvs 425ea148d1dSmrg ;; 426ea148d1dSmrg nacl) 427ea148d1dSmrg basic_machine=le32-unknown 428fbfaf8f3Smrg basic_os=nacl 429ea148d1dSmrg ;; 430ea148d1dSmrg ncr3000) 431ea148d1dSmrg basic_machine=i486-ncr 432fbfaf8f3Smrg basic_os=sysv4 433ea148d1dSmrg ;; 434ea148d1dSmrg netbsd386) 435ea148d1dSmrg basic_machine=i386-pc 436fbfaf8f3Smrg basic_os=netbsd 437ea148d1dSmrg ;; 438ea148d1dSmrg netwinder) 439ea148d1dSmrg basic_machine=armv4l-rebel 440fbfaf8f3Smrg basic_os=linux 441ea148d1dSmrg ;; 442ea148d1dSmrg news | news700 | news800 | news900) 443ea148d1dSmrg basic_machine=m68k-sony 444fbfaf8f3Smrg basic_os=newsos 445ea148d1dSmrg ;; 446ea148d1dSmrg news1000) 447ea148d1dSmrg basic_machine=m68030-sony 448fbfaf8f3Smrg basic_os=newsos 449ea148d1dSmrg ;; 450ea148d1dSmrg necv70) 451ea148d1dSmrg basic_machine=v70-nec 452fbfaf8f3Smrg basic_os=sysv 453ea148d1dSmrg ;; 454ea148d1dSmrg nh3000) 455ea148d1dSmrg basic_machine=m68k-harris 456fbfaf8f3Smrg basic_os=cxux 457ea148d1dSmrg ;; 458ea148d1dSmrg nh[45]000) 459ea148d1dSmrg basic_machine=m88k-harris 460fbfaf8f3Smrg basic_os=cxux 461ea148d1dSmrg ;; 462ea148d1dSmrg nindy960) 463ea148d1dSmrg basic_machine=i960-intel 464fbfaf8f3Smrg basic_os=nindy 465ea148d1dSmrg ;; 466ea148d1dSmrg mon960) 467ea148d1dSmrg basic_machine=i960-intel 468fbfaf8f3Smrg basic_os=mon960 469ea148d1dSmrg ;; 470ea148d1dSmrg nonstopux) 471ea148d1dSmrg basic_machine=mips-compaq 472fbfaf8f3Smrg basic_os=nonstopux 473ea148d1dSmrg ;; 474ea148d1dSmrg os400) 475ea148d1dSmrg basic_machine=powerpc-ibm 476fbfaf8f3Smrg basic_os=os400 477ea148d1dSmrg ;; 478ea148d1dSmrg OSE68000 | ose68000) 479ea148d1dSmrg basic_machine=m68000-ericsson 480fbfaf8f3Smrg basic_os=ose 481ea148d1dSmrg ;; 482ea148d1dSmrg os68k) 483ea148d1dSmrg basic_machine=m68k-none 484fbfaf8f3Smrg basic_os=os68k 485ea148d1dSmrg ;; 486ea148d1dSmrg paragon) 487ea148d1dSmrg basic_machine=i860-intel 488fbfaf8f3Smrg basic_os=osf 489ea148d1dSmrg ;; 490ea148d1dSmrg parisc) 491ea148d1dSmrg basic_machine=hppa-unknown 492fbfaf8f3Smrg basic_os=linux 493fbfaf8f3Smrg ;; 494fbfaf8f3Smrg psp) 495fbfaf8f3Smrg basic_machine=mipsallegrexel-sony 496fbfaf8f3Smrg basic_os=psp 497ea148d1dSmrg ;; 498ea148d1dSmrg pw32) 499ea148d1dSmrg basic_machine=i586-unknown 500fbfaf8f3Smrg basic_os=pw32 501ea148d1dSmrg ;; 502ea148d1dSmrg rdos | rdos64) 503ea148d1dSmrg basic_machine=x86_64-pc 504fbfaf8f3Smrg basic_os=rdos 505ea148d1dSmrg ;; 506ea148d1dSmrg rdos32) 507ea148d1dSmrg basic_machine=i386-pc 508fbfaf8f3Smrg basic_os=rdos 509ea148d1dSmrg ;; 510ea148d1dSmrg rom68k) 511ea148d1dSmrg basic_machine=m68k-rom68k 512fbfaf8f3Smrg basic_os=coff 513ea148d1dSmrg ;; 514ea148d1dSmrg sa29200) 515ea148d1dSmrg basic_machine=a29k-amd 516fbfaf8f3Smrg basic_os=udi 517ea148d1dSmrg ;; 518ea148d1dSmrg sei) 519ea148d1dSmrg basic_machine=mips-sei 520fbfaf8f3Smrg basic_os=seiux 521ea148d1dSmrg ;; 522ea148d1dSmrg sequent) 523ea148d1dSmrg basic_machine=i386-sequent 524fbfaf8f3Smrg basic_os= 525ea148d1dSmrg ;; 526ea148d1dSmrg sps7) 527ea148d1dSmrg basic_machine=m68k-bull 528fbfaf8f3Smrg basic_os=sysv2 529ea148d1dSmrg ;; 530ea148d1dSmrg st2000) 531ea148d1dSmrg basic_machine=m68k-tandem 532fbfaf8f3Smrg basic_os= 533ea148d1dSmrg ;; 534ea148d1dSmrg stratus) 535ea148d1dSmrg basic_machine=i860-stratus 536fbfaf8f3Smrg basic_os=sysv4 537ea148d1dSmrg ;; 538ea148d1dSmrg sun2) 539ea148d1dSmrg basic_machine=m68000-sun 540fbfaf8f3Smrg basic_os= 541ea148d1dSmrg ;; 542ea148d1dSmrg sun2os3) 543ea148d1dSmrg basic_machine=m68000-sun 544fbfaf8f3Smrg basic_os=sunos3 545ea148d1dSmrg ;; 546ea148d1dSmrg sun2os4) 547ea148d1dSmrg basic_machine=m68000-sun 548fbfaf8f3Smrg basic_os=sunos4 549ea148d1dSmrg ;; 550ea148d1dSmrg sun3) 551ea148d1dSmrg basic_machine=m68k-sun 552fbfaf8f3Smrg basic_os= 553ea148d1dSmrg ;; 554ea148d1dSmrg sun3os3) 555ea148d1dSmrg basic_machine=m68k-sun 556fbfaf8f3Smrg basic_os=sunos3 557ea148d1dSmrg ;; 558ea148d1dSmrg sun3os4) 559ea148d1dSmrg basic_machine=m68k-sun 560fbfaf8f3Smrg basic_os=sunos4 561ea148d1dSmrg ;; 562ea148d1dSmrg sun4) 563ea148d1dSmrg basic_machine=sparc-sun 564fbfaf8f3Smrg basic_os= 565ea148d1dSmrg ;; 566ea148d1dSmrg sun4os3) 567ea148d1dSmrg basic_machine=sparc-sun 568fbfaf8f3Smrg basic_os=sunos3 569ea148d1dSmrg ;; 570ea148d1dSmrg sun4os4) 571ea148d1dSmrg basic_machine=sparc-sun 572fbfaf8f3Smrg basic_os=sunos4 573ea148d1dSmrg ;; 574ea148d1dSmrg sun4sol2) 575ea148d1dSmrg basic_machine=sparc-sun 576fbfaf8f3Smrg basic_os=solaris2 577ea148d1dSmrg ;; 578ea148d1dSmrg sun386 | sun386i | roadrunner) 579ea148d1dSmrg basic_machine=i386-sun 580fbfaf8f3Smrg basic_os= 581ea148d1dSmrg ;; 582ea148d1dSmrg sv1) 583ea148d1dSmrg basic_machine=sv1-cray 584fbfaf8f3Smrg basic_os=unicos 585ea148d1dSmrg ;; 586ea148d1dSmrg symmetry) 587ea148d1dSmrg basic_machine=i386-sequent 588fbfaf8f3Smrg basic_os=dynix 589ea148d1dSmrg ;; 590ea148d1dSmrg t3e) 591ea148d1dSmrg basic_machine=alphaev5-cray 592fbfaf8f3Smrg basic_os=unicos 593ea148d1dSmrg ;; 594ea148d1dSmrg t90) 595ea148d1dSmrg basic_machine=t90-cray 596fbfaf8f3Smrg basic_os=unicos 597ea148d1dSmrg ;; 598ea148d1dSmrg toad1) 599ea148d1dSmrg basic_machine=pdp10-xkl 600fbfaf8f3Smrg basic_os=tops20 601ea148d1dSmrg ;; 602ea148d1dSmrg tpf) 603ea148d1dSmrg basic_machine=s390x-ibm 604fbfaf8f3Smrg basic_os=tpf 605ea148d1dSmrg ;; 606ea148d1dSmrg udi29k) 607ea148d1dSmrg basic_machine=a29k-amd 608fbfaf8f3Smrg basic_os=udi 609ea148d1dSmrg ;; 610ea148d1dSmrg ultra3) 611ea148d1dSmrg basic_machine=a29k-nyu 612fbfaf8f3Smrg basic_os=sym1 613ea148d1dSmrg ;; 614ea148d1dSmrg v810 | necv810) 615ea148d1dSmrg basic_machine=v810-nec 616fbfaf8f3Smrg basic_os=none 617ea148d1dSmrg ;; 618ea148d1dSmrg vaxv) 619ea148d1dSmrg basic_machine=vax-dec 620fbfaf8f3Smrg basic_os=sysv 621ea148d1dSmrg ;; 622ea148d1dSmrg vms) 623ea148d1dSmrg basic_machine=vax-dec 624fbfaf8f3Smrg basic_os=vms 625fbfaf8f3Smrg ;; 626fbfaf8f3Smrg vsta) 627fbfaf8f3Smrg basic_machine=i386-pc 628fbfaf8f3Smrg basic_os=vsta 629ea148d1dSmrg ;; 630ea148d1dSmrg vxworks960) 631ea148d1dSmrg basic_machine=i960-wrs 632fbfaf8f3Smrg basic_os=vxworks 633ea148d1dSmrg ;; 634ea148d1dSmrg vxworks68) 635ea148d1dSmrg basic_machine=m68k-wrs 636fbfaf8f3Smrg basic_os=vxworks 637ea148d1dSmrg ;; 638ea148d1dSmrg vxworks29k) 639ea148d1dSmrg basic_machine=a29k-wrs 640fbfaf8f3Smrg basic_os=vxworks 641ea148d1dSmrg ;; 642ea148d1dSmrg xbox) 643ea148d1dSmrg basic_machine=i686-pc 644fbfaf8f3Smrg basic_os=mingw32 645ea148d1dSmrg ;; 646ea148d1dSmrg ymp) 647ea148d1dSmrg basic_machine=ymp-cray 648fbfaf8f3Smrg basic_os=unicos 649ea148d1dSmrg ;; 650ea148d1dSmrg *) 651ea148d1dSmrg basic_machine=$1 652fbfaf8f3Smrg basic_os= 653ea148d1dSmrg ;; 654ea148d1dSmrg esac 65543f32c10Smrg ;; 65643f32c10Smrgesac 65743f32c10Smrg 658ea148d1dSmrg# Decode 1-component or ad-hoc basic machines 65943f32c10Smrgcase $basic_machine in 660ea148d1dSmrg # Here we handle the default manufacturer of certain CPU types. It is in 661ea148d1dSmrg # some cases the only manufacturer, in others, it is the most popular. 662ea148d1dSmrg w89k) 663ea148d1dSmrg cpu=hppa1.1 664ea148d1dSmrg vendor=winbond 66543f32c10Smrg ;; 666ea148d1dSmrg op50n) 667ea148d1dSmrg cpu=hppa1.1 668ea148d1dSmrg vendor=oki 66943f32c10Smrg ;; 670ea148d1dSmrg op60c) 671ea148d1dSmrg cpu=hppa1.1 672ea148d1dSmrg vendor=oki 67343f32c10Smrg ;; 674ea148d1dSmrg ibm*) 675ea148d1dSmrg cpu=i370 676ea148d1dSmrg vendor=ibm 6776ef05171Smrg ;; 678ea148d1dSmrg orion105) 679ea148d1dSmrg cpu=clipper 680ea148d1dSmrg vendor=highlevel 6816ef05171Smrg ;; 682ea148d1dSmrg mac | mpw | mac-mpw) 683ea148d1dSmrg cpu=m68k 684ea148d1dSmrg vendor=apple 6856ef05171Smrg ;; 686ea148d1dSmrg pmac | pmac-mpw) 687ea148d1dSmrg cpu=powerpc 688ea148d1dSmrg vendor=apple 6896ef05171Smrg ;; 6906ef05171Smrg 69143f32c10Smrg # Recognize the various machine names and aliases which stand 69243f32c10Smrg # for a CPU type and a company and sometimes even an OS. 69343f32c10Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694ea148d1dSmrg cpu=m68000 695ea148d1dSmrg vendor=att 69643f32c10Smrg ;; 69743f32c10Smrg 3b*) 698ea148d1dSmrg cpu=we32k 699ea148d1dSmrg vendor=att 70043f32c10Smrg ;; 7016ef05171Smrg bluegene*) 702ea148d1dSmrg cpu=powerpc 703ea148d1dSmrg vendor=ibm 704fbfaf8f3Smrg basic_os=cnk 70543f32c10Smrg ;; 70643f32c10Smrg decsystem10* | dec10*) 707ea148d1dSmrg cpu=pdp10 708ea148d1dSmrg vendor=dec 709fbfaf8f3Smrg basic_os=tops10 71043f32c10Smrg ;; 71143f32c10Smrg decsystem20* | dec20*) 712ea148d1dSmrg cpu=pdp10 713ea148d1dSmrg vendor=dec 714fbfaf8f3Smrg basic_os=tops20 71543f32c10Smrg ;; 71643f32c10Smrg delta | 3300 | motorola-3300 | motorola-delta \ 71743f32c10Smrg | 3300-motorola | delta-motorola) 718ea148d1dSmrg cpu=m68k 719ea148d1dSmrg vendor=motorola 72043f32c10Smrg ;; 721ea148d1dSmrg dpx2*) 722ea148d1dSmrg cpu=m68k 723ea148d1dSmrg vendor=bull 724fbfaf8f3Smrg basic_os=sysv3 72543f32c10Smrg ;; 72643f32c10Smrg encore | umax | mmax) 727ea148d1dSmrg cpu=ns32k 728ea148d1dSmrg vendor=encore 72943f32c10Smrg ;; 730ea148d1dSmrg elxsi) 731ea148d1dSmrg cpu=elxsi 732ea148d1dSmrg vendor=elxsi 733fbfaf8f3Smrg basic_os=${basic_os:-bsd} 73443f32c10Smrg ;; 73543f32c10Smrg fx2800) 736ea148d1dSmrg cpu=i860 737ea148d1dSmrg vendor=alliant 73843f32c10Smrg ;; 73943f32c10Smrg genix) 740ea148d1dSmrg cpu=ns32k 741ea148d1dSmrg vendor=ns 74243f32c10Smrg ;; 74343f32c10Smrg h3050r* | hiux*) 744ea148d1dSmrg cpu=hppa1.1 745ea148d1dSmrg vendor=hitachi 746fbfaf8f3Smrg basic_os=hiuxwe2 74743f32c10Smrg ;; 74843f32c10Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749ea148d1dSmrg cpu=hppa1.0 750ea148d1dSmrg vendor=hp 75143f32c10Smrg ;; 75243f32c10Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753ea148d1dSmrg cpu=m68000 754ea148d1dSmrg vendor=hp 75543f32c10Smrg ;; 75643f32c10Smrg hp9k3[2-9][0-9]) 757ea148d1dSmrg cpu=m68k 758ea148d1dSmrg vendor=hp 75943f32c10Smrg ;; 76043f32c10Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761ea148d1dSmrg cpu=hppa1.0 762ea148d1dSmrg vendor=hp 76343f32c10Smrg ;; 76443f32c10Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765ea148d1dSmrg cpu=hppa1.1 766ea148d1dSmrg vendor=hp 76743f32c10Smrg ;; 76843f32c10Smrg hp9k78[0-9] | hp78[0-9]) 76943f32c10Smrg # FIXME: really hppa2.0-hp 770ea148d1dSmrg cpu=hppa1.1 771ea148d1dSmrg vendor=hp 77243f32c10Smrg ;; 77343f32c10Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77443f32c10Smrg # FIXME: really hppa2.0-hp 775ea148d1dSmrg cpu=hppa1.1 776ea148d1dSmrg vendor=hp 77743f32c10Smrg ;; 77843f32c10Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779ea148d1dSmrg cpu=hppa1.1 780ea148d1dSmrg vendor=hp 78143f32c10Smrg ;; 78243f32c10Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783ea148d1dSmrg cpu=hppa1.0 784ea148d1dSmrg vendor=hp 78543f32c10Smrg ;; 78643f32c10Smrg i*86v32) 787ea148d1dSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788ea148d1dSmrg vendor=pc 789fbfaf8f3Smrg basic_os=sysv32 79043f32c10Smrg ;; 79143f32c10Smrg i*86v4*) 792ea148d1dSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793ea148d1dSmrg vendor=pc 794fbfaf8f3Smrg basic_os=sysv4 79543f32c10Smrg ;; 79643f32c10Smrg i*86v) 797ea148d1dSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798ea148d1dSmrg vendor=pc 799fbfaf8f3Smrg basic_os=sysv 80043f32c10Smrg ;; 80143f32c10Smrg i*86sol2) 802ea148d1dSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803ea148d1dSmrg vendor=pc 804fbfaf8f3Smrg basic_os=solaris2 80543f32c10Smrg ;; 806ea148d1dSmrg j90 | j90-cray) 807ea148d1dSmrg cpu=j90 808ea148d1dSmrg vendor=cray 809fbfaf8f3Smrg basic_os=${basic_os:-unicos} 81043f32c10Smrg ;; 81143f32c10Smrg iris | iris4d) 812ea148d1dSmrg cpu=mips 813ea148d1dSmrg vendor=sgi 814fbfaf8f3Smrg case $basic_os in 815ea148d1dSmrg irix*) 81643f32c10Smrg ;; 81743f32c10Smrg *) 818fbfaf8f3Smrg basic_os=irix4 81943f32c10Smrg ;; 82043f32c10Smrg esac 82143f32c10Smrg ;; 82243f32c10Smrg miniframe) 823ea148d1dSmrg cpu=m68000 824ea148d1dSmrg vendor=convergent 8256ef05171Smrg ;; 826ea148d1dSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827ea148d1dSmrg cpu=m68k 828ea148d1dSmrg vendor=atari 829fbfaf8f3Smrg basic_os=mint 83043f32c10Smrg ;; 83143f32c10Smrg news-3600 | risc-news) 832ea148d1dSmrg cpu=mips 833ea148d1dSmrg vendor=sony 834fbfaf8f3Smrg basic_os=newsos 83543f32c10Smrg ;; 836ea148d1dSmrg next | m*-next) 837ea148d1dSmrg cpu=m68k 838ea148d1dSmrg vendor=next 839fbfaf8f3Smrg case $basic_os in 840fbfaf8f3Smrg openstep*) 841fbfaf8f3Smrg ;; 842fbfaf8f3Smrg nextstep*) 84343f32c10Smrg ;; 844ea148d1dSmrg ns2*) 845fbfaf8f3Smrg basic_os=nextstep2 84643f32c10Smrg ;; 84743f32c10Smrg *) 848fbfaf8f3Smrg basic_os=nextstep3 84943f32c10Smrg ;; 85043f32c10Smrg esac 85143f32c10Smrg ;; 85243f32c10Smrg np1) 853ea148d1dSmrg cpu=np1 854ea148d1dSmrg vendor=gould 8556ef05171Smrg ;; 85643f32c10Smrg op50n-* | op60c-*) 857ea148d1dSmrg cpu=hppa1.1 858ea148d1dSmrg vendor=oki 859fbfaf8f3Smrg basic_os=proelf 86043f32c10Smrg ;; 86143f32c10Smrg pa-hitachi) 862ea148d1dSmrg cpu=hppa1.1 863ea148d1dSmrg vendor=hitachi 864fbfaf8f3Smrg basic_os=hiuxwe2 86543f32c10Smrg ;; 86643f32c10Smrg pbd) 867ea148d1dSmrg cpu=sparc 868ea148d1dSmrg vendor=tti 86943f32c10Smrg ;; 87043f32c10Smrg pbb) 871ea148d1dSmrg cpu=m68k 872ea148d1dSmrg vendor=tti 87343f32c10Smrg ;; 874ea148d1dSmrg pc532) 875ea148d1dSmrg cpu=ns32k 876ea148d1dSmrg vendor=pc532 87743f32c10Smrg ;; 87843f32c10Smrg pn) 879ea148d1dSmrg cpu=pn 880ea148d1dSmrg vendor=gould 88143f32c10Smrg ;; 882ea148d1dSmrg power) 883ea148d1dSmrg cpu=power 884ea148d1dSmrg vendor=ibm 88543f32c10Smrg ;; 88643f32c10Smrg ps2) 887ea148d1dSmrg cpu=i386 888ea148d1dSmrg vendor=ibm 88943f32c10Smrg ;; 89043f32c10Smrg rm[46]00) 891ea148d1dSmrg cpu=mips 892ea148d1dSmrg vendor=siemens 89343f32c10Smrg ;; 89443f32c10Smrg rtpc | rtpc-*) 895ea148d1dSmrg cpu=romp 896ea148d1dSmrg vendor=ibm 89743f32c10Smrg ;; 89843f32c10Smrg sde) 899ea148d1dSmrg cpu=mipsisa32 900ea148d1dSmrg vendor=sde 901fbfaf8f3Smrg basic_os=${basic_os:-elf} 90243f32c10Smrg ;; 903ea148d1dSmrg simso-wrs) 904ea148d1dSmrg cpu=sparclite 905ea148d1dSmrg vendor=wrs 906fbfaf8f3Smrg basic_os=vxworks 90743f32c10Smrg ;; 908ea148d1dSmrg tower | tower-32) 909ea148d1dSmrg cpu=m68k 910ea148d1dSmrg vendor=ncr 91143f32c10Smrg ;; 912ea148d1dSmrg vpp*|vx|vx-*) 913ea148d1dSmrg cpu=f301 914ea148d1dSmrg vendor=fujitsu 91543f32c10Smrg ;; 916ea148d1dSmrg w65) 917ea148d1dSmrg cpu=w65 918ea148d1dSmrg vendor=wdc 91943f32c10Smrg ;; 920ea148d1dSmrg w89k-*) 921ea148d1dSmrg cpu=hppa1.1 922ea148d1dSmrg vendor=winbond 923fbfaf8f3Smrg basic_os=proelf 92443f32c10Smrg ;; 925ea148d1dSmrg none) 926ea148d1dSmrg cpu=none 927ea148d1dSmrg vendor=none 92843f32c10Smrg ;; 929ea148d1dSmrg leon|leon[3-9]) 930ea148d1dSmrg cpu=sparc 931ea148d1dSmrg vendor=$basic_machine 93243f32c10Smrg ;; 933ea148d1dSmrg leon-*|leon[3-9]-*) 934ea148d1dSmrg cpu=sparc 935ea148d1dSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 93643f32c10Smrg ;; 937ea148d1dSmrg 938ea148d1dSmrg *-*) 939fbfaf8f3Smrg # shellcheck disable=SC2162 940fbfaf8f3Smrg saved_IFS=$IFS 941fbfaf8f3Smrg IFS="-" read cpu vendor <<EOF 942ea148d1dSmrg$basic_machine 943ea148d1dSmrgEOF 944fbfaf8f3Smrg IFS=$saved_IFS 94543f32c10Smrg ;; 946ea148d1dSmrg # We use `pc' rather than `unknown' 947ea148d1dSmrg # because (1) that's what they normally are, and 948ea148d1dSmrg # (2) the word "unknown" tends to confuse beginning users. 949ea148d1dSmrg i*86 | x86_64) 950ea148d1dSmrg cpu=$basic_machine 951ea148d1dSmrg vendor=pc 95243f32c10Smrg ;; 953ea148d1dSmrg # These rules are duplicated from below for sake of the special case above; 954ea148d1dSmrg # i.e. things that normalized to x86 arches should also default to "pc" 955ea148d1dSmrg pc98) 956ea148d1dSmrg cpu=i386 957ea148d1dSmrg vendor=pc 9586ef05171Smrg ;; 959ea148d1dSmrg x64 | amd64) 960ea148d1dSmrg cpu=x86_64 961ea148d1dSmrg vendor=pc 96243f32c10Smrg ;; 963ea148d1dSmrg # Recognize the basic CPU types without company name. 964ea148d1dSmrg *) 965ea148d1dSmrg cpu=$basic_machine 966ea148d1dSmrg vendor=unknown 96743f32c10Smrg ;; 968ea148d1dSmrgesac 969ea148d1dSmrg 970ea148d1dSmrgunset -v basic_machine 971ea148d1dSmrg 972ea148d1dSmrg# Decode basic machines in the full and proper CPU-Company form. 973ea148d1dSmrgcase $cpu-$vendor in 974fbfaf8f3Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975ea148d1dSmrg # some cases the only manufacturer, in others, it is the most popular. 976ea148d1dSmrg craynv-unknown) 977ea148d1dSmrg vendor=cray 978fbfaf8f3Smrg basic_os=${basic_os:-unicosmp} 97943f32c10Smrg ;; 980ea148d1dSmrg c90-unknown | c90-cray) 981ea148d1dSmrg vendor=cray 982fbfaf8f3Smrg basic_os=${Basic_os:-unicos} 98343f32c10Smrg ;; 984ea148d1dSmrg fx80-unknown) 985ea148d1dSmrg vendor=alliant 98643f32c10Smrg ;; 987ea148d1dSmrg romp-unknown) 988ea148d1dSmrg vendor=ibm 98943f32c10Smrg ;; 990ea148d1dSmrg mmix-unknown) 991ea148d1dSmrg vendor=knuth 99243f32c10Smrg ;; 993ea148d1dSmrg microblaze-unknown | microblazeel-unknown) 994ea148d1dSmrg vendor=xilinx 99543f32c10Smrg ;; 996ea148d1dSmrg rs6000-unknown) 997ea148d1dSmrg vendor=ibm 99843f32c10Smrg ;; 999ea148d1dSmrg vax-unknown) 1000ea148d1dSmrg vendor=dec 100143f32c10Smrg ;; 1002ea148d1dSmrg pdp11-unknown) 1003ea148d1dSmrg vendor=dec 100443f32c10Smrg ;; 1005ea148d1dSmrg we32k-unknown) 1006ea148d1dSmrg vendor=att 100743f32c10Smrg ;; 1008ea148d1dSmrg cydra-unknown) 1009ea148d1dSmrg vendor=cydrome 101043f32c10Smrg ;; 1011ea148d1dSmrg i370-ibm*) 1012ea148d1dSmrg vendor=ibm 101343f32c10Smrg ;; 1014ea148d1dSmrg orion-unknown) 1015ea148d1dSmrg vendor=highlevel 101643f32c10Smrg ;; 1017ea148d1dSmrg xps-unknown | xps100-unknown) 1018ea148d1dSmrg cpu=xps100 1019ea148d1dSmrg vendor=honeywell 102043f32c10Smrg ;; 1021ea148d1dSmrg 1022ea148d1dSmrg # Here we normalize CPU types with a missing or matching vendor 1023fbfaf8f3Smrg armh-unknown | armh-alt) 1024fbfaf8f3Smrg cpu=armv7l 1025fbfaf8f3Smrg vendor=alt 1026fbfaf8f3Smrg basic_os=${basic_os:-linux-gnueabihf} 1027fbfaf8f3Smrg ;; 1028ea148d1dSmrg dpx20-unknown | dpx20-bull) 1029ea148d1dSmrg cpu=rs6000 1030ea148d1dSmrg vendor=bull 1031fbfaf8f3Smrg basic_os=${basic_os:-bosx} 103243f32c10Smrg ;; 1033ea148d1dSmrg 1034ea148d1dSmrg # Here we normalize CPU types irrespective of the vendor 1035ea148d1dSmrg amd64-*) 1036ea148d1dSmrg cpu=x86_64 103743f32c10Smrg ;; 1038ea148d1dSmrg blackfin-*) 1039ea148d1dSmrg cpu=bfin 1040fbfaf8f3Smrg basic_os=linux 104143f32c10Smrg ;; 1042ea148d1dSmrg c54x-*) 1043ea148d1dSmrg cpu=tic54x 104443f32c10Smrg ;; 1045ea148d1dSmrg c55x-*) 1046ea148d1dSmrg cpu=tic55x 104743f32c10Smrg ;; 1048ea148d1dSmrg c6x-*) 1049ea148d1dSmrg cpu=tic6x 105043f32c10Smrg ;; 1051ea148d1dSmrg e500v[12]-*) 1052ea148d1dSmrg cpu=powerpc 1053fbfaf8f3Smrg basic_os=${basic_os}"spe" 105443f32c10Smrg ;; 1055ea148d1dSmrg mips3*-*) 1056ea148d1dSmrg cpu=mips64 105743f32c10Smrg ;; 1058ea148d1dSmrg ms1-*) 1059ea148d1dSmrg cpu=mt 106043f32c10Smrg ;; 1061ea148d1dSmrg m68knommu-*) 1062ea148d1dSmrg cpu=m68k 1063fbfaf8f3Smrg basic_os=linux 106443f32c10Smrg ;; 1065ea148d1dSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1066ea148d1dSmrg cpu=s12z 106743f32c10Smrg ;; 1068ea148d1dSmrg openrisc-*) 1069ea148d1dSmrg cpu=or32 107043f32c10Smrg ;; 1071ea148d1dSmrg parisc-*) 1072ea148d1dSmrg cpu=hppa 1073fbfaf8f3Smrg basic_os=linux 107443f32c10Smrg ;; 1075ea148d1dSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1076ea148d1dSmrg cpu=i586 107743f32c10Smrg ;; 1078fbfaf8f3Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1079ea148d1dSmrg cpu=i686 10806ef05171Smrg ;; 1081ea148d1dSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1082ea148d1dSmrg cpu=i686 108343f32c10Smrg ;; 1084ea148d1dSmrg pentium4-*) 1085ea148d1dSmrg cpu=i786 108643f32c10Smrg ;; 1087ea148d1dSmrg pc98-*) 1088ea148d1dSmrg cpu=i386 108943f32c10Smrg ;; 1090ea148d1dSmrg ppc-* | ppcbe-*) 1091ea148d1dSmrg cpu=powerpc 109243f32c10Smrg ;; 1093ea148d1dSmrg ppcle-* | powerpclittle-*) 1094ea148d1dSmrg cpu=powerpcle 10956ef05171Smrg ;; 1096ea148d1dSmrg ppc64-*) 1097ea148d1dSmrg cpu=powerpc64 109843f32c10Smrg ;; 1099ea148d1dSmrg ppc64le-* | powerpc64little-*) 1100ea148d1dSmrg cpu=powerpc64le 110143f32c10Smrg ;; 1102ea148d1dSmrg sb1-*) 1103ea148d1dSmrg cpu=mipsisa64sb1 11046ef05171Smrg ;; 1105ea148d1dSmrg sb1el-*) 1106ea148d1dSmrg cpu=mipsisa64sb1el 110743f32c10Smrg ;; 1108ea148d1dSmrg sh5e[lb]-*) 1109ea148d1dSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 111043f32c10Smrg ;; 1111ea148d1dSmrg spur-*) 1112ea148d1dSmrg cpu=spur 111343f32c10Smrg ;; 1114ea148d1dSmrg strongarm-* | thumb-*) 1115ea148d1dSmrg cpu=arm 111643f32c10Smrg ;; 1117ea148d1dSmrg tx39-*) 1118ea148d1dSmrg cpu=mipstx39 111943f32c10Smrg ;; 1120ea148d1dSmrg tx39el-*) 1121ea148d1dSmrg cpu=mipstx39el 112243f32c10Smrg ;; 1123ea148d1dSmrg x64-*) 1124ea148d1dSmrg cpu=x86_64 112543f32c10Smrg ;; 1126ea148d1dSmrg xscale-* | xscalee[bl]-*) 1127ea148d1dSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112843f32c10Smrg ;; 1129fbfaf8f3Smrg arm64-* | aarch64le-*) 1130fbfaf8f3Smrg cpu=aarch64 1131fbfaf8f3Smrg ;; 1132ea148d1dSmrg 1133fbfaf8f3Smrg # Recognize the canonical CPU Types that limit and/or modify the 1134ea148d1dSmrg # company names they are paired with. 1135ea148d1dSmrg cr16-*) 1136fbfaf8f3Smrg basic_os=${basic_os:-elf} 113743f32c10Smrg ;; 1138ea148d1dSmrg crisv32-* | etraxfs*-*) 1139ea148d1dSmrg cpu=crisv32 1140ea148d1dSmrg vendor=axis 114143f32c10Smrg ;; 1142ea148d1dSmrg cris-* | etrax*-*) 1143ea148d1dSmrg cpu=cris 1144ea148d1dSmrg vendor=axis 114543f32c10Smrg ;; 1146ea148d1dSmrg crx-*) 1147fbfaf8f3Smrg basic_os=${basic_os:-elf} 114843f32c10Smrg ;; 1149ea148d1dSmrg neo-tandem) 1150ea148d1dSmrg cpu=neo 1151ea148d1dSmrg vendor=tandem 115243f32c10Smrg ;; 1153ea148d1dSmrg nse-tandem) 1154ea148d1dSmrg cpu=nse 1155ea148d1dSmrg vendor=tandem 115643f32c10Smrg ;; 1157ea148d1dSmrg nsr-tandem) 1158ea148d1dSmrg cpu=nsr 1159ea148d1dSmrg vendor=tandem 116043f32c10Smrg ;; 1161ea148d1dSmrg nsv-tandem) 1162ea148d1dSmrg cpu=nsv 1163ea148d1dSmrg vendor=tandem 116443f32c10Smrg ;; 1165ea148d1dSmrg nsx-tandem) 1166ea148d1dSmrg cpu=nsx 1167ea148d1dSmrg vendor=tandem 116843f32c10Smrg ;; 1169fbfaf8f3Smrg mipsallegrexel-sony) 1170fbfaf8f3Smrg cpu=mipsallegrexel 1171fbfaf8f3Smrg vendor=sony 117243f32c10Smrg ;; 1173ea148d1dSmrg tile*-*) 1174fbfaf8f3Smrg basic_os=${basic_os:-linux-gnu} 117543f32c10Smrg ;; 1176ea148d1dSmrg 117743f32c10Smrg *) 1178fbfaf8f3Smrg # Recognize the canonical CPU types that are allowed with any 1179ea148d1dSmrg # company name. 1180ea148d1dSmrg case $cpu in 1181ea148d1dSmrg 1750a | 580 \ 1182ea148d1dSmrg | a29k \ 1183ea148d1dSmrg | aarch64 | aarch64_be \ 1184ea148d1dSmrg | abacus \ 1185ea148d1dSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1186ea148d1dSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1187ea148d1dSmrg | alphapca5[67] | alpha64pca5[67] \ 1188ea148d1dSmrg | am33_2.0 \ 1189fbfaf8f3Smrg | amdgcn \ 1190fbfaf8f3Smrg | arc | arceb | arc32 | arc64 \ 1191fbfaf8f3Smrg | arm | arm[lb]e | arme[lb] | armv* \ 1192ea148d1dSmrg | avr | avr32 \ 1193ea148d1dSmrg | asmjs \ 1194ea148d1dSmrg | ba \ 1195ea148d1dSmrg | be32 | be64 \ 1196fbfaf8f3Smrg | bfin | bpf | bs2000 \ 1197ea148d1dSmrg | c[123]* | c30 | [cjt]90 | c4x \ 1198ea148d1dSmrg | c8051 | clipper | craynv | csky | cydra \ 1199ea148d1dSmrg | d10v | d30v | dlx | dsp16xx \ 1200ea148d1dSmrg | e2k | elxsi | epiphany \ 1201ea148d1dSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1202ea148d1dSmrg | h8300 | h8500 \ 1203ea148d1dSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1204ea148d1dSmrg | hexagon \ 1205ea148d1dSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1206ea148d1dSmrg | ip2k | iq2000 \ 1207ea148d1dSmrg | k1om \ 1208ea148d1dSmrg | le32 | le64 \ 1209ea148d1dSmrg | lm32 \ 1210fbfaf8f3Smrg | loongarch32 | loongarch64 \ 1211ea148d1dSmrg | m32c | m32r | m32rle \ 1212fbfaf8f3Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1213fbfaf8f3Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1214ea148d1dSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1215ea148d1dSmrg | microblaze | microblazeel \ 1216ea148d1dSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1217ea148d1dSmrg | mips16 \ 1218fbfaf8f3Smrg | mips64 | mips64eb | mips64el \ 1219ea148d1dSmrg | mips64octeon | mips64octeonel \ 1220ea148d1dSmrg | mips64orion | mips64orionel \ 1221ea148d1dSmrg | mips64r5900 | mips64r5900el \ 1222ea148d1dSmrg | mips64vr | mips64vrel \ 1223ea148d1dSmrg | mips64vr4100 | mips64vr4100el \ 1224ea148d1dSmrg | mips64vr4300 | mips64vr4300el \ 1225ea148d1dSmrg | mips64vr5000 | mips64vr5000el \ 1226ea148d1dSmrg | mips64vr5900 | mips64vr5900el \ 1227ea148d1dSmrg | mipsisa32 | mipsisa32el \ 1228ea148d1dSmrg | mipsisa32r2 | mipsisa32r2el \ 1229fbfaf8f3Smrg | mipsisa32r3 | mipsisa32r3el \ 1230fbfaf8f3Smrg | mipsisa32r5 | mipsisa32r5el \ 1231ea148d1dSmrg | mipsisa32r6 | mipsisa32r6el \ 1232ea148d1dSmrg | mipsisa64 | mipsisa64el \ 1233ea148d1dSmrg | mipsisa64r2 | mipsisa64r2el \ 1234fbfaf8f3Smrg | mipsisa64r3 | mipsisa64r3el \ 1235fbfaf8f3Smrg | mipsisa64r5 | mipsisa64r5el \ 1236ea148d1dSmrg | mipsisa64r6 | mipsisa64r6el \ 1237ea148d1dSmrg | mipsisa64sb1 | mipsisa64sb1el \ 1238ea148d1dSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 1239ea148d1dSmrg | mipsr5900 | mipsr5900el \ 1240ea148d1dSmrg | mipstx39 | mipstx39el \ 1241ea148d1dSmrg | mmix \ 1242ea148d1dSmrg | mn10200 | mn10300 \ 1243ea148d1dSmrg | moxie \ 1244ea148d1dSmrg | mt \ 1245ea148d1dSmrg | msp430 \ 1246ea148d1dSmrg | nds32 | nds32le | nds32be \ 1247ea148d1dSmrg | nfp \ 1248ea148d1dSmrg | nios | nios2 | nios2eb | nios2el \ 1249fbfaf8f3Smrg | none | np1 | ns16k | ns32k | nvptx \ 1250ea148d1dSmrg | open8 \ 1251ea148d1dSmrg | or1k* \ 1252ea148d1dSmrg | or32 \ 1253ea148d1dSmrg | orion \ 1254fbfaf8f3Smrg | picochip \ 1255ea148d1dSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1256ea148d1dSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1257ea148d1dSmrg | pru \ 1258ea148d1dSmrg | pyramid \ 1259fbfaf8f3Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1260ea148d1dSmrg | rl78 | romp | rs6000 | rx \ 1261fbfaf8f3Smrg | s390 | s390x \ 1262ea148d1dSmrg | score \ 1263fbfaf8f3Smrg | sh | shl \ 1264fbfaf8f3Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1265ea148d1dSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1266ea148d1dSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1267ea148d1dSmrg | sparclite \ 1268ea148d1dSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1269ea148d1dSmrg | spu \ 1270ea148d1dSmrg | tahoe \ 1271fbfaf8f3Smrg | thumbv7* \ 1272ea148d1dSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1273ea148d1dSmrg | tron \ 1274ea148d1dSmrg | ubicom32 \ 1275fbfaf8f3Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1276ea148d1dSmrg | vax \ 1277ea148d1dSmrg | visium \ 1278fbfaf8f3Smrg | w65 \ 1279fbfaf8f3Smrg | wasm32 | wasm64 \ 1280ea148d1dSmrg | we32k \ 1281ea148d1dSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1282ea148d1dSmrg | xstormy16 | xtensa* \ 1283ea148d1dSmrg | ymp \ 1284ea148d1dSmrg | z8k | z80) 1285ea148d1dSmrg ;; 1286ea148d1dSmrg 1287ea148d1dSmrg *) 1288ea148d1dSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1289ea148d1dSmrg exit 1 1290ea148d1dSmrg ;; 1291ea148d1dSmrg esac 129243f32c10Smrg ;; 129343f32c10Smrgesac 129443f32c10Smrg 129543f32c10Smrg# Here we canonicalize certain aliases for manufacturers. 1296ea148d1dSmrgcase $vendor in 1297ea148d1dSmrg digital*) 1298ea148d1dSmrg vendor=dec 129943f32c10Smrg ;; 1300ea148d1dSmrg commodore*) 1301ea148d1dSmrg vendor=cbm 130243f32c10Smrg ;; 130343f32c10Smrg *) 130443f32c10Smrg ;; 130543f32c10Smrgesac 130643f32c10Smrg 130743f32c10Smrg# Decode manufacturer-specific aliases for certain operating systems. 130843f32c10Smrg 1309fbfaf8f3Smrgif test x$basic_os != x 131043f32c10Smrgthen 1311fbfaf8f3Smrg 1312fbfaf8f3Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1313fbfaf8f3Smrg# set os. 1314fbfaf8f3Smrgcase $basic_os in 1315fbfaf8f3Smrg gnu/linux*) 1316fbfaf8f3Smrg kernel=linux 1317fbfaf8f3Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1318fbfaf8f3Smrg ;; 1319fbfaf8f3Smrg os2-emx) 1320fbfaf8f3Smrg kernel=os2 1321fbfaf8f3Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1322fbfaf8f3Smrg ;; 1323fbfaf8f3Smrg nto-qnx*) 1324fbfaf8f3Smrg kernel=nto 1325fbfaf8f3Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1326fbfaf8f3Smrg ;; 1327fbfaf8f3Smrg *-*) 1328fbfaf8f3Smrg # shellcheck disable=SC2162 1329fbfaf8f3Smrg saved_IFS=$IFS 1330fbfaf8f3Smrg IFS="-" read kernel os <<EOF 1331fbfaf8f3Smrg$basic_os 1332fbfaf8f3SmrgEOF 1333fbfaf8f3Smrg IFS=$saved_IFS 1334fbfaf8f3Smrg ;; 1335fbfaf8f3Smrg # Default OS when just kernel was specified 1336fbfaf8f3Smrg nto*) 1337fbfaf8f3Smrg kernel=nto 1338fbfaf8f3Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1339fbfaf8f3Smrg ;; 1340fbfaf8f3Smrg linux*) 1341fbfaf8f3Smrg kernel=linux 1342fbfaf8f3Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1343fbfaf8f3Smrg ;; 1344fbfaf8f3Smrg managarm*) 1345fbfaf8f3Smrg kernel=managarm 1346fbfaf8f3Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1347fbfaf8f3Smrg ;; 1348fbfaf8f3Smrg *) 1349fbfaf8f3Smrg kernel= 1350fbfaf8f3Smrg os=$basic_os 1351fbfaf8f3Smrg ;; 1352fbfaf8f3Smrgesac 1353fbfaf8f3Smrg 1354fbfaf8f3Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1355fbfaf8f3Smrg# etc.) 135643f32c10Smrgcase $os in 1357ea148d1dSmrg # First match some system type aliases that might get confused 1358ea148d1dSmrg # with valid system types. 1359ea148d1dSmrg # solaris* is a basic system type, with this one exception. 1360ea148d1dSmrg auroraux) 1361ea148d1dSmrg os=auroraux 13626ef05171Smrg ;; 1363ea148d1dSmrg bluegene*) 1364ea148d1dSmrg os=cnk 136543f32c10Smrg ;; 1366ea148d1dSmrg solaris1 | solaris1.*) 1367fbfaf8f3Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 136843f32c10Smrg ;; 1369ea148d1dSmrg solaris) 1370ea148d1dSmrg os=solaris2 137143f32c10Smrg ;; 1372ea148d1dSmrg unixware*) 1373ea148d1dSmrg os=sysv4.2uw 137443f32c10Smrg ;; 1375ea148d1dSmrg # es1800 is here to avoid being matched by es* (a different OS) 1376ea148d1dSmrg es1800*) 1377ea148d1dSmrg os=ose 1378ea148d1dSmrg ;; 1379ea148d1dSmrg # Some version numbers need modification 1380ea148d1dSmrg chorusos*) 1381ea148d1dSmrg os=chorusos 1382ea148d1dSmrg ;; 1383ea148d1dSmrg isc) 1384ea148d1dSmrg os=isc2.2 1385ea148d1dSmrg ;; 1386ea148d1dSmrg sco6) 1387ea148d1dSmrg os=sco5v6 1388ea148d1dSmrg ;; 1389ea148d1dSmrg sco5) 1390ea148d1dSmrg os=sco3.2v5 1391ea148d1dSmrg ;; 1392ea148d1dSmrg sco4) 1393ea148d1dSmrg os=sco3.2v4 1394ea148d1dSmrg ;; 1395ea148d1dSmrg sco3.2.[4-9]*) 1396fbfaf8f3Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1397ea148d1dSmrg ;; 1398fbfaf8f3Smrg sco*v* | scout) 1399ea148d1dSmrg # Don't match below 1400ea148d1dSmrg ;; 1401ea148d1dSmrg sco*) 1402ea148d1dSmrg os=sco3.2v2 1403ea148d1dSmrg ;; 1404ea148d1dSmrg psos*) 1405ea148d1dSmrg os=psos 1406ea148d1dSmrg ;; 1407ea148d1dSmrg qnx*) 1408fbfaf8f3Smrg os=qnx 140943f32c10Smrg ;; 1410ea148d1dSmrg hiux*) 1411ea148d1dSmrg os=hiuxwe2 141243f32c10Smrg ;; 1413ea148d1dSmrg lynx*178) 1414ea148d1dSmrg os=lynxos178 141543f32c10Smrg ;; 1416ea148d1dSmrg lynx*5) 1417ea148d1dSmrg os=lynxos5 141843f32c10Smrg ;; 1419fbfaf8f3Smrg lynxos*) 1420fbfaf8f3Smrg # don't get caught up in next wildcard 1421fbfaf8f3Smrg ;; 1422ea148d1dSmrg lynx*) 1423ea148d1dSmrg os=lynxos 142443f32c10Smrg ;; 1425fbfaf8f3Smrg mac[0-9]*) 1426ea148d1dSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 142743f32c10Smrg ;; 1428ea148d1dSmrg opened*) 1429ea148d1dSmrg os=openedition 143043f32c10Smrg ;; 1431ea148d1dSmrg os400*) 1432ea148d1dSmrg os=os400 143343f32c10Smrg ;; 1434ea148d1dSmrg sunos5*) 1435ea148d1dSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 143643f32c10Smrg ;; 1437ea148d1dSmrg sunos6*) 1438ea148d1dSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 143943f32c10Smrg ;; 1440ea148d1dSmrg wince*) 1441ea148d1dSmrg os=wince 144243f32c10Smrg ;; 1443ea148d1dSmrg utek*) 1444ea148d1dSmrg os=bsd 144543f32c10Smrg ;; 1446ea148d1dSmrg dynix*) 1447ea148d1dSmrg os=bsd 144843f32c10Smrg ;; 1449ea148d1dSmrg acis*) 1450ea148d1dSmrg os=aos 145143f32c10Smrg ;; 1452ea148d1dSmrg atheos*) 1453ea148d1dSmrg os=atheos 145443f32c10Smrg ;; 1455ea148d1dSmrg syllable*) 1456ea148d1dSmrg os=syllable 1457ea148d1dSmrg ;; 1458ea148d1dSmrg 386bsd) 1459ea148d1dSmrg os=bsd 146043f32c10Smrg ;; 1461ea148d1dSmrg ctix* | uts*) 1462ea148d1dSmrg os=sysv 146343f32c10Smrg ;; 1464ea148d1dSmrg nova*) 1465ea148d1dSmrg os=rtmk-nova 146643f32c10Smrg ;; 1467ea148d1dSmrg ns2) 1468ea148d1dSmrg os=nextstep2 1469ea148d1dSmrg ;; 147043f32c10Smrg # Preserve the version number of sinix5. 1471ea148d1dSmrg sinix5.*) 1472fbfaf8f3Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 147343f32c10Smrg ;; 1474ea148d1dSmrg sinix*) 1475ea148d1dSmrg os=sysv4 147643f32c10Smrg ;; 1477ea148d1dSmrg tpf*) 1478ea148d1dSmrg os=tpf 147943f32c10Smrg ;; 1480ea148d1dSmrg triton*) 1481ea148d1dSmrg os=sysv3 148243f32c10Smrg ;; 1483ea148d1dSmrg oss*) 1484ea148d1dSmrg os=sysv3 148543f32c10Smrg ;; 1486ea148d1dSmrg svr4*) 1487ea148d1dSmrg os=sysv4 148843f32c10Smrg ;; 1489ea148d1dSmrg svr3) 1490ea148d1dSmrg os=sysv3 149143f32c10Smrg ;; 1492ea148d1dSmrg sysvr4) 1493ea148d1dSmrg os=sysv4 149443f32c10Smrg ;; 1495ea148d1dSmrg ose*) 1496ea148d1dSmrg os=ose 149743f32c10Smrg ;; 1498ea148d1dSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1499ea148d1dSmrg os=mint 150043f32c10Smrg ;; 1501ea148d1dSmrg dicos*) 1502ea148d1dSmrg os=dicos 150343f32c10Smrg ;; 1504ea148d1dSmrg pikeos*) 1505ea148d1dSmrg # Until real need of OS specific support for 1506ea148d1dSmrg # particular features comes up, bare metal 1507ea148d1dSmrg # configurations are quite functional. 1508ea148d1dSmrg case $cpu in 1509ea148d1dSmrg arm*) 1510ea148d1dSmrg os=eabi 1511ea148d1dSmrg ;; 1512ea148d1dSmrg *) 1513ea148d1dSmrg os=elf 1514ea148d1dSmrg ;; 1515ea148d1dSmrg esac 151643f32c10Smrg ;; 151743f32c10Smrg *) 1518fbfaf8f3Smrg # No normalization, but not necessarily accepted, that comes below. 151943f32c10Smrg ;; 152043f32c10Smrgesac 1521fbfaf8f3Smrg 152243f32c10Smrgelse 152343f32c10Smrg 152443f32c10Smrg# Here we handle the default operating systems that come with various machines. 152543f32c10Smrg# The value should be what the vendor currently ships out the door with their 152643f32c10Smrg# machine or put another way, the most popular os provided with the machine. 152743f32c10Smrg 152843f32c10Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 152943f32c10Smrg# "-sun"), then you have to tell the case statement up towards the top 153043f32c10Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 153143f32c10Smrg# will signal an error saying that MANUFACTURER isn't an operating 153243f32c10Smrg# system, and we'll never get to this point. 153343f32c10Smrg 1534fbfaf8f3Smrgkernel= 1535ea148d1dSmrgcase $cpu-$vendor in 15366ef05171Smrg score-*) 1537ea148d1dSmrg os=elf 153843f32c10Smrg ;; 15396ef05171Smrg spu-*) 1540ea148d1dSmrg os=elf 154143f32c10Smrg ;; 154243f32c10Smrg *-acorn) 1543ea148d1dSmrg os=riscix1.2 154443f32c10Smrg ;; 154543f32c10Smrg arm*-rebel) 1546fbfaf8f3Smrg kernel=linux 1547fbfaf8f3Smrg os=gnu 154843f32c10Smrg ;; 154943f32c10Smrg arm*-semi) 1550ea148d1dSmrg os=aout 155143f32c10Smrg ;; 15526ef05171Smrg c4x-* | tic4x-*) 1553ea148d1dSmrg os=coff 15546ef05171Smrg ;; 15556ef05171Smrg c8051-*) 1556ea148d1dSmrg os=elf 1557ea148d1dSmrg ;; 1558ea148d1dSmrg clipper-intergraph) 1559ea148d1dSmrg os=clix 15606ef05171Smrg ;; 15616ef05171Smrg hexagon-*) 1562ea148d1dSmrg os=elf 15636ef05171Smrg ;; 15646ef05171Smrg tic54x-*) 1565ea148d1dSmrg os=coff 15666ef05171Smrg ;; 15676ef05171Smrg tic55x-*) 1568ea148d1dSmrg os=coff 15696ef05171Smrg ;; 15706ef05171Smrg tic6x-*) 1571ea148d1dSmrg os=coff 157243f32c10Smrg ;; 157343f32c10Smrg # This must come before the *-dec entry. 157443f32c10Smrg pdp10-*) 1575ea148d1dSmrg os=tops20 157643f32c10Smrg ;; 157743f32c10Smrg pdp11-*) 1578ea148d1dSmrg os=none 157943f32c10Smrg ;; 158043f32c10Smrg *-dec | vax-*) 1581ea148d1dSmrg os=ultrix4.2 158243f32c10Smrg ;; 158343f32c10Smrg m68*-apollo) 1584ea148d1dSmrg os=domain 158543f32c10Smrg ;; 158643f32c10Smrg i386-sun) 1587ea148d1dSmrg os=sunos4.0.2 158843f32c10Smrg ;; 158943f32c10Smrg m68000-sun) 1590ea148d1dSmrg os=sunos3 159143f32c10Smrg ;; 159243f32c10Smrg m68*-cisco) 1593ea148d1dSmrg os=aout 159443f32c10Smrg ;; 15956ef05171Smrg mep-*) 1596ea148d1dSmrg os=elf 159743f32c10Smrg ;; 159843f32c10Smrg mips*-cisco) 1599ea148d1dSmrg os=elf 160043f32c10Smrg ;; 160143f32c10Smrg mips*-*) 1602ea148d1dSmrg os=elf 160343f32c10Smrg ;; 160443f32c10Smrg or32-*) 1605ea148d1dSmrg os=coff 160643f32c10Smrg ;; 160743f32c10Smrg *-tti) # must be before sparc entry or we get the wrong os. 1608ea148d1dSmrg os=sysv3 160943f32c10Smrg ;; 161043f32c10Smrg sparc-* | *-sun) 1611ea148d1dSmrg os=sunos4.1.1 161243f32c10Smrg ;; 16136ef05171Smrg pru-*) 1614ea148d1dSmrg os=elf 16156ef05171Smrg ;; 161643f32c10Smrg *-be) 1617ea148d1dSmrg os=beos 161843f32c10Smrg ;; 161943f32c10Smrg *-ibm) 1620ea148d1dSmrg os=aix 162143f32c10Smrg ;; 16226ef05171Smrg *-knuth) 1623ea148d1dSmrg os=mmixware 162443f32c10Smrg ;; 162543f32c10Smrg *-wec) 1626ea148d1dSmrg os=proelf 162743f32c10Smrg ;; 162843f32c10Smrg *-winbond) 1629ea148d1dSmrg os=proelf 163043f32c10Smrg ;; 163143f32c10Smrg *-oki) 1632ea148d1dSmrg os=proelf 163343f32c10Smrg ;; 163443f32c10Smrg *-hp) 1635ea148d1dSmrg os=hpux 163643f32c10Smrg ;; 163743f32c10Smrg *-hitachi) 1638ea148d1dSmrg os=hiux 163943f32c10Smrg ;; 164043f32c10Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1641ea148d1dSmrg os=sysv 164243f32c10Smrg ;; 164343f32c10Smrg *-cbm) 1644ea148d1dSmrg os=amigaos 164543f32c10Smrg ;; 164643f32c10Smrg *-dg) 1647ea148d1dSmrg os=dgux 164843f32c10Smrg ;; 164943f32c10Smrg *-dolphin) 1650ea148d1dSmrg os=sysv3 165143f32c10Smrg ;; 165243f32c10Smrg m68k-ccur) 1653ea148d1dSmrg os=rtu 165443f32c10Smrg ;; 165543f32c10Smrg m88k-omron*) 1656ea148d1dSmrg os=luna 165743f32c10Smrg ;; 1658ea148d1dSmrg *-next) 1659ea148d1dSmrg os=nextstep 166043f32c10Smrg ;; 166143f32c10Smrg *-sequent) 1662ea148d1dSmrg os=ptx 166343f32c10Smrg ;; 166443f32c10Smrg *-crds) 1665ea148d1dSmrg os=unos 166643f32c10Smrg ;; 166743f32c10Smrg *-ns) 1668ea148d1dSmrg os=genix 166943f32c10Smrg ;; 167043f32c10Smrg i370-*) 1671ea148d1dSmrg os=mvs 167243f32c10Smrg ;; 167343f32c10Smrg *-gould) 1674ea148d1dSmrg os=sysv 167543f32c10Smrg ;; 167643f32c10Smrg *-highlevel) 1677ea148d1dSmrg os=bsd 167843f32c10Smrg ;; 167943f32c10Smrg *-encore) 1680ea148d1dSmrg os=bsd 168143f32c10Smrg ;; 168243f32c10Smrg *-sgi) 1683ea148d1dSmrg os=irix 168443f32c10Smrg ;; 168543f32c10Smrg *-siemens) 1686ea148d1dSmrg os=sysv4 168743f32c10Smrg ;; 168843f32c10Smrg *-masscomp) 1689ea148d1dSmrg os=rtu 169043f32c10Smrg ;; 169143f32c10Smrg f30[01]-fujitsu | f700-fujitsu) 1692ea148d1dSmrg os=uxpv 169343f32c10Smrg ;; 169443f32c10Smrg *-rom68k) 1695ea148d1dSmrg os=coff 169643f32c10Smrg ;; 169743f32c10Smrg *-*bug) 1698ea148d1dSmrg os=coff 169943f32c10Smrg ;; 170043f32c10Smrg *-apple) 1701ea148d1dSmrg os=macos 170243f32c10Smrg ;; 170343f32c10Smrg *-atari*) 1704ea148d1dSmrg os=mint 1705ea148d1dSmrg ;; 1706ea148d1dSmrg *-wrs) 1707ea148d1dSmrg os=vxworks 170843f32c10Smrg ;; 170943f32c10Smrg *) 1710ea148d1dSmrg os=none 171143f32c10Smrg ;; 171243f32c10Smrgesac 1713fbfaf8f3Smrg 171443f32c10Smrgfi 171543f32c10Smrg 1716fbfaf8f3Smrg# Now, validate our (potentially fixed-up) OS. 1717fbfaf8f3Smrgcase $os in 1718fbfaf8f3Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1719fbfaf8f3Smrg musl* | newlib* | relibc* | uclibc*) 1720fbfaf8f3Smrg ;; 1721fbfaf8f3Smrg # Likewise for "kernel-abi" 1722fbfaf8f3Smrg eabi* | gnueabi*) 1723fbfaf8f3Smrg ;; 1724fbfaf8f3Smrg # VxWorks passes extra cpu info in the 4th filed. 1725fbfaf8f3Smrg simlinux | simwindows | spe) 1726fbfaf8f3Smrg ;; 1727fbfaf8f3Smrg # Now accept the basic system types. 1728fbfaf8f3Smrg # The portable systems comes first. 1729fbfaf8f3Smrg # Each alternative MUST end in a * to match a version number. 1730fbfaf8f3Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1731fbfaf8f3Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1732fbfaf8f3Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1733fbfaf8f3Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1734fbfaf8f3Smrg | hiux* | abug | nacl* | netware* | windows* \ 1735fbfaf8f3Smrg | os9* | macos* | osx* | ios* \ 1736fbfaf8f3Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 1737fbfaf8f3Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1738fbfaf8f3Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1739fbfaf8f3Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1740fbfaf8f3Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1741fbfaf8f3Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1742fbfaf8f3Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1743fbfaf8f3Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1744fbfaf8f3Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1745fbfaf8f3Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1746fbfaf8f3Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1747fbfaf8f3Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1748fbfaf8f3Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1749fbfaf8f3Smrg | midipix* | mingw32* | mingw64* | mint* \ 1750fbfaf8f3Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1751fbfaf8f3Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 1752fbfaf8f3Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1753fbfaf8f3Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1754fbfaf8f3Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1755fbfaf8f3Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1756fbfaf8f3Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1757fbfaf8f3Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1758fbfaf8f3Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1759fbfaf8f3Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1760fbfaf8f3Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1761fbfaf8f3Smrg | fiwix* | mlibc* ) 1762fbfaf8f3Smrg ;; 1763fbfaf8f3Smrg # This one is extra strict with allowed versions 1764fbfaf8f3Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1765fbfaf8f3Smrg # Don't forget version if it is 3.2v4 or newer. 1766fbfaf8f3Smrg ;; 1767fbfaf8f3Smrg none) 1768fbfaf8f3Smrg ;; 1769fbfaf8f3Smrg kernel* ) 1770fbfaf8f3Smrg # Restricted further below 1771fbfaf8f3Smrg ;; 1772fbfaf8f3Smrg *) 1773fbfaf8f3Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1774fbfaf8f3Smrg exit 1 1775fbfaf8f3Smrg ;; 1776fbfaf8f3Smrgesac 1777fbfaf8f3Smrg 1778fbfaf8f3Smrg# As a final step for OS-related things, validate the OS-kernel combination 1779fbfaf8f3Smrg# (given a valid OS), if there is a kernel. 1780fbfaf8f3Smrgcase $kernel-$os in 1781fbfaf8f3Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1782fbfaf8f3Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 1783fbfaf8f3Smrg ;; 1784fbfaf8f3Smrg uclinux-uclibc* ) 1785fbfaf8f3Smrg ;; 1786fbfaf8f3Smrg managarm-mlibc* | managarm-kernel* ) 1787fbfaf8f3Smrg ;; 1788fbfaf8f3Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 1789fbfaf8f3Smrg # These are just libc implementations, not actual OSes, and thus 1790fbfaf8f3Smrg # require a kernel. 1791fbfaf8f3Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1792fbfaf8f3Smrg exit 1 1793fbfaf8f3Smrg ;; 1794fbfaf8f3Smrg -kernel* ) 1795fbfaf8f3Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 1796fbfaf8f3Smrg exit 1 1797fbfaf8f3Smrg ;; 1798fbfaf8f3Smrg *-kernel* ) 1799fbfaf8f3Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 1800fbfaf8f3Smrg exit 1 1801fbfaf8f3Smrg ;; 1802fbfaf8f3Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 1803fbfaf8f3Smrg ;; 1804fbfaf8f3Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1805fbfaf8f3Smrg ;; 1806fbfaf8f3Smrg nto-qnx*) 1807fbfaf8f3Smrg ;; 1808fbfaf8f3Smrg os2-emx) 1809fbfaf8f3Smrg ;; 1810fbfaf8f3Smrg *-eabi* | *-gnueabi*) 1811fbfaf8f3Smrg ;; 1812fbfaf8f3Smrg -*) 1813fbfaf8f3Smrg # Blank kernel with real OS is always fine. 1814fbfaf8f3Smrg ;; 1815fbfaf8f3Smrg *-*) 1816fbfaf8f3Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1817fbfaf8f3Smrg exit 1 1818fbfaf8f3Smrg ;; 1819fbfaf8f3Smrgesac 1820fbfaf8f3Smrg 182143f32c10Smrg# Here we handle the case where we know the os, and the CPU type, but not the 182243f32c10Smrg# manufacturer. We pick the logical manufacturer. 1823ea148d1dSmrgcase $vendor in 1824ea148d1dSmrg unknown) 1825fbfaf8f3Smrg case $cpu-$os in 1826fbfaf8f3Smrg *-riscix*) 182743f32c10Smrg vendor=acorn 182843f32c10Smrg ;; 1829fbfaf8f3Smrg *-sunos*) 183043f32c10Smrg vendor=sun 183143f32c10Smrg ;; 1832fbfaf8f3Smrg *-cnk* | *-aix*) 183343f32c10Smrg vendor=ibm 183443f32c10Smrg ;; 1835fbfaf8f3Smrg *-beos*) 183643f32c10Smrg vendor=be 183743f32c10Smrg ;; 1838fbfaf8f3Smrg *-hpux*) 183943f32c10Smrg vendor=hp 184043f32c10Smrg ;; 1841fbfaf8f3Smrg *-mpeix*) 184243f32c10Smrg vendor=hp 184343f32c10Smrg ;; 1844fbfaf8f3Smrg *-hiux*) 184543f32c10Smrg vendor=hitachi 184643f32c10Smrg ;; 1847fbfaf8f3Smrg *-unos*) 184843f32c10Smrg vendor=crds 184943f32c10Smrg ;; 1850fbfaf8f3Smrg *-dgux*) 185143f32c10Smrg vendor=dg 185243f32c10Smrg ;; 1853fbfaf8f3Smrg *-luna*) 185443f32c10Smrg vendor=omron 185543f32c10Smrg ;; 1856fbfaf8f3Smrg *-genix*) 185743f32c10Smrg vendor=ns 185843f32c10Smrg ;; 1859fbfaf8f3Smrg *-clix*) 1860ea148d1dSmrg vendor=intergraph 1861ea148d1dSmrg ;; 1862fbfaf8f3Smrg *-mvs* | *-opened*) 1863fbfaf8f3Smrg vendor=ibm 1864fbfaf8f3Smrg ;; 1865fbfaf8f3Smrg *-os400*) 186643f32c10Smrg vendor=ibm 186743f32c10Smrg ;; 1868fbfaf8f3Smrg s390-* | s390x-*) 186943f32c10Smrg vendor=ibm 187043f32c10Smrg ;; 1871fbfaf8f3Smrg *-ptx*) 187243f32c10Smrg vendor=sequent 187343f32c10Smrg ;; 1874fbfaf8f3Smrg *-tpf*) 187543f32c10Smrg vendor=ibm 187643f32c10Smrg ;; 1877fbfaf8f3Smrg *-vxsim* | *-vxworks* | *-windiss*) 187843f32c10Smrg vendor=wrs 187943f32c10Smrg ;; 1880fbfaf8f3Smrg *-aux*) 188143f32c10Smrg vendor=apple 188243f32c10Smrg ;; 1883fbfaf8f3Smrg *-hms*) 188443f32c10Smrg vendor=hitachi 188543f32c10Smrg ;; 1886fbfaf8f3Smrg *-mpw* | *-macos*) 188743f32c10Smrg vendor=apple 188843f32c10Smrg ;; 1889fbfaf8f3Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 189043f32c10Smrg vendor=atari 189143f32c10Smrg ;; 1892fbfaf8f3Smrg *-vos*) 189343f32c10Smrg vendor=stratus 189443f32c10Smrg ;; 189543f32c10Smrg esac 189643f32c10Smrg ;; 189743f32c10Smrgesac 189843f32c10Smrg 1899fbfaf8f3Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 190043f32c10Smrgexit 190143f32c10Smrg 190243f32c10Smrg# Local variables: 1903ea148d1dSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 190443f32c10Smrg# time-stamp-start: "timestamp='" 190543f32c10Smrg# time-stamp-format: "%:y-%02m-%02d" 190643f32c10Smrg# time-stamp-end: "'" 190743f32c10Smrg# End: 1908