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