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