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