14edb46e9SPaul Traina#! /bin/sh 2685295f4SBill Fenner# Configuration validation subroutine script. 3*0a7e5f1fSJoseph Mingrone# Copyright 1992-2024 Free Software Foundation, Inc. 4685295f4SBill Fenner 5ee67461eSJoseph Mingrone# shellcheck disable=SC2006,SC2268 # see below for rationale 6ee67461eSJoseph Mingrone 7*0a7e5f1fSJoseph Mingronetimestamp='2024-01-01' 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 79*0a7e5f1fSJoseph MingroneCopyright 1992-2024 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=" 85*0a7e5f1fSJoseph MingroneTry '$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 *-*-*-*-*) 133*0a7e5f1fSJoseph Mingrone 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* \ 148*0a7e5f1fSJoseph Mingrone | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ 149*0a7e5f1fSJoseph Mingrone | windows-* ) 15039e421e8SCy Schubert basic_machine=$field1 151ee67461eSJoseph Mingrone basic_os=$maybe_os 1524de76e31SBill Fenner ;; 1533c602fabSXin LI android-linux) 15439e421e8SCy Schubert basic_machine=$field1-unknown 155ee67461eSJoseph Mingrone basic_os=linux-android 1563c602fabSXin LI ;; 1574de76e31SBill Fenner *) 15839e421e8SCy Schubert basic_machine=$field1-$field2 159ee67461eSJoseph Mingrone basic_os=$field3 1604de76e31SBill Fenner ;; 1614de76e31SBill Fenner esac 1624edb46e9SPaul Traina ;; 16339e421e8SCy Schubert *-*) 164ee67461eSJoseph Mingrone # A lone config we happen to match not fitting any pattern 165ee67461eSJoseph Mingrone case $field1-$field2 in 166ee67461eSJoseph Mingrone decstation-3100) 167ee67461eSJoseph Mingrone basic_machine=mips-dec 168ee67461eSJoseph Mingrone basic_os= 169ee67461eSJoseph Mingrone ;; 170ee67461eSJoseph Mingrone *-*) 17139e421e8SCy Schubert # Second component is usually, but not always the OS 17239e421e8SCy Schubert case $field2 in 17339e421e8SCy Schubert # Prevent following clause from handling this valid os 17439e421e8SCy Schubert sun*os*) 17539e421e8SCy Schubert basic_machine=$field1 176ee67461eSJoseph Mingrone basic_os=$field2 177ee67461eSJoseph Mingrone ;; 178ee67461eSJoseph Mingrone zephyr*) 179ee67461eSJoseph Mingrone basic_machine=$field1-unknown 180ee67461eSJoseph Mingrone basic_os=$field2 18139e421e8SCy Schubert ;; 18239e421e8SCy Schubert # Manufacturers 183ee67461eSJoseph Mingrone dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18439e421e8SCy Schubert | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18539e421e8SCy Schubert | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 186ee67461eSJoseph Mingrone | convergent* | ncr* | news | 32* | 3600* | 3100* \ 187ee67461eSJoseph Mingrone | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 188ee67461eSJoseph Mingrone | ultra | tti* | harris | dolphin | highlevel | gould \ 189ee67461eSJoseph Mingrone | cbm | ns | masscomp | apple | axis | knuth | cray \ 190ee67461eSJoseph Mingrone | microblaze* | sim | cisco \ 191ee67461eSJoseph Mingrone | oki | wec | wrs | winbond) 19239e421e8SCy Schubert basic_machine=$field1-$field2 193ee67461eSJoseph Mingrone basic_os= 19439e421e8SCy Schubert ;; 19539e421e8SCy Schubert *) 19639e421e8SCy Schubert basic_machine=$field1 197ee67461eSJoseph Mingrone basic_os=$field2 198ee67461eSJoseph Mingrone ;; 199ee67461eSJoseph Mingrone esac 20039e421e8SCy Schubert ;; 20139e421e8SCy Schubert esac 20239e421e8SCy Schubert ;; 20339e421e8SCy Schubert *) 20439e421e8SCy Schubert # Convert single-component short-hands not valid as part of 20539e421e8SCy Schubert # multi-component configurations. 20639e421e8SCy Schubert case $field1 in 20739e421e8SCy Schubert 386bsd) 20839e421e8SCy Schubert basic_machine=i386-pc 209ee67461eSJoseph Mingrone basic_os=bsd 21039e421e8SCy Schubert ;; 21139e421e8SCy Schubert a29khif) 21239e421e8SCy Schubert basic_machine=a29k-amd 213ee67461eSJoseph Mingrone basic_os=udi 21439e421e8SCy Schubert ;; 21539e421e8SCy Schubert adobe68k) 21639e421e8SCy Schubert basic_machine=m68010-adobe 217ee67461eSJoseph Mingrone basic_os=scout 218ee67461eSJoseph Mingrone ;; 219ee67461eSJoseph Mingrone alliant) 220ee67461eSJoseph Mingrone basic_machine=fx80-alliant 221ee67461eSJoseph Mingrone basic_os= 222ee67461eSJoseph Mingrone ;; 223ee67461eSJoseph Mingrone altos | altos3068) 224ee67461eSJoseph Mingrone basic_machine=m68k-altos 225ee67461eSJoseph Mingrone basic_os= 22639e421e8SCy Schubert ;; 22739e421e8SCy Schubert am29k) 22839e421e8SCy Schubert basic_machine=a29k-none 229ee67461eSJoseph Mingrone basic_os=bsd 23039e421e8SCy Schubert ;; 23139e421e8SCy Schubert amdahl) 23239e421e8SCy Schubert basic_machine=580-amdahl 233ee67461eSJoseph Mingrone basic_os=sysv 234ee67461eSJoseph Mingrone ;; 235ee67461eSJoseph Mingrone amiga) 236ee67461eSJoseph Mingrone basic_machine=m68k-unknown 237ee67461eSJoseph Mingrone basic_os= 23839e421e8SCy Schubert ;; 23939e421e8SCy Schubert amigaos | amigados) 24039e421e8SCy Schubert basic_machine=m68k-unknown 241ee67461eSJoseph Mingrone basic_os=amigaos 24239e421e8SCy Schubert ;; 24339e421e8SCy Schubert amigaunix | amix) 24439e421e8SCy Schubert basic_machine=m68k-unknown 245ee67461eSJoseph Mingrone basic_os=sysv4 24639e421e8SCy Schubert ;; 24739e421e8SCy Schubert apollo68) 24839e421e8SCy Schubert basic_machine=m68k-apollo 249ee67461eSJoseph Mingrone basic_os=sysv 25039e421e8SCy Schubert ;; 25139e421e8SCy Schubert apollo68bsd) 25239e421e8SCy Schubert basic_machine=m68k-apollo 253ee67461eSJoseph Mingrone basic_os=bsd 25439e421e8SCy Schubert ;; 25539e421e8SCy Schubert aros) 25639e421e8SCy Schubert basic_machine=i386-pc 257ee67461eSJoseph Mingrone basic_os=aros 25839e421e8SCy Schubert ;; 25939e421e8SCy Schubert aux) 26039e421e8SCy Schubert basic_machine=m68k-apple 261ee67461eSJoseph Mingrone basic_os=aux 26239e421e8SCy Schubert ;; 26339e421e8SCy Schubert balance) 26439e421e8SCy Schubert basic_machine=ns32k-sequent 265ee67461eSJoseph Mingrone basic_os=dynix 26639e421e8SCy Schubert ;; 26739e421e8SCy Schubert blackfin) 26839e421e8SCy Schubert basic_machine=bfin-unknown 269ee67461eSJoseph Mingrone basic_os=linux 27039e421e8SCy Schubert ;; 27139e421e8SCy Schubert cegcc) 27239e421e8SCy Schubert basic_machine=arm-unknown 273ee67461eSJoseph Mingrone basic_os=cegcc 274ee67461eSJoseph Mingrone ;; 275ee67461eSJoseph Mingrone convex-c1) 276ee67461eSJoseph Mingrone basic_machine=c1-convex 277ee67461eSJoseph Mingrone basic_os=bsd 278ee67461eSJoseph Mingrone ;; 279ee67461eSJoseph Mingrone convex-c2) 280ee67461eSJoseph Mingrone basic_machine=c2-convex 281ee67461eSJoseph Mingrone basic_os=bsd 282ee67461eSJoseph Mingrone ;; 283ee67461eSJoseph Mingrone convex-c32) 284ee67461eSJoseph Mingrone basic_machine=c32-convex 285ee67461eSJoseph Mingrone basic_os=bsd 286ee67461eSJoseph Mingrone ;; 287ee67461eSJoseph Mingrone convex-c34) 288ee67461eSJoseph Mingrone basic_machine=c34-convex 289ee67461eSJoseph Mingrone basic_os=bsd 290ee67461eSJoseph Mingrone ;; 291ee67461eSJoseph Mingrone convex-c38) 292ee67461eSJoseph Mingrone basic_machine=c38-convex 293ee67461eSJoseph Mingrone basic_os=bsd 29439e421e8SCy Schubert ;; 29539e421e8SCy Schubert cray) 29639e421e8SCy Schubert basic_machine=j90-cray 297ee67461eSJoseph Mingrone basic_os=unicos 29839e421e8SCy Schubert ;; 299ee67461eSJoseph Mingrone crds | unos) 300ee67461eSJoseph Mingrone basic_machine=m68k-crds 301ee67461eSJoseph Mingrone basic_os= 302ee67461eSJoseph Mingrone ;; 303ee67461eSJoseph Mingrone da30) 304ee67461eSJoseph Mingrone basic_machine=m68k-da30 305ee67461eSJoseph Mingrone basic_os= 306ee67461eSJoseph Mingrone ;; 307ee67461eSJoseph Mingrone decstation | pmax | pmin | dec3100 | decstatn) 308ee67461eSJoseph Mingrone basic_machine=mips-dec 309ee67461eSJoseph Mingrone basic_os= 31039e421e8SCy Schubert ;; 31139e421e8SCy Schubert delta88) 31239e421e8SCy Schubert basic_machine=m88k-motorola 313ee67461eSJoseph Mingrone basic_os=sysv3 31439e421e8SCy Schubert ;; 31539e421e8SCy Schubert dicos) 31639e421e8SCy Schubert basic_machine=i686-pc 317ee67461eSJoseph Mingrone basic_os=dicos 31839e421e8SCy Schubert ;; 31939e421e8SCy Schubert djgpp) 32039e421e8SCy Schubert basic_machine=i586-pc 321ee67461eSJoseph Mingrone basic_os=msdosdjgpp 32239e421e8SCy Schubert ;; 32339e421e8SCy Schubert ebmon29k) 32439e421e8SCy Schubert basic_machine=a29k-amd 325ee67461eSJoseph Mingrone basic_os=ebmon 32639e421e8SCy Schubert ;; 32739e421e8SCy Schubert es1800 | OSE68k | ose68k | ose | OSE) 32839e421e8SCy Schubert basic_machine=m68k-ericsson 329ee67461eSJoseph Mingrone basic_os=ose 33039e421e8SCy Schubert ;; 33139e421e8SCy Schubert gmicro) 33239e421e8SCy Schubert basic_machine=tron-gmicro 333ee67461eSJoseph Mingrone basic_os=sysv 33439e421e8SCy Schubert ;; 33539e421e8SCy Schubert go32) 33639e421e8SCy Schubert basic_machine=i386-pc 337ee67461eSJoseph Mingrone basic_os=go32 33839e421e8SCy Schubert ;; 33939e421e8SCy Schubert h8300hms) 34039e421e8SCy Schubert basic_machine=h8300-hitachi 341ee67461eSJoseph Mingrone basic_os=hms 34239e421e8SCy Schubert ;; 34339e421e8SCy Schubert h8300xray) 34439e421e8SCy Schubert basic_machine=h8300-hitachi 345ee67461eSJoseph Mingrone basic_os=xray 34639e421e8SCy Schubert ;; 34739e421e8SCy Schubert h8500hms) 34839e421e8SCy Schubert basic_machine=h8500-hitachi 349ee67461eSJoseph Mingrone basic_os=hms 35039e421e8SCy Schubert ;; 35139e421e8SCy Schubert harris) 35239e421e8SCy Schubert basic_machine=m88k-harris 353ee67461eSJoseph Mingrone basic_os=sysv3 354ee67461eSJoseph Mingrone ;; 355ee67461eSJoseph Mingrone hp300 | hp300hpux) 356ee67461eSJoseph Mingrone basic_machine=m68k-hp 357ee67461eSJoseph Mingrone basic_os=hpux 35839e421e8SCy Schubert ;; 35939e421e8SCy Schubert hp300bsd) 36039e421e8SCy Schubert basic_machine=m68k-hp 361ee67461eSJoseph Mingrone basic_os=bsd 36239e421e8SCy Schubert ;; 36339e421e8SCy Schubert hppaosf) 36439e421e8SCy Schubert basic_machine=hppa1.1-hp 365ee67461eSJoseph Mingrone basic_os=osf 36639e421e8SCy Schubert ;; 36739e421e8SCy Schubert hppro) 36839e421e8SCy Schubert basic_machine=hppa1.1-hp 369ee67461eSJoseph Mingrone basic_os=proelf 37039e421e8SCy Schubert ;; 37139e421e8SCy Schubert i386mach) 37239e421e8SCy Schubert basic_machine=i386-mach 373ee67461eSJoseph Mingrone basic_os=mach 37439e421e8SCy Schubert ;; 37539e421e8SCy Schubert isi68 | isi) 37639e421e8SCy Schubert basic_machine=m68k-isi 377ee67461eSJoseph Mingrone basic_os=sysv 37839e421e8SCy Schubert ;; 37939e421e8SCy Schubert m68knommu) 38039e421e8SCy Schubert basic_machine=m68k-unknown 381ee67461eSJoseph Mingrone basic_os=linux 38239e421e8SCy Schubert ;; 38339e421e8SCy Schubert magnum | m3230) 38439e421e8SCy Schubert basic_machine=mips-mips 385ee67461eSJoseph Mingrone basic_os=sysv 38639e421e8SCy Schubert ;; 38739e421e8SCy Schubert merlin) 38839e421e8SCy Schubert basic_machine=ns32k-utek 389ee67461eSJoseph Mingrone basic_os=sysv 39039e421e8SCy Schubert ;; 39139e421e8SCy Schubert mingw64) 39239e421e8SCy Schubert basic_machine=x86_64-pc 393ee67461eSJoseph Mingrone basic_os=mingw64 39439e421e8SCy Schubert ;; 39539e421e8SCy Schubert mingw32) 39639e421e8SCy Schubert basic_machine=i686-pc 397ee67461eSJoseph Mingrone basic_os=mingw32 39839e421e8SCy Schubert ;; 39939e421e8SCy Schubert mingw32ce) 40039e421e8SCy Schubert basic_machine=arm-unknown 401ee67461eSJoseph Mingrone basic_os=mingw32ce 40239e421e8SCy Schubert ;; 40339e421e8SCy Schubert monitor) 40439e421e8SCy Schubert basic_machine=m68k-rom68k 405ee67461eSJoseph Mingrone basic_os=coff 40639e421e8SCy Schubert ;; 40739e421e8SCy Schubert morphos) 40839e421e8SCy Schubert basic_machine=powerpc-unknown 409ee67461eSJoseph Mingrone basic_os=morphos 41039e421e8SCy Schubert ;; 41139e421e8SCy Schubert moxiebox) 41239e421e8SCy Schubert basic_machine=moxie-unknown 413ee67461eSJoseph Mingrone basic_os=moxiebox 41439e421e8SCy Schubert ;; 41539e421e8SCy Schubert msdos) 41639e421e8SCy Schubert basic_machine=i386-pc 417ee67461eSJoseph Mingrone basic_os=msdos 41839e421e8SCy Schubert ;; 41939e421e8SCy Schubert msys) 42039e421e8SCy Schubert basic_machine=i686-pc 421ee67461eSJoseph Mingrone basic_os=msys 42239e421e8SCy Schubert ;; 42339e421e8SCy Schubert mvs) 42439e421e8SCy Schubert basic_machine=i370-ibm 425ee67461eSJoseph Mingrone basic_os=mvs 42639e421e8SCy Schubert ;; 42739e421e8SCy Schubert nacl) 42839e421e8SCy Schubert basic_machine=le32-unknown 429ee67461eSJoseph Mingrone basic_os=nacl 43039e421e8SCy Schubert ;; 43139e421e8SCy Schubert ncr3000) 43239e421e8SCy Schubert basic_machine=i486-ncr 433ee67461eSJoseph Mingrone basic_os=sysv4 43439e421e8SCy Schubert ;; 43539e421e8SCy Schubert netbsd386) 436ee67461eSJoseph Mingrone basic_machine=i386-pc 437ee67461eSJoseph Mingrone basic_os=netbsd 43839e421e8SCy Schubert ;; 43939e421e8SCy Schubert netwinder) 44039e421e8SCy Schubert basic_machine=armv4l-rebel 441ee67461eSJoseph Mingrone basic_os=linux 44239e421e8SCy Schubert ;; 44339e421e8SCy Schubert news | news700 | news800 | news900) 44439e421e8SCy Schubert basic_machine=m68k-sony 445ee67461eSJoseph Mingrone basic_os=newsos 44639e421e8SCy Schubert ;; 44739e421e8SCy Schubert news1000) 44839e421e8SCy Schubert basic_machine=m68030-sony 449ee67461eSJoseph Mingrone basic_os=newsos 45039e421e8SCy Schubert ;; 45139e421e8SCy Schubert necv70) 45239e421e8SCy Schubert basic_machine=v70-nec 453ee67461eSJoseph Mingrone basic_os=sysv 45439e421e8SCy Schubert ;; 45539e421e8SCy Schubert nh3000) 45639e421e8SCy Schubert basic_machine=m68k-harris 457ee67461eSJoseph Mingrone basic_os=cxux 45839e421e8SCy Schubert ;; 45939e421e8SCy Schubert nh[45]000) 46039e421e8SCy Schubert basic_machine=m88k-harris 461ee67461eSJoseph Mingrone basic_os=cxux 46239e421e8SCy Schubert ;; 46339e421e8SCy Schubert nindy960) 46439e421e8SCy Schubert basic_machine=i960-intel 465ee67461eSJoseph Mingrone basic_os=nindy 46639e421e8SCy Schubert ;; 46739e421e8SCy Schubert mon960) 46839e421e8SCy Schubert basic_machine=i960-intel 469ee67461eSJoseph Mingrone basic_os=mon960 47039e421e8SCy Schubert ;; 47139e421e8SCy Schubert nonstopux) 47239e421e8SCy Schubert basic_machine=mips-compaq 473ee67461eSJoseph Mingrone basic_os=nonstopux 47439e421e8SCy Schubert ;; 47539e421e8SCy Schubert os400) 47639e421e8SCy Schubert basic_machine=powerpc-ibm 477ee67461eSJoseph Mingrone basic_os=os400 47839e421e8SCy Schubert ;; 47939e421e8SCy Schubert OSE68000 | ose68000) 48039e421e8SCy Schubert basic_machine=m68000-ericsson 481ee67461eSJoseph Mingrone basic_os=ose 48239e421e8SCy Schubert ;; 48339e421e8SCy Schubert os68k) 48439e421e8SCy Schubert basic_machine=m68k-none 485ee67461eSJoseph Mingrone basic_os=os68k 48639e421e8SCy Schubert ;; 48739e421e8SCy Schubert paragon) 48839e421e8SCy Schubert basic_machine=i860-intel 489ee67461eSJoseph Mingrone basic_os=osf 49039e421e8SCy Schubert ;; 49139e421e8SCy Schubert parisc) 49239e421e8SCy Schubert basic_machine=hppa-unknown 493ee67461eSJoseph Mingrone basic_os=linux 494ee67461eSJoseph Mingrone ;; 495ee67461eSJoseph Mingrone psp) 496ee67461eSJoseph Mingrone basic_machine=mipsallegrexel-sony 497ee67461eSJoseph Mingrone basic_os=psp 49839e421e8SCy Schubert ;; 49939e421e8SCy Schubert pw32) 50039e421e8SCy Schubert basic_machine=i586-unknown 501ee67461eSJoseph Mingrone basic_os=pw32 50239e421e8SCy Schubert ;; 50339e421e8SCy Schubert rdos | rdos64) 50439e421e8SCy Schubert basic_machine=x86_64-pc 505ee67461eSJoseph Mingrone basic_os=rdos 50639e421e8SCy Schubert ;; 50739e421e8SCy Schubert rdos32) 50839e421e8SCy Schubert basic_machine=i386-pc 509ee67461eSJoseph Mingrone basic_os=rdos 51039e421e8SCy Schubert ;; 51139e421e8SCy Schubert rom68k) 51239e421e8SCy Schubert basic_machine=m68k-rom68k 513ee67461eSJoseph Mingrone basic_os=coff 51439e421e8SCy Schubert ;; 51539e421e8SCy Schubert sa29200) 51639e421e8SCy Schubert basic_machine=a29k-amd 517ee67461eSJoseph Mingrone basic_os=udi 51839e421e8SCy Schubert ;; 51939e421e8SCy Schubert sei) 52039e421e8SCy Schubert basic_machine=mips-sei 521ee67461eSJoseph Mingrone basic_os=seiux 522ee67461eSJoseph Mingrone ;; 523ee67461eSJoseph Mingrone sequent) 524ee67461eSJoseph Mingrone basic_machine=i386-sequent 525ee67461eSJoseph Mingrone basic_os= 52639e421e8SCy Schubert ;; 52739e421e8SCy Schubert sps7) 52839e421e8SCy Schubert basic_machine=m68k-bull 529ee67461eSJoseph Mingrone basic_os=sysv2 530ee67461eSJoseph Mingrone ;; 531ee67461eSJoseph Mingrone st2000) 532ee67461eSJoseph Mingrone basic_machine=m68k-tandem 533ee67461eSJoseph Mingrone basic_os= 53439e421e8SCy Schubert ;; 53539e421e8SCy Schubert stratus) 53639e421e8SCy Schubert basic_machine=i860-stratus 537ee67461eSJoseph Mingrone basic_os=sysv4 538ee67461eSJoseph Mingrone ;; 539ee67461eSJoseph Mingrone sun2) 540ee67461eSJoseph Mingrone basic_machine=m68000-sun 541ee67461eSJoseph Mingrone basic_os= 54239e421e8SCy Schubert ;; 54339e421e8SCy Schubert sun2os3) 54439e421e8SCy Schubert basic_machine=m68000-sun 545ee67461eSJoseph Mingrone basic_os=sunos3 54639e421e8SCy Schubert ;; 54739e421e8SCy Schubert sun2os4) 54839e421e8SCy Schubert basic_machine=m68000-sun 549ee67461eSJoseph Mingrone basic_os=sunos4 550ee67461eSJoseph Mingrone ;; 551ee67461eSJoseph Mingrone sun3) 552ee67461eSJoseph Mingrone basic_machine=m68k-sun 553ee67461eSJoseph Mingrone basic_os= 55439e421e8SCy Schubert ;; 55539e421e8SCy Schubert sun3os3) 55639e421e8SCy Schubert basic_machine=m68k-sun 557ee67461eSJoseph Mingrone basic_os=sunos3 55839e421e8SCy Schubert ;; 55939e421e8SCy Schubert sun3os4) 56039e421e8SCy Schubert basic_machine=m68k-sun 561ee67461eSJoseph Mingrone basic_os=sunos4 562ee67461eSJoseph Mingrone ;; 563ee67461eSJoseph Mingrone sun4) 564ee67461eSJoseph Mingrone basic_machine=sparc-sun 565ee67461eSJoseph Mingrone basic_os= 56639e421e8SCy Schubert ;; 56739e421e8SCy Schubert sun4os3) 56839e421e8SCy Schubert basic_machine=sparc-sun 569ee67461eSJoseph Mingrone basic_os=sunos3 57039e421e8SCy Schubert ;; 57139e421e8SCy Schubert sun4os4) 57239e421e8SCy Schubert basic_machine=sparc-sun 573ee67461eSJoseph Mingrone basic_os=sunos4 57439e421e8SCy Schubert ;; 57539e421e8SCy Schubert sun4sol2) 57639e421e8SCy Schubert basic_machine=sparc-sun 577ee67461eSJoseph Mingrone basic_os=solaris2 578ee67461eSJoseph Mingrone ;; 579ee67461eSJoseph Mingrone sun386 | sun386i | roadrunner) 580ee67461eSJoseph Mingrone basic_machine=i386-sun 581ee67461eSJoseph Mingrone basic_os= 58239e421e8SCy Schubert ;; 58339e421e8SCy Schubert sv1) 58439e421e8SCy Schubert basic_machine=sv1-cray 585ee67461eSJoseph Mingrone basic_os=unicos 58639e421e8SCy Schubert ;; 58739e421e8SCy Schubert symmetry) 58839e421e8SCy Schubert basic_machine=i386-sequent 589ee67461eSJoseph Mingrone basic_os=dynix 59039e421e8SCy Schubert ;; 59139e421e8SCy Schubert t3e) 59239e421e8SCy Schubert basic_machine=alphaev5-cray 593ee67461eSJoseph Mingrone basic_os=unicos 59439e421e8SCy Schubert ;; 59539e421e8SCy Schubert t90) 59639e421e8SCy Schubert basic_machine=t90-cray 597ee67461eSJoseph Mingrone basic_os=unicos 59839e421e8SCy Schubert ;; 59939e421e8SCy Schubert toad1) 60039e421e8SCy Schubert basic_machine=pdp10-xkl 601ee67461eSJoseph Mingrone basic_os=tops20 60239e421e8SCy Schubert ;; 60339e421e8SCy Schubert tpf) 60439e421e8SCy Schubert basic_machine=s390x-ibm 605ee67461eSJoseph Mingrone basic_os=tpf 60639e421e8SCy Schubert ;; 60739e421e8SCy Schubert udi29k) 60839e421e8SCy Schubert basic_machine=a29k-amd 609ee67461eSJoseph Mingrone basic_os=udi 61039e421e8SCy Schubert ;; 61139e421e8SCy Schubert ultra3) 61239e421e8SCy Schubert basic_machine=a29k-nyu 613ee67461eSJoseph Mingrone basic_os=sym1 61439e421e8SCy Schubert ;; 61539e421e8SCy Schubert v810 | necv810) 61639e421e8SCy Schubert basic_machine=v810-nec 617ee67461eSJoseph Mingrone basic_os=none 61839e421e8SCy Schubert ;; 61939e421e8SCy Schubert vaxv) 62039e421e8SCy Schubert basic_machine=vax-dec 621ee67461eSJoseph Mingrone basic_os=sysv 62239e421e8SCy Schubert ;; 62339e421e8SCy Schubert vms) 62439e421e8SCy Schubert basic_machine=vax-dec 625ee67461eSJoseph Mingrone basic_os=vms 626ee67461eSJoseph Mingrone ;; 627ee67461eSJoseph Mingrone vsta) 628ee67461eSJoseph Mingrone basic_machine=i386-pc 629ee67461eSJoseph Mingrone basic_os=vsta 63039e421e8SCy Schubert ;; 63139e421e8SCy Schubert vxworks960) 63239e421e8SCy Schubert basic_machine=i960-wrs 633ee67461eSJoseph Mingrone basic_os=vxworks 63439e421e8SCy Schubert ;; 63539e421e8SCy Schubert vxworks68) 63639e421e8SCy Schubert basic_machine=m68k-wrs 637ee67461eSJoseph Mingrone basic_os=vxworks 63839e421e8SCy Schubert ;; 63939e421e8SCy Schubert vxworks29k) 64039e421e8SCy Schubert basic_machine=a29k-wrs 641ee67461eSJoseph Mingrone basic_os=vxworks 64239e421e8SCy Schubert ;; 64339e421e8SCy Schubert xbox) 64439e421e8SCy Schubert basic_machine=i686-pc 645ee67461eSJoseph Mingrone basic_os=mingw32 64639e421e8SCy Schubert ;; 64739e421e8SCy Schubert ymp) 64839e421e8SCy Schubert basic_machine=ymp-cray 649ee67461eSJoseph Mingrone basic_os=unicos 65039e421e8SCy Schubert ;; 65139e421e8SCy Schubert *) 6524edb46e9SPaul Traina basic_machine=$1 653ee67461eSJoseph Mingrone basic_os= 654685295f4SBill Fenner ;; 65539e421e8SCy Schubert esac 656685295f4SBill Fenner ;; 6574edb46e9SPaul Trainaesac 6584edb46e9SPaul Traina 659ee67461eSJoseph Mingrone# Decode 1-component or ad-hoc basic machines 6604edb46e9SPaul Trainacase $basic_machine in 661ee67461eSJoseph Mingrone # Here we handle the default manufacturer of certain CPU types. It is in 662ee67461eSJoseph Mingrone # some cases the only manufacturer, in others, it is the most popular. 663ee67461eSJoseph Mingrone w89k) 664ee67461eSJoseph Mingrone cpu=hppa1.1 665ee67461eSJoseph Mingrone vendor=winbond 666ee67461eSJoseph Mingrone ;; 667ee67461eSJoseph Mingrone op50n) 668ee67461eSJoseph Mingrone cpu=hppa1.1 669ee67461eSJoseph Mingrone vendor=oki 670ee67461eSJoseph Mingrone ;; 671ee67461eSJoseph Mingrone op60c) 672ee67461eSJoseph Mingrone cpu=hppa1.1 673ee67461eSJoseph Mingrone vendor=oki 674ee67461eSJoseph Mingrone ;; 675ee67461eSJoseph Mingrone ibm*) 676ee67461eSJoseph Mingrone cpu=i370 677ee67461eSJoseph Mingrone vendor=ibm 678ee67461eSJoseph Mingrone ;; 679ee67461eSJoseph Mingrone orion105) 680ee67461eSJoseph Mingrone cpu=clipper 681ee67461eSJoseph Mingrone vendor=highlevel 682ee67461eSJoseph Mingrone ;; 683ee67461eSJoseph Mingrone mac | mpw | mac-mpw) 684ee67461eSJoseph Mingrone cpu=m68k 685ee67461eSJoseph Mingrone vendor=apple 686ee67461eSJoseph Mingrone ;; 687ee67461eSJoseph Mingrone pmac | pmac-mpw) 688ee67461eSJoseph Mingrone cpu=powerpc 689ee67461eSJoseph Mingrone vendor=apple 690ee67461eSJoseph Mingrone ;; 691ee67461eSJoseph Mingrone 692ee67461eSJoseph Mingrone # Recognize the various machine names and aliases which stand 693ee67461eSJoseph Mingrone # for a CPU type and a company and sometimes even an OS. 694ee67461eSJoseph Mingrone 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 695ee67461eSJoseph Mingrone cpu=m68000 696ee67461eSJoseph Mingrone vendor=att 697ee67461eSJoseph Mingrone ;; 698ee67461eSJoseph Mingrone 3b*) 699ee67461eSJoseph Mingrone cpu=we32k 700ee67461eSJoseph Mingrone vendor=att 701ee67461eSJoseph Mingrone ;; 702ee67461eSJoseph Mingrone bluegene*) 703ee67461eSJoseph Mingrone cpu=powerpc 704ee67461eSJoseph Mingrone vendor=ibm 705ee67461eSJoseph Mingrone basic_os=cnk 706ee67461eSJoseph Mingrone ;; 707ee67461eSJoseph Mingrone decsystem10* | dec10*) 708ee67461eSJoseph Mingrone cpu=pdp10 709ee67461eSJoseph Mingrone vendor=dec 710ee67461eSJoseph Mingrone basic_os=tops10 711ee67461eSJoseph Mingrone ;; 712ee67461eSJoseph Mingrone decsystem20* | dec20*) 713ee67461eSJoseph Mingrone cpu=pdp10 714ee67461eSJoseph Mingrone vendor=dec 715ee67461eSJoseph Mingrone basic_os=tops20 716ee67461eSJoseph Mingrone ;; 717ee67461eSJoseph Mingrone delta | 3300 | motorola-3300 | motorola-delta \ 718ee67461eSJoseph Mingrone | 3300-motorola | delta-motorola) 719ee67461eSJoseph Mingrone cpu=m68k 720ee67461eSJoseph Mingrone vendor=motorola 721ee67461eSJoseph Mingrone ;; 722ee67461eSJoseph Mingrone dpx2*) 723ee67461eSJoseph Mingrone cpu=m68k 724ee67461eSJoseph Mingrone vendor=bull 725ee67461eSJoseph Mingrone basic_os=sysv3 726ee67461eSJoseph Mingrone ;; 727ee67461eSJoseph Mingrone encore | umax | mmax) 728ee67461eSJoseph Mingrone cpu=ns32k 729ee67461eSJoseph Mingrone vendor=encore 730ee67461eSJoseph Mingrone ;; 731ee67461eSJoseph Mingrone elxsi) 732ee67461eSJoseph Mingrone cpu=elxsi 733ee67461eSJoseph Mingrone vendor=elxsi 734ee67461eSJoseph Mingrone basic_os=${basic_os:-bsd} 735ee67461eSJoseph Mingrone ;; 736ee67461eSJoseph Mingrone fx2800) 737ee67461eSJoseph Mingrone cpu=i860 738ee67461eSJoseph Mingrone vendor=alliant 739ee67461eSJoseph Mingrone ;; 740ee67461eSJoseph Mingrone genix) 741ee67461eSJoseph Mingrone cpu=ns32k 742ee67461eSJoseph Mingrone vendor=ns 743ee67461eSJoseph Mingrone ;; 744ee67461eSJoseph Mingrone h3050r* | hiux*) 745ee67461eSJoseph Mingrone cpu=hppa1.1 746ee67461eSJoseph Mingrone vendor=hitachi 747ee67461eSJoseph Mingrone basic_os=hiuxwe2 748ee67461eSJoseph Mingrone ;; 749ee67461eSJoseph Mingrone hp3k9[0-9][0-9] | hp9[0-9][0-9]) 750ee67461eSJoseph Mingrone cpu=hppa1.0 751ee67461eSJoseph Mingrone vendor=hp 752ee67461eSJoseph Mingrone ;; 753ee67461eSJoseph Mingrone hp9k2[0-9][0-9] | hp9k31[0-9]) 754ee67461eSJoseph Mingrone cpu=m68000 755ee67461eSJoseph Mingrone vendor=hp 756ee67461eSJoseph Mingrone ;; 757ee67461eSJoseph Mingrone hp9k3[2-9][0-9]) 758ee67461eSJoseph Mingrone cpu=m68k 759ee67461eSJoseph Mingrone vendor=hp 760ee67461eSJoseph Mingrone ;; 761ee67461eSJoseph Mingrone hp9k6[0-9][0-9] | hp6[0-9][0-9]) 762ee67461eSJoseph Mingrone cpu=hppa1.0 763ee67461eSJoseph Mingrone vendor=hp 764ee67461eSJoseph Mingrone ;; 765ee67461eSJoseph Mingrone hp9k7[0-79][0-9] | hp7[0-79][0-9]) 766ee67461eSJoseph Mingrone cpu=hppa1.1 767ee67461eSJoseph Mingrone vendor=hp 768ee67461eSJoseph Mingrone ;; 769ee67461eSJoseph Mingrone hp9k78[0-9] | hp78[0-9]) 770ee67461eSJoseph Mingrone # FIXME: really hppa2.0-hp 771ee67461eSJoseph Mingrone cpu=hppa1.1 772ee67461eSJoseph Mingrone vendor=hp 773ee67461eSJoseph Mingrone ;; 774ee67461eSJoseph Mingrone hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 775ee67461eSJoseph Mingrone # FIXME: really hppa2.0-hp 776ee67461eSJoseph Mingrone cpu=hppa1.1 777ee67461eSJoseph Mingrone vendor=hp 778ee67461eSJoseph Mingrone ;; 779ee67461eSJoseph Mingrone hp9k8[0-9][13679] | hp8[0-9][13679]) 780ee67461eSJoseph Mingrone cpu=hppa1.1 781ee67461eSJoseph Mingrone vendor=hp 782ee67461eSJoseph Mingrone ;; 783ee67461eSJoseph Mingrone hp9k8[0-9][0-9] | hp8[0-9][0-9]) 784ee67461eSJoseph Mingrone cpu=hppa1.0 785ee67461eSJoseph Mingrone vendor=hp 786ee67461eSJoseph Mingrone ;; 787ee67461eSJoseph Mingrone i*86v32) 788ee67461eSJoseph Mingrone cpu=`echo "$1" | sed -e 's/86.*/86/'` 789ee67461eSJoseph Mingrone vendor=pc 790ee67461eSJoseph Mingrone basic_os=sysv32 791ee67461eSJoseph Mingrone ;; 792ee67461eSJoseph Mingrone i*86v4*) 793ee67461eSJoseph Mingrone cpu=`echo "$1" | sed -e 's/86.*/86/'` 794ee67461eSJoseph Mingrone vendor=pc 795ee67461eSJoseph Mingrone basic_os=sysv4 796ee67461eSJoseph Mingrone ;; 797ee67461eSJoseph Mingrone i*86v) 798ee67461eSJoseph Mingrone cpu=`echo "$1" | sed -e 's/86.*/86/'` 799ee67461eSJoseph Mingrone vendor=pc 800ee67461eSJoseph Mingrone basic_os=sysv 801ee67461eSJoseph Mingrone ;; 802ee67461eSJoseph Mingrone i*86sol2) 803ee67461eSJoseph Mingrone cpu=`echo "$1" | sed -e 's/86.*/86/'` 804ee67461eSJoseph Mingrone vendor=pc 805ee67461eSJoseph Mingrone basic_os=solaris2 806ee67461eSJoseph Mingrone ;; 807ee67461eSJoseph Mingrone j90 | j90-cray) 808ee67461eSJoseph Mingrone cpu=j90 809ee67461eSJoseph Mingrone vendor=cray 810ee67461eSJoseph Mingrone basic_os=${basic_os:-unicos} 811ee67461eSJoseph Mingrone ;; 812ee67461eSJoseph Mingrone iris | iris4d) 813ee67461eSJoseph Mingrone cpu=mips 814ee67461eSJoseph Mingrone vendor=sgi 815ee67461eSJoseph Mingrone case $basic_os in 816ee67461eSJoseph Mingrone irix*) 817ee67461eSJoseph Mingrone ;; 818ee67461eSJoseph Mingrone *) 819ee67461eSJoseph Mingrone basic_os=irix4 820ee67461eSJoseph Mingrone ;; 821ee67461eSJoseph Mingrone esac 822ee67461eSJoseph Mingrone ;; 823ee67461eSJoseph Mingrone miniframe) 824ee67461eSJoseph Mingrone cpu=m68000 825ee67461eSJoseph Mingrone vendor=convergent 826ee67461eSJoseph Mingrone ;; 827ee67461eSJoseph Mingrone *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 828ee67461eSJoseph Mingrone cpu=m68k 829ee67461eSJoseph Mingrone vendor=atari 830ee67461eSJoseph Mingrone basic_os=mint 831ee67461eSJoseph Mingrone ;; 832ee67461eSJoseph Mingrone news-3600 | risc-news) 833ee67461eSJoseph Mingrone cpu=mips 834ee67461eSJoseph Mingrone vendor=sony 835ee67461eSJoseph Mingrone basic_os=newsos 836ee67461eSJoseph Mingrone ;; 837ee67461eSJoseph Mingrone next | m*-next) 838ee67461eSJoseph Mingrone cpu=m68k 839ee67461eSJoseph Mingrone vendor=next 840ee67461eSJoseph Mingrone case $basic_os in 841ee67461eSJoseph Mingrone openstep*) 842ee67461eSJoseph Mingrone ;; 843ee67461eSJoseph Mingrone nextstep*) 844ee67461eSJoseph Mingrone ;; 845ee67461eSJoseph Mingrone ns2*) 846ee67461eSJoseph Mingrone basic_os=nextstep2 847ee67461eSJoseph Mingrone ;; 848ee67461eSJoseph Mingrone *) 849ee67461eSJoseph Mingrone basic_os=nextstep3 850ee67461eSJoseph Mingrone ;; 851ee67461eSJoseph Mingrone esac 852ee67461eSJoseph Mingrone ;; 853ee67461eSJoseph Mingrone np1) 854ee67461eSJoseph Mingrone cpu=np1 855ee67461eSJoseph Mingrone vendor=gould 856ee67461eSJoseph Mingrone ;; 857ee67461eSJoseph Mingrone op50n-* | op60c-*) 858ee67461eSJoseph Mingrone cpu=hppa1.1 859ee67461eSJoseph Mingrone vendor=oki 860ee67461eSJoseph Mingrone basic_os=proelf 861ee67461eSJoseph Mingrone ;; 862ee67461eSJoseph Mingrone pa-hitachi) 863ee67461eSJoseph Mingrone cpu=hppa1.1 864ee67461eSJoseph Mingrone vendor=hitachi 865ee67461eSJoseph Mingrone basic_os=hiuxwe2 866ee67461eSJoseph Mingrone ;; 867ee67461eSJoseph Mingrone pbd) 868ee67461eSJoseph Mingrone cpu=sparc 869ee67461eSJoseph Mingrone vendor=tti 870ee67461eSJoseph Mingrone ;; 871ee67461eSJoseph Mingrone pbb) 872ee67461eSJoseph Mingrone cpu=m68k 873ee67461eSJoseph Mingrone vendor=tti 874ee67461eSJoseph Mingrone ;; 875ee67461eSJoseph Mingrone pc532) 876ee67461eSJoseph Mingrone cpu=ns32k 877ee67461eSJoseph Mingrone vendor=pc532 878ee67461eSJoseph Mingrone ;; 879ee67461eSJoseph Mingrone pn) 880ee67461eSJoseph Mingrone cpu=pn 881ee67461eSJoseph Mingrone vendor=gould 882ee67461eSJoseph Mingrone ;; 883ee67461eSJoseph Mingrone power) 884ee67461eSJoseph Mingrone cpu=power 885ee67461eSJoseph Mingrone vendor=ibm 886ee67461eSJoseph Mingrone ;; 887ee67461eSJoseph Mingrone ps2) 888ee67461eSJoseph Mingrone cpu=i386 889ee67461eSJoseph Mingrone vendor=ibm 890ee67461eSJoseph Mingrone ;; 891ee67461eSJoseph Mingrone rm[46]00) 892ee67461eSJoseph Mingrone cpu=mips 893ee67461eSJoseph Mingrone vendor=siemens 894ee67461eSJoseph Mingrone ;; 895ee67461eSJoseph Mingrone rtpc | rtpc-*) 896ee67461eSJoseph Mingrone cpu=romp 897ee67461eSJoseph Mingrone vendor=ibm 898ee67461eSJoseph Mingrone ;; 899ee67461eSJoseph Mingrone sde) 900ee67461eSJoseph Mingrone cpu=mipsisa32 901ee67461eSJoseph Mingrone vendor=sde 902ee67461eSJoseph Mingrone basic_os=${basic_os:-elf} 903ee67461eSJoseph Mingrone ;; 904ee67461eSJoseph Mingrone simso-wrs) 905ee67461eSJoseph Mingrone cpu=sparclite 906ee67461eSJoseph Mingrone vendor=wrs 907ee67461eSJoseph Mingrone basic_os=vxworks 908ee67461eSJoseph Mingrone ;; 909ee67461eSJoseph Mingrone tower | tower-32) 910ee67461eSJoseph Mingrone cpu=m68k 911ee67461eSJoseph Mingrone vendor=ncr 912ee67461eSJoseph Mingrone ;; 913ee67461eSJoseph Mingrone vpp*|vx|vx-*) 914ee67461eSJoseph Mingrone cpu=f301 915ee67461eSJoseph Mingrone vendor=fujitsu 916ee67461eSJoseph Mingrone ;; 917ee67461eSJoseph Mingrone w65) 918ee67461eSJoseph Mingrone cpu=w65 919ee67461eSJoseph Mingrone vendor=wdc 920ee67461eSJoseph Mingrone ;; 921ee67461eSJoseph Mingrone w89k-*) 922ee67461eSJoseph Mingrone cpu=hppa1.1 923ee67461eSJoseph Mingrone vendor=winbond 924ee67461eSJoseph Mingrone basic_os=proelf 925ee67461eSJoseph Mingrone ;; 926ee67461eSJoseph Mingrone none) 927ee67461eSJoseph Mingrone cpu=none 928ee67461eSJoseph Mingrone vendor=none 929ee67461eSJoseph Mingrone ;; 930ee67461eSJoseph Mingrone leon|leon[3-9]) 931ee67461eSJoseph Mingrone cpu=sparc 932ee67461eSJoseph Mingrone vendor=$basic_machine 933ee67461eSJoseph Mingrone ;; 934ee67461eSJoseph Mingrone leon-*|leon[3-9]-*) 935ee67461eSJoseph Mingrone cpu=sparc 936ee67461eSJoseph Mingrone vendor=`echo "$basic_machine" | sed 's/-.*//'` 937ee67461eSJoseph Mingrone ;; 938ee67461eSJoseph Mingrone 939ee67461eSJoseph Mingrone *-*) 940ee67461eSJoseph Mingrone # shellcheck disable=SC2162 941ee67461eSJoseph Mingrone saved_IFS=$IFS 942ee67461eSJoseph Mingrone IFS="-" read cpu vendor <<EOF 943ee67461eSJoseph Mingrone$basic_machine 944ee67461eSJoseph MingroneEOF 945ee67461eSJoseph Mingrone IFS=$saved_IFS 946ee67461eSJoseph Mingrone ;; 947*0a7e5f1fSJoseph Mingrone # We use 'pc' rather than 'unknown' 948ee67461eSJoseph Mingrone # because (1) that's what they normally are, and 949ee67461eSJoseph Mingrone # (2) the word "unknown" tends to confuse beginning users. 950ee67461eSJoseph Mingrone i*86 | x86_64) 951ee67461eSJoseph Mingrone cpu=$basic_machine 952ee67461eSJoseph Mingrone vendor=pc 953ee67461eSJoseph Mingrone ;; 954ee67461eSJoseph Mingrone # These rules are duplicated from below for sake of the special case above; 955ee67461eSJoseph Mingrone # i.e. things that normalized to x86 arches should also default to "pc" 956ee67461eSJoseph Mingrone pc98) 957ee67461eSJoseph Mingrone cpu=i386 958ee67461eSJoseph Mingrone vendor=pc 959ee67461eSJoseph Mingrone ;; 960ee67461eSJoseph Mingrone x64 | amd64) 961ee67461eSJoseph Mingrone cpu=x86_64 962ee67461eSJoseph Mingrone vendor=pc 963ee67461eSJoseph Mingrone ;; 9644edb46e9SPaul Traina # Recognize the basic CPU types without company name. 965ee67461eSJoseph Mingrone *) 966ee67461eSJoseph Mingrone cpu=$basic_machine 967ee67461eSJoseph Mingrone vendor=unknown 968ee67461eSJoseph Mingrone ;; 969ee67461eSJoseph Mingroneesac 970ee67461eSJoseph Mingrone 971ee67461eSJoseph Mingroneunset -v basic_machine 972ee67461eSJoseph Mingrone 973ee67461eSJoseph Mingrone# Decode basic machines in the full and proper CPU-Company form. 974ee67461eSJoseph Mingronecase $cpu-$vendor in 975ee67461eSJoseph Mingrone # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 976ee67461eSJoseph Mingrone # some cases the only manufacturer, in others, it is the most popular. 977ee67461eSJoseph Mingrone craynv-unknown) 978ee67461eSJoseph Mingrone vendor=cray 979ee67461eSJoseph Mingrone basic_os=${basic_os:-unicosmp} 980ee67461eSJoseph Mingrone ;; 981ee67461eSJoseph Mingrone c90-unknown | c90-cray) 982ee67461eSJoseph Mingrone vendor=cray 983ee67461eSJoseph Mingrone basic_os=${Basic_os:-unicos} 984ee67461eSJoseph Mingrone ;; 985ee67461eSJoseph Mingrone fx80-unknown) 986ee67461eSJoseph Mingrone vendor=alliant 987ee67461eSJoseph Mingrone ;; 988ee67461eSJoseph Mingrone romp-unknown) 989ee67461eSJoseph Mingrone vendor=ibm 990ee67461eSJoseph Mingrone ;; 991ee67461eSJoseph Mingrone mmix-unknown) 992ee67461eSJoseph Mingrone vendor=knuth 993ee67461eSJoseph Mingrone ;; 994ee67461eSJoseph Mingrone microblaze-unknown | microblazeel-unknown) 995ee67461eSJoseph Mingrone vendor=xilinx 996ee67461eSJoseph Mingrone ;; 997ee67461eSJoseph Mingrone rs6000-unknown) 998ee67461eSJoseph Mingrone vendor=ibm 999ee67461eSJoseph Mingrone ;; 1000ee67461eSJoseph Mingrone vax-unknown) 1001ee67461eSJoseph Mingrone vendor=dec 1002ee67461eSJoseph Mingrone ;; 1003ee67461eSJoseph Mingrone pdp11-unknown) 1004ee67461eSJoseph Mingrone vendor=dec 1005ee67461eSJoseph Mingrone ;; 1006ee67461eSJoseph Mingrone we32k-unknown) 1007ee67461eSJoseph Mingrone vendor=att 1008ee67461eSJoseph Mingrone ;; 1009ee67461eSJoseph Mingrone cydra-unknown) 1010ee67461eSJoseph Mingrone vendor=cydrome 1011ee67461eSJoseph Mingrone ;; 1012ee67461eSJoseph Mingrone i370-ibm*) 1013ee67461eSJoseph Mingrone vendor=ibm 1014ee67461eSJoseph Mingrone ;; 1015ee67461eSJoseph Mingrone orion-unknown) 1016ee67461eSJoseph Mingrone vendor=highlevel 1017ee67461eSJoseph Mingrone ;; 1018ee67461eSJoseph Mingrone xps-unknown | xps100-unknown) 1019ee67461eSJoseph Mingrone cpu=xps100 1020ee67461eSJoseph Mingrone vendor=honeywell 1021ee67461eSJoseph Mingrone ;; 1022ee67461eSJoseph Mingrone 1023ee67461eSJoseph Mingrone # Here we normalize CPU types with a missing or matching vendor 1024ee67461eSJoseph Mingrone armh-unknown | armh-alt) 1025ee67461eSJoseph Mingrone cpu=armv7l 1026ee67461eSJoseph Mingrone vendor=alt 1027ee67461eSJoseph Mingrone basic_os=${basic_os:-linux-gnueabihf} 1028ee67461eSJoseph Mingrone ;; 1029ee67461eSJoseph Mingrone dpx20-unknown | dpx20-bull) 1030ee67461eSJoseph Mingrone cpu=rs6000 1031ee67461eSJoseph Mingrone vendor=bull 1032ee67461eSJoseph Mingrone basic_os=${basic_os:-bosx} 1033ee67461eSJoseph Mingrone ;; 1034ee67461eSJoseph Mingrone 1035ee67461eSJoseph Mingrone # Here we normalize CPU types irrespective of the vendor 1036ee67461eSJoseph Mingrone amd64-*) 1037ee67461eSJoseph Mingrone cpu=x86_64 1038ee67461eSJoseph Mingrone ;; 1039ee67461eSJoseph Mingrone blackfin-*) 1040ee67461eSJoseph Mingrone cpu=bfin 1041ee67461eSJoseph Mingrone basic_os=linux 1042ee67461eSJoseph Mingrone ;; 1043ee67461eSJoseph Mingrone c54x-*) 1044ee67461eSJoseph Mingrone cpu=tic54x 1045ee67461eSJoseph Mingrone ;; 1046ee67461eSJoseph Mingrone c55x-*) 1047ee67461eSJoseph Mingrone cpu=tic55x 1048ee67461eSJoseph Mingrone ;; 1049ee67461eSJoseph Mingrone c6x-*) 1050ee67461eSJoseph Mingrone cpu=tic6x 1051ee67461eSJoseph Mingrone ;; 1052ee67461eSJoseph Mingrone e500v[12]-*) 1053ee67461eSJoseph Mingrone cpu=powerpc 1054ee67461eSJoseph Mingrone basic_os=${basic_os}"spe" 1055ee67461eSJoseph Mingrone ;; 1056ee67461eSJoseph Mingrone mips3*-*) 1057ee67461eSJoseph Mingrone cpu=mips64 1058ee67461eSJoseph Mingrone ;; 1059ee67461eSJoseph Mingrone ms1-*) 1060ee67461eSJoseph Mingrone cpu=mt 1061ee67461eSJoseph Mingrone ;; 1062ee67461eSJoseph Mingrone m68knommu-*) 1063ee67461eSJoseph Mingrone cpu=m68k 1064ee67461eSJoseph Mingrone basic_os=linux 1065ee67461eSJoseph Mingrone ;; 1066ee67461eSJoseph Mingrone m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1067ee67461eSJoseph Mingrone cpu=s12z 1068ee67461eSJoseph Mingrone ;; 1069ee67461eSJoseph Mingrone openrisc-*) 1070ee67461eSJoseph Mingrone cpu=or32 1071ee67461eSJoseph Mingrone ;; 1072ee67461eSJoseph Mingrone parisc-*) 1073ee67461eSJoseph Mingrone cpu=hppa 1074ee67461eSJoseph Mingrone basic_os=linux 1075ee67461eSJoseph Mingrone ;; 1076ee67461eSJoseph Mingrone pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1077ee67461eSJoseph Mingrone cpu=i586 1078ee67461eSJoseph Mingrone ;; 1079ee67461eSJoseph Mingrone pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1080ee67461eSJoseph Mingrone cpu=i686 1081ee67461eSJoseph Mingrone ;; 1082ee67461eSJoseph Mingrone pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1083ee67461eSJoseph Mingrone cpu=i686 1084ee67461eSJoseph Mingrone ;; 1085ee67461eSJoseph Mingrone pentium4-*) 1086ee67461eSJoseph Mingrone cpu=i786 1087ee67461eSJoseph Mingrone ;; 1088ee67461eSJoseph Mingrone pc98-*) 1089ee67461eSJoseph Mingrone cpu=i386 1090ee67461eSJoseph Mingrone ;; 1091ee67461eSJoseph Mingrone ppc-* | ppcbe-*) 1092ee67461eSJoseph Mingrone cpu=powerpc 1093ee67461eSJoseph Mingrone ;; 1094ee67461eSJoseph Mingrone ppcle-* | powerpclittle-*) 1095ee67461eSJoseph Mingrone cpu=powerpcle 1096ee67461eSJoseph Mingrone ;; 1097ee67461eSJoseph Mingrone ppc64-*) 1098ee67461eSJoseph Mingrone cpu=powerpc64 1099ee67461eSJoseph Mingrone ;; 1100ee67461eSJoseph Mingrone ppc64le-* | powerpc64little-*) 1101ee67461eSJoseph Mingrone cpu=powerpc64le 1102ee67461eSJoseph Mingrone ;; 1103ee67461eSJoseph Mingrone sb1-*) 1104ee67461eSJoseph Mingrone cpu=mipsisa64sb1 1105ee67461eSJoseph Mingrone ;; 1106ee67461eSJoseph Mingrone sb1el-*) 1107ee67461eSJoseph Mingrone cpu=mipsisa64sb1el 1108ee67461eSJoseph Mingrone ;; 1109ee67461eSJoseph Mingrone sh5e[lb]-*) 1110ee67461eSJoseph Mingrone cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1111ee67461eSJoseph Mingrone ;; 1112ee67461eSJoseph Mingrone spur-*) 1113ee67461eSJoseph Mingrone cpu=spur 1114ee67461eSJoseph Mingrone ;; 1115ee67461eSJoseph Mingrone strongarm-* | thumb-*) 1116ee67461eSJoseph Mingrone cpu=arm 1117ee67461eSJoseph Mingrone ;; 1118ee67461eSJoseph Mingrone tx39-*) 1119ee67461eSJoseph Mingrone cpu=mipstx39 1120ee67461eSJoseph Mingrone ;; 1121ee67461eSJoseph Mingrone tx39el-*) 1122ee67461eSJoseph Mingrone cpu=mipstx39el 1123ee67461eSJoseph Mingrone ;; 1124ee67461eSJoseph Mingrone x64-*) 1125ee67461eSJoseph Mingrone cpu=x86_64 1126ee67461eSJoseph Mingrone ;; 1127ee67461eSJoseph Mingrone xscale-* | xscalee[bl]-*) 1128ee67461eSJoseph Mingrone cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1129ee67461eSJoseph Mingrone ;; 1130ee67461eSJoseph Mingrone arm64-* | aarch64le-*) 1131ee67461eSJoseph Mingrone cpu=aarch64 1132ee67461eSJoseph Mingrone ;; 1133ee67461eSJoseph Mingrone 1134ee67461eSJoseph Mingrone # Recognize the canonical CPU Types that limit and/or modify the 1135ee67461eSJoseph Mingrone # company names they are paired with. 1136ee67461eSJoseph Mingrone cr16-*) 1137ee67461eSJoseph Mingrone basic_os=${basic_os:-elf} 1138ee67461eSJoseph Mingrone ;; 1139ee67461eSJoseph Mingrone crisv32-* | etraxfs*-*) 1140ee67461eSJoseph Mingrone cpu=crisv32 1141ee67461eSJoseph Mingrone vendor=axis 1142ee67461eSJoseph Mingrone ;; 1143ee67461eSJoseph Mingrone cris-* | etrax*-*) 1144ee67461eSJoseph Mingrone cpu=cris 1145ee67461eSJoseph Mingrone vendor=axis 1146ee67461eSJoseph Mingrone ;; 1147ee67461eSJoseph Mingrone crx-*) 1148ee67461eSJoseph Mingrone basic_os=${basic_os:-elf} 1149ee67461eSJoseph Mingrone ;; 1150ee67461eSJoseph Mingrone neo-tandem) 1151ee67461eSJoseph Mingrone cpu=neo 1152ee67461eSJoseph Mingrone vendor=tandem 1153ee67461eSJoseph Mingrone ;; 1154ee67461eSJoseph Mingrone nse-tandem) 1155ee67461eSJoseph Mingrone cpu=nse 1156ee67461eSJoseph Mingrone vendor=tandem 1157ee67461eSJoseph Mingrone ;; 1158ee67461eSJoseph Mingrone nsr-tandem) 1159ee67461eSJoseph Mingrone cpu=nsr 1160ee67461eSJoseph Mingrone vendor=tandem 1161ee67461eSJoseph Mingrone ;; 1162ee67461eSJoseph Mingrone nsv-tandem) 1163ee67461eSJoseph Mingrone cpu=nsv 1164ee67461eSJoseph Mingrone vendor=tandem 1165ee67461eSJoseph Mingrone ;; 1166ee67461eSJoseph Mingrone nsx-tandem) 1167ee67461eSJoseph Mingrone cpu=nsx 1168ee67461eSJoseph Mingrone vendor=tandem 1169ee67461eSJoseph Mingrone ;; 1170ee67461eSJoseph Mingrone mipsallegrexel-sony) 1171ee67461eSJoseph Mingrone cpu=mipsallegrexel 1172ee67461eSJoseph Mingrone vendor=sony 1173ee67461eSJoseph Mingrone ;; 1174ee67461eSJoseph Mingrone tile*-*) 1175ee67461eSJoseph Mingrone basic_os=${basic_os:-linux-gnu} 1176ee67461eSJoseph Mingrone ;; 1177ee67461eSJoseph Mingrone 1178ee67461eSJoseph Mingrone *) 1179ee67461eSJoseph Mingrone # Recognize the canonical CPU types that are allowed with any 1180ee67461eSJoseph Mingrone # company name. 1181ee67461eSJoseph Mingrone case $cpu in 11825b0fe478SBruce M Simpson 1750a | 580 \ 11835b0fe478SBruce M Simpson | a29k \ 1184*0a7e5f1fSJoseph Mingrone | aarch64 | aarch64_be | aarch64c | arm64ec \ 1185ee67461eSJoseph Mingrone | abacus \ 1186ee67461eSJoseph Mingrone | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1187ee67461eSJoseph Mingrone | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1188ee67461eSJoseph Mingrone | alphapca5[67] | alpha64pca5[67] \ 11895b0fe478SBruce M Simpson | am33_2.0 \ 1190ee67461eSJoseph Mingrone | amdgcn \ 1191ee67461eSJoseph Mingrone | arc | arceb | arc32 | arc64 \ 1192ee67461eSJoseph Mingrone | arm | arm[lb]e | arme[lb] | armv* \ 11938bdc5a62SPatrick Kelsey | avr | avr32 \ 1194ee67461eSJoseph Mingrone | asmjs \ 119539e421e8SCy Schubert | ba \ 11963c602fabSXin LI | be32 | be64 \ 1197ee67461eSJoseph Mingrone | bfin | bpf | bs2000 \ 1198ee67461eSJoseph Mingrone | c[123]* | c30 | [cjt]90 | c4x \ 1199ee67461eSJoseph Mingrone | c8051 | clipper | craynv | csky | cydra \ 12005b0fe478SBruce M Simpson | d10v | d30v | dlx | dsp16xx \ 1201ee67461eSJoseph Mingrone | e2k | elxsi | epiphany \ 1202ee67461eSJoseph Mingrone | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1203*0a7e5f1fSJoseph Mingrone | javascript \ 1204ee67461eSJoseph Mingrone | h8300 | h8500 \ 1205ee67461eSJoseph Mingrone | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 12063c602fabSXin LI | hexagon \ 1207ee67461eSJoseph Mingrone | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12085b0fe478SBruce M Simpson | ip2k | iq2000 \ 12098bdc5a62SPatrick Kelsey | k1om \ 1210*0a7e5f1fSJoseph Mingrone | kvx \ 12113c602fabSXin LI | le32 | le64 \ 121227df3f5dSRui Paulo | lm32 \ 1213ee67461eSJoseph Mingrone | loongarch32 | loongarch64 \ 1214ee67461eSJoseph Mingrone | m32c | m32r | m32rle \ 1215ee67461eSJoseph Mingrone | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 1216ee67461eSJoseph Mingrone | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1217ee67461eSJoseph Mingrone | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1218ee67461eSJoseph Mingrone | microblaze | microblazeel \ 1219*0a7e5f1fSJoseph Mingrone | mips* \ 1220ee67461eSJoseph Mingrone | mmix \ 12215b0fe478SBruce M Simpson | mn10200 | mn10300 \ 122227df3f5dSRui Paulo | moxie \ 122327df3f5dSRui Paulo | mt \ 12245b0fe478SBruce M Simpson | msp430 \ 1225*0a7e5f1fSJoseph Mingrone | nanomips* \ 12263c602fabSXin LI | nds32 | nds32le | nds32be \ 122739e421e8SCy Schubert | nfp \ 12288bdc5a62SPatrick Kelsey | nios | nios2 | nios2eb | nios2el \ 1229ee67461eSJoseph Mingrone | none | np1 | ns16k | ns32k | nvptx \ 1230ee67461eSJoseph Mingrone | open8 \ 1231ee67461eSJoseph Mingrone | or1k* \ 1232ee67461eSJoseph Mingrone | or32 \ 1233ee67461eSJoseph Mingrone | orion \ 1234ee67461eSJoseph Mingrone | picochip \ 1235ee67461eSJoseph Mingrone | pdp10 | pdp11 | pj | pjl | pn | power \ 1236ee67461eSJoseph Mingrone | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 123739e421e8SCy Schubert | pru \ 12385b0fe478SBruce M Simpson | pyramid \ 1239ee67461eSJoseph Mingrone | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1240ee67461eSJoseph Mingrone | rl78 | romp | rs6000 | rx \ 1241ee67461eSJoseph Mingrone | s390 | s390x \ 124227df3f5dSRui Paulo | score \ 1243ee67461eSJoseph Mingrone | sh | shl \ 1244ee67461eSJoseph Mingrone | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1245ee67461eSJoseph Mingrone | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1246ee67461eSJoseph Mingrone | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1247ee67461eSJoseph Mingrone | sparclite \ 1248ee67461eSJoseph Mingrone | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12493c602fabSXin LI | spu \ 1250ee67461eSJoseph Mingrone | tahoe \ 1251ee67461eSJoseph Mingrone | thumbv7* \ 1252ee67461eSJoseph Mingrone | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1253ee67461eSJoseph Mingrone | tron \ 125427df3f5dSRui Paulo | ubicom32 \ 1255ee67461eSJoseph Mingrone | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1256ee67461eSJoseph Mingrone | vax \ 1257*0a7e5f1fSJoseph Mingrone | vc4 \ 12588bdc5a62SPatrick Kelsey | visium \ 1259ee67461eSJoseph Mingrone | w65 \ 1260ee67461eSJoseph Mingrone | wasm32 | wasm64 \ 1261ee67461eSJoseph Mingrone | we32k \ 1262ee67461eSJoseph Mingrone | x86 | x86_64 | xc16x | xgate | xps100 \ 1263ee67461eSJoseph Mingrone | xstormy16 | xtensa* \ 1264ee67461eSJoseph Mingrone | ymp \ 126527df3f5dSRui Paulo | z8k | z80) 12663c602fabSXin LI ;; 12673c602fabSXin LI 12684edb46e9SPaul Traina *) 1269*0a7e5f1fSJoseph Mingrone echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 12704edb46e9SPaul Traina exit 1 12714edb46e9SPaul Traina ;; 12724edb46e9SPaul Traina esac 1273ee67461eSJoseph Mingrone ;; 1274ee67461eSJoseph Mingroneesac 12754edb46e9SPaul Traina 12764edb46e9SPaul Traina# Here we canonicalize certain aliases for manufacturers. 1277ee67461eSJoseph Mingronecase $vendor in 1278ee67461eSJoseph Mingrone digital*) 1279ee67461eSJoseph Mingrone vendor=dec 12804edb46e9SPaul Traina ;; 1281ee67461eSJoseph Mingrone commodore*) 1282ee67461eSJoseph Mingrone vendor=cbm 12834edb46e9SPaul Traina ;; 12844edb46e9SPaul Traina *) 12854edb46e9SPaul Traina ;; 12864edb46e9SPaul Trainaesac 12874edb46e9SPaul Traina 12884edb46e9SPaul Traina# Decode manufacturer-specific aliases for certain operating systems. 12894edb46e9SPaul Traina 1290*0a7e5f1fSJoseph Mingroneif test x"$basic_os" != x 12914edb46e9SPaul Trainathen 1292ee67461eSJoseph Mingrone 1293ee67461eSJoseph Mingrone# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1294ee67461eSJoseph Mingrone# set os. 1295*0a7e5f1fSJoseph Mingroneobj= 1296ee67461eSJoseph Mingronecase $basic_os in 1297ee67461eSJoseph Mingrone gnu/linux*) 1298ee67461eSJoseph Mingrone kernel=linux 1299ee67461eSJoseph Mingrone os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 1300ee67461eSJoseph Mingrone ;; 1301ee67461eSJoseph Mingrone os2-emx) 1302ee67461eSJoseph Mingrone kernel=os2 1303ee67461eSJoseph Mingrone os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 1304ee67461eSJoseph Mingrone ;; 1305ee67461eSJoseph Mingrone nto-qnx*) 1306ee67461eSJoseph Mingrone kernel=nto 1307ee67461eSJoseph Mingrone os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 1308ee67461eSJoseph Mingrone ;; 1309ee67461eSJoseph Mingrone *-*) 1310ee67461eSJoseph Mingrone # shellcheck disable=SC2162 1311ee67461eSJoseph Mingrone saved_IFS=$IFS 1312ee67461eSJoseph Mingrone IFS="-" read kernel os <<EOF 1313ee67461eSJoseph Mingrone$basic_os 1314ee67461eSJoseph MingroneEOF 1315ee67461eSJoseph Mingrone IFS=$saved_IFS 1316ee67461eSJoseph Mingrone ;; 1317ee67461eSJoseph Mingrone # Default OS when just kernel was specified 1318ee67461eSJoseph Mingrone nto*) 1319ee67461eSJoseph Mingrone kernel=nto 1320ee67461eSJoseph Mingrone os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 1321ee67461eSJoseph Mingrone ;; 1322ee67461eSJoseph Mingrone linux*) 1323ee67461eSJoseph Mingrone kernel=linux 1324ee67461eSJoseph Mingrone os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 1325ee67461eSJoseph Mingrone ;; 1326ee67461eSJoseph Mingrone managarm*) 1327ee67461eSJoseph Mingrone kernel=managarm 1328ee67461eSJoseph Mingrone os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1329ee67461eSJoseph Mingrone ;; 1330ee67461eSJoseph Mingrone *) 1331ee67461eSJoseph Mingrone kernel= 1332ee67461eSJoseph Mingrone os=$basic_os 1333ee67461eSJoseph Mingrone ;; 1334ee67461eSJoseph Mingroneesac 1335ee67461eSJoseph Mingrone 1336ee67461eSJoseph Mingrone# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1337ee67461eSJoseph Mingrone# etc.) 13384edb46e9SPaul Trainacase $os in 133939e421e8SCy Schubert # First match some system type aliases that might get confused 134039e421e8SCy Schubert # with valid system types. 134139e421e8SCy Schubert # solaris* is a basic system type, with this one exception. 134239e421e8SCy Schubert auroraux) 134339e421e8SCy Schubert os=auroraux 134427df3f5dSRui Paulo ;; 134539e421e8SCy Schubert bluegene*) 134639e421e8SCy Schubert os=cnk 134739e421e8SCy Schubert ;; 134839e421e8SCy Schubert solaris1 | solaris1.*) 1349ee67461eSJoseph Mingrone os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13504edb46e9SPaul Traina ;; 135139e421e8SCy Schubert solaris) 135239e421e8SCy Schubert os=solaris2 13534edb46e9SPaul Traina ;; 135439e421e8SCy Schubert unixware*) 135539e421e8SCy Schubert os=sysv4.2uw 13564edb46e9SPaul Traina ;; 135739e421e8SCy Schubert # es1800 is here to avoid being matched by es* (a different OS) 135839e421e8SCy Schubert es1800*) 135939e421e8SCy Schubert os=ose 136039e421e8SCy Schubert ;; 136139e421e8SCy Schubert # Some version numbers need modification 136239e421e8SCy Schubert chorusos*) 136339e421e8SCy Schubert os=chorusos 136439e421e8SCy Schubert ;; 136539e421e8SCy Schubert isc) 136639e421e8SCy Schubert os=isc2.2 136739e421e8SCy Schubert ;; 136839e421e8SCy Schubert sco6) 136939e421e8SCy Schubert os=sco5v6 137039e421e8SCy Schubert ;; 137139e421e8SCy Schubert sco5) 137239e421e8SCy Schubert os=sco3.2v5 137339e421e8SCy Schubert ;; 137439e421e8SCy Schubert sco4) 137539e421e8SCy Schubert os=sco3.2v4 137639e421e8SCy Schubert ;; 137739e421e8SCy Schubert sco3.2.[4-9]*) 1378ee67461eSJoseph Mingrone os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 137939e421e8SCy Schubert ;; 1380ee67461eSJoseph Mingrone sco*v* | scout) 138139e421e8SCy Schubert # Don't match below 138239e421e8SCy Schubert ;; 138339e421e8SCy Schubert sco*) 138439e421e8SCy Schubert os=sco3.2v2 138539e421e8SCy Schubert ;; 138639e421e8SCy Schubert psos*) 138739e421e8SCy Schubert os=psos 138839e421e8SCy Schubert ;; 138939e421e8SCy Schubert qnx*) 1390ee67461eSJoseph Mingrone os=qnx 1391685295f4SBill Fenner ;; 139239e421e8SCy Schubert hiux*) 139339e421e8SCy Schubert os=hiuxwe2 13945b0fe478SBruce M Simpson ;; 139539e421e8SCy Schubert lynx*178) 139639e421e8SCy Schubert os=lynxos178 13974edb46e9SPaul Traina ;; 139839e421e8SCy Schubert lynx*5) 139939e421e8SCy Schubert os=lynxos5 14004edb46e9SPaul Traina ;; 1401ee67461eSJoseph Mingrone lynxos*) 1402ee67461eSJoseph Mingrone # don't get caught up in next wildcard 1403ee67461eSJoseph Mingrone ;; 140439e421e8SCy Schubert lynx*) 140539e421e8SCy Schubert os=lynxos 1406685295f4SBill Fenner ;; 1407ee67461eSJoseph Mingrone mac[0-9]*) 140839e421e8SCy Schubert os=`echo "$os" | sed -e 's|mac|macos|'` 14095b0fe478SBruce M Simpson ;; 141039e421e8SCy Schubert opened*) 141139e421e8SCy Schubert os=openedition 1412685295f4SBill Fenner ;; 141339e421e8SCy Schubert os400*) 141439e421e8SCy Schubert os=os400 14154edb46e9SPaul Traina ;; 141639e421e8SCy Schubert sunos5*) 141739e421e8SCy Schubert os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14184edb46e9SPaul Traina ;; 141939e421e8SCy Schubert sunos6*) 142039e421e8SCy Schubert os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14214edb46e9SPaul Traina ;; 142239e421e8SCy Schubert wince*) 142339e421e8SCy Schubert os=wince 14244edb46e9SPaul Traina ;; 142539e421e8SCy Schubert utek*) 142639e421e8SCy Schubert os=bsd 14274edb46e9SPaul Traina ;; 142839e421e8SCy Schubert dynix*) 142939e421e8SCy Schubert os=bsd 14305b0fe478SBruce M Simpson ;; 143139e421e8SCy Schubert acis*) 143239e421e8SCy Schubert os=aos 143327df3f5dSRui Paulo ;; 143439e421e8SCy Schubert atheos*) 143539e421e8SCy Schubert os=atheos 1436685295f4SBill Fenner ;; 143739e421e8SCy Schubert syllable*) 143839e421e8SCy Schubert os=syllable 14394edb46e9SPaul Traina ;; 144039e421e8SCy Schubert 386bsd) 144139e421e8SCy Schubert os=bsd 14425b0fe478SBruce M Simpson ;; 144339e421e8SCy Schubert ctix* | uts*) 144439e421e8SCy Schubert os=sysv 14454de76e31SBill Fenner ;; 144639e421e8SCy Schubert nova*) 144739e421e8SCy Schubert os=rtmk-nova 144839e421e8SCy Schubert ;; 144939e421e8SCy Schubert ns2) 145039e421e8SCy Schubert os=nextstep2 145139e421e8SCy Schubert ;; 14524edb46e9SPaul Traina # Preserve the version number of sinix5. 145339e421e8SCy Schubert sinix5.*) 1454ee67461eSJoseph Mingrone os=`echo "$os" | sed -e 's|sinix|sysv|'` 14554edb46e9SPaul Traina ;; 145639e421e8SCy Schubert sinix*) 145739e421e8SCy Schubert os=sysv4 14584edb46e9SPaul Traina ;; 145939e421e8SCy Schubert tpf*) 146039e421e8SCy Schubert os=tpf 14615b0fe478SBruce M Simpson ;; 146239e421e8SCy Schubert triton*) 146339e421e8SCy Schubert os=sysv3 14644edb46e9SPaul Traina ;; 146539e421e8SCy Schubert oss*) 146639e421e8SCy Schubert os=sysv3 14674edb46e9SPaul Traina ;; 146839e421e8SCy Schubert svr4*) 146939e421e8SCy Schubert os=sysv4 14704edb46e9SPaul Traina ;; 147139e421e8SCy Schubert svr3) 147239e421e8SCy Schubert os=sysv3 14734edb46e9SPaul Traina ;; 147439e421e8SCy Schubert sysvr4) 147539e421e8SCy Schubert os=sysv4 14764edb46e9SPaul Traina ;; 147739e421e8SCy Schubert ose*) 147839e421e8SCy Schubert os=ose 1479685295f4SBill Fenner ;; 148039e421e8SCy Schubert *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 148139e421e8SCy Schubert os=mint 1482685295f4SBill Fenner ;; 148339e421e8SCy Schubert dicos*) 148439e421e8SCy Schubert os=dicos 1485685295f4SBill Fenner ;; 148639e421e8SCy Schubert pikeos*) 148739e421e8SCy Schubert # Until real need of OS specific support for 148839e421e8SCy Schubert # particular features comes up, bare metal 148939e421e8SCy Schubert # configurations are quite functional. 1490ee67461eSJoseph Mingrone case $cpu in 149139e421e8SCy Schubert arm*) 149239e421e8SCy Schubert os=eabi 14934edb46e9SPaul Traina ;; 14944edb46e9SPaul Traina *) 1495*0a7e5f1fSJoseph Mingrone os= 1496*0a7e5f1fSJoseph Mingrone obj=elf 149739e421e8SCy Schubert ;; 149839e421e8SCy Schubert esac 149939e421e8SCy Schubert ;; 1500*0a7e5f1fSJoseph Mingrone aout* | coff* | elf* | pe*) 1501*0a7e5f1fSJoseph Mingrone # These are machine code file formats, not OSes 1502*0a7e5f1fSJoseph Mingrone obj=$os 1503*0a7e5f1fSJoseph Mingrone os= 1504*0a7e5f1fSJoseph Mingrone ;; 150539e421e8SCy Schubert *) 1506ee67461eSJoseph Mingrone # No normalization, but not necessarily accepted, that comes below. 15074edb46e9SPaul Traina ;; 15084edb46e9SPaul Trainaesac 1509ee67461eSJoseph Mingrone 15104edb46e9SPaul Trainaelse 15114edb46e9SPaul Traina 15124edb46e9SPaul Traina# Here we handle the default operating systems that come with various machines. 15134edb46e9SPaul Traina# The value should be what the vendor currently ships out the door with their 15144edb46e9SPaul Traina# machine or put another way, the most popular os provided with the machine. 15154edb46e9SPaul Traina 15164edb46e9SPaul Traina# Note that if you're going to try to match "-MANUFACTURER" here (say, 15174edb46e9SPaul Traina# "-sun"), then you have to tell the case statement up towards the top 15184edb46e9SPaul Traina# that MANUFACTURER isn't an operating system. Otherwise, code above 15194edb46e9SPaul Traina# will signal an error saying that MANUFACTURER isn't an operating 15204edb46e9SPaul Traina# system, and we'll never get to this point. 15214edb46e9SPaul Traina 1522ee67461eSJoseph Mingronekernel= 1523*0a7e5f1fSJoseph Mingroneobj= 1524ee67461eSJoseph Mingronecase $cpu-$vendor in 152527df3f5dSRui Paulo score-*) 1526*0a7e5f1fSJoseph Mingrone os= 1527*0a7e5f1fSJoseph Mingrone obj=elf 152827df3f5dSRui Paulo ;; 152927df3f5dSRui Paulo spu-*) 1530*0a7e5f1fSJoseph Mingrone os= 1531*0a7e5f1fSJoseph Mingrone obj=elf 153227df3f5dSRui Paulo ;; 15334edb46e9SPaul Traina *-acorn) 153439e421e8SCy Schubert os=riscix1.2 15354edb46e9SPaul Traina ;; 1536685295f4SBill Fenner arm*-rebel) 1537ee67461eSJoseph Mingrone kernel=linux 1538ee67461eSJoseph Mingrone os=gnu 1539685295f4SBill Fenner ;; 15404edb46e9SPaul Traina arm*-semi) 1541*0a7e5f1fSJoseph Mingrone os= 1542*0a7e5f1fSJoseph Mingrone obj=aout 15434edb46e9SPaul Traina ;; 15445b0fe478SBruce M Simpson c4x-* | tic4x-*) 1545*0a7e5f1fSJoseph Mingrone os= 1546*0a7e5f1fSJoseph Mingrone obj=coff 15475b0fe478SBruce M Simpson ;; 15488bdc5a62SPatrick Kelsey c8051-*) 1549*0a7e5f1fSJoseph Mingrone os= 1550*0a7e5f1fSJoseph Mingrone obj=elf 155139e421e8SCy Schubert ;; 155239e421e8SCy Schubert clipper-intergraph) 155339e421e8SCy Schubert os=clix 15548bdc5a62SPatrick Kelsey ;; 15558bdc5a62SPatrick Kelsey hexagon-*) 1556*0a7e5f1fSJoseph Mingrone os= 1557*0a7e5f1fSJoseph Mingrone obj=elf 15588bdc5a62SPatrick Kelsey ;; 15593c602fabSXin LI tic54x-*) 1560*0a7e5f1fSJoseph Mingrone os= 1561*0a7e5f1fSJoseph Mingrone obj=coff 15623c602fabSXin LI ;; 15633c602fabSXin LI tic55x-*) 1564*0a7e5f1fSJoseph Mingrone os= 1565*0a7e5f1fSJoseph Mingrone obj=coff 15663c602fabSXin LI ;; 15673c602fabSXin LI tic6x-*) 1568*0a7e5f1fSJoseph Mingrone os= 1569*0a7e5f1fSJoseph Mingrone obj=coff 15703c602fabSXin LI ;; 15715b0fe478SBruce M Simpson # This must come before the *-dec entry. 1572a90e161bSBill Fenner pdp10-*) 157339e421e8SCy Schubert os=tops20 1574a90e161bSBill Fenner ;; 15754edb46e9SPaul Traina pdp11-*) 157639e421e8SCy Schubert os=none 15774edb46e9SPaul Traina ;; 15784edb46e9SPaul Traina *-dec | vax-*) 157939e421e8SCy Schubert os=ultrix4.2 15804edb46e9SPaul Traina ;; 15814edb46e9SPaul Traina m68*-apollo) 158239e421e8SCy Schubert os=domain 15834edb46e9SPaul Traina ;; 15844edb46e9SPaul Traina i386-sun) 158539e421e8SCy Schubert os=sunos4.0.2 15864edb46e9SPaul Traina ;; 15874edb46e9SPaul Traina m68000-sun) 158839e421e8SCy Schubert os=sunos3 15894edb46e9SPaul Traina ;; 1590685295f4SBill Fenner m68*-cisco) 1591*0a7e5f1fSJoseph Mingrone os= 1592*0a7e5f1fSJoseph Mingrone obj=aout 1593685295f4SBill Fenner ;; 159427df3f5dSRui Paulo mep-*) 1595*0a7e5f1fSJoseph Mingrone os= 1596*0a7e5f1fSJoseph Mingrone obj=elf 159727df3f5dSRui Paulo ;; 1598685295f4SBill Fenner mips*-cisco) 1599*0a7e5f1fSJoseph Mingrone os= 1600*0a7e5f1fSJoseph Mingrone obj=elf 1601685295f4SBill Fenner ;; 1602*0a7e5f1fSJoseph Mingrone mips*-*|nanomips*-*) 1603*0a7e5f1fSJoseph Mingrone os= 1604*0a7e5f1fSJoseph Mingrone obj=elf 1605685295f4SBill Fenner ;; 16065b0fe478SBruce M Simpson or32-*) 1607*0a7e5f1fSJoseph Mingrone os= 1608*0a7e5f1fSJoseph Mingrone obj=coff 16095b0fe478SBruce M Simpson ;; 16104edb46e9SPaul Traina *-tti) # must be before sparc entry or we get the wrong os. 161139e421e8SCy Schubert os=sysv3 16124edb46e9SPaul Traina ;; 16134edb46e9SPaul Traina sparc-* | *-sun) 161439e421e8SCy Schubert os=sunos4.1.1 161539e421e8SCy Schubert ;; 161639e421e8SCy Schubert pru-*) 1617*0a7e5f1fSJoseph Mingrone os= 1618*0a7e5f1fSJoseph Mingrone obj=elf 16194edb46e9SPaul Traina ;; 1620685295f4SBill Fenner *-be) 162139e421e8SCy Schubert os=beos 162227df3f5dSRui Paulo ;; 16234edb46e9SPaul Traina *-ibm) 162439e421e8SCy Schubert os=aix 16254edb46e9SPaul Traina ;; 162627df3f5dSRui Paulo *-knuth) 162739e421e8SCy Schubert os=mmixware 162827df3f5dSRui Paulo ;; 1629685295f4SBill Fenner *-wec) 163039e421e8SCy Schubert os=proelf 1631685295f4SBill Fenner ;; 1632685295f4SBill Fenner *-winbond) 163339e421e8SCy Schubert os=proelf 1634685295f4SBill Fenner ;; 1635685295f4SBill Fenner *-oki) 163639e421e8SCy Schubert os=proelf 1637685295f4SBill Fenner ;; 16384edb46e9SPaul Traina *-hp) 163939e421e8SCy Schubert os=hpux 16404edb46e9SPaul Traina ;; 16414edb46e9SPaul Traina *-hitachi) 164239e421e8SCy Schubert os=hiux 16434edb46e9SPaul Traina ;; 16444edb46e9SPaul Traina i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 164539e421e8SCy Schubert os=sysv 16464edb46e9SPaul Traina ;; 16474edb46e9SPaul Traina *-cbm) 164839e421e8SCy Schubert os=amigaos 16494edb46e9SPaul Traina ;; 16504edb46e9SPaul Traina *-dg) 165139e421e8SCy Schubert os=dgux 16524edb46e9SPaul Traina ;; 16534edb46e9SPaul Traina *-dolphin) 165439e421e8SCy Schubert os=sysv3 16554edb46e9SPaul Traina ;; 16564edb46e9SPaul Traina m68k-ccur) 165739e421e8SCy Schubert os=rtu 16584edb46e9SPaul Traina ;; 16594edb46e9SPaul Traina m88k-omron*) 166039e421e8SCy Schubert os=luna 16614edb46e9SPaul Traina ;; 16624de76e31SBill Fenner *-next) 166339e421e8SCy Schubert os=nextstep 16644de76e31SBill Fenner ;; 16654edb46e9SPaul Traina *-sequent) 166639e421e8SCy Schubert os=ptx 16674edb46e9SPaul Traina ;; 16684edb46e9SPaul Traina *-crds) 166939e421e8SCy Schubert os=unos 16704edb46e9SPaul Traina ;; 16714edb46e9SPaul Traina *-ns) 167239e421e8SCy Schubert os=genix 16734edb46e9SPaul Traina ;; 16744edb46e9SPaul Traina i370-*) 167539e421e8SCy Schubert os=mvs 16764edb46e9SPaul Traina ;; 16774edb46e9SPaul Traina *-gould) 167839e421e8SCy Schubert os=sysv 16794edb46e9SPaul Traina ;; 16804edb46e9SPaul Traina *-highlevel) 168139e421e8SCy Schubert os=bsd 16824edb46e9SPaul Traina ;; 16834edb46e9SPaul Traina *-encore) 168439e421e8SCy Schubert os=bsd 16854edb46e9SPaul Traina ;; 16864edb46e9SPaul Traina *-sgi) 168739e421e8SCy Schubert os=irix 16884edb46e9SPaul Traina ;; 16894edb46e9SPaul Traina *-siemens) 169039e421e8SCy Schubert os=sysv4 16914edb46e9SPaul Traina ;; 16924edb46e9SPaul Traina *-masscomp) 169339e421e8SCy Schubert os=rtu 16944edb46e9SPaul Traina ;; 1695a90e161bSBill Fenner f30[01]-fujitsu | f700-fujitsu) 169639e421e8SCy Schubert os=uxpv 16974de76e31SBill Fenner ;; 1698685295f4SBill Fenner *-rom68k) 1699*0a7e5f1fSJoseph Mingrone os= 1700*0a7e5f1fSJoseph Mingrone obj=coff 1701685295f4SBill Fenner ;; 1702685295f4SBill Fenner *-*bug) 1703*0a7e5f1fSJoseph Mingrone os= 1704*0a7e5f1fSJoseph Mingrone obj=coff 1705685295f4SBill Fenner ;; 1706685295f4SBill Fenner *-apple) 170739e421e8SCy Schubert os=macos 1708685295f4SBill Fenner ;; 1709685295f4SBill Fenner *-atari*) 171039e421e8SCy Schubert os=mint 171139e421e8SCy Schubert ;; 171239e421e8SCy Schubert *-wrs) 171339e421e8SCy Schubert os=vxworks 1714685295f4SBill Fenner ;; 17154edb46e9SPaul Traina *) 171639e421e8SCy Schubert os=none 17174edb46e9SPaul Traina ;; 17184edb46e9SPaul Trainaesac 1719ee67461eSJoseph Mingrone 17204edb46e9SPaul Trainafi 17214edb46e9SPaul Traina 1722*0a7e5f1fSJoseph Mingrone# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ). 1723*0a7e5f1fSJoseph Mingrone 1724ee67461eSJoseph Mingronecase $os in 1725ee67461eSJoseph Mingrone # Sometimes we do "kernel-libc", so those need to count as OSes. 1726*0a7e5f1fSJoseph Mingrone llvm* | musl* | newlib* | relibc* | uclibc*) 1727ee67461eSJoseph Mingrone ;; 1728ee67461eSJoseph Mingrone # Likewise for "kernel-abi" 1729ee67461eSJoseph Mingrone eabi* | gnueabi*) 1730ee67461eSJoseph Mingrone ;; 1731ee67461eSJoseph Mingrone # VxWorks passes extra cpu info in the 4th filed. 1732ee67461eSJoseph Mingrone simlinux | simwindows | spe) 1733ee67461eSJoseph Mingrone ;; 1734*0a7e5f1fSJoseph Mingrone # See `case $cpu-$os` validation below 1735*0a7e5f1fSJoseph Mingrone ghcjs) 1736*0a7e5f1fSJoseph Mingrone ;; 1737ee67461eSJoseph Mingrone # Now accept the basic system types. 1738ee67461eSJoseph Mingrone # The portable systems comes first. 1739ee67461eSJoseph Mingrone # Each alternative MUST end in a * to match a version number. 1740ee67461eSJoseph Mingrone gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 1741ee67461eSJoseph Mingrone | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 1742ee67461eSJoseph Mingrone | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 1743ee67461eSJoseph Mingrone | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 1744ee67461eSJoseph Mingrone | hiux* | abug | nacl* | netware* | windows* \ 1745*0a7e5f1fSJoseph Mingrone | os9* | macos* | osx* | ios* | tvos* | watchos* \ 1746ee67461eSJoseph Mingrone | mpw* | magic* | mmixware* | mon960* | lnews* \ 1747ee67461eSJoseph Mingrone | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 1748ee67461eSJoseph Mingrone | aos* | aros* | cloudabi* | sortix* | twizzler* \ 1749ee67461eSJoseph Mingrone | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 1750ee67461eSJoseph Mingrone | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 1751ee67461eSJoseph Mingrone | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 1752ee67461eSJoseph Mingrone | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 1753ee67461eSJoseph Mingrone | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1754*0a7e5f1fSJoseph Mingrone | bosx* | nextstep* | cxux* | oabi* \ 1755*0a7e5f1fSJoseph Mingrone | ptx* | ecoff* | winnt* | domain* | vsta* \ 1756ee67461eSJoseph Mingrone | udi* | lites* | ieee* | go32* | aux* | hcos* \ 1757ee67461eSJoseph Mingrone | chorusrdb* | cegcc* | glidix* | serenity* \ 1758*0a7e5f1fSJoseph Mingrone | cygwin* | msys* | moss* | proelf* | rtems* \ 1759ee67461eSJoseph Mingrone | midipix* | mingw32* | mingw64* | mint* \ 1760ee67461eSJoseph Mingrone | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 1761ee67461eSJoseph Mingrone | interix* | uwin* | mks* | rhapsody* | darwin* \ 1762ee67461eSJoseph Mingrone | openstep* | oskit* | conix* | pw32* | nonstopux* \ 1763ee67461eSJoseph Mingrone | storm-chaos* | tops10* | tenex* | tops20* | its* \ 1764ee67461eSJoseph Mingrone | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 1765ee67461eSJoseph Mingrone | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 1766ee67461eSJoseph Mingrone | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 1767ee67461eSJoseph Mingrone | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 1768ee67461eSJoseph Mingrone | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 1769ee67461eSJoseph Mingrone | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1770ee67461eSJoseph Mingrone | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1771*0a7e5f1fSJoseph Mingrone | fiwix* | mlibc* | cos* | mbr* | ironclad* ) 1772ee67461eSJoseph Mingrone ;; 1773ee67461eSJoseph Mingrone # This one is extra strict with allowed versions 1774ee67461eSJoseph Mingrone sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 1775ee67461eSJoseph Mingrone # Don't forget version if it is 3.2v4 or newer. 1776ee67461eSJoseph Mingrone ;; 1777*0a7e5f1fSJoseph Mingrone # This refers to builds using the UEFI calling convention 1778*0a7e5f1fSJoseph Mingrone # (which depends on the architecture) and PE file format. 1779*0a7e5f1fSJoseph Mingrone # Note that this is both a different calling convention and 1780*0a7e5f1fSJoseph Mingrone # different file format than that of GNU-EFI 1781*0a7e5f1fSJoseph Mingrone # (x86_64-w64-mingw32). 1782*0a7e5f1fSJoseph Mingrone uefi) 1783*0a7e5f1fSJoseph Mingrone ;; 1784ee67461eSJoseph Mingrone none) 1785ee67461eSJoseph Mingrone ;; 1786*0a7e5f1fSJoseph Mingrone kernel* | msvc* ) 1787ee67461eSJoseph Mingrone # Restricted further below 1788ee67461eSJoseph Mingrone ;; 1789*0a7e5f1fSJoseph Mingrone '') 1790*0a7e5f1fSJoseph Mingrone if test x"$obj" = x 1791*0a7e5f1fSJoseph Mingrone then 1792*0a7e5f1fSJoseph Mingrone echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2 1793*0a7e5f1fSJoseph Mingrone fi 1794*0a7e5f1fSJoseph Mingrone ;; 1795ee67461eSJoseph Mingrone *) 1796*0a7e5f1fSJoseph Mingrone echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 1797*0a7e5f1fSJoseph Mingrone exit 1 1798*0a7e5f1fSJoseph Mingrone ;; 1799*0a7e5f1fSJoseph Mingroneesac 1800*0a7e5f1fSJoseph Mingrone 1801*0a7e5f1fSJoseph Mingronecase $obj in 1802*0a7e5f1fSJoseph Mingrone aout* | coff* | elf* | pe*) 1803*0a7e5f1fSJoseph Mingrone ;; 1804*0a7e5f1fSJoseph Mingrone '') 1805*0a7e5f1fSJoseph Mingrone # empty is fine 1806*0a7e5f1fSJoseph Mingrone ;; 1807*0a7e5f1fSJoseph Mingrone *) 1808*0a7e5f1fSJoseph Mingrone echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 1809*0a7e5f1fSJoseph Mingrone exit 1 1810*0a7e5f1fSJoseph Mingrone ;; 1811*0a7e5f1fSJoseph Mingroneesac 1812*0a7e5f1fSJoseph Mingrone 1813*0a7e5f1fSJoseph Mingrone# Here we handle the constraint that a (synthetic) cpu and os are 1814*0a7e5f1fSJoseph Mingrone# valid only in combination with each other and nowhere else. 1815*0a7e5f1fSJoseph Mingronecase $cpu-$os in 1816*0a7e5f1fSJoseph Mingrone # The "javascript-unknown-ghcjs" triple is used by GHC; we 1817*0a7e5f1fSJoseph Mingrone # accept it here in order to tolerate that, but reject any 1818*0a7e5f1fSJoseph Mingrone # variations. 1819*0a7e5f1fSJoseph Mingrone javascript-ghcjs) 1820*0a7e5f1fSJoseph Mingrone ;; 1821*0a7e5f1fSJoseph Mingrone javascript-* | *-ghcjs) 1822*0a7e5f1fSJoseph Mingrone echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 1823ee67461eSJoseph Mingrone exit 1 1824ee67461eSJoseph Mingrone ;; 1825ee67461eSJoseph Mingroneesac 1826ee67461eSJoseph Mingrone 1827ee67461eSJoseph Mingrone# As a final step for OS-related things, validate the OS-kernel combination 1828ee67461eSJoseph Mingrone# (given a valid OS), if there is a kernel. 1829*0a7e5f1fSJoseph Mingronecase $kernel-$os-$obj in 1830*0a7e5f1fSJoseph Mingrone linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ 1831*0a7e5f1fSJoseph Mingrone | linux-mlibc*- | linux-musl*- | linux-newlib*- \ 1832*0a7e5f1fSJoseph Mingrone | linux-relibc*- | linux-uclibc*- ) 1833ee67461eSJoseph Mingrone ;; 1834*0a7e5f1fSJoseph Mingrone uclinux-uclibc*- ) 1835ee67461eSJoseph Mingrone ;; 1836*0a7e5f1fSJoseph Mingrone managarm-mlibc*- | managarm-kernel*- ) 1837ee67461eSJoseph Mingrone ;; 1838*0a7e5f1fSJoseph Mingrone windows*-msvc*-) 1839*0a7e5f1fSJoseph Mingrone ;; 1840*0a7e5f1fSJoseph Mingrone -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ 1841*0a7e5f1fSJoseph Mingrone | -uclibc*- ) 1842ee67461eSJoseph Mingrone # These are just libc implementations, not actual OSes, and thus 1843ee67461eSJoseph Mingrone # require a kernel. 1844*0a7e5f1fSJoseph Mingrone echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 1845ee67461eSJoseph Mingrone exit 1 1846ee67461eSJoseph Mingrone ;; 1847*0a7e5f1fSJoseph Mingrone -kernel*- ) 1848*0a7e5f1fSJoseph Mingrone echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 1849ee67461eSJoseph Mingrone exit 1 1850ee67461eSJoseph Mingrone ;; 1851*0a7e5f1fSJoseph Mingrone *-kernel*- ) 1852*0a7e5f1fSJoseph Mingrone echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 1853ee67461eSJoseph Mingrone exit 1 1854ee67461eSJoseph Mingrone ;; 1855*0a7e5f1fSJoseph Mingrone *-msvc*- ) 1856*0a7e5f1fSJoseph Mingrone echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 1857*0a7e5f1fSJoseph Mingrone exit 1 1858ee67461eSJoseph Mingrone ;; 1859*0a7e5f1fSJoseph Mingrone kfreebsd*-gnu*- | kopensolaris*-gnu*-) 1860ee67461eSJoseph Mingrone ;; 1861*0a7e5f1fSJoseph Mingrone vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) 1862ee67461eSJoseph Mingrone ;; 1863*0a7e5f1fSJoseph Mingrone nto-qnx*-) 1864ee67461eSJoseph Mingrone ;; 1865*0a7e5f1fSJoseph Mingrone os2-emx-) 1866ee67461eSJoseph Mingrone ;; 1867*0a7e5f1fSJoseph Mingrone *-eabi*- | *-gnueabi*-) 1868*0a7e5f1fSJoseph Mingrone ;; 1869*0a7e5f1fSJoseph Mingrone none--*) 1870*0a7e5f1fSJoseph Mingrone # None (no kernel, i.e. freestanding / bare metal), 1871*0a7e5f1fSJoseph Mingrone # can be paired with an machine code file format 1872*0a7e5f1fSJoseph Mingrone ;; 1873*0a7e5f1fSJoseph Mingrone -*-) 1874ee67461eSJoseph Mingrone # Blank kernel with real OS is always fine. 1875ee67461eSJoseph Mingrone ;; 1876*0a7e5f1fSJoseph Mingrone --*) 1877*0a7e5f1fSJoseph Mingrone # Blank kernel and OS with real machine code file format is always fine. 1878*0a7e5f1fSJoseph Mingrone ;; 1879*0a7e5f1fSJoseph Mingrone *-*-*) 1880*0a7e5f1fSJoseph Mingrone echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 1881ee67461eSJoseph Mingrone exit 1 1882ee67461eSJoseph Mingrone ;; 1883ee67461eSJoseph Mingroneesac 1884ee67461eSJoseph Mingrone 18854edb46e9SPaul Traina# Here we handle the case where we know the os, and the CPU type, but not the 18864edb46e9SPaul Traina# manufacturer. We pick the logical manufacturer. 1887ee67461eSJoseph Mingronecase $vendor in 1888ee67461eSJoseph Mingrone unknown) 1889ee67461eSJoseph Mingrone case $cpu-$os in 1890ee67461eSJoseph Mingrone *-riscix*) 18914edb46e9SPaul Traina vendor=acorn 18924edb46e9SPaul Traina ;; 1893ee67461eSJoseph Mingrone *-sunos*) 18944edb46e9SPaul Traina vendor=sun 18954edb46e9SPaul Traina ;; 1896ee67461eSJoseph Mingrone *-cnk* | *-aix*) 18974edb46e9SPaul Traina vendor=ibm 18984edb46e9SPaul Traina ;; 1899ee67461eSJoseph Mingrone *-beos*) 1900685295f4SBill Fenner vendor=be 1901685295f4SBill Fenner ;; 1902ee67461eSJoseph Mingrone *-hpux*) 19034edb46e9SPaul Traina vendor=hp 19044edb46e9SPaul Traina ;; 1905ee67461eSJoseph Mingrone *-mpeix*) 1906685295f4SBill Fenner vendor=hp 1907685295f4SBill Fenner ;; 1908ee67461eSJoseph Mingrone *-hiux*) 19094edb46e9SPaul Traina vendor=hitachi 19104edb46e9SPaul Traina ;; 1911ee67461eSJoseph Mingrone *-unos*) 19124edb46e9SPaul Traina vendor=crds 19134edb46e9SPaul Traina ;; 1914ee67461eSJoseph Mingrone *-dgux*) 19154edb46e9SPaul Traina vendor=dg 19164edb46e9SPaul Traina ;; 1917ee67461eSJoseph Mingrone *-luna*) 19184edb46e9SPaul Traina vendor=omron 19194edb46e9SPaul Traina ;; 1920ee67461eSJoseph Mingrone *-genix*) 19214edb46e9SPaul Traina vendor=ns 19224edb46e9SPaul Traina ;; 1923ee67461eSJoseph Mingrone *-clix*) 192439e421e8SCy Schubert vendor=intergraph 192539e421e8SCy Schubert ;; 1926ee67461eSJoseph Mingrone *-mvs* | *-opened*) 19274edb46e9SPaul Traina vendor=ibm 19284edb46e9SPaul Traina ;; 1929ee67461eSJoseph Mingrone *-os400*) 19305b0fe478SBruce M Simpson vendor=ibm 19315b0fe478SBruce M Simpson ;; 1932ee67461eSJoseph Mingrone s390-* | s390x-*) 1933ee67461eSJoseph Mingrone vendor=ibm 1934ee67461eSJoseph Mingrone ;; 1935ee67461eSJoseph Mingrone *-ptx*) 19364edb46e9SPaul Traina vendor=sequent 19374edb46e9SPaul Traina ;; 1938ee67461eSJoseph Mingrone *-tpf*) 19395b0fe478SBruce M Simpson vendor=ibm 19405b0fe478SBruce M Simpson ;; 1941ee67461eSJoseph Mingrone *-vxsim* | *-vxworks* | *-windiss*) 19424edb46e9SPaul Traina vendor=wrs 19434edb46e9SPaul Traina ;; 1944ee67461eSJoseph Mingrone *-aux*) 19454de76e31SBill Fenner vendor=apple 19464de76e31SBill Fenner ;; 1947ee67461eSJoseph Mingrone *-hms*) 1948685295f4SBill Fenner vendor=hitachi 1949685295f4SBill Fenner ;; 1950ee67461eSJoseph Mingrone *-mpw* | *-macos*) 1951685295f4SBill Fenner vendor=apple 1952685295f4SBill Fenner ;; 1953ee67461eSJoseph Mingrone *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1954685295f4SBill Fenner vendor=atari 1955685295f4SBill Fenner ;; 1956ee67461eSJoseph Mingrone *-vos*) 19575b0fe478SBruce M Simpson vendor=stratus 19585b0fe478SBruce M Simpson ;; 19594edb46e9SPaul Traina esac 19604edb46e9SPaul Traina ;; 19614edb46e9SPaul Trainaesac 19624edb46e9SPaul Traina 1963*0a7e5f1fSJoseph Mingroneecho "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" 196427df3f5dSRui Pauloexit 1965685295f4SBill Fenner 1966685295f4SBill Fenner# Local variables: 196739e421e8SCy Schubert# eval: (add-hook 'before-save-hook 'time-stamp) 1968685295f4SBill Fenner# time-stamp-start: "timestamp='" 1969685295f4SBill Fenner# time-stamp-format: "%:y-%02m-%02d" 1970685295f4SBill Fenner# time-stamp-end: "'" 1971685295f4SBill Fenner# End: 1972