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