config.sub revision 1a28b98b
10ed7c580Smrg#! /bin/sh 20ed7c580Smrg# Configuration validation subroutine script. 31a28b98bSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 40ed7c580Smrg 51a28b98bSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 61a28b98bSmrg 71a28b98bSmrgtimestamp='2021-08-14' 80ed7c580Smrg 90ed7c580Smrg# This file is free software; you can redistribute it and/or modify it 100ed7c580Smrg# under the terms of the GNU General Public License as published by 110ed7c580Smrg# the Free Software Foundation; either version 3 of the License, or 120ed7c580Smrg# (at your option) any later version. 130ed7c580Smrg# 140ed7c580Smrg# This program is distributed in the hope that it will be useful, but 150ed7c580Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 160ed7c580Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 170ed7c580Smrg# General Public License for more details. 180ed7c580Smrg# 190ed7c580Smrg# You should have received a copy of the GNU General Public License 201a28b98bSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 210ed7c580Smrg# 220ed7c580Smrg# As a special exception to the GNU General Public License, if you 230ed7c580Smrg# distribute this file as part of a program that contains a 240ed7c580Smrg# configuration script generated by Autoconf, you may include it under 250ed7c580Smrg# the same distribution terms that you use for the rest of that 260ed7c580Smrg# program. This Exception is an additional permission under section 7 270ed7c580Smrg# of the GNU General Public License, version 3 ("GPLv3"). 280ed7c580Smrg 290ed7c580Smrg 301a28b98bSmrg# Please send patches to <config-patches@gnu.org>. 310ed7c580Smrg# 320ed7c580Smrg# Configuration subroutine to validate and canonicalize a configuration type. 330ed7c580Smrg# Supply the specified configuration type as an argument. 340ed7c580Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 350ed7c580Smrg# Otherwise, we print the canonical config type on stdout and succeed. 360ed7c580Smrg 370ed7c580Smrg# You can get the latest version of this script from: 381a28b98bSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 390ed7c580Smrg 400ed7c580Smrg# This file is supposed to be the same for all GNU packages 410ed7c580Smrg# and recognize all the CPU types, system types and aliases 420ed7c580Smrg# that are meaningful with *any* GNU software. 430ed7c580Smrg# Each package is responsible for reporting which valid configurations 440ed7c580Smrg# it does not support. The user should be able to distinguish 450ed7c580Smrg# a failure to support a valid configuration from a meaningless 460ed7c580Smrg# configuration. 470ed7c580Smrg 480ed7c580Smrg# The goal of this file is to map all the various variations of a given 490ed7c580Smrg# machine specification into a single specification in the form: 500ed7c580Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 510ed7c580Smrg# or in some cases, the newer four-part form: 520ed7c580Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 530ed7c580Smrg# It is wrong to echo any other type of specification. 540ed7c580Smrg 551a28b98bSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 561a28b98bSmrg# about features and limitations of the classic Bourne shell that were 571a28b98bSmrg# superseded or lifted in POSIX. However, this script identifies a wide 581a28b98bSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 591a28b98bSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 601a28b98bSmrg# have a pre-POSIX /bin/sh. 611a28b98bSmrg 620ed7c580Smrgme=`echo "$0" | sed -e 's,.*/,,'` 630ed7c580Smrg 640ed7c580Smrgusage="\ 651a28b98bSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 660ed7c580Smrg 670ed7c580SmrgCanonicalize a configuration name. 680ed7c580Smrg 691a28b98bSmrgOptions: 700ed7c580Smrg -h, --help print this help, then exit 710ed7c580Smrg -t, --time-stamp print date of last modification, then exit 720ed7c580Smrg -v, --version print version number, then exit 730ed7c580Smrg 740ed7c580SmrgReport bugs and patches to <config-patches@gnu.org>." 750ed7c580Smrg 760ed7c580Smrgversion="\ 770ed7c580SmrgGNU config.sub ($timestamp) 780ed7c580Smrg 791a28b98bSmrgCopyright 1992-2021 Free Software Foundation, Inc. 800ed7c580Smrg 810ed7c580SmrgThis is free software; see the source for copying conditions. There is NO 820ed7c580Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 830ed7c580Smrg 840ed7c580Smrghelp=" 850ed7c580SmrgTry \`$me --help' for more information." 860ed7c580Smrg 870ed7c580Smrg# Parse command line 880ed7c580Smrgwhile test $# -gt 0 ; do 890ed7c580Smrg case $1 in 900ed7c580Smrg --time-stamp | --time* | -t ) 910ed7c580Smrg echo "$timestamp" ; exit ;; 920ed7c580Smrg --version | -v ) 930ed7c580Smrg echo "$version" ; exit ;; 940ed7c580Smrg --help | --h* | -h ) 950ed7c580Smrg echo "$usage"; exit ;; 960ed7c580Smrg -- ) # Stop option processing 970ed7c580Smrg shift; break ;; 980ed7c580Smrg - ) # Use stdin as input. 990ed7c580Smrg break ;; 1000ed7c580Smrg -* ) 1011a28b98bSmrg echo "$me: invalid option $1$help" >&2 1020ed7c580Smrg exit 1 ;; 1030ed7c580Smrg 1040ed7c580Smrg *local*) 1050ed7c580Smrg # First pass through any local machine types. 1061a28b98bSmrg echo "$1" 1070ed7c580Smrg exit ;; 1080ed7c580Smrg 1090ed7c580Smrg * ) 1100ed7c580Smrg break ;; 1110ed7c580Smrg esac 1120ed7c580Smrgdone 1130ed7c580Smrg 1140ed7c580Smrgcase $# in 1150ed7c580Smrg 0) echo "$me: missing argument$help" >&2 1160ed7c580Smrg exit 1;; 1170ed7c580Smrg 1) ;; 1180ed7c580Smrg *) echo "$me: too many arguments$help" >&2 1190ed7c580Smrg exit 1;; 1200ed7c580Smrgesac 1210ed7c580Smrg 1221a28b98bSmrg# Split fields of configuration type 1231a28b98bSmrg# shellcheck disable=SC2162 1241a28b98bSmrgsaved_IFS=$IFS 1251a28b98bSmrgIFS="-" read field1 field2 field3 field4 <<EOF 1261a28b98bSmrg$1 1271a28b98bSmrgEOF 1281a28b98bSmrgIFS=$saved_IFS 1290ed7c580Smrg 1301a28b98bSmrg# Separate into logical components for further validation 1311a28b98bSmrgcase $1 in 1321a28b98bSmrg *-*-*-*-*) 1331a28b98bSmrg echo Invalid configuration \`"$1"\': more than four components >&2 1341a28b98bSmrg exit 1 1350ed7c580Smrg ;; 1361a28b98bSmrg *-*-*-*) 1371a28b98bSmrg basic_machine=$field1-$field2 1381a28b98bSmrg basic_os=$field3-$field4 1390ed7c580Smrg ;; 1401a28b98bSmrg *-*-*) 1411a28b98bSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1421a28b98bSmrg # parts 1431a28b98bSmrg maybe_os=$field2-$field3 1441a28b98bSmrg case $maybe_os in 1451a28b98bSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 1461a28b98bSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1471a28b98bSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1481a28b98bSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 1491a28b98bSmrg basic_machine=$field1 1501a28b98bSmrg basic_os=$maybe_os 1511a28b98bSmrg ;; 1521a28b98bSmrg android-linux) 1531a28b98bSmrg basic_machine=$field1-unknown 1541a28b98bSmrg basic_os=linux-android 1551a28b98bSmrg ;; 1561a28b98bSmrg *) 1571a28b98bSmrg basic_machine=$field1-$field2 1581a28b98bSmrg basic_os=$field3 1591a28b98bSmrg ;; 1601a28b98bSmrg esac 1610ed7c580Smrg ;; 1621a28b98bSmrg *-*) 1631a28b98bSmrg # A lone config we happen to match not fitting any pattern 1641a28b98bSmrg case $field1-$field2 in 1651a28b98bSmrg decstation-3100) 1661a28b98bSmrg basic_machine=mips-dec 1671a28b98bSmrg basic_os= 1681a28b98bSmrg ;; 1691a28b98bSmrg *-*) 1701a28b98bSmrg # Second component is usually, but not always the OS 1711a28b98bSmrg case $field2 in 1721a28b98bSmrg # Prevent following clause from handling this valid os 1731a28b98bSmrg sun*os*) 1741a28b98bSmrg basic_machine=$field1 1751a28b98bSmrg basic_os=$field2 1761a28b98bSmrg ;; 1771a28b98bSmrg zephyr*) 1781a28b98bSmrg basic_machine=$field1-unknown 1791a28b98bSmrg basic_os=$field2 1801a28b98bSmrg ;; 1811a28b98bSmrg # Manufacturers 1821a28b98bSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1831a28b98bSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1841a28b98bSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1851a28b98bSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1861a28b98bSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1871a28b98bSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1881a28b98bSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1891a28b98bSmrg | microblaze* | sim | cisco \ 1901a28b98bSmrg | oki | wec | wrs | winbond) 1911a28b98bSmrg basic_machine=$field1-$field2 1921a28b98bSmrg basic_os= 1931a28b98bSmrg ;; 1941a28b98bSmrg *) 1951a28b98bSmrg basic_machine=$field1 1961a28b98bSmrg basic_os=$field2 1971a28b98bSmrg ;; 1981a28b98bSmrg esac 1991a28b98bSmrg ;; 2001a28b98bSmrg esac 2010ed7c580Smrg ;; 2021a28b98bSmrg *) 2031a28b98bSmrg # Convert single-component short-hands not valid as part of 2041a28b98bSmrg # multi-component configurations. 2051a28b98bSmrg case $field1 in 2061a28b98bSmrg 386bsd) 2071a28b98bSmrg basic_machine=i386-pc 2081a28b98bSmrg basic_os=bsd 2091a28b98bSmrg ;; 2101a28b98bSmrg a29khif) 2111a28b98bSmrg basic_machine=a29k-amd 2121a28b98bSmrg basic_os=udi 2131a28b98bSmrg ;; 2141a28b98bSmrg adobe68k) 2151a28b98bSmrg basic_machine=m68010-adobe 2161a28b98bSmrg basic_os=scout 2171a28b98bSmrg ;; 2181a28b98bSmrg alliant) 2191a28b98bSmrg basic_machine=fx80-alliant 2201a28b98bSmrg basic_os= 2211a28b98bSmrg ;; 2221a28b98bSmrg altos | altos3068) 2231a28b98bSmrg basic_machine=m68k-altos 2241a28b98bSmrg basic_os= 2251a28b98bSmrg ;; 2261a28b98bSmrg am29k) 2271a28b98bSmrg basic_machine=a29k-none 2281a28b98bSmrg basic_os=bsd 2291a28b98bSmrg ;; 2301a28b98bSmrg amdahl) 2311a28b98bSmrg basic_machine=580-amdahl 2321a28b98bSmrg basic_os=sysv 2331a28b98bSmrg ;; 2341a28b98bSmrg amiga) 2351a28b98bSmrg basic_machine=m68k-unknown 2361a28b98bSmrg basic_os= 2371a28b98bSmrg ;; 2381a28b98bSmrg amigaos | amigados) 2391a28b98bSmrg basic_machine=m68k-unknown 2401a28b98bSmrg basic_os=amigaos 2411a28b98bSmrg ;; 2421a28b98bSmrg amigaunix | amix) 2431a28b98bSmrg basic_machine=m68k-unknown 2441a28b98bSmrg basic_os=sysv4 2451a28b98bSmrg ;; 2461a28b98bSmrg apollo68) 2471a28b98bSmrg basic_machine=m68k-apollo 2481a28b98bSmrg basic_os=sysv 2491a28b98bSmrg ;; 2501a28b98bSmrg apollo68bsd) 2511a28b98bSmrg basic_machine=m68k-apollo 2521a28b98bSmrg basic_os=bsd 2531a28b98bSmrg ;; 2541a28b98bSmrg aros) 2551a28b98bSmrg basic_machine=i386-pc 2561a28b98bSmrg basic_os=aros 2571a28b98bSmrg ;; 2581a28b98bSmrg aux) 2591a28b98bSmrg basic_machine=m68k-apple 2601a28b98bSmrg basic_os=aux 2611a28b98bSmrg ;; 2621a28b98bSmrg balance) 2631a28b98bSmrg basic_machine=ns32k-sequent 2641a28b98bSmrg basic_os=dynix 2651a28b98bSmrg ;; 2661a28b98bSmrg blackfin) 2671a28b98bSmrg basic_machine=bfin-unknown 2681a28b98bSmrg basic_os=linux 2691a28b98bSmrg ;; 2701a28b98bSmrg cegcc) 2711a28b98bSmrg basic_machine=arm-unknown 2721a28b98bSmrg basic_os=cegcc 2731a28b98bSmrg ;; 2741a28b98bSmrg convex-c1) 2751a28b98bSmrg basic_machine=c1-convex 2761a28b98bSmrg basic_os=bsd 2771a28b98bSmrg ;; 2781a28b98bSmrg convex-c2) 2791a28b98bSmrg basic_machine=c2-convex 2801a28b98bSmrg basic_os=bsd 2811a28b98bSmrg ;; 2821a28b98bSmrg convex-c32) 2831a28b98bSmrg basic_machine=c32-convex 2841a28b98bSmrg basic_os=bsd 2851a28b98bSmrg ;; 2861a28b98bSmrg convex-c34) 2871a28b98bSmrg basic_machine=c34-convex 2881a28b98bSmrg basic_os=bsd 2891a28b98bSmrg ;; 2901a28b98bSmrg convex-c38) 2911a28b98bSmrg basic_machine=c38-convex 2921a28b98bSmrg basic_os=bsd 2931a28b98bSmrg ;; 2941a28b98bSmrg cray) 2951a28b98bSmrg basic_machine=j90-cray 2961a28b98bSmrg basic_os=unicos 2971a28b98bSmrg ;; 2981a28b98bSmrg crds | unos) 2991a28b98bSmrg basic_machine=m68k-crds 3001a28b98bSmrg basic_os= 3011a28b98bSmrg ;; 3021a28b98bSmrg da30) 3031a28b98bSmrg basic_machine=m68k-da30 3041a28b98bSmrg basic_os= 3051a28b98bSmrg ;; 3061a28b98bSmrg decstation | pmax | pmin | dec3100 | decstatn) 3071a28b98bSmrg basic_machine=mips-dec 3081a28b98bSmrg basic_os= 3091a28b98bSmrg ;; 3101a28b98bSmrg delta88) 3111a28b98bSmrg basic_machine=m88k-motorola 3121a28b98bSmrg basic_os=sysv3 3131a28b98bSmrg ;; 3141a28b98bSmrg dicos) 3151a28b98bSmrg basic_machine=i686-pc 3161a28b98bSmrg basic_os=dicos 3171a28b98bSmrg ;; 3181a28b98bSmrg djgpp) 3191a28b98bSmrg basic_machine=i586-pc 3201a28b98bSmrg basic_os=msdosdjgpp 3211a28b98bSmrg ;; 3221a28b98bSmrg ebmon29k) 3231a28b98bSmrg basic_machine=a29k-amd 3241a28b98bSmrg basic_os=ebmon 3251a28b98bSmrg ;; 3261a28b98bSmrg es1800 | OSE68k | ose68k | ose | OSE) 3271a28b98bSmrg basic_machine=m68k-ericsson 3281a28b98bSmrg basic_os=ose 3291a28b98bSmrg ;; 3301a28b98bSmrg gmicro) 3311a28b98bSmrg basic_machine=tron-gmicro 3321a28b98bSmrg basic_os=sysv 3331a28b98bSmrg ;; 3341a28b98bSmrg go32) 3351a28b98bSmrg basic_machine=i386-pc 3361a28b98bSmrg basic_os=go32 3371a28b98bSmrg ;; 3381a28b98bSmrg h8300hms) 3391a28b98bSmrg basic_machine=h8300-hitachi 3401a28b98bSmrg basic_os=hms 3411a28b98bSmrg ;; 3421a28b98bSmrg h8300xray) 3431a28b98bSmrg basic_machine=h8300-hitachi 3441a28b98bSmrg basic_os=xray 3451a28b98bSmrg ;; 3461a28b98bSmrg h8500hms) 3471a28b98bSmrg basic_machine=h8500-hitachi 3481a28b98bSmrg basic_os=hms 3491a28b98bSmrg ;; 3501a28b98bSmrg harris) 3511a28b98bSmrg basic_machine=m88k-harris 3521a28b98bSmrg basic_os=sysv3 3531a28b98bSmrg ;; 3541a28b98bSmrg hp300 | hp300hpux) 3551a28b98bSmrg basic_machine=m68k-hp 3561a28b98bSmrg basic_os=hpux 3571a28b98bSmrg ;; 3581a28b98bSmrg hp300bsd) 3591a28b98bSmrg basic_machine=m68k-hp 3601a28b98bSmrg basic_os=bsd 3611a28b98bSmrg ;; 3621a28b98bSmrg hppaosf) 3631a28b98bSmrg basic_machine=hppa1.1-hp 3641a28b98bSmrg basic_os=osf 3651a28b98bSmrg ;; 3661a28b98bSmrg hppro) 3671a28b98bSmrg basic_machine=hppa1.1-hp 3681a28b98bSmrg basic_os=proelf 3691a28b98bSmrg ;; 3701a28b98bSmrg i386mach) 3711a28b98bSmrg basic_machine=i386-mach 3721a28b98bSmrg basic_os=mach 3731a28b98bSmrg ;; 3741a28b98bSmrg isi68 | isi) 3751a28b98bSmrg basic_machine=m68k-isi 3761a28b98bSmrg basic_os=sysv 3771a28b98bSmrg ;; 3781a28b98bSmrg m68knommu) 3791a28b98bSmrg basic_machine=m68k-unknown 3801a28b98bSmrg basic_os=linux 3811a28b98bSmrg ;; 3821a28b98bSmrg magnum | m3230) 3831a28b98bSmrg basic_machine=mips-mips 3841a28b98bSmrg basic_os=sysv 3851a28b98bSmrg ;; 3861a28b98bSmrg merlin) 3871a28b98bSmrg basic_machine=ns32k-utek 3881a28b98bSmrg basic_os=sysv 3891a28b98bSmrg ;; 3901a28b98bSmrg mingw64) 3911a28b98bSmrg basic_machine=x86_64-pc 3921a28b98bSmrg basic_os=mingw64 3931a28b98bSmrg ;; 3941a28b98bSmrg mingw32) 3951a28b98bSmrg basic_machine=i686-pc 3961a28b98bSmrg basic_os=mingw32 3971a28b98bSmrg ;; 3981a28b98bSmrg mingw32ce) 3991a28b98bSmrg basic_machine=arm-unknown 4001a28b98bSmrg basic_os=mingw32ce 4011a28b98bSmrg ;; 4021a28b98bSmrg monitor) 4031a28b98bSmrg basic_machine=m68k-rom68k 4041a28b98bSmrg basic_os=coff 4051a28b98bSmrg ;; 4061a28b98bSmrg morphos) 4071a28b98bSmrg basic_machine=powerpc-unknown 4081a28b98bSmrg basic_os=morphos 4091a28b98bSmrg ;; 4101a28b98bSmrg moxiebox) 4111a28b98bSmrg basic_machine=moxie-unknown 4121a28b98bSmrg basic_os=moxiebox 4131a28b98bSmrg ;; 4141a28b98bSmrg msdos) 4151a28b98bSmrg basic_machine=i386-pc 4161a28b98bSmrg basic_os=msdos 4171a28b98bSmrg ;; 4181a28b98bSmrg msys) 4191a28b98bSmrg basic_machine=i686-pc 4201a28b98bSmrg basic_os=msys 4211a28b98bSmrg ;; 4221a28b98bSmrg mvs) 4231a28b98bSmrg basic_machine=i370-ibm 4241a28b98bSmrg basic_os=mvs 4251a28b98bSmrg ;; 4261a28b98bSmrg nacl) 4271a28b98bSmrg basic_machine=le32-unknown 4281a28b98bSmrg basic_os=nacl 4291a28b98bSmrg ;; 4301a28b98bSmrg ncr3000) 4311a28b98bSmrg basic_machine=i486-ncr 4321a28b98bSmrg basic_os=sysv4 4331a28b98bSmrg ;; 4341a28b98bSmrg netbsd386) 4351a28b98bSmrg basic_machine=i386-pc 4361a28b98bSmrg basic_os=netbsd 4371a28b98bSmrg ;; 4381a28b98bSmrg netwinder) 4391a28b98bSmrg basic_machine=armv4l-rebel 4401a28b98bSmrg basic_os=linux 4411a28b98bSmrg ;; 4421a28b98bSmrg news | news700 | news800 | news900) 4431a28b98bSmrg basic_machine=m68k-sony 4441a28b98bSmrg basic_os=newsos 4451a28b98bSmrg ;; 4461a28b98bSmrg news1000) 4471a28b98bSmrg basic_machine=m68030-sony 4481a28b98bSmrg basic_os=newsos 4491a28b98bSmrg ;; 4501a28b98bSmrg necv70) 4511a28b98bSmrg basic_machine=v70-nec 4521a28b98bSmrg basic_os=sysv 4531a28b98bSmrg ;; 4541a28b98bSmrg nh3000) 4551a28b98bSmrg basic_machine=m68k-harris 4561a28b98bSmrg basic_os=cxux 4571a28b98bSmrg ;; 4581a28b98bSmrg nh[45]000) 4591a28b98bSmrg basic_machine=m88k-harris 4601a28b98bSmrg basic_os=cxux 4611a28b98bSmrg ;; 4621a28b98bSmrg nindy960) 4631a28b98bSmrg basic_machine=i960-intel 4641a28b98bSmrg basic_os=nindy 4651a28b98bSmrg ;; 4661a28b98bSmrg mon960) 4671a28b98bSmrg basic_machine=i960-intel 4681a28b98bSmrg basic_os=mon960 4691a28b98bSmrg ;; 4701a28b98bSmrg nonstopux) 4711a28b98bSmrg basic_machine=mips-compaq 4721a28b98bSmrg basic_os=nonstopux 4731a28b98bSmrg ;; 4741a28b98bSmrg os400) 4751a28b98bSmrg basic_machine=powerpc-ibm 4761a28b98bSmrg basic_os=os400 4771a28b98bSmrg ;; 4781a28b98bSmrg OSE68000 | ose68000) 4791a28b98bSmrg basic_machine=m68000-ericsson 4801a28b98bSmrg basic_os=ose 4811a28b98bSmrg ;; 4821a28b98bSmrg os68k) 4831a28b98bSmrg basic_machine=m68k-none 4841a28b98bSmrg basic_os=os68k 4851a28b98bSmrg ;; 4861a28b98bSmrg paragon) 4871a28b98bSmrg basic_machine=i860-intel 4881a28b98bSmrg basic_os=osf 4891a28b98bSmrg ;; 4901a28b98bSmrg parisc) 4911a28b98bSmrg basic_machine=hppa-unknown 4921a28b98bSmrg basic_os=linux 4931a28b98bSmrg ;; 4941a28b98bSmrg psp) 4951a28b98bSmrg basic_machine=mipsallegrexel-sony 4961a28b98bSmrg basic_os=psp 4971a28b98bSmrg ;; 4981a28b98bSmrg pw32) 4991a28b98bSmrg basic_machine=i586-unknown 5001a28b98bSmrg basic_os=pw32 5011a28b98bSmrg ;; 5021a28b98bSmrg rdos | rdos64) 5031a28b98bSmrg basic_machine=x86_64-pc 5041a28b98bSmrg basic_os=rdos 5051a28b98bSmrg ;; 5061a28b98bSmrg rdos32) 5071a28b98bSmrg basic_machine=i386-pc 5081a28b98bSmrg basic_os=rdos 5091a28b98bSmrg ;; 5101a28b98bSmrg rom68k) 5111a28b98bSmrg basic_machine=m68k-rom68k 5121a28b98bSmrg basic_os=coff 5131a28b98bSmrg ;; 5141a28b98bSmrg sa29200) 5151a28b98bSmrg basic_machine=a29k-amd 5161a28b98bSmrg basic_os=udi 5171a28b98bSmrg ;; 5181a28b98bSmrg sei) 5191a28b98bSmrg basic_machine=mips-sei 5201a28b98bSmrg basic_os=seiux 5211a28b98bSmrg ;; 5221a28b98bSmrg sequent) 5231a28b98bSmrg basic_machine=i386-sequent 5241a28b98bSmrg basic_os= 5251a28b98bSmrg ;; 5261a28b98bSmrg sps7) 5271a28b98bSmrg basic_machine=m68k-bull 5281a28b98bSmrg basic_os=sysv2 5291a28b98bSmrg ;; 5301a28b98bSmrg st2000) 5311a28b98bSmrg basic_machine=m68k-tandem 5321a28b98bSmrg basic_os= 5331a28b98bSmrg ;; 5341a28b98bSmrg stratus) 5351a28b98bSmrg basic_machine=i860-stratus 5361a28b98bSmrg basic_os=sysv4 5371a28b98bSmrg ;; 5381a28b98bSmrg sun2) 5391a28b98bSmrg basic_machine=m68000-sun 5401a28b98bSmrg basic_os= 5411a28b98bSmrg ;; 5421a28b98bSmrg sun2os3) 5431a28b98bSmrg basic_machine=m68000-sun 5441a28b98bSmrg basic_os=sunos3 5451a28b98bSmrg ;; 5461a28b98bSmrg sun2os4) 5471a28b98bSmrg basic_machine=m68000-sun 5481a28b98bSmrg basic_os=sunos4 5491a28b98bSmrg ;; 5501a28b98bSmrg sun3) 5511a28b98bSmrg basic_machine=m68k-sun 5521a28b98bSmrg basic_os= 5531a28b98bSmrg ;; 5541a28b98bSmrg sun3os3) 5551a28b98bSmrg basic_machine=m68k-sun 5561a28b98bSmrg basic_os=sunos3 5571a28b98bSmrg ;; 5581a28b98bSmrg sun3os4) 5591a28b98bSmrg basic_machine=m68k-sun 5601a28b98bSmrg basic_os=sunos4 5611a28b98bSmrg ;; 5621a28b98bSmrg sun4) 5631a28b98bSmrg basic_machine=sparc-sun 5641a28b98bSmrg basic_os= 5651a28b98bSmrg ;; 5661a28b98bSmrg sun4os3) 5671a28b98bSmrg basic_machine=sparc-sun 5681a28b98bSmrg basic_os=sunos3 5691a28b98bSmrg ;; 5701a28b98bSmrg sun4os4) 5711a28b98bSmrg basic_machine=sparc-sun 5721a28b98bSmrg basic_os=sunos4 5731a28b98bSmrg ;; 5741a28b98bSmrg sun4sol2) 5751a28b98bSmrg basic_machine=sparc-sun 5761a28b98bSmrg basic_os=solaris2 5771a28b98bSmrg ;; 5781a28b98bSmrg sun386 | sun386i | roadrunner) 5791a28b98bSmrg basic_machine=i386-sun 5801a28b98bSmrg basic_os= 5811a28b98bSmrg ;; 5821a28b98bSmrg sv1) 5831a28b98bSmrg basic_machine=sv1-cray 5841a28b98bSmrg basic_os=unicos 5851a28b98bSmrg ;; 5861a28b98bSmrg symmetry) 5871a28b98bSmrg basic_machine=i386-sequent 5881a28b98bSmrg basic_os=dynix 5891a28b98bSmrg ;; 5901a28b98bSmrg t3e) 5911a28b98bSmrg basic_machine=alphaev5-cray 5921a28b98bSmrg basic_os=unicos 5931a28b98bSmrg ;; 5941a28b98bSmrg t90) 5951a28b98bSmrg basic_machine=t90-cray 5961a28b98bSmrg basic_os=unicos 5971a28b98bSmrg ;; 5981a28b98bSmrg toad1) 5991a28b98bSmrg basic_machine=pdp10-xkl 6001a28b98bSmrg basic_os=tops20 6011a28b98bSmrg ;; 6021a28b98bSmrg tpf) 6031a28b98bSmrg basic_machine=s390x-ibm 6041a28b98bSmrg basic_os=tpf 6051a28b98bSmrg ;; 6061a28b98bSmrg udi29k) 6071a28b98bSmrg basic_machine=a29k-amd 6081a28b98bSmrg basic_os=udi 6091a28b98bSmrg ;; 6101a28b98bSmrg ultra3) 6111a28b98bSmrg basic_machine=a29k-nyu 6121a28b98bSmrg basic_os=sym1 6131a28b98bSmrg ;; 6141a28b98bSmrg v810 | necv810) 6151a28b98bSmrg basic_machine=v810-nec 6161a28b98bSmrg basic_os=none 6171a28b98bSmrg ;; 6181a28b98bSmrg vaxv) 6191a28b98bSmrg basic_machine=vax-dec 6201a28b98bSmrg basic_os=sysv 6211a28b98bSmrg ;; 6221a28b98bSmrg vms) 6231a28b98bSmrg basic_machine=vax-dec 6241a28b98bSmrg basic_os=vms 6251a28b98bSmrg ;; 6261a28b98bSmrg vsta) 6271a28b98bSmrg basic_machine=i386-pc 6281a28b98bSmrg basic_os=vsta 6291a28b98bSmrg ;; 6301a28b98bSmrg vxworks960) 6311a28b98bSmrg basic_machine=i960-wrs 6321a28b98bSmrg basic_os=vxworks 6331a28b98bSmrg ;; 6341a28b98bSmrg vxworks68) 6351a28b98bSmrg basic_machine=m68k-wrs 6361a28b98bSmrg basic_os=vxworks 6371a28b98bSmrg ;; 6381a28b98bSmrg vxworks29k) 6391a28b98bSmrg basic_machine=a29k-wrs 6401a28b98bSmrg basic_os=vxworks 6411a28b98bSmrg ;; 6421a28b98bSmrg xbox) 6431a28b98bSmrg basic_machine=i686-pc 6441a28b98bSmrg basic_os=mingw32 6451a28b98bSmrg ;; 6461a28b98bSmrg ymp) 6471a28b98bSmrg basic_machine=ymp-cray 6481a28b98bSmrg basic_os=unicos 6491a28b98bSmrg ;; 6501a28b98bSmrg *) 6511a28b98bSmrg basic_machine=$1 6521a28b98bSmrg basic_os= 6531a28b98bSmrg ;; 6541a28b98bSmrg esac 6550ed7c580Smrg ;; 6560ed7c580Smrgesac 6570ed7c580Smrg 6581a28b98bSmrg# Decode 1-component or ad-hoc basic machines 6590ed7c580Smrgcase $basic_machine in 6601a28b98bSmrg # Here we handle the default manufacturer of certain CPU types. It is in 6611a28b98bSmrg # some cases the only manufacturer, in others, it is the most popular. 6621a28b98bSmrg w89k) 6631a28b98bSmrg cpu=hppa1.1 6641a28b98bSmrg vendor=winbond 6650ed7c580Smrg ;; 6661a28b98bSmrg op50n) 6671a28b98bSmrg cpu=hppa1.1 6681a28b98bSmrg vendor=oki 6690ed7c580Smrg ;; 6701a28b98bSmrg op60c) 6711a28b98bSmrg cpu=hppa1.1 6721a28b98bSmrg vendor=oki 6730ed7c580Smrg ;; 6741a28b98bSmrg ibm*) 6751a28b98bSmrg cpu=i370 6761a28b98bSmrg vendor=ibm 6770ed7c580Smrg ;; 6781a28b98bSmrg orion105) 6791a28b98bSmrg cpu=clipper 6801a28b98bSmrg vendor=highlevel 6810ed7c580Smrg ;; 6821a28b98bSmrg mac | mpw | mac-mpw) 6831a28b98bSmrg cpu=m68k 6841a28b98bSmrg vendor=apple 6850ed7c580Smrg ;; 6861a28b98bSmrg pmac | pmac-mpw) 6871a28b98bSmrg cpu=powerpc 6881a28b98bSmrg vendor=apple 6890ed7c580Smrg ;; 6901a28b98bSmrg 6910ed7c580Smrg # Recognize the various machine names and aliases which stand 6920ed7c580Smrg # for a CPU type and a company and sometimes even an OS. 6930ed7c580Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6941a28b98bSmrg cpu=m68000 6951a28b98bSmrg vendor=att 6960ed7c580Smrg ;; 6970ed7c580Smrg 3b*) 6981a28b98bSmrg cpu=we32k 6991a28b98bSmrg vendor=att 7000ed7c580Smrg ;; 7010ed7c580Smrg bluegene*) 7021a28b98bSmrg cpu=powerpc 7031a28b98bSmrg vendor=ibm 7041a28b98bSmrg basic_os=cnk 7050ed7c580Smrg ;; 7060ed7c580Smrg decsystem10* | dec10*) 7071a28b98bSmrg cpu=pdp10 7081a28b98bSmrg vendor=dec 7091a28b98bSmrg basic_os=tops10 7100ed7c580Smrg ;; 7110ed7c580Smrg decsystem20* | dec20*) 7121a28b98bSmrg cpu=pdp10 7131a28b98bSmrg vendor=dec 7141a28b98bSmrg basic_os=tops20 7150ed7c580Smrg ;; 7160ed7c580Smrg delta | 3300 | motorola-3300 | motorola-delta \ 7170ed7c580Smrg | 3300-motorola | delta-motorola) 7181a28b98bSmrg cpu=m68k 7191a28b98bSmrg vendor=motorola 7200ed7c580Smrg ;; 7211a28b98bSmrg dpx2*) 7221a28b98bSmrg cpu=m68k 7231a28b98bSmrg vendor=bull 7241a28b98bSmrg basic_os=sysv3 7250ed7c580Smrg ;; 7260ed7c580Smrg encore | umax | mmax) 7271a28b98bSmrg cpu=ns32k 7281a28b98bSmrg vendor=encore 7290ed7c580Smrg ;; 7301a28b98bSmrg elxsi) 7311a28b98bSmrg cpu=elxsi 7321a28b98bSmrg vendor=elxsi 7331a28b98bSmrg basic_os=${basic_os:-bsd} 7340ed7c580Smrg ;; 7350ed7c580Smrg fx2800) 7361a28b98bSmrg cpu=i860 7371a28b98bSmrg vendor=alliant 7380ed7c580Smrg ;; 7390ed7c580Smrg genix) 7401a28b98bSmrg cpu=ns32k 7411a28b98bSmrg vendor=ns 7420ed7c580Smrg ;; 7430ed7c580Smrg h3050r* | hiux*) 7441a28b98bSmrg cpu=hppa1.1 7451a28b98bSmrg vendor=hitachi 7461a28b98bSmrg basic_os=hiuxwe2 7470ed7c580Smrg ;; 7480ed7c580Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7491a28b98bSmrg cpu=hppa1.0 7501a28b98bSmrg vendor=hp 7510ed7c580Smrg ;; 7520ed7c580Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7531a28b98bSmrg cpu=m68000 7541a28b98bSmrg vendor=hp 7550ed7c580Smrg ;; 7560ed7c580Smrg hp9k3[2-9][0-9]) 7571a28b98bSmrg cpu=m68k 7581a28b98bSmrg vendor=hp 7590ed7c580Smrg ;; 7600ed7c580Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7611a28b98bSmrg cpu=hppa1.0 7621a28b98bSmrg vendor=hp 7630ed7c580Smrg ;; 7640ed7c580Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7651a28b98bSmrg cpu=hppa1.1 7661a28b98bSmrg vendor=hp 7670ed7c580Smrg ;; 7680ed7c580Smrg hp9k78[0-9] | hp78[0-9]) 7690ed7c580Smrg # FIXME: really hppa2.0-hp 7701a28b98bSmrg cpu=hppa1.1 7711a28b98bSmrg vendor=hp 7720ed7c580Smrg ;; 7730ed7c580Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7740ed7c580Smrg # FIXME: really hppa2.0-hp 7751a28b98bSmrg cpu=hppa1.1 7761a28b98bSmrg vendor=hp 7770ed7c580Smrg ;; 7780ed7c580Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7791a28b98bSmrg cpu=hppa1.1 7801a28b98bSmrg vendor=hp 7810ed7c580Smrg ;; 7820ed7c580Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7831a28b98bSmrg cpu=hppa1.0 7841a28b98bSmrg vendor=hp 7850ed7c580Smrg ;; 7860ed7c580Smrg i*86v32) 7871a28b98bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7881a28b98bSmrg vendor=pc 7891a28b98bSmrg basic_os=sysv32 7900ed7c580Smrg ;; 7910ed7c580Smrg i*86v4*) 7921a28b98bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7931a28b98bSmrg vendor=pc 7941a28b98bSmrg basic_os=sysv4 7950ed7c580Smrg ;; 7960ed7c580Smrg i*86v) 7971a28b98bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7981a28b98bSmrg vendor=pc 7991a28b98bSmrg basic_os=sysv 8000ed7c580Smrg ;; 8010ed7c580Smrg i*86sol2) 8021a28b98bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8031a28b98bSmrg vendor=pc 8041a28b98bSmrg basic_os=solaris2 8050ed7c580Smrg ;; 8061a28b98bSmrg j90 | j90-cray) 8071a28b98bSmrg cpu=j90 8081a28b98bSmrg vendor=cray 8091a28b98bSmrg basic_os=${basic_os:-unicos} 8100ed7c580Smrg ;; 8110ed7c580Smrg iris | iris4d) 8121a28b98bSmrg cpu=mips 8131a28b98bSmrg vendor=sgi 8141a28b98bSmrg case $basic_os in 8151a28b98bSmrg irix*) 8160ed7c580Smrg ;; 8170ed7c580Smrg *) 8181a28b98bSmrg basic_os=irix4 8190ed7c580Smrg ;; 8200ed7c580Smrg esac 8210ed7c580Smrg ;; 8220ed7c580Smrg miniframe) 8231a28b98bSmrg cpu=m68000 8241a28b98bSmrg vendor=convergent 8250ed7c580Smrg ;; 8261a28b98bSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8271a28b98bSmrg cpu=m68k 8281a28b98bSmrg vendor=atari 8291a28b98bSmrg basic_os=mint 8300ed7c580Smrg ;; 8310ed7c580Smrg news-3600 | risc-news) 8321a28b98bSmrg cpu=mips 8331a28b98bSmrg vendor=sony 8341a28b98bSmrg basic_os=newsos 8351a28b98bSmrg ;; 8361a28b98bSmrg next | m*-next) 8371a28b98bSmrg cpu=m68k 8381a28b98bSmrg vendor=next 8391a28b98bSmrg case $basic_os in 8401a28b98bSmrg openstep*) 8411a28b98bSmrg ;; 8421a28b98bSmrg nextstep*) 8430ed7c580Smrg ;; 8441a28b98bSmrg ns2*) 8451a28b98bSmrg basic_os=nextstep2 8460ed7c580Smrg ;; 8470ed7c580Smrg *) 8481a28b98bSmrg basic_os=nextstep3 8490ed7c580Smrg ;; 8500ed7c580Smrg esac 8510ed7c580Smrg ;; 8520ed7c580Smrg np1) 8531a28b98bSmrg cpu=np1 8541a28b98bSmrg vendor=gould 8550ed7c580Smrg ;; 8560ed7c580Smrg op50n-* | op60c-*) 8571a28b98bSmrg cpu=hppa1.1 8581a28b98bSmrg vendor=oki 8591a28b98bSmrg basic_os=proelf 8600ed7c580Smrg ;; 8610ed7c580Smrg pa-hitachi) 8621a28b98bSmrg cpu=hppa1.1 8631a28b98bSmrg vendor=hitachi 8641a28b98bSmrg basic_os=hiuxwe2 8650ed7c580Smrg ;; 8660ed7c580Smrg pbd) 8671a28b98bSmrg cpu=sparc 8681a28b98bSmrg vendor=tti 8690ed7c580Smrg ;; 8700ed7c580Smrg pbb) 8711a28b98bSmrg cpu=m68k 8721a28b98bSmrg vendor=tti 8730ed7c580Smrg ;; 8741a28b98bSmrg pc532) 8751a28b98bSmrg cpu=ns32k 8761a28b98bSmrg vendor=pc532 8770ed7c580Smrg ;; 8780ed7c580Smrg pn) 8791a28b98bSmrg cpu=pn 8801a28b98bSmrg vendor=gould 8810ed7c580Smrg ;; 8821a28b98bSmrg power) 8831a28b98bSmrg cpu=power 8841a28b98bSmrg vendor=ibm 8850ed7c580Smrg ;; 8860ed7c580Smrg ps2) 8871a28b98bSmrg cpu=i386 8881a28b98bSmrg vendor=ibm 8890ed7c580Smrg ;; 8900ed7c580Smrg rm[46]00) 8911a28b98bSmrg cpu=mips 8921a28b98bSmrg vendor=siemens 8930ed7c580Smrg ;; 8940ed7c580Smrg rtpc | rtpc-*) 8951a28b98bSmrg cpu=romp 8961a28b98bSmrg vendor=ibm 8970ed7c580Smrg ;; 8981a28b98bSmrg sde) 8991a28b98bSmrg cpu=mipsisa32 9001a28b98bSmrg vendor=sde 9011a28b98bSmrg basic_os=${basic_os:-elf} 9020ed7c580Smrg ;; 9031a28b98bSmrg simso-wrs) 9041a28b98bSmrg cpu=sparclite 9051a28b98bSmrg vendor=wrs 9061a28b98bSmrg basic_os=vxworks 9070ed7c580Smrg ;; 9081a28b98bSmrg tower | tower-32) 9091a28b98bSmrg cpu=m68k 9101a28b98bSmrg vendor=ncr 9110ed7c580Smrg ;; 9121a28b98bSmrg vpp*|vx|vx-*) 9131a28b98bSmrg cpu=f301 9141a28b98bSmrg vendor=fujitsu 9150ed7c580Smrg ;; 9161a28b98bSmrg w65) 9171a28b98bSmrg cpu=w65 9181a28b98bSmrg vendor=wdc 9190ed7c580Smrg ;; 9201a28b98bSmrg w89k-*) 9211a28b98bSmrg cpu=hppa1.1 9221a28b98bSmrg vendor=winbond 9231a28b98bSmrg basic_os=proelf 9240ed7c580Smrg ;; 9251a28b98bSmrg none) 9261a28b98bSmrg cpu=none 9271a28b98bSmrg vendor=none 9280ed7c580Smrg ;; 9291a28b98bSmrg leon|leon[3-9]) 9301a28b98bSmrg cpu=sparc 9311a28b98bSmrg vendor=$basic_machine 9320ed7c580Smrg ;; 9331a28b98bSmrg leon-*|leon[3-9]-*) 9341a28b98bSmrg cpu=sparc 9351a28b98bSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9360ed7c580Smrg ;; 9371a28b98bSmrg 9381a28b98bSmrg *-*) 9391a28b98bSmrg # shellcheck disable=SC2162 9401a28b98bSmrg saved_IFS=$IFS 9411a28b98bSmrg IFS="-" read cpu vendor <<EOF 9421a28b98bSmrg$basic_machine 9431a28b98bSmrgEOF 9441a28b98bSmrg IFS=$saved_IFS 9450ed7c580Smrg ;; 9461a28b98bSmrg # We use `pc' rather than `unknown' 9471a28b98bSmrg # because (1) that's what they normally are, and 9481a28b98bSmrg # (2) the word "unknown" tends to confuse beginning users. 9491a28b98bSmrg i*86 | x86_64) 9501a28b98bSmrg cpu=$basic_machine 9511a28b98bSmrg vendor=pc 9520ed7c580Smrg ;; 9531a28b98bSmrg # These rules are duplicated from below for sake of the special case above; 9541a28b98bSmrg # i.e. things that normalized to x86 arches should also default to "pc" 9551a28b98bSmrg pc98) 9561a28b98bSmrg cpu=i386 9571a28b98bSmrg vendor=pc 9580ed7c580Smrg ;; 9591a28b98bSmrg x64 | amd64) 9601a28b98bSmrg cpu=x86_64 9611a28b98bSmrg vendor=pc 9620ed7c580Smrg ;; 9631a28b98bSmrg # Recognize the basic CPU types without company name. 9641a28b98bSmrg *) 9651a28b98bSmrg cpu=$basic_machine 9661a28b98bSmrg vendor=unknown 9670ed7c580Smrg ;; 9681a28b98bSmrgesac 9691a28b98bSmrg 9701a28b98bSmrgunset -v basic_machine 9711a28b98bSmrg 9721a28b98bSmrg# Decode basic machines in the full and proper CPU-Company form. 9731a28b98bSmrgcase $cpu-$vendor in 9741a28b98bSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9751a28b98bSmrg # some cases the only manufacturer, in others, it is the most popular. 9761a28b98bSmrg craynv-unknown) 9771a28b98bSmrg vendor=cray 9781a28b98bSmrg basic_os=${basic_os:-unicosmp} 9790ed7c580Smrg ;; 9801a28b98bSmrg c90-unknown | c90-cray) 9811a28b98bSmrg vendor=cray 9821a28b98bSmrg basic_os=${Basic_os:-unicos} 9830ed7c580Smrg ;; 9841a28b98bSmrg fx80-unknown) 9851a28b98bSmrg vendor=alliant 9860ed7c580Smrg ;; 9871a28b98bSmrg romp-unknown) 9881a28b98bSmrg vendor=ibm 9890ed7c580Smrg ;; 9901a28b98bSmrg mmix-unknown) 9911a28b98bSmrg vendor=knuth 9920ed7c580Smrg ;; 9931a28b98bSmrg microblaze-unknown | microblazeel-unknown) 9941a28b98bSmrg vendor=xilinx 9950ed7c580Smrg ;; 9961a28b98bSmrg rs6000-unknown) 9971a28b98bSmrg vendor=ibm 9980ed7c580Smrg ;; 9991a28b98bSmrg vax-unknown) 10001a28b98bSmrg vendor=dec 10010ed7c580Smrg ;; 10021a28b98bSmrg pdp11-unknown) 10031a28b98bSmrg vendor=dec 10040ed7c580Smrg ;; 10051a28b98bSmrg we32k-unknown) 10061a28b98bSmrg vendor=att 10070ed7c580Smrg ;; 10081a28b98bSmrg cydra-unknown) 10091a28b98bSmrg vendor=cydrome 10100ed7c580Smrg ;; 10111a28b98bSmrg i370-ibm*) 10121a28b98bSmrg vendor=ibm 10130ed7c580Smrg ;; 10141a28b98bSmrg orion-unknown) 10151a28b98bSmrg vendor=highlevel 10160ed7c580Smrg ;; 10171a28b98bSmrg xps-unknown | xps100-unknown) 10181a28b98bSmrg cpu=xps100 10191a28b98bSmrg vendor=honeywell 10200ed7c580Smrg ;; 10211a28b98bSmrg 10221a28b98bSmrg # Here we normalize CPU types with a missing or matching vendor 10231a28b98bSmrg dpx20-unknown | dpx20-bull) 10241a28b98bSmrg cpu=rs6000 10251a28b98bSmrg vendor=bull 10261a28b98bSmrg basic_os=${basic_os:-bosx} 10270ed7c580Smrg ;; 10281a28b98bSmrg 10291a28b98bSmrg # Here we normalize CPU types irrespective of the vendor 10301a28b98bSmrg amd64-*) 10311a28b98bSmrg cpu=x86_64 10320ed7c580Smrg ;; 10331a28b98bSmrg blackfin-*) 10341a28b98bSmrg cpu=bfin 10351a28b98bSmrg basic_os=linux 10360ed7c580Smrg ;; 10371a28b98bSmrg c54x-*) 10381a28b98bSmrg cpu=tic54x 10390ed7c580Smrg ;; 10401a28b98bSmrg c55x-*) 10411a28b98bSmrg cpu=tic55x 10420ed7c580Smrg ;; 10431a28b98bSmrg c6x-*) 10441a28b98bSmrg cpu=tic6x 10450ed7c580Smrg ;; 10461a28b98bSmrg e500v[12]-*) 10471a28b98bSmrg cpu=powerpc 10481a28b98bSmrg basic_os=${basic_os}"spe" 10490ed7c580Smrg ;; 10501a28b98bSmrg mips3*-*) 10511a28b98bSmrg cpu=mips64 10520ed7c580Smrg ;; 10531a28b98bSmrg ms1-*) 10541a28b98bSmrg cpu=mt 10550ed7c580Smrg ;; 10561a28b98bSmrg m68knommu-*) 10571a28b98bSmrg cpu=m68k 10581a28b98bSmrg basic_os=linux 10590ed7c580Smrg ;; 10601a28b98bSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10611a28b98bSmrg cpu=s12z 10620ed7c580Smrg ;; 10631a28b98bSmrg openrisc-*) 10641a28b98bSmrg cpu=or32 10650ed7c580Smrg ;; 10661a28b98bSmrg parisc-*) 10671a28b98bSmrg cpu=hppa 10681a28b98bSmrg basic_os=linux 10690ed7c580Smrg ;; 10701a28b98bSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10711a28b98bSmrg cpu=i586 10720ed7c580Smrg ;; 10731a28b98bSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 10741a28b98bSmrg cpu=i686 10750ed7c580Smrg ;; 10761a28b98bSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10771a28b98bSmrg cpu=i686 10780ed7c580Smrg ;; 10791a28b98bSmrg pentium4-*) 10801a28b98bSmrg cpu=i786 10810ed7c580Smrg ;; 10821a28b98bSmrg pc98-*) 10831a28b98bSmrg cpu=i386 10840ed7c580Smrg ;; 10851a28b98bSmrg ppc-* | ppcbe-*) 10861a28b98bSmrg cpu=powerpc 10870ed7c580Smrg ;; 10881a28b98bSmrg ppcle-* | powerpclittle-*) 10891a28b98bSmrg cpu=powerpcle 10900ed7c580Smrg ;; 10911a28b98bSmrg ppc64-*) 10921a28b98bSmrg cpu=powerpc64 10930ed7c580Smrg ;; 10941a28b98bSmrg ppc64le-* | powerpc64little-*) 10951a28b98bSmrg cpu=powerpc64le 10960ed7c580Smrg ;; 10971a28b98bSmrg sb1-*) 10981a28b98bSmrg cpu=mipsisa64sb1 10990ed7c580Smrg ;; 11001a28b98bSmrg sb1el-*) 11011a28b98bSmrg cpu=mipsisa64sb1el 11020ed7c580Smrg ;; 11031a28b98bSmrg sh5e[lb]-*) 11041a28b98bSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11050ed7c580Smrg ;; 11061a28b98bSmrg spur-*) 11071a28b98bSmrg cpu=spur 11080ed7c580Smrg ;; 11091a28b98bSmrg strongarm-* | thumb-*) 11101a28b98bSmrg cpu=arm 11110ed7c580Smrg ;; 11121a28b98bSmrg tx39-*) 11131a28b98bSmrg cpu=mipstx39 11140ed7c580Smrg ;; 11151a28b98bSmrg tx39el-*) 11161a28b98bSmrg cpu=mipstx39el 11170ed7c580Smrg ;; 11181a28b98bSmrg x64-*) 11191a28b98bSmrg cpu=x86_64 11200ed7c580Smrg ;; 11211a28b98bSmrg xscale-* | xscalee[bl]-*) 11221a28b98bSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11230ed7c580Smrg ;; 11241a28b98bSmrg arm64-*) 11251a28b98bSmrg cpu=aarch64 11260ed7c580Smrg ;; 11271a28b98bSmrg 11281a28b98bSmrg # Recognize the canonical CPU Types that limit and/or modify the 11291a28b98bSmrg # company names they are paired with. 11301a28b98bSmrg cr16-*) 11311a28b98bSmrg basic_os=${basic_os:-elf} 11320ed7c580Smrg ;; 11331a28b98bSmrg crisv32-* | etraxfs*-*) 11341a28b98bSmrg cpu=crisv32 11351a28b98bSmrg vendor=axis 11360ed7c580Smrg ;; 11371a28b98bSmrg cris-* | etrax*-*) 11381a28b98bSmrg cpu=cris 11391a28b98bSmrg vendor=axis 11400ed7c580Smrg ;; 11411a28b98bSmrg crx-*) 11421a28b98bSmrg basic_os=${basic_os:-elf} 11430ed7c580Smrg ;; 11441a28b98bSmrg neo-tandem) 11451a28b98bSmrg cpu=neo 11461a28b98bSmrg vendor=tandem 11470ed7c580Smrg ;; 11481a28b98bSmrg nse-tandem) 11491a28b98bSmrg cpu=nse 11501a28b98bSmrg vendor=tandem 11510ed7c580Smrg ;; 11521a28b98bSmrg nsr-tandem) 11531a28b98bSmrg cpu=nsr 11541a28b98bSmrg vendor=tandem 11550ed7c580Smrg ;; 11561a28b98bSmrg nsv-tandem) 11571a28b98bSmrg cpu=nsv 11581a28b98bSmrg vendor=tandem 11590ed7c580Smrg ;; 11601a28b98bSmrg nsx-tandem) 11611a28b98bSmrg cpu=nsx 11621a28b98bSmrg vendor=tandem 11630ed7c580Smrg ;; 11641a28b98bSmrg mipsallegrexel-sony) 11651a28b98bSmrg cpu=mipsallegrexel 11661a28b98bSmrg vendor=sony 11670ed7c580Smrg ;; 11681a28b98bSmrg tile*-*) 11691a28b98bSmrg basic_os=${basic_os:-linux-gnu} 11700ed7c580Smrg ;; 11711a28b98bSmrg 11720ed7c580Smrg *) 11731a28b98bSmrg # Recognize the canonical CPU types that are allowed with any 11741a28b98bSmrg # company name. 11751a28b98bSmrg case $cpu in 11761a28b98bSmrg 1750a | 580 \ 11771a28b98bSmrg | a29k \ 11781a28b98bSmrg | aarch64 | aarch64_be \ 11791a28b98bSmrg | abacus \ 11801a28b98bSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11811a28b98bSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11821a28b98bSmrg | alphapca5[67] | alpha64pca5[67] \ 11831a28b98bSmrg | am33_2.0 \ 11841a28b98bSmrg | amdgcn \ 11851a28b98bSmrg | arc | arceb | arc32 | arc64 \ 11861a28b98bSmrg | arm | arm[lb]e | arme[lb] | armv* \ 11871a28b98bSmrg | avr | avr32 \ 11881a28b98bSmrg | asmjs \ 11891a28b98bSmrg | ba \ 11901a28b98bSmrg | be32 | be64 \ 11911a28b98bSmrg | bfin | bpf | bs2000 \ 11921a28b98bSmrg | c[123]* | c30 | [cjt]90 | c4x \ 11931a28b98bSmrg | c8051 | clipper | craynv | csky | cydra \ 11941a28b98bSmrg | d10v | d30v | dlx | dsp16xx \ 11951a28b98bSmrg | e2k | elxsi | epiphany \ 11961a28b98bSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 11971a28b98bSmrg | h8300 | h8500 \ 11981a28b98bSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 11991a28b98bSmrg | hexagon \ 12001a28b98bSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12011a28b98bSmrg | ip2k | iq2000 \ 12021a28b98bSmrg | k1om \ 12031a28b98bSmrg | le32 | le64 \ 12041a28b98bSmrg | lm32 \ 12051a28b98bSmrg | loongarch32 | loongarch64 | loongarchx32 \ 12061a28b98bSmrg | m32c | m32r | m32rle \ 12071a28b98bSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12081a28b98bSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12091a28b98bSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12101a28b98bSmrg | microblaze | microblazeel \ 12111a28b98bSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12121a28b98bSmrg | mips16 \ 12131a28b98bSmrg | mips64 | mips64eb | mips64el \ 12141a28b98bSmrg | mips64octeon | mips64octeonel \ 12151a28b98bSmrg | mips64orion | mips64orionel \ 12161a28b98bSmrg | mips64r5900 | mips64r5900el \ 12171a28b98bSmrg | mips64vr | mips64vrel \ 12181a28b98bSmrg | mips64vr4100 | mips64vr4100el \ 12191a28b98bSmrg | mips64vr4300 | mips64vr4300el \ 12201a28b98bSmrg | mips64vr5000 | mips64vr5000el \ 12211a28b98bSmrg | mips64vr5900 | mips64vr5900el \ 12221a28b98bSmrg | mipsisa32 | mipsisa32el \ 12231a28b98bSmrg | mipsisa32r2 | mipsisa32r2el \ 12241a28b98bSmrg | mipsisa32r3 | mipsisa32r3el \ 12251a28b98bSmrg | mipsisa32r5 | mipsisa32r5el \ 12261a28b98bSmrg | mipsisa32r6 | mipsisa32r6el \ 12271a28b98bSmrg | mipsisa64 | mipsisa64el \ 12281a28b98bSmrg | mipsisa64r2 | mipsisa64r2el \ 12291a28b98bSmrg | mipsisa64r3 | mipsisa64r3el \ 12301a28b98bSmrg | mipsisa64r5 | mipsisa64r5el \ 12311a28b98bSmrg | mipsisa64r6 | mipsisa64r6el \ 12321a28b98bSmrg | mipsisa64sb1 | mipsisa64sb1el \ 12331a28b98bSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 12341a28b98bSmrg | mipsr5900 | mipsr5900el \ 12351a28b98bSmrg | mipstx39 | mipstx39el \ 12361a28b98bSmrg | mmix \ 12371a28b98bSmrg | mn10200 | mn10300 \ 12381a28b98bSmrg | moxie \ 12391a28b98bSmrg | mt \ 12401a28b98bSmrg | msp430 \ 12411a28b98bSmrg | nds32 | nds32le | nds32be \ 12421a28b98bSmrg | nfp \ 12431a28b98bSmrg | nios | nios2 | nios2eb | nios2el \ 12441a28b98bSmrg | none | np1 | ns16k | ns32k | nvptx \ 12451a28b98bSmrg | open8 \ 12461a28b98bSmrg | or1k* \ 12471a28b98bSmrg | or32 \ 12481a28b98bSmrg | orion \ 12491a28b98bSmrg | picochip \ 12501a28b98bSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12511a28b98bSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12521a28b98bSmrg | pru \ 12531a28b98bSmrg | pyramid \ 12541a28b98bSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12551a28b98bSmrg | rl78 | romp | rs6000 | rx \ 12561a28b98bSmrg | s390 | s390x \ 12571a28b98bSmrg | score \ 12581a28b98bSmrg | sh | shl \ 12591a28b98bSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12601a28b98bSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12611a28b98bSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12621a28b98bSmrg | sparclite \ 12631a28b98bSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12641a28b98bSmrg | spu \ 12651a28b98bSmrg | tahoe \ 12661a28b98bSmrg | thumbv7* \ 12671a28b98bSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12681a28b98bSmrg | tron \ 12691a28b98bSmrg | ubicom32 \ 12701a28b98bSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12711a28b98bSmrg | vax \ 12721a28b98bSmrg | visium \ 12731a28b98bSmrg | w65 \ 12741a28b98bSmrg | wasm32 | wasm64 \ 12751a28b98bSmrg | we32k \ 12761a28b98bSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12771a28b98bSmrg | xstormy16 | xtensa* \ 12781a28b98bSmrg | ymp \ 12791a28b98bSmrg | z8k | z80) 12801a28b98bSmrg ;; 12811a28b98bSmrg 12821a28b98bSmrg *) 12831a28b98bSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12841a28b98bSmrg exit 1 12851a28b98bSmrg ;; 12861a28b98bSmrg esac 12870ed7c580Smrg ;; 12880ed7c580Smrgesac 12890ed7c580Smrg 12900ed7c580Smrg# Here we canonicalize certain aliases for manufacturers. 12911a28b98bSmrgcase $vendor in 12921a28b98bSmrg digital*) 12931a28b98bSmrg vendor=dec 12940ed7c580Smrg ;; 12951a28b98bSmrg commodore*) 12961a28b98bSmrg vendor=cbm 12970ed7c580Smrg ;; 12980ed7c580Smrg *) 12990ed7c580Smrg ;; 13000ed7c580Smrgesac 13010ed7c580Smrg 13020ed7c580Smrg# Decode manufacturer-specific aliases for certain operating systems. 13030ed7c580Smrg 13041a28b98bSmrgif test x$basic_os != x 13050ed7c580Smrgthen 13061a28b98bSmrg 13071a28b98bSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 13081a28b98bSmrg# set os. 13091a28b98bSmrgcase $basic_os in 13101a28b98bSmrg gnu/linux*) 13111a28b98bSmrg kernel=linux 13121a28b98bSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13131a28b98bSmrg ;; 13141a28b98bSmrg os2-emx) 13151a28b98bSmrg kernel=os2 13161a28b98bSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13171a28b98bSmrg ;; 13181a28b98bSmrg nto-qnx*) 13191a28b98bSmrg kernel=nto 13201a28b98bSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13211a28b98bSmrg ;; 13221a28b98bSmrg *-*) 13231a28b98bSmrg # shellcheck disable=SC2162 13241a28b98bSmrg saved_IFS=$IFS 13251a28b98bSmrg IFS="-" read kernel os <<EOF 13261a28b98bSmrg$basic_os 13271a28b98bSmrgEOF 13281a28b98bSmrg IFS=$saved_IFS 13291a28b98bSmrg ;; 13301a28b98bSmrg # Default OS when just kernel was specified 13311a28b98bSmrg nto*) 13321a28b98bSmrg kernel=nto 13331a28b98bSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13341a28b98bSmrg ;; 13351a28b98bSmrg linux*) 13361a28b98bSmrg kernel=linux 13371a28b98bSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13381a28b98bSmrg ;; 13391a28b98bSmrg *) 13401a28b98bSmrg kernel= 13411a28b98bSmrg os=$basic_os 13421a28b98bSmrg ;; 13431a28b98bSmrgesac 13441a28b98bSmrg 13451a28b98bSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13461a28b98bSmrg# etc.) 13470ed7c580Smrgcase $os in 13481a28b98bSmrg # First match some system type aliases that might get confused 13491a28b98bSmrg # with valid system types. 13501a28b98bSmrg # solaris* is a basic system type, with this one exception. 13511a28b98bSmrg auroraux) 13521a28b98bSmrg os=auroraux 13530ed7c580Smrg ;; 13541a28b98bSmrg bluegene*) 13551a28b98bSmrg os=cnk 13560ed7c580Smrg ;; 13571a28b98bSmrg solaris1 | solaris1.*) 13581a28b98bSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13590ed7c580Smrg ;; 13601a28b98bSmrg solaris) 13611a28b98bSmrg os=solaris2 13620ed7c580Smrg ;; 13631a28b98bSmrg unixware*) 13641a28b98bSmrg os=sysv4.2uw 13650ed7c580Smrg ;; 13661a28b98bSmrg # es1800 is here to avoid being matched by es* (a different OS) 13671a28b98bSmrg es1800*) 13681a28b98bSmrg os=ose 13690ed7c580Smrg ;; 13701a28b98bSmrg # Some version numbers need modification 13711a28b98bSmrg chorusos*) 13721a28b98bSmrg os=chorusos 13730ed7c580Smrg ;; 13741a28b98bSmrg isc) 13751a28b98bSmrg os=isc2.2 13760ed7c580Smrg ;; 13771a28b98bSmrg sco6) 13781a28b98bSmrg os=sco5v6 13790ed7c580Smrg ;; 13801a28b98bSmrg sco5) 13811a28b98bSmrg os=sco3.2v5 13820ed7c580Smrg ;; 13831a28b98bSmrg sco4) 13841a28b98bSmrg os=sco3.2v4 13850ed7c580Smrg ;; 13861a28b98bSmrg sco3.2.[4-9]*) 13871a28b98bSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13880ed7c580Smrg ;; 13891a28b98bSmrg sco*v* | scout) 13901a28b98bSmrg # Don't match below 13910ed7c580Smrg ;; 13921a28b98bSmrg sco*) 13931a28b98bSmrg os=sco3.2v2 13940ed7c580Smrg ;; 13951a28b98bSmrg psos*) 13961a28b98bSmrg os=psos 13970ed7c580Smrg ;; 13981a28b98bSmrg qnx*) 13991a28b98bSmrg os=qnx 14000ed7c580Smrg ;; 14011a28b98bSmrg hiux*) 14021a28b98bSmrg os=hiuxwe2 14030ed7c580Smrg ;; 14041a28b98bSmrg lynx*178) 14051a28b98bSmrg os=lynxos178 14060ed7c580Smrg ;; 14071a28b98bSmrg lynx*5) 14081a28b98bSmrg os=lynxos5 14090ed7c580Smrg ;; 14101a28b98bSmrg lynxos*) 14111a28b98bSmrg # don't get caught up in next wildcard 14120ed7c580Smrg ;; 14131a28b98bSmrg lynx*) 14141a28b98bSmrg os=lynxos 14150ed7c580Smrg ;; 14161a28b98bSmrg mac[0-9]*) 14171a28b98bSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 14180ed7c580Smrg ;; 14191a28b98bSmrg opened*) 14201a28b98bSmrg os=openedition 14210ed7c580Smrg ;; 14221a28b98bSmrg os400*) 14231a28b98bSmrg os=os400 14240ed7c580Smrg ;; 14251a28b98bSmrg sunos5*) 14261a28b98bSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14270ed7c580Smrg ;; 14281a28b98bSmrg sunos6*) 14291a28b98bSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14300ed7c580Smrg ;; 14311a28b98bSmrg wince*) 14321a28b98bSmrg os=wince 14330ed7c580Smrg ;; 14341a28b98bSmrg utek*) 14351a28b98bSmrg os=bsd 14360ed7c580Smrg ;; 14371a28b98bSmrg dynix*) 14381a28b98bSmrg os=bsd 14390ed7c580Smrg ;; 14401a28b98bSmrg acis*) 14411a28b98bSmrg os=aos 14420ed7c580Smrg ;; 14431a28b98bSmrg atheos*) 14441a28b98bSmrg os=atheos 14450ed7c580Smrg ;; 14461a28b98bSmrg syllable*) 14471a28b98bSmrg os=syllable 14480ed7c580Smrg ;; 14491a28b98bSmrg 386bsd) 14501a28b98bSmrg os=bsd 14510ed7c580Smrg ;; 14521a28b98bSmrg ctix* | uts*) 14531a28b98bSmrg os=sysv 14540ed7c580Smrg ;; 14551a28b98bSmrg nova*) 14561a28b98bSmrg os=rtmk-nova 14570ed7c580Smrg ;; 14581a28b98bSmrg ns2) 14591a28b98bSmrg os=nextstep2 14600ed7c580Smrg ;; 14611a28b98bSmrg # Preserve the version number of sinix5. 14621a28b98bSmrg sinix5.*) 14631a28b98bSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14640ed7c580Smrg ;; 14651a28b98bSmrg sinix*) 14661a28b98bSmrg os=sysv4 14670ed7c580Smrg ;; 14681a28b98bSmrg tpf*) 14691a28b98bSmrg os=tpf 14700ed7c580Smrg ;; 14711a28b98bSmrg triton*) 14721a28b98bSmrg os=sysv3 14730ed7c580Smrg ;; 14741a28b98bSmrg oss*) 14751a28b98bSmrg os=sysv3 14760ed7c580Smrg ;; 14771a28b98bSmrg svr4*) 14781a28b98bSmrg os=sysv4 14790ed7c580Smrg ;; 14801a28b98bSmrg svr3) 14811a28b98bSmrg os=sysv3 14820ed7c580Smrg ;; 14831a28b98bSmrg sysvr4) 14841a28b98bSmrg os=sysv4 14850ed7c580Smrg ;; 14861a28b98bSmrg ose*) 14871a28b98bSmrg os=ose 14880ed7c580Smrg ;; 14891a28b98bSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14901a28b98bSmrg os=mint 14910ed7c580Smrg ;; 14921a28b98bSmrg dicos*) 14931a28b98bSmrg os=dicos 14940ed7c580Smrg ;; 14951a28b98bSmrg pikeos*) 14961a28b98bSmrg # Until real need of OS specific support for 14971a28b98bSmrg # particular features comes up, bare metal 14981a28b98bSmrg # configurations are quite functional. 14991a28b98bSmrg case $cpu in 15001a28b98bSmrg arm*) 15011a28b98bSmrg os=eabi 15021a28b98bSmrg ;; 15031a28b98bSmrg *) 15041a28b98bSmrg os=elf 15051a28b98bSmrg ;; 15061a28b98bSmrg esac 15070ed7c580Smrg ;; 15080ed7c580Smrg *) 15091a28b98bSmrg # No normalization, but not necessarily accepted, that comes below. 15100ed7c580Smrg ;; 15110ed7c580Smrgesac 15121a28b98bSmrg 15130ed7c580Smrgelse 15140ed7c580Smrg 15150ed7c580Smrg# Here we handle the default operating systems that come with various machines. 15160ed7c580Smrg# The value should be what the vendor currently ships out the door with their 15170ed7c580Smrg# machine or put another way, the most popular os provided with the machine. 15180ed7c580Smrg 15190ed7c580Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15200ed7c580Smrg# "-sun"), then you have to tell the case statement up towards the top 15210ed7c580Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15220ed7c580Smrg# will signal an error saying that MANUFACTURER isn't an operating 15230ed7c580Smrg# system, and we'll never get to this point. 15240ed7c580Smrg 15251a28b98bSmrgkernel= 15261a28b98bSmrgcase $cpu-$vendor in 15270ed7c580Smrg score-*) 15281a28b98bSmrg os=elf 15290ed7c580Smrg ;; 15300ed7c580Smrg spu-*) 15311a28b98bSmrg os=elf 15320ed7c580Smrg ;; 15330ed7c580Smrg *-acorn) 15341a28b98bSmrg os=riscix1.2 15350ed7c580Smrg ;; 15360ed7c580Smrg arm*-rebel) 15371a28b98bSmrg kernel=linux 15381a28b98bSmrg os=gnu 15390ed7c580Smrg ;; 15400ed7c580Smrg arm*-semi) 15411a28b98bSmrg os=aout 15420ed7c580Smrg ;; 15430ed7c580Smrg c4x-* | tic4x-*) 15441a28b98bSmrg os=coff 15450ed7c580Smrg ;; 15460ed7c580Smrg c8051-*) 15471a28b98bSmrg os=elf 15481a28b98bSmrg ;; 15491a28b98bSmrg clipper-intergraph) 15501a28b98bSmrg os=clix 15510ed7c580Smrg ;; 15520ed7c580Smrg hexagon-*) 15531a28b98bSmrg os=elf 15540ed7c580Smrg ;; 15550ed7c580Smrg tic54x-*) 15561a28b98bSmrg os=coff 15570ed7c580Smrg ;; 15580ed7c580Smrg tic55x-*) 15591a28b98bSmrg os=coff 15600ed7c580Smrg ;; 15610ed7c580Smrg tic6x-*) 15621a28b98bSmrg os=coff 15630ed7c580Smrg ;; 15640ed7c580Smrg # This must come before the *-dec entry. 15650ed7c580Smrg pdp10-*) 15661a28b98bSmrg os=tops20 15670ed7c580Smrg ;; 15680ed7c580Smrg pdp11-*) 15691a28b98bSmrg os=none 15700ed7c580Smrg ;; 15710ed7c580Smrg *-dec | vax-*) 15721a28b98bSmrg os=ultrix4.2 15730ed7c580Smrg ;; 15740ed7c580Smrg m68*-apollo) 15751a28b98bSmrg os=domain 15760ed7c580Smrg ;; 15770ed7c580Smrg i386-sun) 15781a28b98bSmrg os=sunos4.0.2 15790ed7c580Smrg ;; 15800ed7c580Smrg m68000-sun) 15811a28b98bSmrg os=sunos3 15820ed7c580Smrg ;; 15830ed7c580Smrg m68*-cisco) 15841a28b98bSmrg os=aout 15850ed7c580Smrg ;; 15860ed7c580Smrg mep-*) 15871a28b98bSmrg os=elf 15880ed7c580Smrg ;; 15890ed7c580Smrg mips*-cisco) 15901a28b98bSmrg os=elf 15910ed7c580Smrg ;; 15920ed7c580Smrg mips*-*) 15931a28b98bSmrg os=elf 15940ed7c580Smrg ;; 15950ed7c580Smrg or32-*) 15961a28b98bSmrg os=coff 15970ed7c580Smrg ;; 15980ed7c580Smrg *-tti) # must be before sparc entry or we get the wrong os. 15991a28b98bSmrg os=sysv3 16000ed7c580Smrg ;; 16010ed7c580Smrg sparc-* | *-sun) 16021a28b98bSmrg os=sunos4.1.1 16030ed7c580Smrg ;; 16041a28b98bSmrg pru-*) 16051a28b98bSmrg os=elf 16060ed7c580Smrg ;; 16071a28b98bSmrg *-be) 16081a28b98bSmrg os=beos 16090ed7c580Smrg ;; 16100ed7c580Smrg *-ibm) 16111a28b98bSmrg os=aix 16120ed7c580Smrg ;; 16130ed7c580Smrg *-knuth) 16141a28b98bSmrg os=mmixware 16150ed7c580Smrg ;; 16160ed7c580Smrg *-wec) 16171a28b98bSmrg os=proelf 16180ed7c580Smrg ;; 16190ed7c580Smrg *-winbond) 16201a28b98bSmrg os=proelf 16210ed7c580Smrg ;; 16220ed7c580Smrg *-oki) 16231a28b98bSmrg os=proelf 16240ed7c580Smrg ;; 16250ed7c580Smrg *-hp) 16261a28b98bSmrg os=hpux 16270ed7c580Smrg ;; 16280ed7c580Smrg *-hitachi) 16291a28b98bSmrg os=hiux 16300ed7c580Smrg ;; 16310ed7c580Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16321a28b98bSmrg os=sysv 16330ed7c580Smrg ;; 16340ed7c580Smrg *-cbm) 16351a28b98bSmrg os=amigaos 16360ed7c580Smrg ;; 16370ed7c580Smrg *-dg) 16381a28b98bSmrg os=dgux 16390ed7c580Smrg ;; 16400ed7c580Smrg *-dolphin) 16411a28b98bSmrg os=sysv3 16420ed7c580Smrg ;; 16430ed7c580Smrg m68k-ccur) 16441a28b98bSmrg os=rtu 16450ed7c580Smrg ;; 16460ed7c580Smrg m88k-omron*) 16471a28b98bSmrg os=luna 16480ed7c580Smrg ;; 16491a28b98bSmrg *-next) 16501a28b98bSmrg os=nextstep 16510ed7c580Smrg ;; 16520ed7c580Smrg *-sequent) 16531a28b98bSmrg os=ptx 16540ed7c580Smrg ;; 16550ed7c580Smrg *-crds) 16561a28b98bSmrg os=unos 16570ed7c580Smrg ;; 16580ed7c580Smrg *-ns) 16591a28b98bSmrg os=genix 16600ed7c580Smrg ;; 16610ed7c580Smrg i370-*) 16621a28b98bSmrg os=mvs 16630ed7c580Smrg ;; 16640ed7c580Smrg *-gould) 16651a28b98bSmrg os=sysv 16660ed7c580Smrg ;; 16670ed7c580Smrg *-highlevel) 16681a28b98bSmrg os=bsd 16690ed7c580Smrg ;; 16700ed7c580Smrg *-encore) 16711a28b98bSmrg os=bsd 16720ed7c580Smrg ;; 16730ed7c580Smrg *-sgi) 16741a28b98bSmrg os=irix 16750ed7c580Smrg ;; 16760ed7c580Smrg *-siemens) 16771a28b98bSmrg os=sysv4 16780ed7c580Smrg ;; 16790ed7c580Smrg *-masscomp) 16801a28b98bSmrg os=rtu 16810ed7c580Smrg ;; 16820ed7c580Smrg f30[01]-fujitsu | f700-fujitsu) 16831a28b98bSmrg os=uxpv 16840ed7c580Smrg ;; 16850ed7c580Smrg *-rom68k) 16861a28b98bSmrg os=coff 16870ed7c580Smrg ;; 16880ed7c580Smrg *-*bug) 16891a28b98bSmrg os=coff 16900ed7c580Smrg ;; 16910ed7c580Smrg *-apple) 16921a28b98bSmrg os=macos 16930ed7c580Smrg ;; 16940ed7c580Smrg *-atari*) 16951a28b98bSmrg os=mint 16961a28b98bSmrg ;; 16971a28b98bSmrg *-wrs) 16981a28b98bSmrg os=vxworks 16990ed7c580Smrg ;; 17000ed7c580Smrg *) 17011a28b98bSmrg os=none 17020ed7c580Smrg ;; 17030ed7c580Smrgesac 17041a28b98bSmrg 17050ed7c580Smrgfi 17060ed7c580Smrg 17071a28b98bSmrg# Now, validate our (potentially fixed-up) OS. 17081a28b98bSmrgcase $os in 17091a28b98bSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17101a28b98bSmrg musl* | newlib* | relibc* | uclibc*) 17111a28b98bSmrg ;; 17121a28b98bSmrg # Likewise for "kernel-abi" 17131a28b98bSmrg eabi* | gnueabi*) 17141a28b98bSmrg ;; 17151a28b98bSmrg # VxWorks passes extra cpu info in the 4th filed. 17161a28b98bSmrg simlinux | simwindows | spe) 17171a28b98bSmrg ;; 17181a28b98bSmrg # Now accept the basic system types. 17191a28b98bSmrg # The portable systems comes first. 17201a28b98bSmrg # Each alternative MUST end in a * to match a version number. 17211a28b98bSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17221a28b98bSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17231a28b98bSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17241a28b98bSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17251a28b98bSmrg | hiux* | abug | nacl* | netware* | windows* \ 17261a28b98bSmrg | os9* | macos* | osx* | ios* \ 17271a28b98bSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17281a28b98bSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17291a28b98bSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17301a28b98bSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17311a28b98bSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17321a28b98bSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17331a28b98bSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17341a28b98bSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17351a28b98bSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17361a28b98bSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17371a28b98bSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17381a28b98bSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17391a28b98bSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17401a28b98bSmrg | midipix* | mingw32* | mingw64* | mint* \ 17411a28b98bSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17421a28b98bSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17431a28b98bSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17441a28b98bSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17451a28b98bSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17461a28b98bSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17471a28b98bSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17481a28b98bSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17491a28b98bSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17501a28b98bSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17511a28b98bSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 17521a28b98bSmrg ;; 17531a28b98bSmrg # This one is extra strict with allowed versions 17541a28b98bSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17551a28b98bSmrg # Don't forget version if it is 3.2v4 or newer. 17561a28b98bSmrg ;; 17571a28b98bSmrg none) 17581a28b98bSmrg ;; 17591a28b98bSmrg *) 17601a28b98bSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17611a28b98bSmrg exit 1 17621a28b98bSmrg ;; 17631a28b98bSmrgesac 17641a28b98bSmrg 17651a28b98bSmrg# As a final step for OS-related things, validate the OS-kernel combination 17661a28b98bSmrg# (given a valid OS), if there is a kernel. 17671a28b98bSmrgcase $kernel-$os in 17681a28b98bSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17691a28b98bSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 17701a28b98bSmrg ;; 17711a28b98bSmrg uclinux-uclibc* ) 17721a28b98bSmrg ;; 17731a28b98bSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 17741a28b98bSmrg # These are just libc implementations, not actual OSes, and thus 17751a28b98bSmrg # require a kernel. 17761a28b98bSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17771a28b98bSmrg exit 1 17781a28b98bSmrg ;; 17791a28b98bSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 17801a28b98bSmrg ;; 17811a28b98bSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 17821a28b98bSmrg ;; 17831a28b98bSmrg nto-qnx*) 17841a28b98bSmrg ;; 17851a28b98bSmrg os2-emx) 17861a28b98bSmrg ;; 17871a28b98bSmrg *-eabi* | *-gnueabi*) 17881a28b98bSmrg ;; 17891a28b98bSmrg -*) 17901a28b98bSmrg # Blank kernel with real OS is always fine. 17911a28b98bSmrg ;; 17921a28b98bSmrg *-*) 17931a28b98bSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 17941a28b98bSmrg exit 1 17951a28b98bSmrg ;; 17961a28b98bSmrgesac 17971a28b98bSmrg 17980ed7c580Smrg# Here we handle the case where we know the os, and the CPU type, but not the 17990ed7c580Smrg# manufacturer. We pick the logical manufacturer. 18001a28b98bSmrgcase $vendor in 18011a28b98bSmrg unknown) 18021a28b98bSmrg case $cpu-$os in 18031a28b98bSmrg *-riscix*) 18040ed7c580Smrg vendor=acorn 18050ed7c580Smrg ;; 18061a28b98bSmrg *-sunos*) 18070ed7c580Smrg vendor=sun 18080ed7c580Smrg ;; 18091a28b98bSmrg *-cnk* | *-aix*) 18100ed7c580Smrg vendor=ibm 18110ed7c580Smrg ;; 18121a28b98bSmrg *-beos*) 18130ed7c580Smrg vendor=be 18140ed7c580Smrg ;; 18151a28b98bSmrg *-hpux*) 18160ed7c580Smrg vendor=hp 18170ed7c580Smrg ;; 18181a28b98bSmrg *-mpeix*) 18190ed7c580Smrg vendor=hp 18200ed7c580Smrg ;; 18211a28b98bSmrg *-hiux*) 18220ed7c580Smrg vendor=hitachi 18230ed7c580Smrg ;; 18241a28b98bSmrg *-unos*) 18250ed7c580Smrg vendor=crds 18260ed7c580Smrg ;; 18271a28b98bSmrg *-dgux*) 18280ed7c580Smrg vendor=dg 18290ed7c580Smrg ;; 18301a28b98bSmrg *-luna*) 18310ed7c580Smrg vendor=omron 18320ed7c580Smrg ;; 18331a28b98bSmrg *-genix*) 18340ed7c580Smrg vendor=ns 18350ed7c580Smrg ;; 18361a28b98bSmrg *-clix*) 18371a28b98bSmrg vendor=intergraph 18381a28b98bSmrg ;; 18391a28b98bSmrg *-mvs* | *-opened*) 18401a28b98bSmrg vendor=ibm 18411a28b98bSmrg ;; 18421a28b98bSmrg *-os400*) 18430ed7c580Smrg vendor=ibm 18440ed7c580Smrg ;; 18451a28b98bSmrg s390-* | s390x-*) 18460ed7c580Smrg vendor=ibm 18470ed7c580Smrg ;; 18481a28b98bSmrg *-ptx*) 18490ed7c580Smrg vendor=sequent 18500ed7c580Smrg ;; 18511a28b98bSmrg *-tpf*) 18520ed7c580Smrg vendor=ibm 18530ed7c580Smrg ;; 18541a28b98bSmrg *-vxsim* | *-vxworks* | *-windiss*) 18550ed7c580Smrg vendor=wrs 18560ed7c580Smrg ;; 18571a28b98bSmrg *-aux*) 18580ed7c580Smrg vendor=apple 18590ed7c580Smrg ;; 18601a28b98bSmrg *-hms*) 18610ed7c580Smrg vendor=hitachi 18620ed7c580Smrg ;; 18631a28b98bSmrg *-mpw* | *-macos*) 18640ed7c580Smrg vendor=apple 18650ed7c580Smrg ;; 18661a28b98bSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18670ed7c580Smrg vendor=atari 18680ed7c580Smrg ;; 18691a28b98bSmrg *-vos*) 18700ed7c580Smrg vendor=stratus 18710ed7c580Smrg ;; 18720ed7c580Smrg esac 18730ed7c580Smrg ;; 18740ed7c580Smrgesac 18750ed7c580Smrg 18761a28b98bSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 18770ed7c580Smrgexit 18780ed7c580Smrg 18790ed7c580Smrg# Local variables: 18801a28b98bSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 18810ed7c580Smrg# time-stamp-start: "timestamp='" 18820ed7c580Smrg# time-stamp-format: "%:y-%02m-%02d" 18830ed7c580Smrg# time-stamp-end: "'" 18840ed7c580Smrg# End: 1885