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