1b9bb67cbSmrg#! /bin/sh 2b9bb67cbSmrg# Configuration validation subroutine script. 318eba588Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 4b9bb67cbSmrg 518eba588Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6b9bb67cbSmrg 718eba588Smrgtimestamp='2023-01-21' 818eba588Smrg 918eba588Smrg# This file is free software; you can redistribute it and/or modify it 1018eba588Smrg# under the terms of the GNU General Public License as published by 1118eba588Smrg# the Free Software Foundation, either version 3 of the License, or 12b9bb67cbSmrg# (at your option) any later version. 13b9bb67cbSmrg# 1418eba588Smrg# This program is distributed in the hope that it will be useful, but 1518eba588Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1618eba588Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1718eba588Smrg# General Public License for more details. 18b9bb67cbSmrg# 19b9bb67cbSmrg# You should have received a copy of the GNU General Public License 2018eba588Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21b9bb67cbSmrg# 22b9bb67cbSmrg# As a special exception to the GNU General Public License, if you 23b9bb67cbSmrg# distribute this file as part of a program that contains a 24b9bb67cbSmrg# configuration script generated by Autoconf, you may include it under 2518eba588Smrg# the same distribution terms that you use for the rest of that 2618eba588Smrg# program. This Exception is an additional permission under section 7 2718eba588Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28b9bb67cbSmrg 29b9bb67cbSmrg 3018eba588Smrg# Please send patches to <config-patches@gnu.org>. 31b9bb67cbSmrg# 32b9bb67cbSmrg# Configuration subroutine to validate and canonicalize a configuration type. 33b9bb67cbSmrg# Supply the specified configuration type as an argument. 34b9bb67cbSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 35b9bb67cbSmrg# Otherwise, we print the canonical config type on stdout and succeed. 36b9bb67cbSmrg 37b5d2086dSmrg# You can get the latest version of this script from: 3818eba588Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39b5d2086dSmrg 40b9bb67cbSmrg# This file is supposed to be the same for all GNU packages 41b9bb67cbSmrg# and recognize all the CPU types, system types and aliases 42b9bb67cbSmrg# that are meaningful with *any* GNU software. 43b9bb67cbSmrg# Each package is responsible for reporting which valid configurations 44b9bb67cbSmrg# it does not support. The user should be able to distinguish 45b9bb67cbSmrg# a failure to support a valid configuration from a meaningless 46b9bb67cbSmrg# configuration. 47b9bb67cbSmrg 48b9bb67cbSmrg# The goal of this file is to map all the various variations of a given 49b9bb67cbSmrg# machine specification into a single specification in the form: 50b9bb67cbSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51b9bb67cbSmrg# or in some cases, the newer four-part form: 52b9bb67cbSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53b9bb67cbSmrg# It is wrong to echo any other type of specification. 54b9bb67cbSmrg 5518eba588Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 5618eba588Smrg# about features and limitations of the classic Bourne shell that were 5718eba588Smrg# superseded or lifted in POSIX. However, this script identifies a wide 5818eba588Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5918eba588Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6018eba588Smrg# have a pre-POSIX /bin/sh. 6118eba588Smrg 62b9bb67cbSmrgme=`echo "$0" | sed -e 's,.*/,,'` 63b9bb67cbSmrg 64b9bb67cbSmrgusage="\ 6518eba588SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66b9bb67cbSmrg 67b9bb67cbSmrgCanonicalize a configuration name. 68b9bb67cbSmrg 6918eba588SmrgOptions: 70b9bb67cbSmrg -h, --help print this help, then exit 71b9bb67cbSmrg -t, --time-stamp print date of last modification, then exit 72b9bb67cbSmrg -v, --version print version number, then exit 73b9bb67cbSmrg 74b9bb67cbSmrgReport bugs and patches to <config-patches@gnu.org>." 75b9bb67cbSmrg 76b9bb67cbSmrgversion="\ 77b9bb67cbSmrgGNU config.sub ($timestamp) 78b9bb67cbSmrg 7918eba588SmrgCopyright 1992-2023 Free Software Foundation, Inc. 80b9bb67cbSmrg 81b9bb67cbSmrgThis is free software; see the source for copying conditions. There is NO 82b9bb67cbSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83b9bb67cbSmrg 84b9bb67cbSmrghelp=" 85b9bb67cbSmrgTry \`$me --help' for more information." 86b9bb67cbSmrg 87b9bb67cbSmrg# Parse command line 88b9bb67cbSmrgwhile test $# -gt 0 ; do 89b9bb67cbSmrg case $1 in 90b9bb67cbSmrg --time-stamp | --time* | -t ) 91b9bb67cbSmrg echo "$timestamp" ; exit ;; 92b9bb67cbSmrg --version | -v ) 93b9bb67cbSmrg echo "$version" ; exit ;; 94b9bb67cbSmrg --help | --h* | -h ) 95b9bb67cbSmrg echo "$usage"; exit ;; 96b9bb67cbSmrg -- ) # Stop option processing 97b9bb67cbSmrg shift; break ;; 98b9bb67cbSmrg - ) # Use stdin as input. 99b9bb67cbSmrg break ;; 100b9bb67cbSmrg -* ) 10118eba588Smrg echo "$me: invalid option $1$help" >&2 102b9bb67cbSmrg exit 1 ;; 103b9bb67cbSmrg 104b9bb67cbSmrg *local*) 105b9bb67cbSmrg # First pass through any local machine types. 10618eba588Smrg echo "$1" 107b9bb67cbSmrg exit ;; 108b9bb67cbSmrg 109b9bb67cbSmrg * ) 110b9bb67cbSmrg break ;; 111b9bb67cbSmrg esac 112b9bb67cbSmrgdone 113b9bb67cbSmrg 114b9bb67cbSmrgcase $# in 115b9bb67cbSmrg 0) echo "$me: missing argument$help" >&2 116b9bb67cbSmrg exit 1;; 117b9bb67cbSmrg 1) ;; 118b9bb67cbSmrg *) echo "$me: too many arguments$help" >&2 119b9bb67cbSmrg exit 1;; 120b9bb67cbSmrgesac 121b9bb67cbSmrg 12218eba588Smrg# Split fields of configuration type 12318eba588Smrg# shellcheck disable=SC2162 12418eba588Smrgsaved_IFS=$IFS 12518eba588SmrgIFS="-" read field1 field2 field3 field4 <<EOF 12618eba588Smrg$1 12718eba588SmrgEOF 12818eba588SmrgIFS=$saved_IFS 129b9bb67cbSmrg 13018eba588Smrg# Separate into logical components for further validation 13118eba588Smrgcase $1 in 13218eba588Smrg *-*-*-*-*) 13318eba588Smrg echo Invalid configuration \`"$1"\': more than four components >&2 13418eba588Smrg exit 1 135b9bb67cbSmrg ;; 13618eba588Smrg *-*-*-*) 13718eba588Smrg basic_machine=$field1-$field2 13818eba588Smrg basic_os=$field3-$field4 139b9bb67cbSmrg ;; 14018eba588Smrg *-*-*) 14118eba588Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14218eba588Smrg # parts 14318eba588Smrg maybe_os=$field2-$field3 14418eba588Smrg case $maybe_os in 14518eba588Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 14618eba588Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14718eba588Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14818eba588Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 14918eba588Smrg basic_machine=$field1 15018eba588Smrg basic_os=$maybe_os 15118eba588Smrg ;; 15218eba588Smrg android-linux) 15318eba588Smrg basic_machine=$field1-unknown 15418eba588Smrg basic_os=linux-android 15518eba588Smrg ;; 15618eba588Smrg *) 15718eba588Smrg basic_machine=$field1-$field2 15818eba588Smrg basic_os=$field3 15918eba588Smrg ;; 16018eba588Smrg esac 161b9bb67cbSmrg ;; 16218eba588Smrg *-*) 16318eba588Smrg # A lone config we happen to match not fitting any pattern 16418eba588Smrg case $field1-$field2 in 16518eba588Smrg decstation-3100) 16618eba588Smrg basic_machine=mips-dec 16718eba588Smrg basic_os= 16818eba588Smrg ;; 16918eba588Smrg *-*) 17018eba588Smrg # Second component is usually, but not always the OS 17118eba588Smrg case $field2 in 17218eba588Smrg # Prevent following clause from handling this valid os 17318eba588Smrg sun*os*) 17418eba588Smrg basic_machine=$field1 17518eba588Smrg basic_os=$field2 17618eba588Smrg ;; 17718eba588Smrg zephyr*) 17818eba588Smrg basic_machine=$field1-unknown 17918eba588Smrg basic_os=$field2 18018eba588Smrg ;; 18118eba588Smrg # Manufacturers 18218eba588Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18318eba588Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18418eba588Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18518eba588Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18618eba588Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18718eba588Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18818eba588Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18918eba588Smrg | microblaze* | sim | cisco \ 19018eba588Smrg | oki | wec | wrs | winbond) 19118eba588Smrg basic_machine=$field1-$field2 19218eba588Smrg basic_os= 19318eba588Smrg ;; 19418eba588Smrg *) 19518eba588Smrg basic_machine=$field1 19618eba588Smrg basic_os=$field2 19718eba588Smrg ;; 19818eba588Smrg esac 19918eba588Smrg ;; 20018eba588Smrg esac 201b9bb67cbSmrg ;; 20218eba588Smrg *) 20318eba588Smrg # Convert single-component short-hands not valid as part of 20418eba588Smrg # multi-component configurations. 20518eba588Smrg case $field1 in 20618eba588Smrg 386bsd) 20718eba588Smrg basic_machine=i386-pc 20818eba588Smrg basic_os=bsd 20918eba588Smrg ;; 21018eba588Smrg a29khif) 21118eba588Smrg basic_machine=a29k-amd 21218eba588Smrg basic_os=udi 21318eba588Smrg ;; 21418eba588Smrg adobe68k) 21518eba588Smrg basic_machine=m68010-adobe 21618eba588Smrg basic_os=scout 21718eba588Smrg ;; 21818eba588Smrg alliant) 21918eba588Smrg basic_machine=fx80-alliant 22018eba588Smrg basic_os= 22118eba588Smrg ;; 22218eba588Smrg altos | altos3068) 22318eba588Smrg basic_machine=m68k-altos 22418eba588Smrg basic_os= 22518eba588Smrg ;; 22618eba588Smrg am29k) 22718eba588Smrg basic_machine=a29k-none 22818eba588Smrg basic_os=bsd 22918eba588Smrg ;; 23018eba588Smrg amdahl) 23118eba588Smrg basic_machine=580-amdahl 23218eba588Smrg basic_os=sysv 23318eba588Smrg ;; 23418eba588Smrg amiga) 23518eba588Smrg basic_machine=m68k-unknown 23618eba588Smrg basic_os= 23718eba588Smrg ;; 23818eba588Smrg amigaos | amigados) 23918eba588Smrg basic_machine=m68k-unknown 24018eba588Smrg basic_os=amigaos 24118eba588Smrg ;; 24218eba588Smrg amigaunix | amix) 24318eba588Smrg basic_machine=m68k-unknown 24418eba588Smrg basic_os=sysv4 24518eba588Smrg ;; 24618eba588Smrg apollo68) 24718eba588Smrg basic_machine=m68k-apollo 24818eba588Smrg basic_os=sysv 24918eba588Smrg ;; 25018eba588Smrg apollo68bsd) 25118eba588Smrg basic_machine=m68k-apollo 25218eba588Smrg basic_os=bsd 25318eba588Smrg ;; 25418eba588Smrg aros) 25518eba588Smrg basic_machine=i386-pc 25618eba588Smrg basic_os=aros 25718eba588Smrg ;; 25818eba588Smrg aux) 25918eba588Smrg basic_machine=m68k-apple 26018eba588Smrg basic_os=aux 26118eba588Smrg ;; 26218eba588Smrg balance) 26318eba588Smrg basic_machine=ns32k-sequent 26418eba588Smrg basic_os=dynix 26518eba588Smrg ;; 26618eba588Smrg blackfin) 26718eba588Smrg basic_machine=bfin-unknown 26818eba588Smrg basic_os=linux 26918eba588Smrg ;; 27018eba588Smrg cegcc) 27118eba588Smrg basic_machine=arm-unknown 27218eba588Smrg basic_os=cegcc 27318eba588Smrg ;; 27418eba588Smrg convex-c1) 27518eba588Smrg basic_machine=c1-convex 27618eba588Smrg basic_os=bsd 27718eba588Smrg ;; 27818eba588Smrg convex-c2) 27918eba588Smrg basic_machine=c2-convex 28018eba588Smrg basic_os=bsd 28118eba588Smrg ;; 28218eba588Smrg convex-c32) 28318eba588Smrg basic_machine=c32-convex 28418eba588Smrg basic_os=bsd 28518eba588Smrg ;; 28618eba588Smrg convex-c34) 28718eba588Smrg basic_machine=c34-convex 28818eba588Smrg basic_os=bsd 28918eba588Smrg ;; 29018eba588Smrg convex-c38) 29118eba588Smrg basic_machine=c38-convex 29218eba588Smrg basic_os=bsd 29318eba588Smrg ;; 29418eba588Smrg cray) 29518eba588Smrg basic_machine=j90-cray 29618eba588Smrg basic_os=unicos 29718eba588Smrg ;; 29818eba588Smrg crds | unos) 29918eba588Smrg basic_machine=m68k-crds 30018eba588Smrg basic_os= 30118eba588Smrg ;; 30218eba588Smrg da30) 30318eba588Smrg basic_machine=m68k-da30 30418eba588Smrg basic_os= 30518eba588Smrg ;; 30618eba588Smrg decstation | pmax | pmin | dec3100 | decstatn) 30718eba588Smrg basic_machine=mips-dec 30818eba588Smrg basic_os= 30918eba588Smrg ;; 31018eba588Smrg delta88) 31118eba588Smrg basic_machine=m88k-motorola 31218eba588Smrg basic_os=sysv3 31318eba588Smrg ;; 31418eba588Smrg dicos) 31518eba588Smrg basic_machine=i686-pc 31618eba588Smrg basic_os=dicos 31718eba588Smrg ;; 31818eba588Smrg djgpp) 31918eba588Smrg basic_machine=i586-pc 32018eba588Smrg basic_os=msdosdjgpp 32118eba588Smrg ;; 32218eba588Smrg ebmon29k) 32318eba588Smrg basic_machine=a29k-amd 32418eba588Smrg basic_os=ebmon 32518eba588Smrg ;; 32618eba588Smrg es1800 | OSE68k | ose68k | ose | OSE) 32718eba588Smrg basic_machine=m68k-ericsson 32818eba588Smrg basic_os=ose 32918eba588Smrg ;; 33018eba588Smrg gmicro) 33118eba588Smrg basic_machine=tron-gmicro 33218eba588Smrg basic_os=sysv 33318eba588Smrg ;; 33418eba588Smrg go32) 33518eba588Smrg basic_machine=i386-pc 33618eba588Smrg basic_os=go32 33718eba588Smrg ;; 33818eba588Smrg h8300hms) 33918eba588Smrg basic_machine=h8300-hitachi 34018eba588Smrg basic_os=hms 34118eba588Smrg ;; 34218eba588Smrg h8300xray) 34318eba588Smrg basic_machine=h8300-hitachi 34418eba588Smrg basic_os=xray 34518eba588Smrg ;; 34618eba588Smrg h8500hms) 34718eba588Smrg basic_machine=h8500-hitachi 34818eba588Smrg basic_os=hms 34918eba588Smrg ;; 35018eba588Smrg harris) 35118eba588Smrg basic_machine=m88k-harris 35218eba588Smrg basic_os=sysv3 35318eba588Smrg ;; 35418eba588Smrg hp300 | hp300hpux) 35518eba588Smrg basic_machine=m68k-hp 35618eba588Smrg basic_os=hpux 35718eba588Smrg ;; 35818eba588Smrg hp300bsd) 35918eba588Smrg basic_machine=m68k-hp 36018eba588Smrg basic_os=bsd 36118eba588Smrg ;; 36218eba588Smrg hppaosf) 36318eba588Smrg basic_machine=hppa1.1-hp 36418eba588Smrg basic_os=osf 36518eba588Smrg ;; 36618eba588Smrg hppro) 36718eba588Smrg basic_machine=hppa1.1-hp 36818eba588Smrg basic_os=proelf 36918eba588Smrg ;; 37018eba588Smrg i386mach) 37118eba588Smrg basic_machine=i386-mach 37218eba588Smrg basic_os=mach 37318eba588Smrg ;; 37418eba588Smrg isi68 | isi) 37518eba588Smrg basic_machine=m68k-isi 37618eba588Smrg basic_os=sysv 37718eba588Smrg ;; 37818eba588Smrg m68knommu) 37918eba588Smrg basic_machine=m68k-unknown 38018eba588Smrg basic_os=linux 38118eba588Smrg ;; 38218eba588Smrg magnum | m3230) 38318eba588Smrg basic_machine=mips-mips 38418eba588Smrg basic_os=sysv 38518eba588Smrg ;; 38618eba588Smrg merlin) 38718eba588Smrg basic_machine=ns32k-utek 38818eba588Smrg basic_os=sysv 38918eba588Smrg ;; 39018eba588Smrg mingw64) 39118eba588Smrg basic_machine=x86_64-pc 39218eba588Smrg basic_os=mingw64 39318eba588Smrg ;; 39418eba588Smrg mingw32) 39518eba588Smrg basic_machine=i686-pc 39618eba588Smrg basic_os=mingw32 39718eba588Smrg ;; 39818eba588Smrg mingw32ce) 39918eba588Smrg basic_machine=arm-unknown 40018eba588Smrg basic_os=mingw32ce 40118eba588Smrg ;; 40218eba588Smrg monitor) 40318eba588Smrg basic_machine=m68k-rom68k 40418eba588Smrg basic_os=coff 40518eba588Smrg ;; 40618eba588Smrg morphos) 40718eba588Smrg basic_machine=powerpc-unknown 40818eba588Smrg basic_os=morphos 40918eba588Smrg ;; 41018eba588Smrg moxiebox) 41118eba588Smrg basic_machine=moxie-unknown 41218eba588Smrg basic_os=moxiebox 41318eba588Smrg ;; 41418eba588Smrg msdos) 41518eba588Smrg basic_machine=i386-pc 41618eba588Smrg basic_os=msdos 41718eba588Smrg ;; 41818eba588Smrg msys) 41918eba588Smrg basic_machine=i686-pc 42018eba588Smrg basic_os=msys 42118eba588Smrg ;; 42218eba588Smrg mvs) 42318eba588Smrg basic_machine=i370-ibm 42418eba588Smrg basic_os=mvs 42518eba588Smrg ;; 42618eba588Smrg nacl) 42718eba588Smrg basic_machine=le32-unknown 42818eba588Smrg basic_os=nacl 42918eba588Smrg ;; 43018eba588Smrg ncr3000) 43118eba588Smrg basic_machine=i486-ncr 43218eba588Smrg basic_os=sysv4 43318eba588Smrg ;; 43418eba588Smrg netbsd386) 43518eba588Smrg basic_machine=i386-pc 43618eba588Smrg basic_os=netbsd 43718eba588Smrg ;; 43818eba588Smrg netwinder) 43918eba588Smrg basic_machine=armv4l-rebel 44018eba588Smrg basic_os=linux 44118eba588Smrg ;; 44218eba588Smrg news | news700 | news800 | news900) 44318eba588Smrg basic_machine=m68k-sony 44418eba588Smrg basic_os=newsos 44518eba588Smrg ;; 44618eba588Smrg news1000) 44718eba588Smrg basic_machine=m68030-sony 44818eba588Smrg basic_os=newsos 44918eba588Smrg ;; 45018eba588Smrg necv70) 45118eba588Smrg basic_machine=v70-nec 45218eba588Smrg basic_os=sysv 45318eba588Smrg ;; 45418eba588Smrg nh3000) 45518eba588Smrg basic_machine=m68k-harris 45618eba588Smrg basic_os=cxux 45718eba588Smrg ;; 45818eba588Smrg nh[45]000) 45918eba588Smrg basic_machine=m88k-harris 46018eba588Smrg basic_os=cxux 46118eba588Smrg ;; 46218eba588Smrg nindy960) 46318eba588Smrg basic_machine=i960-intel 46418eba588Smrg basic_os=nindy 46518eba588Smrg ;; 46618eba588Smrg mon960) 46718eba588Smrg basic_machine=i960-intel 46818eba588Smrg basic_os=mon960 46918eba588Smrg ;; 47018eba588Smrg nonstopux) 47118eba588Smrg basic_machine=mips-compaq 47218eba588Smrg basic_os=nonstopux 47318eba588Smrg ;; 47418eba588Smrg os400) 47518eba588Smrg basic_machine=powerpc-ibm 47618eba588Smrg basic_os=os400 47718eba588Smrg ;; 47818eba588Smrg OSE68000 | ose68000) 47918eba588Smrg basic_machine=m68000-ericsson 48018eba588Smrg basic_os=ose 48118eba588Smrg ;; 48218eba588Smrg os68k) 48318eba588Smrg basic_machine=m68k-none 48418eba588Smrg basic_os=os68k 48518eba588Smrg ;; 48618eba588Smrg paragon) 48718eba588Smrg basic_machine=i860-intel 48818eba588Smrg basic_os=osf 48918eba588Smrg ;; 49018eba588Smrg parisc) 49118eba588Smrg basic_machine=hppa-unknown 49218eba588Smrg basic_os=linux 49318eba588Smrg ;; 49418eba588Smrg psp) 49518eba588Smrg basic_machine=mipsallegrexel-sony 49618eba588Smrg basic_os=psp 49718eba588Smrg ;; 49818eba588Smrg pw32) 49918eba588Smrg basic_machine=i586-unknown 50018eba588Smrg basic_os=pw32 50118eba588Smrg ;; 50218eba588Smrg rdos | rdos64) 50318eba588Smrg basic_machine=x86_64-pc 50418eba588Smrg basic_os=rdos 50518eba588Smrg ;; 50618eba588Smrg rdos32) 50718eba588Smrg basic_machine=i386-pc 50818eba588Smrg basic_os=rdos 50918eba588Smrg ;; 51018eba588Smrg rom68k) 51118eba588Smrg basic_machine=m68k-rom68k 51218eba588Smrg basic_os=coff 51318eba588Smrg ;; 51418eba588Smrg sa29200) 51518eba588Smrg basic_machine=a29k-amd 51618eba588Smrg basic_os=udi 51718eba588Smrg ;; 51818eba588Smrg sei) 51918eba588Smrg basic_machine=mips-sei 52018eba588Smrg basic_os=seiux 52118eba588Smrg ;; 52218eba588Smrg sequent) 52318eba588Smrg basic_machine=i386-sequent 52418eba588Smrg basic_os= 52518eba588Smrg ;; 52618eba588Smrg sps7) 52718eba588Smrg basic_machine=m68k-bull 52818eba588Smrg basic_os=sysv2 52918eba588Smrg ;; 53018eba588Smrg st2000) 53118eba588Smrg basic_machine=m68k-tandem 53218eba588Smrg basic_os= 53318eba588Smrg ;; 53418eba588Smrg stratus) 53518eba588Smrg basic_machine=i860-stratus 53618eba588Smrg basic_os=sysv4 53718eba588Smrg ;; 53818eba588Smrg sun2) 53918eba588Smrg basic_machine=m68000-sun 54018eba588Smrg basic_os= 54118eba588Smrg ;; 54218eba588Smrg sun2os3) 54318eba588Smrg basic_machine=m68000-sun 54418eba588Smrg basic_os=sunos3 54518eba588Smrg ;; 54618eba588Smrg sun2os4) 54718eba588Smrg basic_machine=m68000-sun 54818eba588Smrg basic_os=sunos4 54918eba588Smrg ;; 55018eba588Smrg sun3) 55118eba588Smrg basic_machine=m68k-sun 55218eba588Smrg basic_os= 55318eba588Smrg ;; 55418eba588Smrg sun3os3) 55518eba588Smrg basic_machine=m68k-sun 55618eba588Smrg basic_os=sunos3 55718eba588Smrg ;; 55818eba588Smrg sun3os4) 55918eba588Smrg basic_machine=m68k-sun 56018eba588Smrg basic_os=sunos4 56118eba588Smrg ;; 56218eba588Smrg sun4) 56318eba588Smrg basic_machine=sparc-sun 56418eba588Smrg basic_os= 56518eba588Smrg ;; 56618eba588Smrg sun4os3) 56718eba588Smrg basic_machine=sparc-sun 56818eba588Smrg basic_os=sunos3 56918eba588Smrg ;; 57018eba588Smrg sun4os4) 57118eba588Smrg basic_machine=sparc-sun 57218eba588Smrg basic_os=sunos4 57318eba588Smrg ;; 57418eba588Smrg sun4sol2) 57518eba588Smrg basic_machine=sparc-sun 57618eba588Smrg basic_os=solaris2 57718eba588Smrg ;; 57818eba588Smrg sun386 | sun386i | roadrunner) 57918eba588Smrg basic_machine=i386-sun 58018eba588Smrg basic_os= 58118eba588Smrg ;; 58218eba588Smrg sv1) 58318eba588Smrg basic_machine=sv1-cray 58418eba588Smrg basic_os=unicos 58518eba588Smrg ;; 58618eba588Smrg symmetry) 58718eba588Smrg basic_machine=i386-sequent 58818eba588Smrg basic_os=dynix 58918eba588Smrg ;; 59018eba588Smrg t3e) 59118eba588Smrg basic_machine=alphaev5-cray 59218eba588Smrg basic_os=unicos 59318eba588Smrg ;; 59418eba588Smrg t90) 59518eba588Smrg basic_machine=t90-cray 59618eba588Smrg basic_os=unicos 59718eba588Smrg ;; 59818eba588Smrg toad1) 59918eba588Smrg basic_machine=pdp10-xkl 60018eba588Smrg basic_os=tops20 60118eba588Smrg ;; 60218eba588Smrg tpf) 60318eba588Smrg basic_machine=s390x-ibm 60418eba588Smrg basic_os=tpf 60518eba588Smrg ;; 60618eba588Smrg udi29k) 60718eba588Smrg basic_machine=a29k-amd 60818eba588Smrg basic_os=udi 60918eba588Smrg ;; 61018eba588Smrg ultra3) 61118eba588Smrg basic_machine=a29k-nyu 61218eba588Smrg basic_os=sym1 61318eba588Smrg ;; 61418eba588Smrg v810 | necv810) 61518eba588Smrg basic_machine=v810-nec 61618eba588Smrg basic_os=none 61718eba588Smrg ;; 61818eba588Smrg vaxv) 61918eba588Smrg basic_machine=vax-dec 62018eba588Smrg basic_os=sysv 62118eba588Smrg ;; 62218eba588Smrg vms) 62318eba588Smrg basic_machine=vax-dec 62418eba588Smrg basic_os=vms 62518eba588Smrg ;; 62618eba588Smrg vsta) 62718eba588Smrg basic_machine=i386-pc 62818eba588Smrg basic_os=vsta 62918eba588Smrg ;; 63018eba588Smrg vxworks960) 63118eba588Smrg basic_machine=i960-wrs 63218eba588Smrg basic_os=vxworks 63318eba588Smrg ;; 63418eba588Smrg vxworks68) 63518eba588Smrg basic_machine=m68k-wrs 63618eba588Smrg basic_os=vxworks 63718eba588Smrg ;; 63818eba588Smrg vxworks29k) 63918eba588Smrg basic_machine=a29k-wrs 64018eba588Smrg basic_os=vxworks 64118eba588Smrg ;; 64218eba588Smrg xbox) 64318eba588Smrg basic_machine=i686-pc 64418eba588Smrg basic_os=mingw32 64518eba588Smrg ;; 64618eba588Smrg ymp) 64718eba588Smrg basic_machine=ymp-cray 64818eba588Smrg basic_os=unicos 64918eba588Smrg ;; 65018eba588Smrg *) 65118eba588Smrg basic_machine=$1 65218eba588Smrg basic_os= 65318eba588Smrg ;; 65418eba588Smrg esac 655b9bb67cbSmrg ;; 65618eba588Smrgesac 65718eba588Smrg 65818eba588Smrg# Decode 1-component or ad-hoc basic machines 65918eba588Smrgcase $basic_machine in 66018eba588Smrg # Here we handle the default manufacturer of certain CPU types. It is in 66118eba588Smrg # some cases the only manufacturer, in others, it is the most popular. 66218eba588Smrg w89k) 66318eba588Smrg cpu=hppa1.1 66418eba588Smrg vendor=winbond 665b9bb67cbSmrg ;; 66618eba588Smrg op50n) 66718eba588Smrg cpu=hppa1.1 66818eba588Smrg vendor=oki 669b9bb67cbSmrg ;; 67018eba588Smrg op60c) 67118eba588Smrg cpu=hppa1.1 67218eba588Smrg vendor=oki 673b9bb67cbSmrg ;; 67418eba588Smrg ibm*) 67518eba588Smrg cpu=i370 67618eba588Smrg vendor=ibm 677b9bb67cbSmrg ;; 67818eba588Smrg orion105) 67918eba588Smrg cpu=clipper 68018eba588Smrg vendor=highlevel 681b9bb67cbSmrg ;; 68218eba588Smrg mac | mpw | mac-mpw) 68318eba588Smrg cpu=m68k 68418eba588Smrg vendor=apple 685b9bb67cbSmrg ;; 68618eba588Smrg pmac | pmac-mpw) 68718eba588Smrg cpu=powerpc 68818eba588Smrg vendor=apple 689b9bb67cbSmrg ;; 690b9bb67cbSmrg 691b9bb67cbSmrg # Recognize the various machine names and aliases which stand 692b9bb67cbSmrg # for a CPU type and a company and sometimes even an OS. 693b9bb67cbSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69418eba588Smrg cpu=m68000 69518eba588Smrg vendor=att 696b9bb67cbSmrg ;; 697b9bb67cbSmrg 3b*) 69818eba588Smrg cpu=we32k 69918eba588Smrg vendor=att 700b9bb67cbSmrg ;; 701b5d2086dSmrg bluegene*) 70218eba588Smrg cpu=powerpc 70318eba588Smrg vendor=ibm 70418eba588Smrg basic_os=cnk 705b9bb67cbSmrg ;; 706b9bb67cbSmrg decsystem10* | dec10*) 70718eba588Smrg cpu=pdp10 70818eba588Smrg vendor=dec 70918eba588Smrg basic_os=tops10 710b9bb67cbSmrg ;; 711b9bb67cbSmrg decsystem20* | dec20*) 71218eba588Smrg cpu=pdp10 71318eba588Smrg vendor=dec 71418eba588Smrg basic_os=tops20 715b9bb67cbSmrg ;; 716b9bb67cbSmrg delta | 3300 | motorola-3300 | motorola-delta \ 717b9bb67cbSmrg | 3300-motorola | delta-motorola) 71818eba588Smrg cpu=m68k 71918eba588Smrg vendor=motorola 720b9bb67cbSmrg ;; 72118eba588Smrg dpx2*) 72218eba588Smrg cpu=m68k 72318eba588Smrg vendor=bull 72418eba588Smrg basic_os=sysv3 725b9bb67cbSmrg ;; 726b9bb67cbSmrg encore | umax | mmax) 72718eba588Smrg cpu=ns32k 72818eba588Smrg vendor=encore 729b9bb67cbSmrg ;; 73018eba588Smrg elxsi) 73118eba588Smrg cpu=elxsi 73218eba588Smrg vendor=elxsi 73318eba588Smrg basic_os=${basic_os:-bsd} 734b9bb67cbSmrg ;; 735b9bb67cbSmrg fx2800) 73618eba588Smrg cpu=i860 73718eba588Smrg vendor=alliant 738b9bb67cbSmrg ;; 739b9bb67cbSmrg genix) 74018eba588Smrg cpu=ns32k 74118eba588Smrg vendor=ns 742b9bb67cbSmrg ;; 743b9bb67cbSmrg h3050r* | hiux*) 74418eba588Smrg cpu=hppa1.1 74518eba588Smrg vendor=hitachi 74618eba588Smrg basic_os=hiuxwe2 747b9bb67cbSmrg ;; 748b9bb67cbSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74918eba588Smrg cpu=hppa1.0 75018eba588Smrg vendor=hp 751b9bb67cbSmrg ;; 752b9bb67cbSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 75318eba588Smrg cpu=m68000 75418eba588Smrg vendor=hp 755b9bb67cbSmrg ;; 756b9bb67cbSmrg hp9k3[2-9][0-9]) 75718eba588Smrg cpu=m68k 75818eba588Smrg vendor=hp 759b9bb67cbSmrg ;; 760b9bb67cbSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76118eba588Smrg cpu=hppa1.0 76218eba588Smrg vendor=hp 763b9bb67cbSmrg ;; 764b9bb67cbSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76518eba588Smrg cpu=hppa1.1 76618eba588Smrg vendor=hp 767b9bb67cbSmrg ;; 768b9bb67cbSmrg hp9k78[0-9] | hp78[0-9]) 769b9bb67cbSmrg # FIXME: really hppa2.0-hp 77018eba588Smrg cpu=hppa1.1 77118eba588Smrg vendor=hp 772b9bb67cbSmrg ;; 773b9bb67cbSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774b9bb67cbSmrg # FIXME: really hppa2.0-hp 77518eba588Smrg cpu=hppa1.1 77618eba588Smrg vendor=hp 777b9bb67cbSmrg ;; 778b9bb67cbSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 77918eba588Smrg cpu=hppa1.1 78018eba588Smrg vendor=hp 781b9bb67cbSmrg ;; 782b9bb67cbSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78318eba588Smrg cpu=hppa1.0 78418eba588Smrg vendor=hp 785b9bb67cbSmrg ;; 786b9bb67cbSmrg i*86v32) 78718eba588Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78818eba588Smrg vendor=pc 78918eba588Smrg basic_os=sysv32 790b9bb67cbSmrg ;; 791b9bb67cbSmrg i*86v4*) 79218eba588Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79318eba588Smrg vendor=pc 79418eba588Smrg basic_os=sysv4 795b9bb67cbSmrg ;; 796b9bb67cbSmrg i*86v) 79718eba588Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79818eba588Smrg vendor=pc 79918eba588Smrg basic_os=sysv 800b9bb67cbSmrg ;; 801b9bb67cbSmrg i*86sol2) 80218eba588Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80318eba588Smrg vendor=pc 80418eba588Smrg basic_os=solaris2 805b9bb67cbSmrg ;; 80618eba588Smrg j90 | j90-cray) 80718eba588Smrg cpu=j90 80818eba588Smrg vendor=cray 80918eba588Smrg basic_os=${basic_os:-unicos} 810b9bb67cbSmrg ;; 811b9bb67cbSmrg iris | iris4d) 81218eba588Smrg cpu=mips 81318eba588Smrg vendor=sgi 81418eba588Smrg case $basic_os in 81518eba588Smrg irix*) 816b9bb67cbSmrg ;; 817b9bb67cbSmrg *) 81818eba588Smrg basic_os=irix4 819b9bb67cbSmrg ;; 820b9bb67cbSmrg esac 821b9bb67cbSmrg ;; 822b9bb67cbSmrg miniframe) 82318eba588Smrg cpu=m68000 82418eba588Smrg vendor=convergent 825b9bb67cbSmrg ;; 82618eba588Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82718eba588Smrg cpu=m68k 82818eba588Smrg vendor=atari 82918eba588Smrg basic_os=mint 830b9bb67cbSmrg ;; 831b9bb67cbSmrg news-3600 | risc-news) 83218eba588Smrg cpu=mips 83318eba588Smrg vendor=sony 83418eba588Smrg basic_os=newsos 83518eba588Smrg ;; 83618eba588Smrg next | m*-next) 83718eba588Smrg cpu=m68k 83818eba588Smrg vendor=next 83918eba588Smrg case $basic_os in 84018eba588Smrg openstep*) 84118eba588Smrg ;; 84218eba588Smrg nextstep*) 843b9bb67cbSmrg ;; 84418eba588Smrg ns2*) 84518eba588Smrg basic_os=nextstep2 846b9bb67cbSmrg ;; 847b9bb67cbSmrg *) 84818eba588Smrg basic_os=nextstep3 849b9bb67cbSmrg ;; 850b9bb67cbSmrg esac 851b9bb67cbSmrg ;; 852b9bb67cbSmrg np1) 85318eba588Smrg cpu=np1 85418eba588Smrg vendor=gould 855b9bb67cbSmrg ;; 856b9bb67cbSmrg op50n-* | op60c-*) 85718eba588Smrg cpu=hppa1.1 85818eba588Smrg vendor=oki 85918eba588Smrg basic_os=proelf 860b9bb67cbSmrg ;; 861b9bb67cbSmrg pa-hitachi) 86218eba588Smrg cpu=hppa1.1 86318eba588Smrg vendor=hitachi 86418eba588Smrg basic_os=hiuxwe2 865b9bb67cbSmrg ;; 866b9bb67cbSmrg pbd) 86718eba588Smrg cpu=sparc 86818eba588Smrg vendor=tti 869b9bb67cbSmrg ;; 870b9bb67cbSmrg pbb) 87118eba588Smrg cpu=m68k 87218eba588Smrg vendor=tti 873b9bb67cbSmrg ;; 87418eba588Smrg pc532) 87518eba588Smrg cpu=ns32k 87618eba588Smrg vendor=pc532 877b9bb67cbSmrg ;; 878b9bb67cbSmrg pn) 87918eba588Smrg cpu=pn 88018eba588Smrg vendor=gould 881b9bb67cbSmrg ;; 88218eba588Smrg power) 88318eba588Smrg cpu=power 88418eba588Smrg vendor=ibm 885b9bb67cbSmrg ;; 886b9bb67cbSmrg ps2) 88718eba588Smrg cpu=i386 88818eba588Smrg vendor=ibm 889b9bb67cbSmrg ;; 890b9bb67cbSmrg rm[46]00) 89118eba588Smrg cpu=mips 89218eba588Smrg vendor=siemens 893b9bb67cbSmrg ;; 894b9bb67cbSmrg rtpc | rtpc-*) 89518eba588Smrg cpu=romp 89618eba588Smrg vendor=ibm 897b9bb67cbSmrg ;; 89818eba588Smrg sde) 89918eba588Smrg cpu=mipsisa32 90018eba588Smrg vendor=sde 90118eba588Smrg basic_os=${basic_os:-elf} 902b9bb67cbSmrg ;; 90318eba588Smrg simso-wrs) 90418eba588Smrg cpu=sparclite 90518eba588Smrg vendor=wrs 90618eba588Smrg basic_os=vxworks 907b9bb67cbSmrg ;; 90818eba588Smrg tower | tower-32) 90918eba588Smrg cpu=m68k 91018eba588Smrg vendor=ncr 911b9bb67cbSmrg ;; 91218eba588Smrg vpp*|vx|vx-*) 91318eba588Smrg cpu=f301 91418eba588Smrg vendor=fujitsu 915b9bb67cbSmrg ;; 91618eba588Smrg w65) 91718eba588Smrg cpu=w65 91818eba588Smrg vendor=wdc 919b9bb67cbSmrg ;; 92018eba588Smrg w89k-*) 92118eba588Smrg cpu=hppa1.1 92218eba588Smrg vendor=winbond 92318eba588Smrg basic_os=proelf 924b9bb67cbSmrg ;; 92518eba588Smrg none) 92618eba588Smrg cpu=none 92718eba588Smrg vendor=none 928b9bb67cbSmrg ;; 92918eba588Smrg leon|leon[3-9]) 93018eba588Smrg cpu=sparc 93118eba588Smrg vendor=$basic_machine 932b9bb67cbSmrg ;; 93318eba588Smrg leon-*|leon[3-9]-*) 93418eba588Smrg cpu=sparc 93518eba588Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936b9bb67cbSmrg ;; 93718eba588Smrg 93818eba588Smrg *-*) 93918eba588Smrg # shellcheck disable=SC2162 94018eba588Smrg saved_IFS=$IFS 94118eba588Smrg IFS="-" read cpu vendor <<EOF 94218eba588Smrg$basic_machine 94318eba588SmrgEOF 94418eba588Smrg IFS=$saved_IFS 945b9bb67cbSmrg ;; 94618eba588Smrg # We use `pc' rather than `unknown' 94718eba588Smrg # because (1) that's what they normally are, and 94818eba588Smrg # (2) the word "unknown" tends to confuse beginning users. 94918eba588Smrg i*86 | x86_64) 95018eba588Smrg cpu=$basic_machine 95118eba588Smrg vendor=pc 952b9bb67cbSmrg ;; 95318eba588Smrg # These rules are duplicated from below for sake of the special case above; 95418eba588Smrg # i.e. things that normalized to x86 arches should also default to "pc" 95518eba588Smrg pc98) 95618eba588Smrg cpu=i386 95718eba588Smrg vendor=pc 958b9bb67cbSmrg ;; 95918eba588Smrg x64 | amd64) 96018eba588Smrg cpu=x86_64 96118eba588Smrg vendor=pc 962b9bb67cbSmrg ;; 96318eba588Smrg # Recognize the basic CPU types without company name. 96418eba588Smrg *) 96518eba588Smrg cpu=$basic_machine 96618eba588Smrg vendor=unknown 967b9bb67cbSmrg ;; 96818eba588Smrgesac 96918eba588Smrg 97018eba588Smrgunset -v basic_machine 97118eba588Smrg 97218eba588Smrg# Decode basic machines in the full and proper CPU-Company form. 97318eba588Smrgcase $cpu-$vendor in 97418eba588Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97518eba588Smrg # some cases the only manufacturer, in others, it is the most popular. 97618eba588Smrg craynv-unknown) 97718eba588Smrg vendor=cray 97818eba588Smrg basic_os=${basic_os:-unicosmp} 979b9bb67cbSmrg ;; 98018eba588Smrg c90-unknown | c90-cray) 98118eba588Smrg vendor=cray 98218eba588Smrg basic_os=${Basic_os:-unicos} 983b9bb67cbSmrg ;; 98418eba588Smrg fx80-unknown) 98518eba588Smrg vendor=alliant 986b9bb67cbSmrg ;; 98718eba588Smrg romp-unknown) 98818eba588Smrg vendor=ibm 989b9bb67cbSmrg ;; 99018eba588Smrg mmix-unknown) 99118eba588Smrg vendor=knuth 992b9bb67cbSmrg ;; 99318eba588Smrg microblaze-unknown | microblazeel-unknown) 99418eba588Smrg vendor=xilinx 995b9bb67cbSmrg ;; 99618eba588Smrg rs6000-unknown) 99718eba588Smrg vendor=ibm 998b9bb67cbSmrg ;; 99918eba588Smrg vax-unknown) 100018eba588Smrg vendor=dec 1001b9bb67cbSmrg ;; 100218eba588Smrg pdp11-unknown) 100318eba588Smrg vendor=dec 1004b9bb67cbSmrg ;; 100518eba588Smrg we32k-unknown) 100618eba588Smrg vendor=att 1007b9bb67cbSmrg ;; 100818eba588Smrg cydra-unknown) 100918eba588Smrg vendor=cydrome 1010b9bb67cbSmrg ;; 101118eba588Smrg i370-ibm*) 101218eba588Smrg vendor=ibm 1013b9bb67cbSmrg ;; 101418eba588Smrg orion-unknown) 101518eba588Smrg vendor=highlevel 1016b9bb67cbSmrg ;; 101718eba588Smrg xps-unknown | xps100-unknown) 101818eba588Smrg cpu=xps100 101918eba588Smrg vendor=honeywell 1020b9bb67cbSmrg ;; 102118eba588Smrg 102218eba588Smrg # Here we normalize CPU types with a missing or matching vendor 102318eba588Smrg armh-unknown | armh-alt) 102418eba588Smrg cpu=armv7l 102518eba588Smrg vendor=alt 102618eba588Smrg basic_os=${basic_os:-linux-gnueabihf} 1027b9bb67cbSmrg ;; 102818eba588Smrg dpx20-unknown | dpx20-bull) 102918eba588Smrg cpu=rs6000 103018eba588Smrg vendor=bull 103118eba588Smrg basic_os=${basic_os:-bosx} 1032b9bb67cbSmrg ;; 103318eba588Smrg 103418eba588Smrg # Here we normalize CPU types irrespective of the vendor 103518eba588Smrg amd64-*) 103618eba588Smrg cpu=x86_64 1037b9bb67cbSmrg ;; 103818eba588Smrg blackfin-*) 103918eba588Smrg cpu=bfin 104018eba588Smrg basic_os=linux 1041b9bb67cbSmrg ;; 104218eba588Smrg c54x-*) 104318eba588Smrg cpu=tic54x 1044b9bb67cbSmrg ;; 104518eba588Smrg c55x-*) 104618eba588Smrg cpu=tic55x 1047b9bb67cbSmrg ;; 104818eba588Smrg c6x-*) 104918eba588Smrg cpu=tic6x 1050b9bb67cbSmrg ;; 105118eba588Smrg e500v[12]-*) 105218eba588Smrg cpu=powerpc 105318eba588Smrg basic_os=${basic_os}"spe" 1054b9bb67cbSmrg ;; 105518eba588Smrg mips3*-*) 105618eba588Smrg cpu=mips64 1057b9bb67cbSmrg ;; 105818eba588Smrg ms1-*) 105918eba588Smrg cpu=mt 1060b9bb67cbSmrg ;; 106118eba588Smrg m68knommu-*) 106218eba588Smrg cpu=m68k 106318eba588Smrg basic_os=linux 1064b9bb67cbSmrg ;; 106518eba588Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106618eba588Smrg cpu=s12z 1067b9bb67cbSmrg ;; 106818eba588Smrg openrisc-*) 106918eba588Smrg cpu=or32 1070b9bb67cbSmrg ;; 107118eba588Smrg parisc-*) 107218eba588Smrg cpu=hppa 107318eba588Smrg basic_os=linux 1074b9bb67cbSmrg ;; 107518eba588Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107618eba588Smrg cpu=i586 1077b9bb67cbSmrg ;; 107818eba588Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 107918eba588Smrg cpu=i686 1080b9bb67cbSmrg ;; 108118eba588Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 108218eba588Smrg cpu=i686 1083b9bb67cbSmrg ;; 108418eba588Smrg pentium4-*) 108518eba588Smrg cpu=i786 1086b9bb67cbSmrg ;; 108718eba588Smrg pc98-*) 108818eba588Smrg cpu=i386 1089b9bb67cbSmrg ;; 109018eba588Smrg ppc-* | ppcbe-*) 109118eba588Smrg cpu=powerpc 1092b9bb67cbSmrg ;; 109318eba588Smrg ppcle-* | powerpclittle-*) 109418eba588Smrg cpu=powerpcle 1095b9bb67cbSmrg ;; 109618eba588Smrg ppc64-*) 109718eba588Smrg cpu=powerpc64 1098b9bb67cbSmrg ;; 109918eba588Smrg ppc64le-* | powerpc64little-*) 110018eba588Smrg cpu=powerpc64le 1101b9bb67cbSmrg ;; 110218eba588Smrg sb1-*) 110318eba588Smrg cpu=mipsisa64sb1 1104b9bb67cbSmrg ;; 110518eba588Smrg sb1el-*) 110618eba588Smrg cpu=mipsisa64sb1el 1107b9bb67cbSmrg ;; 110818eba588Smrg sh5e[lb]-*) 110918eba588Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1110b9bb67cbSmrg ;; 111118eba588Smrg spur-*) 111218eba588Smrg cpu=spur 1113b9bb67cbSmrg ;; 111418eba588Smrg strongarm-* | thumb-*) 111518eba588Smrg cpu=arm 1116b9bb67cbSmrg ;; 111718eba588Smrg tx39-*) 111818eba588Smrg cpu=mipstx39 1119b9bb67cbSmrg ;; 112018eba588Smrg tx39el-*) 112118eba588Smrg cpu=mipstx39el 1122b9bb67cbSmrg ;; 112318eba588Smrg x64-*) 112418eba588Smrg cpu=x86_64 1125b9bb67cbSmrg ;; 112618eba588Smrg xscale-* | xscalee[bl]-*) 112718eba588Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1128b9bb67cbSmrg ;; 112918eba588Smrg arm64-* | aarch64le-*) 113018eba588Smrg cpu=aarch64 1131b9bb67cbSmrg ;; 113218eba588Smrg 113318eba588Smrg # Recognize the canonical CPU Types that limit and/or modify the 113418eba588Smrg # company names they are paired with. 113518eba588Smrg cr16-*) 113618eba588Smrg basic_os=${basic_os:-elf} 1137b9bb67cbSmrg ;; 113818eba588Smrg crisv32-* | etraxfs*-*) 113918eba588Smrg cpu=crisv32 114018eba588Smrg vendor=axis 1141b9bb67cbSmrg ;; 114218eba588Smrg cris-* | etrax*-*) 114318eba588Smrg cpu=cris 114418eba588Smrg vendor=axis 1145b9bb67cbSmrg ;; 114618eba588Smrg crx-*) 114718eba588Smrg basic_os=${basic_os:-elf} 1148b9bb67cbSmrg ;; 114918eba588Smrg neo-tandem) 115018eba588Smrg cpu=neo 115118eba588Smrg vendor=tandem 1152b9bb67cbSmrg ;; 115318eba588Smrg nse-tandem) 115418eba588Smrg cpu=nse 115518eba588Smrg vendor=tandem 1156b9bb67cbSmrg ;; 115718eba588Smrg nsr-tandem) 115818eba588Smrg cpu=nsr 115918eba588Smrg vendor=tandem 1160b9bb67cbSmrg ;; 116118eba588Smrg nsv-tandem) 116218eba588Smrg cpu=nsv 116318eba588Smrg vendor=tandem 1164b9bb67cbSmrg ;; 116518eba588Smrg nsx-tandem) 116618eba588Smrg cpu=nsx 116718eba588Smrg vendor=tandem 1168b9bb67cbSmrg ;; 116918eba588Smrg mipsallegrexel-sony) 117018eba588Smrg cpu=mipsallegrexel 117118eba588Smrg vendor=sony 1172b9bb67cbSmrg ;; 117318eba588Smrg tile*-*) 117418eba588Smrg basic_os=${basic_os:-linux-gnu} 1175b9bb67cbSmrg ;; 117618eba588Smrg 1177b9bb67cbSmrg *) 117818eba588Smrg # Recognize the canonical CPU types that are allowed with any 117918eba588Smrg # company name. 118018eba588Smrg case $cpu in 118118eba588Smrg 1750a | 580 \ 118218eba588Smrg | a29k \ 118318eba588Smrg | aarch64 | aarch64_be \ 118418eba588Smrg | abacus \ 118518eba588Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118618eba588Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118718eba588Smrg | alphapca5[67] | alpha64pca5[67] \ 118818eba588Smrg | am33_2.0 \ 118918eba588Smrg | amdgcn \ 119018eba588Smrg | arc | arceb | arc32 | arc64 \ 119118eba588Smrg | arm | arm[lb]e | arme[lb] | armv* \ 119218eba588Smrg | avr | avr32 \ 119318eba588Smrg | asmjs \ 119418eba588Smrg | ba \ 119518eba588Smrg | be32 | be64 \ 119618eba588Smrg | bfin | bpf | bs2000 \ 119718eba588Smrg | c[123]* | c30 | [cjt]90 | c4x \ 119818eba588Smrg | c8051 | clipper | craynv | csky | cydra \ 119918eba588Smrg | d10v | d30v | dlx | dsp16xx \ 120018eba588Smrg | e2k | elxsi | epiphany \ 120118eba588Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 120218eba588Smrg | h8300 | h8500 \ 120318eba588Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 120418eba588Smrg | hexagon \ 120518eba588Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120618eba588Smrg | ip2k | iq2000 \ 120718eba588Smrg | k1om \ 120818eba588Smrg | le32 | le64 \ 120918eba588Smrg | lm32 \ 121018eba588Smrg | loongarch32 | loongarch64 \ 121118eba588Smrg | m32c | m32r | m32rle \ 121218eba588Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 121318eba588Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 121418eba588Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121518eba588Smrg | microblaze | microblazeel \ 121618eba588Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121718eba588Smrg | mips16 \ 121818eba588Smrg | mips64 | mips64eb | mips64el \ 121918eba588Smrg | mips64octeon | mips64octeonel \ 122018eba588Smrg | mips64orion | mips64orionel \ 122118eba588Smrg | mips64r5900 | mips64r5900el \ 122218eba588Smrg | mips64vr | mips64vrel \ 122318eba588Smrg | mips64vr4100 | mips64vr4100el \ 122418eba588Smrg | mips64vr4300 | mips64vr4300el \ 122518eba588Smrg | mips64vr5000 | mips64vr5000el \ 122618eba588Smrg | mips64vr5900 | mips64vr5900el \ 122718eba588Smrg | mipsisa32 | mipsisa32el \ 122818eba588Smrg | mipsisa32r2 | mipsisa32r2el \ 122918eba588Smrg | mipsisa32r3 | mipsisa32r3el \ 123018eba588Smrg | mipsisa32r5 | mipsisa32r5el \ 123118eba588Smrg | mipsisa32r6 | mipsisa32r6el \ 123218eba588Smrg | mipsisa64 | mipsisa64el \ 123318eba588Smrg | mipsisa64r2 | mipsisa64r2el \ 123418eba588Smrg | mipsisa64r3 | mipsisa64r3el \ 123518eba588Smrg | mipsisa64r5 | mipsisa64r5el \ 123618eba588Smrg | mipsisa64r6 | mipsisa64r6el \ 123718eba588Smrg | mipsisa64sb1 | mipsisa64sb1el \ 123818eba588Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 123918eba588Smrg | mipsr5900 | mipsr5900el \ 124018eba588Smrg | mipstx39 | mipstx39el \ 124118eba588Smrg | mmix \ 124218eba588Smrg | mn10200 | mn10300 \ 124318eba588Smrg | moxie \ 124418eba588Smrg | mt \ 124518eba588Smrg | msp430 \ 124618eba588Smrg | nds32 | nds32le | nds32be \ 124718eba588Smrg | nfp \ 124818eba588Smrg | nios | nios2 | nios2eb | nios2el \ 124918eba588Smrg | none | np1 | ns16k | ns32k | nvptx \ 125018eba588Smrg | open8 \ 125118eba588Smrg | or1k* \ 125218eba588Smrg | or32 \ 125318eba588Smrg | orion \ 125418eba588Smrg | picochip \ 125518eba588Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125618eba588Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125718eba588Smrg | pru \ 125818eba588Smrg | pyramid \ 125918eba588Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 126018eba588Smrg | rl78 | romp | rs6000 | rx \ 126118eba588Smrg | s390 | s390x \ 126218eba588Smrg | score \ 126318eba588Smrg | sh | shl \ 126418eba588Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126518eba588Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126618eba588Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126718eba588Smrg | sparclite \ 126818eba588Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126918eba588Smrg | spu \ 127018eba588Smrg | tahoe \ 127118eba588Smrg | thumbv7* \ 127218eba588Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 127318eba588Smrg | tron \ 127418eba588Smrg | ubicom32 \ 127518eba588Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127618eba588Smrg | vax \ 127718eba588Smrg | visium \ 127818eba588Smrg | w65 \ 127918eba588Smrg | wasm32 | wasm64 \ 128018eba588Smrg | we32k \ 128118eba588Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 128218eba588Smrg | xstormy16 | xtensa* \ 128318eba588Smrg | ymp \ 128418eba588Smrg | z8k | z80) 128518eba588Smrg ;; 128618eba588Smrg 128718eba588Smrg *) 128818eba588Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128918eba588Smrg exit 1 129018eba588Smrg ;; 129118eba588Smrg esac 1292b9bb67cbSmrg ;; 1293b9bb67cbSmrgesac 1294b9bb67cbSmrg 1295b9bb67cbSmrg# Here we canonicalize certain aliases for manufacturers. 129618eba588Smrgcase $vendor in 129718eba588Smrg digital*) 129818eba588Smrg vendor=dec 1299b9bb67cbSmrg ;; 130018eba588Smrg commodore*) 130118eba588Smrg vendor=cbm 1302b9bb67cbSmrg ;; 1303b9bb67cbSmrg *) 1304b9bb67cbSmrg ;; 1305b9bb67cbSmrgesac 1306b9bb67cbSmrg 1307b9bb67cbSmrg# Decode manufacturer-specific aliases for certain operating systems. 1308b9bb67cbSmrg 130918eba588Smrgif test x$basic_os != x 1310b9bb67cbSmrgthen 131118eba588Smrg 131218eba588Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 131318eba588Smrg# set os. 131418eba588Smrgcase $basic_os in 131518eba588Smrg gnu/linux*) 131618eba588Smrg kernel=linux 131718eba588Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131818eba588Smrg ;; 131918eba588Smrg os2-emx) 132018eba588Smrg kernel=os2 132118eba588Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 132218eba588Smrg ;; 132318eba588Smrg nto-qnx*) 132418eba588Smrg kernel=nto 132518eba588Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132618eba588Smrg ;; 132718eba588Smrg *-*) 132818eba588Smrg # shellcheck disable=SC2162 132918eba588Smrg saved_IFS=$IFS 133018eba588Smrg IFS="-" read kernel os <<EOF 133118eba588Smrg$basic_os 133218eba588SmrgEOF 133318eba588Smrg IFS=$saved_IFS 133418eba588Smrg ;; 133518eba588Smrg # Default OS when just kernel was specified 133618eba588Smrg nto*) 133718eba588Smrg kernel=nto 133818eba588Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133918eba588Smrg ;; 134018eba588Smrg linux*) 134118eba588Smrg kernel=linux 134218eba588Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 134318eba588Smrg ;; 134418eba588Smrg managarm*) 134518eba588Smrg kernel=managarm 134618eba588Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 134718eba588Smrg ;; 134818eba588Smrg *) 134918eba588Smrg kernel= 135018eba588Smrg os=$basic_os 135118eba588Smrg ;; 135218eba588Smrgesac 135318eba588Smrg 135418eba588Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 135518eba588Smrg# etc.) 1356b9bb67cbSmrgcase $os in 135718eba588Smrg # First match some system type aliases that might get confused 135818eba588Smrg # with valid system types. 135918eba588Smrg # solaris* is a basic system type, with this one exception. 136018eba588Smrg auroraux) 136118eba588Smrg os=auroraux 1362b5d2086dSmrg ;; 136318eba588Smrg bluegene*) 136418eba588Smrg os=cnk 1365b9bb67cbSmrg ;; 136618eba588Smrg solaris1 | solaris1.*) 136718eba588Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1368b9bb67cbSmrg ;; 136918eba588Smrg solaris) 137018eba588Smrg os=solaris2 1371b9bb67cbSmrg ;; 137218eba588Smrg unixware*) 137318eba588Smrg os=sysv4.2uw 1374b9bb67cbSmrg ;; 137518eba588Smrg # es1800 is here to avoid being matched by es* (a different OS) 137618eba588Smrg es1800*) 137718eba588Smrg os=ose 1378b9bb67cbSmrg ;; 137918eba588Smrg # Some version numbers need modification 138018eba588Smrg chorusos*) 138118eba588Smrg os=chorusos 1382b9bb67cbSmrg ;; 138318eba588Smrg isc) 138418eba588Smrg os=isc2.2 1385b9bb67cbSmrg ;; 138618eba588Smrg sco6) 138718eba588Smrg os=sco5v6 1388b9bb67cbSmrg ;; 138918eba588Smrg sco5) 139018eba588Smrg os=sco3.2v5 1391b9bb67cbSmrg ;; 139218eba588Smrg sco4) 139318eba588Smrg os=sco3.2v4 1394b9bb67cbSmrg ;; 139518eba588Smrg sco3.2.[4-9]*) 139618eba588Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1397b9bb67cbSmrg ;; 139818eba588Smrg sco*v* | scout) 139918eba588Smrg # Don't match below 1400b9bb67cbSmrg ;; 140118eba588Smrg sco*) 140218eba588Smrg os=sco3.2v2 1403b9bb67cbSmrg ;; 140418eba588Smrg psos*) 140518eba588Smrg os=psos 1406b9bb67cbSmrg ;; 140718eba588Smrg qnx*) 140818eba588Smrg os=qnx 1409b9bb67cbSmrg ;; 141018eba588Smrg hiux*) 141118eba588Smrg os=hiuxwe2 1412b9bb67cbSmrg ;; 141318eba588Smrg lynx*178) 141418eba588Smrg os=lynxos178 1415b9bb67cbSmrg ;; 141618eba588Smrg lynx*5) 141718eba588Smrg os=lynxos5 1418b9bb67cbSmrg ;; 141918eba588Smrg lynxos*) 142018eba588Smrg # don't get caught up in next wildcard 1421b9bb67cbSmrg ;; 142218eba588Smrg lynx*) 142318eba588Smrg os=lynxos 1424b9bb67cbSmrg ;; 142518eba588Smrg mac[0-9]*) 142618eba588Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1427b9bb67cbSmrg ;; 142818eba588Smrg opened*) 142918eba588Smrg os=openedition 1430b9bb67cbSmrg ;; 143118eba588Smrg os400*) 143218eba588Smrg os=os400 1433b9bb67cbSmrg ;; 143418eba588Smrg sunos5*) 143518eba588Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1436b9bb67cbSmrg ;; 143718eba588Smrg sunos6*) 143818eba588Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1439b9bb67cbSmrg ;; 144018eba588Smrg wince*) 144118eba588Smrg os=wince 1442b9bb67cbSmrg ;; 144318eba588Smrg utek*) 144418eba588Smrg os=bsd 1445b9bb67cbSmrg ;; 144618eba588Smrg dynix*) 144718eba588Smrg os=bsd 1448b9bb67cbSmrg ;; 144918eba588Smrg acis*) 145018eba588Smrg os=aos 1451b9bb67cbSmrg ;; 145218eba588Smrg atheos*) 145318eba588Smrg os=atheos 1454b9bb67cbSmrg ;; 145518eba588Smrg syllable*) 145618eba588Smrg os=syllable 1457b9bb67cbSmrg ;; 145818eba588Smrg 386bsd) 145918eba588Smrg os=bsd 1460b9bb67cbSmrg ;; 146118eba588Smrg ctix* | uts*) 146218eba588Smrg os=sysv 1463b9bb67cbSmrg ;; 146418eba588Smrg nova*) 146518eba588Smrg os=rtmk-nova 1466b9bb67cbSmrg ;; 146718eba588Smrg ns2) 146818eba588Smrg os=nextstep2 1469b9bb67cbSmrg ;; 147018eba588Smrg # Preserve the version number of sinix5. 147118eba588Smrg sinix5.*) 147218eba588Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1473b9bb67cbSmrg ;; 147418eba588Smrg sinix*) 147518eba588Smrg os=sysv4 1476b9bb67cbSmrg ;; 147718eba588Smrg tpf*) 147818eba588Smrg os=tpf 1479b9bb67cbSmrg ;; 148018eba588Smrg triton*) 148118eba588Smrg os=sysv3 1482b9bb67cbSmrg ;; 148318eba588Smrg oss*) 148418eba588Smrg os=sysv3 1485b9bb67cbSmrg ;; 148618eba588Smrg svr4*) 148718eba588Smrg os=sysv4 1488b9bb67cbSmrg ;; 148918eba588Smrg svr3) 149018eba588Smrg os=sysv3 1491b9bb67cbSmrg ;; 149218eba588Smrg sysvr4) 149318eba588Smrg os=sysv4 1494b9bb67cbSmrg ;; 149518eba588Smrg ose*) 149618eba588Smrg os=ose 1497b9bb67cbSmrg ;; 149818eba588Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149918eba588Smrg os=mint 1500b9bb67cbSmrg ;; 150118eba588Smrg dicos*) 150218eba588Smrg os=dicos 1503b9bb67cbSmrg ;; 150418eba588Smrg pikeos*) 150518eba588Smrg # Until real need of OS specific support for 150618eba588Smrg # particular features comes up, bare metal 150718eba588Smrg # configurations are quite functional. 150818eba588Smrg case $cpu in 150918eba588Smrg arm*) 151018eba588Smrg os=eabi 151118eba588Smrg ;; 151218eba588Smrg *) 151318eba588Smrg os=elf 151418eba588Smrg ;; 151518eba588Smrg esac 1516b9bb67cbSmrg ;; 1517b9bb67cbSmrg *) 151818eba588Smrg # No normalization, but not necessarily accepted, that comes below. 1519b9bb67cbSmrg ;; 1520b9bb67cbSmrgesac 152118eba588Smrg 1522b9bb67cbSmrgelse 1523b9bb67cbSmrg 1524b9bb67cbSmrg# Here we handle the default operating systems that come with various machines. 1525b9bb67cbSmrg# The value should be what the vendor currently ships out the door with their 1526b9bb67cbSmrg# machine or put another way, the most popular os provided with the machine. 1527b9bb67cbSmrg 1528b9bb67cbSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1529b9bb67cbSmrg# "-sun"), then you have to tell the case statement up towards the top 1530b9bb67cbSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1531b9bb67cbSmrg# will signal an error saying that MANUFACTURER isn't an operating 1532b9bb67cbSmrg# system, and we'll never get to this point. 1533b9bb67cbSmrg 153418eba588Smrgkernel= 153518eba588Smrgcase $cpu-$vendor in 153618eba588Smrg score-*) 153718eba588Smrg os=elf 1538b9bb67cbSmrg ;; 153918eba588Smrg spu-*) 154018eba588Smrg os=elf 1541b9bb67cbSmrg ;; 1542b9bb67cbSmrg *-acorn) 154318eba588Smrg os=riscix1.2 1544b9bb67cbSmrg ;; 1545b9bb67cbSmrg arm*-rebel) 154618eba588Smrg kernel=linux 154718eba588Smrg os=gnu 1548b9bb67cbSmrg ;; 1549b9bb67cbSmrg arm*-semi) 155018eba588Smrg os=aout 155118eba588Smrg ;; 155218eba588Smrg c4x-* | tic4x-*) 155318eba588Smrg os=coff 155418eba588Smrg ;; 155518eba588Smrg c8051-*) 155618eba588Smrg os=elf 155718eba588Smrg ;; 155818eba588Smrg clipper-intergraph) 155918eba588Smrg os=clix 1560b9bb67cbSmrg ;; 156118eba588Smrg hexagon-*) 156218eba588Smrg os=elf 1563b9bb67cbSmrg ;; 1564b5d2086dSmrg tic54x-*) 156518eba588Smrg os=coff 1566b5d2086dSmrg ;; 1567b5d2086dSmrg tic55x-*) 156818eba588Smrg os=coff 1569b5d2086dSmrg ;; 1570b5d2086dSmrg tic6x-*) 157118eba588Smrg os=coff 1572b5d2086dSmrg ;; 1573b9bb67cbSmrg # This must come before the *-dec entry. 1574b9bb67cbSmrg pdp10-*) 157518eba588Smrg os=tops20 1576b9bb67cbSmrg ;; 1577b9bb67cbSmrg pdp11-*) 157818eba588Smrg os=none 1579b9bb67cbSmrg ;; 1580b9bb67cbSmrg *-dec | vax-*) 158118eba588Smrg os=ultrix4.2 1582b9bb67cbSmrg ;; 1583b9bb67cbSmrg m68*-apollo) 158418eba588Smrg os=domain 1585b9bb67cbSmrg ;; 1586b9bb67cbSmrg i386-sun) 158718eba588Smrg os=sunos4.0.2 1588b9bb67cbSmrg ;; 1589b9bb67cbSmrg m68000-sun) 159018eba588Smrg os=sunos3 1591b9bb67cbSmrg ;; 1592b9bb67cbSmrg m68*-cisco) 159318eba588Smrg os=aout 1594b9bb67cbSmrg ;; 159518eba588Smrg mep-*) 159618eba588Smrg os=elf 1597b9bb67cbSmrg ;; 1598b9bb67cbSmrg mips*-cisco) 159918eba588Smrg os=elf 1600b9bb67cbSmrg ;; 1601b9bb67cbSmrg mips*-*) 160218eba588Smrg os=elf 1603b9bb67cbSmrg ;; 1604b9bb67cbSmrg or32-*) 160518eba588Smrg os=coff 1606b9bb67cbSmrg ;; 1607b9bb67cbSmrg *-tti) # must be before sparc entry or we get the wrong os. 160818eba588Smrg os=sysv3 1609b9bb67cbSmrg ;; 1610b9bb67cbSmrg sparc-* | *-sun) 161118eba588Smrg os=sunos4.1.1 1612b9bb67cbSmrg ;; 161318eba588Smrg pru-*) 161418eba588Smrg os=elf 1615b9bb67cbSmrg ;; 161618eba588Smrg *-be) 161718eba588Smrg os=beos 1618b9bb67cbSmrg ;; 1619b9bb67cbSmrg *-ibm) 162018eba588Smrg os=aix 1621b9bb67cbSmrg ;; 162218eba588Smrg *-knuth) 162318eba588Smrg os=mmixware 1624b9bb67cbSmrg ;; 1625b9bb67cbSmrg *-wec) 162618eba588Smrg os=proelf 1627b9bb67cbSmrg ;; 1628b9bb67cbSmrg *-winbond) 162918eba588Smrg os=proelf 1630b9bb67cbSmrg ;; 1631b9bb67cbSmrg *-oki) 163218eba588Smrg os=proelf 1633b9bb67cbSmrg ;; 1634b9bb67cbSmrg *-hp) 163518eba588Smrg os=hpux 1636b9bb67cbSmrg ;; 1637b9bb67cbSmrg *-hitachi) 163818eba588Smrg os=hiux 1639b9bb67cbSmrg ;; 1640b9bb67cbSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 164118eba588Smrg os=sysv 1642b9bb67cbSmrg ;; 1643b9bb67cbSmrg *-cbm) 164418eba588Smrg os=amigaos 1645b9bb67cbSmrg ;; 1646b9bb67cbSmrg *-dg) 164718eba588Smrg os=dgux 1648b9bb67cbSmrg ;; 1649b9bb67cbSmrg *-dolphin) 165018eba588Smrg os=sysv3 1651b9bb67cbSmrg ;; 1652b9bb67cbSmrg m68k-ccur) 165318eba588Smrg os=rtu 1654b9bb67cbSmrg ;; 1655b9bb67cbSmrg m88k-omron*) 165618eba588Smrg os=luna 1657b9bb67cbSmrg ;; 165818eba588Smrg *-next) 165918eba588Smrg os=nextstep 1660b9bb67cbSmrg ;; 1661b9bb67cbSmrg *-sequent) 166218eba588Smrg os=ptx 1663b9bb67cbSmrg ;; 1664b9bb67cbSmrg *-crds) 166518eba588Smrg os=unos 1666b9bb67cbSmrg ;; 1667b9bb67cbSmrg *-ns) 166818eba588Smrg os=genix 1669b9bb67cbSmrg ;; 1670b9bb67cbSmrg i370-*) 167118eba588Smrg os=mvs 1672b9bb67cbSmrg ;; 1673b9bb67cbSmrg *-gould) 167418eba588Smrg os=sysv 1675b9bb67cbSmrg ;; 1676b9bb67cbSmrg *-highlevel) 167718eba588Smrg os=bsd 1678b9bb67cbSmrg ;; 1679b9bb67cbSmrg *-encore) 168018eba588Smrg os=bsd 1681b9bb67cbSmrg ;; 1682b9bb67cbSmrg *-sgi) 168318eba588Smrg os=irix 1684b9bb67cbSmrg ;; 1685b9bb67cbSmrg *-siemens) 168618eba588Smrg os=sysv4 1687b9bb67cbSmrg ;; 1688b9bb67cbSmrg *-masscomp) 168918eba588Smrg os=rtu 1690b9bb67cbSmrg ;; 1691b9bb67cbSmrg f30[01]-fujitsu | f700-fujitsu) 169218eba588Smrg os=uxpv 1693b9bb67cbSmrg ;; 1694b9bb67cbSmrg *-rom68k) 169518eba588Smrg os=coff 1696b9bb67cbSmrg ;; 1697b9bb67cbSmrg *-*bug) 169818eba588Smrg os=coff 1699b9bb67cbSmrg ;; 1700b9bb67cbSmrg *-apple) 170118eba588Smrg os=macos 1702b9bb67cbSmrg ;; 1703b9bb67cbSmrg *-atari*) 170418eba588Smrg os=mint 170518eba588Smrg ;; 170618eba588Smrg *-wrs) 170718eba588Smrg os=vxworks 1708b9bb67cbSmrg ;; 1709b9bb67cbSmrg *) 171018eba588Smrg os=none 1711b9bb67cbSmrg ;; 1712b9bb67cbSmrgesac 171318eba588Smrg 1714b9bb67cbSmrgfi 1715b9bb67cbSmrg 171618eba588Smrg# Now, validate our (potentially fixed-up) OS. 171718eba588Smrgcase $os in 171818eba588Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171918eba588Smrg musl* | newlib* | relibc* | uclibc*) 172018eba588Smrg ;; 172118eba588Smrg # Likewise for "kernel-abi" 172218eba588Smrg eabi* | gnueabi*) 172318eba588Smrg ;; 172418eba588Smrg # VxWorks passes extra cpu info in the 4th filed. 172518eba588Smrg simlinux | simwindows | spe) 172618eba588Smrg ;; 172718eba588Smrg # Now accept the basic system types. 172818eba588Smrg # The portable systems comes first. 172918eba588Smrg # Each alternative MUST end in a * to match a version number. 173018eba588Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 173118eba588Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 173218eba588Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 173318eba588Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 173418eba588Smrg | hiux* | abug | nacl* | netware* | windows* \ 173518eba588Smrg | os9* | macos* | osx* | ios* \ 173618eba588Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 173718eba588Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 173818eba588Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173918eba588Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 174018eba588Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 174118eba588Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 174218eba588Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 174318eba588Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 174418eba588Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 174518eba588Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 174618eba588Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 174718eba588Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 174818eba588Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174918eba588Smrg | midipix* | mingw32* | mingw64* | mint* \ 175018eba588Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 175118eba588Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 175218eba588Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 175318eba588Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 175418eba588Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 175518eba588Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 175618eba588Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 175718eba588Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 175818eba588Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175918eba588Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 176018eba588Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 176118eba588Smrg | fiwix* | mlibc* ) 176218eba588Smrg ;; 176318eba588Smrg # This one is extra strict with allowed versions 176418eba588Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 176518eba588Smrg # Don't forget version if it is 3.2v4 or newer. 176618eba588Smrg ;; 176718eba588Smrg none) 176818eba588Smrg ;; 176918eba588Smrg kernel* ) 177018eba588Smrg # Restricted further below 177118eba588Smrg ;; 177218eba588Smrg *) 177318eba588Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 177418eba588Smrg exit 1 177518eba588Smrg ;; 177618eba588Smrgesac 177718eba588Smrg 177818eba588Smrg# As a final step for OS-related things, validate the OS-kernel combination 177918eba588Smrg# (given a valid OS), if there is a kernel. 178018eba588Smrgcase $kernel-$os in 178118eba588Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 178218eba588Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 178318eba588Smrg ;; 178418eba588Smrg uclinux-uclibc* ) 178518eba588Smrg ;; 178618eba588Smrg managarm-mlibc* | managarm-kernel* ) 178718eba588Smrg ;; 178818eba588Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 178918eba588Smrg # These are just libc implementations, not actual OSes, and thus 179018eba588Smrg # require a kernel. 179118eba588Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 179218eba588Smrg exit 1 179318eba588Smrg ;; 179418eba588Smrg -kernel* ) 179518eba588Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 179618eba588Smrg exit 1 179718eba588Smrg ;; 179818eba588Smrg *-kernel* ) 179918eba588Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 180018eba588Smrg exit 1 180118eba588Smrg ;; 180218eba588Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 180318eba588Smrg ;; 180418eba588Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 180518eba588Smrg ;; 180618eba588Smrg nto-qnx*) 180718eba588Smrg ;; 180818eba588Smrg os2-emx) 180918eba588Smrg ;; 181018eba588Smrg *-eabi* | *-gnueabi*) 181118eba588Smrg ;; 181218eba588Smrg -*) 181318eba588Smrg # Blank kernel with real OS is always fine. 181418eba588Smrg ;; 181518eba588Smrg *-*) 181618eba588Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 181718eba588Smrg exit 1 181818eba588Smrg ;; 181918eba588Smrgesac 182018eba588Smrg 1821b9bb67cbSmrg# Here we handle the case where we know the os, and the CPU type, but not the 1822b9bb67cbSmrg# manufacturer. We pick the logical manufacturer. 182318eba588Smrgcase $vendor in 182418eba588Smrg unknown) 182518eba588Smrg case $cpu-$os in 182618eba588Smrg *-riscix*) 1827b9bb67cbSmrg vendor=acorn 1828b9bb67cbSmrg ;; 182918eba588Smrg *-sunos*) 1830b9bb67cbSmrg vendor=sun 1831b9bb67cbSmrg ;; 183218eba588Smrg *-cnk* | *-aix*) 1833b9bb67cbSmrg vendor=ibm 1834b9bb67cbSmrg ;; 183518eba588Smrg *-beos*) 1836b9bb67cbSmrg vendor=be 1837b9bb67cbSmrg ;; 183818eba588Smrg *-hpux*) 1839b9bb67cbSmrg vendor=hp 1840b9bb67cbSmrg ;; 184118eba588Smrg *-mpeix*) 1842b9bb67cbSmrg vendor=hp 1843b9bb67cbSmrg ;; 184418eba588Smrg *-hiux*) 1845b9bb67cbSmrg vendor=hitachi 1846b9bb67cbSmrg ;; 184718eba588Smrg *-unos*) 1848b9bb67cbSmrg vendor=crds 1849b9bb67cbSmrg ;; 185018eba588Smrg *-dgux*) 1851b9bb67cbSmrg vendor=dg 1852b9bb67cbSmrg ;; 185318eba588Smrg *-luna*) 1854b9bb67cbSmrg vendor=omron 1855b9bb67cbSmrg ;; 185618eba588Smrg *-genix*) 1857b9bb67cbSmrg vendor=ns 1858b9bb67cbSmrg ;; 185918eba588Smrg *-clix*) 186018eba588Smrg vendor=intergraph 186118eba588Smrg ;; 186218eba588Smrg *-mvs* | *-opened*) 186318eba588Smrg vendor=ibm 186418eba588Smrg ;; 186518eba588Smrg *-os400*) 1866b9bb67cbSmrg vendor=ibm 1867b9bb67cbSmrg ;; 186818eba588Smrg s390-* | s390x-*) 1869b9bb67cbSmrg vendor=ibm 1870b9bb67cbSmrg ;; 187118eba588Smrg *-ptx*) 1872b9bb67cbSmrg vendor=sequent 1873b9bb67cbSmrg ;; 187418eba588Smrg *-tpf*) 1875b9bb67cbSmrg vendor=ibm 1876b9bb67cbSmrg ;; 187718eba588Smrg *-vxsim* | *-vxworks* | *-windiss*) 1878b9bb67cbSmrg vendor=wrs 1879b9bb67cbSmrg ;; 188018eba588Smrg *-aux*) 1881b9bb67cbSmrg vendor=apple 1882b9bb67cbSmrg ;; 188318eba588Smrg *-hms*) 1884b9bb67cbSmrg vendor=hitachi 1885b9bb67cbSmrg ;; 188618eba588Smrg *-mpw* | *-macos*) 1887b9bb67cbSmrg vendor=apple 1888b9bb67cbSmrg ;; 188918eba588Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1890b9bb67cbSmrg vendor=atari 1891b9bb67cbSmrg ;; 189218eba588Smrg *-vos*) 1893b9bb67cbSmrg vendor=stratus 1894b9bb67cbSmrg ;; 1895b9bb67cbSmrg esac 1896b9bb67cbSmrg ;; 1897b9bb67cbSmrgesac 1898b9bb67cbSmrg 189918eba588Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1900b9bb67cbSmrgexit 1901b9bb67cbSmrg 1902b9bb67cbSmrg# Local variables: 190318eba588Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1904b9bb67cbSmrg# time-stamp-start: "timestamp='" 1905b9bb67cbSmrg# time-stamp-format: "%:y-%02m-%02d" 1906b9bb67cbSmrg# time-stamp-end: "'" 1907b9bb67cbSmrg# End: 1908