14edb46e9SPaul Traina#! /bin/sh 2685295f4SBill Fenner# Configuration validation subroutine script. 3ee67461eSJoseph Mingrone# Copyright 1992-2023 Free Software Foundation, Inc. 4685295f4SBill Fenner 5ee67461eSJoseph Mingrone# shellcheck disable=SC2006,SC2268 # see below for rationale 6ee67461eSJoseph Mingrone 7ee67461eSJoseph Mingronetimestamp='2023-01-21' 8685295f4SBill Fenner 98bdc5a62SPatrick Kelsey# This file is free software; you can redistribute it and/or modify it 108bdc5a62SPatrick Kelsey# under the terms of the GNU General Public License as published by 11ee67461eSJoseph Mingrone# the Free Software Foundation, either version 3 of the License, or 124edb46e9SPaul Traina# (at your option) any later version. 134edb46e9SPaul Traina# 148bdc5a62SPatrick Kelsey# This program is distributed in the hope that it will be useful, but 158bdc5a62SPatrick Kelsey# WITHOUT ANY WARRANTY; without even the implied warranty of 168bdc5a62SPatrick Kelsey# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 178bdc5a62SPatrick Kelsey# General Public License for more details. 184edb46e9SPaul Traina# 194edb46e9SPaul Traina# You should have received a copy of the GNU General Public License 2039e421e8SCy Schubert# along with this program; if not, see <https://www.gnu.org/licenses/>. 2127df3f5dSRui Paulo# 224edb46e9SPaul Traina# As a special exception to the GNU General Public License, if you 234edb46e9SPaul Traina# distribute this file as part of a program that contains a 244edb46e9SPaul Traina# configuration script generated by Autoconf, you may include it under 258bdc5a62SPatrick Kelsey# the same distribution terms that you use for the rest of that 268bdc5a62SPatrick Kelsey# program. This Exception is an additional permission under section 7 278bdc5a62SPatrick Kelsey# of the GNU General Public License, version 3 ("GPLv3"). 284edb46e9SPaul Traina 2927df3f5dSRui Paulo 308bdc5a62SPatrick Kelsey# Please send patches to <config-patches@gnu.org>. 31685295f4SBill Fenner# 324edb46e9SPaul Traina# Configuration subroutine to validate and canonicalize a configuration type. 334edb46e9SPaul Traina# Supply the specified configuration type as an argument. 344edb46e9SPaul Traina# If it is invalid, we print an error message on stderr and exit with code 1. 354edb46e9SPaul Traina# Otherwise, we print the canonical config type on stdout and succeed. 364edb46e9SPaul Traina 3727df3f5dSRui Paulo# You can get the latest version of this script from: 38ee67461eSJoseph Mingrone# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 3927df3f5dSRui Paulo 404edb46e9SPaul Traina# This file is supposed to be the same for all GNU packages 414edb46e9SPaul Traina# and recognize all the CPU types, system types and aliases 424edb46e9SPaul Traina# that are meaningful with *any* GNU software. 434edb46e9SPaul Traina# Each package is responsible for reporting which valid configurations 444edb46e9SPaul Traina# it does not support. The user should be able to distinguish 454edb46e9SPaul Traina# a failure to support a valid configuration from a meaningless 464edb46e9SPaul Traina# configuration. 474edb46e9SPaul Traina 484edb46e9SPaul Traina# The goal of this file is to map all the various variations of a given 494edb46e9SPaul Traina# machine specification into a single specification in the form: 504edb46e9SPaul Traina# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 514de76e31SBill Fenner# or in some cases, the newer four-part form: 524de76e31SBill Fenner# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 534edb46e9SPaul Traina# It is wrong to echo any other type of specification. 544edb46e9SPaul Traina 55ee67461eSJoseph Mingrone# The "shellcheck disable" line above the timestamp inhibits complaints 56ee67461eSJoseph Mingrone# about features and limitations of the classic Bourne shell that were 57ee67461eSJoseph Mingrone# superseded or lifted in POSIX. However, this script identifies a wide 58ee67461eSJoseph Mingrone# variety of pre-POSIX systems that do not have POSIX shells at all, and 59ee67461eSJoseph Mingrone# even some reasonably current systems (Solaris 10 as case-in-point) still 60ee67461eSJoseph Mingrone# have a pre-POSIX /bin/sh. 61ee67461eSJoseph Mingrone 62685295f4SBill Fennerme=`echo "$0" | sed -e 's,.*/,,'` 634edb46e9SPaul Traina 64685295f4SBill Fennerusage="\ 6539e421e8SCy SchubertUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66685295f4SBill Fenner 67685295f4SBill FennerCanonicalize a configuration name. 68685295f4SBill Fenner 6939e421e8SCy SchubertOptions: 70685295f4SBill Fenner -h, --help print this help, then exit 71685295f4SBill Fenner -t, --time-stamp print date of last modification, then exit 72685295f4SBill Fenner -v, --version print version number, then exit 73685295f4SBill Fenner 74685295f4SBill FennerReport bugs and patches to <config-patches@gnu.org>." 75685295f4SBill Fenner 76685295f4SBill Fennerversion="\ 77685295f4SBill FennerGNU config.sub ($timestamp) 78685295f4SBill Fenner 79ee67461eSJoseph MingroneCopyright 1992-2023 Free Software Foundation, Inc. 80685295f4SBill Fenner 81685295f4SBill FennerThis is free software; see the source for copying conditions. There is NO 82685295f4SBill Fennerwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83685295f4SBill Fenner 84685295f4SBill Fennerhelp=" 85685295f4SBill FennerTry \`$me --help' for more information." 86685295f4SBill Fenner 87685295f4SBill Fenner# Parse command line 88685295f4SBill Fennerwhile test $# -gt 0 ; do 894edb46e9SPaul Traina case $1 in 90685295f4SBill Fenner --time-stamp | --time* | -t ) 9127df3f5dSRui Paulo echo "$timestamp" ; exit ;; 92685295f4SBill Fenner --version | -v ) 9327df3f5dSRui Paulo echo "$version" ; exit ;; 94685295f4SBill Fenner --help | --h* | -h ) 9527df3f5dSRui Paulo echo "$usage"; exit ;; 96685295f4SBill Fenner -- ) # Stop option processing 97685295f4SBill Fenner shift; break ;; 98685295f4SBill Fenner - ) # Use stdin as input. 99685295f4SBill Fenner break ;; 100685295f4SBill Fenner -* ) 101ee67461eSJoseph Mingrone echo "$me: invalid option $1$help" >&2 102685295f4SBill Fenner exit 1 ;; 103685295f4SBill Fenner 1044edb46e9SPaul Traina *local*) 105685295f4SBill Fenner # First pass through any local machine types. 10639e421e8SCy Schubert echo "$1" 10727df3f5dSRui Paulo exit ;; 108685295f4SBill Fenner 1094edb46e9SPaul Traina * ) 110685295f4SBill Fenner break ;; 111685295f4SBill Fenner esac 112685295f4SBill Fennerdone 113685295f4SBill Fenner 114685295f4SBill Fennercase $# in 115685295f4SBill Fenner 0) echo "$me: missing argument$help" >&2 116685295f4SBill Fenner exit 1;; 117685295f4SBill Fenner 1) ;; 118685295f4SBill Fenner *) echo "$me: too many arguments$help" >&2 119685295f4SBill Fenner exit 1;; 1204edb46e9SPaul Trainaesac 1214edb46e9SPaul Traina 12239e421e8SCy Schubert# Split fields of configuration type 123ee67461eSJoseph Mingrone# shellcheck disable=SC2162 124ee67461eSJoseph Mingronesaved_IFS=$IFS 125ee67461eSJoseph MingroneIFS="-" read field1 field2 field3 field4 <<EOF 12639e421e8SCy Schubert$1 12739e421e8SCy SchubertEOF 128ee67461eSJoseph MingroneIFS=$saved_IFS 12939e421e8SCy Schubert 13039e421e8SCy Schubert# Separate into logical components for further validation 13139e421e8SCy Schubertcase $1 in 13239e421e8SCy Schubert *-*-*-*-*) 13339e421e8SCy Schubert echo Invalid configuration \`"$1"\': more than four components >&2 13439e421e8SCy Schubert exit 1 13539e421e8SCy Schubert ;; 13639e421e8SCy Schubert *-*-*-*) 13739e421e8SCy Schubert basic_machine=$field1-$field2 138ee67461eSJoseph Mingrone basic_os=$field3-$field4 13939e421e8SCy Schubert ;; 14039e421e8SCy Schubert *-*-*) 14139e421e8SCy Schubert # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14239e421e8SCy Schubert # parts 14339e421e8SCy Schubert maybe_os=$field2-$field3 1444de76e31SBill Fenner case $maybe_os in 145ee67461eSJoseph Mingrone nto-qnx* | linux-* | uclinux-uclibc* \ 14639e421e8SCy Schubert | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14739e421e8SCy Schubert | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148ee67461eSJoseph Mingrone | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 14939e421e8SCy Schubert basic_machine=$field1 150ee67461eSJoseph Mingrone basic_os=$maybe_os 1514de76e31SBill Fenner ;; 1523c602fabSXin LI android-linux) 15339e421e8SCy Schubert basic_machine=$field1-unknown 154ee67461eSJoseph Mingrone basic_os=linux-android 1553c602fabSXin LI ;; 1564de76e31SBill Fenner *) 15739e421e8SCy Schubert basic_machine=$field1-$field2 158ee67461eSJoseph Mingrone basic_os=$field3 1594de76e31SBill Fenner ;; 1604de76e31SBill Fenner esac 1614edb46e9SPaul Traina ;; 16239e421e8SCy Schubert *-*) 163ee67461eSJoseph Mingrone # A lone config we happen to match not fitting any pattern 164ee67461eSJoseph Mingrone case $field1-$field2 in 165ee67461eSJoseph Mingrone decstation-3100) 166ee67461eSJoseph Mingrone basic_machine=mips-dec 167ee67461eSJoseph Mingrone basic_os= 168ee67461eSJoseph Mingrone ;; 169ee67461eSJoseph Mingrone *-*) 17039e421e8SCy Schubert # Second component is usually, but not always the OS 17139e421e8SCy Schubert case $field2 in 17239e421e8SCy Schubert # Prevent following clause from handling this valid os 17339e421e8SCy Schubert sun*os*) 17439e421e8SCy Schubert basic_machine=$field1 175ee67461eSJoseph Mingrone basic_os=$field2 176ee67461eSJoseph Mingrone ;; 177ee67461eSJoseph Mingrone zephyr*) 178ee67461eSJoseph Mingrone basic_machine=$field1-unknown 179ee67461eSJoseph Mingrone basic_os=$field2 18039e421e8SCy Schubert ;; 18139e421e8SCy Schubert # Manufacturers 182ee67461eSJoseph Mingrone dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18339e421e8SCy Schubert | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18439e421e8SCy Schubert | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185ee67461eSJoseph Mingrone | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186ee67461eSJoseph Mingrone | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187ee67461eSJoseph Mingrone | ultra | tti* | harris | dolphin | highlevel | gould \ 188ee67461eSJoseph Mingrone | cbm | ns | masscomp | apple | axis | knuth | cray \ 189ee67461eSJoseph Mingrone | microblaze* | sim | cisco \ 190ee67461eSJoseph Mingrone | oki | wec | wrs | winbond) 19139e421e8SCy Schubert basic_machine=$field1-$field2 192ee67461eSJoseph Mingrone basic_os= 19339e421e8SCy Schubert ;; 19439e421e8SCy Schubert *) 19539e421e8SCy Schubert basic_machine=$field1 196ee67461eSJoseph Mingrone basic_os=$field2 197ee67461eSJoseph Mingrone ;; 198ee67461eSJoseph Mingrone esac 19939e421e8SCy Schubert ;; 20039e421e8SCy Schubert esac 20139e421e8SCy Schubert ;; 20239e421e8SCy Schubert *) 20339e421e8SCy Schubert # Convert single-component short-hands not valid as part of 20439e421e8SCy Schubert # multi-component configurations. 20539e421e8SCy Schubert case $field1 in 20639e421e8SCy Schubert 386bsd) 20739e421e8SCy Schubert basic_machine=i386-pc 208ee67461eSJoseph Mingrone basic_os=bsd 20939e421e8SCy Schubert ;; 21039e421e8SCy Schubert a29khif) 21139e421e8SCy Schubert basic_machine=a29k-amd 212ee67461eSJoseph Mingrone basic_os=udi 21339e421e8SCy Schubert ;; 21439e421e8SCy Schubert adobe68k) 21539e421e8SCy Schubert basic_machine=m68010-adobe 216ee67461eSJoseph Mingrone basic_os=scout 217ee67461eSJoseph Mingrone ;; 218ee67461eSJoseph Mingrone alliant) 219ee67461eSJoseph Mingrone basic_machine=fx80-alliant 220ee67461eSJoseph Mingrone basic_os= 221ee67461eSJoseph Mingrone ;; 222ee67461eSJoseph Mingrone altos | altos3068) 223ee67461eSJoseph Mingrone basic_machine=m68k-altos 224ee67461eSJoseph Mingrone basic_os= 22539e421e8SCy Schubert ;; 22639e421e8SCy Schubert am29k) 22739e421e8SCy Schubert basic_machine=a29k-none 228ee67461eSJoseph Mingrone basic_os=bsd 22939e421e8SCy Schubert ;; 23039e421e8SCy Schubert amdahl) 23139e421e8SCy Schubert basic_machine=580-amdahl 232ee67461eSJoseph Mingrone basic_os=sysv 233ee67461eSJoseph Mingrone ;; 234ee67461eSJoseph Mingrone amiga) 235ee67461eSJoseph Mingrone basic_machine=m68k-unknown 236ee67461eSJoseph Mingrone basic_os= 23739e421e8SCy Schubert ;; 23839e421e8SCy Schubert amigaos | amigados) 23939e421e8SCy Schubert basic_machine=m68k-unknown 240ee67461eSJoseph Mingrone basic_os=amigaos 24139e421e8SCy Schubert ;; 24239e421e8SCy Schubert amigaunix | amix) 24339e421e8SCy Schubert basic_machine=m68k-unknown 244ee67461eSJoseph Mingrone basic_os=sysv4 24539e421e8SCy Schubert ;; 24639e421e8SCy Schubert apollo68) 24739e421e8SCy Schubert basic_machine=m68k-apollo 248ee67461eSJoseph Mingrone basic_os=sysv 24939e421e8SCy Schubert ;; 25039e421e8SCy Schubert apollo68bsd) 25139e421e8SCy Schubert basic_machine=m68k-apollo 252ee67461eSJoseph Mingrone basic_os=bsd 25339e421e8SCy Schubert ;; 25439e421e8SCy Schubert aros) 25539e421e8SCy Schubert basic_machine=i386-pc 256ee67461eSJoseph Mingrone basic_os=aros 25739e421e8SCy Schubert ;; 25839e421e8SCy Schubert aux) 25939e421e8SCy Schubert basic_machine=m68k-apple 260ee67461eSJoseph Mingrone basic_os=aux 26139e421e8SCy Schubert ;; 26239e421e8SCy Schubert balance) 26339e421e8SCy Schubert basic_machine=ns32k-sequent 264ee67461eSJoseph Mingrone basic_os=dynix 26539e421e8SCy Schubert ;; 26639e421e8SCy Schubert blackfin) 26739e421e8SCy Schubert basic_machine=bfin-unknown 268ee67461eSJoseph Mingrone basic_os=linux 26939e421e8SCy Schubert ;; 27039e421e8SCy Schubert cegcc) 27139e421e8SCy Schubert basic_machine=arm-unknown 272ee67461eSJoseph Mingrone basic_os=cegcc 273ee67461eSJoseph Mingrone ;; 274ee67461eSJoseph Mingrone convex-c1) 275ee67461eSJoseph Mingrone basic_machine=c1-convex 276ee67461eSJoseph Mingrone basic_os=bsd 277ee67461eSJoseph Mingrone ;; 278ee67461eSJoseph Mingrone convex-c2) 279ee67461eSJoseph Mingrone basic_machine=c2-convex 280ee67461eSJoseph Mingrone basic_os=bsd 281ee67461eSJoseph Mingrone ;; 282ee67461eSJoseph Mingrone convex-c32) 283ee67461eSJoseph Mingrone basic_machine=c32-convex 284ee67461eSJoseph Mingrone basic_os=bsd 285ee67461eSJoseph Mingrone ;; 286ee67461eSJoseph Mingrone convex-c34) 287ee67461eSJoseph Mingrone basic_machine=c34-convex 288ee67461eSJoseph Mingrone basic_os=bsd 289ee67461eSJoseph Mingrone ;; 290ee67461eSJoseph Mingrone convex-c38) 291ee67461eSJoseph Mingrone basic_machine=c38-convex 292ee67461eSJoseph Mingrone basic_os=bsd 29339e421e8SCy Schubert ;; 29439e421e8SCy Schubert cray) 29539e421e8SCy Schubert basic_machine=j90-cray 296ee67461eSJoseph Mingrone basic_os=unicos 29739e421e8SCy Schubert ;; 298ee67461eSJoseph Mingrone crds | unos) 299ee67461eSJoseph Mingrone basic_machine=m68k-crds 300ee67461eSJoseph Mingrone basic_os= 301ee67461eSJoseph Mingrone ;; 302ee67461eSJoseph Mingrone da30) 303ee67461eSJoseph Mingrone basic_machine=m68k-da30 304ee67461eSJoseph Mingrone basic_os= 305ee67461eSJoseph Mingrone ;; 306ee67461eSJoseph Mingrone decstation | pmax | pmin | dec3100 | decstatn) 307ee67461eSJoseph Mingrone basic_machine=mips-dec 308ee67461eSJoseph Mingrone basic_os= 30939e421e8SCy Schubert ;; 31039e421e8SCy Schubert delta88) 31139e421e8SCy Schubert basic_machine=m88k-motorola 312ee67461eSJoseph Mingrone basic_os=sysv3 31339e421e8SCy Schubert ;; 31439e421e8SCy Schubert dicos) 31539e421e8SCy Schubert basic_machine=i686-pc 316ee67461eSJoseph Mingrone basic_os=dicos 31739e421e8SCy Schubert ;; 31839e421e8SCy Schubert djgpp) 31939e421e8SCy Schubert basic_machine=i586-pc 320ee67461eSJoseph Mingrone basic_os=msdosdjgpp 32139e421e8SCy Schubert ;; 32239e421e8SCy Schubert ebmon29k) 32339e421e8SCy Schubert basic_machine=a29k-amd 324ee67461eSJoseph Mingrone basic_os=ebmon 32539e421e8SCy Schubert ;; 32639e421e8SCy Schubert es1800 | OSE68k | ose68k | ose | OSE) 32739e421e8SCy Schubert basic_machine=m68k-ericsson 328ee67461eSJoseph Mingrone basic_os=ose 32939e421e8SCy Schubert ;; 33039e421e8SCy Schubert gmicro) 33139e421e8SCy Schubert basic_machine=tron-gmicro 332ee67461eSJoseph Mingrone basic_os=sysv 33339e421e8SCy Schubert ;; 33439e421e8SCy Schubert go32) 33539e421e8SCy Schubert basic_machine=i386-pc 336ee67461eSJoseph Mingrone basic_os=go32 33739e421e8SCy Schubert ;; 33839e421e8SCy Schubert h8300hms) 33939e421e8SCy Schubert basic_machine=h8300-hitachi 340ee67461eSJoseph Mingrone basic_os=hms 34139e421e8SCy Schubert ;; 34239e421e8SCy Schubert h8300xray) 34339e421e8SCy Schubert basic_machine=h8300-hitachi 344ee67461eSJoseph Mingrone basic_os=xray 34539e421e8SCy Schubert ;; 34639e421e8SCy Schubert h8500hms) 34739e421e8SCy Schubert basic_machine=h8500-hitachi 348ee67461eSJoseph Mingrone basic_os=hms 34939e421e8SCy Schubert ;; 35039e421e8SCy Schubert harris) 35139e421e8SCy Schubert basic_machine=m88k-harris 352ee67461eSJoseph Mingrone basic_os=sysv3 353ee67461eSJoseph Mingrone ;; 354ee67461eSJoseph Mingrone hp300 | hp300hpux) 355ee67461eSJoseph Mingrone basic_machine=m68k-hp 356ee67461eSJoseph Mingrone basic_os=hpux 35739e421e8SCy Schubert ;; 35839e421e8SCy Schubert hp300bsd) 35939e421e8SCy Schubert basic_machine=m68k-hp 360ee67461eSJoseph Mingrone basic_os=bsd 36139e421e8SCy Schubert ;; 36239e421e8SCy Schubert hppaosf) 36339e421e8SCy Schubert basic_machine=hppa1.1-hp 364ee67461eSJoseph Mingrone basic_os=osf 36539e421e8SCy Schubert ;; 36639e421e8SCy Schubert hppro) 36739e421e8SCy Schubert basic_machine=hppa1.1-hp 368ee67461eSJoseph Mingrone basic_os=proelf 36939e421e8SCy Schubert ;; 37039e421e8SCy Schubert i386mach) 37139e421e8SCy Schubert basic_machine=i386-mach 372ee67461eSJoseph Mingrone basic_os=mach 37339e421e8SCy Schubert ;; 37439e421e8SCy Schubert isi68 | isi) 37539e421e8SCy Schubert basic_machine=m68k-isi 376ee67461eSJoseph Mingrone basic_os=sysv 37739e421e8SCy Schubert ;; 37839e421e8SCy Schubert m68knommu) 37939e421e8SCy Schubert basic_machine=m68k-unknown 380ee67461eSJoseph Mingrone basic_os=linux 38139e421e8SCy Schubert ;; 38239e421e8SCy Schubert magnum | m3230) 38339e421e8SCy Schubert basic_machine=mips-mips 384ee67461eSJoseph Mingrone basic_os=sysv 38539e421e8SCy Schubert ;; 38639e421e8SCy Schubert merlin) 38739e421e8SCy Schubert basic_machine=ns32k-utek 388ee67461eSJoseph Mingrone basic_os=sysv 38939e421e8SCy Schubert ;; 39039e421e8SCy Schubert mingw64) 39139e421e8SCy Schubert basic_machine=x86_64-pc 392ee67461eSJoseph Mingrone basic_os=mingw64 39339e421e8SCy Schubert ;; 39439e421e8SCy Schubert mingw32) 39539e421e8SCy Schubert basic_machine=i686-pc 396ee67461eSJoseph Mingrone basic_os=mingw32 39739e421e8SCy Schubert ;; 39839e421e8SCy Schubert mingw32ce) 39939e421e8SCy Schubert basic_machine=arm-unknown 400ee67461eSJoseph Mingrone basic_os=mingw32ce 40139e421e8SCy Schubert ;; 40239e421e8SCy Schubert monitor) 40339e421e8SCy Schubert basic_machine=m68k-rom68k 404ee67461eSJoseph Mingrone basic_os=coff 40539e421e8SCy Schubert ;; 40639e421e8SCy Schubert morphos) 40739e421e8SCy Schubert basic_machine=powerpc-unknown 408ee67461eSJoseph Mingrone basic_os=morphos 40939e421e8SCy Schubert ;; 41039e421e8SCy Schubert moxiebox) 41139e421e8SCy Schubert basic_machine=moxie-unknown 412ee67461eSJoseph Mingrone basic_os=moxiebox 41339e421e8SCy Schubert ;; 41439e421e8SCy Schubert msdos) 41539e421e8SCy Schubert basic_machine=i386-pc 416ee67461eSJoseph Mingrone basic_os=msdos 41739e421e8SCy Schubert ;; 41839e421e8SCy Schubert msys) 41939e421e8SCy Schubert basic_machine=i686-pc 420ee67461eSJoseph Mingrone basic_os=msys 42139e421e8SCy Schubert ;; 42239e421e8SCy Schubert mvs) 42339e421e8SCy Schubert basic_machine=i370-ibm 424ee67461eSJoseph Mingrone basic_os=mvs 42539e421e8SCy Schubert ;; 42639e421e8SCy Schubert nacl) 42739e421e8SCy Schubert basic_machine=le32-unknown 428ee67461eSJoseph Mingrone basic_os=nacl 42939e421e8SCy Schubert ;; 43039e421e8SCy Schubert ncr3000) 43139e421e8SCy Schubert basic_machine=i486-ncr 432ee67461eSJoseph Mingrone basic_os=sysv4 43339e421e8SCy Schubert ;; 43439e421e8SCy Schubert netbsd386) 435ee67461eSJoseph Mingrone basic_machine=i386-pc 436ee67461eSJoseph Mingrone basic_os=netbsd 43739e421e8SCy Schubert ;; 43839e421e8SCy Schubert netwinder) 43939e421e8SCy Schubert basic_machine=armv4l-rebel 440ee67461eSJoseph Mingrone basic_os=linux 44139e421e8SCy Schubert ;; 44239e421e8SCy Schubert news | news700 | news800 | news900) 44339e421e8SCy Schubert basic_machine=m68k-sony 444ee67461eSJoseph Mingrone basic_os=newsos 44539e421e8SCy Schubert ;; 44639e421e8SCy Schubert news1000) 44739e421e8SCy Schubert basic_machine=m68030-sony 448ee67461eSJoseph Mingrone basic_os=newsos 44939e421e8SCy Schubert ;; 45039e421e8SCy Schubert necv70) 45139e421e8SCy Schubert basic_machine=v70-nec 452ee67461eSJoseph Mingrone basic_os=sysv 45339e421e8SCy Schubert ;; 45439e421e8SCy Schubert nh3000) 45539e421e8SCy Schubert basic_machine=m68k-harris 456ee67461eSJoseph Mingrone basic_os=cxux 45739e421e8SCy Schubert ;; 45839e421e8SCy Schubert nh[45]000) 45939e421e8SCy Schubert basic_machine=m88k-harris 460ee67461eSJoseph Mingrone basic_os=cxux 46139e421e8SCy Schubert ;; 46239e421e8SCy Schubert nindy960) 46339e421e8SCy Schubert basic_machine=i960-intel 464ee67461eSJoseph Mingrone basic_os=nindy 46539e421e8SCy Schubert ;; 46639e421e8SCy Schubert mon960) 46739e421e8SCy Schubert basic_machine=i960-intel 468ee67461eSJoseph Mingrone basic_os=mon960 46939e421e8SCy Schubert ;; 47039e421e8SCy Schubert nonstopux) 47139e421e8SCy Schubert basic_machine=mips-compaq 472ee67461eSJoseph Mingrone basic_os=nonstopux 47339e421e8SCy Schubert ;; 47439e421e8SCy Schubert os400) 47539e421e8SCy Schubert basic_machine=powerpc-ibm 476ee67461eSJoseph Mingrone basic_os=os400 47739e421e8SCy Schubert ;; 47839e421e8SCy Schubert OSE68000 | ose68000) 47939e421e8SCy Schubert basic_machine=m68000-ericsson 480ee67461eSJoseph Mingrone basic_os=ose 48139e421e8SCy Schubert ;; 48239e421e8SCy Schubert os68k) 48339e421e8SCy Schubert basic_machine=m68k-none 484ee67461eSJoseph Mingrone basic_os=os68k 48539e421e8SCy Schubert ;; 48639e421e8SCy Schubert paragon) 48739e421e8SCy Schubert basic_machine=i860-intel 488ee67461eSJoseph Mingrone basic_os=osf 48939e421e8SCy Schubert ;; 49039e421e8SCy Schubert parisc) 49139e421e8SCy Schubert basic_machine=hppa-unknown 492ee67461eSJoseph Mingrone basic_os=linux 493ee67461eSJoseph Mingrone ;; 494ee67461eSJoseph Mingrone psp) 495ee67461eSJoseph Mingrone basic_machine=mipsallegrexel-sony 496ee67461eSJoseph Mingrone basic_os=psp 49739e421e8SCy Schubert ;; 49839e421e8SCy Schubert pw32) 49939e421e8SCy Schubert basic_machine=i586-unknown 500ee67461eSJoseph Mingrone basic_os=pw32 50139e421e8SCy Schubert ;; 50239e421e8SCy Schubert rdos | rdos64) 50339e421e8SCy Schubert basic_machine=x86_64-pc 504ee67461eSJoseph Mingrone basic_os=rdos 50539e421e8SCy Schubert ;; 50639e421e8SCy Schubert rdos32) 50739e421e8SCy Schubert basic_machine=i386-pc 508ee67461eSJoseph Mingrone basic_os=rdos 50939e421e8SCy Schubert ;; 51039e421e8SCy Schubert rom68k) 51139e421e8SCy Schubert basic_machine=m68k-rom68k 512ee67461eSJoseph Mingrone basic_os=coff 51339e421e8SCy Schubert ;; 51439e421e8SCy Schubert sa29200) 51539e421e8SCy Schubert basic_machine=a29k-amd 516ee67461eSJoseph Mingrone basic_os=udi 51739e421e8SCy Schubert ;; 51839e421e8SCy Schubert sei) 51939e421e8SCy Schubert basic_machine=mips-sei 520ee67461eSJoseph Mingrone basic_os=seiux 521ee67461eSJoseph Mingrone ;; 522ee67461eSJoseph Mingrone sequent) 523ee67461eSJoseph Mingrone basic_machine=i386-sequent 524ee67461eSJoseph Mingrone basic_os= 52539e421e8SCy Schubert ;; 52639e421e8SCy Schubert sps7) 52739e421e8SCy Schubert basic_machine=m68k-bull 528ee67461eSJoseph Mingrone basic_os=sysv2 529ee67461eSJoseph Mingrone ;; 530ee67461eSJoseph Mingrone st2000) 531ee67461eSJoseph Mingrone basic_machine=m68k-tandem 532ee67461eSJoseph Mingrone basic_os= 53339e421e8SCy Schubert ;; 53439e421e8SCy Schubert stratus) 53539e421e8SCy Schubert basic_machine=i860-stratus 536ee67461eSJoseph Mingrone basic_os=sysv4 537ee67461eSJoseph Mingrone ;; 538ee67461eSJoseph Mingrone sun2) 539ee67461eSJoseph Mingrone basic_machine=m68000-sun 540ee67461eSJoseph Mingrone basic_os= 54139e421e8SCy Schubert ;; 54239e421e8SCy Schubert sun2os3) 54339e421e8SCy Schubert basic_machine=m68000-sun 544ee67461eSJoseph Mingrone basic_os=sunos3 54539e421e8SCy Schubert ;; 54639e421e8SCy Schubert sun2os4) 54739e421e8SCy Schubert basic_machine=m68000-sun 548ee67461eSJoseph Mingrone basic_os=sunos4 549ee67461eSJoseph Mingrone ;; 550ee67461eSJoseph Mingrone sun3) 551ee67461eSJoseph Mingrone basic_machine=m68k-sun 552ee67461eSJoseph Mingrone basic_os= 55339e421e8SCy Schubert ;; 55439e421e8SCy Schubert sun3os3) 55539e421e8SCy Schubert basic_machine=m68k-sun 556ee67461eSJoseph Mingrone basic_os=sunos3 55739e421e8SCy Schubert ;; 55839e421e8SCy Schubert sun3os4) 55939e421e8SCy Schubert basic_machine=m68k-sun 560ee67461eSJoseph Mingrone basic_os=sunos4 561ee67461eSJoseph Mingrone ;; 562ee67461eSJoseph Mingrone sun4) 563ee67461eSJoseph Mingrone basic_machine=sparc-sun 564ee67461eSJoseph Mingrone basic_os= 56539e421e8SCy Schubert ;; 56639e421e8SCy Schubert sun4os3) 56739e421e8SCy Schubert basic_machine=sparc-sun 568ee67461eSJoseph Mingrone basic_os=sunos3 56939e421e8SCy Schubert ;; 57039e421e8SCy Schubert sun4os4) 57139e421e8SCy Schubert basic_machine=sparc-sun 572ee67461eSJoseph Mingrone basic_os=sunos4 57339e421e8SCy Schubert ;; 57439e421e8SCy Schubert sun4sol2) 57539e421e8SCy Schubert basic_machine=sparc-sun 576ee67461eSJoseph Mingrone basic_os=solaris2 577ee67461eSJoseph Mingrone ;; 578ee67461eSJoseph Mingrone sun386 | sun386i | roadrunner) 579ee67461eSJoseph Mingrone basic_machine=i386-sun 580ee67461eSJoseph Mingrone basic_os= 58139e421e8SCy Schubert ;; 58239e421e8SCy Schubert sv1) 58339e421e8SCy Schubert basic_machine=sv1-cray 584ee67461eSJoseph Mingrone basic_os=unicos 58539e421e8SCy Schubert ;; 58639e421e8SCy Schubert symmetry) 58739e421e8SCy Schubert basic_machine=i386-sequent 588ee67461eSJoseph Mingrone basic_os=dynix 58939e421e8SCy Schubert ;; 59039e421e8SCy Schubert t3e) 59139e421e8SCy Schubert basic_machine=alphaev5-cray 592ee67461eSJoseph Mingrone basic_os=unicos 59339e421e8SCy Schubert ;; 59439e421e8SCy Schubert t90) 59539e421e8SCy Schubert basic_machine=t90-cray 596ee67461eSJoseph Mingrone basic_os=unicos 59739e421e8SCy Schubert ;; 59839e421e8SCy Schubert toad1) 59939e421e8SCy Schubert basic_machine=pdp10-xkl 600ee67461eSJoseph Mingrone basic_os=tops20 60139e421e8SCy Schubert ;; 60239e421e8SCy Schubert tpf) 60339e421e8SCy Schubert basic_machine=s390x-ibm 604ee67461eSJoseph Mingrone basic_os=tpf 60539e421e8SCy Schubert ;; 60639e421e8SCy Schubert udi29k) 60739e421e8SCy Schubert basic_machine=a29k-amd 608ee67461eSJoseph Mingrone basic_os=udi 60939e421e8SCy Schubert ;; 61039e421e8SCy Schubert ultra3) 61139e421e8SCy Schubert basic_machine=a29k-nyu 612ee67461eSJoseph Mingrone basic_os=sym1 61339e421e8SCy Schubert ;; 61439e421e8SCy Schubert v810 | necv810) 61539e421e8SCy Schubert basic_machine=v810-nec 616ee67461eSJoseph Mingrone basic_os=none 61739e421e8SCy Schubert ;; 61839e421e8SCy Schubert vaxv) 61939e421e8SCy Schubert basic_machine=vax-dec 620ee67461eSJoseph Mingrone basic_os=sysv 62139e421e8SCy Schubert ;; 62239e421e8SCy Schubert vms) 62339e421e8SCy Schubert basic_machine=vax-dec 624ee67461eSJoseph Mingrone basic_os=vms 625ee67461eSJoseph Mingrone ;; 626ee67461eSJoseph Mingrone vsta) 627ee67461eSJoseph Mingrone basic_machine=i386-pc 628ee67461eSJoseph Mingrone basic_os=vsta 62939e421e8SCy Schubert ;; 63039e421e8SCy Schubert vxworks960) 63139e421e8SCy Schubert basic_machine=i960-wrs 632ee67461eSJoseph Mingrone basic_os=vxworks 63339e421e8SCy Schubert ;; 63439e421e8SCy Schubert vxworks68) 63539e421e8SCy Schubert basic_machine=m68k-wrs 636ee67461eSJoseph Mingrone basic_os=vxworks 63739e421e8SCy Schubert ;; 63839e421e8SCy Schubert vxworks29k) 63939e421e8SCy Schubert basic_machine=a29k-wrs 640ee67461eSJoseph Mingrone basic_os=vxworks 64139e421e8SCy Schubert ;; 64239e421e8SCy Schubert xbox) 64339e421e8SCy Schubert basic_machine=i686-pc 644ee67461eSJoseph Mingrone basic_os=mingw32 64539e421e8SCy Schubert ;; 64639e421e8SCy Schubert ymp) 64739e421e8SCy Schubert basic_machine=ymp-cray 648ee67461eSJoseph Mingrone basic_os=unicos 64939e421e8SCy Schubert ;; 65039e421e8SCy Schubert *) 6514edb46e9SPaul Traina basic_machine=$1 652ee67461eSJoseph Mingrone basic_os= 653685295f4SBill Fenner ;; 65439e421e8SCy Schubert esac 655685295f4SBill Fenner ;; 6564edb46e9SPaul Trainaesac 6574edb46e9SPaul Traina 658ee67461eSJoseph Mingrone# Decode 1-component or ad-hoc basic machines 6594edb46e9SPaul Trainacase $basic_machine in 660ee67461eSJoseph Mingrone # Here we handle the default manufacturer of certain CPU types. It is in 661ee67461eSJoseph Mingrone # some cases the only manufacturer, in others, it is the most popular. 662ee67461eSJoseph Mingrone w89k) 663ee67461eSJoseph Mingrone cpu=hppa1.1 664ee67461eSJoseph Mingrone vendor=winbond 665ee67461eSJoseph Mingrone ;; 666ee67461eSJoseph Mingrone op50n) 667ee67461eSJoseph Mingrone cpu=hppa1.1 668ee67461eSJoseph Mingrone vendor=oki 669ee67461eSJoseph Mingrone ;; 670ee67461eSJoseph Mingrone op60c) 671ee67461eSJoseph Mingrone cpu=hppa1.1 672ee67461eSJoseph Mingrone vendor=oki 673ee67461eSJoseph Mingrone ;; 674ee67461eSJoseph Mingrone ibm*) 675ee67461eSJoseph Mingrone cpu=i370 676ee67461eSJoseph Mingrone vendor=ibm 677ee67461eSJoseph Mingrone ;; 678ee67461eSJoseph Mingrone orion105) 679ee67461eSJoseph Mingrone cpu=clipper 680ee67461eSJoseph Mingrone vendor=highlevel 681ee67461eSJoseph Mingrone ;; 682ee67461eSJoseph Mingrone mac | mpw | mac-mpw) 683ee67461eSJoseph Mingrone cpu=m68k 684ee67461eSJoseph Mingrone vendor=apple 685ee67461eSJoseph Mingrone ;; 686ee67461eSJoseph Mingrone pmac | pmac-mpw) 687ee67461eSJoseph Mingrone cpu=powerpc 688ee67461eSJoseph Mingrone vendor=apple 689ee67461eSJoseph Mingrone ;; 690ee67461eSJoseph Mingrone 691ee67461eSJoseph Mingrone # Recognize the various machine names and aliases which stand 692ee67461eSJoseph Mingrone # for a CPU type and a company and sometimes even an OS. 693ee67461eSJoseph Mingrone 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694ee67461eSJoseph Mingrone cpu=m68000 695ee67461eSJoseph Mingrone vendor=att 696ee67461eSJoseph Mingrone ;; 697ee67461eSJoseph Mingrone 3b*) 698ee67461eSJoseph Mingrone cpu=we32k 699ee67461eSJoseph Mingrone vendor=att 700ee67461eSJoseph Mingrone ;; 701ee67461eSJoseph Mingrone bluegene*) 702ee67461eSJoseph Mingrone cpu=powerpc 703ee67461eSJoseph Mingrone vendor=ibm 704ee67461eSJoseph Mingrone basic_os=cnk 705ee67461eSJoseph Mingrone ;; 706ee67461eSJoseph Mingrone decsystem10* | dec10*) 707ee67461eSJoseph Mingrone cpu=pdp10 708ee67461eSJoseph Mingrone vendor=dec 709ee67461eSJoseph Mingrone basic_os=tops10 710ee67461eSJoseph Mingrone ;; 711ee67461eSJoseph Mingrone decsystem20* | dec20*) 712ee67461eSJoseph Mingrone cpu=pdp10 713ee67461eSJoseph Mingrone vendor=dec 714ee67461eSJoseph Mingrone basic_os=tops20 715ee67461eSJoseph Mingrone ;; 716ee67461eSJoseph Mingrone delta | 3300 | motorola-3300 | motorola-delta \ 717ee67461eSJoseph Mingrone | 3300-motorola | delta-motorola) 718ee67461eSJoseph Mingrone cpu=m68k 719ee67461eSJoseph Mingrone vendor=motorola 720ee67461eSJoseph Mingrone ;; 721ee67461eSJoseph Mingrone dpx2*) 722ee67461eSJoseph Mingrone cpu=m68k 723ee67461eSJoseph Mingrone vendor=bull 724ee67461eSJoseph Mingrone basic_os=sysv3 725ee67461eSJoseph Mingrone ;; 726ee67461eSJoseph Mingrone encore | umax | mmax) 727ee67461eSJoseph Mingrone cpu=ns32k 728ee67461eSJoseph Mingrone vendor=encore 729ee67461eSJoseph Mingrone ;; 730ee67461eSJoseph Mingrone elxsi) 731ee67461eSJoseph Mingrone cpu=elxsi 732ee67461eSJoseph Mingrone vendor=elxsi 733ee67461eSJoseph Mingrone basic_os=${basic_os:-bsd} 734ee67461eSJoseph Mingrone ;; 735ee67461eSJoseph Mingrone fx2800) 736ee67461eSJoseph Mingrone cpu=i860 737ee67461eSJoseph Mingrone vendor=alliant 738ee67461eSJoseph Mingrone ;; 739ee67461eSJoseph Mingrone genix) 740ee67461eSJoseph Mingrone cpu=ns32k 741ee67461eSJoseph Mingrone vendor=ns 742ee67461eSJoseph Mingrone ;; 743ee67461eSJoseph Mingrone h3050r* | hiux*) 744ee67461eSJoseph Mingrone cpu=hppa1.1 745ee67461eSJoseph Mingrone vendor=hitachi 746ee67461eSJoseph Mingrone basic_os=hiuxwe2 747ee67461eSJoseph Mingrone ;; 748ee67461eSJoseph Mingrone hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749ee67461eSJoseph Mingrone cpu=hppa1.0 750ee67461eSJoseph Mingrone vendor=hp 751ee67461eSJoseph Mingrone ;; 752ee67461eSJoseph Mingrone hp9k2[0-9][0-9] | hp9k31[0-9]) 753ee67461eSJoseph Mingrone cpu=m68000 754ee67461eSJoseph Mingrone vendor=hp 755ee67461eSJoseph Mingrone ;; 756ee67461eSJoseph Mingrone hp9k3[2-9][0-9]) 757ee67461eSJoseph Mingrone cpu=m68k 758ee67461eSJoseph Mingrone vendor=hp 759ee67461eSJoseph Mingrone ;; 760ee67461eSJoseph Mingrone hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761ee67461eSJoseph Mingrone cpu=hppa1.0 762ee67461eSJoseph Mingrone vendor=hp 763ee67461eSJoseph Mingrone ;; 764ee67461eSJoseph Mingrone hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765ee67461eSJoseph Mingrone cpu=hppa1.1 766ee67461eSJoseph Mingrone vendor=hp 767ee67461eSJoseph Mingrone ;; 768ee67461eSJoseph Mingrone hp9k78[0-9] | hp78[0-9]) 769ee67461eSJoseph Mingrone # FIXME: really hppa2.0-hp 770ee67461eSJoseph Mingrone cpu=hppa1.1 771ee67461eSJoseph Mingrone vendor=hp 772ee67461eSJoseph Mingrone ;; 773ee67461eSJoseph Mingrone hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774ee67461eSJoseph Mingrone # FIXME: really hppa2.0-hp 775ee67461eSJoseph Mingrone cpu=hppa1.1 776ee67461eSJoseph Mingrone vendor=hp 777ee67461eSJoseph Mingrone ;; 778ee67461eSJoseph Mingrone hp9k8[0-9][13679] | hp8[0-9][13679]) 779ee67461eSJoseph Mingrone cpu=hppa1.1 780ee67461eSJoseph Mingrone vendor=hp 781ee67461eSJoseph Mingrone ;; 782ee67461eSJoseph Mingrone hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783ee67461eSJoseph Mingrone cpu=hppa1.0 784ee67461eSJoseph Mingrone vendor=hp 785ee67461eSJoseph Mingrone ;; 786ee67461eSJoseph Mingrone i*86v32) 787ee67461eSJoseph Mingrone cpu=`echo "$1" | sed -e 's/86.*/86/'` 788ee67461eSJoseph Mingrone vendor=pc 789ee67461eSJoseph Mingrone basic_os=sysv32 790ee67461eSJoseph Mingrone ;; 791ee67461eSJoseph Mingrone i*86v4*) 792ee67461eSJoseph Mingrone cpu=`echo "$1" | sed -e 's/86.*/86/'` 793ee67461eSJoseph Mingrone vendor=pc 794ee67461eSJoseph Mingrone basic_os=sysv4 795ee67461eSJoseph Mingrone ;; 796ee67461eSJoseph Mingrone i*86v) 797ee67461eSJoseph Mingrone cpu=`echo "$1" | sed -e 's/86.*/86/'` 798ee67461eSJoseph Mingrone vendor=pc 799ee67461eSJoseph Mingrone basic_os=sysv 800ee67461eSJoseph Mingrone ;; 801ee67461eSJoseph Mingrone i*86sol2) 802ee67461eSJoseph Mingrone cpu=`echo "$1" | sed -e 's/86.*/86/'` 803ee67461eSJoseph Mingrone vendor=pc 804ee67461eSJoseph Mingrone basic_os=solaris2 805ee67461eSJoseph Mingrone ;; 806ee67461eSJoseph Mingrone j90 | j90-cray) 807ee67461eSJoseph Mingrone cpu=j90 808ee67461eSJoseph Mingrone vendor=cray 809ee67461eSJoseph Mingrone basic_os=${basic_os:-unicos} 810ee67461eSJoseph Mingrone ;; 811ee67461eSJoseph Mingrone iris | iris4d) 812ee67461eSJoseph Mingrone cpu=mips 813ee67461eSJoseph Mingrone vendor=sgi 814ee67461eSJoseph Mingrone case $basic_os in 815ee67461eSJoseph Mingrone irix*) 816ee67461eSJoseph Mingrone ;; 817ee67461eSJoseph Mingrone *) 818ee67461eSJoseph Mingrone basic_os=irix4 819ee67461eSJoseph Mingrone ;; 820ee67461eSJoseph Mingrone esac 821ee67461eSJoseph Mingrone ;; 822ee67461eSJoseph Mingrone miniframe) 823ee67461eSJoseph Mingrone cpu=m68000 824ee67461eSJoseph Mingrone vendor=convergent 825ee67461eSJoseph Mingrone ;; 826ee67461eSJoseph Mingrone *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827ee67461eSJoseph Mingrone cpu=m68k 828ee67461eSJoseph Mingrone vendor=atari 829ee67461eSJoseph Mingrone basic_os=mint 830ee67461eSJoseph Mingrone ;; 831ee67461eSJoseph Mingrone news-3600 | risc-news) 832ee67461eSJoseph Mingrone cpu=mips 833ee67461eSJoseph Mingrone vendor=sony 834ee67461eSJoseph Mingrone basic_os=newsos 835ee67461eSJoseph Mingrone ;; 836ee67461eSJoseph Mingrone next | m*-next) 837ee67461eSJoseph Mingrone cpu=m68k 838ee67461eSJoseph Mingrone vendor=next 839ee67461eSJoseph Mingrone case $basic_os in 840ee67461eSJoseph Mingrone openstep*) 841ee67461eSJoseph Mingrone ;; 842ee67461eSJoseph Mingrone nextstep*) 843ee67461eSJoseph Mingrone ;; 844ee67461eSJoseph Mingrone ns2*) 845ee67461eSJoseph Mingrone basic_os=nextstep2 846ee67461eSJoseph Mingrone ;; 847ee67461eSJoseph Mingrone *) 848ee67461eSJoseph Mingrone basic_os=nextstep3 849ee67461eSJoseph Mingrone ;; 850ee67461eSJoseph Mingrone esac 851ee67461eSJoseph Mingrone ;; 852ee67461eSJoseph Mingrone np1) 853ee67461eSJoseph Mingrone cpu=np1 854ee67461eSJoseph Mingrone vendor=gould 855ee67461eSJoseph Mingrone ;; 856ee67461eSJoseph Mingrone op50n-* | op60c-*) 857ee67461eSJoseph Mingrone cpu=hppa1.1 858ee67461eSJoseph Mingrone vendor=oki 859ee67461eSJoseph Mingrone basic_os=proelf 860ee67461eSJoseph Mingrone ;; 861ee67461eSJoseph Mingrone pa-hitachi) 862ee67461eSJoseph Mingrone cpu=hppa1.1 863ee67461eSJoseph Mingrone vendor=hitachi 864ee67461eSJoseph Mingrone basic_os=hiuxwe2 865ee67461eSJoseph Mingrone ;; 866ee67461eSJoseph Mingrone pbd) 867ee67461eSJoseph Mingrone cpu=sparc 868ee67461eSJoseph Mingrone vendor=tti 869ee67461eSJoseph Mingrone ;; 870ee67461eSJoseph Mingrone pbb) 871ee67461eSJoseph Mingrone cpu=m68k 872ee67461eSJoseph Mingrone vendor=tti 873ee67461eSJoseph Mingrone ;; 874ee67461eSJoseph Mingrone pc532) 875ee67461eSJoseph Mingrone cpu=ns32k 876ee67461eSJoseph Mingrone vendor=pc532 877ee67461eSJoseph Mingrone ;; 878ee67461eSJoseph Mingrone pn) 879ee67461eSJoseph Mingrone cpu=pn 880ee67461eSJoseph Mingrone vendor=gould 881ee67461eSJoseph Mingrone ;; 882ee67461eSJoseph Mingrone power) 883ee67461eSJoseph Mingrone cpu=power 884ee67461eSJoseph Mingrone vendor=ibm 885ee67461eSJoseph Mingrone ;; 886ee67461eSJoseph Mingrone ps2) 887ee67461eSJoseph Mingrone cpu=i386 888ee67461eSJoseph Mingrone vendor=ibm 889ee67461eSJoseph Mingrone ;; 890ee67461eSJoseph Mingrone rm[46]00) 891ee67461eSJoseph Mingrone cpu=mips 892ee67461eSJoseph Mingrone vendor=siemens 893ee67461eSJoseph Mingrone ;; 894ee67461eSJoseph Mingrone rtpc | rtpc-*) 895ee67461eSJoseph Mingrone cpu=romp 896ee67461eSJoseph Mingrone vendor=ibm 897ee67461eSJoseph Mingrone ;; 898ee67461eSJoseph Mingrone sde) 899ee67461eSJoseph Mingrone cpu=mipsisa32 900ee67461eSJoseph Mingrone vendor=sde 901ee67461eSJoseph Mingrone basic_os=${basic_os:-elf} 902ee67461eSJoseph Mingrone ;; 903ee67461eSJoseph Mingrone simso-wrs) 904ee67461eSJoseph Mingrone cpu=sparclite 905ee67461eSJoseph Mingrone vendor=wrs 906ee67461eSJoseph Mingrone basic_os=vxworks 907ee67461eSJoseph Mingrone ;; 908ee67461eSJoseph Mingrone tower | tower-32) 909ee67461eSJoseph Mingrone cpu=m68k 910ee67461eSJoseph Mingrone vendor=ncr 911ee67461eSJoseph Mingrone ;; 912ee67461eSJoseph Mingrone vpp*|vx|vx-*) 913ee67461eSJoseph Mingrone cpu=f301 914ee67461eSJoseph Mingrone vendor=fujitsu 915ee67461eSJoseph Mingrone ;; 916ee67461eSJoseph Mingrone w65) 917ee67461eSJoseph Mingrone cpu=w65 918ee67461eSJoseph Mingrone vendor=wdc 919ee67461eSJoseph Mingrone ;; 920ee67461eSJoseph Mingrone w89k-*) 921ee67461eSJoseph Mingrone cpu=hppa1.1 922ee67461eSJoseph Mingrone vendor=winbond 923ee67461eSJoseph Mingrone basic_os=proelf 924ee67461eSJoseph Mingrone ;; 925ee67461eSJoseph Mingrone none) 926ee67461eSJoseph Mingrone cpu=none 927ee67461eSJoseph Mingrone vendor=none 928ee67461eSJoseph Mingrone ;; 929ee67461eSJoseph Mingrone leon|leon[3-9]) 930ee67461eSJoseph Mingrone cpu=sparc 931ee67461eSJoseph Mingrone vendor=$basic_machine 932ee67461eSJoseph Mingrone ;; 933ee67461eSJoseph Mingrone leon-*|leon[3-9]-*) 934ee67461eSJoseph Mingrone cpu=sparc 935ee67461eSJoseph Mingrone vendor=`echo "$basic_machine" | sed 's/-.*//'` 936ee67461eSJoseph Mingrone ;; 937ee67461eSJoseph Mingrone 938ee67461eSJoseph Mingrone *-*) 939ee67461eSJoseph Mingrone # shellcheck disable=SC2162 940ee67461eSJoseph Mingrone saved_IFS=$IFS 941ee67461eSJoseph Mingrone IFS="-" read cpu vendor <<EOF 942ee67461eSJoseph Mingrone$basic_machine 943ee67461eSJoseph MingroneEOF 944ee67461eSJoseph Mingrone IFS=$saved_IFS 945ee67461eSJoseph Mingrone ;; 946ee67461eSJoseph Mingrone # We use `pc' rather than `unknown' 947ee67461eSJoseph Mingrone # because (1) that's what they normally are, and 948ee67461eSJoseph Mingrone # (2) the word "unknown" tends to confuse beginning users. 949ee67461eSJoseph Mingrone i*86 | x86_64) 950ee67461eSJoseph Mingrone cpu=$basic_machine 951ee67461eSJoseph Mingrone vendor=pc 952ee67461eSJoseph Mingrone ;; 953ee67461eSJoseph Mingrone # These rules are duplicated from below for sake of the special case above; 954ee67461eSJoseph Mingrone # i.e. things that normalized to x86 arches should also default to "pc" 955ee67461eSJoseph Mingrone pc98) 956ee67461eSJoseph Mingrone cpu=i386 957ee67461eSJoseph Mingrone vendor=pc 958ee67461eSJoseph Mingrone ;; 959ee67461eSJoseph Mingrone x64 | amd64) 960ee67461eSJoseph Mingrone cpu=x86_64 961ee67461eSJoseph Mingrone vendor=pc 962ee67461eSJoseph Mingrone ;; 9634edb46e9SPaul Traina # Recognize the basic CPU types without company name. 964ee67461eSJoseph Mingrone *) 965ee67461eSJoseph Mingrone cpu=$basic_machine 966ee67461eSJoseph Mingrone vendor=unknown 967ee67461eSJoseph Mingrone ;; 968ee67461eSJoseph Mingroneesac 969ee67461eSJoseph Mingrone 970ee67461eSJoseph Mingroneunset -v basic_machine 971ee67461eSJoseph Mingrone 972ee67461eSJoseph Mingrone# Decode basic machines in the full and proper CPU-Company form. 973ee67461eSJoseph Mingronecase $cpu-$vendor in 974ee67461eSJoseph Mingrone # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975ee67461eSJoseph Mingrone # some cases the only manufacturer, in others, it is the most popular. 976ee67461eSJoseph Mingrone craynv-unknown) 977ee67461eSJoseph Mingrone vendor=cray 978ee67461eSJoseph Mingrone basic_os=${basic_os:-unicosmp} 979ee67461eSJoseph Mingrone ;; 980ee67461eSJoseph Mingrone c90-unknown | c90-cray) 981ee67461eSJoseph Mingrone vendor=cray 982ee67461eSJoseph Mingrone basic_os=${Basic_os:-unicos} 983ee67461eSJoseph Mingrone ;; 984ee67461eSJoseph Mingrone fx80-unknown) 985ee67461eSJoseph Mingrone vendor=alliant 986ee67461eSJoseph Mingrone ;; 987ee67461eSJoseph Mingrone romp-unknown) 988ee67461eSJoseph Mingrone vendor=ibm 989ee67461eSJoseph Mingrone ;; 990ee67461eSJoseph Mingrone mmix-unknown) 991ee67461eSJoseph Mingrone vendor=knuth 992ee67461eSJoseph Mingrone ;; 993ee67461eSJoseph Mingrone microblaze-unknown | microblazeel-unknown) 994ee67461eSJoseph Mingrone vendor=xilinx 995ee67461eSJoseph Mingrone ;; 996ee67461eSJoseph Mingrone rs6000-unknown) 997ee67461eSJoseph Mingrone vendor=ibm 998ee67461eSJoseph Mingrone ;; 999ee67461eSJoseph Mingrone vax-unknown) 1000ee67461eSJoseph Mingrone vendor=dec 1001ee67461eSJoseph Mingrone ;; 1002ee67461eSJoseph Mingrone pdp11-unknown) 1003ee67461eSJoseph Mingrone vendor=dec 1004ee67461eSJoseph Mingrone ;; 1005ee67461eSJoseph Mingrone we32k-unknown) 1006ee67461eSJoseph Mingrone vendor=att 1007ee67461eSJoseph Mingrone ;; 1008ee67461eSJoseph Mingrone cydra-unknown) 1009ee67461eSJoseph Mingrone vendor=cydrome 1010ee67461eSJoseph Mingrone ;; 1011ee67461eSJoseph Mingrone i370-ibm*) 1012ee67461eSJoseph Mingrone vendor=ibm 1013ee67461eSJoseph Mingrone ;; 1014ee67461eSJoseph Mingrone orion-unknown) 1015ee67461eSJoseph Mingrone vendor=highlevel 1016ee67461eSJoseph Mingrone ;; 1017ee67461eSJoseph Mingrone xps-unknown | xps100-unknown) 1018ee67461eSJoseph Mingrone cpu=xps100 1019ee67461eSJoseph Mingrone vendor=honeywell 1020ee67461eSJoseph Mingrone ;; 1021ee67461eSJoseph Mingrone 1022ee67461eSJoseph Mingrone # Here we normalize CPU types with a missing or matching vendor 1023ee67461eSJoseph Mingrone armh-unknown | armh-alt) 1024ee67461eSJoseph Mingrone cpu=armv7l 1025ee67461eSJoseph Mingrone vendor=alt 1026ee67461eSJoseph Mingrone basic_os=${basic_os:-linux-gnueabihf} 1027ee67461eSJoseph Mingrone ;; 1028ee67461eSJoseph Mingrone dpx20-unknown | dpx20-bull) 1029ee67461eSJoseph Mingrone cpu=rs6000 1030ee67461eSJoseph Mingrone vendor=bull 1031ee67461eSJoseph Mingrone basic_os=${basic_os:-bosx} 1032ee67461eSJoseph Mingrone ;; 1033ee67461eSJoseph Mingrone 1034ee67461eSJoseph Mingrone # Here we normalize CPU types irrespective of the vendor 1035ee67461eSJoseph Mingrone amd64-*) 1036ee67461eSJoseph Mingrone cpu=x86_64 1037ee67461eSJoseph Mingrone ;; 1038ee67461eSJoseph Mingrone blackfin-*) 1039ee67461eSJoseph Mingrone cpu=bfin 1040ee67461eSJoseph Mingrone basic_os=linux 1041ee67461eSJoseph Mingrone ;; 1042ee67461eSJoseph Mingrone c54x-*) 1043ee67461eSJoseph Mingrone cpu=tic54x 1044ee67461eSJoseph Mingrone ;; 1045ee67461eSJoseph Mingrone c55x-*) 1046ee67461eSJoseph Mingrone cpu=tic55x 1047ee67461eSJoseph Mingrone ;; 1048ee67461eSJoseph Mingrone c6x-*) 1049ee67461eSJoseph Mingrone cpu=tic6x 1050ee67461eSJoseph Mingrone ;; 1051ee67461eSJoseph Mingrone e500v[12]-*) 1052ee67461eSJoseph Mingrone cpu=powerpc 1053ee67461eSJoseph Mingrone basic_os=${basic_os}"spe" 1054ee67461eSJoseph Mingrone ;; 1055ee67461eSJoseph Mingrone mips3*-*) 1056ee67461eSJoseph Mingrone cpu=mips64 1057ee67461eSJoseph Mingrone ;; 1058ee67461eSJoseph Mingrone ms1-*) 1059ee67461eSJoseph Mingrone cpu=mt 1060ee67461eSJoseph Mingrone ;; 1061ee67461eSJoseph Mingrone m68knommu-*) 1062ee67461eSJoseph Mingrone cpu=m68k 1063ee67461eSJoseph Mingrone basic_os=linux 1064ee67461eSJoseph Mingrone ;; 1065ee67461eSJoseph Mingrone m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1066ee67461eSJoseph Mingrone cpu=s12z 1067ee67461eSJoseph Mingrone ;; 1068ee67461eSJoseph Mingrone openrisc-*) 1069ee67461eSJoseph Mingrone cpu=or32 1070ee67461eSJoseph Mingrone ;; 1071ee67461eSJoseph Mingrone parisc-*) 1072ee67461eSJoseph Mingrone cpu=hppa 1073ee67461eSJoseph Mingrone basic_os=linux 1074ee67461eSJoseph Mingrone ;; 1075ee67461eSJoseph Mingrone pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1076ee67461eSJoseph Mingrone cpu=i586 1077ee67461eSJoseph Mingrone ;; 1078ee67461eSJoseph Mingrone pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1079ee67461eSJoseph Mingrone cpu=i686 1080ee67461eSJoseph Mingrone ;; 1081ee67461eSJoseph Mingrone pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1082ee67461eSJoseph Mingrone cpu=i686 1083ee67461eSJoseph Mingrone ;; 1084ee67461eSJoseph Mingrone pentium4-*) 1085ee67461eSJoseph Mingrone cpu=i786 1086ee67461eSJoseph Mingrone ;; 1087ee67461eSJoseph Mingrone pc98-*) 1088ee67461eSJoseph Mingrone cpu=i386 1089ee67461eSJoseph Mingrone ;; 1090ee67461eSJoseph Mingrone ppc-* | ppcbe-*) 1091ee67461eSJoseph Mingrone cpu=powerpc 1092ee67461eSJoseph Mingrone ;; 1093ee67461eSJoseph Mingrone ppcle-* | powerpclittle-*) 1094ee67461eSJoseph Mingrone cpu=powerpcle 1095ee67461eSJoseph Mingrone ;; 1096ee67461eSJoseph Mingrone ppc64-*) 1097ee67461eSJoseph Mingrone cpu=powerpc64 1098ee67461eSJoseph Mingrone ;; 1099ee67461eSJoseph Mingrone ppc64le-* | powerpc64little-*) 1100ee67461eSJoseph Mingrone cpu=powerpc64le 1101ee67461eSJoseph Mingrone ;; 1102ee67461eSJoseph Mingrone sb1-*) 1103ee67461eSJoseph Mingrone cpu=mipsisa64sb1 1104ee67461eSJoseph Mingrone ;; 1105ee67461eSJoseph Mingrone sb1el-*) 1106ee67461eSJoseph Mingrone cpu=mipsisa64sb1el 1107ee67461eSJoseph Mingrone ;; 1108ee67461eSJoseph Mingrone sh5e[lb]-*) 1109ee67461eSJoseph Mingrone cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1110ee67461eSJoseph Mingrone ;; 1111ee67461eSJoseph Mingrone spur-*) 1112ee67461eSJoseph Mingrone cpu=spur 1113ee67461eSJoseph Mingrone ;; 1114ee67461eSJoseph Mingrone strongarm-* | thumb-*) 1115ee67461eSJoseph Mingrone cpu=arm 1116ee67461eSJoseph Mingrone ;; 1117ee67461eSJoseph Mingrone tx39-*) 1118ee67461eSJoseph Mingrone cpu=mipstx39 1119ee67461eSJoseph Mingrone ;; 1120ee67461eSJoseph Mingrone tx39el-*) 1121ee67461eSJoseph Mingrone cpu=mipstx39el 1122ee67461eSJoseph Mingrone ;; 1123ee67461eSJoseph Mingrone x64-*) 1124ee67461eSJoseph Mingrone cpu=x86_64 1125ee67461eSJoseph Mingrone ;; 1126ee67461eSJoseph Mingrone xscale-* | xscalee[bl]-*) 1127ee67461eSJoseph Mingrone cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1128ee67461eSJoseph Mingrone ;; 1129ee67461eSJoseph Mingrone arm64-* | aarch64le-*) 1130ee67461eSJoseph Mingrone cpu=aarch64 1131ee67461eSJoseph Mingrone ;; 1132ee67461eSJoseph Mingrone 1133ee67461eSJoseph Mingrone # Recognize the canonical CPU Types that limit and/or modify the 1134ee67461eSJoseph Mingrone # company names they are paired with. 1135ee67461eSJoseph Mingrone cr16-*) 1136ee67461eSJoseph Mingrone basic_os=${basic_os:-elf} 1137ee67461eSJoseph Mingrone ;; 1138ee67461eSJoseph Mingrone crisv32-* | etraxfs*-*) 1139ee67461eSJoseph Mingrone cpu=crisv32 1140ee67461eSJoseph Mingrone vendor=axis 1141ee67461eSJoseph Mingrone ;; 1142ee67461eSJoseph Mingrone cris-* | etrax*-*) 1143ee67461eSJoseph Mingrone cpu=cris 1144ee67461eSJoseph Mingrone vendor=axis 1145ee67461eSJoseph Mingrone ;; 1146ee67461eSJoseph Mingrone crx-*) 1147ee67461eSJoseph Mingrone basic_os=${basic_os:-elf} 1148ee67461eSJoseph Mingrone ;; 1149ee67461eSJoseph Mingrone neo-tandem) 1150ee67461eSJoseph Mingrone cpu=neo 1151ee67461eSJoseph Mingrone vendor=tandem 1152ee67461eSJoseph Mingrone ;; 1153ee67461eSJoseph Mingrone nse-tandem) 1154ee67461eSJoseph Mingrone cpu=nse 1155ee67461eSJoseph Mingrone vendor=tandem 1156ee67461eSJoseph Mingrone ;; 1157ee67461eSJoseph Mingrone nsr-tandem) 1158ee67461eSJoseph Mingrone cpu=nsr 1159ee67461eSJoseph Mingrone vendor=tandem 1160ee67461eSJoseph Mingrone ;; 1161ee67461eSJoseph Mingrone nsv-tandem) 1162ee67461eSJoseph Mingrone cpu=nsv 1163ee67461eSJoseph Mingrone vendor=tandem 1164ee67461eSJoseph Mingrone ;; 1165ee67461eSJoseph Mingrone nsx-tandem) 1166ee67461eSJoseph Mingrone cpu=nsx 1167ee67461eSJoseph Mingrone vendor=tandem 1168ee67461eSJoseph Mingrone ;; 1169ee67461eSJoseph Mingrone mipsallegrexel-sony) 1170ee67461eSJoseph Mingrone cpu=mipsallegrexel 1171ee67461eSJoseph Mingrone vendor=sony 1172ee67461eSJoseph Mingrone ;; 1173ee67461eSJoseph Mingrone tile*-*) 1174ee67461eSJoseph Mingrone basic_os=${basic_os:-linux-gnu} 1175ee67461eSJoseph Mingrone ;; 1176ee67461eSJoseph Mingrone 1177ee67461eSJoseph Mingrone *) 1178ee67461eSJoseph Mingrone # Recognize the canonical CPU types that are allowed with any 1179ee67461eSJoseph Mingrone # company name. 1180ee67461eSJoseph Mingrone case $cpu in 11815b0fe478SBruce M Simpson 1750a | 580 \ 11825b0fe478SBruce M Simpson | a29k \ 11833c602fabSXin LI | aarch64 | aarch64_be \ 1184ee67461eSJoseph Mingrone | abacus \ 1185ee67461eSJoseph Mingrone | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1186ee67461eSJoseph Mingrone | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1187ee67461eSJoseph Mingrone | alphapca5[67] | alpha64pca5[67] \ 11885b0fe478SBruce M Simpson | am33_2.0 \ 1189ee67461eSJoseph Mingrone | amdgcn \ 1190ee67461eSJoseph Mingrone | arc | arceb | arc32 | arc64 \ 1191ee67461eSJoseph Mingrone | arm | arm[lb]e | arme[lb] | armv* \ 11928bdc5a62SPatrick Kelsey | avr | avr32 \ 1193ee67461eSJoseph Mingrone | asmjs \ 119439e421e8SCy Schubert | ba \ 11953c602fabSXin LI | be32 | be64 \ 1196ee67461eSJoseph Mingrone | bfin | bpf | bs2000 \ 1197ee67461eSJoseph Mingrone | c[123]* | c30 | [cjt]90 | c4x \ 1198ee67461eSJoseph Mingrone | c8051 | clipper | craynv | csky | cydra \ 11995b0fe478SBruce M Simpson | d10v | d30v | dlx | dsp16xx \ 1200ee67461eSJoseph Mingrone | e2k | elxsi | epiphany \ 1201ee67461eSJoseph Mingrone | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1202ee67461eSJoseph Mingrone | h8300 | h8500 \ 1203ee67461eSJoseph Mingrone | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 12043c602fabSXin LI | hexagon \ 1205ee67461eSJoseph Mingrone | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12065b0fe478SBruce M Simpson | ip2k | iq2000 \ 12078bdc5a62SPatrick Kelsey | k1om \ 12083c602fabSXin LI | le32 | le64 \ 120927df3f5dSRui Paulo | lm32 \ 1210ee67461eSJoseph Mingrone | loongarch32 | loongarch64 \ 1211ee67461eSJoseph Mingrone | m32c | m32r | m32rle \ 1212ee67461eSJoseph Mingrone | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1213ee67461eSJoseph Mingrone | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1214ee67461eSJoseph Mingrone | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1215ee67461eSJoseph Mingrone | microblaze | microblazeel \ 12165b0fe478SBruce M Simpson | mips | mipsbe | mipseb | mipsel | mipsle \ 12175b0fe478SBruce M Simpson | mips16 \ 1218ee67461eSJoseph Mingrone | mips64 | mips64eb | mips64el \ 121927df3f5dSRui Paulo | mips64octeon | mips64octeonel \ 12205b0fe478SBruce M Simpson | mips64orion | mips64orionel \ 122127df3f5dSRui Paulo | mips64r5900 | mips64r5900el \ 122227df3f5dSRui Paulo | mips64vr | mips64vrel \ 12235b0fe478SBruce M Simpson | mips64vr4100 | mips64vr4100el \ 12245b0fe478SBruce M Simpson | mips64vr4300 | mips64vr4300el \ 12255b0fe478SBruce M Simpson | mips64vr5000 | mips64vr5000el \ 122627df3f5dSRui Paulo | mips64vr5900 | mips64vr5900el \ 12275b0fe478SBruce M Simpson | mipsisa32 | mipsisa32el \ 12285b0fe478SBruce M Simpson | mipsisa32r2 | mipsisa32r2el \ 1229ee67461eSJoseph Mingrone | mipsisa32r3 | mipsisa32r3el \ 1230ee67461eSJoseph Mingrone | mipsisa32r5 | mipsisa32r5el \ 12318bdc5a62SPatrick Kelsey | mipsisa32r6 | mipsisa32r6el \ 12325b0fe478SBruce M Simpson | mipsisa64 | mipsisa64el \ 12335b0fe478SBruce M Simpson | mipsisa64r2 | mipsisa64r2el \ 1234ee67461eSJoseph Mingrone | mipsisa64r3 | mipsisa64r3el \ 1235ee67461eSJoseph Mingrone | mipsisa64r5 | mipsisa64r5el \ 12368bdc5a62SPatrick Kelsey | mipsisa64r6 | mipsisa64r6el \ 12375b0fe478SBruce M Simpson | mipsisa64sb1 | mipsisa64sb1el \ 12385b0fe478SBruce M Simpson | mipsisa64sr71k | mipsisa64sr71kel \ 12398bdc5a62SPatrick Kelsey | mipsr5900 | mipsr5900el \ 12405b0fe478SBruce M Simpson | mipstx39 | mipstx39el \ 1241ee67461eSJoseph Mingrone | mmix \ 12425b0fe478SBruce M Simpson | mn10200 | mn10300 \ 124327df3f5dSRui Paulo | moxie \ 124427df3f5dSRui Paulo | mt \ 12455b0fe478SBruce M Simpson | msp430 \ 12463c602fabSXin LI | nds32 | nds32le | nds32be \ 124739e421e8SCy Schubert | nfp \ 12488bdc5a62SPatrick Kelsey | nios | nios2 | nios2eb | nios2el \ 1249ee67461eSJoseph Mingrone | none | np1 | ns16k | ns32k | nvptx \ 1250ee67461eSJoseph Mingrone | open8 \ 1251ee67461eSJoseph Mingrone | or1k* \ 1252ee67461eSJoseph Mingrone | or32 \ 1253ee67461eSJoseph Mingrone | orion \ 1254ee67461eSJoseph Mingrone | picochip \ 1255ee67461eSJoseph Mingrone | pdp10 | pdp11 | pj | pjl | pn | power \ 1256ee67461eSJoseph Mingrone | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125739e421e8SCy Schubert | pru \ 12585b0fe478SBruce M Simpson | pyramid \ 1259ee67461eSJoseph Mingrone | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1260ee67461eSJoseph Mingrone | rl78 | romp | rs6000 | rx \ 1261ee67461eSJoseph Mingrone | s390 | s390x \ 126227df3f5dSRui Paulo | score \ 1263ee67461eSJoseph Mingrone | sh | shl \ 1264ee67461eSJoseph Mingrone | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1265ee67461eSJoseph Mingrone | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1266ee67461eSJoseph Mingrone | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1267ee67461eSJoseph Mingrone | sparclite \ 1268ee67461eSJoseph Mingrone | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12693c602fabSXin LI | spu \ 1270ee67461eSJoseph Mingrone | tahoe \ 1271ee67461eSJoseph Mingrone | thumbv7* \ 1272ee67461eSJoseph Mingrone | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1273ee67461eSJoseph Mingrone | tron \ 127427df3f5dSRui Paulo | ubicom32 \ 1275ee67461eSJoseph Mingrone | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1276ee67461eSJoseph Mingrone | vax \ 12778bdc5a62SPatrick Kelsey | visium \ 1278ee67461eSJoseph Mingrone | w65 \ 1279ee67461eSJoseph Mingrone | wasm32 | wasm64 \ 1280ee67461eSJoseph Mingrone | we32k \ 1281ee67461eSJoseph Mingrone | x86 | x86_64 | xc16x | xgate | xps100 \ 1282ee67461eSJoseph Mingrone | xstormy16 | xtensa* \ 1283ee67461eSJoseph Mingrone | ymp \ 128427df3f5dSRui Paulo | z8k | z80) 12853c602fabSXin LI ;; 12863c602fabSXin LI 12874edb46e9SPaul Traina *) 1288ee67461eSJoseph Mingrone echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12894edb46e9SPaul Traina exit 1 12904edb46e9SPaul Traina ;; 12914edb46e9SPaul Traina esac 1292ee67461eSJoseph Mingrone ;; 1293ee67461eSJoseph Mingroneesac 12944edb46e9SPaul Traina 12954edb46e9SPaul Traina# Here we canonicalize certain aliases for manufacturers. 1296ee67461eSJoseph Mingronecase $vendor in 1297ee67461eSJoseph Mingrone digital*) 1298ee67461eSJoseph Mingrone vendor=dec 12994edb46e9SPaul Traina ;; 1300ee67461eSJoseph Mingrone commodore*) 1301ee67461eSJoseph Mingrone vendor=cbm 13024edb46e9SPaul Traina ;; 13034edb46e9SPaul Traina *) 13044edb46e9SPaul Traina ;; 13054edb46e9SPaul Trainaesac 13064edb46e9SPaul Traina 13074edb46e9SPaul Traina# Decode manufacturer-specific aliases for certain operating systems. 13084edb46e9SPaul Traina 1309ee67461eSJoseph Mingroneif test x$basic_os != x 13104edb46e9SPaul Trainathen 1311ee67461eSJoseph Mingrone 1312ee67461eSJoseph Mingrone# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1313ee67461eSJoseph Mingrone# set os. 1314ee67461eSJoseph Mingronecase $basic_os in 1315ee67461eSJoseph Mingrone gnu/linux*) 1316ee67461eSJoseph Mingrone kernel=linux 1317ee67461eSJoseph Mingrone os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1318ee67461eSJoseph Mingrone ;; 1319ee67461eSJoseph Mingrone os2-emx) 1320ee67461eSJoseph Mingrone kernel=os2 1321ee67461eSJoseph Mingrone os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1322ee67461eSJoseph Mingrone ;; 1323ee67461eSJoseph Mingrone nto-qnx*) 1324ee67461eSJoseph Mingrone kernel=nto 1325ee67461eSJoseph Mingrone os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1326ee67461eSJoseph Mingrone ;; 1327ee67461eSJoseph Mingrone *-*) 1328ee67461eSJoseph Mingrone # shellcheck disable=SC2162 1329ee67461eSJoseph Mingrone saved_IFS=$IFS 1330ee67461eSJoseph Mingrone IFS="-" read kernel os <<EOF 1331ee67461eSJoseph Mingrone$basic_os 1332ee67461eSJoseph MingroneEOF 1333ee67461eSJoseph Mingrone IFS=$saved_IFS 1334ee67461eSJoseph Mingrone ;; 1335ee67461eSJoseph Mingrone # Default OS when just kernel was specified 1336ee67461eSJoseph Mingrone nto*) 1337ee67461eSJoseph Mingrone kernel=nto 1338ee67461eSJoseph Mingrone os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1339ee67461eSJoseph Mingrone ;; 1340ee67461eSJoseph Mingrone linux*) 1341ee67461eSJoseph Mingrone kernel=linux 1342ee67461eSJoseph Mingrone os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1343ee67461eSJoseph Mingrone ;; 1344ee67461eSJoseph Mingrone managarm*) 1345ee67461eSJoseph Mingrone kernel=managarm 1346ee67461eSJoseph Mingrone os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1347ee67461eSJoseph Mingrone ;; 1348ee67461eSJoseph Mingrone *) 1349ee67461eSJoseph Mingrone kernel= 1350ee67461eSJoseph Mingrone os=$basic_os 1351ee67461eSJoseph Mingrone ;; 1352ee67461eSJoseph Mingroneesac 1353ee67461eSJoseph Mingrone 1354ee67461eSJoseph Mingrone# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1355ee67461eSJoseph Mingrone# etc.) 13564edb46e9SPaul Trainacase $os in 135739e421e8SCy Schubert # First match some system type aliases that might get confused 135839e421e8SCy Schubert # with valid system types. 135939e421e8SCy Schubert # solaris* is a basic system type, with this one exception. 136039e421e8SCy Schubert auroraux) 136139e421e8SCy Schubert os=auroraux 136227df3f5dSRui Paulo ;; 136339e421e8SCy Schubert bluegene*) 136439e421e8SCy Schubert os=cnk 136539e421e8SCy Schubert ;; 136639e421e8SCy Schubert solaris1 | solaris1.*) 1367ee67461eSJoseph Mingrone os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13684edb46e9SPaul Traina ;; 136939e421e8SCy Schubert solaris) 137039e421e8SCy Schubert os=solaris2 13714edb46e9SPaul Traina ;; 137239e421e8SCy Schubert unixware*) 137339e421e8SCy Schubert os=sysv4.2uw 13744edb46e9SPaul Traina ;; 137539e421e8SCy Schubert # es1800 is here to avoid being matched by es* (a different OS) 137639e421e8SCy Schubert es1800*) 137739e421e8SCy Schubert os=ose 137839e421e8SCy Schubert ;; 137939e421e8SCy Schubert # Some version numbers need modification 138039e421e8SCy Schubert chorusos*) 138139e421e8SCy Schubert os=chorusos 138239e421e8SCy Schubert ;; 138339e421e8SCy Schubert isc) 138439e421e8SCy Schubert os=isc2.2 138539e421e8SCy Schubert ;; 138639e421e8SCy Schubert sco6) 138739e421e8SCy Schubert os=sco5v6 138839e421e8SCy Schubert ;; 138939e421e8SCy Schubert sco5) 139039e421e8SCy Schubert os=sco3.2v5 139139e421e8SCy Schubert ;; 139239e421e8SCy Schubert sco4) 139339e421e8SCy Schubert os=sco3.2v4 139439e421e8SCy Schubert ;; 139539e421e8SCy Schubert sco3.2.[4-9]*) 1396ee67461eSJoseph Mingrone os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 139739e421e8SCy Schubert ;; 1398ee67461eSJoseph Mingrone sco*v* | scout) 139939e421e8SCy Schubert # Don't match below 140039e421e8SCy Schubert ;; 140139e421e8SCy Schubert sco*) 140239e421e8SCy Schubert os=sco3.2v2 140339e421e8SCy Schubert ;; 140439e421e8SCy Schubert psos*) 140539e421e8SCy Schubert os=psos 140639e421e8SCy Schubert ;; 140739e421e8SCy Schubert qnx*) 1408ee67461eSJoseph Mingrone os=qnx 1409685295f4SBill Fenner ;; 141039e421e8SCy Schubert hiux*) 141139e421e8SCy Schubert os=hiuxwe2 14125b0fe478SBruce M Simpson ;; 141339e421e8SCy Schubert lynx*178) 141439e421e8SCy Schubert os=lynxos178 14154edb46e9SPaul Traina ;; 141639e421e8SCy Schubert lynx*5) 141739e421e8SCy Schubert os=lynxos5 14184edb46e9SPaul Traina ;; 1419ee67461eSJoseph Mingrone lynxos*) 1420ee67461eSJoseph Mingrone # don't get caught up in next wildcard 1421ee67461eSJoseph Mingrone ;; 142239e421e8SCy Schubert lynx*) 142339e421e8SCy Schubert os=lynxos 1424685295f4SBill Fenner ;; 1425ee67461eSJoseph Mingrone mac[0-9]*) 142639e421e8SCy Schubert os=`echo "$os" | sed -e 's|mac|macos|'` 14275b0fe478SBruce M Simpson ;; 142839e421e8SCy Schubert opened*) 142939e421e8SCy Schubert os=openedition 1430685295f4SBill Fenner ;; 143139e421e8SCy Schubert os400*) 143239e421e8SCy Schubert os=os400 14334edb46e9SPaul Traina ;; 143439e421e8SCy Schubert sunos5*) 143539e421e8SCy Schubert os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14364edb46e9SPaul Traina ;; 143739e421e8SCy Schubert sunos6*) 143839e421e8SCy Schubert os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14394edb46e9SPaul Traina ;; 144039e421e8SCy Schubert wince*) 144139e421e8SCy Schubert os=wince 14424edb46e9SPaul Traina ;; 144339e421e8SCy Schubert utek*) 144439e421e8SCy Schubert os=bsd 14454edb46e9SPaul Traina ;; 144639e421e8SCy Schubert dynix*) 144739e421e8SCy Schubert os=bsd 14485b0fe478SBruce M Simpson ;; 144939e421e8SCy Schubert acis*) 145039e421e8SCy Schubert os=aos 145127df3f5dSRui Paulo ;; 145239e421e8SCy Schubert atheos*) 145339e421e8SCy Schubert os=atheos 1454685295f4SBill Fenner ;; 145539e421e8SCy Schubert syllable*) 145639e421e8SCy Schubert os=syllable 14574edb46e9SPaul Traina ;; 145839e421e8SCy Schubert 386bsd) 145939e421e8SCy Schubert os=bsd 14605b0fe478SBruce M Simpson ;; 146139e421e8SCy Schubert ctix* | uts*) 146239e421e8SCy Schubert os=sysv 14634de76e31SBill Fenner ;; 146439e421e8SCy Schubert nova*) 146539e421e8SCy Schubert os=rtmk-nova 146639e421e8SCy Schubert ;; 146739e421e8SCy Schubert ns2) 146839e421e8SCy Schubert os=nextstep2 146939e421e8SCy Schubert ;; 14704edb46e9SPaul Traina # Preserve the version number of sinix5. 147139e421e8SCy Schubert sinix5.*) 1472ee67461eSJoseph Mingrone os=`echo "$os" | sed -e 's|sinix|sysv|'` 14734edb46e9SPaul Traina ;; 147439e421e8SCy Schubert sinix*) 147539e421e8SCy Schubert os=sysv4 14764edb46e9SPaul Traina ;; 147739e421e8SCy Schubert tpf*) 147839e421e8SCy Schubert os=tpf 14795b0fe478SBruce M Simpson ;; 148039e421e8SCy Schubert triton*) 148139e421e8SCy Schubert os=sysv3 14824edb46e9SPaul Traina ;; 148339e421e8SCy Schubert oss*) 148439e421e8SCy Schubert os=sysv3 14854edb46e9SPaul Traina ;; 148639e421e8SCy Schubert svr4*) 148739e421e8SCy Schubert os=sysv4 14884edb46e9SPaul Traina ;; 148939e421e8SCy Schubert svr3) 149039e421e8SCy Schubert os=sysv3 14914edb46e9SPaul Traina ;; 149239e421e8SCy Schubert sysvr4) 149339e421e8SCy Schubert os=sysv4 14944edb46e9SPaul Traina ;; 149539e421e8SCy Schubert ose*) 149639e421e8SCy Schubert os=ose 1497685295f4SBill Fenner ;; 149839e421e8SCy Schubert *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149939e421e8SCy Schubert os=mint 1500685295f4SBill Fenner ;; 150139e421e8SCy Schubert dicos*) 150239e421e8SCy Schubert os=dicos 1503685295f4SBill Fenner ;; 150439e421e8SCy Schubert pikeos*) 150539e421e8SCy Schubert # Until real need of OS specific support for 150639e421e8SCy Schubert # particular features comes up, bare metal 150739e421e8SCy Schubert # configurations are quite functional. 1508ee67461eSJoseph Mingrone case $cpu in 150939e421e8SCy Schubert arm*) 151039e421e8SCy Schubert os=eabi 15114edb46e9SPaul Traina ;; 15124edb46e9SPaul Traina *) 151339e421e8SCy Schubert os=elf 151439e421e8SCy Schubert ;; 151539e421e8SCy Schubert esac 151639e421e8SCy Schubert ;; 151739e421e8SCy Schubert *) 1518ee67461eSJoseph Mingrone # No normalization, but not necessarily accepted, that comes below. 15194edb46e9SPaul Traina ;; 15204edb46e9SPaul Trainaesac 1521ee67461eSJoseph Mingrone 15224edb46e9SPaul Trainaelse 15234edb46e9SPaul Traina 15244edb46e9SPaul Traina# Here we handle the default operating systems that come with various machines. 15254edb46e9SPaul Traina# The value should be what the vendor currently ships out the door with their 15264edb46e9SPaul Traina# machine or put another way, the most popular os provided with the machine. 15274edb46e9SPaul Traina 15284edb46e9SPaul Traina# Note that if you're going to try to match "-MANUFACTURER" here (say, 15294edb46e9SPaul Traina# "-sun"), then you have to tell the case statement up towards the top 15304edb46e9SPaul Traina# that MANUFACTURER isn't an operating system. Otherwise, code above 15314edb46e9SPaul Traina# will signal an error saying that MANUFACTURER isn't an operating 15324edb46e9SPaul Traina# system, and we'll never get to this point. 15334edb46e9SPaul Traina 1534ee67461eSJoseph Mingronekernel= 1535ee67461eSJoseph Mingronecase $cpu-$vendor in 153627df3f5dSRui Paulo score-*) 153739e421e8SCy Schubert os=elf 153827df3f5dSRui Paulo ;; 153927df3f5dSRui Paulo spu-*) 154039e421e8SCy Schubert os=elf 154127df3f5dSRui Paulo ;; 15424edb46e9SPaul Traina *-acorn) 154339e421e8SCy Schubert os=riscix1.2 15444edb46e9SPaul Traina ;; 1545685295f4SBill Fenner arm*-rebel) 1546ee67461eSJoseph Mingrone kernel=linux 1547ee67461eSJoseph Mingrone os=gnu 1548685295f4SBill Fenner ;; 15494edb46e9SPaul Traina arm*-semi) 155039e421e8SCy Schubert os=aout 15514edb46e9SPaul Traina ;; 15525b0fe478SBruce M Simpson c4x-* | tic4x-*) 155339e421e8SCy Schubert os=coff 15545b0fe478SBruce M Simpson ;; 15558bdc5a62SPatrick Kelsey c8051-*) 155639e421e8SCy Schubert os=elf 155739e421e8SCy Schubert ;; 155839e421e8SCy Schubert clipper-intergraph) 155939e421e8SCy Schubert os=clix 15608bdc5a62SPatrick Kelsey ;; 15618bdc5a62SPatrick Kelsey hexagon-*) 156239e421e8SCy Schubert os=elf 15638bdc5a62SPatrick Kelsey ;; 15643c602fabSXin LI tic54x-*) 156539e421e8SCy Schubert os=coff 15663c602fabSXin LI ;; 15673c602fabSXin LI tic55x-*) 156839e421e8SCy Schubert os=coff 15693c602fabSXin LI ;; 15703c602fabSXin LI tic6x-*) 157139e421e8SCy Schubert os=coff 15723c602fabSXin LI ;; 15735b0fe478SBruce M Simpson # This must come before the *-dec entry. 1574a90e161bSBill Fenner pdp10-*) 157539e421e8SCy Schubert os=tops20 1576a90e161bSBill Fenner ;; 15774edb46e9SPaul Traina pdp11-*) 157839e421e8SCy Schubert os=none 15794edb46e9SPaul Traina ;; 15804edb46e9SPaul Traina *-dec | vax-*) 158139e421e8SCy Schubert os=ultrix4.2 15824edb46e9SPaul Traina ;; 15834edb46e9SPaul Traina m68*-apollo) 158439e421e8SCy Schubert os=domain 15854edb46e9SPaul Traina ;; 15864edb46e9SPaul Traina i386-sun) 158739e421e8SCy Schubert os=sunos4.0.2 15884edb46e9SPaul Traina ;; 15894edb46e9SPaul Traina m68000-sun) 159039e421e8SCy Schubert os=sunos3 15914edb46e9SPaul Traina ;; 1592685295f4SBill Fenner m68*-cisco) 159339e421e8SCy Schubert os=aout 1594685295f4SBill Fenner ;; 159527df3f5dSRui Paulo mep-*) 159639e421e8SCy Schubert os=elf 159727df3f5dSRui Paulo ;; 1598685295f4SBill Fenner mips*-cisco) 159939e421e8SCy Schubert os=elf 1600685295f4SBill Fenner ;; 1601685295f4SBill Fenner mips*-*) 160239e421e8SCy Schubert os=elf 1603685295f4SBill Fenner ;; 16045b0fe478SBruce M Simpson or32-*) 160539e421e8SCy Schubert os=coff 16065b0fe478SBruce M Simpson ;; 16074edb46e9SPaul Traina *-tti) # must be before sparc entry or we get the wrong os. 160839e421e8SCy Schubert os=sysv3 16094edb46e9SPaul Traina ;; 16104edb46e9SPaul Traina sparc-* | *-sun) 161139e421e8SCy Schubert os=sunos4.1.1 161239e421e8SCy Schubert ;; 161339e421e8SCy Schubert pru-*) 161439e421e8SCy Schubert os=elf 16154edb46e9SPaul Traina ;; 1616685295f4SBill Fenner *-be) 161739e421e8SCy Schubert os=beos 161827df3f5dSRui Paulo ;; 16194edb46e9SPaul Traina *-ibm) 162039e421e8SCy Schubert os=aix 16214edb46e9SPaul Traina ;; 162227df3f5dSRui Paulo *-knuth) 162339e421e8SCy Schubert os=mmixware 162427df3f5dSRui Paulo ;; 1625685295f4SBill Fenner *-wec) 162639e421e8SCy Schubert os=proelf 1627685295f4SBill Fenner ;; 1628685295f4SBill Fenner *-winbond) 162939e421e8SCy Schubert os=proelf 1630685295f4SBill Fenner ;; 1631685295f4SBill Fenner *-oki) 163239e421e8SCy Schubert os=proelf 1633685295f4SBill Fenner ;; 16344edb46e9SPaul Traina *-hp) 163539e421e8SCy Schubert os=hpux 16364edb46e9SPaul Traina ;; 16374edb46e9SPaul Traina *-hitachi) 163839e421e8SCy Schubert os=hiux 16394edb46e9SPaul Traina ;; 16404edb46e9SPaul Traina i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 164139e421e8SCy Schubert os=sysv 16424edb46e9SPaul Traina ;; 16434edb46e9SPaul Traina *-cbm) 164439e421e8SCy Schubert os=amigaos 16454edb46e9SPaul Traina ;; 16464edb46e9SPaul Traina *-dg) 164739e421e8SCy Schubert os=dgux 16484edb46e9SPaul Traina ;; 16494edb46e9SPaul Traina *-dolphin) 165039e421e8SCy Schubert os=sysv3 16514edb46e9SPaul Traina ;; 16524edb46e9SPaul Traina m68k-ccur) 165339e421e8SCy Schubert os=rtu 16544edb46e9SPaul Traina ;; 16554edb46e9SPaul Traina m88k-omron*) 165639e421e8SCy Schubert os=luna 16574edb46e9SPaul Traina ;; 16584de76e31SBill Fenner *-next) 165939e421e8SCy Schubert os=nextstep 16604de76e31SBill Fenner ;; 16614edb46e9SPaul Traina *-sequent) 166239e421e8SCy Schubert os=ptx 16634edb46e9SPaul Traina ;; 16644edb46e9SPaul Traina *-crds) 166539e421e8SCy Schubert os=unos 16664edb46e9SPaul Traina ;; 16674edb46e9SPaul Traina *-ns) 166839e421e8SCy Schubert os=genix 16694edb46e9SPaul Traina ;; 16704edb46e9SPaul Traina i370-*) 167139e421e8SCy Schubert os=mvs 16724edb46e9SPaul Traina ;; 16734edb46e9SPaul Traina *-gould) 167439e421e8SCy Schubert os=sysv 16754edb46e9SPaul Traina ;; 16764edb46e9SPaul Traina *-highlevel) 167739e421e8SCy Schubert os=bsd 16784edb46e9SPaul Traina ;; 16794edb46e9SPaul Traina *-encore) 168039e421e8SCy Schubert os=bsd 16814edb46e9SPaul Traina ;; 16824edb46e9SPaul Traina *-sgi) 168339e421e8SCy Schubert os=irix 16844edb46e9SPaul Traina ;; 16854edb46e9SPaul Traina *-siemens) 168639e421e8SCy Schubert os=sysv4 16874edb46e9SPaul Traina ;; 16884edb46e9SPaul Traina *-masscomp) 168939e421e8SCy Schubert os=rtu 16904edb46e9SPaul Traina ;; 1691a90e161bSBill Fenner f30[01]-fujitsu | f700-fujitsu) 169239e421e8SCy Schubert os=uxpv 16934de76e31SBill Fenner ;; 1694685295f4SBill Fenner *-rom68k) 169539e421e8SCy Schubert os=coff 1696685295f4SBill Fenner ;; 1697685295f4SBill Fenner *-*bug) 169839e421e8SCy Schubert os=coff 1699685295f4SBill Fenner ;; 1700685295f4SBill Fenner *-apple) 170139e421e8SCy Schubert os=macos 1702685295f4SBill Fenner ;; 1703685295f4SBill Fenner *-atari*) 170439e421e8SCy Schubert os=mint 170539e421e8SCy Schubert ;; 170639e421e8SCy Schubert *-wrs) 170739e421e8SCy Schubert os=vxworks 1708685295f4SBill Fenner ;; 17094edb46e9SPaul Traina *) 171039e421e8SCy Schubert os=none 17114edb46e9SPaul Traina ;; 17124edb46e9SPaul Trainaesac 1713ee67461eSJoseph Mingrone 17144edb46e9SPaul Trainafi 17154edb46e9SPaul Traina 1716ee67461eSJoseph Mingrone# Now, validate our (potentially fixed-up) OS. 1717ee67461eSJoseph Mingronecase $os in 1718ee67461eSJoseph Mingrone # Sometimes we do "kernel-libc", so those need to count as OSes. 1719ee67461eSJoseph Mingrone musl* | newlib* | relibc* | uclibc*) 1720ee67461eSJoseph Mingrone ;; 1721ee67461eSJoseph Mingrone # Likewise for "kernel-abi" 1722ee67461eSJoseph Mingrone eabi* | gnueabi*) 1723ee67461eSJoseph Mingrone ;; 1724ee67461eSJoseph Mingrone # VxWorks passes extra cpu info in the 4th filed. 1725ee67461eSJoseph Mingrone simlinux | simwindows | spe) 1726ee67461eSJoseph Mingrone ;; 1727ee67461eSJoseph Mingrone # Now accept the basic system types. 1728ee67461eSJoseph Mingrone # The portable systems comes first. 1729ee67461eSJoseph Mingrone # Each alternative MUST end in a * to match a version number. 1730ee67461eSJoseph Mingrone gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1731ee67461eSJoseph Mingrone | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1732ee67461eSJoseph Mingrone | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1733ee67461eSJoseph Mingrone | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1734ee67461eSJoseph Mingrone | hiux* | abug | nacl* | netware* | windows* \ 1735ee67461eSJoseph Mingrone | os9* | macos* | osx* | ios* \ 1736ee67461eSJoseph Mingrone | mpw* | magic* | mmixware* | mon960* | lnews* \ 1737ee67461eSJoseph Mingrone | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1738ee67461eSJoseph Mingrone | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1739ee67461eSJoseph Mingrone | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1740ee67461eSJoseph Mingrone | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1741ee67461eSJoseph Mingrone | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1742ee67461eSJoseph Mingrone | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1743ee67461eSJoseph Mingrone | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1744ee67461eSJoseph Mingrone | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 1745ee67461eSJoseph Mingrone | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 1746ee67461eSJoseph Mingrone | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1747ee67461eSJoseph Mingrone | chorusrdb* | cegcc* | glidix* | serenity* \ 1748ee67461eSJoseph Mingrone | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 1749ee67461eSJoseph Mingrone | midipix* | mingw32* | mingw64* | mint* \ 1750ee67461eSJoseph Mingrone | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1751ee67461eSJoseph Mingrone | interix* | uwin* | mks* | rhapsody* | darwin* \ 1752ee67461eSJoseph Mingrone | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1753ee67461eSJoseph Mingrone | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1754ee67461eSJoseph Mingrone | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1755ee67461eSJoseph Mingrone | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1756ee67461eSJoseph Mingrone | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1757ee67461eSJoseph Mingrone | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1758ee67461eSJoseph Mingrone | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1759ee67461eSJoseph Mingrone | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1760ee67461eSJoseph Mingrone | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1761ee67461eSJoseph Mingrone | fiwix* | mlibc* ) 1762ee67461eSJoseph Mingrone ;; 1763ee67461eSJoseph Mingrone # This one is extra strict with allowed versions 1764ee67461eSJoseph Mingrone sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1765ee67461eSJoseph Mingrone # Don't forget version if it is 3.2v4 or newer. 1766ee67461eSJoseph Mingrone ;; 1767ee67461eSJoseph Mingrone none) 1768ee67461eSJoseph Mingrone ;; 1769ee67461eSJoseph Mingrone kernel* ) 1770ee67461eSJoseph Mingrone # Restricted further below 1771ee67461eSJoseph Mingrone ;; 1772ee67461eSJoseph Mingrone *) 1773ee67461eSJoseph Mingrone echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 1774ee67461eSJoseph Mingrone exit 1 1775ee67461eSJoseph Mingrone ;; 1776ee67461eSJoseph Mingroneesac 1777ee67461eSJoseph Mingrone 1778ee67461eSJoseph Mingrone# As a final step for OS-related things, validate the OS-kernel combination 1779ee67461eSJoseph Mingrone# (given a valid OS), if there is a kernel. 1780ee67461eSJoseph Mingronecase $kernel-$os in 1781ee67461eSJoseph Mingrone linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1782ee67461eSJoseph Mingrone | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 1783ee67461eSJoseph Mingrone ;; 1784ee67461eSJoseph Mingrone uclinux-uclibc* ) 1785ee67461eSJoseph Mingrone ;; 1786ee67461eSJoseph Mingrone managarm-mlibc* | managarm-kernel* ) 1787ee67461eSJoseph Mingrone ;; 1788ee67461eSJoseph Mingrone -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 1789ee67461eSJoseph Mingrone # These are just libc implementations, not actual OSes, and thus 1790ee67461eSJoseph Mingrone # require a kernel. 1791ee67461eSJoseph Mingrone echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 1792ee67461eSJoseph Mingrone exit 1 1793ee67461eSJoseph Mingrone ;; 1794ee67461eSJoseph Mingrone -kernel* ) 1795ee67461eSJoseph Mingrone echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 1796ee67461eSJoseph Mingrone exit 1 1797ee67461eSJoseph Mingrone ;; 1798ee67461eSJoseph Mingrone *-kernel* ) 1799ee67461eSJoseph Mingrone echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 1800ee67461eSJoseph Mingrone exit 1 1801ee67461eSJoseph Mingrone ;; 1802ee67461eSJoseph Mingrone kfreebsd*-gnu* | kopensolaris*-gnu*) 1803ee67461eSJoseph Mingrone ;; 1804ee67461eSJoseph Mingrone vxworks-simlinux | vxworks-simwindows | vxworks-spe) 1805ee67461eSJoseph Mingrone ;; 1806ee67461eSJoseph Mingrone nto-qnx*) 1807ee67461eSJoseph Mingrone ;; 1808ee67461eSJoseph Mingrone os2-emx) 1809ee67461eSJoseph Mingrone ;; 1810ee67461eSJoseph Mingrone *-eabi* | *-gnueabi*) 1811ee67461eSJoseph Mingrone ;; 1812ee67461eSJoseph Mingrone -*) 1813ee67461eSJoseph Mingrone # Blank kernel with real OS is always fine. 1814ee67461eSJoseph Mingrone ;; 1815ee67461eSJoseph Mingrone *-*) 1816ee67461eSJoseph Mingrone echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 1817ee67461eSJoseph Mingrone exit 1 1818ee67461eSJoseph Mingrone ;; 1819ee67461eSJoseph Mingroneesac 1820ee67461eSJoseph Mingrone 18214edb46e9SPaul Traina# Here we handle the case where we know the os, and the CPU type, but not the 18224edb46e9SPaul Traina# manufacturer. We pick the logical manufacturer. 1823ee67461eSJoseph Mingronecase $vendor in 1824ee67461eSJoseph Mingrone unknown) 1825ee67461eSJoseph Mingrone case $cpu-$os in 1826ee67461eSJoseph Mingrone *-riscix*) 18274edb46e9SPaul Traina vendor=acorn 18284edb46e9SPaul Traina ;; 1829ee67461eSJoseph Mingrone *-sunos*) 18304edb46e9SPaul Traina vendor=sun 18314edb46e9SPaul Traina ;; 1832ee67461eSJoseph Mingrone *-cnk* | *-aix*) 18334edb46e9SPaul Traina vendor=ibm 18344edb46e9SPaul Traina ;; 1835ee67461eSJoseph Mingrone *-beos*) 1836685295f4SBill Fenner vendor=be 1837685295f4SBill Fenner ;; 1838ee67461eSJoseph Mingrone *-hpux*) 18394edb46e9SPaul Traina vendor=hp 18404edb46e9SPaul Traina ;; 1841ee67461eSJoseph Mingrone *-mpeix*) 1842685295f4SBill Fenner vendor=hp 1843685295f4SBill Fenner ;; 1844ee67461eSJoseph Mingrone *-hiux*) 18454edb46e9SPaul Traina vendor=hitachi 18464edb46e9SPaul Traina ;; 1847ee67461eSJoseph Mingrone *-unos*) 18484edb46e9SPaul Traina vendor=crds 18494edb46e9SPaul Traina ;; 1850ee67461eSJoseph Mingrone *-dgux*) 18514edb46e9SPaul Traina vendor=dg 18524edb46e9SPaul Traina ;; 1853ee67461eSJoseph Mingrone *-luna*) 18544edb46e9SPaul Traina vendor=omron 18554edb46e9SPaul Traina ;; 1856ee67461eSJoseph Mingrone *-genix*) 18574edb46e9SPaul Traina vendor=ns 18584edb46e9SPaul Traina ;; 1859ee67461eSJoseph Mingrone *-clix*) 186039e421e8SCy Schubert vendor=intergraph 186139e421e8SCy Schubert ;; 1862ee67461eSJoseph Mingrone *-mvs* | *-opened*) 18634edb46e9SPaul Traina vendor=ibm 18644edb46e9SPaul Traina ;; 1865ee67461eSJoseph Mingrone *-os400*) 18665b0fe478SBruce M Simpson vendor=ibm 18675b0fe478SBruce M Simpson ;; 1868ee67461eSJoseph Mingrone s390-* | s390x-*) 1869ee67461eSJoseph Mingrone vendor=ibm 1870ee67461eSJoseph Mingrone ;; 1871ee67461eSJoseph Mingrone *-ptx*) 18724edb46e9SPaul Traina vendor=sequent 18734edb46e9SPaul Traina ;; 1874ee67461eSJoseph Mingrone *-tpf*) 18755b0fe478SBruce M Simpson vendor=ibm 18765b0fe478SBruce M Simpson ;; 1877ee67461eSJoseph Mingrone *-vxsim* | *-vxworks* | *-windiss*) 18784edb46e9SPaul Traina vendor=wrs 18794edb46e9SPaul Traina ;; 1880ee67461eSJoseph Mingrone *-aux*) 18814de76e31SBill Fenner vendor=apple 18824de76e31SBill Fenner ;; 1883ee67461eSJoseph Mingrone *-hms*) 1884685295f4SBill Fenner vendor=hitachi 1885685295f4SBill Fenner ;; 1886ee67461eSJoseph Mingrone *-mpw* | *-macos*) 1887685295f4SBill Fenner vendor=apple 1888685295f4SBill Fenner ;; 1889ee67461eSJoseph Mingrone *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1890685295f4SBill Fenner vendor=atari 1891685295f4SBill Fenner ;; 1892ee67461eSJoseph Mingrone *-vos*) 18935b0fe478SBruce M Simpson vendor=stratus 18945b0fe478SBruce M Simpson ;; 18954edb46e9SPaul Traina esac 18964edb46e9SPaul Traina ;; 18974edb46e9SPaul Trainaesac 18984edb46e9SPaul Traina 1899ee67461eSJoseph Mingroneecho "$cpu-$vendor-${kernel:+$kernel-}$os" 190027df3f5dSRui Pauloexit 1901685295f4SBill Fenner 1902685295f4SBill Fenner# Local variables: 190339e421e8SCy Schubert# eval: (add-hook 'before-save-hook 'time-stamp) 1904685295f4SBill Fenner# time-stamp-start: "timestamp='" 1905685295f4SBill Fenner# time-stamp-format: "%:y-%02m-%02d" 1906685295f4SBill Fenner# time-stamp-end: "'" 1907685295f4SBill Fenner# End: 1908