1937a2000SPeter Wemm#! /bin/sh 2937a2000SPeter Wemm# Configuration validation subroutine script. 3*70b56f4bSCy Schubert# Copyright 1992-2022 Free Software Foundation, Inc. 4937a2000SPeter Wemm 5*70b56f4bSCy Schubert# shellcheck disable=SC2006,SC2268 # see below for rationale 6*70b56f4bSCy Schubert 7*70b56f4bSCy Schuberttimestamp='2022-01-03' 8937a2000SPeter Wemm 9d915215eSBaptiste Daroussin# This file is free software; you can redistribute it and/or modify it 10d915215eSBaptiste Daroussin# under the terms of the GNU General Public License as published by 11*70b56f4bSCy Schubert# the Free Software Foundation, either version 3 of the License, or 12937a2000SPeter Wemm# (at your option) any later version. 13937a2000SPeter Wemm# 14d915215eSBaptiste Daroussin# This program is distributed in the hope that it will be useful, but 15d915215eSBaptiste Daroussin# WITHOUT ANY WARRANTY; without even the implied warranty of 16d915215eSBaptiste Daroussin# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17d915215eSBaptiste Daroussin# General Public License for more details. 18937a2000SPeter Wemm# 19937a2000SPeter Wemm# You should have received a copy of the GNU General Public License 20bca4681bSCy Schubert# along with this program; if not, see <https://www.gnu.org/licenses/>. 21937a2000SPeter Wemm# 22937a2000SPeter Wemm# As a special exception to the GNU General Public License, if you 23937a2000SPeter Wemm# distribute this file as part of a program that contains a 24937a2000SPeter Wemm# configuration script generated by Autoconf, you may include it under 25d915215eSBaptiste Daroussin# the same distribution terms that you use for the rest of that 26d915215eSBaptiste Daroussin# program. This Exception is an additional permission under section 7 27d915215eSBaptiste Daroussin# of the GNU General Public License, version 3 ("GPLv3"). 28937a2000SPeter Wemm 29937a2000SPeter Wemm 30d915215eSBaptiste Daroussin# Please send patches to <config-patches@gnu.org>. 31937a2000SPeter Wemm# 32937a2000SPeter Wemm# Configuration subroutine to validate and canonicalize a configuration type. 33937a2000SPeter Wemm# Supply the specified configuration type as an argument. 34937a2000SPeter Wemm# If it is invalid, we print an error message on stderr and exit with code 1. 35937a2000SPeter Wemm# Otherwise, we print the canonical config type on stdout and succeed. 36937a2000SPeter Wemm 378bc5c7c0SPeter Wemm# You can get the latest version of this script from: 38*70b56f4bSCy Schubert# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 398bc5c7c0SPeter Wemm 40937a2000SPeter Wemm# This file is supposed to be the same for all GNU packages 41937a2000SPeter Wemm# and recognize all the CPU types, system types and aliases 42937a2000SPeter Wemm# that are meaningful with *any* GNU software. 43937a2000SPeter Wemm# Each package is responsible for reporting which valid configurations 44937a2000SPeter Wemm# it does not support. The user should be able to distinguish 45937a2000SPeter Wemm# a failure to support a valid configuration from a meaningless 46937a2000SPeter Wemm# configuration. 47937a2000SPeter Wemm 48937a2000SPeter Wemm# The goal of this file is to map all the various variations of a given 49937a2000SPeter Wemm# machine specification into a single specification in the form: 50937a2000SPeter Wemm# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51937a2000SPeter Wemm# or in some cases, the newer four-part form: 52937a2000SPeter Wemm# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53937a2000SPeter Wemm# It is wrong to echo any other type of specification. 54937a2000SPeter Wemm 55*70b56f4bSCy Schubert# The "shellcheck disable" line above the timestamp inhibits complaints 56*70b56f4bSCy Schubert# about features and limitations of the classic Bourne shell that were 57*70b56f4bSCy Schubert# superseded or lifted in POSIX. However, this script identifies a wide 58*70b56f4bSCy Schubert# variety of pre-POSIX systems that do not have POSIX shells at all, and 59*70b56f4bSCy Schubert# even some reasonably current systems (Solaris 10 as case-in-point) still 60*70b56f4bSCy Schubert# have a pre-POSIX /bin/sh. 61*70b56f4bSCy Schubert 62937a2000SPeter Wemmme=`echo "$0" | sed -e 's,.*/,,'` 63937a2000SPeter Wemm 64937a2000SPeter Wemmusage="\ 65bca4681bSCy SchubertUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66937a2000SPeter Wemm 67937a2000SPeter WemmCanonicalize a configuration name. 68937a2000SPeter Wemm 69bca4681bSCy SchubertOptions: 70937a2000SPeter Wemm -h, --help print this help, then exit 71937a2000SPeter Wemm -t, --time-stamp print date of last modification, then exit 72937a2000SPeter Wemm -v, --version print version number, then exit 73937a2000SPeter Wemm 74937a2000SPeter WemmReport bugs and patches to <config-patches@gnu.org>." 75937a2000SPeter Wemm 76937a2000SPeter Wemmversion="\ 77937a2000SPeter WemmGNU config.sub ($timestamp) 78937a2000SPeter Wemm 79*70b56f4bSCy SchubertCopyright 1992-2022 Free Software Foundation, Inc. 80937a2000SPeter Wemm 81937a2000SPeter WemmThis is free software; see the source for copying conditions. There is NO 82937a2000SPeter Wemmwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83937a2000SPeter Wemm 84937a2000SPeter Wemmhelp=" 85937a2000SPeter WemmTry \`$me --help' for more information." 86937a2000SPeter Wemm 87937a2000SPeter Wemm# Parse command line 88937a2000SPeter Wemmwhile test $# -gt 0 ; do 89937a2000SPeter Wemm case $1 in 90937a2000SPeter Wemm --time-stamp | --time* | -t ) 91937a2000SPeter Wemm echo "$timestamp" ; exit ;; 92937a2000SPeter Wemm --version | -v ) 93937a2000SPeter Wemm echo "$version" ; exit ;; 94937a2000SPeter Wemm --help | --h* | -h ) 95937a2000SPeter Wemm echo "$usage"; exit ;; 96937a2000SPeter Wemm -- ) # Stop option processing 97937a2000SPeter Wemm shift; break ;; 98937a2000SPeter Wemm - ) # Use stdin as input. 99937a2000SPeter Wemm break ;; 100937a2000SPeter Wemm -* ) 101*70b56f4bSCy Schubert echo "$me: invalid option $1$help" >&2 102937a2000SPeter Wemm exit 1 ;; 103937a2000SPeter Wemm 104937a2000SPeter Wemm *local*) 105937a2000SPeter Wemm # First pass through any local machine types. 106bca4681bSCy Schubert echo "$1" 107937a2000SPeter Wemm exit ;; 108937a2000SPeter Wemm 109937a2000SPeter Wemm * ) 110937a2000SPeter Wemm break ;; 111937a2000SPeter Wemm esac 112937a2000SPeter Wemmdone 113937a2000SPeter Wemm 114937a2000SPeter Wemmcase $# in 115937a2000SPeter Wemm 0) echo "$me: missing argument$help" >&2 116937a2000SPeter Wemm exit 1;; 117937a2000SPeter Wemm 1) ;; 118937a2000SPeter Wemm *) echo "$me: too many arguments$help" >&2 119937a2000SPeter Wemm exit 1;; 120937a2000SPeter Wemmesac 121937a2000SPeter Wemm 122*70b56f4bSCy Schubert# Split fields of configuration type 123*70b56f4bSCy Schubert# shellcheck disable=SC2162 124*70b56f4bSCy Schubertsaved_IFS=$IFS 125*70b56f4bSCy SchubertIFS="-" read field1 field2 field3 field4 <<EOF 126*70b56f4bSCy Schubert$1 127*70b56f4bSCy SchubertEOF 128*70b56f4bSCy SchubertIFS=$saved_IFS 129*70b56f4bSCy Schubert 130*70b56f4bSCy Schubert# Separate into logical components for further validation 131*70b56f4bSCy Schubertcase $1 in 132*70b56f4bSCy Schubert *-*-*-*-*) 133*70b56f4bSCy Schubert echo Invalid configuration \`"$1"\': more than four components >&2 134*70b56f4bSCy Schubert exit 1 135*70b56f4bSCy Schubert ;; 136*70b56f4bSCy Schubert *-*-*-*) 137*70b56f4bSCy Schubert basic_machine=$field1-$field2 138*70b56f4bSCy Schubert basic_os=$field3-$field4 139*70b56f4bSCy Schubert ;; 140*70b56f4bSCy Schubert *-*-*) 141*70b56f4bSCy Schubert # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142*70b56f4bSCy Schubert # parts 143*70b56f4bSCy Schubert maybe_os=$field2-$field3 144937a2000SPeter Wemm case $maybe_os in 145*70b56f4bSCy Schubert nto-qnx* | linux-* | uclinux-uclibc* \ 146*70b56f4bSCy Schubert | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147*70b56f4bSCy Schubert | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148*70b56f4bSCy Schubert | storm-chaos* | os2-emx* | rtmk-nova*) 149*70b56f4bSCy Schubert basic_machine=$field1 150*70b56f4bSCy Schubert basic_os=$maybe_os 151937a2000SPeter Wemm ;; 1528bc5c7c0SPeter Wemm android-linux) 153*70b56f4bSCy Schubert basic_machine=$field1-unknown 154*70b56f4bSCy Schubert basic_os=linux-android 1558bc5c7c0SPeter Wemm ;; 156937a2000SPeter Wemm *) 157*70b56f4bSCy Schubert basic_machine=$field1-$field2 158*70b56f4bSCy Schubert basic_os=$field3 159*70b56f4bSCy Schubert ;; 160*70b56f4bSCy Schubert esac 161*70b56f4bSCy Schubert ;; 162*70b56f4bSCy Schubert *-*) 163*70b56f4bSCy Schubert # A lone config we happen to match not fitting any pattern 164*70b56f4bSCy Schubert case $field1-$field2 in 165*70b56f4bSCy Schubert decstation-3100) 166*70b56f4bSCy Schubert basic_machine=mips-dec 167*70b56f4bSCy Schubert basic_os= 168*70b56f4bSCy Schubert ;; 169*70b56f4bSCy Schubert *-*) 170*70b56f4bSCy Schubert # Second component is usually, but not always the OS 171*70b56f4bSCy Schubert case $field2 in 172*70b56f4bSCy Schubert # Prevent following clause from handling this valid os 173*70b56f4bSCy Schubert sun*os*) 174*70b56f4bSCy Schubert basic_machine=$field1 175*70b56f4bSCy Schubert basic_os=$field2 176*70b56f4bSCy Schubert ;; 177*70b56f4bSCy Schubert zephyr*) 178*70b56f4bSCy Schubert basic_machine=$field1-unknown 179*70b56f4bSCy Schubert basic_os=$field2 180*70b56f4bSCy Schubert ;; 181*70b56f4bSCy Schubert # Manufacturers 182*70b56f4bSCy Schubert dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183*70b56f4bSCy Schubert | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184*70b56f4bSCy Schubert | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185*70b56f4bSCy Schubert | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186*70b56f4bSCy Schubert | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187*70b56f4bSCy Schubert | ultra | tti* | harris | dolphin | highlevel | gould \ 188*70b56f4bSCy Schubert | cbm | ns | masscomp | apple | axis | knuth | cray \ 189*70b56f4bSCy Schubert | microblaze* | sim | cisco \ 190*70b56f4bSCy Schubert | oki | wec | wrs | winbond) 191*70b56f4bSCy Schubert basic_machine=$field1-$field2 192*70b56f4bSCy Schubert basic_os= 193*70b56f4bSCy Schubert ;; 194*70b56f4bSCy Schubert *) 195*70b56f4bSCy Schubert basic_machine=$field1 196*70b56f4bSCy Schubert basic_os=$field2 197*70b56f4bSCy Schubert ;; 198*70b56f4bSCy Schubert esac 199*70b56f4bSCy Schubert ;; 200*70b56f4bSCy Schubert esac 201*70b56f4bSCy Schubert ;; 202*70b56f4bSCy Schubert *) 203*70b56f4bSCy Schubert # Convert single-component short-hands not valid as part of 204*70b56f4bSCy Schubert # multi-component configurations. 205*70b56f4bSCy Schubert case $field1 in 206*70b56f4bSCy Schubert 386bsd) 207*70b56f4bSCy Schubert basic_machine=i386-pc 208*70b56f4bSCy Schubert basic_os=bsd 209*70b56f4bSCy Schubert ;; 210*70b56f4bSCy Schubert a29khif) 211*70b56f4bSCy Schubert basic_machine=a29k-amd 212*70b56f4bSCy Schubert basic_os=udi 213*70b56f4bSCy Schubert ;; 214*70b56f4bSCy Schubert adobe68k) 215*70b56f4bSCy Schubert basic_machine=m68010-adobe 216*70b56f4bSCy Schubert basic_os=scout 217*70b56f4bSCy Schubert ;; 218*70b56f4bSCy Schubert alliant) 219*70b56f4bSCy Schubert basic_machine=fx80-alliant 220*70b56f4bSCy Schubert basic_os= 221*70b56f4bSCy Schubert ;; 222*70b56f4bSCy Schubert altos | altos3068) 223*70b56f4bSCy Schubert basic_machine=m68k-altos 224*70b56f4bSCy Schubert basic_os= 225*70b56f4bSCy Schubert ;; 226*70b56f4bSCy Schubert am29k) 227*70b56f4bSCy Schubert basic_machine=a29k-none 228*70b56f4bSCy Schubert basic_os=bsd 229*70b56f4bSCy Schubert ;; 230*70b56f4bSCy Schubert amdahl) 231*70b56f4bSCy Schubert basic_machine=580-amdahl 232*70b56f4bSCy Schubert basic_os=sysv 233*70b56f4bSCy Schubert ;; 234*70b56f4bSCy Schubert amiga) 235*70b56f4bSCy Schubert basic_machine=m68k-unknown 236*70b56f4bSCy Schubert basic_os= 237*70b56f4bSCy Schubert ;; 238*70b56f4bSCy Schubert amigaos | amigados) 239*70b56f4bSCy Schubert basic_machine=m68k-unknown 240*70b56f4bSCy Schubert basic_os=amigaos 241*70b56f4bSCy Schubert ;; 242*70b56f4bSCy Schubert amigaunix | amix) 243*70b56f4bSCy Schubert basic_machine=m68k-unknown 244*70b56f4bSCy Schubert basic_os=sysv4 245*70b56f4bSCy Schubert ;; 246*70b56f4bSCy Schubert apollo68) 247*70b56f4bSCy Schubert basic_machine=m68k-apollo 248*70b56f4bSCy Schubert basic_os=sysv 249*70b56f4bSCy Schubert ;; 250*70b56f4bSCy Schubert apollo68bsd) 251*70b56f4bSCy Schubert basic_machine=m68k-apollo 252*70b56f4bSCy Schubert basic_os=bsd 253*70b56f4bSCy Schubert ;; 254*70b56f4bSCy Schubert aros) 255*70b56f4bSCy Schubert basic_machine=i386-pc 256*70b56f4bSCy Schubert basic_os=aros 257*70b56f4bSCy Schubert ;; 258*70b56f4bSCy Schubert aux) 259*70b56f4bSCy Schubert basic_machine=m68k-apple 260*70b56f4bSCy Schubert basic_os=aux 261*70b56f4bSCy Schubert ;; 262*70b56f4bSCy Schubert balance) 263*70b56f4bSCy Schubert basic_machine=ns32k-sequent 264*70b56f4bSCy Schubert basic_os=dynix 265*70b56f4bSCy Schubert ;; 266*70b56f4bSCy Schubert blackfin) 267*70b56f4bSCy Schubert basic_machine=bfin-unknown 268*70b56f4bSCy Schubert basic_os=linux 269*70b56f4bSCy Schubert ;; 270*70b56f4bSCy Schubert cegcc) 271*70b56f4bSCy Schubert basic_machine=arm-unknown 272*70b56f4bSCy Schubert basic_os=cegcc 273*70b56f4bSCy Schubert ;; 274*70b56f4bSCy Schubert convex-c1) 275*70b56f4bSCy Schubert basic_machine=c1-convex 276*70b56f4bSCy Schubert basic_os=bsd 277*70b56f4bSCy Schubert ;; 278*70b56f4bSCy Schubert convex-c2) 279*70b56f4bSCy Schubert basic_machine=c2-convex 280*70b56f4bSCy Schubert basic_os=bsd 281*70b56f4bSCy Schubert ;; 282*70b56f4bSCy Schubert convex-c32) 283*70b56f4bSCy Schubert basic_machine=c32-convex 284*70b56f4bSCy Schubert basic_os=bsd 285*70b56f4bSCy Schubert ;; 286*70b56f4bSCy Schubert convex-c34) 287*70b56f4bSCy Schubert basic_machine=c34-convex 288*70b56f4bSCy Schubert basic_os=bsd 289*70b56f4bSCy Schubert ;; 290*70b56f4bSCy Schubert convex-c38) 291*70b56f4bSCy Schubert basic_machine=c38-convex 292*70b56f4bSCy Schubert basic_os=bsd 293*70b56f4bSCy Schubert ;; 294*70b56f4bSCy Schubert cray) 295*70b56f4bSCy Schubert basic_machine=j90-cray 296*70b56f4bSCy Schubert basic_os=unicos 297*70b56f4bSCy Schubert ;; 298*70b56f4bSCy Schubert crds | unos) 299*70b56f4bSCy Schubert basic_machine=m68k-crds 300*70b56f4bSCy Schubert basic_os= 301*70b56f4bSCy Schubert ;; 302*70b56f4bSCy Schubert da30) 303*70b56f4bSCy Schubert basic_machine=m68k-da30 304*70b56f4bSCy Schubert basic_os= 305*70b56f4bSCy Schubert ;; 306*70b56f4bSCy Schubert decstation | pmax | pmin | dec3100 | decstatn) 307*70b56f4bSCy Schubert basic_machine=mips-dec 308*70b56f4bSCy Schubert basic_os= 309*70b56f4bSCy Schubert ;; 310*70b56f4bSCy Schubert delta88) 311*70b56f4bSCy Schubert basic_machine=m88k-motorola 312*70b56f4bSCy Schubert basic_os=sysv3 313*70b56f4bSCy Schubert ;; 314*70b56f4bSCy Schubert dicos) 315*70b56f4bSCy Schubert basic_machine=i686-pc 316*70b56f4bSCy Schubert basic_os=dicos 317*70b56f4bSCy Schubert ;; 318*70b56f4bSCy Schubert djgpp) 319*70b56f4bSCy Schubert basic_machine=i586-pc 320*70b56f4bSCy Schubert basic_os=msdosdjgpp 321*70b56f4bSCy Schubert ;; 322*70b56f4bSCy Schubert ebmon29k) 323*70b56f4bSCy Schubert basic_machine=a29k-amd 324*70b56f4bSCy Schubert basic_os=ebmon 325*70b56f4bSCy Schubert ;; 326*70b56f4bSCy Schubert es1800 | OSE68k | ose68k | ose | OSE) 327*70b56f4bSCy Schubert basic_machine=m68k-ericsson 328*70b56f4bSCy Schubert basic_os=ose 329*70b56f4bSCy Schubert ;; 330*70b56f4bSCy Schubert gmicro) 331*70b56f4bSCy Schubert basic_machine=tron-gmicro 332*70b56f4bSCy Schubert basic_os=sysv 333*70b56f4bSCy Schubert ;; 334*70b56f4bSCy Schubert go32) 335*70b56f4bSCy Schubert basic_machine=i386-pc 336*70b56f4bSCy Schubert basic_os=go32 337*70b56f4bSCy Schubert ;; 338*70b56f4bSCy Schubert h8300hms) 339*70b56f4bSCy Schubert basic_machine=h8300-hitachi 340*70b56f4bSCy Schubert basic_os=hms 341*70b56f4bSCy Schubert ;; 342*70b56f4bSCy Schubert h8300xray) 343*70b56f4bSCy Schubert basic_machine=h8300-hitachi 344*70b56f4bSCy Schubert basic_os=xray 345*70b56f4bSCy Schubert ;; 346*70b56f4bSCy Schubert h8500hms) 347*70b56f4bSCy Schubert basic_machine=h8500-hitachi 348*70b56f4bSCy Schubert basic_os=hms 349*70b56f4bSCy Schubert ;; 350*70b56f4bSCy Schubert harris) 351*70b56f4bSCy Schubert basic_machine=m88k-harris 352*70b56f4bSCy Schubert basic_os=sysv3 353*70b56f4bSCy Schubert ;; 354*70b56f4bSCy Schubert hp300 | hp300hpux) 355*70b56f4bSCy Schubert basic_machine=m68k-hp 356*70b56f4bSCy Schubert basic_os=hpux 357*70b56f4bSCy Schubert ;; 358*70b56f4bSCy Schubert hp300bsd) 359*70b56f4bSCy Schubert basic_machine=m68k-hp 360*70b56f4bSCy Schubert basic_os=bsd 361*70b56f4bSCy Schubert ;; 362*70b56f4bSCy Schubert hppaosf) 363*70b56f4bSCy Schubert basic_machine=hppa1.1-hp 364*70b56f4bSCy Schubert basic_os=osf 365*70b56f4bSCy Schubert ;; 366*70b56f4bSCy Schubert hppro) 367*70b56f4bSCy Schubert basic_machine=hppa1.1-hp 368*70b56f4bSCy Schubert basic_os=proelf 369*70b56f4bSCy Schubert ;; 370*70b56f4bSCy Schubert i386mach) 371*70b56f4bSCy Schubert basic_machine=i386-mach 372*70b56f4bSCy Schubert basic_os=mach 373*70b56f4bSCy Schubert ;; 374*70b56f4bSCy Schubert isi68 | isi) 375*70b56f4bSCy Schubert basic_machine=m68k-isi 376*70b56f4bSCy Schubert basic_os=sysv 377*70b56f4bSCy Schubert ;; 378*70b56f4bSCy Schubert m68knommu) 379*70b56f4bSCy Schubert basic_machine=m68k-unknown 380*70b56f4bSCy Schubert basic_os=linux 381*70b56f4bSCy Schubert ;; 382*70b56f4bSCy Schubert magnum | m3230) 383*70b56f4bSCy Schubert basic_machine=mips-mips 384*70b56f4bSCy Schubert basic_os=sysv 385*70b56f4bSCy Schubert ;; 386*70b56f4bSCy Schubert merlin) 387*70b56f4bSCy Schubert basic_machine=ns32k-utek 388*70b56f4bSCy Schubert basic_os=sysv 389*70b56f4bSCy Schubert ;; 390*70b56f4bSCy Schubert mingw64) 391*70b56f4bSCy Schubert basic_machine=x86_64-pc 392*70b56f4bSCy Schubert basic_os=mingw64 393*70b56f4bSCy Schubert ;; 394*70b56f4bSCy Schubert mingw32) 395*70b56f4bSCy Schubert basic_machine=i686-pc 396*70b56f4bSCy Schubert basic_os=mingw32 397*70b56f4bSCy Schubert ;; 398*70b56f4bSCy Schubert mingw32ce) 399*70b56f4bSCy Schubert basic_machine=arm-unknown 400*70b56f4bSCy Schubert basic_os=mingw32ce 401*70b56f4bSCy Schubert ;; 402*70b56f4bSCy Schubert monitor) 403*70b56f4bSCy Schubert basic_machine=m68k-rom68k 404*70b56f4bSCy Schubert basic_os=coff 405*70b56f4bSCy Schubert ;; 406*70b56f4bSCy Schubert morphos) 407*70b56f4bSCy Schubert basic_machine=powerpc-unknown 408*70b56f4bSCy Schubert basic_os=morphos 409*70b56f4bSCy Schubert ;; 410*70b56f4bSCy Schubert moxiebox) 411*70b56f4bSCy Schubert basic_machine=moxie-unknown 412*70b56f4bSCy Schubert basic_os=moxiebox 413*70b56f4bSCy Schubert ;; 414*70b56f4bSCy Schubert msdos) 415*70b56f4bSCy Schubert basic_machine=i386-pc 416*70b56f4bSCy Schubert basic_os=msdos 417*70b56f4bSCy Schubert ;; 418*70b56f4bSCy Schubert msys) 419*70b56f4bSCy Schubert basic_machine=i686-pc 420*70b56f4bSCy Schubert basic_os=msys 421*70b56f4bSCy Schubert ;; 422*70b56f4bSCy Schubert mvs) 423*70b56f4bSCy Schubert basic_machine=i370-ibm 424*70b56f4bSCy Schubert basic_os=mvs 425*70b56f4bSCy Schubert ;; 426*70b56f4bSCy Schubert nacl) 427*70b56f4bSCy Schubert basic_machine=le32-unknown 428*70b56f4bSCy Schubert basic_os=nacl 429*70b56f4bSCy Schubert ;; 430*70b56f4bSCy Schubert ncr3000) 431*70b56f4bSCy Schubert basic_machine=i486-ncr 432*70b56f4bSCy Schubert basic_os=sysv4 433*70b56f4bSCy Schubert ;; 434*70b56f4bSCy Schubert netbsd386) 435*70b56f4bSCy Schubert basic_machine=i386-pc 436*70b56f4bSCy Schubert basic_os=netbsd 437*70b56f4bSCy Schubert ;; 438*70b56f4bSCy Schubert netwinder) 439*70b56f4bSCy Schubert basic_machine=armv4l-rebel 440*70b56f4bSCy Schubert basic_os=linux 441*70b56f4bSCy Schubert ;; 442*70b56f4bSCy Schubert news | news700 | news800 | news900) 443*70b56f4bSCy Schubert basic_machine=m68k-sony 444*70b56f4bSCy Schubert basic_os=newsos 445*70b56f4bSCy Schubert ;; 446*70b56f4bSCy Schubert news1000) 447*70b56f4bSCy Schubert basic_machine=m68030-sony 448*70b56f4bSCy Schubert basic_os=newsos 449*70b56f4bSCy Schubert ;; 450*70b56f4bSCy Schubert necv70) 451*70b56f4bSCy Schubert basic_machine=v70-nec 452*70b56f4bSCy Schubert basic_os=sysv 453*70b56f4bSCy Schubert ;; 454*70b56f4bSCy Schubert nh3000) 455*70b56f4bSCy Schubert basic_machine=m68k-harris 456*70b56f4bSCy Schubert basic_os=cxux 457*70b56f4bSCy Schubert ;; 458*70b56f4bSCy Schubert nh[45]000) 459*70b56f4bSCy Schubert basic_machine=m88k-harris 460*70b56f4bSCy Schubert basic_os=cxux 461*70b56f4bSCy Schubert ;; 462*70b56f4bSCy Schubert nindy960) 463*70b56f4bSCy Schubert basic_machine=i960-intel 464*70b56f4bSCy Schubert basic_os=nindy 465*70b56f4bSCy Schubert ;; 466*70b56f4bSCy Schubert mon960) 467*70b56f4bSCy Schubert basic_machine=i960-intel 468*70b56f4bSCy Schubert basic_os=mon960 469*70b56f4bSCy Schubert ;; 470*70b56f4bSCy Schubert nonstopux) 471*70b56f4bSCy Schubert basic_machine=mips-compaq 472*70b56f4bSCy Schubert basic_os=nonstopux 473*70b56f4bSCy Schubert ;; 474*70b56f4bSCy Schubert os400) 475*70b56f4bSCy Schubert basic_machine=powerpc-ibm 476*70b56f4bSCy Schubert basic_os=os400 477*70b56f4bSCy Schubert ;; 478*70b56f4bSCy Schubert OSE68000 | ose68000) 479*70b56f4bSCy Schubert basic_machine=m68000-ericsson 480*70b56f4bSCy Schubert basic_os=ose 481*70b56f4bSCy Schubert ;; 482*70b56f4bSCy Schubert os68k) 483*70b56f4bSCy Schubert basic_machine=m68k-none 484*70b56f4bSCy Schubert basic_os=os68k 485*70b56f4bSCy Schubert ;; 486*70b56f4bSCy Schubert paragon) 487*70b56f4bSCy Schubert basic_machine=i860-intel 488*70b56f4bSCy Schubert basic_os=osf 489*70b56f4bSCy Schubert ;; 490*70b56f4bSCy Schubert parisc) 491*70b56f4bSCy Schubert basic_machine=hppa-unknown 492*70b56f4bSCy Schubert basic_os=linux 493*70b56f4bSCy Schubert ;; 494*70b56f4bSCy Schubert psp) 495*70b56f4bSCy Schubert basic_machine=mipsallegrexel-sony 496*70b56f4bSCy Schubert basic_os=psp 497*70b56f4bSCy Schubert ;; 498*70b56f4bSCy Schubert pw32) 499*70b56f4bSCy Schubert basic_machine=i586-unknown 500*70b56f4bSCy Schubert basic_os=pw32 501*70b56f4bSCy Schubert ;; 502*70b56f4bSCy Schubert rdos | rdos64) 503*70b56f4bSCy Schubert basic_machine=x86_64-pc 504*70b56f4bSCy Schubert basic_os=rdos 505*70b56f4bSCy Schubert ;; 506*70b56f4bSCy Schubert rdos32) 507*70b56f4bSCy Schubert basic_machine=i386-pc 508*70b56f4bSCy Schubert basic_os=rdos 509*70b56f4bSCy Schubert ;; 510*70b56f4bSCy Schubert rom68k) 511*70b56f4bSCy Schubert basic_machine=m68k-rom68k 512*70b56f4bSCy Schubert basic_os=coff 513*70b56f4bSCy Schubert ;; 514*70b56f4bSCy Schubert sa29200) 515*70b56f4bSCy Schubert basic_machine=a29k-amd 516*70b56f4bSCy Schubert basic_os=udi 517*70b56f4bSCy Schubert ;; 518*70b56f4bSCy Schubert sei) 519*70b56f4bSCy Schubert basic_machine=mips-sei 520*70b56f4bSCy Schubert basic_os=seiux 521*70b56f4bSCy Schubert ;; 522*70b56f4bSCy Schubert sequent) 523*70b56f4bSCy Schubert basic_machine=i386-sequent 524*70b56f4bSCy Schubert basic_os= 525*70b56f4bSCy Schubert ;; 526*70b56f4bSCy Schubert sps7) 527*70b56f4bSCy Schubert basic_machine=m68k-bull 528*70b56f4bSCy Schubert basic_os=sysv2 529*70b56f4bSCy Schubert ;; 530*70b56f4bSCy Schubert st2000) 531*70b56f4bSCy Schubert basic_machine=m68k-tandem 532*70b56f4bSCy Schubert basic_os= 533*70b56f4bSCy Schubert ;; 534*70b56f4bSCy Schubert stratus) 535*70b56f4bSCy Schubert basic_machine=i860-stratus 536*70b56f4bSCy Schubert basic_os=sysv4 537*70b56f4bSCy Schubert ;; 538*70b56f4bSCy Schubert sun2) 539*70b56f4bSCy Schubert basic_machine=m68000-sun 540*70b56f4bSCy Schubert basic_os= 541*70b56f4bSCy Schubert ;; 542*70b56f4bSCy Schubert sun2os3) 543*70b56f4bSCy Schubert basic_machine=m68000-sun 544*70b56f4bSCy Schubert basic_os=sunos3 545*70b56f4bSCy Schubert ;; 546*70b56f4bSCy Schubert sun2os4) 547*70b56f4bSCy Schubert basic_machine=m68000-sun 548*70b56f4bSCy Schubert basic_os=sunos4 549*70b56f4bSCy Schubert ;; 550*70b56f4bSCy Schubert sun3) 551*70b56f4bSCy Schubert basic_machine=m68k-sun 552*70b56f4bSCy Schubert basic_os= 553*70b56f4bSCy Schubert ;; 554*70b56f4bSCy Schubert sun3os3) 555*70b56f4bSCy Schubert basic_machine=m68k-sun 556*70b56f4bSCy Schubert basic_os=sunos3 557*70b56f4bSCy Schubert ;; 558*70b56f4bSCy Schubert sun3os4) 559*70b56f4bSCy Schubert basic_machine=m68k-sun 560*70b56f4bSCy Schubert basic_os=sunos4 561*70b56f4bSCy Schubert ;; 562*70b56f4bSCy Schubert sun4) 563*70b56f4bSCy Schubert basic_machine=sparc-sun 564*70b56f4bSCy Schubert basic_os= 565*70b56f4bSCy Schubert ;; 566*70b56f4bSCy Schubert sun4os3) 567*70b56f4bSCy Schubert basic_machine=sparc-sun 568*70b56f4bSCy Schubert basic_os=sunos3 569*70b56f4bSCy Schubert ;; 570*70b56f4bSCy Schubert sun4os4) 571*70b56f4bSCy Schubert basic_machine=sparc-sun 572*70b56f4bSCy Schubert basic_os=sunos4 573*70b56f4bSCy Schubert ;; 574*70b56f4bSCy Schubert sun4sol2) 575*70b56f4bSCy Schubert basic_machine=sparc-sun 576*70b56f4bSCy Schubert basic_os=solaris2 577*70b56f4bSCy Schubert ;; 578*70b56f4bSCy Schubert sun386 | sun386i | roadrunner) 579*70b56f4bSCy Schubert basic_machine=i386-sun 580*70b56f4bSCy Schubert basic_os= 581*70b56f4bSCy Schubert ;; 582*70b56f4bSCy Schubert sv1) 583*70b56f4bSCy Schubert basic_machine=sv1-cray 584*70b56f4bSCy Schubert basic_os=unicos 585*70b56f4bSCy Schubert ;; 586*70b56f4bSCy Schubert symmetry) 587*70b56f4bSCy Schubert basic_machine=i386-sequent 588*70b56f4bSCy Schubert basic_os=dynix 589*70b56f4bSCy Schubert ;; 590*70b56f4bSCy Schubert t3e) 591*70b56f4bSCy Schubert basic_machine=alphaev5-cray 592*70b56f4bSCy Schubert basic_os=unicos 593*70b56f4bSCy Schubert ;; 594*70b56f4bSCy Schubert t90) 595*70b56f4bSCy Schubert basic_machine=t90-cray 596*70b56f4bSCy Schubert basic_os=unicos 597*70b56f4bSCy Schubert ;; 598*70b56f4bSCy Schubert toad1) 599*70b56f4bSCy Schubert basic_machine=pdp10-xkl 600*70b56f4bSCy Schubert basic_os=tops20 601*70b56f4bSCy Schubert ;; 602*70b56f4bSCy Schubert tpf) 603*70b56f4bSCy Schubert basic_machine=s390x-ibm 604*70b56f4bSCy Schubert basic_os=tpf 605*70b56f4bSCy Schubert ;; 606*70b56f4bSCy Schubert udi29k) 607*70b56f4bSCy Schubert basic_machine=a29k-amd 608*70b56f4bSCy Schubert basic_os=udi 609*70b56f4bSCy Schubert ;; 610*70b56f4bSCy Schubert ultra3) 611*70b56f4bSCy Schubert basic_machine=a29k-nyu 612*70b56f4bSCy Schubert basic_os=sym1 613*70b56f4bSCy Schubert ;; 614*70b56f4bSCy Schubert v810 | necv810) 615*70b56f4bSCy Schubert basic_machine=v810-nec 616*70b56f4bSCy Schubert basic_os=none 617*70b56f4bSCy Schubert ;; 618*70b56f4bSCy Schubert vaxv) 619*70b56f4bSCy Schubert basic_machine=vax-dec 620*70b56f4bSCy Schubert basic_os=sysv 621*70b56f4bSCy Schubert ;; 622*70b56f4bSCy Schubert vms) 623*70b56f4bSCy Schubert basic_machine=vax-dec 624*70b56f4bSCy Schubert basic_os=vms 625*70b56f4bSCy Schubert ;; 626*70b56f4bSCy Schubert vsta) 627*70b56f4bSCy Schubert basic_machine=i386-pc 628*70b56f4bSCy Schubert basic_os=vsta 629*70b56f4bSCy Schubert ;; 630*70b56f4bSCy Schubert vxworks960) 631*70b56f4bSCy Schubert basic_machine=i960-wrs 632*70b56f4bSCy Schubert basic_os=vxworks 633*70b56f4bSCy Schubert ;; 634*70b56f4bSCy Schubert vxworks68) 635*70b56f4bSCy Schubert basic_machine=m68k-wrs 636*70b56f4bSCy Schubert basic_os=vxworks 637*70b56f4bSCy Schubert ;; 638*70b56f4bSCy Schubert vxworks29k) 639*70b56f4bSCy Schubert basic_machine=a29k-wrs 640*70b56f4bSCy Schubert basic_os=vxworks 641*70b56f4bSCy Schubert ;; 642*70b56f4bSCy Schubert xbox) 643*70b56f4bSCy Schubert basic_machine=i686-pc 644*70b56f4bSCy Schubert basic_os=mingw32 645*70b56f4bSCy Schubert ;; 646*70b56f4bSCy Schubert ymp) 647*70b56f4bSCy Schubert basic_machine=ymp-cray 648*70b56f4bSCy Schubert basic_os=unicos 649*70b56f4bSCy Schubert ;; 650*70b56f4bSCy Schubert *) 651*70b56f4bSCy Schubert basic_machine=$1 652*70b56f4bSCy Schubert basic_os= 653*70b56f4bSCy Schubert ;; 654*70b56f4bSCy Schubert esac 655937a2000SPeter Wemm ;; 656937a2000SPeter Wemmesac 657937a2000SPeter Wemm 658*70b56f4bSCy Schubert# Decode 1-component or ad-hoc basic machines 659937a2000SPeter Wemmcase $basic_machine in 660*70b56f4bSCy Schubert # Here we handle the default manufacturer of certain CPU types. It is in 661*70b56f4bSCy Schubert # some cases the only manufacturer, in others, it is the most popular. 662*70b56f4bSCy Schubert w89k) 663*70b56f4bSCy Schubert cpu=hppa1.1 664*70b56f4bSCy Schubert vendor=winbond 665*70b56f4bSCy Schubert ;; 666*70b56f4bSCy Schubert op50n) 667*70b56f4bSCy Schubert cpu=hppa1.1 668*70b56f4bSCy Schubert vendor=oki 669*70b56f4bSCy Schubert ;; 670*70b56f4bSCy Schubert op60c) 671*70b56f4bSCy Schubert cpu=hppa1.1 672*70b56f4bSCy Schubert vendor=oki 673*70b56f4bSCy Schubert ;; 674*70b56f4bSCy Schubert ibm*) 675*70b56f4bSCy Schubert cpu=i370 676*70b56f4bSCy Schubert vendor=ibm 677*70b56f4bSCy Schubert ;; 678*70b56f4bSCy Schubert orion105) 679*70b56f4bSCy Schubert cpu=clipper 680*70b56f4bSCy Schubert vendor=highlevel 681*70b56f4bSCy Schubert ;; 682*70b56f4bSCy Schubert mac | mpw | mac-mpw) 683*70b56f4bSCy Schubert cpu=m68k 684*70b56f4bSCy Schubert vendor=apple 685*70b56f4bSCy Schubert ;; 686*70b56f4bSCy Schubert pmac | pmac-mpw) 687*70b56f4bSCy Schubert cpu=powerpc 688*70b56f4bSCy Schubert vendor=apple 689*70b56f4bSCy Schubert ;; 690*70b56f4bSCy Schubert 691*70b56f4bSCy Schubert # Recognize the various machine names and aliases which stand 692*70b56f4bSCy Schubert # for a CPU type and a company and sometimes even an OS. 693*70b56f4bSCy Schubert 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694*70b56f4bSCy Schubert cpu=m68000 695*70b56f4bSCy Schubert vendor=att 696*70b56f4bSCy Schubert ;; 697*70b56f4bSCy Schubert 3b*) 698*70b56f4bSCy Schubert cpu=we32k 699*70b56f4bSCy Schubert vendor=att 700*70b56f4bSCy Schubert ;; 701*70b56f4bSCy Schubert bluegene*) 702*70b56f4bSCy Schubert cpu=powerpc 703*70b56f4bSCy Schubert vendor=ibm 704*70b56f4bSCy Schubert basic_os=cnk 705*70b56f4bSCy Schubert ;; 706*70b56f4bSCy Schubert decsystem10* | dec10*) 707*70b56f4bSCy Schubert cpu=pdp10 708*70b56f4bSCy Schubert vendor=dec 709*70b56f4bSCy Schubert basic_os=tops10 710*70b56f4bSCy Schubert ;; 711*70b56f4bSCy Schubert decsystem20* | dec20*) 712*70b56f4bSCy Schubert cpu=pdp10 713*70b56f4bSCy Schubert vendor=dec 714*70b56f4bSCy Schubert basic_os=tops20 715*70b56f4bSCy Schubert ;; 716*70b56f4bSCy Schubert delta | 3300 | motorola-3300 | motorola-delta \ 717*70b56f4bSCy Schubert | 3300-motorola | delta-motorola) 718*70b56f4bSCy Schubert cpu=m68k 719*70b56f4bSCy Schubert vendor=motorola 720*70b56f4bSCy Schubert ;; 721*70b56f4bSCy Schubert dpx2*) 722*70b56f4bSCy Schubert cpu=m68k 723*70b56f4bSCy Schubert vendor=bull 724*70b56f4bSCy Schubert basic_os=sysv3 725*70b56f4bSCy Schubert ;; 726*70b56f4bSCy Schubert encore | umax | mmax) 727*70b56f4bSCy Schubert cpu=ns32k 728*70b56f4bSCy Schubert vendor=encore 729*70b56f4bSCy Schubert ;; 730*70b56f4bSCy Schubert elxsi) 731*70b56f4bSCy Schubert cpu=elxsi 732*70b56f4bSCy Schubert vendor=elxsi 733*70b56f4bSCy Schubert basic_os=${basic_os:-bsd} 734*70b56f4bSCy Schubert ;; 735*70b56f4bSCy Schubert fx2800) 736*70b56f4bSCy Schubert cpu=i860 737*70b56f4bSCy Schubert vendor=alliant 738*70b56f4bSCy Schubert ;; 739*70b56f4bSCy Schubert genix) 740*70b56f4bSCy Schubert cpu=ns32k 741*70b56f4bSCy Schubert vendor=ns 742*70b56f4bSCy Schubert ;; 743*70b56f4bSCy Schubert h3050r* | hiux*) 744*70b56f4bSCy Schubert cpu=hppa1.1 745*70b56f4bSCy Schubert vendor=hitachi 746*70b56f4bSCy Schubert basic_os=hiuxwe2 747*70b56f4bSCy Schubert ;; 748*70b56f4bSCy Schubert hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749*70b56f4bSCy Schubert cpu=hppa1.0 750*70b56f4bSCy Schubert vendor=hp 751*70b56f4bSCy Schubert ;; 752*70b56f4bSCy Schubert hp9k2[0-9][0-9] | hp9k31[0-9]) 753*70b56f4bSCy Schubert cpu=m68000 754*70b56f4bSCy Schubert vendor=hp 755*70b56f4bSCy Schubert ;; 756*70b56f4bSCy Schubert hp9k3[2-9][0-9]) 757*70b56f4bSCy Schubert cpu=m68k 758*70b56f4bSCy Schubert vendor=hp 759*70b56f4bSCy Schubert ;; 760*70b56f4bSCy Schubert hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761*70b56f4bSCy Schubert cpu=hppa1.0 762*70b56f4bSCy Schubert vendor=hp 763*70b56f4bSCy Schubert ;; 764*70b56f4bSCy Schubert hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765*70b56f4bSCy Schubert cpu=hppa1.1 766*70b56f4bSCy Schubert vendor=hp 767*70b56f4bSCy Schubert ;; 768*70b56f4bSCy Schubert hp9k78[0-9] | hp78[0-9]) 769*70b56f4bSCy Schubert # FIXME: really hppa2.0-hp 770*70b56f4bSCy Schubert cpu=hppa1.1 771*70b56f4bSCy Schubert vendor=hp 772*70b56f4bSCy Schubert ;; 773*70b56f4bSCy Schubert hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774*70b56f4bSCy Schubert # FIXME: really hppa2.0-hp 775*70b56f4bSCy Schubert cpu=hppa1.1 776*70b56f4bSCy Schubert vendor=hp 777*70b56f4bSCy Schubert ;; 778*70b56f4bSCy Schubert hp9k8[0-9][13679] | hp8[0-9][13679]) 779*70b56f4bSCy Schubert cpu=hppa1.1 780*70b56f4bSCy Schubert vendor=hp 781*70b56f4bSCy Schubert ;; 782*70b56f4bSCy Schubert hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783*70b56f4bSCy Schubert cpu=hppa1.0 784*70b56f4bSCy Schubert vendor=hp 785*70b56f4bSCy Schubert ;; 786*70b56f4bSCy Schubert i*86v32) 787*70b56f4bSCy Schubert cpu=`echo "$1" | sed -e 's/86.*/86/'` 788*70b56f4bSCy Schubert vendor=pc 789*70b56f4bSCy Schubert basic_os=sysv32 790*70b56f4bSCy Schubert ;; 791*70b56f4bSCy Schubert i*86v4*) 792*70b56f4bSCy Schubert cpu=`echo "$1" | sed -e 's/86.*/86/'` 793*70b56f4bSCy Schubert vendor=pc 794*70b56f4bSCy Schubert basic_os=sysv4 795*70b56f4bSCy Schubert ;; 796*70b56f4bSCy Schubert i*86v) 797*70b56f4bSCy Schubert cpu=`echo "$1" | sed -e 's/86.*/86/'` 798*70b56f4bSCy Schubert vendor=pc 799*70b56f4bSCy Schubert basic_os=sysv 800*70b56f4bSCy Schubert ;; 801*70b56f4bSCy Schubert i*86sol2) 802*70b56f4bSCy Schubert cpu=`echo "$1" | sed -e 's/86.*/86/'` 803*70b56f4bSCy Schubert vendor=pc 804*70b56f4bSCy Schubert basic_os=solaris2 805*70b56f4bSCy Schubert ;; 806*70b56f4bSCy Schubert j90 | j90-cray) 807*70b56f4bSCy Schubert cpu=j90 808*70b56f4bSCy Schubert vendor=cray 809*70b56f4bSCy Schubert basic_os=${basic_os:-unicos} 810*70b56f4bSCy Schubert ;; 811*70b56f4bSCy Schubert iris | iris4d) 812*70b56f4bSCy Schubert cpu=mips 813*70b56f4bSCy Schubert vendor=sgi 814*70b56f4bSCy Schubert case $basic_os in 815*70b56f4bSCy Schubert irix*) 816*70b56f4bSCy Schubert ;; 817*70b56f4bSCy Schubert *) 818*70b56f4bSCy Schubert basic_os=irix4 819*70b56f4bSCy Schubert ;; 820*70b56f4bSCy Schubert esac 821*70b56f4bSCy Schubert ;; 822*70b56f4bSCy Schubert miniframe) 823*70b56f4bSCy Schubert cpu=m68000 824*70b56f4bSCy Schubert vendor=convergent 825*70b56f4bSCy Schubert ;; 826*70b56f4bSCy Schubert *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827*70b56f4bSCy Schubert cpu=m68k 828*70b56f4bSCy Schubert vendor=atari 829*70b56f4bSCy Schubert basic_os=mint 830*70b56f4bSCy Schubert ;; 831*70b56f4bSCy Schubert news-3600 | risc-news) 832*70b56f4bSCy Schubert cpu=mips 833*70b56f4bSCy Schubert vendor=sony 834*70b56f4bSCy Schubert basic_os=newsos 835*70b56f4bSCy Schubert ;; 836*70b56f4bSCy Schubert next | m*-next) 837*70b56f4bSCy Schubert cpu=m68k 838*70b56f4bSCy Schubert vendor=next 839*70b56f4bSCy Schubert case $basic_os in 840*70b56f4bSCy Schubert openstep*) 841*70b56f4bSCy Schubert ;; 842*70b56f4bSCy Schubert nextstep*) 843*70b56f4bSCy Schubert ;; 844*70b56f4bSCy Schubert ns2*) 845*70b56f4bSCy Schubert basic_os=nextstep2 846*70b56f4bSCy Schubert ;; 847*70b56f4bSCy Schubert *) 848*70b56f4bSCy Schubert basic_os=nextstep3 849*70b56f4bSCy Schubert ;; 850*70b56f4bSCy Schubert esac 851*70b56f4bSCy Schubert ;; 852*70b56f4bSCy Schubert np1) 853*70b56f4bSCy Schubert cpu=np1 854*70b56f4bSCy Schubert vendor=gould 855*70b56f4bSCy Schubert ;; 856*70b56f4bSCy Schubert op50n-* | op60c-*) 857*70b56f4bSCy Schubert cpu=hppa1.1 858*70b56f4bSCy Schubert vendor=oki 859*70b56f4bSCy Schubert basic_os=proelf 860*70b56f4bSCy Schubert ;; 861*70b56f4bSCy Schubert pa-hitachi) 862*70b56f4bSCy Schubert cpu=hppa1.1 863*70b56f4bSCy Schubert vendor=hitachi 864*70b56f4bSCy Schubert basic_os=hiuxwe2 865*70b56f4bSCy Schubert ;; 866*70b56f4bSCy Schubert pbd) 867*70b56f4bSCy Schubert cpu=sparc 868*70b56f4bSCy Schubert vendor=tti 869*70b56f4bSCy Schubert ;; 870*70b56f4bSCy Schubert pbb) 871*70b56f4bSCy Schubert cpu=m68k 872*70b56f4bSCy Schubert vendor=tti 873*70b56f4bSCy Schubert ;; 874*70b56f4bSCy Schubert pc532) 875*70b56f4bSCy Schubert cpu=ns32k 876*70b56f4bSCy Schubert vendor=pc532 877*70b56f4bSCy Schubert ;; 878*70b56f4bSCy Schubert pn) 879*70b56f4bSCy Schubert cpu=pn 880*70b56f4bSCy Schubert vendor=gould 881*70b56f4bSCy Schubert ;; 882*70b56f4bSCy Schubert power) 883*70b56f4bSCy Schubert cpu=power 884*70b56f4bSCy Schubert vendor=ibm 885*70b56f4bSCy Schubert ;; 886*70b56f4bSCy Schubert ps2) 887*70b56f4bSCy Schubert cpu=i386 888*70b56f4bSCy Schubert vendor=ibm 889*70b56f4bSCy Schubert ;; 890*70b56f4bSCy Schubert rm[46]00) 891*70b56f4bSCy Schubert cpu=mips 892*70b56f4bSCy Schubert vendor=siemens 893*70b56f4bSCy Schubert ;; 894*70b56f4bSCy Schubert rtpc | rtpc-*) 895*70b56f4bSCy Schubert cpu=romp 896*70b56f4bSCy Schubert vendor=ibm 897*70b56f4bSCy Schubert ;; 898*70b56f4bSCy Schubert sde) 899*70b56f4bSCy Schubert cpu=mipsisa32 900*70b56f4bSCy Schubert vendor=sde 901*70b56f4bSCy Schubert basic_os=${basic_os:-elf} 902*70b56f4bSCy Schubert ;; 903*70b56f4bSCy Schubert simso-wrs) 904*70b56f4bSCy Schubert cpu=sparclite 905*70b56f4bSCy Schubert vendor=wrs 906*70b56f4bSCy Schubert basic_os=vxworks 907*70b56f4bSCy Schubert ;; 908*70b56f4bSCy Schubert tower | tower-32) 909*70b56f4bSCy Schubert cpu=m68k 910*70b56f4bSCy Schubert vendor=ncr 911*70b56f4bSCy Schubert ;; 912*70b56f4bSCy Schubert vpp*|vx|vx-*) 913*70b56f4bSCy Schubert cpu=f301 914*70b56f4bSCy Schubert vendor=fujitsu 915*70b56f4bSCy Schubert ;; 916*70b56f4bSCy Schubert w65) 917*70b56f4bSCy Schubert cpu=w65 918*70b56f4bSCy Schubert vendor=wdc 919*70b56f4bSCy Schubert ;; 920*70b56f4bSCy Schubert w89k-*) 921*70b56f4bSCy Schubert cpu=hppa1.1 922*70b56f4bSCy Schubert vendor=winbond 923*70b56f4bSCy Schubert basic_os=proelf 924*70b56f4bSCy Schubert ;; 925*70b56f4bSCy Schubert none) 926*70b56f4bSCy Schubert cpu=none 927*70b56f4bSCy Schubert vendor=none 928*70b56f4bSCy Schubert ;; 929*70b56f4bSCy Schubert leon|leon[3-9]) 930*70b56f4bSCy Schubert cpu=sparc 931*70b56f4bSCy Schubert vendor=$basic_machine 932*70b56f4bSCy Schubert ;; 933*70b56f4bSCy Schubert leon-*|leon[3-9]-*) 934*70b56f4bSCy Schubert cpu=sparc 935*70b56f4bSCy Schubert vendor=`echo "$basic_machine" | sed 's/-.*//'` 936*70b56f4bSCy Schubert ;; 937*70b56f4bSCy Schubert 938*70b56f4bSCy Schubert *-*) 939*70b56f4bSCy Schubert # shellcheck disable=SC2162 940*70b56f4bSCy Schubert saved_IFS=$IFS 941*70b56f4bSCy Schubert IFS="-" read cpu vendor <<EOF 942*70b56f4bSCy Schubert$basic_machine 943*70b56f4bSCy SchubertEOF 944*70b56f4bSCy Schubert IFS=$saved_IFS 945*70b56f4bSCy Schubert ;; 946*70b56f4bSCy Schubert # We use `pc' rather than `unknown' 947*70b56f4bSCy Schubert # because (1) that's what they normally are, and 948*70b56f4bSCy Schubert # (2) the word "unknown" tends to confuse beginning users. 949*70b56f4bSCy Schubert i*86 | x86_64) 950*70b56f4bSCy Schubert cpu=$basic_machine 951*70b56f4bSCy Schubert vendor=pc 952*70b56f4bSCy Schubert ;; 953*70b56f4bSCy Schubert # These rules are duplicated from below for sake of the special case above; 954*70b56f4bSCy Schubert # i.e. things that normalized to x86 arches should also default to "pc" 955*70b56f4bSCy Schubert pc98) 956*70b56f4bSCy Schubert cpu=i386 957*70b56f4bSCy Schubert vendor=pc 958*70b56f4bSCy Schubert ;; 959*70b56f4bSCy Schubert x64 | amd64) 960*70b56f4bSCy Schubert cpu=x86_64 961*70b56f4bSCy Schubert vendor=pc 962*70b56f4bSCy Schubert ;; 963937a2000SPeter Wemm # Recognize the basic CPU types without company name. 964*70b56f4bSCy Schubert *) 965*70b56f4bSCy Schubert cpu=$basic_machine 966*70b56f4bSCy Schubert vendor=unknown 967*70b56f4bSCy Schubert ;; 968*70b56f4bSCy Schubertesac 969*70b56f4bSCy Schubert 970*70b56f4bSCy Schubertunset -v basic_machine 971*70b56f4bSCy Schubert 972*70b56f4bSCy Schubert# Decode basic machines in the full and proper CPU-Company form. 973*70b56f4bSCy Schubertcase $cpu-$vendor in 974*70b56f4bSCy Schubert # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975*70b56f4bSCy Schubert # some cases the only manufacturer, in others, it is the most popular. 976*70b56f4bSCy Schubert craynv-unknown) 977*70b56f4bSCy Schubert vendor=cray 978*70b56f4bSCy Schubert basic_os=${basic_os:-unicosmp} 979*70b56f4bSCy Schubert ;; 980*70b56f4bSCy Schubert c90-unknown | c90-cray) 981*70b56f4bSCy Schubert vendor=cray 982*70b56f4bSCy Schubert basic_os=${Basic_os:-unicos} 983*70b56f4bSCy Schubert ;; 984*70b56f4bSCy Schubert fx80-unknown) 985*70b56f4bSCy Schubert vendor=alliant 986*70b56f4bSCy Schubert ;; 987*70b56f4bSCy Schubert romp-unknown) 988*70b56f4bSCy Schubert vendor=ibm 989*70b56f4bSCy Schubert ;; 990*70b56f4bSCy Schubert mmix-unknown) 991*70b56f4bSCy Schubert vendor=knuth 992*70b56f4bSCy Schubert ;; 993*70b56f4bSCy Schubert microblaze-unknown | microblazeel-unknown) 994*70b56f4bSCy Schubert vendor=xilinx 995*70b56f4bSCy Schubert ;; 996*70b56f4bSCy Schubert rs6000-unknown) 997*70b56f4bSCy Schubert vendor=ibm 998*70b56f4bSCy Schubert ;; 999*70b56f4bSCy Schubert vax-unknown) 1000*70b56f4bSCy Schubert vendor=dec 1001*70b56f4bSCy Schubert ;; 1002*70b56f4bSCy Schubert pdp11-unknown) 1003*70b56f4bSCy Schubert vendor=dec 1004*70b56f4bSCy Schubert ;; 1005*70b56f4bSCy Schubert we32k-unknown) 1006*70b56f4bSCy Schubert vendor=att 1007*70b56f4bSCy Schubert ;; 1008*70b56f4bSCy Schubert cydra-unknown) 1009*70b56f4bSCy Schubert vendor=cydrome 1010*70b56f4bSCy Schubert ;; 1011*70b56f4bSCy Schubert i370-ibm*) 1012*70b56f4bSCy Schubert vendor=ibm 1013*70b56f4bSCy Schubert ;; 1014*70b56f4bSCy Schubert orion-unknown) 1015*70b56f4bSCy Schubert vendor=highlevel 1016*70b56f4bSCy Schubert ;; 1017*70b56f4bSCy Schubert xps-unknown | xps100-unknown) 1018*70b56f4bSCy Schubert cpu=xps100 1019*70b56f4bSCy Schubert vendor=honeywell 1020*70b56f4bSCy Schubert ;; 1021*70b56f4bSCy Schubert 1022*70b56f4bSCy Schubert # Here we normalize CPU types with a missing or matching vendor 1023*70b56f4bSCy Schubert armh-unknown | armh-alt) 1024*70b56f4bSCy Schubert cpu=armv7l 1025*70b56f4bSCy Schubert vendor=alt 1026*70b56f4bSCy Schubert basic_os=${basic_os:-linux-gnueabihf} 1027*70b56f4bSCy Schubert ;; 1028*70b56f4bSCy Schubert dpx20-unknown | dpx20-bull) 1029*70b56f4bSCy Schubert cpu=rs6000 1030*70b56f4bSCy Schubert vendor=bull 1031*70b56f4bSCy Schubert basic_os=${basic_os:-bosx} 1032*70b56f4bSCy Schubert ;; 1033*70b56f4bSCy Schubert 1034*70b56f4bSCy Schubert # Here we normalize CPU types irrespective of the vendor 1035*70b56f4bSCy Schubert amd64-*) 1036*70b56f4bSCy Schubert cpu=x86_64 1037*70b56f4bSCy Schubert ;; 1038*70b56f4bSCy Schubert blackfin-*) 1039*70b56f4bSCy Schubert cpu=bfin 1040*70b56f4bSCy Schubert basic_os=linux 1041*70b56f4bSCy Schubert ;; 1042*70b56f4bSCy Schubert c54x-*) 1043*70b56f4bSCy Schubert cpu=tic54x 1044*70b56f4bSCy Schubert ;; 1045*70b56f4bSCy Schubert c55x-*) 1046*70b56f4bSCy Schubert cpu=tic55x 1047*70b56f4bSCy Schubert ;; 1048*70b56f4bSCy Schubert c6x-*) 1049*70b56f4bSCy Schubert cpu=tic6x 1050*70b56f4bSCy Schubert ;; 1051*70b56f4bSCy Schubert e500v[12]-*) 1052*70b56f4bSCy Schubert cpu=powerpc 1053*70b56f4bSCy Schubert basic_os=${basic_os}"spe" 1054*70b56f4bSCy Schubert ;; 1055*70b56f4bSCy Schubert mips3*-*) 1056*70b56f4bSCy Schubert cpu=mips64 1057*70b56f4bSCy Schubert ;; 1058*70b56f4bSCy Schubert ms1-*) 1059*70b56f4bSCy Schubert cpu=mt 1060*70b56f4bSCy Schubert ;; 1061*70b56f4bSCy Schubert m68knommu-*) 1062*70b56f4bSCy Schubert cpu=m68k 1063*70b56f4bSCy Schubert basic_os=linux 1064*70b56f4bSCy Schubert ;; 1065*70b56f4bSCy Schubert m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1066*70b56f4bSCy Schubert cpu=s12z 1067*70b56f4bSCy Schubert ;; 1068*70b56f4bSCy Schubert openrisc-*) 1069*70b56f4bSCy Schubert cpu=or32 1070*70b56f4bSCy Schubert ;; 1071*70b56f4bSCy Schubert parisc-*) 1072*70b56f4bSCy Schubert cpu=hppa 1073*70b56f4bSCy Schubert basic_os=linux 1074*70b56f4bSCy Schubert ;; 1075*70b56f4bSCy Schubert pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1076*70b56f4bSCy Schubert cpu=i586 1077*70b56f4bSCy Schubert ;; 1078*70b56f4bSCy Schubert pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 1079*70b56f4bSCy Schubert cpu=i686 1080*70b56f4bSCy Schubert ;; 1081*70b56f4bSCy Schubert pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1082*70b56f4bSCy Schubert cpu=i686 1083*70b56f4bSCy Schubert ;; 1084*70b56f4bSCy Schubert pentium4-*) 1085*70b56f4bSCy Schubert cpu=i786 1086*70b56f4bSCy Schubert ;; 1087*70b56f4bSCy Schubert pc98-*) 1088*70b56f4bSCy Schubert cpu=i386 1089*70b56f4bSCy Schubert ;; 1090*70b56f4bSCy Schubert ppc-* | ppcbe-*) 1091*70b56f4bSCy Schubert cpu=powerpc 1092*70b56f4bSCy Schubert ;; 1093*70b56f4bSCy Schubert ppcle-* | powerpclittle-*) 1094*70b56f4bSCy Schubert cpu=powerpcle 1095*70b56f4bSCy Schubert ;; 1096*70b56f4bSCy Schubert ppc64-*) 1097*70b56f4bSCy Schubert cpu=powerpc64 1098*70b56f4bSCy Schubert ;; 1099*70b56f4bSCy Schubert ppc64le-* | powerpc64little-*) 1100*70b56f4bSCy Schubert cpu=powerpc64le 1101*70b56f4bSCy Schubert ;; 1102*70b56f4bSCy Schubert sb1-*) 1103*70b56f4bSCy Schubert cpu=mipsisa64sb1 1104*70b56f4bSCy Schubert ;; 1105*70b56f4bSCy Schubert sb1el-*) 1106*70b56f4bSCy Schubert cpu=mipsisa64sb1el 1107*70b56f4bSCy Schubert ;; 1108*70b56f4bSCy Schubert sh5e[lb]-*) 1109*70b56f4bSCy Schubert cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1110*70b56f4bSCy Schubert ;; 1111*70b56f4bSCy Schubert spur-*) 1112*70b56f4bSCy Schubert cpu=spur 1113*70b56f4bSCy Schubert ;; 1114*70b56f4bSCy Schubert strongarm-* | thumb-*) 1115*70b56f4bSCy Schubert cpu=arm 1116*70b56f4bSCy Schubert ;; 1117*70b56f4bSCy Schubert tx39-*) 1118*70b56f4bSCy Schubert cpu=mipstx39 1119*70b56f4bSCy Schubert ;; 1120*70b56f4bSCy Schubert tx39el-*) 1121*70b56f4bSCy Schubert cpu=mipstx39el 1122*70b56f4bSCy Schubert ;; 1123*70b56f4bSCy Schubert x64-*) 1124*70b56f4bSCy Schubert cpu=x86_64 1125*70b56f4bSCy Schubert ;; 1126*70b56f4bSCy Schubert xscale-* | xscalee[bl]-*) 1127*70b56f4bSCy Schubert cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1128*70b56f4bSCy Schubert ;; 1129*70b56f4bSCy Schubert arm64-* | aarch64le-*) 1130*70b56f4bSCy Schubert cpu=aarch64 1131*70b56f4bSCy Schubert ;; 1132*70b56f4bSCy Schubert 1133*70b56f4bSCy Schubert # Recognize the canonical CPU Types that limit and/or modify the 1134*70b56f4bSCy Schubert # company names they are paired with. 1135*70b56f4bSCy Schubert cr16-*) 1136*70b56f4bSCy Schubert basic_os=${basic_os:-elf} 1137*70b56f4bSCy Schubert ;; 1138*70b56f4bSCy Schubert crisv32-* | etraxfs*-*) 1139*70b56f4bSCy Schubert cpu=crisv32 1140*70b56f4bSCy Schubert vendor=axis 1141*70b56f4bSCy Schubert ;; 1142*70b56f4bSCy Schubert cris-* | etrax*-*) 1143*70b56f4bSCy Schubert cpu=cris 1144*70b56f4bSCy Schubert vendor=axis 1145*70b56f4bSCy Schubert ;; 1146*70b56f4bSCy Schubert crx-*) 1147*70b56f4bSCy Schubert basic_os=${basic_os:-elf} 1148*70b56f4bSCy Schubert ;; 1149*70b56f4bSCy Schubert neo-tandem) 1150*70b56f4bSCy Schubert cpu=neo 1151*70b56f4bSCy Schubert vendor=tandem 1152*70b56f4bSCy Schubert ;; 1153*70b56f4bSCy Schubert nse-tandem) 1154*70b56f4bSCy Schubert cpu=nse 1155*70b56f4bSCy Schubert vendor=tandem 1156*70b56f4bSCy Schubert ;; 1157*70b56f4bSCy Schubert nsr-tandem) 1158*70b56f4bSCy Schubert cpu=nsr 1159*70b56f4bSCy Schubert vendor=tandem 1160*70b56f4bSCy Schubert ;; 1161*70b56f4bSCy Schubert nsv-tandem) 1162*70b56f4bSCy Schubert cpu=nsv 1163*70b56f4bSCy Schubert vendor=tandem 1164*70b56f4bSCy Schubert ;; 1165*70b56f4bSCy Schubert nsx-tandem) 1166*70b56f4bSCy Schubert cpu=nsx 1167*70b56f4bSCy Schubert vendor=tandem 1168*70b56f4bSCy Schubert ;; 1169*70b56f4bSCy Schubert mipsallegrexel-sony) 1170*70b56f4bSCy Schubert cpu=mipsallegrexel 1171*70b56f4bSCy Schubert vendor=sony 1172*70b56f4bSCy Schubert ;; 1173*70b56f4bSCy Schubert tile*-*) 1174*70b56f4bSCy Schubert basic_os=${basic_os:-linux-gnu} 1175*70b56f4bSCy Schubert ;; 1176*70b56f4bSCy Schubert 1177*70b56f4bSCy Schubert *) 1178*70b56f4bSCy Schubert # Recognize the canonical CPU types that are allowed with any 1179*70b56f4bSCy Schubert # company name. 1180*70b56f4bSCy Schubert case $cpu in 1181937a2000SPeter Wemm 1750a | 580 \ 1182937a2000SPeter Wemm | a29k \ 11838bc5c7c0SPeter Wemm | aarch64 | aarch64_be \ 1184*70b56f4bSCy Schubert | abacus \ 1185*70b56f4bSCy Schubert | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1186*70b56f4bSCy Schubert | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1187*70b56f4bSCy Schubert | alphapca5[67] | alpha64pca5[67] \ 1188937a2000SPeter Wemm | am33_2.0 \ 1189*70b56f4bSCy Schubert | amdgcn \ 1190*70b56f4bSCy Schubert | arc | arceb | arc32 | arc64 \ 1191*70b56f4bSCy Schubert | arm | arm[lb]e | arme[lb] | armv* \ 1192d915215eSBaptiste Daroussin | avr | avr32 \ 1193*70b56f4bSCy Schubert | asmjs \ 1194bca4681bSCy Schubert | ba \ 11958bc5c7c0SPeter Wemm | be32 | be64 \ 1196*70b56f4bSCy Schubert | bfin | bpf | bs2000 \ 1197*70b56f4bSCy Schubert | c[123]* | c30 | [cjt]90 | c4x \ 1198*70b56f4bSCy Schubert | c8051 | clipper | craynv | csky | cydra \ 1199937a2000SPeter Wemm | d10v | d30v | dlx | dsp16xx \ 1200*70b56f4bSCy Schubert | e2k | elxsi | epiphany \ 1201*70b56f4bSCy Schubert | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1202*70b56f4bSCy Schubert | h8300 | h8500 \ 1203*70b56f4bSCy Schubert | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 12048bc5c7c0SPeter Wemm | hexagon \ 1205*70b56f4bSCy Schubert | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1206937a2000SPeter Wemm | ip2k | iq2000 \ 1207d915215eSBaptiste Daroussin | k1om \ 12088bc5c7c0SPeter Wemm | le32 | le64 \ 12098bc5c7c0SPeter Wemm | lm32 \ 1210*70b56f4bSCy Schubert | loongarch32 | loongarch64 | loongarchx32 \ 1211*70b56f4bSCy Schubert | m32c | m32r | m32rle \ 1212*70b56f4bSCy Schubert | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1213*70b56f4bSCy Schubert | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1214*70b56f4bSCy Schubert | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1215*70b56f4bSCy Schubert | microblaze | microblazeel \ 1216937a2000SPeter Wemm | mips | mipsbe | mipseb | mipsel | mipsle \ 1217937a2000SPeter Wemm | mips16 \ 1218*70b56f4bSCy Schubert | mips64 | mips64eb | mips64el \ 12198bc5c7c0SPeter Wemm | mips64octeon | mips64octeonel \ 1220937a2000SPeter Wemm | mips64orion | mips64orionel \ 12218bc5c7c0SPeter Wemm | mips64r5900 | mips64r5900el \ 12228bc5c7c0SPeter Wemm | mips64vr | mips64vrel \ 1223937a2000SPeter Wemm | mips64vr4100 | mips64vr4100el \ 1224937a2000SPeter Wemm | mips64vr4300 | mips64vr4300el \ 1225937a2000SPeter Wemm | mips64vr5000 | mips64vr5000el \ 1226937a2000SPeter Wemm | mips64vr5900 | mips64vr5900el \ 1227937a2000SPeter Wemm | mipsisa32 | mipsisa32el \ 1228937a2000SPeter Wemm | mipsisa32r2 | mipsisa32r2el \ 1229*70b56f4bSCy Schubert | mipsisa32r3 | mipsisa32r3el \ 1230*70b56f4bSCy Schubert | mipsisa32r5 | mipsisa32r5el \ 1231d915215eSBaptiste Daroussin | mipsisa32r6 | mipsisa32r6el \ 1232937a2000SPeter Wemm | mipsisa64 | mipsisa64el \ 1233937a2000SPeter Wemm | mipsisa64r2 | mipsisa64r2el \ 1234*70b56f4bSCy Schubert | mipsisa64r3 | mipsisa64r3el \ 1235*70b56f4bSCy Schubert | mipsisa64r5 | mipsisa64r5el \ 1236d915215eSBaptiste Daroussin | mipsisa64r6 | mipsisa64r6el \ 1237937a2000SPeter Wemm | mipsisa64sb1 | mipsisa64sb1el \ 1238937a2000SPeter Wemm | mipsisa64sr71k | mipsisa64sr71kel \ 1239d915215eSBaptiste Daroussin | mipsr5900 | mipsr5900el \ 1240937a2000SPeter Wemm | mipstx39 | mipstx39el \ 1241*70b56f4bSCy Schubert | mmix \ 1242937a2000SPeter Wemm | mn10200 | mn10300 \ 12438bc5c7c0SPeter Wemm | moxie \ 12448bc5c7c0SPeter Wemm | mt \ 1245937a2000SPeter Wemm | msp430 \ 12468bc5c7c0SPeter Wemm | nds32 | nds32le | nds32be \ 1247*70b56f4bSCy Schubert | nfp \ 1248d915215eSBaptiste Daroussin | nios | nios2 | nios2eb | nios2el \ 1249*70b56f4bSCy Schubert | none | np1 | ns16k | ns32k | nvptx \ 1250*70b56f4bSCy Schubert | open8 \ 1251*70b56f4bSCy Schubert | or1k* \ 1252*70b56f4bSCy Schubert | or32 \ 1253*70b56f4bSCy Schubert | orion \ 1254*70b56f4bSCy Schubert | picochip \ 1255*70b56f4bSCy Schubert | pdp10 | pdp11 | pj | pjl | pn | power \ 1256*70b56f4bSCy Schubert | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1257bca4681bSCy Schubert | pru \ 1258937a2000SPeter Wemm | pyramid \ 1259*70b56f4bSCy Schubert | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1260*70b56f4bSCy Schubert | rl78 | romp | rs6000 | rx \ 1261*70b56f4bSCy Schubert | s390 | s390x \ 12628bc5c7c0SPeter Wemm | score \ 1263*70b56f4bSCy Schubert | sh | shl \ 1264*70b56f4bSCy Schubert | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1265*70b56f4bSCy Schubert | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1266*70b56f4bSCy Schubert | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1267*70b56f4bSCy Schubert | sparclite \ 1268*70b56f4bSCy Schubert | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12698bc5c7c0SPeter Wemm | spu \ 1270*70b56f4bSCy Schubert | tahoe \ 1271*70b56f4bSCy Schubert | thumbv7* \ 1272*70b56f4bSCy Schubert | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1273*70b56f4bSCy Schubert | tron \ 12748bc5c7c0SPeter Wemm | ubicom32 \ 1275*70b56f4bSCy Schubert | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1276*70b56f4bSCy Schubert | vax \ 1277d915215eSBaptiste Daroussin | visium \ 1278*70b56f4bSCy Schubert | w65 \ 1279*70b56f4bSCy Schubert | wasm32 | wasm64 \ 1280*70b56f4bSCy Schubert | we32k \ 1281*70b56f4bSCy Schubert | x86 | x86_64 | xc16x | xgate | xps100 \ 1282*70b56f4bSCy Schubert | xstormy16 | xtensa* \ 1283*70b56f4bSCy Schubert | ymp \ 12848bc5c7c0SPeter Wemm | z8k | z80) 12858bc5c7c0SPeter Wemm ;; 12868bc5c7c0SPeter Wemm 1287*70b56f4bSCy Schubert *) 1288*70b56f4bSCy Schubert echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1289937a2000SPeter Wemm exit 1 1290937a2000SPeter Wemm ;; 1291937a2000SPeter Wemm esac 1292937a2000SPeter Wemm ;; 1293937a2000SPeter Wemmesac 1294937a2000SPeter Wemm 1295937a2000SPeter Wemm# Here we canonicalize certain aliases for manufacturers. 1296*70b56f4bSCy Schubertcase $vendor in 1297*70b56f4bSCy Schubert digital*) 1298*70b56f4bSCy Schubert vendor=dec 1299937a2000SPeter Wemm ;; 1300*70b56f4bSCy Schubert commodore*) 1301*70b56f4bSCy Schubert vendor=cbm 1302937a2000SPeter Wemm ;; 1303937a2000SPeter Wemm *) 1304937a2000SPeter Wemm ;; 1305937a2000SPeter Wemmesac 1306937a2000SPeter Wemm 1307937a2000SPeter Wemm# Decode manufacturer-specific aliases for certain operating systems. 1308937a2000SPeter Wemm 1309*70b56f4bSCy Schubertif test x$basic_os != x 1310937a2000SPeter Wemmthen 1311*70b56f4bSCy Schubert 1312*70b56f4bSCy Schubert# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1313*70b56f4bSCy Schubert# set os. 1314*70b56f4bSCy Schubertcase $basic_os in 1315*70b56f4bSCy Schubert gnu/linux*) 1316*70b56f4bSCy Schubert kernel=linux 1317*70b56f4bSCy Schubert os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1318*70b56f4bSCy Schubert ;; 1319*70b56f4bSCy Schubert os2-emx) 1320*70b56f4bSCy Schubert kernel=os2 1321*70b56f4bSCy Schubert os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1322*70b56f4bSCy Schubert ;; 1323*70b56f4bSCy Schubert nto-qnx*) 1324*70b56f4bSCy Schubert kernel=nto 1325*70b56f4bSCy Schubert os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1326*70b56f4bSCy Schubert ;; 1327*70b56f4bSCy Schubert *-*) 1328*70b56f4bSCy Schubert # shellcheck disable=SC2162 1329*70b56f4bSCy Schubert saved_IFS=$IFS 1330*70b56f4bSCy Schubert IFS="-" read kernel os <<EOF 1331*70b56f4bSCy Schubert$basic_os 1332*70b56f4bSCy SchubertEOF 1333*70b56f4bSCy Schubert IFS=$saved_IFS 1334*70b56f4bSCy Schubert ;; 1335*70b56f4bSCy Schubert # Default OS when just kernel was specified 1336*70b56f4bSCy Schubert nto*) 1337*70b56f4bSCy Schubert kernel=nto 1338*70b56f4bSCy Schubert os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1339*70b56f4bSCy Schubert ;; 1340*70b56f4bSCy Schubert linux*) 1341*70b56f4bSCy Schubert kernel=linux 1342*70b56f4bSCy Schubert os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1343*70b56f4bSCy Schubert ;; 1344*70b56f4bSCy Schubert *) 1345*70b56f4bSCy Schubert kernel= 1346*70b56f4bSCy Schubert os=$basic_os 1347*70b56f4bSCy Schubert ;; 1348*70b56f4bSCy Schubertesac 1349*70b56f4bSCy Schubert 1350*70b56f4bSCy Schubert# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1351*70b56f4bSCy Schubert# etc.) 1352937a2000SPeter Wemmcase $os in 1353bca4681bSCy Schubert # First match some system type aliases that might get confused 1354bca4681bSCy Schubert # with valid system types. 1355*70b56f4bSCy Schubert # solaris* is a basic system type, with this one exception. 1356*70b56f4bSCy Schubert auroraux) 1357*70b56f4bSCy Schubert os=auroraux 13588bc5c7c0SPeter Wemm ;; 1359*70b56f4bSCy Schubert bluegene*) 1360*70b56f4bSCy Schubert os=cnk 1361937a2000SPeter Wemm ;; 1362*70b56f4bSCy Schubert solaris1 | solaris1.*) 1363*70b56f4bSCy Schubert os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1364937a2000SPeter Wemm ;; 1365*70b56f4bSCy Schubert solaris) 1366*70b56f4bSCy Schubert os=solaris2 1367937a2000SPeter Wemm ;; 1368*70b56f4bSCy Schubert unixware*) 1369*70b56f4bSCy Schubert os=sysv4.2uw 1370937a2000SPeter Wemm ;; 1371bca4681bSCy Schubert # es1800 is here to avoid being matched by es* (a different OS) 1372*70b56f4bSCy Schubert es1800*) 1373*70b56f4bSCy Schubert os=ose 1374bca4681bSCy Schubert ;; 1375*70b56f4bSCy Schubert # Some version numbers need modification 1376*70b56f4bSCy Schubert chorusos*) 1377*70b56f4bSCy Schubert os=chorusos 1378937a2000SPeter Wemm ;; 1379*70b56f4bSCy Schubert isc) 1380*70b56f4bSCy Schubert os=isc2.2 1381937a2000SPeter Wemm ;; 1382*70b56f4bSCy Schubert sco6) 1383*70b56f4bSCy Schubert os=sco5v6 1384937a2000SPeter Wemm ;; 1385*70b56f4bSCy Schubert sco5) 1386*70b56f4bSCy Schubert os=sco3.2v5 1387937a2000SPeter Wemm ;; 1388*70b56f4bSCy Schubert sco4) 1389*70b56f4bSCy Schubert os=sco3.2v4 1390937a2000SPeter Wemm ;; 1391*70b56f4bSCy Schubert sco3.2.[4-9]*) 1392*70b56f4bSCy Schubert os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1393937a2000SPeter Wemm ;; 1394*70b56f4bSCy Schubert sco*v* | scout) 1395*70b56f4bSCy Schubert # Don't match below 1396937a2000SPeter Wemm ;; 1397*70b56f4bSCy Schubert sco*) 1398*70b56f4bSCy Schubert os=sco3.2v2 1399*70b56f4bSCy Schubert ;; 1400*70b56f4bSCy Schubert psos*) 1401*70b56f4bSCy Schubert os=psos 1402*70b56f4bSCy Schubert ;; 1403*70b56f4bSCy Schubert qnx*) 1404*70b56f4bSCy Schubert os=qnx 1405*70b56f4bSCy Schubert ;; 1406*70b56f4bSCy Schubert hiux*) 1407*70b56f4bSCy Schubert os=hiuxwe2 1408*70b56f4bSCy Schubert ;; 1409*70b56f4bSCy Schubert lynx*178) 1410*70b56f4bSCy Schubert os=lynxos178 1411*70b56f4bSCy Schubert ;; 1412*70b56f4bSCy Schubert lynx*5) 1413*70b56f4bSCy Schubert os=lynxos5 1414*70b56f4bSCy Schubert ;; 1415*70b56f4bSCy Schubert lynxos*) 1416*70b56f4bSCy Schubert # don't get caught up in next wildcard 1417*70b56f4bSCy Schubert ;; 1418*70b56f4bSCy Schubert lynx*) 1419*70b56f4bSCy Schubert os=lynxos 1420*70b56f4bSCy Schubert ;; 1421*70b56f4bSCy Schubert mac[0-9]*) 1422bca4681bSCy Schubert os=`echo "$os" | sed -e 's|mac|macos|'` 1423937a2000SPeter Wemm ;; 1424*70b56f4bSCy Schubert opened*) 1425*70b56f4bSCy Schubert os=openedition 1426937a2000SPeter Wemm ;; 1427*70b56f4bSCy Schubert os400*) 1428*70b56f4bSCy Schubert os=os400 1429937a2000SPeter Wemm ;; 1430*70b56f4bSCy Schubert sunos5*) 1431bca4681bSCy Schubert os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1432937a2000SPeter Wemm ;; 1433*70b56f4bSCy Schubert sunos6*) 1434bca4681bSCy Schubert os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1435937a2000SPeter Wemm ;; 1436*70b56f4bSCy Schubert wince*) 1437*70b56f4bSCy Schubert os=wince 1438937a2000SPeter Wemm ;; 1439*70b56f4bSCy Schubert utek*) 1440*70b56f4bSCy Schubert os=bsd 1441937a2000SPeter Wemm ;; 1442*70b56f4bSCy Schubert dynix*) 1443*70b56f4bSCy Schubert os=bsd 1444937a2000SPeter Wemm ;; 1445*70b56f4bSCy Schubert acis*) 1446*70b56f4bSCy Schubert os=aos 1447937a2000SPeter Wemm ;; 1448*70b56f4bSCy Schubert atheos*) 1449*70b56f4bSCy Schubert os=atheos 1450937a2000SPeter Wemm ;; 1451*70b56f4bSCy Schubert syllable*) 1452*70b56f4bSCy Schubert os=syllable 1453937a2000SPeter Wemm ;; 1454*70b56f4bSCy Schubert 386bsd) 1455*70b56f4bSCy Schubert os=bsd 1456937a2000SPeter Wemm ;; 1457*70b56f4bSCy Schubert ctix* | uts*) 1458*70b56f4bSCy Schubert os=sysv 1459937a2000SPeter Wemm ;; 1460*70b56f4bSCy Schubert nova*) 1461*70b56f4bSCy Schubert os=rtmk-nova 1462937a2000SPeter Wemm ;; 1463*70b56f4bSCy Schubert ns2) 1464*70b56f4bSCy Schubert os=nextstep2 1465937a2000SPeter Wemm ;; 1466937a2000SPeter Wemm # Preserve the version number of sinix5. 1467*70b56f4bSCy Schubert sinix5.*) 1468*70b56f4bSCy Schubert os=`echo "$os" | sed -e 's|sinix|sysv|'` 1469937a2000SPeter Wemm ;; 1470*70b56f4bSCy Schubert sinix*) 1471*70b56f4bSCy Schubert os=sysv4 1472937a2000SPeter Wemm ;; 1473*70b56f4bSCy Schubert tpf*) 1474*70b56f4bSCy Schubert os=tpf 1475937a2000SPeter Wemm ;; 1476*70b56f4bSCy Schubert triton*) 1477*70b56f4bSCy Schubert os=sysv3 1478937a2000SPeter Wemm ;; 1479*70b56f4bSCy Schubert oss*) 1480*70b56f4bSCy Schubert os=sysv3 1481937a2000SPeter Wemm ;; 1482*70b56f4bSCy Schubert svr4*) 1483*70b56f4bSCy Schubert os=sysv4 1484937a2000SPeter Wemm ;; 1485*70b56f4bSCy Schubert svr3) 1486*70b56f4bSCy Schubert os=sysv3 1487937a2000SPeter Wemm ;; 1488*70b56f4bSCy Schubert sysvr4) 1489*70b56f4bSCy Schubert os=sysv4 1490937a2000SPeter Wemm ;; 1491*70b56f4bSCy Schubert ose*) 1492*70b56f4bSCy Schubert os=ose 1493937a2000SPeter Wemm ;; 1494*70b56f4bSCy Schubert *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1495*70b56f4bSCy Schubert os=mint 1496937a2000SPeter Wemm ;; 1497*70b56f4bSCy Schubert dicos*) 1498*70b56f4bSCy Schubert os=dicos 1499937a2000SPeter Wemm ;; 1500*70b56f4bSCy Schubert pikeos*) 1501bca4681bSCy Schubert # Until real need of OS specific support for 1502bca4681bSCy Schubert # particular features comes up, bare metal 1503bca4681bSCy Schubert # configurations are quite functional. 1504*70b56f4bSCy Schubert case $cpu in 1505bca4681bSCy Schubert arm*) 1506*70b56f4bSCy Schubert os=eabi 1507bca4681bSCy Schubert ;; 1508bca4681bSCy Schubert *) 1509*70b56f4bSCy Schubert os=elf 1510bca4681bSCy Schubert ;; 1511bca4681bSCy Schubert esac 1512bca4681bSCy Schubert ;; 1513937a2000SPeter Wemm *) 1514*70b56f4bSCy Schubert # No normalization, but not necessarily accepted, that comes below. 1515937a2000SPeter Wemm ;; 1516937a2000SPeter Wemmesac 1517*70b56f4bSCy Schubert 1518937a2000SPeter Wemmelse 1519937a2000SPeter Wemm 1520937a2000SPeter Wemm# Here we handle the default operating systems that come with various machines. 1521937a2000SPeter Wemm# The value should be what the vendor currently ships out the door with their 1522937a2000SPeter Wemm# machine or put another way, the most popular os provided with the machine. 1523937a2000SPeter Wemm 1524937a2000SPeter Wemm# Note that if you're going to try to match "-MANUFACTURER" here (say, 1525937a2000SPeter Wemm# "-sun"), then you have to tell the case statement up towards the top 1526937a2000SPeter Wemm# that MANUFACTURER isn't an operating system. Otherwise, code above 1527937a2000SPeter Wemm# will signal an error saying that MANUFACTURER isn't an operating 1528937a2000SPeter Wemm# system, and we'll never get to this point. 1529937a2000SPeter Wemm 1530*70b56f4bSCy Schubertkernel= 1531*70b56f4bSCy Schubertcase $cpu-$vendor in 15328bc5c7c0SPeter Wemm score-*) 1533*70b56f4bSCy Schubert os=elf 15348bc5c7c0SPeter Wemm ;; 15358bc5c7c0SPeter Wemm spu-*) 1536*70b56f4bSCy Schubert os=elf 15378bc5c7c0SPeter Wemm ;; 1538937a2000SPeter Wemm *-acorn) 1539*70b56f4bSCy Schubert os=riscix1.2 1540937a2000SPeter Wemm ;; 1541937a2000SPeter Wemm arm*-rebel) 1542*70b56f4bSCy Schubert kernel=linux 1543*70b56f4bSCy Schubert os=gnu 1544937a2000SPeter Wemm ;; 1545937a2000SPeter Wemm arm*-semi) 1546*70b56f4bSCy Schubert os=aout 1547937a2000SPeter Wemm ;; 1548937a2000SPeter Wemm c4x-* | tic4x-*) 1549*70b56f4bSCy Schubert os=coff 1550937a2000SPeter Wemm ;; 1551d915215eSBaptiste Daroussin c8051-*) 1552*70b56f4bSCy Schubert os=elf 1553*70b56f4bSCy Schubert ;; 1554*70b56f4bSCy Schubert clipper-intergraph) 1555*70b56f4bSCy Schubert os=clix 1556d915215eSBaptiste Daroussin ;; 1557d915215eSBaptiste Daroussin hexagon-*) 1558*70b56f4bSCy Schubert os=elf 1559d915215eSBaptiste Daroussin ;; 15608bc5c7c0SPeter Wemm tic54x-*) 1561*70b56f4bSCy Schubert os=coff 15628bc5c7c0SPeter Wemm ;; 15638bc5c7c0SPeter Wemm tic55x-*) 1564*70b56f4bSCy Schubert os=coff 15658bc5c7c0SPeter Wemm ;; 15668bc5c7c0SPeter Wemm tic6x-*) 1567*70b56f4bSCy Schubert os=coff 15688bc5c7c0SPeter Wemm ;; 1569937a2000SPeter Wemm # This must come before the *-dec entry. 1570937a2000SPeter Wemm pdp10-*) 1571*70b56f4bSCy Schubert os=tops20 1572937a2000SPeter Wemm ;; 1573937a2000SPeter Wemm pdp11-*) 1574*70b56f4bSCy Schubert os=none 1575937a2000SPeter Wemm ;; 1576937a2000SPeter Wemm *-dec | vax-*) 1577*70b56f4bSCy Schubert os=ultrix4.2 1578937a2000SPeter Wemm ;; 1579937a2000SPeter Wemm m68*-apollo) 1580*70b56f4bSCy Schubert os=domain 1581937a2000SPeter Wemm ;; 1582937a2000SPeter Wemm i386-sun) 1583*70b56f4bSCy Schubert os=sunos4.0.2 1584937a2000SPeter Wemm ;; 1585937a2000SPeter Wemm m68000-sun) 1586*70b56f4bSCy Schubert os=sunos3 1587937a2000SPeter Wemm ;; 1588937a2000SPeter Wemm m68*-cisco) 1589*70b56f4bSCy Schubert os=aout 1590937a2000SPeter Wemm ;; 15918bc5c7c0SPeter Wemm mep-*) 1592*70b56f4bSCy Schubert os=elf 15938bc5c7c0SPeter Wemm ;; 1594937a2000SPeter Wemm mips*-cisco) 1595*70b56f4bSCy Schubert os=elf 1596937a2000SPeter Wemm ;; 1597937a2000SPeter Wemm mips*-*) 1598*70b56f4bSCy Schubert os=elf 1599937a2000SPeter Wemm ;; 1600937a2000SPeter Wemm or32-*) 1601*70b56f4bSCy Schubert os=coff 1602937a2000SPeter Wemm ;; 1603937a2000SPeter Wemm *-tti) # must be before sparc entry or we get the wrong os. 1604*70b56f4bSCy Schubert os=sysv3 1605937a2000SPeter Wemm ;; 1606937a2000SPeter Wemm sparc-* | *-sun) 1607*70b56f4bSCy Schubert os=sunos4.1.1 1608937a2000SPeter Wemm ;; 1609bca4681bSCy Schubert pru-*) 1610*70b56f4bSCy Schubert os=elf 1611bca4681bSCy Schubert ;; 1612937a2000SPeter Wemm *-be) 1613*70b56f4bSCy Schubert os=beos 1614937a2000SPeter Wemm ;; 1615937a2000SPeter Wemm *-ibm) 1616*70b56f4bSCy Schubert os=aix 1617937a2000SPeter Wemm ;; 1618937a2000SPeter Wemm *-knuth) 1619*70b56f4bSCy Schubert os=mmixware 1620937a2000SPeter Wemm ;; 1621937a2000SPeter Wemm *-wec) 1622*70b56f4bSCy Schubert os=proelf 1623937a2000SPeter Wemm ;; 1624937a2000SPeter Wemm *-winbond) 1625*70b56f4bSCy Schubert os=proelf 1626937a2000SPeter Wemm ;; 1627937a2000SPeter Wemm *-oki) 1628*70b56f4bSCy Schubert os=proelf 1629937a2000SPeter Wemm ;; 1630937a2000SPeter Wemm *-hp) 1631*70b56f4bSCy Schubert os=hpux 1632937a2000SPeter Wemm ;; 1633937a2000SPeter Wemm *-hitachi) 1634*70b56f4bSCy Schubert os=hiux 1635937a2000SPeter Wemm ;; 1636937a2000SPeter Wemm i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1637*70b56f4bSCy Schubert os=sysv 1638937a2000SPeter Wemm ;; 1639937a2000SPeter Wemm *-cbm) 1640*70b56f4bSCy Schubert os=amigaos 1641937a2000SPeter Wemm ;; 1642937a2000SPeter Wemm *-dg) 1643*70b56f4bSCy Schubert os=dgux 1644937a2000SPeter Wemm ;; 1645937a2000SPeter Wemm *-dolphin) 1646*70b56f4bSCy Schubert os=sysv3 1647937a2000SPeter Wemm ;; 1648937a2000SPeter Wemm m68k-ccur) 1649*70b56f4bSCy Schubert os=rtu 1650937a2000SPeter Wemm ;; 1651937a2000SPeter Wemm m88k-omron*) 1652*70b56f4bSCy Schubert os=luna 1653937a2000SPeter Wemm ;; 1654937a2000SPeter Wemm *-next) 1655*70b56f4bSCy Schubert os=nextstep 1656937a2000SPeter Wemm ;; 1657937a2000SPeter Wemm *-sequent) 1658*70b56f4bSCy Schubert os=ptx 1659937a2000SPeter Wemm ;; 1660937a2000SPeter Wemm *-crds) 1661*70b56f4bSCy Schubert os=unos 1662937a2000SPeter Wemm ;; 1663937a2000SPeter Wemm *-ns) 1664*70b56f4bSCy Schubert os=genix 1665937a2000SPeter Wemm ;; 1666937a2000SPeter Wemm i370-*) 1667*70b56f4bSCy Schubert os=mvs 1668937a2000SPeter Wemm ;; 1669937a2000SPeter Wemm *-gould) 1670*70b56f4bSCy Schubert os=sysv 1671937a2000SPeter Wemm ;; 1672937a2000SPeter Wemm *-highlevel) 1673*70b56f4bSCy Schubert os=bsd 1674937a2000SPeter Wemm ;; 1675937a2000SPeter Wemm *-encore) 1676*70b56f4bSCy Schubert os=bsd 1677937a2000SPeter Wemm ;; 1678937a2000SPeter Wemm *-sgi) 1679*70b56f4bSCy Schubert os=irix 1680937a2000SPeter Wemm ;; 1681937a2000SPeter Wemm *-siemens) 1682*70b56f4bSCy Schubert os=sysv4 1683937a2000SPeter Wemm ;; 1684937a2000SPeter Wemm *-masscomp) 1685*70b56f4bSCy Schubert os=rtu 1686937a2000SPeter Wemm ;; 1687937a2000SPeter Wemm f30[01]-fujitsu | f700-fujitsu) 1688*70b56f4bSCy Schubert os=uxpv 1689937a2000SPeter Wemm ;; 1690937a2000SPeter Wemm *-rom68k) 1691*70b56f4bSCy Schubert os=coff 1692937a2000SPeter Wemm ;; 1693937a2000SPeter Wemm *-*bug) 1694*70b56f4bSCy Schubert os=coff 1695937a2000SPeter Wemm ;; 1696937a2000SPeter Wemm *-apple) 1697*70b56f4bSCy Schubert os=macos 1698937a2000SPeter Wemm ;; 1699937a2000SPeter Wemm *-atari*) 1700*70b56f4bSCy Schubert os=mint 1701*70b56f4bSCy Schubert ;; 1702*70b56f4bSCy Schubert *-wrs) 1703*70b56f4bSCy Schubert os=vxworks 1704937a2000SPeter Wemm ;; 1705937a2000SPeter Wemm *) 1706*70b56f4bSCy Schubert os=none 1707937a2000SPeter Wemm ;; 1708937a2000SPeter Wemmesac 1709*70b56f4bSCy Schubert 1710937a2000SPeter Wemmfi 1711937a2000SPeter Wemm 1712*70b56f4bSCy Schubert# Now, validate our (potentially fixed-up) OS. 1713*70b56f4bSCy Schubertcase $os in 1714*70b56f4bSCy Schubert # Sometimes we do "kernel-libc", so those need to count as OSes. 1715*70b56f4bSCy Schubert musl* | newlib* | relibc* | uclibc*) 1716*70b56f4bSCy Schubert ;; 1717*70b56f4bSCy Schubert # Likewise for "kernel-abi" 1718*70b56f4bSCy Schubert eabi* | gnueabi*) 1719*70b56f4bSCy Schubert ;; 1720*70b56f4bSCy Schubert # VxWorks passes extra cpu info in the 4th filed. 1721*70b56f4bSCy Schubert simlinux | simwindows | spe) 1722*70b56f4bSCy Schubert ;; 1723*70b56f4bSCy Schubert # Now accept the basic system types. 1724*70b56f4bSCy Schubert # The portable systems comes first. 1725*70b56f4bSCy Schubert # Each alternative MUST end in a * to match a version number. 1726*70b56f4bSCy Schubert gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1727*70b56f4bSCy Schubert | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1728*70b56f4bSCy Schubert | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1729*70b56f4bSCy Schubert | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1730*70b56f4bSCy Schubert | hiux* | abug | nacl* | netware* | windows* \ 1731*70b56f4bSCy Schubert | os9* | macos* | osx* | ios* \ 1732*70b56f4bSCy Schubert | mpw* | magic* | mmixware* | mon960* | lnews* \ 1733*70b56f4bSCy Schubert | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1734*70b56f4bSCy Schubert | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1735*70b56f4bSCy Schubert | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1736*70b56f4bSCy Schubert | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1737*70b56f4bSCy Schubert | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1738*70b56f4bSCy Schubert | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1739*70b56f4bSCy Schubert | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1740*70b56f4bSCy Schubert | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1741*70b56f4bSCy Schubert | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1742*70b56f4bSCy Schubert | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1743*70b56f4bSCy Schubert | chorusrdb* | cegcc* | glidix* | serenity* \ 1744*70b56f4bSCy Schubert | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1745*70b56f4bSCy Schubert | midipix* | mingw32* | mingw64* | mint* \ 1746*70b56f4bSCy Schubert | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1747*70b56f4bSCy Schubert | interix* | uwin* | mks* | rhapsody* | darwin* \ 1748*70b56f4bSCy Schubert | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1749*70b56f4bSCy Schubert | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1750*70b56f4bSCy Schubert | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1751*70b56f4bSCy Schubert | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1752*70b56f4bSCy Schubert | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1753*70b56f4bSCy Schubert | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1754*70b56f4bSCy Schubert | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1755*70b56f4bSCy Schubert | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1756*70b56f4bSCy Schubert | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1757*70b56f4bSCy Schubert | fiwix* ) 1758*70b56f4bSCy Schubert ;; 1759*70b56f4bSCy Schubert # This one is extra strict with allowed versions 1760*70b56f4bSCy Schubert sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1761*70b56f4bSCy Schubert # Don't forget version if it is 3.2v4 or newer. 1762*70b56f4bSCy Schubert ;; 1763*70b56f4bSCy Schubert none) 1764*70b56f4bSCy Schubert ;; 1765*70b56f4bSCy Schubert *) 1766*70b56f4bSCy Schubert echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1767*70b56f4bSCy Schubert exit 1 1768*70b56f4bSCy Schubert ;; 1769*70b56f4bSCy Schubertesac 1770*70b56f4bSCy Schubert 1771*70b56f4bSCy Schubert# As a final step for OS-related things, validate the OS-kernel combination 1772*70b56f4bSCy Schubert# (given a valid OS), if there is a kernel. 1773*70b56f4bSCy Schubertcase $kernel-$os in 1774*70b56f4bSCy Schubert linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1775*70b56f4bSCy Schubert | linux-musl* | linux-relibc* | linux-uclibc* ) 1776*70b56f4bSCy Schubert ;; 1777*70b56f4bSCy Schubert uclinux-uclibc* ) 1778*70b56f4bSCy Schubert ;; 1779*70b56f4bSCy Schubert -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 1780*70b56f4bSCy Schubert # These are just libc implementations, not actual OSes, and thus 1781*70b56f4bSCy Schubert # require a kernel. 1782*70b56f4bSCy Schubert echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1783*70b56f4bSCy Schubert exit 1 1784*70b56f4bSCy Schubert ;; 1785*70b56f4bSCy Schubert kfreebsd*-gnu* | kopensolaris*-gnu*) 1786*70b56f4bSCy Schubert ;; 1787*70b56f4bSCy Schubert vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1788*70b56f4bSCy Schubert ;; 1789*70b56f4bSCy Schubert nto-qnx*) 1790*70b56f4bSCy Schubert ;; 1791*70b56f4bSCy Schubert os2-emx) 1792*70b56f4bSCy Schubert ;; 1793*70b56f4bSCy Schubert *-eabi* | *-gnueabi*) 1794*70b56f4bSCy Schubert ;; 1795*70b56f4bSCy Schubert -*) 1796*70b56f4bSCy Schubert # Blank kernel with real OS is always fine. 1797*70b56f4bSCy Schubert ;; 1798*70b56f4bSCy Schubert *-*) 1799*70b56f4bSCy Schubert echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1800*70b56f4bSCy Schubert exit 1 1801*70b56f4bSCy Schubert ;; 1802*70b56f4bSCy Schubertesac 1803*70b56f4bSCy Schubert 1804937a2000SPeter Wemm# Here we handle the case where we know the os, and the CPU type, but not the 1805937a2000SPeter Wemm# manufacturer. We pick the logical manufacturer. 1806*70b56f4bSCy Schubertcase $vendor in 1807*70b56f4bSCy Schubert unknown) 1808*70b56f4bSCy Schubert case $cpu-$os in 1809*70b56f4bSCy Schubert *-riscix*) 1810937a2000SPeter Wemm vendor=acorn 1811937a2000SPeter Wemm ;; 1812*70b56f4bSCy Schubert *-sunos*) 1813937a2000SPeter Wemm vendor=sun 1814937a2000SPeter Wemm ;; 1815*70b56f4bSCy Schubert *-cnk* | *-aix*) 1816937a2000SPeter Wemm vendor=ibm 1817937a2000SPeter Wemm ;; 1818*70b56f4bSCy Schubert *-beos*) 1819937a2000SPeter Wemm vendor=be 1820937a2000SPeter Wemm ;; 1821*70b56f4bSCy Schubert *-hpux*) 1822937a2000SPeter Wemm vendor=hp 1823937a2000SPeter Wemm ;; 1824*70b56f4bSCy Schubert *-mpeix*) 1825937a2000SPeter Wemm vendor=hp 1826937a2000SPeter Wemm ;; 1827*70b56f4bSCy Schubert *-hiux*) 1828937a2000SPeter Wemm vendor=hitachi 1829937a2000SPeter Wemm ;; 1830*70b56f4bSCy Schubert *-unos*) 1831937a2000SPeter Wemm vendor=crds 1832937a2000SPeter Wemm ;; 1833*70b56f4bSCy Schubert *-dgux*) 1834937a2000SPeter Wemm vendor=dg 1835937a2000SPeter Wemm ;; 1836*70b56f4bSCy Schubert *-luna*) 1837937a2000SPeter Wemm vendor=omron 1838937a2000SPeter Wemm ;; 1839*70b56f4bSCy Schubert *-genix*) 1840937a2000SPeter Wemm vendor=ns 1841937a2000SPeter Wemm ;; 1842*70b56f4bSCy Schubert *-clix*) 1843*70b56f4bSCy Schubert vendor=intergraph 1844*70b56f4bSCy Schubert ;; 1845*70b56f4bSCy Schubert *-mvs* | *-opened*) 1846937a2000SPeter Wemm vendor=ibm 1847937a2000SPeter Wemm ;; 1848*70b56f4bSCy Schubert *-os400*) 1849937a2000SPeter Wemm vendor=ibm 1850937a2000SPeter Wemm ;; 1851*70b56f4bSCy Schubert s390-* | s390x-*) 1852*70b56f4bSCy Schubert vendor=ibm 1853*70b56f4bSCy Schubert ;; 1854*70b56f4bSCy Schubert *-ptx*) 1855937a2000SPeter Wemm vendor=sequent 1856937a2000SPeter Wemm ;; 1857*70b56f4bSCy Schubert *-tpf*) 1858937a2000SPeter Wemm vendor=ibm 1859937a2000SPeter Wemm ;; 1860*70b56f4bSCy Schubert *-vxsim* | *-vxworks* | *-windiss*) 1861937a2000SPeter Wemm vendor=wrs 1862937a2000SPeter Wemm ;; 1863*70b56f4bSCy Schubert *-aux*) 1864937a2000SPeter Wemm vendor=apple 1865937a2000SPeter Wemm ;; 1866*70b56f4bSCy Schubert *-hms*) 1867937a2000SPeter Wemm vendor=hitachi 1868937a2000SPeter Wemm ;; 1869*70b56f4bSCy Schubert *-mpw* | *-macos*) 1870937a2000SPeter Wemm vendor=apple 1871937a2000SPeter Wemm ;; 1872*70b56f4bSCy Schubert *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1873937a2000SPeter Wemm vendor=atari 1874937a2000SPeter Wemm ;; 1875*70b56f4bSCy Schubert *-vos*) 1876937a2000SPeter Wemm vendor=stratus 1877937a2000SPeter Wemm ;; 1878937a2000SPeter Wemm esac 1879937a2000SPeter Wemm ;; 1880937a2000SPeter Wemmesac 1881937a2000SPeter Wemm 1882*70b56f4bSCy Schubertecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1883937a2000SPeter Wemmexit 1884937a2000SPeter Wemm 1885937a2000SPeter Wemm# Local variables: 1886*70b56f4bSCy Schubert# eval: (add-hook 'before-save-hook 'time-stamp) 1887937a2000SPeter Wemm# time-stamp-start: "timestamp='" 1888937a2000SPeter Wemm# time-stamp-format: "%:y-%02m-%02d" 1889937a2000SPeter Wemm# time-stamp-end: "'" 1890937a2000SPeter Wemm# End: 1891