11d54945dSmrg#! /bin/sh 21d54945dSmrg# Configuration validation subroutine script. 322663e35Smrg# Copyright 1992-2021 Free Software Foundation, Inc. 41d54945dSmrg 522663e35Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 622663e35Smrg 722663e35Smrgtimestamp='2021-08-14' 81d54945dSmrg 97322289dSmrg# This file is free software; you can redistribute it and/or modify it 107322289dSmrg# under the terms of the GNU General Public License as published by 117322289dSmrg# the Free Software Foundation; either version 3 of the License, or 121d54945dSmrg# (at your option) any later version. 131d54945dSmrg# 147322289dSmrg# This program is distributed in the hope that it will be useful, but 157322289dSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 167322289dSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 177322289dSmrg# General Public License for more details. 181d54945dSmrg# 191d54945dSmrg# You should have received a copy of the GNU General Public License 2022663e35Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21ba85709eSmrg# 221d54945dSmrg# As a special exception to the GNU General Public License, if you 231d54945dSmrg# distribute this file as part of a program that contains a 241d54945dSmrg# configuration script generated by Autoconf, you may include it under 257322289dSmrg# the same distribution terms that you use for the rest of that 267322289dSmrg# program. This Exception is an additional permission under section 7 277322289dSmrg# of the GNU General Public License, version 3 ("GPLv3"). 281d54945dSmrg 29ba85709eSmrg 307322289dSmrg# Please send patches to <config-patches@gnu.org>. 311d54945dSmrg# 321d54945dSmrg# Configuration subroutine to validate and canonicalize a configuration type. 331d54945dSmrg# Supply the specified configuration type as an argument. 341d54945dSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 351d54945dSmrg# Otherwise, we print the canonical config type on stdout and succeed. 361d54945dSmrg 37d769e936Smrg# You can get the latest version of this script from: 3822663e35Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39d769e936Smrg 401d54945dSmrg# This file is supposed to be the same for all GNU packages 411d54945dSmrg# and recognize all the CPU types, system types and aliases 421d54945dSmrg# that are meaningful with *any* GNU software. 431d54945dSmrg# Each package is responsible for reporting which valid configurations 441d54945dSmrg# it does not support. The user should be able to distinguish 451d54945dSmrg# a failure to support a valid configuration from a meaningless 461d54945dSmrg# configuration. 471d54945dSmrg 481d54945dSmrg# The goal of this file is to map all the various variations of a given 491d54945dSmrg# machine specification into a single specification in the form: 501d54945dSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 511d54945dSmrg# or in some cases, the newer four-part form: 521d54945dSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 531d54945dSmrg# It is wrong to echo any other type of specification. 541d54945dSmrg 5522663e35Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 5622663e35Smrg# about features and limitations of the classic Bourne shell that were 5722663e35Smrg# superseded or lifted in POSIX. However, this script identifies a wide 5822663e35Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5922663e35Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6022663e35Smrg# have a pre-POSIX /bin/sh. 6122663e35Smrg 621d54945dSmrgme=`echo "$0" | sed -e 's,.*/,,'` 631d54945dSmrg 641d54945dSmrgusage="\ 6522663e35SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 661d54945dSmrg 671d54945dSmrgCanonicalize a configuration name. 681d54945dSmrg 6922663e35SmrgOptions: 701d54945dSmrg -h, --help print this help, then exit 711d54945dSmrg -t, --time-stamp print date of last modification, then exit 721d54945dSmrg -v, --version print version number, then exit 731d54945dSmrg 741d54945dSmrgReport bugs and patches to <config-patches@gnu.org>." 751d54945dSmrg 761d54945dSmrgversion="\ 771d54945dSmrgGNU config.sub ($timestamp) 781d54945dSmrg 7922663e35SmrgCopyright 1992-2021 Free Software Foundation, Inc. 801d54945dSmrg 811d54945dSmrgThis is free software; see the source for copying conditions. There is NO 821d54945dSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 831d54945dSmrg 841d54945dSmrghelp=" 851d54945dSmrgTry \`$me --help' for more information." 861d54945dSmrg 871d54945dSmrg# Parse command line 881d54945dSmrgwhile test $# -gt 0 ; do 891d54945dSmrg case $1 in 901d54945dSmrg --time-stamp | --time* | -t ) 91ba85709eSmrg echo "$timestamp" ; exit ;; 921d54945dSmrg --version | -v ) 93ba85709eSmrg echo "$version" ; exit ;; 941d54945dSmrg --help | --h* | -h ) 95ba85709eSmrg echo "$usage"; exit ;; 961d54945dSmrg -- ) # Stop option processing 971d54945dSmrg shift; break ;; 981d54945dSmrg - ) # Use stdin as input. 991d54945dSmrg break ;; 1001d54945dSmrg -* ) 10122663e35Smrg echo "$me: invalid option $1$help" >&2 1021d54945dSmrg exit 1 ;; 1031d54945dSmrg 1041d54945dSmrg *local*) 1051d54945dSmrg # First pass through any local machine types. 10622663e35Smrg echo "$1" 107ba85709eSmrg exit ;; 1081d54945dSmrg 1091d54945dSmrg * ) 1101d54945dSmrg break ;; 1111d54945dSmrg esac 1121d54945dSmrgdone 1131d54945dSmrg 1141d54945dSmrgcase $# in 1151d54945dSmrg 0) echo "$me: missing argument$help" >&2 1161d54945dSmrg exit 1;; 1171d54945dSmrg 1) ;; 1181d54945dSmrg *) echo "$me: too many arguments$help" >&2 1191d54945dSmrg exit 1;; 1201d54945dSmrgesac 1211d54945dSmrg 12222663e35Smrg# Split fields of configuration type 12322663e35Smrg# shellcheck disable=SC2162 12422663e35Smrgsaved_IFS=$IFS 12522663e35SmrgIFS="-" read field1 field2 field3 field4 <<EOF 12622663e35Smrg$1 12722663e35SmrgEOF 12822663e35SmrgIFS=$saved_IFS 1291d54945dSmrg 13022663e35Smrg# Separate into logical components for further validation 13122663e35Smrgcase $1 in 13222663e35Smrg *-*-*-*-*) 13322663e35Smrg echo Invalid configuration \`"$1"\': more than four components >&2 13422663e35Smrg exit 1 1351d54945dSmrg ;; 13622663e35Smrg *-*-*-*) 13722663e35Smrg basic_machine=$field1-$field2 13822663e35Smrg basic_os=$field3-$field4 1391d54945dSmrg ;; 14022663e35Smrg *-*-*) 14122663e35Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14222663e35Smrg # parts 14322663e35Smrg maybe_os=$field2-$field3 14422663e35Smrg case $maybe_os in 14522663e35Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 14622663e35Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14722663e35Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14822663e35Smrg | storm-chaos* | os2-emx* | rtmk-nova*) 14922663e35Smrg basic_machine=$field1 15022663e35Smrg basic_os=$maybe_os 15122663e35Smrg ;; 15222663e35Smrg android-linux) 15322663e35Smrg basic_machine=$field1-unknown 15422663e35Smrg basic_os=linux-android 15522663e35Smrg ;; 15622663e35Smrg *) 15722663e35Smrg basic_machine=$field1-$field2 15822663e35Smrg basic_os=$field3 15922663e35Smrg ;; 16022663e35Smrg esac 1611d54945dSmrg ;; 16222663e35Smrg *-*) 16322663e35Smrg # A lone config we happen to match not fitting any pattern 16422663e35Smrg case $field1-$field2 in 16522663e35Smrg decstation-3100) 16622663e35Smrg basic_machine=mips-dec 16722663e35Smrg basic_os= 16822663e35Smrg ;; 16922663e35Smrg *-*) 17022663e35Smrg # Second component is usually, but not always the OS 17122663e35Smrg case $field2 in 17222663e35Smrg # Prevent following clause from handling this valid os 17322663e35Smrg sun*os*) 17422663e35Smrg basic_machine=$field1 17522663e35Smrg basic_os=$field2 17622663e35Smrg ;; 17722663e35Smrg zephyr*) 17822663e35Smrg basic_machine=$field1-unknown 17922663e35Smrg basic_os=$field2 18022663e35Smrg ;; 18122663e35Smrg # Manufacturers 18222663e35Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18322663e35Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18422663e35Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18522663e35Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18622663e35Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18722663e35Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18822663e35Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18922663e35Smrg | microblaze* | sim | cisco \ 19022663e35Smrg | oki | wec | wrs | winbond) 19122663e35Smrg basic_machine=$field1-$field2 19222663e35Smrg basic_os= 19322663e35Smrg ;; 19422663e35Smrg *) 19522663e35Smrg basic_machine=$field1 19622663e35Smrg basic_os=$field2 19722663e35Smrg ;; 19822663e35Smrg esac 19922663e35Smrg ;; 20022663e35Smrg esac 2011d54945dSmrg ;; 20222663e35Smrg *) 20322663e35Smrg # Convert single-component short-hands not valid as part of 20422663e35Smrg # multi-component configurations. 20522663e35Smrg case $field1 in 20622663e35Smrg 386bsd) 20722663e35Smrg basic_machine=i386-pc 20822663e35Smrg basic_os=bsd 20922663e35Smrg ;; 21022663e35Smrg a29khif) 21122663e35Smrg basic_machine=a29k-amd 21222663e35Smrg basic_os=udi 21322663e35Smrg ;; 21422663e35Smrg adobe68k) 21522663e35Smrg basic_machine=m68010-adobe 21622663e35Smrg basic_os=scout 21722663e35Smrg ;; 21822663e35Smrg alliant) 21922663e35Smrg basic_machine=fx80-alliant 22022663e35Smrg basic_os= 22122663e35Smrg ;; 22222663e35Smrg altos | altos3068) 22322663e35Smrg basic_machine=m68k-altos 22422663e35Smrg basic_os= 22522663e35Smrg ;; 22622663e35Smrg am29k) 22722663e35Smrg basic_machine=a29k-none 22822663e35Smrg basic_os=bsd 22922663e35Smrg ;; 23022663e35Smrg amdahl) 23122663e35Smrg basic_machine=580-amdahl 23222663e35Smrg basic_os=sysv 23322663e35Smrg ;; 23422663e35Smrg amiga) 23522663e35Smrg basic_machine=m68k-unknown 23622663e35Smrg basic_os= 23722663e35Smrg ;; 23822663e35Smrg amigaos | amigados) 23922663e35Smrg basic_machine=m68k-unknown 24022663e35Smrg basic_os=amigaos 24122663e35Smrg ;; 24222663e35Smrg amigaunix | amix) 24322663e35Smrg basic_machine=m68k-unknown 24422663e35Smrg basic_os=sysv4 24522663e35Smrg ;; 24622663e35Smrg apollo68) 24722663e35Smrg basic_machine=m68k-apollo 24822663e35Smrg basic_os=sysv 24922663e35Smrg ;; 25022663e35Smrg apollo68bsd) 25122663e35Smrg basic_machine=m68k-apollo 25222663e35Smrg basic_os=bsd 25322663e35Smrg ;; 25422663e35Smrg aros) 25522663e35Smrg basic_machine=i386-pc 25622663e35Smrg basic_os=aros 25722663e35Smrg ;; 25822663e35Smrg aux) 25922663e35Smrg basic_machine=m68k-apple 26022663e35Smrg basic_os=aux 26122663e35Smrg ;; 26222663e35Smrg balance) 26322663e35Smrg basic_machine=ns32k-sequent 26422663e35Smrg basic_os=dynix 26522663e35Smrg ;; 26622663e35Smrg blackfin) 26722663e35Smrg basic_machine=bfin-unknown 26822663e35Smrg basic_os=linux 26922663e35Smrg ;; 27022663e35Smrg cegcc) 27122663e35Smrg basic_machine=arm-unknown 27222663e35Smrg basic_os=cegcc 27322663e35Smrg ;; 27422663e35Smrg convex-c1) 27522663e35Smrg basic_machine=c1-convex 27622663e35Smrg basic_os=bsd 27722663e35Smrg ;; 27822663e35Smrg convex-c2) 27922663e35Smrg basic_machine=c2-convex 28022663e35Smrg basic_os=bsd 28122663e35Smrg ;; 28222663e35Smrg convex-c32) 28322663e35Smrg basic_machine=c32-convex 28422663e35Smrg basic_os=bsd 28522663e35Smrg ;; 28622663e35Smrg convex-c34) 28722663e35Smrg basic_machine=c34-convex 28822663e35Smrg basic_os=bsd 28922663e35Smrg ;; 29022663e35Smrg convex-c38) 29122663e35Smrg basic_machine=c38-convex 29222663e35Smrg basic_os=bsd 29322663e35Smrg ;; 29422663e35Smrg cray) 29522663e35Smrg basic_machine=j90-cray 29622663e35Smrg basic_os=unicos 29722663e35Smrg ;; 29822663e35Smrg crds | unos) 29922663e35Smrg basic_machine=m68k-crds 30022663e35Smrg basic_os= 30122663e35Smrg ;; 30222663e35Smrg da30) 30322663e35Smrg basic_machine=m68k-da30 30422663e35Smrg basic_os= 30522663e35Smrg ;; 30622663e35Smrg decstation | pmax | pmin | dec3100 | decstatn) 30722663e35Smrg basic_machine=mips-dec 30822663e35Smrg basic_os= 30922663e35Smrg ;; 31022663e35Smrg delta88) 31122663e35Smrg basic_machine=m88k-motorola 31222663e35Smrg basic_os=sysv3 31322663e35Smrg ;; 31422663e35Smrg dicos) 31522663e35Smrg basic_machine=i686-pc 31622663e35Smrg basic_os=dicos 31722663e35Smrg ;; 31822663e35Smrg djgpp) 31922663e35Smrg basic_machine=i586-pc 32022663e35Smrg basic_os=msdosdjgpp 32122663e35Smrg ;; 32222663e35Smrg ebmon29k) 32322663e35Smrg basic_machine=a29k-amd 32422663e35Smrg basic_os=ebmon 32522663e35Smrg ;; 32622663e35Smrg es1800 | OSE68k | ose68k | ose | OSE) 32722663e35Smrg basic_machine=m68k-ericsson 32822663e35Smrg basic_os=ose 32922663e35Smrg ;; 33022663e35Smrg gmicro) 33122663e35Smrg basic_machine=tron-gmicro 33222663e35Smrg basic_os=sysv 33322663e35Smrg ;; 33422663e35Smrg go32) 33522663e35Smrg basic_machine=i386-pc 33622663e35Smrg basic_os=go32 33722663e35Smrg ;; 33822663e35Smrg h8300hms) 33922663e35Smrg basic_machine=h8300-hitachi 34022663e35Smrg basic_os=hms 34122663e35Smrg ;; 34222663e35Smrg h8300xray) 34322663e35Smrg basic_machine=h8300-hitachi 34422663e35Smrg basic_os=xray 34522663e35Smrg ;; 34622663e35Smrg h8500hms) 34722663e35Smrg basic_machine=h8500-hitachi 34822663e35Smrg basic_os=hms 34922663e35Smrg ;; 35022663e35Smrg harris) 35122663e35Smrg basic_machine=m88k-harris 35222663e35Smrg basic_os=sysv3 35322663e35Smrg ;; 35422663e35Smrg hp300 | hp300hpux) 35522663e35Smrg basic_machine=m68k-hp 35622663e35Smrg basic_os=hpux 35722663e35Smrg ;; 35822663e35Smrg hp300bsd) 35922663e35Smrg basic_machine=m68k-hp 36022663e35Smrg basic_os=bsd 36122663e35Smrg ;; 36222663e35Smrg hppaosf) 36322663e35Smrg basic_machine=hppa1.1-hp 36422663e35Smrg basic_os=osf 36522663e35Smrg ;; 36622663e35Smrg hppro) 36722663e35Smrg basic_machine=hppa1.1-hp 36822663e35Smrg basic_os=proelf 36922663e35Smrg ;; 37022663e35Smrg i386mach) 37122663e35Smrg basic_machine=i386-mach 37222663e35Smrg basic_os=mach 37322663e35Smrg ;; 37422663e35Smrg isi68 | isi) 37522663e35Smrg basic_machine=m68k-isi 37622663e35Smrg basic_os=sysv 37722663e35Smrg ;; 37822663e35Smrg m68knommu) 37922663e35Smrg basic_machine=m68k-unknown 38022663e35Smrg basic_os=linux 38122663e35Smrg ;; 38222663e35Smrg magnum | m3230) 38322663e35Smrg basic_machine=mips-mips 38422663e35Smrg basic_os=sysv 38522663e35Smrg ;; 38622663e35Smrg merlin) 38722663e35Smrg basic_machine=ns32k-utek 38822663e35Smrg basic_os=sysv 38922663e35Smrg ;; 39022663e35Smrg mingw64) 39122663e35Smrg basic_machine=x86_64-pc 39222663e35Smrg basic_os=mingw64 39322663e35Smrg ;; 39422663e35Smrg mingw32) 39522663e35Smrg basic_machine=i686-pc 39622663e35Smrg basic_os=mingw32 39722663e35Smrg ;; 39822663e35Smrg mingw32ce) 39922663e35Smrg basic_machine=arm-unknown 40022663e35Smrg basic_os=mingw32ce 40122663e35Smrg ;; 40222663e35Smrg monitor) 40322663e35Smrg basic_machine=m68k-rom68k 40422663e35Smrg basic_os=coff 40522663e35Smrg ;; 40622663e35Smrg morphos) 40722663e35Smrg basic_machine=powerpc-unknown 40822663e35Smrg basic_os=morphos 40922663e35Smrg ;; 41022663e35Smrg moxiebox) 41122663e35Smrg basic_machine=moxie-unknown 41222663e35Smrg basic_os=moxiebox 41322663e35Smrg ;; 41422663e35Smrg msdos) 41522663e35Smrg basic_machine=i386-pc 41622663e35Smrg basic_os=msdos 41722663e35Smrg ;; 41822663e35Smrg msys) 41922663e35Smrg basic_machine=i686-pc 42022663e35Smrg basic_os=msys 42122663e35Smrg ;; 42222663e35Smrg mvs) 42322663e35Smrg basic_machine=i370-ibm 42422663e35Smrg basic_os=mvs 42522663e35Smrg ;; 42622663e35Smrg nacl) 42722663e35Smrg basic_machine=le32-unknown 42822663e35Smrg basic_os=nacl 42922663e35Smrg ;; 43022663e35Smrg ncr3000) 43122663e35Smrg basic_machine=i486-ncr 43222663e35Smrg basic_os=sysv4 43322663e35Smrg ;; 43422663e35Smrg netbsd386) 43522663e35Smrg basic_machine=i386-pc 43622663e35Smrg basic_os=netbsd 43722663e35Smrg ;; 43822663e35Smrg netwinder) 43922663e35Smrg basic_machine=armv4l-rebel 44022663e35Smrg basic_os=linux 44122663e35Smrg ;; 44222663e35Smrg news | news700 | news800 | news900) 44322663e35Smrg basic_machine=m68k-sony 44422663e35Smrg basic_os=newsos 44522663e35Smrg ;; 44622663e35Smrg news1000) 44722663e35Smrg basic_machine=m68030-sony 44822663e35Smrg basic_os=newsos 44922663e35Smrg ;; 45022663e35Smrg necv70) 45122663e35Smrg basic_machine=v70-nec 45222663e35Smrg basic_os=sysv 45322663e35Smrg ;; 45422663e35Smrg nh3000) 45522663e35Smrg basic_machine=m68k-harris 45622663e35Smrg basic_os=cxux 45722663e35Smrg ;; 45822663e35Smrg nh[45]000) 45922663e35Smrg basic_machine=m88k-harris 46022663e35Smrg basic_os=cxux 46122663e35Smrg ;; 46222663e35Smrg nindy960) 46322663e35Smrg basic_machine=i960-intel 46422663e35Smrg basic_os=nindy 46522663e35Smrg ;; 46622663e35Smrg mon960) 46722663e35Smrg basic_machine=i960-intel 46822663e35Smrg basic_os=mon960 46922663e35Smrg ;; 47022663e35Smrg nonstopux) 47122663e35Smrg basic_machine=mips-compaq 47222663e35Smrg basic_os=nonstopux 47322663e35Smrg ;; 47422663e35Smrg os400) 47522663e35Smrg basic_machine=powerpc-ibm 47622663e35Smrg basic_os=os400 47722663e35Smrg ;; 47822663e35Smrg OSE68000 | ose68000) 47922663e35Smrg basic_machine=m68000-ericsson 48022663e35Smrg basic_os=ose 48122663e35Smrg ;; 48222663e35Smrg os68k) 48322663e35Smrg basic_machine=m68k-none 48422663e35Smrg basic_os=os68k 48522663e35Smrg ;; 48622663e35Smrg paragon) 48722663e35Smrg basic_machine=i860-intel 48822663e35Smrg basic_os=osf 48922663e35Smrg ;; 49022663e35Smrg parisc) 49122663e35Smrg basic_machine=hppa-unknown 49222663e35Smrg basic_os=linux 49322663e35Smrg ;; 49422663e35Smrg psp) 49522663e35Smrg basic_machine=mipsallegrexel-sony 49622663e35Smrg basic_os=psp 49722663e35Smrg ;; 49822663e35Smrg pw32) 49922663e35Smrg basic_machine=i586-unknown 50022663e35Smrg basic_os=pw32 50122663e35Smrg ;; 50222663e35Smrg rdos | rdos64) 50322663e35Smrg basic_machine=x86_64-pc 50422663e35Smrg basic_os=rdos 50522663e35Smrg ;; 50622663e35Smrg rdos32) 50722663e35Smrg basic_machine=i386-pc 50822663e35Smrg basic_os=rdos 50922663e35Smrg ;; 51022663e35Smrg rom68k) 51122663e35Smrg basic_machine=m68k-rom68k 51222663e35Smrg basic_os=coff 51322663e35Smrg ;; 51422663e35Smrg sa29200) 51522663e35Smrg basic_machine=a29k-amd 51622663e35Smrg basic_os=udi 51722663e35Smrg ;; 51822663e35Smrg sei) 51922663e35Smrg basic_machine=mips-sei 52022663e35Smrg basic_os=seiux 52122663e35Smrg ;; 52222663e35Smrg sequent) 52322663e35Smrg basic_machine=i386-sequent 52422663e35Smrg basic_os= 52522663e35Smrg ;; 52622663e35Smrg sps7) 52722663e35Smrg basic_machine=m68k-bull 52822663e35Smrg basic_os=sysv2 52922663e35Smrg ;; 53022663e35Smrg st2000) 53122663e35Smrg basic_machine=m68k-tandem 53222663e35Smrg basic_os= 53322663e35Smrg ;; 53422663e35Smrg stratus) 53522663e35Smrg basic_machine=i860-stratus 53622663e35Smrg basic_os=sysv4 53722663e35Smrg ;; 53822663e35Smrg sun2) 53922663e35Smrg basic_machine=m68000-sun 54022663e35Smrg basic_os= 54122663e35Smrg ;; 54222663e35Smrg sun2os3) 54322663e35Smrg basic_machine=m68000-sun 54422663e35Smrg basic_os=sunos3 54522663e35Smrg ;; 54622663e35Smrg sun2os4) 54722663e35Smrg basic_machine=m68000-sun 54822663e35Smrg basic_os=sunos4 54922663e35Smrg ;; 55022663e35Smrg sun3) 55122663e35Smrg basic_machine=m68k-sun 55222663e35Smrg basic_os= 55322663e35Smrg ;; 55422663e35Smrg sun3os3) 55522663e35Smrg basic_machine=m68k-sun 55622663e35Smrg basic_os=sunos3 55722663e35Smrg ;; 55822663e35Smrg sun3os4) 55922663e35Smrg basic_machine=m68k-sun 56022663e35Smrg basic_os=sunos4 56122663e35Smrg ;; 56222663e35Smrg sun4) 56322663e35Smrg basic_machine=sparc-sun 56422663e35Smrg basic_os= 56522663e35Smrg ;; 56622663e35Smrg sun4os3) 56722663e35Smrg basic_machine=sparc-sun 56822663e35Smrg basic_os=sunos3 56922663e35Smrg ;; 57022663e35Smrg sun4os4) 57122663e35Smrg basic_machine=sparc-sun 57222663e35Smrg basic_os=sunos4 57322663e35Smrg ;; 57422663e35Smrg sun4sol2) 57522663e35Smrg basic_machine=sparc-sun 57622663e35Smrg basic_os=solaris2 57722663e35Smrg ;; 57822663e35Smrg sun386 | sun386i | roadrunner) 57922663e35Smrg basic_machine=i386-sun 58022663e35Smrg basic_os= 58122663e35Smrg ;; 58222663e35Smrg sv1) 58322663e35Smrg basic_machine=sv1-cray 58422663e35Smrg basic_os=unicos 58522663e35Smrg ;; 58622663e35Smrg symmetry) 58722663e35Smrg basic_machine=i386-sequent 58822663e35Smrg basic_os=dynix 58922663e35Smrg ;; 59022663e35Smrg t3e) 59122663e35Smrg basic_machine=alphaev5-cray 59222663e35Smrg basic_os=unicos 59322663e35Smrg ;; 59422663e35Smrg t90) 59522663e35Smrg basic_machine=t90-cray 59622663e35Smrg basic_os=unicos 59722663e35Smrg ;; 59822663e35Smrg toad1) 59922663e35Smrg basic_machine=pdp10-xkl 60022663e35Smrg basic_os=tops20 60122663e35Smrg ;; 60222663e35Smrg tpf) 60322663e35Smrg basic_machine=s390x-ibm 60422663e35Smrg basic_os=tpf 60522663e35Smrg ;; 60622663e35Smrg udi29k) 60722663e35Smrg basic_machine=a29k-amd 60822663e35Smrg basic_os=udi 60922663e35Smrg ;; 61022663e35Smrg ultra3) 61122663e35Smrg basic_machine=a29k-nyu 61222663e35Smrg basic_os=sym1 61322663e35Smrg ;; 61422663e35Smrg v810 | necv810) 61522663e35Smrg basic_machine=v810-nec 61622663e35Smrg basic_os=none 61722663e35Smrg ;; 61822663e35Smrg vaxv) 61922663e35Smrg basic_machine=vax-dec 62022663e35Smrg basic_os=sysv 62122663e35Smrg ;; 62222663e35Smrg vms) 62322663e35Smrg basic_machine=vax-dec 62422663e35Smrg basic_os=vms 62522663e35Smrg ;; 62622663e35Smrg vsta) 62722663e35Smrg basic_machine=i386-pc 62822663e35Smrg basic_os=vsta 62922663e35Smrg ;; 63022663e35Smrg vxworks960) 63122663e35Smrg basic_machine=i960-wrs 63222663e35Smrg basic_os=vxworks 63322663e35Smrg ;; 63422663e35Smrg vxworks68) 63522663e35Smrg basic_machine=m68k-wrs 63622663e35Smrg basic_os=vxworks 63722663e35Smrg ;; 63822663e35Smrg vxworks29k) 63922663e35Smrg basic_machine=a29k-wrs 64022663e35Smrg basic_os=vxworks 64122663e35Smrg ;; 64222663e35Smrg xbox) 64322663e35Smrg basic_machine=i686-pc 64422663e35Smrg basic_os=mingw32 64522663e35Smrg ;; 64622663e35Smrg ymp) 64722663e35Smrg basic_machine=ymp-cray 64822663e35Smrg basic_os=unicos 64922663e35Smrg ;; 65022663e35Smrg *) 65122663e35Smrg basic_machine=$1 65222663e35Smrg basic_os= 65322663e35Smrg ;; 65422663e35Smrg esac 6551d54945dSmrg ;; 6561d54945dSmrgesac 6571d54945dSmrg 65822663e35Smrg# Decode 1-component or ad-hoc basic machines 6591d54945dSmrgcase $basic_machine in 66022663e35Smrg # Here we handle the default manufacturer of certain CPU types. It is in 66122663e35Smrg # some cases the only manufacturer, in others, it is the most popular. 66222663e35Smrg w89k) 66322663e35Smrg cpu=hppa1.1 66422663e35Smrg vendor=winbond 6657322289dSmrg ;; 66622663e35Smrg op50n) 66722663e35Smrg cpu=hppa1.1 66822663e35Smrg vendor=oki 6691d54945dSmrg ;; 67022663e35Smrg op60c) 67122663e35Smrg cpu=hppa1.1 67222663e35Smrg vendor=oki 6731d54945dSmrg ;; 67422663e35Smrg ibm*) 67522663e35Smrg cpu=i370 67622663e35Smrg vendor=ibm 677ba85709eSmrg ;; 67822663e35Smrg orion105) 67922663e35Smrg cpu=clipper 68022663e35Smrg vendor=highlevel 6817322289dSmrg ;; 68222663e35Smrg mac | mpw | mac-mpw) 68322663e35Smrg cpu=m68k 68422663e35Smrg vendor=apple 685d769e936Smrg ;; 68622663e35Smrg pmac | pmac-mpw) 68722663e35Smrg cpu=powerpc 68822663e35Smrg vendor=apple 689d769e936Smrg ;; 690d769e936Smrg 6911d54945dSmrg # Recognize the various machine names and aliases which stand 6921d54945dSmrg # for a CPU type and a company and sometimes even an OS. 6931d54945dSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69422663e35Smrg cpu=m68000 69522663e35Smrg vendor=att 6961d54945dSmrg ;; 6971d54945dSmrg 3b*) 69822663e35Smrg cpu=we32k 69922663e35Smrg vendor=att 700786a6f21Smrg ;; 701d769e936Smrg bluegene*) 70222663e35Smrg cpu=powerpc 70322663e35Smrg vendor=ibm 70422663e35Smrg basic_os=cnk 7051d54945dSmrg ;; 7061d54945dSmrg decsystem10* | dec10*) 70722663e35Smrg cpu=pdp10 70822663e35Smrg vendor=dec 70922663e35Smrg basic_os=tops10 7101d54945dSmrg ;; 7111d54945dSmrg decsystem20* | dec20*) 71222663e35Smrg cpu=pdp10 71322663e35Smrg vendor=dec 71422663e35Smrg basic_os=tops20 7151d54945dSmrg ;; 7161d54945dSmrg delta | 3300 | motorola-3300 | motorola-delta \ 7171d54945dSmrg | 3300-motorola | delta-motorola) 71822663e35Smrg cpu=m68k 71922663e35Smrg vendor=motorola 7201d54945dSmrg ;; 72122663e35Smrg dpx2*) 72222663e35Smrg cpu=m68k 72322663e35Smrg vendor=bull 72422663e35Smrg basic_os=sysv3 7251d54945dSmrg ;; 7261d54945dSmrg encore | umax | mmax) 72722663e35Smrg cpu=ns32k 72822663e35Smrg vendor=encore 7291d54945dSmrg ;; 73022663e35Smrg elxsi) 73122663e35Smrg cpu=elxsi 73222663e35Smrg vendor=elxsi 73322663e35Smrg basic_os=${basic_os:-bsd} 7341d54945dSmrg ;; 7351d54945dSmrg fx2800) 73622663e35Smrg cpu=i860 73722663e35Smrg vendor=alliant 7381d54945dSmrg ;; 7391d54945dSmrg genix) 74022663e35Smrg cpu=ns32k 74122663e35Smrg vendor=ns 7421d54945dSmrg ;; 7431d54945dSmrg h3050r* | hiux*) 74422663e35Smrg cpu=hppa1.1 74522663e35Smrg vendor=hitachi 74622663e35Smrg basic_os=hiuxwe2 7471d54945dSmrg ;; 7481d54945dSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74922663e35Smrg cpu=hppa1.0 75022663e35Smrg vendor=hp 7511d54945dSmrg ;; 7521d54945dSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 75322663e35Smrg cpu=m68000 75422663e35Smrg vendor=hp 7551d54945dSmrg ;; 7561d54945dSmrg hp9k3[2-9][0-9]) 75722663e35Smrg cpu=m68k 75822663e35Smrg vendor=hp 7591d54945dSmrg ;; 7601d54945dSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76122663e35Smrg cpu=hppa1.0 76222663e35Smrg vendor=hp 7631d54945dSmrg ;; 7641d54945dSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76522663e35Smrg cpu=hppa1.1 76622663e35Smrg vendor=hp 7671d54945dSmrg ;; 7681d54945dSmrg hp9k78[0-9] | hp78[0-9]) 7691d54945dSmrg # FIXME: really hppa2.0-hp 77022663e35Smrg cpu=hppa1.1 77122663e35Smrg vendor=hp 7721d54945dSmrg ;; 7731d54945dSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7741d54945dSmrg # FIXME: really hppa2.0-hp 77522663e35Smrg cpu=hppa1.1 77622663e35Smrg vendor=hp 7771d54945dSmrg ;; 7781d54945dSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 77922663e35Smrg cpu=hppa1.1 78022663e35Smrg vendor=hp 7811d54945dSmrg ;; 7821d54945dSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78322663e35Smrg cpu=hppa1.0 78422663e35Smrg vendor=hp 7851d54945dSmrg ;; 7861d54945dSmrg i*86v32) 78722663e35Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78822663e35Smrg vendor=pc 78922663e35Smrg basic_os=sysv32 7901d54945dSmrg ;; 7911d54945dSmrg i*86v4*) 79222663e35Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79322663e35Smrg vendor=pc 79422663e35Smrg basic_os=sysv4 7951d54945dSmrg ;; 7961d54945dSmrg i*86v) 79722663e35Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79822663e35Smrg vendor=pc 79922663e35Smrg basic_os=sysv 8001d54945dSmrg ;; 8011d54945dSmrg i*86sol2) 80222663e35Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80322663e35Smrg vendor=pc 80422663e35Smrg basic_os=solaris2 8051d54945dSmrg ;; 80622663e35Smrg j90 | j90-cray) 80722663e35Smrg cpu=j90 80822663e35Smrg vendor=cray 80922663e35Smrg basic_os=${basic_os:-unicos} 8101d54945dSmrg ;; 8111d54945dSmrg iris | iris4d) 81222663e35Smrg cpu=mips 81322663e35Smrg vendor=sgi 81422663e35Smrg case $basic_os in 81522663e35Smrg irix*) 8161d54945dSmrg ;; 8171d54945dSmrg *) 81822663e35Smrg basic_os=irix4 8191d54945dSmrg ;; 8201d54945dSmrg esac 8211d54945dSmrg ;; 8221d54945dSmrg miniframe) 82322663e35Smrg cpu=m68000 82422663e35Smrg vendor=convergent 825d769e936Smrg ;; 82622663e35Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82722663e35Smrg cpu=m68k 82822663e35Smrg vendor=atari 82922663e35Smrg basic_os=mint 8301d54945dSmrg ;; 8311d54945dSmrg news-3600 | risc-news) 83222663e35Smrg cpu=mips 83322663e35Smrg vendor=sony 83422663e35Smrg basic_os=newsos 83522663e35Smrg ;; 83622663e35Smrg next | m*-next) 83722663e35Smrg cpu=m68k 83822663e35Smrg vendor=next 83922663e35Smrg case $basic_os in 84022663e35Smrg openstep*) 84122663e35Smrg ;; 84222663e35Smrg nextstep*) 8431d54945dSmrg ;; 84422663e35Smrg ns2*) 84522663e35Smrg basic_os=nextstep2 8461d54945dSmrg ;; 8471d54945dSmrg *) 84822663e35Smrg basic_os=nextstep3 8491d54945dSmrg ;; 8501d54945dSmrg esac 8511d54945dSmrg ;; 8521d54945dSmrg np1) 85322663e35Smrg cpu=np1 85422663e35Smrg vendor=gould 8551d54945dSmrg ;; 8561d54945dSmrg op50n-* | op60c-*) 85722663e35Smrg cpu=hppa1.1 85822663e35Smrg vendor=oki 85922663e35Smrg basic_os=proelf 8601d54945dSmrg ;; 8611d54945dSmrg pa-hitachi) 86222663e35Smrg cpu=hppa1.1 86322663e35Smrg vendor=hitachi 86422663e35Smrg basic_os=hiuxwe2 865786a6f21Smrg ;; 8661d54945dSmrg pbd) 86722663e35Smrg cpu=sparc 86822663e35Smrg vendor=tti 8691d54945dSmrg ;; 8701d54945dSmrg pbb) 87122663e35Smrg cpu=m68k 87222663e35Smrg vendor=tti 873ba85709eSmrg ;; 87422663e35Smrg pc532) 87522663e35Smrg cpu=ns32k 87622663e35Smrg vendor=pc532 8771d54945dSmrg ;; 8781d54945dSmrg pn) 87922663e35Smrg cpu=pn 88022663e35Smrg vendor=gould 8811d54945dSmrg ;; 88222663e35Smrg power) 88322663e35Smrg cpu=power 88422663e35Smrg vendor=ibm 8851d54945dSmrg ;; 8861d54945dSmrg ps2) 88722663e35Smrg cpu=i386 88822663e35Smrg vendor=ibm 8891d54945dSmrg ;; 8901d54945dSmrg rm[46]00) 89122663e35Smrg cpu=mips 89222663e35Smrg vendor=siemens 8931d54945dSmrg ;; 8941d54945dSmrg rtpc | rtpc-*) 89522663e35Smrg cpu=romp 89622663e35Smrg vendor=ibm 897ba85709eSmrg ;; 89822663e35Smrg sde) 89922663e35Smrg cpu=mipsisa32 90022663e35Smrg vendor=sde 90122663e35Smrg basic_os=${basic_os:-elf} 9021d54945dSmrg ;; 90322663e35Smrg simso-wrs) 90422663e35Smrg cpu=sparclite 90522663e35Smrg vendor=wrs 90622663e35Smrg basic_os=vxworks 9071d54945dSmrg ;; 90822663e35Smrg tower | tower-32) 90922663e35Smrg cpu=m68k 91022663e35Smrg vendor=ncr 911ba85709eSmrg ;; 91222663e35Smrg vpp*|vx|vx-*) 91322663e35Smrg cpu=f301 91422663e35Smrg vendor=fujitsu 9151d54945dSmrg ;; 91622663e35Smrg w65) 91722663e35Smrg cpu=w65 91822663e35Smrg vendor=wdc 9191d54945dSmrg ;; 92022663e35Smrg w89k-*) 92122663e35Smrg cpu=hppa1.1 92222663e35Smrg vendor=winbond 92322663e35Smrg basic_os=proelf 9241d54945dSmrg ;; 92522663e35Smrg none) 92622663e35Smrg cpu=none 92722663e35Smrg vendor=none 928786a6f21Smrg ;; 92922663e35Smrg leon|leon[3-9]) 93022663e35Smrg cpu=sparc 93122663e35Smrg vendor=$basic_machine 9321d54945dSmrg ;; 93322663e35Smrg leon-*|leon[3-9]-*) 93422663e35Smrg cpu=sparc 93522663e35Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9361d54945dSmrg ;; 93722663e35Smrg 93822663e35Smrg *-*) 93922663e35Smrg # shellcheck disable=SC2162 94022663e35Smrg saved_IFS=$IFS 94122663e35Smrg IFS="-" read cpu vendor <<EOF 94222663e35Smrg$basic_machine 94322663e35SmrgEOF 94422663e35Smrg IFS=$saved_IFS 9451d54945dSmrg ;; 94622663e35Smrg # We use `pc' rather than `unknown' 94722663e35Smrg # because (1) that's what they normally are, and 94822663e35Smrg # (2) the word "unknown" tends to confuse beginning users. 94922663e35Smrg i*86 | x86_64) 95022663e35Smrg cpu=$basic_machine 95122663e35Smrg vendor=pc 9521d54945dSmrg ;; 95322663e35Smrg # These rules are duplicated from below for sake of the special case above; 95422663e35Smrg # i.e. things that normalized to x86 arches should also default to "pc" 95522663e35Smrg pc98) 95622663e35Smrg cpu=i386 95722663e35Smrg vendor=pc 9581d54945dSmrg ;; 95922663e35Smrg x64 | amd64) 96022663e35Smrg cpu=x86_64 96122663e35Smrg vendor=pc 9621d54945dSmrg ;; 96322663e35Smrg # Recognize the basic CPU types without company name. 96422663e35Smrg *) 96522663e35Smrg cpu=$basic_machine 96622663e35Smrg vendor=unknown 967d769e936Smrg ;; 96822663e35Smrgesac 96922663e35Smrg 97022663e35Smrgunset -v basic_machine 97122663e35Smrg 97222663e35Smrg# Decode basic machines in the full and proper CPU-Company form. 97322663e35Smrgcase $cpu-$vendor in 97422663e35Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97522663e35Smrg # some cases the only manufacturer, in others, it is the most popular. 97622663e35Smrg craynv-unknown) 97722663e35Smrg vendor=cray 97822663e35Smrg basic_os=${basic_os:-unicosmp} 9791d54945dSmrg ;; 98022663e35Smrg c90-unknown | c90-cray) 98122663e35Smrg vendor=cray 98222663e35Smrg basic_os=${Basic_os:-unicos} 9831d54945dSmrg ;; 98422663e35Smrg fx80-unknown) 98522663e35Smrg vendor=alliant 9861d54945dSmrg ;; 98722663e35Smrg romp-unknown) 98822663e35Smrg vendor=ibm 9891d54945dSmrg ;; 99022663e35Smrg mmix-unknown) 99122663e35Smrg vendor=knuth 9921d54945dSmrg ;; 99322663e35Smrg microblaze-unknown | microblazeel-unknown) 99422663e35Smrg vendor=xilinx 9951d54945dSmrg ;; 99622663e35Smrg rs6000-unknown) 99722663e35Smrg vendor=ibm 9981d54945dSmrg ;; 99922663e35Smrg vax-unknown) 100022663e35Smrg vendor=dec 10011d54945dSmrg ;; 100222663e35Smrg pdp11-unknown) 100322663e35Smrg vendor=dec 10041d54945dSmrg ;; 100522663e35Smrg we32k-unknown) 100622663e35Smrg vendor=att 10071d54945dSmrg ;; 100822663e35Smrg cydra-unknown) 100922663e35Smrg vendor=cydrome 10101d54945dSmrg ;; 101122663e35Smrg i370-ibm*) 101222663e35Smrg vendor=ibm 10131d54945dSmrg ;; 101422663e35Smrg orion-unknown) 101522663e35Smrg vendor=highlevel 10161d54945dSmrg ;; 101722663e35Smrg xps-unknown | xps100-unknown) 101822663e35Smrg cpu=xps100 101922663e35Smrg vendor=honeywell 10201d54945dSmrg ;; 102122663e35Smrg 102222663e35Smrg # Here we normalize CPU types with a missing or matching vendor 102322663e35Smrg dpx20-unknown | dpx20-bull) 102422663e35Smrg cpu=rs6000 102522663e35Smrg vendor=bull 102622663e35Smrg basic_os=${basic_os:-bosx} 10271d54945dSmrg ;; 102822663e35Smrg 102922663e35Smrg # Here we normalize CPU types irrespective of the vendor 103022663e35Smrg amd64-*) 103122663e35Smrg cpu=x86_64 1032786a6f21Smrg ;; 103322663e35Smrg blackfin-*) 103422663e35Smrg cpu=bfin 103522663e35Smrg basic_os=linux 10361d54945dSmrg ;; 103722663e35Smrg c54x-*) 103822663e35Smrg cpu=tic54x 10391d54945dSmrg ;; 104022663e35Smrg c55x-*) 104122663e35Smrg cpu=tic55x 10421d54945dSmrg ;; 104322663e35Smrg c6x-*) 104422663e35Smrg cpu=tic6x 10451d54945dSmrg ;; 104622663e35Smrg e500v[12]-*) 104722663e35Smrg cpu=powerpc 104822663e35Smrg basic_os=${basic_os}"spe" 1049ba85709eSmrg ;; 105022663e35Smrg mips3*-*) 105122663e35Smrg cpu=mips64 10521d54945dSmrg ;; 105322663e35Smrg ms1-*) 105422663e35Smrg cpu=mt 10551d54945dSmrg ;; 105622663e35Smrg m68knommu-*) 105722663e35Smrg cpu=m68k 105822663e35Smrg basic_os=linux 10591d54945dSmrg ;; 106022663e35Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106122663e35Smrg cpu=s12z 10621d54945dSmrg ;; 106322663e35Smrg openrisc-*) 106422663e35Smrg cpu=or32 10651d54945dSmrg ;; 106622663e35Smrg parisc-*) 106722663e35Smrg cpu=hppa 106822663e35Smrg basic_os=linux 10691d54945dSmrg ;; 107022663e35Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107122663e35Smrg cpu=i586 10721d54945dSmrg ;; 107322663e35Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 107422663e35Smrg cpu=i686 10751d54945dSmrg ;; 107622663e35Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 107722663e35Smrg cpu=i686 10781d54945dSmrg ;; 107922663e35Smrg pentium4-*) 108022663e35Smrg cpu=i786 10811d54945dSmrg ;; 108222663e35Smrg pc98-*) 108322663e35Smrg cpu=i386 10841d54945dSmrg ;; 108522663e35Smrg ppc-* | ppcbe-*) 108622663e35Smrg cpu=powerpc 1087ba85709eSmrg ;; 108822663e35Smrg ppcle-* | powerpclittle-*) 108922663e35Smrg cpu=powerpcle 10901d54945dSmrg ;; 109122663e35Smrg ppc64-*) 109222663e35Smrg cpu=powerpc64 1093d769e936Smrg ;; 109422663e35Smrg ppc64le-* | powerpc64little-*) 109522663e35Smrg cpu=powerpc64le 10961d54945dSmrg ;; 109722663e35Smrg sb1-*) 109822663e35Smrg cpu=mipsisa64sb1 10991d54945dSmrg ;; 110022663e35Smrg sb1el-*) 110122663e35Smrg cpu=mipsisa64sb1el 1102d769e936Smrg ;; 110322663e35Smrg sh5e[lb]-*) 110422663e35Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11051d54945dSmrg ;; 110622663e35Smrg spur-*) 110722663e35Smrg cpu=spur 11081d54945dSmrg ;; 110922663e35Smrg strongarm-* | thumb-*) 111022663e35Smrg cpu=arm 11111d54945dSmrg ;; 111222663e35Smrg tx39-*) 111322663e35Smrg cpu=mipstx39 11141d54945dSmrg ;; 111522663e35Smrg tx39el-*) 111622663e35Smrg cpu=mipstx39el 11171d54945dSmrg ;; 111822663e35Smrg x64-*) 111922663e35Smrg cpu=x86_64 1120ba85709eSmrg ;; 112122663e35Smrg xscale-* | xscalee[bl]-*) 112222663e35Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11231d54945dSmrg ;; 112422663e35Smrg arm64-*) 112522663e35Smrg cpu=aarch64 11261d54945dSmrg ;; 112722663e35Smrg 112822663e35Smrg # Recognize the canonical CPU Types that limit and/or modify the 112922663e35Smrg # company names they are paired with. 113022663e35Smrg cr16-*) 113122663e35Smrg basic_os=${basic_os:-elf} 11321d54945dSmrg ;; 113322663e35Smrg crisv32-* | etraxfs*-*) 113422663e35Smrg cpu=crisv32 113522663e35Smrg vendor=axis 11361d54945dSmrg ;; 113722663e35Smrg cris-* | etrax*-*) 113822663e35Smrg cpu=cris 113922663e35Smrg vendor=axis 11401d54945dSmrg ;; 114122663e35Smrg crx-*) 114222663e35Smrg basic_os=${basic_os:-elf} 11431d54945dSmrg ;; 114422663e35Smrg neo-tandem) 114522663e35Smrg cpu=neo 114622663e35Smrg vendor=tandem 11471d54945dSmrg ;; 114822663e35Smrg nse-tandem) 114922663e35Smrg cpu=nse 115022663e35Smrg vendor=tandem 11511d54945dSmrg ;; 115222663e35Smrg nsr-tandem) 115322663e35Smrg cpu=nsr 115422663e35Smrg vendor=tandem 11551d54945dSmrg ;; 115622663e35Smrg nsv-tandem) 115722663e35Smrg cpu=nsv 115822663e35Smrg vendor=tandem 11591d54945dSmrg ;; 116022663e35Smrg nsx-tandem) 116122663e35Smrg cpu=nsx 116222663e35Smrg vendor=tandem 11631d54945dSmrg ;; 116422663e35Smrg mipsallegrexel-sony) 116522663e35Smrg cpu=mipsallegrexel 116622663e35Smrg vendor=sony 11671d54945dSmrg ;; 116822663e35Smrg tile*-*) 116922663e35Smrg basic_os=${basic_os:-linux-gnu} 11701d54945dSmrg ;; 117122663e35Smrg 11721d54945dSmrg *) 117322663e35Smrg # Recognize the canonical CPU types that are allowed with any 117422663e35Smrg # company name. 117522663e35Smrg case $cpu in 117622663e35Smrg 1750a | 580 \ 117722663e35Smrg | a29k \ 117822663e35Smrg | aarch64 | aarch64_be \ 117922663e35Smrg | abacus \ 118022663e35Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118122663e35Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118222663e35Smrg | alphapca5[67] | alpha64pca5[67] \ 118322663e35Smrg | am33_2.0 \ 118422663e35Smrg | amdgcn \ 118522663e35Smrg | arc | arceb | arc32 | arc64 \ 118622663e35Smrg | arm | arm[lb]e | arme[lb] | armv* \ 118722663e35Smrg | avr | avr32 \ 118822663e35Smrg | asmjs \ 118922663e35Smrg | ba \ 119022663e35Smrg | be32 | be64 \ 119122663e35Smrg | bfin | bpf | bs2000 \ 119222663e35Smrg | c[123]* | c30 | [cjt]90 | c4x \ 119322663e35Smrg | c8051 | clipper | craynv | csky | cydra \ 119422663e35Smrg | d10v | d30v | dlx | dsp16xx \ 119522663e35Smrg | e2k | elxsi | epiphany \ 119622663e35Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 119722663e35Smrg | h8300 | h8500 \ 119822663e35Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 119922663e35Smrg | hexagon \ 120022663e35Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120122663e35Smrg | ip2k | iq2000 \ 120222663e35Smrg | k1om \ 120322663e35Smrg | le32 | le64 \ 120422663e35Smrg | lm32 \ 120522663e35Smrg | loongarch32 | loongarch64 | loongarchx32 \ 120622663e35Smrg | m32c | m32r | m32rle \ 120722663e35Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 120822663e35Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 120922663e35Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121022663e35Smrg | microblaze | microblazeel \ 121122663e35Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121222663e35Smrg | mips16 \ 121322663e35Smrg | mips64 | mips64eb | mips64el \ 121422663e35Smrg | mips64octeon | mips64octeonel \ 121522663e35Smrg | mips64orion | mips64orionel \ 121622663e35Smrg | mips64r5900 | mips64r5900el \ 121722663e35Smrg | mips64vr | mips64vrel \ 121822663e35Smrg | mips64vr4100 | mips64vr4100el \ 121922663e35Smrg | mips64vr4300 | mips64vr4300el \ 122022663e35Smrg | mips64vr5000 | mips64vr5000el \ 122122663e35Smrg | mips64vr5900 | mips64vr5900el \ 122222663e35Smrg | mipsisa32 | mipsisa32el \ 122322663e35Smrg | mipsisa32r2 | mipsisa32r2el \ 122422663e35Smrg | mipsisa32r3 | mipsisa32r3el \ 122522663e35Smrg | mipsisa32r5 | mipsisa32r5el \ 122622663e35Smrg | mipsisa32r6 | mipsisa32r6el \ 122722663e35Smrg | mipsisa64 | mipsisa64el \ 122822663e35Smrg | mipsisa64r2 | mipsisa64r2el \ 122922663e35Smrg | mipsisa64r3 | mipsisa64r3el \ 123022663e35Smrg | mipsisa64r5 | mipsisa64r5el \ 123122663e35Smrg | mipsisa64r6 | mipsisa64r6el \ 123222663e35Smrg | mipsisa64sb1 | mipsisa64sb1el \ 123322663e35Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 123422663e35Smrg | mipsr5900 | mipsr5900el \ 123522663e35Smrg | mipstx39 | mipstx39el \ 123622663e35Smrg | mmix \ 123722663e35Smrg | mn10200 | mn10300 \ 123822663e35Smrg | moxie \ 123922663e35Smrg | mt \ 124022663e35Smrg | msp430 \ 124122663e35Smrg | nds32 | nds32le | nds32be \ 124222663e35Smrg | nfp \ 124322663e35Smrg | nios | nios2 | nios2eb | nios2el \ 124422663e35Smrg | none | np1 | ns16k | ns32k | nvptx \ 124522663e35Smrg | open8 \ 124622663e35Smrg | or1k* \ 124722663e35Smrg | or32 \ 124822663e35Smrg | orion \ 124922663e35Smrg | picochip \ 125022663e35Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125122663e35Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125222663e35Smrg | pru \ 125322663e35Smrg | pyramid \ 125422663e35Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 125522663e35Smrg | rl78 | romp | rs6000 | rx \ 125622663e35Smrg | s390 | s390x \ 125722663e35Smrg | score \ 125822663e35Smrg | sh | shl \ 125922663e35Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126022663e35Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126122663e35Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126222663e35Smrg | sparclite \ 126322663e35Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126422663e35Smrg | spu \ 126522663e35Smrg | tahoe \ 126622663e35Smrg | thumbv7* \ 126722663e35Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 126822663e35Smrg | tron \ 126922663e35Smrg | ubicom32 \ 127022663e35Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127122663e35Smrg | vax \ 127222663e35Smrg | visium \ 127322663e35Smrg | w65 \ 127422663e35Smrg | wasm32 | wasm64 \ 127522663e35Smrg | we32k \ 127622663e35Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 127722663e35Smrg | xstormy16 | xtensa* \ 127822663e35Smrg | ymp \ 127922663e35Smrg | z8k | z80) 128022663e35Smrg ;; 128122663e35Smrg 128222663e35Smrg *) 128322663e35Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128422663e35Smrg exit 1 128522663e35Smrg ;; 128622663e35Smrg esac 12871d54945dSmrg ;; 12881d54945dSmrgesac 12891d54945dSmrg 12901d54945dSmrg# Here we canonicalize certain aliases for manufacturers. 129122663e35Smrgcase $vendor in 129222663e35Smrg digital*) 129322663e35Smrg vendor=dec 12941d54945dSmrg ;; 129522663e35Smrg commodore*) 129622663e35Smrg vendor=cbm 12971d54945dSmrg ;; 12981d54945dSmrg *) 12991d54945dSmrg ;; 13001d54945dSmrgesac 13011d54945dSmrg 13021d54945dSmrg# Decode manufacturer-specific aliases for certain operating systems. 13031d54945dSmrg 130422663e35Smrgif test x$basic_os != x 13051d54945dSmrgthen 130622663e35Smrg 130722663e35Smrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 130822663e35Smrg# set os. 130922663e35Smrgcase $basic_os in 131022663e35Smrg gnu/linux*) 131122663e35Smrg kernel=linux 131222663e35Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131322663e35Smrg ;; 131422663e35Smrg os2-emx) 131522663e35Smrg kernel=os2 131622663e35Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 131722663e35Smrg ;; 131822663e35Smrg nto-qnx*) 131922663e35Smrg kernel=nto 132022663e35Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132122663e35Smrg ;; 132222663e35Smrg *-*) 132322663e35Smrg # shellcheck disable=SC2162 132422663e35Smrg saved_IFS=$IFS 132522663e35Smrg IFS="-" read kernel os <<EOF 132622663e35Smrg$basic_os 132722663e35SmrgEOF 132822663e35Smrg IFS=$saved_IFS 132922663e35Smrg ;; 133022663e35Smrg # Default OS when just kernel was specified 133122663e35Smrg nto*) 133222663e35Smrg kernel=nto 133322663e35Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133422663e35Smrg ;; 133522663e35Smrg linux*) 133622663e35Smrg kernel=linux 133722663e35Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 133822663e35Smrg ;; 133922663e35Smrg *) 134022663e35Smrg kernel= 134122663e35Smrg os=$basic_os 134222663e35Smrg ;; 134322663e35Smrgesac 134422663e35Smrg 134522663e35Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 134622663e35Smrg# etc.) 13471d54945dSmrgcase $os in 134822663e35Smrg # First match some system type aliases that might get confused 134922663e35Smrg # with valid system types. 135022663e35Smrg # solaris* is a basic system type, with this one exception. 135122663e35Smrg auroraux) 135222663e35Smrg os=auroraux 1353d769e936Smrg ;; 135422663e35Smrg bluegene*) 135522663e35Smrg os=cnk 13561d54945dSmrg ;; 135722663e35Smrg solaris1 | solaris1.*) 135822663e35Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13591d54945dSmrg ;; 136022663e35Smrg solaris) 136122663e35Smrg os=solaris2 13621d54945dSmrg ;; 136322663e35Smrg unixware*) 136422663e35Smrg os=sysv4.2uw 13651d54945dSmrg ;; 136622663e35Smrg # es1800 is here to avoid being matched by es* (a different OS) 136722663e35Smrg es1800*) 136822663e35Smrg os=ose 13691d54945dSmrg ;; 137022663e35Smrg # Some version numbers need modification 137122663e35Smrg chorusos*) 137222663e35Smrg os=chorusos 13731d54945dSmrg ;; 137422663e35Smrg isc) 137522663e35Smrg os=isc2.2 13761d54945dSmrg ;; 137722663e35Smrg sco6) 137822663e35Smrg os=sco5v6 13791d54945dSmrg ;; 138022663e35Smrg sco5) 138122663e35Smrg os=sco3.2v5 13821d54945dSmrg ;; 138322663e35Smrg sco4) 138422663e35Smrg os=sco3.2v4 13851d54945dSmrg ;; 138622663e35Smrg sco3.2.[4-9]*) 138722663e35Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1388ba85709eSmrg ;; 138922663e35Smrg sco*v* | scout) 139022663e35Smrg # Don't match below 13911d54945dSmrg ;; 139222663e35Smrg sco*) 139322663e35Smrg os=sco3.2v2 13941d54945dSmrg ;; 139522663e35Smrg psos*) 139622663e35Smrg os=psos 13971d54945dSmrg ;; 139822663e35Smrg qnx*) 139922663e35Smrg os=qnx 14001d54945dSmrg ;; 140122663e35Smrg hiux*) 140222663e35Smrg os=hiuxwe2 1403ba85709eSmrg ;; 140422663e35Smrg lynx*178) 140522663e35Smrg os=lynxos178 14061d54945dSmrg ;; 140722663e35Smrg lynx*5) 140822663e35Smrg os=lynxos5 14091d54945dSmrg ;; 141022663e35Smrg lynxos*) 141122663e35Smrg # don't get caught up in next wildcard 14121d54945dSmrg ;; 141322663e35Smrg lynx*) 141422663e35Smrg os=lynxos 14151d54945dSmrg ;; 141622663e35Smrg mac[0-9]*) 141722663e35Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 14181d54945dSmrg ;; 141922663e35Smrg opened*) 142022663e35Smrg os=openedition 14211d54945dSmrg ;; 142222663e35Smrg os400*) 142322663e35Smrg os=os400 14241d54945dSmrg ;; 142522663e35Smrg sunos5*) 142622663e35Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1427ba85709eSmrg ;; 142822663e35Smrg sunos6*) 142922663e35Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14301d54945dSmrg ;; 143122663e35Smrg wince*) 143222663e35Smrg os=wince 14331d54945dSmrg ;; 143422663e35Smrg utek*) 143522663e35Smrg os=bsd 14361d54945dSmrg ;; 143722663e35Smrg dynix*) 143822663e35Smrg os=bsd 14391d54945dSmrg ;; 144022663e35Smrg acis*) 144122663e35Smrg os=aos 14421d54945dSmrg ;; 144322663e35Smrg atheos*) 144422663e35Smrg os=atheos 14451d54945dSmrg ;; 144622663e35Smrg syllable*) 144722663e35Smrg os=syllable 14481d54945dSmrg ;; 144922663e35Smrg 386bsd) 145022663e35Smrg os=bsd 1451ba85709eSmrg ;; 145222663e35Smrg ctix* | uts*) 145322663e35Smrg os=sysv 14541d54945dSmrg ;; 145522663e35Smrg nova*) 145622663e35Smrg os=rtmk-nova 14571d54945dSmrg ;; 145822663e35Smrg ns2) 145922663e35Smrg os=nextstep2 14601d54945dSmrg ;; 146122663e35Smrg # Preserve the version number of sinix5. 146222663e35Smrg sinix5.*) 146322663e35Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14641d54945dSmrg ;; 146522663e35Smrg sinix*) 146622663e35Smrg os=sysv4 14671d54945dSmrg ;; 146822663e35Smrg tpf*) 146922663e35Smrg os=tpf 14701d54945dSmrg ;; 147122663e35Smrg triton*) 147222663e35Smrg os=sysv3 14731d54945dSmrg ;; 147422663e35Smrg oss*) 147522663e35Smrg os=sysv3 14761d54945dSmrg ;; 147722663e35Smrg svr4*) 147822663e35Smrg os=sysv4 14791d54945dSmrg ;; 148022663e35Smrg svr3) 148122663e35Smrg os=sysv3 14821d54945dSmrg ;; 148322663e35Smrg sysvr4) 148422663e35Smrg os=sysv4 14851d54945dSmrg ;; 148622663e35Smrg ose*) 148722663e35Smrg os=ose 1488ba85709eSmrg ;; 148922663e35Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149022663e35Smrg os=mint 1491d769e936Smrg ;; 149222663e35Smrg dicos*) 149322663e35Smrg os=dicos 1494d769e936Smrg ;; 149522663e35Smrg pikeos*) 149622663e35Smrg # Until real need of OS specific support for 149722663e35Smrg # particular features comes up, bare metal 149822663e35Smrg # configurations are quite functional. 149922663e35Smrg case $cpu in 150022663e35Smrg arm*) 150122663e35Smrg os=eabi 150222663e35Smrg ;; 150322663e35Smrg *) 150422663e35Smrg os=elf 150522663e35Smrg ;; 150622663e35Smrg esac 15071d54945dSmrg ;; 15081d54945dSmrg *) 150922663e35Smrg # No normalization, but not necessarily accepted, that comes below. 15101d54945dSmrg ;; 15111d54945dSmrgesac 151222663e35Smrg 15131d54945dSmrgelse 15141d54945dSmrg 15151d54945dSmrg# Here we handle the default operating systems that come with various machines. 15161d54945dSmrg# The value should be what the vendor currently ships out the door with their 15171d54945dSmrg# machine or put another way, the most popular os provided with the machine. 15181d54945dSmrg 15191d54945dSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15201d54945dSmrg# "-sun"), then you have to tell the case statement up towards the top 15211d54945dSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15221d54945dSmrg# will signal an error saying that MANUFACTURER isn't an operating 15231d54945dSmrg# system, and we'll never get to this point. 15241d54945dSmrg 152522663e35Smrgkernel= 152622663e35Smrgcase $cpu-$vendor in 1527d769e936Smrg score-*) 152822663e35Smrg os=elf 1529ba85709eSmrg ;; 1530d769e936Smrg spu-*) 153122663e35Smrg os=elf 1532ba85709eSmrg ;; 15331d54945dSmrg *-acorn) 153422663e35Smrg os=riscix1.2 15351d54945dSmrg ;; 15361d54945dSmrg arm*-rebel) 153722663e35Smrg kernel=linux 153822663e35Smrg os=gnu 15391d54945dSmrg ;; 15401d54945dSmrg arm*-semi) 154122663e35Smrg os=aout 15421d54945dSmrg ;; 1543d769e936Smrg c4x-* | tic4x-*) 154422663e35Smrg os=coff 1545d769e936Smrg ;; 15467322289dSmrg c8051-*) 154722663e35Smrg os=elf 154822663e35Smrg ;; 154922663e35Smrg clipper-intergraph) 155022663e35Smrg os=clix 15517322289dSmrg ;; 15527322289dSmrg hexagon-*) 155322663e35Smrg os=elf 15547322289dSmrg ;; 1555d769e936Smrg tic54x-*) 155622663e35Smrg os=coff 1557d769e936Smrg ;; 1558d769e936Smrg tic55x-*) 155922663e35Smrg os=coff 1560d769e936Smrg ;; 1561d769e936Smrg tic6x-*) 156222663e35Smrg os=coff 15631d54945dSmrg ;; 15641d54945dSmrg # This must come before the *-dec entry. 15651d54945dSmrg pdp10-*) 156622663e35Smrg os=tops20 15671d54945dSmrg ;; 15681d54945dSmrg pdp11-*) 156922663e35Smrg os=none 15701d54945dSmrg ;; 15711d54945dSmrg *-dec | vax-*) 157222663e35Smrg os=ultrix4.2 15731d54945dSmrg ;; 15741d54945dSmrg m68*-apollo) 157522663e35Smrg os=domain 15761d54945dSmrg ;; 15771d54945dSmrg i386-sun) 157822663e35Smrg os=sunos4.0.2 15791d54945dSmrg ;; 15801d54945dSmrg m68000-sun) 158122663e35Smrg os=sunos3 15821d54945dSmrg ;; 15831d54945dSmrg m68*-cisco) 158422663e35Smrg os=aout 15851d54945dSmrg ;; 1586d769e936Smrg mep-*) 158722663e35Smrg os=elf 1588786a6f21Smrg ;; 15891d54945dSmrg mips*-cisco) 159022663e35Smrg os=elf 15911d54945dSmrg ;; 15921d54945dSmrg mips*-*) 159322663e35Smrg os=elf 15941d54945dSmrg ;; 15951d54945dSmrg or32-*) 159622663e35Smrg os=coff 15971d54945dSmrg ;; 15981d54945dSmrg *-tti) # must be before sparc entry or we get the wrong os. 159922663e35Smrg os=sysv3 16001d54945dSmrg ;; 16011d54945dSmrg sparc-* | *-sun) 160222663e35Smrg os=sunos4.1.1 16031d54945dSmrg ;; 160422663e35Smrg pru-*) 160522663e35Smrg os=elf 16061d54945dSmrg ;; 160722663e35Smrg *-be) 160822663e35Smrg os=beos 1609ba85709eSmrg ;; 16101d54945dSmrg *-ibm) 161122663e35Smrg os=aix 16121d54945dSmrg ;; 1613d769e936Smrg *-knuth) 161422663e35Smrg os=mmixware 1615ba85709eSmrg ;; 16161d54945dSmrg *-wec) 161722663e35Smrg os=proelf 16181d54945dSmrg ;; 16191d54945dSmrg *-winbond) 162022663e35Smrg os=proelf 16211d54945dSmrg ;; 16221d54945dSmrg *-oki) 162322663e35Smrg os=proelf 16241d54945dSmrg ;; 16251d54945dSmrg *-hp) 162622663e35Smrg os=hpux 16271d54945dSmrg ;; 16281d54945dSmrg *-hitachi) 162922663e35Smrg os=hiux 16301d54945dSmrg ;; 16311d54945dSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 163222663e35Smrg os=sysv 16331d54945dSmrg ;; 16341d54945dSmrg *-cbm) 163522663e35Smrg os=amigaos 16361d54945dSmrg ;; 16371d54945dSmrg *-dg) 163822663e35Smrg os=dgux 16391d54945dSmrg ;; 16401d54945dSmrg *-dolphin) 164122663e35Smrg os=sysv3 16421d54945dSmrg ;; 16431d54945dSmrg m68k-ccur) 164422663e35Smrg os=rtu 16451d54945dSmrg ;; 16461d54945dSmrg m88k-omron*) 164722663e35Smrg os=luna 16481d54945dSmrg ;; 164922663e35Smrg *-next) 165022663e35Smrg os=nextstep 16511d54945dSmrg ;; 16521d54945dSmrg *-sequent) 165322663e35Smrg os=ptx 16541d54945dSmrg ;; 16551d54945dSmrg *-crds) 165622663e35Smrg os=unos 16571d54945dSmrg ;; 16581d54945dSmrg *-ns) 165922663e35Smrg os=genix 16601d54945dSmrg ;; 16611d54945dSmrg i370-*) 166222663e35Smrg os=mvs 16631d54945dSmrg ;; 16641d54945dSmrg *-gould) 166522663e35Smrg os=sysv 16661d54945dSmrg ;; 16671d54945dSmrg *-highlevel) 166822663e35Smrg os=bsd 16691d54945dSmrg ;; 16701d54945dSmrg *-encore) 167122663e35Smrg os=bsd 16721d54945dSmrg ;; 16731d54945dSmrg *-sgi) 167422663e35Smrg os=irix 16751d54945dSmrg ;; 16761d54945dSmrg *-siemens) 167722663e35Smrg os=sysv4 16781d54945dSmrg ;; 16791d54945dSmrg *-masscomp) 168022663e35Smrg os=rtu 16811d54945dSmrg ;; 16821d54945dSmrg f30[01]-fujitsu | f700-fujitsu) 168322663e35Smrg os=uxpv 16841d54945dSmrg ;; 16851d54945dSmrg *-rom68k) 168622663e35Smrg os=coff 16871d54945dSmrg ;; 16881d54945dSmrg *-*bug) 168922663e35Smrg os=coff 16901d54945dSmrg ;; 16911d54945dSmrg *-apple) 169222663e35Smrg os=macos 16931d54945dSmrg ;; 16941d54945dSmrg *-atari*) 169522663e35Smrg os=mint 169622663e35Smrg ;; 169722663e35Smrg *-wrs) 169822663e35Smrg os=vxworks 16991d54945dSmrg ;; 17001d54945dSmrg *) 170122663e35Smrg os=none 17021d54945dSmrg ;; 17031d54945dSmrgesac 170422663e35Smrg 17051d54945dSmrgfi 17061d54945dSmrg 170722663e35Smrg# Now, validate our (potentially fixed-up) OS. 170822663e35Smrgcase $os in 170922663e35Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171022663e35Smrg musl* | newlib* | relibc* | uclibc*) 171122663e35Smrg ;; 171222663e35Smrg # Likewise for "kernel-abi" 171322663e35Smrg eabi* | gnueabi*) 171422663e35Smrg ;; 171522663e35Smrg # VxWorks passes extra cpu info in the 4th filed. 171622663e35Smrg simlinux | simwindows | spe) 171722663e35Smrg ;; 171822663e35Smrg # Now accept the basic system types. 171922663e35Smrg # The portable systems comes first. 172022663e35Smrg # Each alternative MUST end in a * to match a version number. 172122663e35Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 172222663e35Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 172322663e35Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 172422663e35Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 172522663e35Smrg | hiux* | abug | nacl* | netware* | windows* \ 172622663e35Smrg | os9* | macos* | osx* | ios* \ 172722663e35Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 172822663e35Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 172922663e35Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173022663e35Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 173122663e35Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 173222663e35Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 173322663e35Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 173422663e35Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 173522663e35Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 173622663e35Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 173722663e35Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 173822663e35Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 173922663e35Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174022663e35Smrg | midipix* | mingw32* | mingw64* | mint* \ 174122663e35Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 174222663e35Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 174322663e35Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 174422663e35Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 174522663e35Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 174622663e35Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 174722663e35Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 174822663e35Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 174922663e35Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175022663e35Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 175122663e35Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 175222663e35Smrg ;; 175322663e35Smrg # This one is extra strict with allowed versions 175422663e35Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 175522663e35Smrg # Don't forget version if it is 3.2v4 or newer. 175622663e35Smrg ;; 175722663e35Smrg none) 175822663e35Smrg ;; 175922663e35Smrg *) 176022663e35Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 176122663e35Smrg exit 1 176222663e35Smrg ;; 176322663e35Smrgesac 176422663e35Smrg 176522663e35Smrg# As a final step for OS-related things, validate the OS-kernel combination 176622663e35Smrg# (given a valid OS), if there is a kernel. 176722663e35Smrgcase $kernel-$os in 176822663e35Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 176922663e35Smrg | linux-musl* | linux-relibc* | linux-uclibc* ) 177022663e35Smrg ;; 177122663e35Smrg uclinux-uclibc* ) 177222663e35Smrg ;; 177322663e35Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 177422663e35Smrg # These are just libc implementations, not actual OSes, and thus 177522663e35Smrg # require a kernel. 177622663e35Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 177722663e35Smrg exit 1 177822663e35Smrg ;; 177922663e35Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 178022663e35Smrg ;; 178122663e35Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 178222663e35Smrg ;; 178322663e35Smrg nto-qnx*) 178422663e35Smrg ;; 178522663e35Smrg os2-emx) 178622663e35Smrg ;; 178722663e35Smrg *-eabi* | *-gnueabi*) 178822663e35Smrg ;; 178922663e35Smrg -*) 179022663e35Smrg # Blank kernel with real OS is always fine. 179122663e35Smrg ;; 179222663e35Smrg *-*) 179322663e35Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 179422663e35Smrg exit 1 179522663e35Smrg ;; 179622663e35Smrgesac 179722663e35Smrg 17981d54945dSmrg# Here we handle the case where we know the os, and the CPU type, but not the 17991d54945dSmrg# manufacturer. We pick the logical manufacturer. 180022663e35Smrgcase $vendor in 180122663e35Smrg unknown) 180222663e35Smrg case $cpu-$os in 180322663e35Smrg *-riscix*) 18041d54945dSmrg vendor=acorn 18051d54945dSmrg ;; 180622663e35Smrg *-sunos*) 18071d54945dSmrg vendor=sun 18081d54945dSmrg ;; 180922663e35Smrg *-cnk* | *-aix*) 18101d54945dSmrg vendor=ibm 18111d54945dSmrg ;; 181222663e35Smrg *-beos*) 18131d54945dSmrg vendor=be 18141d54945dSmrg ;; 181522663e35Smrg *-hpux*) 18161d54945dSmrg vendor=hp 18171d54945dSmrg ;; 181822663e35Smrg *-mpeix*) 18191d54945dSmrg vendor=hp 18201d54945dSmrg ;; 182122663e35Smrg *-hiux*) 18221d54945dSmrg vendor=hitachi 18231d54945dSmrg ;; 182422663e35Smrg *-unos*) 18251d54945dSmrg vendor=crds 18261d54945dSmrg ;; 182722663e35Smrg *-dgux*) 18281d54945dSmrg vendor=dg 18291d54945dSmrg ;; 183022663e35Smrg *-luna*) 18311d54945dSmrg vendor=omron 18321d54945dSmrg ;; 183322663e35Smrg *-genix*) 18341d54945dSmrg vendor=ns 18351d54945dSmrg ;; 183622663e35Smrg *-clix*) 183722663e35Smrg vendor=intergraph 183822663e35Smrg ;; 183922663e35Smrg *-mvs* | *-opened*) 184022663e35Smrg vendor=ibm 184122663e35Smrg ;; 184222663e35Smrg *-os400*) 18431d54945dSmrg vendor=ibm 18441d54945dSmrg ;; 184522663e35Smrg s390-* | s390x-*) 1846ba85709eSmrg vendor=ibm 1847ba85709eSmrg ;; 184822663e35Smrg *-ptx*) 18491d54945dSmrg vendor=sequent 18501d54945dSmrg ;; 185122663e35Smrg *-tpf*) 1852ba85709eSmrg vendor=ibm 1853ba85709eSmrg ;; 185422663e35Smrg *-vxsim* | *-vxworks* | *-windiss*) 18551d54945dSmrg vendor=wrs 18561d54945dSmrg ;; 185722663e35Smrg *-aux*) 18581d54945dSmrg vendor=apple 18591d54945dSmrg ;; 186022663e35Smrg *-hms*) 18611d54945dSmrg vendor=hitachi 18621d54945dSmrg ;; 186322663e35Smrg *-mpw* | *-macos*) 18641d54945dSmrg vendor=apple 18651d54945dSmrg ;; 186622663e35Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18671d54945dSmrg vendor=atari 18681d54945dSmrg ;; 186922663e35Smrg *-vos*) 18701d54945dSmrg vendor=stratus 18711d54945dSmrg ;; 18721d54945dSmrg esac 18731d54945dSmrg ;; 18741d54945dSmrgesac 18751d54945dSmrg 187622663e35Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1877ba85709eSmrgexit 18781d54945dSmrg 18791d54945dSmrg# Local variables: 188022663e35Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 18811d54945dSmrg# time-stamp-start: "timestamp='" 18821d54945dSmrg# time-stamp-format: "%:y-%02m-%02d" 18831d54945dSmrg# time-stamp-end: "'" 18841d54945dSmrg# End: 1885