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