10ed7c580Smrg#! /bin/sh 20ed7c580Smrg# Configuration validation subroutine script. 3a0cd246fSmrg# Copyright 1992-2024 Free Software Foundation, Inc. 40ed7c580Smrg 51a28b98bSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 61a28b98bSmrg 7a0cd246fSmrgtimestamp='2024-01-01' 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 11a0cd246fSmrg# 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 79a0cd246fSmrgCopyright 1992-2024 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=" 85a0cd246fSmrgTry '$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 *-*-*-*-*) 133a0cd246fSmrg 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* \ 148a0cd246fSmrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ 149a0cd246fSmrg | windows-* ) 1501a28b98bSmrg basic_machine=$field1 1511a28b98bSmrg basic_os=$maybe_os 1521a28b98bSmrg ;; 1531a28b98bSmrg android-linux) 1541a28b98bSmrg basic_machine=$field1-unknown 1551a28b98bSmrg basic_os=linux-android 1561a28b98bSmrg ;; 1571a28b98bSmrg *) 1581a28b98bSmrg basic_machine=$field1-$field2 1591a28b98bSmrg basic_os=$field3 1601a28b98bSmrg ;; 1611a28b98bSmrg esac 1620ed7c580Smrg ;; 1631a28b98bSmrg *-*) 1641a28b98bSmrg # A lone config we happen to match not fitting any pattern 1651a28b98bSmrg case $field1-$field2 in 1661a28b98bSmrg decstation-3100) 1671a28b98bSmrg basic_machine=mips-dec 1681a28b98bSmrg basic_os= 1691a28b98bSmrg ;; 1701a28b98bSmrg *-*) 1711a28b98bSmrg # Second component is usually, but not always the OS 1721a28b98bSmrg case $field2 in 1731a28b98bSmrg # Prevent following clause from handling this valid os 1741a28b98bSmrg sun*os*) 1751a28b98bSmrg basic_machine=$field1 1761a28b98bSmrg basic_os=$field2 1771a28b98bSmrg ;; 1781a28b98bSmrg zephyr*) 1791a28b98bSmrg basic_machine=$field1-unknown 1801a28b98bSmrg basic_os=$field2 1811a28b98bSmrg ;; 1821a28b98bSmrg # Manufacturers 1831a28b98bSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1841a28b98bSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1851a28b98bSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1861a28b98bSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1871a28b98bSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1881a28b98bSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1891a28b98bSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1901a28b98bSmrg | microblaze* | sim | cisco \ 1911a28b98bSmrg | oki | wec | wrs | winbond) 1921a28b98bSmrg basic_machine=$field1-$field2 1931a28b98bSmrg basic_os= 1941a28b98bSmrg ;; 1951a28b98bSmrg *) 1961a28b98bSmrg basic_machine=$field1 1971a28b98bSmrg basic_os=$field2 1981a28b98bSmrg ;; 1991a28b98bSmrg esac 2001a28b98bSmrg ;; 2011a28b98bSmrg esac 2020ed7c580Smrg ;; 2031a28b98bSmrg *) 2041a28b98bSmrg # Convert single-component short-hands not valid as part of 2051a28b98bSmrg # multi-component configurations. 2061a28b98bSmrg case $field1 in 2071a28b98bSmrg 386bsd) 2081a28b98bSmrg basic_machine=i386-pc 2091a28b98bSmrg basic_os=bsd 2101a28b98bSmrg ;; 2111a28b98bSmrg a29khif) 2121a28b98bSmrg basic_machine=a29k-amd 2131a28b98bSmrg basic_os=udi 2141a28b98bSmrg ;; 2151a28b98bSmrg adobe68k) 2161a28b98bSmrg basic_machine=m68010-adobe 2171a28b98bSmrg basic_os=scout 2181a28b98bSmrg ;; 2191a28b98bSmrg alliant) 2201a28b98bSmrg basic_machine=fx80-alliant 2211a28b98bSmrg basic_os= 2221a28b98bSmrg ;; 2231a28b98bSmrg altos | altos3068) 2241a28b98bSmrg basic_machine=m68k-altos 2251a28b98bSmrg basic_os= 2261a28b98bSmrg ;; 2271a28b98bSmrg am29k) 2281a28b98bSmrg basic_machine=a29k-none 2291a28b98bSmrg basic_os=bsd 2301a28b98bSmrg ;; 2311a28b98bSmrg amdahl) 2321a28b98bSmrg basic_machine=580-amdahl 2331a28b98bSmrg basic_os=sysv 2341a28b98bSmrg ;; 2351a28b98bSmrg amiga) 2361a28b98bSmrg basic_machine=m68k-unknown 2371a28b98bSmrg basic_os= 2381a28b98bSmrg ;; 2391a28b98bSmrg amigaos | amigados) 2401a28b98bSmrg basic_machine=m68k-unknown 2411a28b98bSmrg basic_os=amigaos 2421a28b98bSmrg ;; 2431a28b98bSmrg amigaunix | amix) 2441a28b98bSmrg basic_machine=m68k-unknown 2451a28b98bSmrg basic_os=sysv4 2461a28b98bSmrg ;; 2471a28b98bSmrg apollo68) 2481a28b98bSmrg basic_machine=m68k-apollo 2491a28b98bSmrg basic_os=sysv 2501a28b98bSmrg ;; 2511a28b98bSmrg apollo68bsd) 2521a28b98bSmrg basic_machine=m68k-apollo 2531a28b98bSmrg basic_os=bsd 2541a28b98bSmrg ;; 2551a28b98bSmrg aros) 2561a28b98bSmrg basic_machine=i386-pc 2571a28b98bSmrg basic_os=aros 2581a28b98bSmrg ;; 2591a28b98bSmrg aux) 2601a28b98bSmrg basic_machine=m68k-apple 2611a28b98bSmrg basic_os=aux 2621a28b98bSmrg ;; 2631a28b98bSmrg balance) 2641a28b98bSmrg basic_machine=ns32k-sequent 2651a28b98bSmrg basic_os=dynix 2661a28b98bSmrg ;; 2671a28b98bSmrg blackfin) 2681a28b98bSmrg basic_machine=bfin-unknown 2691a28b98bSmrg basic_os=linux 2701a28b98bSmrg ;; 2711a28b98bSmrg cegcc) 2721a28b98bSmrg basic_machine=arm-unknown 2731a28b98bSmrg basic_os=cegcc 2741a28b98bSmrg ;; 2751a28b98bSmrg convex-c1) 2761a28b98bSmrg basic_machine=c1-convex 2771a28b98bSmrg basic_os=bsd 2781a28b98bSmrg ;; 2791a28b98bSmrg convex-c2) 2801a28b98bSmrg basic_machine=c2-convex 2811a28b98bSmrg basic_os=bsd 2821a28b98bSmrg ;; 2831a28b98bSmrg convex-c32) 2841a28b98bSmrg basic_machine=c32-convex 2851a28b98bSmrg basic_os=bsd 2861a28b98bSmrg ;; 2871a28b98bSmrg convex-c34) 2881a28b98bSmrg basic_machine=c34-convex 2891a28b98bSmrg basic_os=bsd 2901a28b98bSmrg ;; 2911a28b98bSmrg convex-c38) 2921a28b98bSmrg basic_machine=c38-convex 2931a28b98bSmrg basic_os=bsd 2941a28b98bSmrg ;; 2951a28b98bSmrg cray) 2961a28b98bSmrg basic_machine=j90-cray 2971a28b98bSmrg basic_os=unicos 2981a28b98bSmrg ;; 2991a28b98bSmrg crds | unos) 3001a28b98bSmrg basic_machine=m68k-crds 3011a28b98bSmrg basic_os= 3021a28b98bSmrg ;; 3031a28b98bSmrg da30) 3041a28b98bSmrg basic_machine=m68k-da30 3051a28b98bSmrg basic_os= 3061a28b98bSmrg ;; 3071a28b98bSmrg decstation | pmax | pmin | dec3100 | decstatn) 3081a28b98bSmrg basic_machine=mips-dec 3091a28b98bSmrg basic_os= 3101a28b98bSmrg ;; 3111a28b98bSmrg delta88) 3121a28b98bSmrg basic_machine=m88k-motorola 3131a28b98bSmrg basic_os=sysv3 3141a28b98bSmrg ;; 3151a28b98bSmrg dicos) 3161a28b98bSmrg basic_machine=i686-pc 3171a28b98bSmrg basic_os=dicos 3181a28b98bSmrg ;; 3191a28b98bSmrg djgpp) 3201a28b98bSmrg basic_machine=i586-pc 3211a28b98bSmrg basic_os=msdosdjgpp 3221a28b98bSmrg ;; 3231a28b98bSmrg ebmon29k) 3241a28b98bSmrg basic_machine=a29k-amd 3251a28b98bSmrg basic_os=ebmon 3261a28b98bSmrg ;; 3271a28b98bSmrg es1800 | OSE68k | ose68k | ose | OSE) 3281a28b98bSmrg basic_machine=m68k-ericsson 3291a28b98bSmrg basic_os=ose 3301a28b98bSmrg ;; 3311a28b98bSmrg gmicro) 3321a28b98bSmrg basic_machine=tron-gmicro 3331a28b98bSmrg basic_os=sysv 3341a28b98bSmrg ;; 3351a28b98bSmrg go32) 3361a28b98bSmrg basic_machine=i386-pc 3371a28b98bSmrg basic_os=go32 3381a28b98bSmrg ;; 3391a28b98bSmrg h8300hms) 3401a28b98bSmrg basic_machine=h8300-hitachi 3411a28b98bSmrg basic_os=hms 3421a28b98bSmrg ;; 3431a28b98bSmrg h8300xray) 3441a28b98bSmrg basic_machine=h8300-hitachi 3451a28b98bSmrg basic_os=xray 3461a28b98bSmrg ;; 3471a28b98bSmrg h8500hms) 3481a28b98bSmrg basic_machine=h8500-hitachi 3491a28b98bSmrg basic_os=hms 3501a28b98bSmrg ;; 3511a28b98bSmrg harris) 3521a28b98bSmrg basic_machine=m88k-harris 3531a28b98bSmrg basic_os=sysv3 3541a28b98bSmrg ;; 3551a28b98bSmrg hp300 | hp300hpux) 3561a28b98bSmrg basic_machine=m68k-hp 3571a28b98bSmrg basic_os=hpux 3581a28b98bSmrg ;; 3591a28b98bSmrg hp300bsd) 3601a28b98bSmrg basic_machine=m68k-hp 3611a28b98bSmrg basic_os=bsd 3621a28b98bSmrg ;; 3631a28b98bSmrg hppaosf) 3641a28b98bSmrg basic_machine=hppa1.1-hp 3651a28b98bSmrg basic_os=osf 3661a28b98bSmrg ;; 3671a28b98bSmrg hppro) 3681a28b98bSmrg basic_machine=hppa1.1-hp 3691a28b98bSmrg basic_os=proelf 3701a28b98bSmrg ;; 3711a28b98bSmrg i386mach) 3721a28b98bSmrg basic_machine=i386-mach 3731a28b98bSmrg basic_os=mach 3741a28b98bSmrg ;; 3751a28b98bSmrg isi68 | isi) 3761a28b98bSmrg basic_machine=m68k-isi 3771a28b98bSmrg basic_os=sysv 3781a28b98bSmrg ;; 3791a28b98bSmrg m68knommu) 3801a28b98bSmrg basic_machine=m68k-unknown 3811a28b98bSmrg basic_os=linux 3821a28b98bSmrg ;; 3831a28b98bSmrg magnum | m3230) 3841a28b98bSmrg basic_machine=mips-mips 3851a28b98bSmrg basic_os=sysv 3861a28b98bSmrg ;; 3871a28b98bSmrg merlin) 3881a28b98bSmrg basic_machine=ns32k-utek 3891a28b98bSmrg basic_os=sysv 3901a28b98bSmrg ;; 3911a28b98bSmrg mingw64) 3921a28b98bSmrg basic_machine=x86_64-pc 3931a28b98bSmrg basic_os=mingw64 3941a28b98bSmrg ;; 3951a28b98bSmrg mingw32) 3961a28b98bSmrg basic_machine=i686-pc 3971a28b98bSmrg basic_os=mingw32 3981a28b98bSmrg ;; 3991a28b98bSmrg mingw32ce) 4001a28b98bSmrg basic_machine=arm-unknown 4011a28b98bSmrg basic_os=mingw32ce 4021a28b98bSmrg ;; 4031a28b98bSmrg monitor) 4041a28b98bSmrg basic_machine=m68k-rom68k 4051a28b98bSmrg basic_os=coff 4061a28b98bSmrg ;; 4071a28b98bSmrg morphos) 4081a28b98bSmrg basic_machine=powerpc-unknown 4091a28b98bSmrg basic_os=morphos 4101a28b98bSmrg ;; 4111a28b98bSmrg moxiebox) 4121a28b98bSmrg basic_machine=moxie-unknown 4131a28b98bSmrg basic_os=moxiebox 4141a28b98bSmrg ;; 4151a28b98bSmrg msdos) 4161a28b98bSmrg basic_machine=i386-pc 4171a28b98bSmrg basic_os=msdos 4181a28b98bSmrg ;; 4191a28b98bSmrg msys) 4201a28b98bSmrg basic_machine=i686-pc 4211a28b98bSmrg basic_os=msys 4221a28b98bSmrg ;; 4231a28b98bSmrg mvs) 4241a28b98bSmrg basic_machine=i370-ibm 4251a28b98bSmrg basic_os=mvs 4261a28b98bSmrg ;; 4271a28b98bSmrg nacl) 4281a28b98bSmrg basic_machine=le32-unknown 4291a28b98bSmrg basic_os=nacl 4301a28b98bSmrg ;; 4311a28b98bSmrg ncr3000) 4321a28b98bSmrg basic_machine=i486-ncr 4331a28b98bSmrg basic_os=sysv4 4341a28b98bSmrg ;; 4351a28b98bSmrg netbsd386) 4361a28b98bSmrg basic_machine=i386-pc 4371a28b98bSmrg basic_os=netbsd 4381a28b98bSmrg ;; 4391a28b98bSmrg netwinder) 4401a28b98bSmrg basic_machine=armv4l-rebel 4411a28b98bSmrg basic_os=linux 4421a28b98bSmrg ;; 4431a28b98bSmrg news | news700 | news800 | news900) 4441a28b98bSmrg basic_machine=m68k-sony 4451a28b98bSmrg basic_os=newsos 4461a28b98bSmrg ;; 4471a28b98bSmrg news1000) 4481a28b98bSmrg basic_machine=m68030-sony 4491a28b98bSmrg basic_os=newsos 4501a28b98bSmrg ;; 4511a28b98bSmrg necv70) 4521a28b98bSmrg basic_machine=v70-nec 4531a28b98bSmrg basic_os=sysv 4541a28b98bSmrg ;; 4551a28b98bSmrg nh3000) 4561a28b98bSmrg basic_machine=m68k-harris 4571a28b98bSmrg basic_os=cxux 4581a28b98bSmrg ;; 4591a28b98bSmrg nh[45]000) 4601a28b98bSmrg basic_machine=m88k-harris 4611a28b98bSmrg basic_os=cxux 4621a28b98bSmrg ;; 4631a28b98bSmrg nindy960) 4641a28b98bSmrg basic_machine=i960-intel 4651a28b98bSmrg basic_os=nindy 4661a28b98bSmrg ;; 4671a28b98bSmrg mon960) 4681a28b98bSmrg basic_machine=i960-intel 4691a28b98bSmrg basic_os=mon960 4701a28b98bSmrg ;; 4711a28b98bSmrg nonstopux) 4721a28b98bSmrg basic_machine=mips-compaq 4731a28b98bSmrg basic_os=nonstopux 4741a28b98bSmrg ;; 4751a28b98bSmrg os400) 4761a28b98bSmrg basic_machine=powerpc-ibm 4771a28b98bSmrg basic_os=os400 4781a28b98bSmrg ;; 4791a28b98bSmrg OSE68000 | ose68000) 4801a28b98bSmrg basic_machine=m68000-ericsson 4811a28b98bSmrg basic_os=ose 4821a28b98bSmrg ;; 4831a28b98bSmrg os68k) 4841a28b98bSmrg basic_machine=m68k-none 4851a28b98bSmrg basic_os=os68k 4861a28b98bSmrg ;; 4871a28b98bSmrg paragon) 4881a28b98bSmrg basic_machine=i860-intel 4891a28b98bSmrg basic_os=osf 4901a28b98bSmrg ;; 4911a28b98bSmrg parisc) 4921a28b98bSmrg basic_machine=hppa-unknown 4931a28b98bSmrg basic_os=linux 4941a28b98bSmrg ;; 4951a28b98bSmrg psp) 4961a28b98bSmrg basic_machine=mipsallegrexel-sony 4971a28b98bSmrg basic_os=psp 4981a28b98bSmrg ;; 4991a28b98bSmrg pw32) 5001a28b98bSmrg basic_machine=i586-unknown 5011a28b98bSmrg basic_os=pw32 5021a28b98bSmrg ;; 5031a28b98bSmrg rdos | rdos64) 5041a28b98bSmrg basic_machine=x86_64-pc 5051a28b98bSmrg basic_os=rdos 5061a28b98bSmrg ;; 5071a28b98bSmrg rdos32) 5081a28b98bSmrg basic_machine=i386-pc 5091a28b98bSmrg basic_os=rdos 5101a28b98bSmrg ;; 5111a28b98bSmrg rom68k) 5121a28b98bSmrg basic_machine=m68k-rom68k 5131a28b98bSmrg basic_os=coff 5141a28b98bSmrg ;; 5151a28b98bSmrg sa29200) 5161a28b98bSmrg basic_machine=a29k-amd 5171a28b98bSmrg basic_os=udi 5181a28b98bSmrg ;; 5191a28b98bSmrg sei) 5201a28b98bSmrg basic_machine=mips-sei 5211a28b98bSmrg basic_os=seiux 5221a28b98bSmrg ;; 5231a28b98bSmrg sequent) 5241a28b98bSmrg basic_machine=i386-sequent 5251a28b98bSmrg basic_os= 5261a28b98bSmrg ;; 5271a28b98bSmrg sps7) 5281a28b98bSmrg basic_machine=m68k-bull 5291a28b98bSmrg basic_os=sysv2 5301a28b98bSmrg ;; 5311a28b98bSmrg st2000) 5321a28b98bSmrg basic_machine=m68k-tandem 5331a28b98bSmrg basic_os= 5341a28b98bSmrg ;; 5351a28b98bSmrg stratus) 5361a28b98bSmrg basic_machine=i860-stratus 5371a28b98bSmrg basic_os=sysv4 5381a28b98bSmrg ;; 5391a28b98bSmrg sun2) 5401a28b98bSmrg basic_machine=m68000-sun 5411a28b98bSmrg basic_os= 5421a28b98bSmrg ;; 5431a28b98bSmrg sun2os3) 5441a28b98bSmrg basic_machine=m68000-sun 5451a28b98bSmrg basic_os=sunos3 5461a28b98bSmrg ;; 5471a28b98bSmrg sun2os4) 5481a28b98bSmrg basic_machine=m68000-sun 5491a28b98bSmrg basic_os=sunos4 5501a28b98bSmrg ;; 5511a28b98bSmrg sun3) 5521a28b98bSmrg basic_machine=m68k-sun 5531a28b98bSmrg basic_os= 5541a28b98bSmrg ;; 5551a28b98bSmrg sun3os3) 5561a28b98bSmrg basic_machine=m68k-sun 5571a28b98bSmrg basic_os=sunos3 5581a28b98bSmrg ;; 5591a28b98bSmrg sun3os4) 5601a28b98bSmrg basic_machine=m68k-sun 5611a28b98bSmrg basic_os=sunos4 5621a28b98bSmrg ;; 5631a28b98bSmrg sun4) 5641a28b98bSmrg basic_machine=sparc-sun 5651a28b98bSmrg basic_os= 5661a28b98bSmrg ;; 5671a28b98bSmrg sun4os3) 5681a28b98bSmrg basic_machine=sparc-sun 5691a28b98bSmrg basic_os=sunos3 5701a28b98bSmrg ;; 5711a28b98bSmrg sun4os4) 5721a28b98bSmrg basic_machine=sparc-sun 5731a28b98bSmrg basic_os=sunos4 5741a28b98bSmrg ;; 5751a28b98bSmrg sun4sol2) 5761a28b98bSmrg basic_machine=sparc-sun 5771a28b98bSmrg basic_os=solaris2 5781a28b98bSmrg ;; 5791a28b98bSmrg sun386 | sun386i | roadrunner) 5801a28b98bSmrg basic_machine=i386-sun 5811a28b98bSmrg basic_os= 5821a28b98bSmrg ;; 5831a28b98bSmrg sv1) 5841a28b98bSmrg basic_machine=sv1-cray 5851a28b98bSmrg basic_os=unicos 5861a28b98bSmrg ;; 5871a28b98bSmrg symmetry) 5881a28b98bSmrg basic_machine=i386-sequent 5891a28b98bSmrg basic_os=dynix 5901a28b98bSmrg ;; 5911a28b98bSmrg t3e) 5921a28b98bSmrg basic_machine=alphaev5-cray 5931a28b98bSmrg basic_os=unicos 5941a28b98bSmrg ;; 5951a28b98bSmrg t90) 5961a28b98bSmrg basic_machine=t90-cray 5971a28b98bSmrg basic_os=unicos 5981a28b98bSmrg ;; 5991a28b98bSmrg toad1) 6001a28b98bSmrg basic_machine=pdp10-xkl 6011a28b98bSmrg basic_os=tops20 6021a28b98bSmrg ;; 6031a28b98bSmrg tpf) 6041a28b98bSmrg basic_machine=s390x-ibm 6051a28b98bSmrg basic_os=tpf 6061a28b98bSmrg ;; 6071a28b98bSmrg udi29k) 6081a28b98bSmrg basic_machine=a29k-amd 6091a28b98bSmrg basic_os=udi 6101a28b98bSmrg ;; 6111a28b98bSmrg ultra3) 6121a28b98bSmrg basic_machine=a29k-nyu 6131a28b98bSmrg basic_os=sym1 6141a28b98bSmrg ;; 6151a28b98bSmrg v810 | necv810) 6161a28b98bSmrg basic_machine=v810-nec 6171a28b98bSmrg basic_os=none 6181a28b98bSmrg ;; 6191a28b98bSmrg vaxv) 6201a28b98bSmrg basic_machine=vax-dec 6211a28b98bSmrg basic_os=sysv 6221a28b98bSmrg ;; 6231a28b98bSmrg vms) 6241a28b98bSmrg basic_machine=vax-dec 6251a28b98bSmrg basic_os=vms 6261a28b98bSmrg ;; 6271a28b98bSmrg vsta) 6281a28b98bSmrg basic_machine=i386-pc 6291a28b98bSmrg basic_os=vsta 6301a28b98bSmrg ;; 6311a28b98bSmrg vxworks960) 6321a28b98bSmrg basic_machine=i960-wrs 6331a28b98bSmrg basic_os=vxworks 6341a28b98bSmrg ;; 6351a28b98bSmrg vxworks68) 6361a28b98bSmrg basic_machine=m68k-wrs 6371a28b98bSmrg basic_os=vxworks 6381a28b98bSmrg ;; 6391a28b98bSmrg vxworks29k) 6401a28b98bSmrg basic_machine=a29k-wrs 6411a28b98bSmrg basic_os=vxworks 6421a28b98bSmrg ;; 6431a28b98bSmrg xbox) 6441a28b98bSmrg basic_machine=i686-pc 6451a28b98bSmrg basic_os=mingw32 6461a28b98bSmrg ;; 6471a28b98bSmrg ymp) 6481a28b98bSmrg basic_machine=ymp-cray 6491a28b98bSmrg basic_os=unicos 6501a28b98bSmrg ;; 6511a28b98bSmrg *) 6521a28b98bSmrg basic_machine=$1 6531a28b98bSmrg basic_os= 6541a28b98bSmrg ;; 6551a28b98bSmrg esac 6560ed7c580Smrg ;; 6570ed7c580Smrgesac 6580ed7c580Smrg 6591a28b98bSmrg# Decode 1-component or ad-hoc basic machines 6600ed7c580Smrgcase $basic_machine in 6611a28b98bSmrg # Here we handle the default manufacturer of certain CPU types. It is in 6621a28b98bSmrg # some cases the only manufacturer, in others, it is the most popular. 6631a28b98bSmrg w89k) 6641a28b98bSmrg cpu=hppa1.1 6651a28b98bSmrg vendor=winbond 6660ed7c580Smrg ;; 6671a28b98bSmrg op50n) 6681a28b98bSmrg cpu=hppa1.1 6691a28b98bSmrg vendor=oki 6700ed7c580Smrg ;; 6711a28b98bSmrg op60c) 6721a28b98bSmrg cpu=hppa1.1 6731a28b98bSmrg vendor=oki 6740ed7c580Smrg ;; 6751a28b98bSmrg ibm*) 6761a28b98bSmrg cpu=i370 6771a28b98bSmrg vendor=ibm 6780ed7c580Smrg ;; 6791a28b98bSmrg orion105) 6801a28b98bSmrg cpu=clipper 6811a28b98bSmrg vendor=highlevel 6820ed7c580Smrg ;; 6831a28b98bSmrg mac | mpw | mac-mpw) 6841a28b98bSmrg cpu=m68k 6851a28b98bSmrg vendor=apple 6860ed7c580Smrg ;; 6871a28b98bSmrg pmac | pmac-mpw) 6881a28b98bSmrg cpu=powerpc 6891a28b98bSmrg vendor=apple 6900ed7c580Smrg ;; 6911a28b98bSmrg 6920ed7c580Smrg # Recognize the various machine names and aliases which stand 6930ed7c580Smrg # for a CPU type and a company and sometimes even an OS. 6940ed7c580Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6951a28b98bSmrg cpu=m68000 6961a28b98bSmrg vendor=att 6970ed7c580Smrg ;; 6980ed7c580Smrg 3b*) 6991a28b98bSmrg cpu=we32k 7001a28b98bSmrg vendor=att 7010ed7c580Smrg ;; 7020ed7c580Smrg bluegene*) 7031a28b98bSmrg cpu=powerpc 7041a28b98bSmrg vendor=ibm 7051a28b98bSmrg basic_os=cnk 7060ed7c580Smrg ;; 7070ed7c580Smrg decsystem10* | dec10*) 7081a28b98bSmrg cpu=pdp10 7091a28b98bSmrg vendor=dec 7101a28b98bSmrg basic_os=tops10 7110ed7c580Smrg ;; 7120ed7c580Smrg decsystem20* | dec20*) 7131a28b98bSmrg cpu=pdp10 7141a28b98bSmrg vendor=dec 7151a28b98bSmrg basic_os=tops20 7160ed7c580Smrg ;; 7170ed7c580Smrg delta | 3300 | motorola-3300 | motorola-delta \ 7180ed7c580Smrg | 3300-motorola | delta-motorola) 7191a28b98bSmrg cpu=m68k 7201a28b98bSmrg vendor=motorola 7210ed7c580Smrg ;; 7221a28b98bSmrg dpx2*) 7231a28b98bSmrg cpu=m68k 7241a28b98bSmrg vendor=bull 7251a28b98bSmrg basic_os=sysv3 7260ed7c580Smrg ;; 7270ed7c580Smrg encore | umax | mmax) 7281a28b98bSmrg cpu=ns32k 7291a28b98bSmrg vendor=encore 7300ed7c580Smrg ;; 7311a28b98bSmrg elxsi) 7321a28b98bSmrg cpu=elxsi 7331a28b98bSmrg vendor=elxsi 7341a28b98bSmrg basic_os=${basic_os:-bsd} 7350ed7c580Smrg ;; 7360ed7c580Smrg fx2800) 7371a28b98bSmrg cpu=i860 7381a28b98bSmrg vendor=alliant 7390ed7c580Smrg ;; 7400ed7c580Smrg genix) 7411a28b98bSmrg cpu=ns32k 7421a28b98bSmrg vendor=ns 7430ed7c580Smrg ;; 7440ed7c580Smrg h3050r* | hiux*) 7451a28b98bSmrg cpu=hppa1.1 7461a28b98bSmrg vendor=hitachi 7471a28b98bSmrg basic_os=hiuxwe2 7480ed7c580Smrg ;; 7490ed7c580Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7501a28b98bSmrg cpu=hppa1.0 7511a28b98bSmrg vendor=hp 7520ed7c580Smrg ;; 7530ed7c580Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7541a28b98bSmrg cpu=m68000 7551a28b98bSmrg vendor=hp 7560ed7c580Smrg ;; 7570ed7c580Smrg hp9k3[2-9][0-9]) 7581a28b98bSmrg cpu=m68k 7591a28b98bSmrg vendor=hp 7600ed7c580Smrg ;; 7610ed7c580Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7621a28b98bSmrg cpu=hppa1.0 7631a28b98bSmrg vendor=hp 7640ed7c580Smrg ;; 7650ed7c580Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7661a28b98bSmrg cpu=hppa1.1 7671a28b98bSmrg vendor=hp 7680ed7c580Smrg ;; 7690ed7c580Smrg hp9k78[0-9] | hp78[0-9]) 7700ed7c580Smrg # FIXME: really hppa2.0-hp 7711a28b98bSmrg cpu=hppa1.1 7721a28b98bSmrg vendor=hp 7730ed7c580Smrg ;; 7740ed7c580Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7750ed7c580Smrg # FIXME: really hppa2.0-hp 7761a28b98bSmrg cpu=hppa1.1 7771a28b98bSmrg vendor=hp 7780ed7c580Smrg ;; 7790ed7c580Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7801a28b98bSmrg cpu=hppa1.1 7811a28b98bSmrg vendor=hp 7820ed7c580Smrg ;; 7830ed7c580Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7841a28b98bSmrg cpu=hppa1.0 7851a28b98bSmrg vendor=hp 7860ed7c580Smrg ;; 7870ed7c580Smrg i*86v32) 7881a28b98bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7891a28b98bSmrg vendor=pc 7901a28b98bSmrg basic_os=sysv32 7910ed7c580Smrg ;; 7920ed7c580Smrg i*86v4*) 7931a28b98bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7941a28b98bSmrg vendor=pc 7951a28b98bSmrg basic_os=sysv4 7960ed7c580Smrg ;; 7970ed7c580Smrg i*86v) 7981a28b98bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7991a28b98bSmrg vendor=pc 8001a28b98bSmrg basic_os=sysv 8010ed7c580Smrg ;; 8020ed7c580Smrg i*86sol2) 8031a28b98bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8041a28b98bSmrg vendor=pc 8051a28b98bSmrg basic_os=solaris2 8060ed7c580Smrg ;; 8071a28b98bSmrg j90 | j90-cray) 8081a28b98bSmrg cpu=j90 8091a28b98bSmrg vendor=cray 8101a28b98bSmrg basic_os=${basic_os:-unicos} 8110ed7c580Smrg ;; 8120ed7c580Smrg iris | iris4d) 8131a28b98bSmrg cpu=mips 8141a28b98bSmrg vendor=sgi 8151a28b98bSmrg case $basic_os in 8161a28b98bSmrg irix*) 8170ed7c580Smrg ;; 8180ed7c580Smrg *) 8191a28b98bSmrg basic_os=irix4 8200ed7c580Smrg ;; 8210ed7c580Smrg esac 8220ed7c580Smrg ;; 8230ed7c580Smrg miniframe) 8241a28b98bSmrg cpu=m68000 8251a28b98bSmrg vendor=convergent 8260ed7c580Smrg ;; 8271a28b98bSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8281a28b98bSmrg cpu=m68k 8291a28b98bSmrg vendor=atari 8301a28b98bSmrg basic_os=mint 8310ed7c580Smrg ;; 8320ed7c580Smrg news-3600 | risc-news) 8331a28b98bSmrg cpu=mips 8341a28b98bSmrg vendor=sony 8351a28b98bSmrg basic_os=newsos 8361a28b98bSmrg ;; 8371a28b98bSmrg next | m*-next) 8381a28b98bSmrg cpu=m68k 8391a28b98bSmrg vendor=next 8401a28b98bSmrg case $basic_os in 8411a28b98bSmrg openstep*) 8421a28b98bSmrg ;; 8431a28b98bSmrg nextstep*) 8440ed7c580Smrg ;; 8451a28b98bSmrg ns2*) 8461a28b98bSmrg basic_os=nextstep2 8470ed7c580Smrg ;; 8480ed7c580Smrg *) 8491a28b98bSmrg basic_os=nextstep3 8500ed7c580Smrg ;; 8510ed7c580Smrg esac 8520ed7c580Smrg ;; 8530ed7c580Smrg np1) 8541a28b98bSmrg cpu=np1 8551a28b98bSmrg vendor=gould 8560ed7c580Smrg ;; 8570ed7c580Smrg op50n-* | op60c-*) 8581a28b98bSmrg cpu=hppa1.1 8591a28b98bSmrg vendor=oki 8601a28b98bSmrg basic_os=proelf 8610ed7c580Smrg ;; 8620ed7c580Smrg pa-hitachi) 8631a28b98bSmrg cpu=hppa1.1 8641a28b98bSmrg vendor=hitachi 8651a28b98bSmrg basic_os=hiuxwe2 8660ed7c580Smrg ;; 8670ed7c580Smrg pbd) 8681a28b98bSmrg cpu=sparc 8691a28b98bSmrg vendor=tti 8700ed7c580Smrg ;; 8710ed7c580Smrg pbb) 8721a28b98bSmrg cpu=m68k 8731a28b98bSmrg vendor=tti 8740ed7c580Smrg ;; 8751a28b98bSmrg pc532) 8761a28b98bSmrg cpu=ns32k 8771a28b98bSmrg vendor=pc532 8780ed7c580Smrg ;; 8790ed7c580Smrg pn) 8801a28b98bSmrg cpu=pn 8811a28b98bSmrg vendor=gould 8820ed7c580Smrg ;; 8831a28b98bSmrg power) 8841a28b98bSmrg cpu=power 8851a28b98bSmrg vendor=ibm 8860ed7c580Smrg ;; 8870ed7c580Smrg ps2) 8881a28b98bSmrg cpu=i386 8891a28b98bSmrg vendor=ibm 8900ed7c580Smrg ;; 8910ed7c580Smrg rm[46]00) 8921a28b98bSmrg cpu=mips 8931a28b98bSmrg vendor=siemens 8940ed7c580Smrg ;; 8950ed7c580Smrg rtpc | rtpc-*) 8961a28b98bSmrg cpu=romp 8971a28b98bSmrg vendor=ibm 8980ed7c580Smrg ;; 8991a28b98bSmrg sde) 9001a28b98bSmrg cpu=mipsisa32 9011a28b98bSmrg vendor=sde 9021a28b98bSmrg basic_os=${basic_os:-elf} 9030ed7c580Smrg ;; 9041a28b98bSmrg simso-wrs) 9051a28b98bSmrg cpu=sparclite 9061a28b98bSmrg vendor=wrs 9071a28b98bSmrg basic_os=vxworks 9080ed7c580Smrg ;; 9091a28b98bSmrg tower | tower-32) 9101a28b98bSmrg cpu=m68k 9111a28b98bSmrg vendor=ncr 9120ed7c580Smrg ;; 9131a28b98bSmrg vpp*|vx|vx-*) 9141a28b98bSmrg cpu=f301 9151a28b98bSmrg vendor=fujitsu 9160ed7c580Smrg ;; 9171a28b98bSmrg w65) 9181a28b98bSmrg cpu=w65 9191a28b98bSmrg vendor=wdc 9200ed7c580Smrg ;; 9211a28b98bSmrg w89k-*) 9221a28b98bSmrg cpu=hppa1.1 9231a28b98bSmrg vendor=winbond 9241a28b98bSmrg basic_os=proelf 9250ed7c580Smrg ;; 9261a28b98bSmrg none) 9271a28b98bSmrg cpu=none 9281a28b98bSmrg vendor=none 9290ed7c580Smrg ;; 9301a28b98bSmrg leon|leon[3-9]) 9311a28b98bSmrg cpu=sparc 9321a28b98bSmrg vendor=$basic_machine 9330ed7c580Smrg ;; 9341a28b98bSmrg leon-*|leon[3-9]-*) 9351a28b98bSmrg cpu=sparc 9361a28b98bSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9370ed7c580Smrg ;; 9381a28b98bSmrg 9391a28b98bSmrg *-*) 9401a28b98bSmrg # shellcheck disable=SC2162 9411a28b98bSmrg saved_IFS=$IFS 9421a28b98bSmrg IFS="-" read cpu vendor <<EOF 9431a28b98bSmrg$basic_machine 9441a28b98bSmrgEOF 9451a28b98bSmrg IFS=$saved_IFS 9460ed7c580Smrg ;; 947a0cd246fSmrg # We use 'pc' rather than 'unknown' 9481a28b98bSmrg # because (1) that's what they normally are, and 9491a28b98bSmrg # (2) the word "unknown" tends to confuse beginning users. 9501a28b98bSmrg i*86 | x86_64) 9511a28b98bSmrg cpu=$basic_machine 9521a28b98bSmrg vendor=pc 9530ed7c580Smrg ;; 9541a28b98bSmrg # These rules are duplicated from below for sake of the special case above; 9551a28b98bSmrg # i.e. things that normalized to x86 arches should also default to "pc" 9561a28b98bSmrg pc98) 9571a28b98bSmrg cpu=i386 9581a28b98bSmrg vendor=pc 9590ed7c580Smrg ;; 9601a28b98bSmrg x64 | amd64) 9611a28b98bSmrg cpu=x86_64 9621a28b98bSmrg vendor=pc 9630ed7c580Smrg ;; 9641a28b98bSmrg # Recognize the basic CPU types without company name. 9651a28b98bSmrg *) 9661a28b98bSmrg cpu=$basic_machine 9671a28b98bSmrg vendor=unknown 9680ed7c580Smrg ;; 9691a28b98bSmrgesac 9701a28b98bSmrg 9711a28b98bSmrgunset -v basic_machine 9721a28b98bSmrg 9731a28b98bSmrg# Decode basic machines in the full and proper CPU-Company form. 9741a28b98bSmrgcase $cpu-$vendor in 9751a28b98bSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9761a28b98bSmrg # some cases the only manufacturer, in others, it is the most popular. 9771a28b98bSmrg craynv-unknown) 9781a28b98bSmrg vendor=cray 9791a28b98bSmrg basic_os=${basic_os:-unicosmp} 9800ed7c580Smrg ;; 9811a28b98bSmrg c90-unknown | c90-cray) 9821a28b98bSmrg vendor=cray 9831a28b98bSmrg basic_os=${Basic_os:-unicos} 9840ed7c580Smrg ;; 9851a28b98bSmrg fx80-unknown) 9861a28b98bSmrg vendor=alliant 9870ed7c580Smrg ;; 9881a28b98bSmrg romp-unknown) 9891a28b98bSmrg vendor=ibm 9900ed7c580Smrg ;; 9911a28b98bSmrg mmix-unknown) 9921a28b98bSmrg vendor=knuth 9930ed7c580Smrg ;; 9941a28b98bSmrg microblaze-unknown | microblazeel-unknown) 9951a28b98bSmrg vendor=xilinx 9960ed7c580Smrg ;; 9971a28b98bSmrg rs6000-unknown) 9981a28b98bSmrg vendor=ibm 9990ed7c580Smrg ;; 10001a28b98bSmrg vax-unknown) 10011a28b98bSmrg vendor=dec 10020ed7c580Smrg ;; 10031a28b98bSmrg pdp11-unknown) 10041a28b98bSmrg vendor=dec 10050ed7c580Smrg ;; 10061a28b98bSmrg we32k-unknown) 10071a28b98bSmrg vendor=att 10080ed7c580Smrg ;; 10091a28b98bSmrg cydra-unknown) 10101a28b98bSmrg vendor=cydrome 10110ed7c580Smrg ;; 10121a28b98bSmrg i370-ibm*) 10131a28b98bSmrg vendor=ibm 10140ed7c580Smrg ;; 10151a28b98bSmrg orion-unknown) 10161a28b98bSmrg vendor=highlevel 10170ed7c580Smrg ;; 10181a28b98bSmrg xps-unknown | xps100-unknown) 10191a28b98bSmrg cpu=xps100 10201a28b98bSmrg vendor=honeywell 10210ed7c580Smrg ;; 10221a28b98bSmrg 10231a28b98bSmrg # Here we normalize CPU types with a missing or matching vendor 1024a0cd246fSmrg armh-unknown | armh-alt) 1025a0cd246fSmrg cpu=armv7l 1026a0cd246fSmrg vendor=alt 1027a0cd246fSmrg basic_os=${basic_os:-linux-gnueabihf} 1028a0cd246fSmrg ;; 10291a28b98bSmrg dpx20-unknown | dpx20-bull) 10301a28b98bSmrg cpu=rs6000 10311a28b98bSmrg vendor=bull 10321a28b98bSmrg basic_os=${basic_os:-bosx} 10330ed7c580Smrg ;; 10341a28b98bSmrg 10351a28b98bSmrg # Here we normalize CPU types irrespective of the vendor 10361a28b98bSmrg amd64-*) 10371a28b98bSmrg cpu=x86_64 10380ed7c580Smrg ;; 10391a28b98bSmrg blackfin-*) 10401a28b98bSmrg cpu=bfin 10411a28b98bSmrg basic_os=linux 10420ed7c580Smrg ;; 10431a28b98bSmrg c54x-*) 10441a28b98bSmrg cpu=tic54x 10450ed7c580Smrg ;; 10461a28b98bSmrg c55x-*) 10471a28b98bSmrg cpu=tic55x 10480ed7c580Smrg ;; 10491a28b98bSmrg c6x-*) 10501a28b98bSmrg cpu=tic6x 10510ed7c580Smrg ;; 10521a28b98bSmrg e500v[12]-*) 10531a28b98bSmrg cpu=powerpc 10541a28b98bSmrg basic_os=${basic_os}"spe" 10550ed7c580Smrg ;; 10561a28b98bSmrg mips3*-*) 10571a28b98bSmrg cpu=mips64 10580ed7c580Smrg ;; 10591a28b98bSmrg ms1-*) 10601a28b98bSmrg cpu=mt 10610ed7c580Smrg ;; 10621a28b98bSmrg m68knommu-*) 10631a28b98bSmrg cpu=m68k 10641a28b98bSmrg basic_os=linux 10650ed7c580Smrg ;; 10661a28b98bSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10671a28b98bSmrg cpu=s12z 10680ed7c580Smrg ;; 10691a28b98bSmrg openrisc-*) 10701a28b98bSmrg cpu=or32 10710ed7c580Smrg ;; 10721a28b98bSmrg parisc-*) 10731a28b98bSmrg cpu=hppa 10741a28b98bSmrg basic_os=linux 10750ed7c580Smrg ;; 10761a28b98bSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10771a28b98bSmrg cpu=i586 10780ed7c580Smrg ;; 1079a0cd246fSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 10801a28b98bSmrg cpu=i686 10810ed7c580Smrg ;; 10821a28b98bSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10831a28b98bSmrg cpu=i686 10840ed7c580Smrg ;; 10851a28b98bSmrg pentium4-*) 10861a28b98bSmrg cpu=i786 10870ed7c580Smrg ;; 10881a28b98bSmrg pc98-*) 10891a28b98bSmrg cpu=i386 10900ed7c580Smrg ;; 10911a28b98bSmrg ppc-* | ppcbe-*) 10921a28b98bSmrg cpu=powerpc 10930ed7c580Smrg ;; 10941a28b98bSmrg ppcle-* | powerpclittle-*) 10951a28b98bSmrg cpu=powerpcle 10960ed7c580Smrg ;; 10971a28b98bSmrg ppc64-*) 10981a28b98bSmrg cpu=powerpc64 10990ed7c580Smrg ;; 11001a28b98bSmrg ppc64le-* | powerpc64little-*) 11011a28b98bSmrg cpu=powerpc64le 11020ed7c580Smrg ;; 11031a28b98bSmrg sb1-*) 11041a28b98bSmrg cpu=mipsisa64sb1 11050ed7c580Smrg ;; 11061a28b98bSmrg sb1el-*) 11071a28b98bSmrg cpu=mipsisa64sb1el 11080ed7c580Smrg ;; 11091a28b98bSmrg sh5e[lb]-*) 11101a28b98bSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11110ed7c580Smrg ;; 11121a28b98bSmrg spur-*) 11131a28b98bSmrg cpu=spur 11140ed7c580Smrg ;; 11151a28b98bSmrg strongarm-* | thumb-*) 11161a28b98bSmrg cpu=arm 11170ed7c580Smrg ;; 11181a28b98bSmrg tx39-*) 11191a28b98bSmrg cpu=mipstx39 11200ed7c580Smrg ;; 11211a28b98bSmrg tx39el-*) 11221a28b98bSmrg cpu=mipstx39el 11230ed7c580Smrg ;; 11241a28b98bSmrg x64-*) 11251a28b98bSmrg cpu=x86_64 11260ed7c580Smrg ;; 11271a28b98bSmrg xscale-* | xscalee[bl]-*) 11281a28b98bSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11290ed7c580Smrg ;; 1130a0cd246fSmrg arm64-* | aarch64le-*) 11311a28b98bSmrg cpu=aarch64 11320ed7c580Smrg ;; 11331a28b98bSmrg 11341a28b98bSmrg # Recognize the canonical CPU Types that limit and/or modify the 11351a28b98bSmrg # company names they are paired with. 11361a28b98bSmrg cr16-*) 11371a28b98bSmrg basic_os=${basic_os:-elf} 11380ed7c580Smrg ;; 11391a28b98bSmrg crisv32-* | etraxfs*-*) 11401a28b98bSmrg cpu=crisv32 11411a28b98bSmrg vendor=axis 11420ed7c580Smrg ;; 11431a28b98bSmrg cris-* | etrax*-*) 11441a28b98bSmrg cpu=cris 11451a28b98bSmrg vendor=axis 11460ed7c580Smrg ;; 11471a28b98bSmrg crx-*) 11481a28b98bSmrg basic_os=${basic_os:-elf} 11490ed7c580Smrg ;; 11501a28b98bSmrg neo-tandem) 11511a28b98bSmrg cpu=neo 11521a28b98bSmrg vendor=tandem 11530ed7c580Smrg ;; 11541a28b98bSmrg nse-tandem) 11551a28b98bSmrg cpu=nse 11561a28b98bSmrg vendor=tandem 11570ed7c580Smrg ;; 11581a28b98bSmrg nsr-tandem) 11591a28b98bSmrg cpu=nsr 11601a28b98bSmrg vendor=tandem 11610ed7c580Smrg ;; 11621a28b98bSmrg nsv-tandem) 11631a28b98bSmrg cpu=nsv 11641a28b98bSmrg vendor=tandem 11650ed7c580Smrg ;; 11661a28b98bSmrg nsx-tandem) 11671a28b98bSmrg cpu=nsx 11681a28b98bSmrg vendor=tandem 11690ed7c580Smrg ;; 11701a28b98bSmrg mipsallegrexel-sony) 11711a28b98bSmrg cpu=mipsallegrexel 11721a28b98bSmrg vendor=sony 11730ed7c580Smrg ;; 11741a28b98bSmrg tile*-*) 11751a28b98bSmrg basic_os=${basic_os:-linux-gnu} 11760ed7c580Smrg ;; 11771a28b98bSmrg 11780ed7c580Smrg *) 11791a28b98bSmrg # Recognize the canonical CPU types that are allowed with any 11801a28b98bSmrg # company name. 11811a28b98bSmrg case $cpu in 11821a28b98bSmrg 1750a | 580 \ 11831a28b98bSmrg | a29k \ 1184a0cd246fSmrg | aarch64 | aarch64_be | aarch64c | arm64ec \ 11851a28b98bSmrg | abacus \ 11861a28b98bSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11871a28b98bSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11881a28b98bSmrg | alphapca5[67] | alpha64pca5[67] \ 11891a28b98bSmrg | am33_2.0 \ 11901a28b98bSmrg | amdgcn \ 11911a28b98bSmrg | arc | arceb | arc32 | arc64 \ 11921a28b98bSmrg | arm | arm[lb]e | arme[lb] | armv* \ 11931a28b98bSmrg | avr | avr32 \ 11941a28b98bSmrg | asmjs \ 11951a28b98bSmrg | ba \ 11961a28b98bSmrg | be32 | be64 \ 11971a28b98bSmrg | bfin | bpf | bs2000 \ 11981a28b98bSmrg | c[123]* | c30 | [cjt]90 | c4x \ 11991a28b98bSmrg | c8051 | clipper | craynv | csky | cydra \ 12001a28b98bSmrg | d10v | d30v | dlx | dsp16xx \ 12011a28b98bSmrg | e2k | elxsi | epiphany \ 12021a28b98bSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1203a0cd246fSmrg | javascript \ 12041a28b98bSmrg | h8300 | h8500 \ 12051a28b98bSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 12061a28b98bSmrg | hexagon \ 12071a28b98bSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12081a28b98bSmrg | ip2k | iq2000 \ 12091a28b98bSmrg | k1om \ 1210a0cd246fSmrg | kvx \ 12111a28b98bSmrg | le32 | le64 \ 12121a28b98bSmrg | lm32 \ 1213a0cd246fSmrg | loongarch32 | loongarch64 \ 12141a28b98bSmrg | m32c | m32r | m32rle \ 12151a28b98bSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12161a28b98bSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12171a28b98bSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12181a28b98bSmrg | microblaze | microblazeel \ 1219a0cd246fSmrg | mips* \ 12201a28b98bSmrg | mmix \ 12211a28b98bSmrg | mn10200 | mn10300 \ 12221a28b98bSmrg | moxie \ 12231a28b98bSmrg | mt \ 12241a28b98bSmrg | msp430 \ 1225a0cd246fSmrg | nanomips* \ 12261a28b98bSmrg | nds32 | nds32le | nds32be \ 12271a28b98bSmrg | nfp \ 12281a28b98bSmrg | nios | nios2 | nios2eb | nios2el \ 12291a28b98bSmrg | none | np1 | ns16k | ns32k | nvptx \ 12301a28b98bSmrg | open8 \ 12311a28b98bSmrg | or1k* \ 12321a28b98bSmrg | or32 \ 12331a28b98bSmrg | orion \ 12341a28b98bSmrg | picochip \ 12351a28b98bSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12361a28b98bSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12371a28b98bSmrg | pru \ 12381a28b98bSmrg | pyramid \ 12391a28b98bSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12401a28b98bSmrg | rl78 | romp | rs6000 | rx \ 12411a28b98bSmrg | s390 | s390x \ 12421a28b98bSmrg | score \ 12431a28b98bSmrg | sh | shl \ 12441a28b98bSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12451a28b98bSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12461a28b98bSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12471a28b98bSmrg | sparclite \ 12481a28b98bSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12491a28b98bSmrg | spu \ 12501a28b98bSmrg | tahoe \ 12511a28b98bSmrg | thumbv7* \ 12521a28b98bSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12531a28b98bSmrg | tron \ 12541a28b98bSmrg | ubicom32 \ 12551a28b98bSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12561a28b98bSmrg | vax \ 1257a0cd246fSmrg | vc4 \ 12581a28b98bSmrg | visium \ 12591a28b98bSmrg | w65 \ 12601a28b98bSmrg | wasm32 | wasm64 \ 12611a28b98bSmrg | we32k \ 12621a28b98bSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12631a28b98bSmrg | xstormy16 | xtensa* \ 12641a28b98bSmrg | ymp \ 12651a28b98bSmrg | z8k | z80) 12661a28b98bSmrg ;; 12671a28b98bSmrg 12681a28b98bSmrg *) 1269a0cd246fSmrg echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 12701a28b98bSmrg exit 1 12711a28b98bSmrg ;; 12721a28b98bSmrg esac 12730ed7c580Smrg ;; 12740ed7c580Smrgesac 12750ed7c580Smrg 12760ed7c580Smrg# Here we canonicalize certain aliases for manufacturers. 12771a28b98bSmrgcase $vendor in 12781a28b98bSmrg digital*) 12791a28b98bSmrg vendor=dec 12800ed7c580Smrg ;; 12811a28b98bSmrg commodore*) 12821a28b98bSmrg vendor=cbm 12830ed7c580Smrg ;; 12840ed7c580Smrg *) 12850ed7c580Smrg ;; 12860ed7c580Smrgesac 12870ed7c580Smrg 12880ed7c580Smrg# Decode manufacturer-specific aliases for certain operating systems. 12890ed7c580Smrg 1290a0cd246fSmrgif test x"$basic_os" != x 12910ed7c580Smrgthen 12921a28b98bSmrg 1293a0cd246fSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 12941a28b98bSmrg# set os. 1295a0cd246fSmrgobj= 12961a28b98bSmrgcase $basic_os in 12971a28b98bSmrg gnu/linux*) 12981a28b98bSmrg kernel=linux 12991a28b98bSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13001a28b98bSmrg ;; 13011a28b98bSmrg os2-emx) 13021a28b98bSmrg kernel=os2 13031a28b98bSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13041a28b98bSmrg ;; 13051a28b98bSmrg nto-qnx*) 13061a28b98bSmrg kernel=nto 13071a28b98bSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13081a28b98bSmrg ;; 13091a28b98bSmrg *-*) 13101a28b98bSmrg # shellcheck disable=SC2162 13111a28b98bSmrg saved_IFS=$IFS 13121a28b98bSmrg IFS="-" read kernel os <<EOF 13131a28b98bSmrg$basic_os 13141a28b98bSmrgEOF 13151a28b98bSmrg IFS=$saved_IFS 13161a28b98bSmrg ;; 13171a28b98bSmrg # Default OS when just kernel was specified 13181a28b98bSmrg nto*) 13191a28b98bSmrg kernel=nto 13201a28b98bSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13211a28b98bSmrg ;; 13221a28b98bSmrg linux*) 13231a28b98bSmrg kernel=linux 13241a28b98bSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13251a28b98bSmrg ;; 1326a0cd246fSmrg managarm*) 1327a0cd246fSmrg kernel=managarm 1328a0cd246fSmrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1329a0cd246fSmrg ;; 13301a28b98bSmrg *) 13311a28b98bSmrg kernel= 13321a28b98bSmrg os=$basic_os 13331a28b98bSmrg ;; 13341a28b98bSmrgesac 13351a28b98bSmrg 13361a28b98bSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13371a28b98bSmrg# etc.) 13380ed7c580Smrgcase $os in 13391a28b98bSmrg # First match some system type aliases that might get confused 13401a28b98bSmrg # with valid system types. 13411a28b98bSmrg # solaris* is a basic system type, with this one exception. 13421a28b98bSmrg auroraux) 13431a28b98bSmrg os=auroraux 13440ed7c580Smrg ;; 13451a28b98bSmrg bluegene*) 13461a28b98bSmrg os=cnk 13470ed7c580Smrg ;; 13481a28b98bSmrg solaris1 | solaris1.*) 13491a28b98bSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13500ed7c580Smrg ;; 13511a28b98bSmrg solaris) 13521a28b98bSmrg os=solaris2 13530ed7c580Smrg ;; 13541a28b98bSmrg unixware*) 13551a28b98bSmrg os=sysv4.2uw 13560ed7c580Smrg ;; 13571a28b98bSmrg # es1800 is here to avoid being matched by es* (a different OS) 13581a28b98bSmrg es1800*) 13591a28b98bSmrg os=ose 13600ed7c580Smrg ;; 13611a28b98bSmrg # Some version numbers need modification 13621a28b98bSmrg chorusos*) 13631a28b98bSmrg os=chorusos 13640ed7c580Smrg ;; 13651a28b98bSmrg isc) 13661a28b98bSmrg os=isc2.2 13670ed7c580Smrg ;; 13681a28b98bSmrg sco6) 13691a28b98bSmrg os=sco5v6 13700ed7c580Smrg ;; 13711a28b98bSmrg sco5) 13721a28b98bSmrg os=sco3.2v5 13730ed7c580Smrg ;; 13741a28b98bSmrg sco4) 13751a28b98bSmrg os=sco3.2v4 13760ed7c580Smrg ;; 13771a28b98bSmrg sco3.2.[4-9]*) 13781a28b98bSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13790ed7c580Smrg ;; 13801a28b98bSmrg sco*v* | scout) 13811a28b98bSmrg # Don't match below 13820ed7c580Smrg ;; 13831a28b98bSmrg sco*) 13841a28b98bSmrg os=sco3.2v2 13850ed7c580Smrg ;; 13861a28b98bSmrg psos*) 13871a28b98bSmrg os=psos 13880ed7c580Smrg ;; 13891a28b98bSmrg qnx*) 13901a28b98bSmrg os=qnx 13910ed7c580Smrg ;; 13921a28b98bSmrg hiux*) 13931a28b98bSmrg os=hiuxwe2 13940ed7c580Smrg ;; 13951a28b98bSmrg lynx*178) 13961a28b98bSmrg os=lynxos178 13970ed7c580Smrg ;; 13981a28b98bSmrg lynx*5) 13991a28b98bSmrg os=lynxos5 14000ed7c580Smrg ;; 14011a28b98bSmrg lynxos*) 14021a28b98bSmrg # don't get caught up in next wildcard 14030ed7c580Smrg ;; 14041a28b98bSmrg lynx*) 14051a28b98bSmrg os=lynxos 14060ed7c580Smrg ;; 14071a28b98bSmrg mac[0-9]*) 14081a28b98bSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 14090ed7c580Smrg ;; 14101a28b98bSmrg opened*) 14111a28b98bSmrg os=openedition 14120ed7c580Smrg ;; 14131a28b98bSmrg os400*) 14141a28b98bSmrg os=os400 14150ed7c580Smrg ;; 14161a28b98bSmrg sunos5*) 14171a28b98bSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14180ed7c580Smrg ;; 14191a28b98bSmrg sunos6*) 14201a28b98bSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14210ed7c580Smrg ;; 14221a28b98bSmrg wince*) 14231a28b98bSmrg os=wince 14240ed7c580Smrg ;; 14251a28b98bSmrg utek*) 14261a28b98bSmrg os=bsd 14270ed7c580Smrg ;; 14281a28b98bSmrg dynix*) 14291a28b98bSmrg os=bsd 14300ed7c580Smrg ;; 14311a28b98bSmrg acis*) 14321a28b98bSmrg os=aos 14330ed7c580Smrg ;; 14341a28b98bSmrg atheos*) 14351a28b98bSmrg os=atheos 14360ed7c580Smrg ;; 14371a28b98bSmrg syllable*) 14381a28b98bSmrg os=syllable 14390ed7c580Smrg ;; 14401a28b98bSmrg 386bsd) 14411a28b98bSmrg os=bsd 14420ed7c580Smrg ;; 14431a28b98bSmrg ctix* | uts*) 14441a28b98bSmrg os=sysv 14450ed7c580Smrg ;; 14461a28b98bSmrg nova*) 14471a28b98bSmrg os=rtmk-nova 14480ed7c580Smrg ;; 14491a28b98bSmrg ns2) 14501a28b98bSmrg os=nextstep2 14510ed7c580Smrg ;; 14521a28b98bSmrg # Preserve the version number of sinix5. 14531a28b98bSmrg sinix5.*) 14541a28b98bSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14550ed7c580Smrg ;; 14561a28b98bSmrg sinix*) 14571a28b98bSmrg os=sysv4 14580ed7c580Smrg ;; 14591a28b98bSmrg tpf*) 14601a28b98bSmrg os=tpf 14610ed7c580Smrg ;; 14621a28b98bSmrg triton*) 14631a28b98bSmrg os=sysv3 14640ed7c580Smrg ;; 14651a28b98bSmrg oss*) 14661a28b98bSmrg os=sysv3 14670ed7c580Smrg ;; 14681a28b98bSmrg svr4*) 14691a28b98bSmrg os=sysv4 14700ed7c580Smrg ;; 14711a28b98bSmrg svr3) 14721a28b98bSmrg os=sysv3 14730ed7c580Smrg ;; 14741a28b98bSmrg sysvr4) 14751a28b98bSmrg os=sysv4 14760ed7c580Smrg ;; 14771a28b98bSmrg ose*) 14781a28b98bSmrg os=ose 14790ed7c580Smrg ;; 14801a28b98bSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14811a28b98bSmrg os=mint 14820ed7c580Smrg ;; 14831a28b98bSmrg dicos*) 14841a28b98bSmrg os=dicos 14850ed7c580Smrg ;; 14861a28b98bSmrg pikeos*) 14871a28b98bSmrg # Until real need of OS specific support for 14881a28b98bSmrg # particular features comes up, bare metal 14891a28b98bSmrg # configurations are quite functional. 14901a28b98bSmrg case $cpu in 14911a28b98bSmrg arm*) 14921a28b98bSmrg os=eabi 14931a28b98bSmrg ;; 14941a28b98bSmrg *) 1495a0cd246fSmrg os= 1496a0cd246fSmrg obj=elf 14971a28b98bSmrg ;; 14981a28b98bSmrg esac 14990ed7c580Smrg ;; 1500a0cd246fSmrg aout* | coff* | elf* | pe*) 1501a0cd246fSmrg # These are machine code file formats, not OSes 1502a0cd246fSmrg obj=$os 1503a0cd246fSmrg os= 1504a0cd246fSmrg ;; 15050ed7c580Smrg *) 15061a28b98bSmrg # No normalization, but not necessarily accepted, that comes below. 15070ed7c580Smrg ;; 15080ed7c580Smrgesac 15091a28b98bSmrg 15100ed7c580Smrgelse 15110ed7c580Smrg 15120ed7c580Smrg# Here we handle the default operating systems that come with various machines. 15130ed7c580Smrg# The value should be what the vendor currently ships out the door with their 15140ed7c580Smrg# machine or put another way, the most popular os provided with the machine. 15150ed7c580Smrg 15160ed7c580Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15170ed7c580Smrg# "-sun"), then you have to tell the case statement up towards the top 15180ed7c580Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15190ed7c580Smrg# will signal an error saying that MANUFACTURER isn't an operating 15200ed7c580Smrg# system, and we'll never get to this point. 15210ed7c580Smrg 15221a28b98bSmrgkernel= 1523a0cd246fSmrgobj= 15241a28b98bSmrgcase $cpu-$vendor in 15250ed7c580Smrg score-*) 1526a0cd246fSmrg os= 1527a0cd246fSmrg obj=elf 15280ed7c580Smrg ;; 15290ed7c580Smrg spu-*) 1530a0cd246fSmrg os= 1531a0cd246fSmrg obj=elf 15320ed7c580Smrg ;; 15330ed7c580Smrg *-acorn) 15341a28b98bSmrg os=riscix1.2 15350ed7c580Smrg ;; 15360ed7c580Smrg arm*-rebel) 15371a28b98bSmrg kernel=linux 15381a28b98bSmrg os=gnu 15390ed7c580Smrg ;; 15400ed7c580Smrg arm*-semi) 1541a0cd246fSmrg os= 1542a0cd246fSmrg obj=aout 15430ed7c580Smrg ;; 15440ed7c580Smrg c4x-* | tic4x-*) 1545a0cd246fSmrg os= 1546a0cd246fSmrg obj=coff 15470ed7c580Smrg ;; 15480ed7c580Smrg c8051-*) 1549a0cd246fSmrg os= 1550a0cd246fSmrg obj=elf 15511a28b98bSmrg ;; 15521a28b98bSmrg clipper-intergraph) 15531a28b98bSmrg os=clix 15540ed7c580Smrg ;; 15550ed7c580Smrg hexagon-*) 1556a0cd246fSmrg os= 1557a0cd246fSmrg obj=elf 15580ed7c580Smrg ;; 15590ed7c580Smrg tic54x-*) 1560a0cd246fSmrg os= 1561a0cd246fSmrg obj=coff 15620ed7c580Smrg ;; 15630ed7c580Smrg tic55x-*) 1564a0cd246fSmrg os= 1565a0cd246fSmrg obj=coff 15660ed7c580Smrg ;; 15670ed7c580Smrg tic6x-*) 1568a0cd246fSmrg os= 1569a0cd246fSmrg obj=coff 15700ed7c580Smrg ;; 15710ed7c580Smrg # This must come before the *-dec entry. 15720ed7c580Smrg pdp10-*) 15731a28b98bSmrg os=tops20 15740ed7c580Smrg ;; 15750ed7c580Smrg pdp11-*) 15761a28b98bSmrg os=none 15770ed7c580Smrg ;; 15780ed7c580Smrg *-dec | vax-*) 15791a28b98bSmrg os=ultrix4.2 15800ed7c580Smrg ;; 15810ed7c580Smrg m68*-apollo) 15821a28b98bSmrg os=domain 15830ed7c580Smrg ;; 15840ed7c580Smrg i386-sun) 15851a28b98bSmrg os=sunos4.0.2 15860ed7c580Smrg ;; 15870ed7c580Smrg m68000-sun) 15881a28b98bSmrg os=sunos3 15890ed7c580Smrg ;; 15900ed7c580Smrg m68*-cisco) 1591a0cd246fSmrg os= 1592a0cd246fSmrg obj=aout 15930ed7c580Smrg ;; 15940ed7c580Smrg mep-*) 1595a0cd246fSmrg os= 1596a0cd246fSmrg obj=elf 15970ed7c580Smrg ;; 15980ed7c580Smrg mips*-cisco) 1599a0cd246fSmrg os= 1600a0cd246fSmrg obj=elf 16010ed7c580Smrg ;; 1602a0cd246fSmrg mips*-*|nanomips*-*) 1603a0cd246fSmrg os= 1604a0cd246fSmrg obj=elf 16050ed7c580Smrg ;; 16060ed7c580Smrg or32-*) 1607a0cd246fSmrg os= 1608a0cd246fSmrg obj=coff 16090ed7c580Smrg ;; 16100ed7c580Smrg *-tti) # must be before sparc entry or we get the wrong os. 16111a28b98bSmrg os=sysv3 16120ed7c580Smrg ;; 16130ed7c580Smrg sparc-* | *-sun) 16141a28b98bSmrg os=sunos4.1.1 16150ed7c580Smrg ;; 16161a28b98bSmrg pru-*) 1617a0cd246fSmrg os= 1618a0cd246fSmrg obj=elf 16190ed7c580Smrg ;; 16201a28b98bSmrg *-be) 16211a28b98bSmrg os=beos 16220ed7c580Smrg ;; 16230ed7c580Smrg *-ibm) 16241a28b98bSmrg os=aix 16250ed7c580Smrg ;; 16260ed7c580Smrg *-knuth) 16271a28b98bSmrg os=mmixware 16280ed7c580Smrg ;; 16290ed7c580Smrg *-wec) 16301a28b98bSmrg os=proelf 16310ed7c580Smrg ;; 16320ed7c580Smrg *-winbond) 16331a28b98bSmrg os=proelf 16340ed7c580Smrg ;; 16350ed7c580Smrg *-oki) 16361a28b98bSmrg os=proelf 16370ed7c580Smrg ;; 16380ed7c580Smrg *-hp) 16391a28b98bSmrg os=hpux 16400ed7c580Smrg ;; 16410ed7c580Smrg *-hitachi) 16421a28b98bSmrg os=hiux 16430ed7c580Smrg ;; 16440ed7c580Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16451a28b98bSmrg os=sysv 16460ed7c580Smrg ;; 16470ed7c580Smrg *-cbm) 16481a28b98bSmrg os=amigaos 16490ed7c580Smrg ;; 16500ed7c580Smrg *-dg) 16511a28b98bSmrg os=dgux 16520ed7c580Smrg ;; 16530ed7c580Smrg *-dolphin) 16541a28b98bSmrg os=sysv3 16550ed7c580Smrg ;; 16560ed7c580Smrg m68k-ccur) 16571a28b98bSmrg os=rtu 16580ed7c580Smrg ;; 16590ed7c580Smrg m88k-omron*) 16601a28b98bSmrg os=luna 16610ed7c580Smrg ;; 16621a28b98bSmrg *-next) 16631a28b98bSmrg os=nextstep 16640ed7c580Smrg ;; 16650ed7c580Smrg *-sequent) 16661a28b98bSmrg os=ptx 16670ed7c580Smrg ;; 16680ed7c580Smrg *-crds) 16691a28b98bSmrg os=unos 16700ed7c580Smrg ;; 16710ed7c580Smrg *-ns) 16721a28b98bSmrg os=genix 16730ed7c580Smrg ;; 16740ed7c580Smrg i370-*) 16751a28b98bSmrg os=mvs 16760ed7c580Smrg ;; 16770ed7c580Smrg *-gould) 16781a28b98bSmrg os=sysv 16790ed7c580Smrg ;; 16800ed7c580Smrg *-highlevel) 16811a28b98bSmrg os=bsd 16820ed7c580Smrg ;; 16830ed7c580Smrg *-encore) 16841a28b98bSmrg os=bsd 16850ed7c580Smrg ;; 16860ed7c580Smrg *-sgi) 16871a28b98bSmrg os=irix 16880ed7c580Smrg ;; 16890ed7c580Smrg *-siemens) 16901a28b98bSmrg os=sysv4 16910ed7c580Smrg ;; 16920ed7c580Smrg *-masscomp) 16931a28b98bSmrg os=rtu 16940ed7c580Smrg ;; 16950ed7c580Smrg f30[01]-fujitsu | f700-fujitsu) 16961a28b98bSmrg os=uxpv 16970ed7c580Smrg ;; 16980ed7c580Smrg *-rom68k) 1699a0cd246fSmrg os= 1700a0cd246fSmrg obj=coff 17010ed7c580Smrg ;; 17020ed7c580Smrg *-*bug) 1703a0cd246fSmrg os= 1704a0cd246fSmrg obj=coff 17050ed7c580Smrg ;; 17060ed7c580Smrg *-apple) 17071a28b98bSmrg os=macos 17080ed7c580Smrg ;; 17090ed7c580Smrg *-atari*) 17101a28b98bSmrg os=mint 17111a28b98bSmrg ;; 17121a28b98bSmrg *-wrs) 17131a28b98bSmrg os=vxworks 17140ed7c580Smrg ;; 17150ed7c580Smrg *) 17161a28b98bSmrg os=none 17170ed7c580Smrg ;; 17180ed7c580Smrgesac 17191a28b98bSmrg 17200ed7c580Smrgfi 17210ed7c580Smrg 1722a0cd246fSmrg# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ). 1723a0cd246fSmrg 17241a28b98bSmrgcase $os in 17251a28b98bSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1726a0cd246fSmrg llvm* | musl* | newlib* | relibc* | uclibc*) 17271a28b98bSmrg ;; 17281a28b98bSmrg # Likewise for "kernel-abi" 17291a28b98bSmrg eabi* | gnueabi*) 17301a28b98bSmrg ;; 17311a28b98bSmrg # VxWorks passes extra cpu info in the 4th filed. 17321a28b98bSmrg simlinux | simwindows | spe) 17331a28b98bSmrg ;; 1734a0cd246fSmrg # See `case $cpu-$os` validation below 1735a0cd246fSmrg ghcjs) 1736a0cd246fSmrg ;; 17371a28b98bSmrg # Now accept the basic system types. 17381a28b98bSmrg # The portable systems comes first. 17391a28b98bSmrg # Each alternative MUST end in a * to match a version number. 17401a28b98bSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17411a28b98bSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17421a28b98bSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17431a28b98bSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17441a28b98bSmrg | hiux* | abug | nacl* | netware* | windows* \ 1745a0cd246fSmrg | os9* | macos* | osx* | ios* | tvos* | watchos* \ 17461a28b98bSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17471a28b98bSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17481a28b98bSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17491a28b98bSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17501a28b98bSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17511a28b98bSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17521a28b98bSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17531a28b98bSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1754a0cd246fSmrg | bosx* | nextstep* | cxux* | oabi* \ 1755a0cd246fSmrg | ptx* | ecoff* | winnt* | domain* | vsta* \ 17561a28b98bSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17571a28b98bSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1758a0cd246fSmrg | cygwin* | msys* | moss* | proelf* | rtems* \ 17591a28b98bSmrg | midipix* | mingw32* | mingw64* | mint* \ 17601a28b98bSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17611a28b98bSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17621a28b98bSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17631a28b98bSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17641a28b98bSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17651a28b98bSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17661a28b98bSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17671a28b98bSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17681a28b98bSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17691a28b98bSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1770a0cd246fSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1771a0cd246fSmrg | fiwix* | mlibc* | cos* | mbr* | ironclad* ) 17721a28b98bSmrg ;; 17731a28b98bSmrg # This one is extra strict with allowed versions 17741a28b98bSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17751a28b98bSmrg # Don't forget version if it is 3.2v4 or newer. 17761a28b98bSmrg ;; 1777a0cd246fSmrg # This refers to builds using the UEFI calling convention 1778a0cd246fSmrg # (which depends on the architecture) and PE file format. 1779a0cd246fSmrg # Note that this is both a different calling convention and 1780a0cd246fSmrg # different file format than that of GNU-EFI 1781a0cd246fSmrg # (x86_64-w64-mingw32). 1782a0cd246fSmrg uefi) 1783a0cd246fSmrg ;; 17841a28b98bSmrg none) 17851a28b98bSmrg ;; 1786a0cd246fSmrg kernel* | msvc* ) 1787a0cd246fSmrg # Restricted further below 1788a0cd246fSmrg ;; 1789a0cd246fSmrg '') 1790a0cd246fSmrg if test x"$obj" = x 1791a0cd246fSmrg then 1792a0cd246fSmrg echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2 1793a0cd246fSmrg fi 1794a0cd246fSmrg ;; 17951a28b98bSmrg *) 1796a0cd246fSmrg echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 1797a0cd246fSmrg exit 1 1798a0cd246fSmrg ;; 1799a0cd246fSmrgesac 1800a0cd246fSmrg 1801a0cd246fSmrgcase $obj in 1802a0cd246fSmrg aout* | coff* | elf* | pe*) 1803a0cd246fSmrg ;; 1804a0cd246fSmrg '') 1805a0cd246fSmrg # empty is fine 1806a0cd246fSmrg ;; 1807a0cd246fSmrg *) 1808a0cd246fSmrg echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 1809a0cd246fSmrg exit 1 1810a0cd246fSmrg ;; 1811a0cd246fSmrgesac 1812a0cd246fSmrg 1813a0cd246fSmrg# Here we handle the constraint that a (synthetic) cpu and os are 1814a0cd246fSmrg# valid only in combination with each other and nowhere else. 1815a0cd246fSmrgcase $cpu-$os in 1816a0cd246fSmrg # The "javascript-unknown-ghcjs" triple is used by GHC; we 1817a0cd246fSmrg # accept it here in order to tolerate that, but reject any 1818a0cd246fSmrg # variations. 1819a0cd246fSmrg javascript-ghcjs) 1820a0cd246fSmrg ;; 1821a0cd246fSmrg javascript-* | *-ghcjs) 1822a0cd246fSmrg echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 18231a28b98bSmrg exit 1 18241a28b98bSmrg ;; 18251a28b98bSmrgesac 18261a28b98bSmrg 18271a28b98bSmrg# As a final step for OS-related things, validate the OS-kernel combination 18281a28b98bSmrg# (given a valid OS), if there is a kernel. 1829a0cd246fSmrgcase $kernel-$os-$obj in 1830a0cd246fSmrg linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ 1831a0cd246fSmrg | linux-mlibc*- | linux-musl*- | linux-newlib*- \ 1832a0cd246fSmrg | linux-relibc*- | linux-uclibc*- ) 1833a0cd246fSmrg ;; 1834a0cd246fSmrg uclinux-uclibc*- ) 1835a0cd246fSmrg ;; 1836a0cd246fSmrg managarm-mlibc*- | managarm-kernel*- ) 18371a28b98bSmrg ;; 1838a0cd246fSmrg windows*-msvc*-) 18391a28b98bSmrg ;; 1840a0cd246fSmrg -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ 1841a0cd246fSmrg | -uclibc*- ) 18421a28b98bSmrg # These are just libc implementations, not actual OSes, and thus 18431a28b98bSmrg # require a kernel. 1844a0cd246fSmrg echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 18451a28b98bSmrg exit 1 18461a28b98bSmrg ;; 1847a0cd246fSmrg -kernel*- ) 1848a0cd246fSmrg echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 1849a0cd246fSmrg exit 1 18501a28b98bSmrg ;; 1851a0cd246fSmrg *-kernel*- ) 1852a0cd246fSmrg echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 1853a0cd246fSmrg exit 1 18541a28b98bSmrg ;; 1855a0cd246fSmrg *-msvc*- ) 1856a0cd246fSmrg echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 1857a0cd246fSmrg exit 1 18581a28b98bSmrg ;; 1859a0cd246fSmrg kfreebsd*-gnu*- | kopensolaris*-gnu*-) 1860a0cd246fSmrg ;; 1861a0cd246fSmrg vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) 1862a0cd246fSmrg ;; 1863a0cd246fSmrg nto-qnx*-) 1864a0cd246fSmrg ;; 1865a0cd246fSmrg os2-emx-) 18661a28b98bSmrg ;; 1867a0cd246fSmrg *-eabi*- | *-gnueabi*-) 18681a28b98bSmrg ;; 1869a0cd246fSmrg none--*) 1870a0cd246fSmrg # None (no kernel, i.e. freestanding / bare metal), 1871a0cd246fSmrg # can be paired with an machine code file format 1872a0cd246fSmrg ;; 1873a0cd246fSmrg -*-) 18741a28b98bSmrg # Blank kernel with real OS is always fine. 18751a28b98bSmrg ;; 1876a0cd246fSmrg --*) 1877a0cd246fSmrg # Blank kernel and OS with real machine code file format is always fine. 1878a0cd246fSmrg ;; 1879a0cd246fSmrg *-*-*) 1880a0cd246fSmrg echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 18811a28b98bSmrg exit 1 18821a28b98bSmrg ;; 18831a28b98bSmrgesac 18841a28b98bSmrg 18850ed7c580Smrg# Here we handle the case where we know the os, and the CPU type, but not the 18860ed7c580Smrg# manufacturer. We pick the logical manufacturer. 18871a28b98bSmrgcase $vendor in 18881a28b98bSmrg unknown) 18891a28b98bSmrg case $cpu-$os in 18901a28b98bSmrg *-riscix*) 18910ed7c580Smrg vendor=acorn 18920ed7c580Smrg ;; 18931a28b98bSmrg *-sunos*) 18940ed7c580Smrg vendor=sun 18950ed7c580Smrg ;; 18961a28b98bSmrg *-cnk* | *-aix*) 18970ed7c580Smrg vendor=ibm 18980ed7c580Smrg ;; 18991a28b98bSmrg *-beos*) 19000ed7c580Smrg vendor=be 19010ed7c580Smrg ;; 19021a28b98bSmrg *-hpux*) 19030ed7c580Smrg vendor=hp 19040ed7c580Smrg ;; 19051a28b98bSmrg *-mpeix*) 19060ed7c580Smrg vendor=hp 19070ed7c580Smrg ;; 19081a28b98bSmrg *-hiux*) 19090ed7c580Smrg vendor=hitachi 19100ed7c580Smrg ;; 19111a28b98bSmrg *-unos*) 19120ed7c580Smrg vendor=crds 19130ed7c580Smrg ;; 19141a28b98bSmrg *-dgux*) 19150ed7c580Smrg vendor=dg 19160ed7c580Smrg ;; 19171a28b98bSmrg *-luna*) 19180ed7c580Smrg vendor=omron 19190ed7c580Smrg ;; 19201a28b98bSmrg *-genix*) 19210ed7c580Smrg vendor=ns 19220ed7c580Smrg ;; 19231a28b98bSmrg *-clix*) 19241a28b98bSmrg vendor=intergraph 19251a28b98bSmrg ;; 19261a28b98bSmrg *-mvs* | *-opened*) 19271a28b98bSmrg vendor=ibm 19281a28b98bSmrg ;; 19291a28b98bSmrg *-os400*) 19300ed7c580Smrg vendor=ibm 19310ed7c580Smrg ;; 19321a28b98bSmrg s390-* | s390x-*) 19330ed7c580Smrg vendor=ibm 19340ed7c580Smrg ;; 19351a28b98bSmrg *-ptx*) 19360ed7c580Smrg vendor=sequent 19370ed7c580Smrg ;; 19381a28b98bSmrg *-tpf*) 19390ed7c580Smrg vendor=ibm 19400ed7c580Smrg ;; 19411a28b98bSmrg *-vxsim* | *-vxworks* | *-windiss*) 19420ed7c580Smrg vendor=wrs 19430ed7c580Smrg ;; 19441a28b98bSmrg *-aux*) 19450ed7c580Smrg vendor=apple 19460ed7c580Smrg ;; 19471a28b98bSmrg *-hms*) 19480ed7c580Smrg vendor=hitachi 19490ed7c580Smrg ;; 19501a28b98bSmrg *-mpw* | *-macos*) 19510ed7c580Smrg vendor=apple 19520ed7c580Smrg ;; 19531a28b98bSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 19540ed7c580Smrg vendor=atari 19550ed7c580Smrg ;; 19561a28b98bSmrg *-vos*) 19570ed7c580Smrg vendor=stratus 19580ed7c580Smrg ;; 19590ed7c580Smrg esac 19600ed7c580Smrg ;; 19610ed7c580Smrgesac 19620ed7c580Smrg 1963a0cd246fSmrgecho "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" 19640ed7c580Smrgexit 19650ed7c580Smrg 19660ed7c580Smrg# Local variables: 19671a28b98bSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 19680ed7c580Smrg# time-stamp-start: "timestamp='" 19690ed7c580Smrg# time-stamp-format: "%:y-%02m-%02d" 19700ed7c580Smrg# time-stamp-end: "'" 19710ed7c580Smrg# End: 1972