175b29833Smrg#! /bin/sh 275b29833Smrg# Configuration validation subroutine script. 375b29833Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 475b29833Smrg 575b29833Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 675b29833Smrg 775b29833Smrgtimestamp='2023-01-21' 875b29833Smrg 975b29833Smrg# This file is free software; you can redistribute it and/or modify it 1075b29833Smrg# under the terms of the GNU General Public License as published by 1175b29833Smrg# the Free Software Foundation, either version 3 of the License, or 1275b29833Smrg# (at your option) any later version. 1375b29833Smrg# 1475b29833Smrg# This program is distributed in the hope that it will be useful, but 1575b29833Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1675b29833Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1775b29833Smrg# General Public License for more details. 1875b29833Smrg# 1975b29833Smrg# You should have received a copy of the GNU General Public License 2075b29833Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 2175b29833Smrg# 2275b29833Smrg# As a special exception to the GNU General Public License, if you 2375b29833Smrg# distribute this file as part of a program that contains a 2475b29833Smrg# configuration script generated by Autoconf, you may include it under 2575b29833Smrg# the same distribution terms that you use for the rest of that 2675b29833Smrg# program. This Exception is an additional permission under section 7 2775b29833Smrg# of the GNU General Public License, version 3 ("GPLv3"). 2875b29833Smrg 2975b29833Smrg 3075b29833Smrg# Please send patches to <config-patches@gnu.org>. 3175b29833Smrg# 3275b29833Smrg# Configuration subroutine to validate and canonicalize a configuration type. 3375b29833Smrg# Supply the specified configuration type as an argument. 3475b29833Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 3575b29833Smrg# Otherwise, we print the canonical config type on stdout and succeed. 3675b29833Smrg 3775b29833Smrg# You can get the latest version of this script from: 3875b29833Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 3975b29833Smrg 4075b29833Smrg# This file is supposed to be the same for all GNU packages 4175b29833Smrg# and recognize all the CPU types, system types and aliases 4275b29833Smrg# that are meaningful with *any* GNU software. 4375b29833Smrg# Each package is responsible for reporting which valid configurations 4475b29833Smrg# it does not support. The user should be able to distinguish 4575b29833Smrg# a failure to support a valid configuration from a meaningless 4675b29833Smrg# configuration. 4775b29833Smrg 4875b29833Smrg# The goal of this file is to map all the various variations of a given 4975b29833Smrg# machine specification into a single specification in the form: 5075b29833Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5175b29833Smrg# or in some cases, the newer four-part form: 5275b29833Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5375b29833Smrg# It is wrong to echo any other type of specification. 5475b29833Smrg 5575b29833Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 5675b29833Smrg# about features and limitations of the classic Bourne shell that were 5775b29833Smrg# superseded or lifted in POSIX. However, this script identifies a wide 5875b29833Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5975b29833Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6075b29833Smrg# have a pre-POSIX /bin/sh. 6175b29833Smrg 6275b29833Smrgme=`echo "$0" | sed -e 's,.*/,,'` 6375b29833Smrg 6475b29833Smrgusage="\ 6575b29833SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6675b29833Smrg 6775b29833SmrgCanonicalize a configuration name. 6875b29833Smrg 6975b29833SmrgOptions: 7075b29833Smrg -h, --help print this help, then exit 7175b29833Smrg -t, --time-stamp print date of last modification, then exit 7275b29833Smrg -v, --version print version number, then exit 7375b29833Smrg 7475b29833SmrgReport bugs and patches to <config-patches@gnu.org>." 7575b29833Smrg 7675b29833Smrgversion="\ 7775b29833SmrgGNU config.sub ($timestamp) 7875b29833Smrg 7975b29833SmrgCopyright 1992-2023 Free Software Foundation, Inc. 8075b29833Smrg 8175b29833SmrgThis is free software; see the source for copying conditions. There is NO 8275b29833Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8375b29833Smrg 8475b29833Smrghelp=" 8575b29833SmrgTry \`$me --help' for more information." 8675b29833Smrg 8775b29833Smrg# Parse command line 8875b29833Smrgwhile test $# -gt 0 ; do 8975b29833Smrg case $1 in 9075b29833Smrg --time-stamp | --time* | -t ) 9175b29833Smrg echo "$timestamp" ; exit ;; 9275b29833Smrg --version | -v ) 9375b29833Smrg echo "$version" ; exit ;; 9475b29833Smrg --help | --h* | -h ) 9575b29833Smrg echo "$usage"; exit ;; 9675b29833Smrg -- ) # Stop option processing 9775b29833Smrg shift; break ;; 9875b29833Smrg - ) # Use stdin as input. 9975b29833Smrg break ;; 10075b29833Smrg -* ) 10175b29833Smrg echo "$me: invalid option $1$help" >&2 10275b29833Smrg exit 1 ;; 10375b29833Smrg 10475b29833Smrg *local*) 10575b29833Smrg # First pass through any local machine types. 10675b29833Smrg echo "$1" 10775b29833Smrg exit ;; 10875b29833Smrg 10975b29833Smrg * ) 11075b29833Smrg break ;; 11175b29833Smrg esac 11275b29833Smrgdone 11375b29833Smrg 11475b29833Smrgcase $# in 11575b29833Smrg 0) echo "$me: missing argument$help" >&2 11675b29833Smrg exit 1;; 11775b29833Smrg 1) ;; 11875b29833Smrg *) echo "$me: too many arguments$help" >&2 11975b29833Smrg exit 1;; 12075b29833Smrgesac 12175b29833Smrg 12275b29833Smrg# Split fields of configuration type 12375b29833Smrg# shellcheck disable=SC2162 12475b29833Smrgsaved_IFS=$IFS 12575b29833SmrgIFS="-" read field1 field2 field3 field4 <<EOF 12675b29833Smrg$1 12775b29833SmrgEOF 12875b29833SmrgIFS=$saved_IFS 12975b29833Smrg 13075b29833Smrg# Separate into logical components for further validation 13175b29833Smrgcase $1 in 13275b29833Smrg *-*-*-*-*) 13375b29833Smrg echo Invalid configuration \`"$1"\': more than four components >&2 13475b29833Smrg exit 1 13575b29833Smrg ;; 13675b29833Smrg *-*-*-*) 13775b29833Smrg basic_machine=$field1-$field2 13875b29833Smrg basic_os=$field3-$field4 13975b29833Smrg ;; 14075b29833Smrg *-*-*) 14175b29833Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14275b29833Smrg # parts 14375b29833Smrg maybe_os=$field2-$field3 14475b29833Smrg case $maybe_os in 14575b29833Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 14675b29833Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14775b29833Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14875b29833Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 14975b29833Smrg basic_machine=$field1 15075b29833Smrg basic_os=$maybe_os 15175b29833Smrg ;; 15275b29833Smrg android-linux) 15375b29833Smrg basic_machine=$field1-unknown 15475b29833Smrg basic_os=linux-android 15575b29833Smrg ;; 15675b29833Smrg *) 15775b29833Smrg basic_machine=$field1-$field2 15875b29833Smrg basic_os=$field3 15975b29833Smrg ;; 16075b29833Smrg esac 16175b29833Smrg ;; 16275b29833Smrg *-*) 16375b29833Smrg # A lone config we happen to match not fitting any pattern 16475b29833Smrg case $field1-$field2 in 16575b29833Smrg decstation-3100) 16675b29833Smrg basic_machine=mips-dec 16775b29833Smrg basic_os= 16875b29833Smrg ;; 16975b29833Smrg *-*) 17075b29833Smrg # Second component is usually, but not always the OS 17175b29833Smrg case $field2 in 17275b29833Smrg # Prevent following clause from handling this valid os 17375b29833Smrg sun*os*) 17475b29833Smrg basic_machine=$field1 17575b29833Smrg basic_os=$field2 17675b29833Smrg ;; 17775b29833Smrg zephyr*) 17875b29833Smrg basic_machine=$field1-unknown 17975b29833Smrg basic_os=$field2 18075b29833Smrg ;; 18175b29833Smrg # Manufacturers 18275b29833Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18375b29833Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18475b29833Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18575b29833Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18675b29833Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18775b29833Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18875b29833Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18975b29833Smrg | microblaze* | sim | cisco \ 19075b29833Smrg | oki | wec | wrs | winbond) 19175b29833Smrg basic_machine=$field1-$field2 19275b29833Smrg basic_os= 19375b29833Smrg ;; 19475b29833Smrg *) 19575b29833Smrg basic_machine=$field1 19675b29833Smrg basic_os=$field2 19775b29833Smrg ;; 19875b29833Smrg esac 19975b29833Smrg ;; 20075b29833Smrg esac 20175b29833Smrg ;; 20275b29833Smrg *) 20375b29833Smrg # Convert single-component short-hands not valid as part of 20475b29833Smrg # multi-component configurations. 20575b29833Smrg case $field1 in 20675b29833Smrg 386bsd) 20775b29833Smrg basic_machine=i386-pc 20875b29833Smrg basic_os=bsd 20975b29833Smrg ;; 21075b29833Smrg a29khif) 21175b29833Smrg basic_machine=a29k-amd 21275b29833Smrg basic_os=udi 21375b29833Smrg ;; 21475b29833Smrg adobe68k) 21575b29833Smrg basic_machine=m68010-adobe 21675b29833Smrg basic_os=scout 21775b29833Smrg ;; 21875b29833Smrg alliant) 21975b29833Smrg basic_machine=fx80-alliant 22075b29833Smrg basic_os= 22175b29833Smrg ;; 22275b29833Smrg altos | altos3068) 22375b29833Smrg basic_machine=m68k-altos 22475b29833Smrg basic_os= 22575b29833Smrg ;; 22675b29833Smrg am29k) 22775b29833Smrg basic_machine=a29k-none 22875b29833Smrg basic_os=bsd 22975b29833Smrg ;; 23075b29833Smrg amdahl) 23175b29833Smrg basic_machine=580-amdahl 23275b29833Smrg basic_os=sysv 23375b29833Smrg ;; 23475b29833Smrg amiga) 23575b29833Smrg basic_machine=m68k-unknown 23675b29833Smrg basic_os= 23775b29833Smrg ;; 23875b29833Smrg amigaos | amigados) 23975b29833Smrg basic_machine=m68k-unknown 24075b29833Smrg basic_os=amigaos 24175b29833Smrg ;; 24275b29833Smrg amigaunix | amix) 24375b29833Smrg basic_machine=m68k-unknown 24475b29833Smrg basic_os=sysv4 24575b29833Smrg ;; 24675b29833Smrg apollo68) 24775b29833Smrg basic_machine=m68k-apollo 24875b29833Smrg basic_os=sysv 24975b29833Smrg ;; 25075b29833Smrg apollo68bsd) 25175b29833Smrg basic_machine=m68k-apollo 25275b29833Smrg basic_os=bsd 25375b29833Smrg ;; 25475b29833Smrg aros) 25575b29833Smrg basic_machine=i386-pc 25675b29833Smrg basic_os=aros 25775b29833Smrg ;; 25875b29833Smrg aux) 25975b29833Smrg basic_machine=m68k-apple 26075b29833Smrg basic_os=aux 26175b29833Smrg ;; 26275b29833Smrg balance) 26375b29833Smrg basic_machine=ns32k-sequent 26475b29833Smrg basic_os=dynix 26575b29833Smrg ;; 26675b29833Smrg blackfin) 26775b29833Smrg basic_machine=bfin-unknown 26875b29833Smrg basic_os=linux 26975b29833Smrg ;; 27075b29833Smrg cegcc) 27175b29833Smrg basic_machine=arm-unknown 27275b29833Smrg basic_os=cegcc 27375b29833Smrg ;; 27475b29833Smrg convex-c1) 27575b29833Smrg basic_machine=c1-convex 27675b29833Smrg basic_os=bsd 27775b29833Smrg ;; 27875b29833Smrg convex-c2) 27975b29833Smrg basic_machine=c2-convex 28075b29833Smrg basic_os=bsd 28175b29833Smrg ;; 28275b29833Smrg convex-c32) 28375b29833Smrg basic_machine=c32-convex 28475b29833Smrg basic_os=bsd 28575b29833Smrg ;; 28675b29833Smrg convex-c34) 28775b29833Smrg basic_machine=c34-convex 28875b29833Smrg basic_os=bsd 28975b29833Smrg ;; 29075b29833Smrg convex-c38) 29175b29833Smrg basic_machine=c38-convex 29275b29833Smrg basic_os=bsd 29375b29833Smrg ;; 29475b29833Smrg cray) 29575b29833Smrg basic_machine=j90-cray 29675b29833Smrg basic_os=unicos 29775b29833Smrg ;; 29875b29833Smrg crds | unos) 29975b29833Smrg basic_machine=m68k-crds 30075b29833Smrg basic_os= 30175b29833Smrg ;; 30275b29833Smrg da30) 30375b29833Smrg basic_machine=m68k-da30 30475b29833Smrg basic_os= 30575b29833Smrg ;; 30675b29833Smrg decstation | pmax | pmin | dec3100 | decstatn) 30775b29833Smrg basic_machine=mips-dec 30875b29833Smrg basic_os= 30975b29833Smrg ;; 31075b29833Smrg delta88) 31175b29833Smrg basic_machine=m88k-motorola 31275b29833Smrg basic_os=sysv3 31375b29833Smrg ;; 31475b29833Smrg dicos) 31575b29833Smrg basic_machine=i686-pc 31675b29833Smrg basic_os=dicos 31775b29833Smrg ;; 31875b29833Smrg djgpp) 31975b29833Smrg basic_machine=i586-pc 32075b29833Smrg basic_os=msdosdjgpp 32175b29833Smrg ;; 32275b29833Smrg ebmon29k) 32375b29833Smrg basic_machine=a29k-amd 32475b29833Smrg basic_os=ebmon 32575b29833Smrg ;; 32675b29833Smrg es1800 | OSE68k | ose68k | ose | OSE) 32775b29833Smrg basic_machine=m68k-ericsson 32875b29833Smrg basic_os=ose 32975b29833Smrg ;; 33075b29833Smrg gmicro) 33175b29833Smrg basic_machine=tron-gmicro 33275b29833Smrg basic_os=sysv 33375b29833Smrg ;; 33475b29833Smrg go32) 33575b29833Smrg basic_machine=i386-pc 33675b29833Smrg basic_os=go32 33775b29833Smrg ;; 33875b29833Smrg h8300hms) 33975b29833Smrg basic_machine=h8300-hitachi 34075b29833Smrg basic_os=hms 34175b29833Smrg ;; 34275b29833Smrg h8300xray) 34375b29833Smrg basic_machine=h8300-hitachi 34475b29833Smrg basic_os=xray 34575b29833Smrg ;; 34675b29833Smrg h8500hms) 34775b29833Smrg basic_machine=h8500-hitachi 34875b29833Smrg basic_os=hms 34975b29833Smrg ;; 35075b29833Smrg harris) 35175b29833Smrg basic_machine=m88k-harris 35275b29833Smrg basic_os=sysv3 35375b29833Smrg ;; 35475b29833Smrg hp300 | hp300hpux) 35575b29833Smrg basic_machine=m68k-hp 35675b29833Smrg basic_os=hpux 35775b29833Smrg ;; 35875b29833Smrg hp300bsd) 35975b29833Smrg basic_machine=m68k-hp 36075b29833Smrg basic_os=bsd 36175b29833Smrg ;; 36275b29833Smrg hppaosf) 36375b29833Smrg basic_machine=hppa1.1-hp 36475b29833Smrg basic_os=osf 36575b29833Smrg ;; 36675b29833Smrg hppro) 36775b29833Smrg basic_machine=hppa1.1-hp 36875b29833Smrg basic_os=proelf 36975b29833Smrg ;; 37075b29833Smrg i386mach) 37175b29833Smrg basic_machine=i386-mach 37275b29833Smrg basic_os=mach 37375b29833Smrg ;; 37475b29833Smrg isi68 | isi) 37575b29833Smrg basic_machine=m68k-isi 37675b29833Smrg basic_os=sysv 37775b29833Smrg ;; 37875b29833Smrg m68knommu) 37975b29833Smrg basic_machine=m68k-unknown 38075b29833Smrg basic_os=linux 38175b29833Smrg ;; 38275b29833Smrg magnum | m3230) 38375b29833Smrg basic_machine=mips-mips 38475b29833Smrg basic_os=sysv 38575b29833Smrg ;; 38675b29833Smrg merlin) 38775b29833Smrg basic_machine=ns32k-utek 38875b29833Smrg basic_os=sysv 38975b29833Smrg ;; 39075b29833Smrg mingw64) 39175b29833Smrg basic_machine=x86_64-pc 39275b29833Smrg basic_os=mingw64 39375b29833Smrg ;; 39475b29833Smrg mingw32) 39575b29833Smrg basic_machine=i686-pc 39675b29833Smrg basic_os=mingw32 39775b29833Smrg ;; 39875b29833Smrg mingw32ce) 39975b29833Smrg basic_machine=arm-unknown 40075b29833Smrg basic_os=mingw32ce 40175b29833Smrg ;; 40275b29833Smrg monitor) 40375b29833Smrg basic_machine=m68k-rom68k 40475b29833Smrg basic_os=coff 40575b29833Smrg ;; 40675b29833Smrg morphos) 40775b29833Smrg basic_machine=powerpc-unknown 40875b29833Smrg basic_os=morphos 40975b29833Smrg ;; 41075b29833Smrg moxiebox) 41175b29833Smrg basic_machine=moxie-unknown 41275b29833Smrg basic_os=moxiebox 41375b29833Smrg ;; 41475b29833Smrg msdos) 41575b29833Smrg basic_machine=i386-pc 41675b29833Smrg basic_os=msdos 41775b29833Smrg ;; 41875b29833Smrg msys) 41975b29833Smrg basic_machine=i686-pc 42075b29833Smrg basic_os=msys 42175b29833Smrg ;; 42275b29833Smrg mvs) 42375b29833Smrg basic_machine=i370-ibm 42475b29833Smrg basic_os=mvs 42575b29833Smrg ;; 42675b29833Smrg nacl) 42775b29833Smrg basic_machine=le32-unknown 42875b29833Smrg basic_os=nacl 42975b29833Smrg ;; 43075b29833Smrg ncr3000) 43175b29833Smrg basic_machine=i486-ncr 43275b29833Smrg basic_os=sysv4 43375b29833Smrg ;; 43475b29833Smrg netbsd386) 43575b29833Smrg basic_machine=i386-pc 43675b29833Smrg basic_os=netbsd 43775b29833Smrg ;; 43875b29833Smrg netwinder) 43975b29833Smrg basic_machine=armv4l-rebel 44075b29833Smrg basic_os=linux 44175b29833Smrg ;; 44275b29833Smrg news | news700 | news800 | news900) 44375b29833Smrg basic_machine=m68k-sony 44475b29833Smrg basic_os=newsos 44575b29833Smrg ;; 44675b29833Smrg news1000) 44775b29833Smrg basic_machine=m68030-sony 44875b29833Smrg basic_os=newsos 44975b29833Smrg ;; 45075b29833Smrg necv70) 45175b29833Smrg basic_machine=v70-nec 45275b29833Smrg basic_os=sysv 45375b29833Smrg ;; 45475b29833Smrg nh3000) 45575b29833Smrg basic_machine=m68k-harris 45675b29833Smrg basic_os=cxux 45775b29833Smrg ;; 45875b29833Smrg nh[45]000) 45975b29833Smrg basic_machine=m88k-harris 46075b29833Smrg basic_os=cxux 46175b29833Smrg ;; 46275b29833Smrg nindy960) 46375b29833Smrg basic_machine=i960-intel 46475b29833Smrg basic_os=nindy 46575b29833Smrg ;; 46675b29833Smrg mon960) 46775b29833Smrg basic_machine=i960-intel 46875b29833Smrg basic_os=mon960 46975b29833Smrg ;; 47075b29833Smrg nonstopux) 47175b29833Smrg basic_machine=mips-compaq 47275b29833Smrg basic_os=nonstopux 47375b29833Smrg ;; 47475b29833Smrg os400) 47575b29833Smrg basic_machine=powerpc-ibm 47675b29833Smrg basic_os=os400 47775b29833Smrg ;; 47875b29833Smrg OSE68000 | ose68000) 47975b29833Smrg basic_machine=m68000-ericsson 48075b29833Smrg basic_os=ose 48175b29833Smrg ;; 48275b29833Smrg os68k) 48375b29833Smrg basic_machine=m68k-none 48475b29833Smrg basic_os=os68k 48575b29833Smrg ;; 48675b29833Smrg paragon) 48775b29833Smrg basic_machine=i860-intel 48875b29833Smrg basic_os=osf 48975b29833Smrg ;; 49075b29833Smrg parisc) 49175b29833Smrg basic_machine=hppa-unknown 49275b29833Smrg basic_os=linux 49375b29833Smrg ;; 49475b29833Smrg psp) 49575b29833Smrg basic_machine=mipsallegrexel-sony 49675b29833Smrg basic_os=psp 49775b29833Smrg ;; 49875b29833Smrg pw32) 49975b29833Smrg basic_machine=i586-unknown 50075b29833Smrg basic_os=pw32 50175b29833Smrg ;; 50275b29833Smrg rdos | rdos64) 50375b29833Smrg basic_machine=x86_64-pc 50475b29833Smrg basic_os=rdos 50575b29833Smrg ;; 50675b29833Smrg rdos32) 50775b29833Smrg basic_machine=i386-pc 50875b29833Smrg basic_os=rdos 50975b29833Smrg ;; 51075b29833Smrg rom68k) 51175b29833Smrg basic_machine=m68k-rom68k 51275b29833Smrg basic_os=coff 51375b29833Smrg ;; 51475b29833Smrg sa29200) 51575b29833Smrg basic_machine=a29k-amd 51675b29833Smrg basic_os=udi 51775b29833Smrg ;; 51875b29833Smrg sei) 51975b29833Smrg basic_machine=mips-sei 52075b29833Smrg basic_os=seiux 52175b29833Smrg ;; 52275b29833Smrg sequent) 52375b29833Smrg basic_machine=i386-sequent 52475b29833Smrg basic_os= 52575b29833Smrg ;; 52675b29833Smrg sps7) 52775b29833Smrg basic_machine=m68k-bull 52875b29833Smrg basic_os=sysv2 52975b29833Smrg ;; 53075b29833Smrg st2000) 53175b29833Smrg basic_machine=m68k-tandem 53275b29833Smrg basic_os= 53375b29833Smrg ;; 53475b29833Smrg stratus) 53575b29833Smrg basic_machine=i860-stratus 53675b29833Smrg basic_os=sysv4 53775b29833Smrg ;; 53875b29833Smrg sun2) 53975b29833Smrg basic_machine=m68000-sun 54075b29833Smrg basic_os= 54175b29833Smrg ;; 54275b29833Smrg sun2os3) 54375b29833Smrg basic_machine=m68000-sun 54475b29833Smrg basic_os=sunos3 54575b29833Smrg ;; 54675b29833Smrg sun2os4) 54775b29833Smrg basic_machine=m68000-sun 54875b29833Smrg basic_os=sunos4 54975b29833Smrg ;; 55075b29833Smrg sun3) 55175b29833Smrg basic_machine=m68k-sun 55275b29833Smrg basic_os= 55375b29833Smrg ;; 55475b29833Smrg sun3os3) 55575b29833Smrg basic_machine=m68k-sun 55675b29833Smrg basic_os=sunos3 55775b29833Smrg ;; 55875b29833Smrg sun3os4) 55975b29833Smrg basic_machine=m68k-sun 56075b29833Smrg basic_os=sunos4 56175b29833Smrg ;; 56275b29833Smrg sun4) 56375b29833Smrg basic_machine=sparc-sun 56475b29833Smrg basic_os= 56575b29833Smrg ;; 56675b29833Smrg sun4os3) 56775b29833Smrg basic_machine=sparc-sun 56875b29833Smrg basic_os=sunos3 56975b29833Smrg ;; 57075b29833Smrg sun4os4) 57175b29833Smrg basic_machine=sparc-sun 57275b29833Smrg basic_os=sunos4 57375b29833Smrg ;; 57475b29833Smrg sun4sol2) 57575b29833Smrg basic_machine=sparc-sun 57675b29833Smrg basic_os=solaris2 57775b29833Smrg ;; 57875b29833Smrg sun386 | sun386i | roadrunner) 57975b29833Smrg basic_machine=i386-sun 58075b29833Smrg basic_os= 58175b29833Smrg ;; 58275b29833Smrg sv1) 58375b29833Smrg basic_machine=sv1-cray 58475b29833Smrg basic_os=unicos 58575b29833Smrg ;; 58675b29833Smrg symmetry) 58775b29833Smrg basic_machine=i386-sequent 58875b29833Smrg basic_os=dynix 58975b29833Smrg ;; 59075b29833Smrg t3e) 59175b29833Smrg basic_machine=alphaev5-cray 59275b29833Smrg basic_os=unicos 59375b29833Smrg ;; 59475b29833Smrg t90) 59575b29833Smrg basic_machine=t90-cray 59675b29833Smrg basic_os=unicos 59775b29833Smrg ;; 59875b29833Smrg toad1) 59975b29833Smrg basic_machine=pdp10-xkl 60075b29833Smrg basic_os=tops20 60175b29833Smrg ;; 60275b29833Smrg tpf) 60375b29833Smrg basic_machine=s390x-ibm 60475b29833Smrg basic_os=tpf 60575b29833Smrg ;; 60675b29833Smrg udi29k) 60775b29833Smrg basic_machine=a29k-amd 60875b29833Smrg basic_os=udi 60975b29833Smrg ;; 61075b29833Smrg ultra3) 61175b29833Smrg basic_machine=a29k-nyu 61275b29833Smrg basic_os=sym1 61375b29833Smrg ;; 61475b29833Smrg v810 | necv810) 61575b29833Smrg basic_machine=v810-nec 61675b29833Smrg basic_os=none 61775b29833Smrg ;; 61875b29833Smrg vaxv) 61975b29833Smrg basic_machine=vax-dec 62075b29833Smrg basic_os=sysv 62175b29833Smrg ;; 62275b29833Smrg vms) 62375b29833Smrg basic_machine=vax-dec 62475b29833Smrg basic_os=vms 62575b29833Smrg ;; 62675b29833Smrg vsta) 62775b29833Smrg basic_machine=i386-pc 62875b29833Smrg basic_os=vsta 62975b29833Smrg ;; 63075b29833Smrg vxworks960) 63175b29833Smrg basic_machine=i960-wrs 63275b29833Smrg basic_os=vxworks 63375b29833Smrg ;; 63475b29833Smrg vxworks68) 63575b29833Smrg basic_machine=m68k-wrs 63675b29833Smrg basic_os=vxworks 63775b29833Smrg ;; 63875b29833Smrg vxworks29k) 63975b29833Smrg basic_machine=a29k-wrs 64075b29833Smrg basic_os=vxworks 64175b29833Smrg ;; 64275b29833Smrg xbox) 64375b29833Smrg basic_machine=i686-pc 64475b29833Smrg basic_os=mingw32 64575b29833Smrg ;; 64675b29833Smrg ymp) 64775b29833Smrg basic_machine=ymp-cray 64875b29833Smrg basic_os=unicos 64975b29833Smrg ;; 65075b29833Smrg *) 65175b29833Smrg basic_machine=$1 65275b29833Smrg basic_os= 65375b29833Smrg ;; 65475b29833Smrg esac 65575b29833Smrg ;; 65675b29833Smrgesac 65775b29833Smrg 65875b29833Smrg# Decode 1-component or ad-hoc basic machines 65975b29833Smrgcase $basic_machine in 66075b29833Smrg # Here we handle the default manufacturer of certain CPU types. It is in 66175b29833Smrg # some cases the only manufacturer, in others, it is the most popular. 66275b29833Smrg w89k) 66375b29833Smrg cpu=hppa1.1 66475b29833Smrg vendor=winbond 66575b29833Smrg ;; 66675b29833Smrg op50n) 66775b29833Smrg cpu=hppa1.1 66875b29833Smrg vendor=oki 66975b29833Smrg ;; 67075b29833Smrg op60c) 67175b29833Smrg cpu=hppa1.1 67275b29833Smrg vendor=oki 67375b29833Smrg ;; 67475b29833Smrg ibm*) 67575b29833Smrg cpu=i370 67675b29833Smrg vendor=ibm 67775b29833Smrg ;; 67875b29833Smrg orion105) 67975b29833Smrg cpu=clipper 68075b29833Smrg vendor=highlevel 68175b29833Smrg ;; 68275b29833Smrg mac | mpw | mac-mpw) 68375b29833Smrg cpu=m68k 68475b29833Smrg vendor=apple 68575b29833Smrg ;; 68675b29833Smrg pmac | pmac-mpw) 68775b29833Smrg cpu=powerpc 68875b29833Smrg vendor=apple 68975b29833Smrg ;; 69075b29833Smrg 69175b29833Smrg # Recognize the various machine names and aliases which stand 69275b29833Smrg # for a CPU type and a company and sometimes even an OS. 69375b29833Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69475b29833Smrg cpu=m68000 69575b29833Smrg vendor=att 69675b29833Smrg ;; 69775b29833Smrg 3b*) 69875b29833Smrg cpu=we32k 69975b29833Smrg vendor=att 70075b29833Smrg ;; 70175b29833Smrg bluegene*) 70275b29833Smrg cpu=powerpc 70375b29833Smrg vendor=ibm 70475b29833Smrg basic_os=cnk 70575b29833Smrg ;; 70675b29833Smrg decsystem10* | dec10*) 70775b29833Smrg cpu=pdp10 70875b29833Smrg vendor=dec 70975b29833Smrg basic_os=tops10 71075b29833Smrg ;; 71175b29833Smrg decsystem20* | dec20*) 71275b29833Smrg cpu=pdp10 71375b29833Smrg vendor=dec 71475b29833Smrg basic_os=tops20 71575b29833Smrg ;; 71675b29833Smrg delta | 3300 | motorola-3300 | motorola-delta \ 71775b29833Smrg | 3300-motorola | delta-motorola) 71875b29833Smrg cpu=m68k 71975b29833Smrg vendor=motorola 72075b29833Smrg ;; 72175b29833Smrg dpx2*) 72275b29833Smrg cpu=m68k 72375b29833Smrg vendor=bull 72475b29833Smrg basic_os=sysv3 72575b29833Smrg ;; 72675b29833Smrg encore | umax | mmax) 72775b29833Smrg cpu=ns32k 72875b29833Smrg vendor=encore 72975b29833Smrg ;; 73075b29833Smrg elxsi) 73175b29833Smrg cpu=elxsi 73275b29833Smrg vendor=elxsi 73375b29833Smrg basic_os=${basic_os:-bsd} 73475b29833Smrg ;; 73575b29833Smrg fx2800) 73675b29833Smrg cpu=i860 73775b29833Smrg vendor=alliant 73875b29833Smrg ;; 73975b29833Smrg genix) 74075b29833Smrg cpu=ns32k 74175b29833Smrg vendor=ns 74275b29833Smrg ;; 74375b29833Smrg h3050r* | hiux*) 74475b29833Smrg cpu=hppa1.1 74575b29833Smrg vendor=hitachi 74675b29833Smrg basic_os=hiuxwe2 74775b29833Smrg ;; 74875b29833Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74975b29833Smrg cpu=hppa1.0 75075b29833Smrg vendor=hp 75175b29833Smrg ;; 75275b29833Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 75375b29833Smrg cpu=m68000 75475b29833Smrg vendor=hp 75575b29833Smrg ;; 75675b29833Smrg hp9k3[2-9][0-9]) 75775b29833Smrg cpu=m68k 75875b29833Smrg vendor=hp 75975b29833Smrg ;; 76075b29833Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76175b29833Smrg cpu=hppa1.0 76275b29833Smrg vendor=hp 76375b29833Smrg ;; 76475b29833Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76575b29833Smrg cpu=hppa1.1 76675b29833Smrg vendor=hp 76775b29833Smrg ;; 76875b29833Smrg hp9k78[0-9] | hp78[0-9]) 76975b29833Smrg # FIXME: really hppa2.0-hp 77075b29833Smrg cpu=hppa1.1 77175b29833Smrg vendor=hp 77275b29833Smrg ;; 77375b29833Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77475b29833Smrg # FIXME: really hppa2.0-hp 77575b29833Smrg cpu=hppa1.1 77675b29833Smrg vendor=hp 77775b29833Smrg ;; 77875b29833Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 77975b29833Smrg cpu=hppa1.1 78075b29833Smrg vendor=hp 78175b29833Smrg ;; 78275b29833Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78375b29833Smrg cpu=hppa1.0 78475b29833Smrg vendor=hp 78575b29833Smrg ;; 78675b29833Smrg i*86v32) 78775b29833Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78875b29833Smrg vendor=pc 78975b29833Smrg basic_os=sysv32 79075b29833Smrg ;; 79175b29833Smrg i*86v4*) 79275b29833Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79375b29833Smrg vendor=pc 79475b29833Smrg basic_os=sysv4 79575b29833Smrg ;; 79675b29833Smrg i*86v) 79775b29833Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79875b29833Smrg vendor=pc 79975b29833Smrg basic_os=sysv 80075b29833Smrg ;; 80175b29833Smrg i*86sol2) 80275b29833Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80375b29833Smrg vendor=pc 80475b29833Smrg basic_os=solaris2 80575b29833Smrg ;; 80675b29833Smrg j90 | j90-cray) 80775b29833Smrg cpu=j90 80875b29833Smrg vendor=cray 80975b29833Smrg basic_os=${basic_os:-unicos} 81075b29833Smrg ;; 81175b29833Smrg iris | iris4d) 81275b29833Smrg cpu=mips 81375b29833Smrg vendor=sgi 81475b29833Smrg case $basic_os in 81575b29833Smrg irix*) 81675b29833Smrg ;; 81775b29833Smrg *) 81875b29833Smrg basic_os=irix4 81975b29833Smrg ;; 82075b29833Smrg esac 82175b29833Smrg ;; 82275b29833Smrg miniframe) 82375b29833Smrg cpu=m68000 82475b29833Smrg vendor=convergent 82575b29833Smrg ;; 82675b29833Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82775b29833Smrg cpu=m68k 82875b29833Smrg vendor=atari 82975b29833Smrg basic_os=mint 83075b29833Smrg ;; 83175b29833Smrg news-3600 | risc-news) 83275b29833Smrg cpu=mips 83375b29833Smrg vendor=sony 83475b29833Smrg basic_os=newsos 83575b29833Smrg ;; 83675b29833Smrg next | m*-next) 83775b29833Smrg cpu=m68k 83875b29833Smrg vendor=next 83975b29833Smrg case $basic_os in 84075b29833Smrg openstep*) 84175b29833Smrg ;; 84275b29833Smrg nextstep*) 84375b29833Smrg ;; 84475b29833Smrg ns2*) 84575b29833Smrg basic_os=nextstep2 84675b29833Smrg ;; 84775b29833Smrg *) 84875b29833Smrg basic_os=nextstep3 84975b29833Smrg ;; 85075b29833Smrg esac 85175b29833Smrg ;; 85275b29833Smrg np1) 85375b29833Smrg cpu=np1 85475b29833Smrg vendor=gould 85575b29833Smrg ;; 85675b29833Smrg op50n-* | op60c-*) 85775b29833Smrg cpu=hppa1.1 85875b29833Smrg vendor=oki 85975b29833Smrg basic_os=proelf 86075b29833Smrg ;; 86175b29833Smrg pa-hitachi) 86275b29833Smrg cpu=hppa1.1 86375b29833Smrg vendor=hitachi 86475b29833Smrg basic_os=hiuxwe2 86575b29833Smrg ;; 86675b29833Smrg pbd) 86775b29833Smrg cpu=sparc 86875b29833Smrg vendor=tti 86975b29833Smrg ;; 87075b29833Smrg pbb) 87175b29833Smrg cpu=m68k 87275b29833Smrg vendor=tti 87375b29833Smrg ;; 87475b29833Smrg pc532) 87575b29833Smrg cpu=ns32k 87675b29833Smrg vendor=pc532 87775b29833Smrg ;; 87875b29833Smrg pn) 87975b29833Smrg cpu=pn 88075b29833Smrg vendor=gould 88175b29833Smrg ;; 88275b29833Smrg power) 88375b29833Smrg cpu=power 88475b29833Smrg vendor=ibm 88575b29833Smrg ;; 88675b29833Smrg ps2) 88775b29833Smrg cpu=i386 88875b29833Smrg vendor=ibm 88975b29833Smrg ;; 89075b29833Smrg rm[46]00) 89175b29833Smrg cpu=mips 89275b29833Smrg vendor=siemens 89375b29833Smrg ;; 89475b29833Smrg rtpc | rtpc-*) 89575b29833Smrg cpu=romp 89675b29833Smrg vendor=ibm 89775b29833Smrg ;; 89875b29833Smrg sde) 89975b29833Smrg cpu=mipsisa32 90075b29833Smrg vendor=sde 90175b29833Smrg basic_os=${basic_os:-elf} 90275b29833Smrg ;; 90375b29833Smrg simso-wrs) 90475b29833Smrg cpu=sparclite 90575b29833Smrg vendor=wrs 90675b29833Smrg basic_os=vxworks 90775b29833Smrg ;; 90875b29833Smrg tower | tower-32) 90975b29833Smrg cpu=m68k 91075b29833Smrg vendor=ncr 91175b29833Smrg ;; 91275b29833Smrg vpp*|vx|vx-*) 91375b29833Smrg cpu=f301 91475b29833Smrg vendor=fujitsu 91575b29833Smrg ;; 91675b29833Smrg w65) 91775b29833Smrg cpu=w65 91875b29833Smrg vendor=wdc 91975b29833Smrg ;; 92075b29833Smrg w89k-*) 92175b29833Smrg cpu=hppa1.1 92275b29833Smrg vendor=winbond 92375b29833Smrg basic_os=proelf 92475b29833Smrg ;; 92575b29833Smrg none) 92675b29833Smrg cpu=none 92775b29833Smrg vendor=none 92875b29833Smrg ;; 92975b29833Smrg leon|leon[3-9]) 93075b29833Smrg cpu=sparc 93175b29833Smrg vendor=$basic_machine 93275b29833Smrg ;; 93375b29833Smrg leon-*|leon[3-9]-*) 93475b29833Smrg cpu=sparc 93575b29833Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 93675b29833Smrg ;; 93775b29833Smrg 93875b29833Smrg *-*) 93975b29833Smrg # shellcheck disable=SC2162 94075b29833Smrg saved_IFS=$IFS 94175b29833Smrg IFS="-" read cpu vendor <<EOF 94275b29833Smrg$basic_machine 94375b29833SmrgEOF 94475b29833Smrg IFS=$saved_IFS 94575b29833Smrg ;; 94675b29833Smrg # We use `pc' rather than `unknown' 94775b29833Smrg # because (1) that's what they normally are, and 94875b29833Smrg # (2) the word "unknown" tends to confuse beginning users. 94975b29833Smrg i*86 | x86_64) 95075b29833Smrg cpu=$basic_machine 95175b29833Smrg vendor=pc 95275b29833Smrg ;; 95375b29833Smrg # These rules are duplicated from below for sake of the special case above; 95475b29833Smrg # i.e. things that normalized to x86 arches should also default to "pc" 95575b29833Smrg pc98) 95675b29833Smrg cpu=i386 95775b29833Smrg vendor=pc 95875b29833Smrg ;; 95975b29833Smrg x64 | amd64) 96075b29833Smrg cpu=x86_64 96175b29833Smrg vendor=pc 96275b29833Smrg ;; 96375b29833Smrg # Recognize the basic CPU types without company name. 96475b29833Smrg *) 96575b29833Smrg cpu=$basic_machine 96675b29833Smrg vendor=unknown 96775b29833Smrg ;; 96875b29833Smrgesac 96975b29833Smrg 97075b29833Smrgunset -v basic_machine 97175b29833Smrg 97275b29833Smrg# Decode basic machines in the full and proper CPU-Company form. 97375b29833Smrgcase $cpu-$vendor in 97475b29833Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97575b29833Smrg # some cases the only manufacturer, in others, it is the most popular. 97675b29833Smrg craynv-unknown) 97775b29833Smrg vendor=cray 97875b29833Smrg basic_os=${basic_os:-unicosmp} 97975b29833Smrg ;; 98075b29833Smrg c90-unknown | c90-cray) 98175b29833Smrg vendor=cray 98275b29833Smrg basic_os=${Basic_os:-unicos} 98375b29833Smrg ;; 98475b29833Smrg fx80-unknown) 98575b29833Smrg vendor=alliant 98675b29833Smrg ;; 98775b29833Smrg romp-unknown) 98875b29833Smrg vendor=ibm 98975b29833Smrg ;; 99075b29833Smrg mmix-unknown) 99175b29833Smrg vendor=knuth 99275b29833Smrg ;; 99375b29833Smrg microblaze-unknown | microblazeel-unknown) 99475b29833Smrg vendor=xilinx 99575b29833Smrg ;; 99675b29833Smrg rs6000-unknown) 99775b29833Smrg vendor=ibm 99875b29833Smrg ;; 99975b29833Smrg vax-unknown) 100075b29833Smrg vendor=dec 100175b29833Smrg ;; 100275b29833Smrg pdp11-unknown) 100375b29833Smrg vendor=dec 100475b29833Smrg ;; 100575b29833Smrg we32k-unknown) 100675b29833Smrg vendor=att 100775b29833Smrg ;; 100875b29833Smrg cydra-unknown) 100975b29833Smrg vendor=cydrome 101075b29833Smrg ;; 101175b29833Smrg i370-ibm*) 101275b29833Smrg vendor=ibm 101375b29833Smrg ;; 101475b29833Smrg orion-unknown) 101575b29833Smrg vendor=highlevel 101675b29833Smrg ;; 101775b29833Smrg xps-unknown | xps100-unknown) 101875b29833Smrg cpu=xps100 101975b29833Smrg vendor=honeywell 102075b29833Smrg ;; 102175b29833Smrg 102275b29833Smrg # Here we normalize CPU types with a missing or matching vendor 102375b29833Smrg armh-unknown | armh-alt) 102475b29833Smrg cpu=armv7l 102575b29833Smrg vendor=alt 102675b29833Smrg basic_os=${basic_os:-linux-gnueabihf} 102775b29833Smrg ;; 102875b29833Smrg dpx20-unknown | dpx20-bull) 102975b29833Smrg cpu=rs6000 103075b29833Smrg vendor=bull 103175b29833Smrg basic_os=${basic_os:-bosx} 103275b29833Smrg ;; 103375b29833Smrg 103475b29833Smrg # Here we normalize CPU types irrespective of the vendor 103575b29833Smrg amd64-*) 103675b29833Smrg cpu=x86_64 103775b29833Smrg ;; 103875b29833Smrg blackfin-*) 103975b29833Smrg cpu=bfin 104075b29833Smrg basic_os=linux 104175b29833Smrg ;; 104275b29833Smrg c54x-*) 104375b29833Smrg cpu=tic54x 104475b29833Smrg ;; 104575b29833Smrg c55x-*) 104675b29833Smrg cpu=tic55x 104775b29833Smrg ;; 104875b29833Smrg c6x-*) 104975b29833Smrg cpu=tic6x 105075b29833Smrg ;; 105175b29833Smrg e500v[12]-*) 105275b29833Smrg cpu=powerpc 105375b29833Smrg basic_os=${basic_os}"spe" 105475b29833Smrg ;; 105575b29833Smrg mips3*-*) 105675b29833Smrg cpu=mips64 105775b29833Smrg ;; 105875b29833Smrg ms1-*) 105975b29833Smrg cpu=mt 106075b29833Smrg ;; 106175b29833Smrg m68knommu-*) 106275b29833Smrg cpu=m68k 106375b29833Smrg basic_os=linux 106475b29833Smrg ;; 106575b29833Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106675b29833Smrg cpu=s12z 106775b29833Smrg ;; 106875b29833Smrg openrisc-*) 106975b29833Smrg cpu=or32 107075b29833Smrg ;; 107175b29833Smrg parisc-*) 107275b29833Smrg cpu=hppa 107375b29833Smrg basic_os=linux 107475b29833Smrg ;; 107575b29833Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107675b29833Smrg cpu=i586 107775b29833Smrg ;; 107875b29833Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 107975b29833Smrg cpu=i686 108075b29833Smrg ;; 108175b29833Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 108275b29833Smrg cpu=i686 108375b29833Smrg ;; 108475b29833Smrg pentium4-*) 108575b29833Smrg cpu=i786 108675b29833Smrg ;; 108775b29833Smrg pc98-*) 108875b29833Smrg cpu=i386 108975b29833Smrg ;; 109075b29833Smrg ppc-* | ppcbe-*) 109175b29833Smrg cpu=powerpc 109275b29833Smrg ;; 109375b29833Smrg ppcle-* | powerpclittle-*) 109475b29833Smrg cpu=powerpcle 109575b29833Smrg ;; 109675b29833Smrg ppc64-*) 109775b29833Smrg cpu=powerpc64 109875b29833Smrg ;; 109975b29833Smrg ppc64le-* | powerpc64little-*) 110075b29833Smrg cpu=powerpc64le 110175b29833Smrg ;; 110275b29833Smrg sb1-*) 110375b29833Smrg cpu=mipsisa64sb1 110475b29833Smrg ;; 110575b29833Smrg sb1el-*) 110675b29833Smrg cpu=mipsisa64sb1el 110775b29833Smrg ;; 110875b29833Smrg sh5e[lb]-*) 110975b29833Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 111075b29833Smrg ;; 111175b29833Smrg spur-*) 111275b29833Smrg cpu=spur 111375b29833Smrg ;; 111475b29833Smrg strongarm-* | thumb-*) 111575b29833Smrg cpu=arm 111675b29833Smrg ;; 111775b29833Smrg tx39-*) 111875b29833Smrg cpu=mipstx39 111975b29833Smrg ;; 112075b29833Smrg tx39el-*) 112175b29833Smrg cpu=mipstx39el 112275b29833Smrg ;; 112375b29833Smrg x64-*) 112475b29833Smrg cpu=x86_64 112575b29833Smrg ;; 112675b29833Smrg xscale-* | xscalee[bl]-*) 112775b29833Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112875b29833Smrg ;; 112975b29833Smrg arm64-* | aarch64le-*) 113075b29833Smrg cpu=aarch64 113175b29833Smrg ;; 113275b29833Smrg 113375b29833Smrg # Recognize the canonical CPU Types that limit and/or modify the 113475b29833Smrg # company names they are paired with. 113575b29833Smrg cr16-*) 113675b29833Smrg basic_os=${basic_os:-elf} 113775b29833Smrg ;; 113875b29833Smrg crisv32-* | etraxfs*-*) 113975b29833Smrg cpu=crisv32 114075b29833Smrg vendor=axis 114175b29833Smrg ;; 114275b29833Smrg cris-* | etrax*-*) 114375b29833Smrg cpu=cris 114475b29833Smrg vendor=axis 114575b29833Smrg ;; 114675b29833Smrg crx-*) 114775b29833Smrg basic_os=${basic_os:-elf} 114875b29833Smrg ;; 114975b29833Smrg neo-tandem) 115075b29833Smrg cpu=neo 115175b29833Smrg vendor=tandem 115275b29833Smrg ;; 115375b29833Smrg nse-tandem) 115475b29833Smrg cpu=nse 115575b29833Smrg vendor=tandem 115675b29833Smrg ;; 115775b29833Smrg nsr-tandem) 115875b29833Smrg cpu=nsr 115975b29833Smrg vendor=tandem 116075b29833Smrg ;; 116175b29833Smrg nsv-tandem) 116275b29833Smrg cpu=nsv 116375b29833Smrg vendor=tandem 116475b29833Smrg ;; 116575b29833Smrg nsx-tandem) 116675b29833Smrg cpu=nsx 116775b29833Smrg vendor=tandem 116875b29833Smrg ;; 116975b29833Smrg mipsallegrexel-sony) 117075b29833Smrg cpu=mipsallegrexel 117175b29833Smrg vendor=sony 117275b29833Smrg ;; 117375b29833Smrg tile*-*) 117475b29833Smrg basic_os=${basic_os:-linux-gnu} 117575b29833Smrg ;; 117675b29833Smrg 117775b29833Smrg *) 117875b29833Smrg # Recognize the canonical CPU types that are allowed with any 117975b29833Smrg # company name. 118075b29833Smrg case $cpu in 118175b29833Smrg 1750a | 580 \ 118275b29833Smrg | a29k \ 118375b29833Smrg | aarch64 | aarch64_be \ 118475b29833Smrg | abacus \ 118575b29833Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118675b29833Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118775b29833Smrg | alphapca5[67] | alpha64pca5[67] \ 118875b29833Smrg | am33_2.0 \ 118975b29833Smrg | amdgcn \ 119075b29833Smrg | arc | arceb | arc32 | arc64 \ 119175b29833Smrg | arm | arm[lb]e | arme[lb] | armv* \ 119275b29833Smrg | avr | avr32 \ 119375b29833Smrg | asmjs \ 119475b29833Smrg | ba \ 119575b29833Smrg | be32 | be64 \ 119675b29833Smrg | bfin | bpf | bs2000 \ 119775b29833Smrg | c[123]* | c30 | [cjt]90 | c4x \ 119875b29833Smrg | c8051 | clipper | craynv | csky | cydra \ 119975b29833Smrg | d10v | d30v | dlx | dsp16xx \ 120075b29833Smrg | e2k | elxsi | epiphany \ 120175b29833Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 120275b29833Smrg | h8300 | h8500 \ 120375b29833Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 120475b29833Smrg | hexagon \ 120575b29833Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120675b29833Smrg | ip2k | iq2000 \ 120775b29833Smrg | k1om \ 120875b29833Smrg | le32 | le64 \ 120975b29833Smrg | lm32 \ 121075b29833Smrg | loongarch32 | loongarch64 \ 121175b29833Smrg | m32c | m32r | m32rle \ 121275b29833Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 121375b29833Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 121475b29833Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121575b29833Smrg | microblaze | microblazeel \ 121675b29833Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121775b29833Smrg | mips16 \ 121875b29833Smrg | mips64 | mips64eb | mips64el \ 121975b29833Smrg | mips64octeon | mips64octeonel \ 122075b29833Smrg | mips64orion | mips64orionel \ 122175b29833Smrg | mips64r5900 | mips64r5900el \ 122275b29833Smrg | mips64vr | mips64vrel \ 122375b29833Smrg | mips64vr4100 | mips64vr4100el \ 122475b29833Smrg | mips64vr4300 | mips64vr4300el \ 122575b29833Smrg | mips64vr5000 | mips64vr5000el \ 122675b29833Smrg | mips64vr5900 | mips64vr5900el \ 122775b29833Smrg | mipsisa32 | mipsisa32el \ 122875b29833Smrg | mipsisa32r2 | mipsisa32r2el \ 122975b29833Smrg | mipsisa32r3 | mipsisa32r3el \ 123075b29833Smrg | mipsisa32r5 | mipsisa32r5el \ 123175b29833Smrg | mipsisa32r6 | mipsisa32r6el \ 123275b29833Smrg | mipsisa64 | mipsisa64el \ 123375b29833Smrg | mipsisa64r2 | mipsisa64r2el \ 123475b29833Smrg | mipsisa64r3 | mipsisa64r3el \ 123575b29833Smrg | mipsisa64r5 | mipsisa64r5el \ 123675b29833Smrg | mipsisa64r6 | mipsisa64r6el \ 123775b29833Smrg | mipsisa64sb1 | mipsisa64sb1el \ 123875b29833Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 123975b29833Smrg | mipsr5900 | mipsr5900el \ 124075b29833Smrg | mipstx39 | mipstx39el \ 124175b29833Smrg | mmix \ 124275b29833Smrg | mn10200 | mn10300 \ 124375b29833Smrg | moxie \ 124475b29833Smrg | mt \ 124575b29833Smrg | msp430 \ 124675b29833Smrg | nds32 | nds32le | nds32be \ 124775b29833Smrg | nfp \ 124875b29833Smrg | nios | nios2 | nios2eb | nios2el \ 124975b29833Smrg | none | np1 | ns16k | ns32k | nvptx \ 125075b29833Smrg | open8 \ 125175b29833Smrg | or1k* \ 125275b29833Smrg | or32 \ 125375b29833Smrg | orion \ 125475b29833Smrg | picochip \ 125575b29833Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125675b29833Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125775b29833Smrg | pru \ 125875b29833Smrg | pyramid \ 125975b29833Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 126075b29833Smrg | rl78 | romp | rs6000 | rx \ 126175b29833Smrg | s390 | s390x \ 126275b29833Smrg | score \ 126375b29833Smrg | sh | shl \ 126475b29833Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126575b29833Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126675b29833Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126775b29833Smrg | sparclite \ 126875b29833Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126975b29833Smrg | spu \ 127075b29833Smrg | tahoe \ 127175b29833Smrg | thumbv7* \ 127275b29833Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 127375b29833Smrg | tron \ 127475b29833Smrg | ubicom32 \ 127575b29833Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127675b29833Smrg | vax \ 127775b29833Smrg | visium \ 127875b29833Smrg | w65 \ 127975b29833Smrg | wasm32 | wasm64 \ 128075b29833Smrg | we32k \ 128175b29833Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 128275b29833Smrg | xstormy16 | xtensa* \ 128375b29833Smrg | ymp \ 128475b29833Smrg | z8k | z80) 128575b29833Smrg ;; 128675b29833Smrg 128775b29833Smrg *) 128875b29833Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128975b29833Smrg exit 1 129075b29833Smrg ;; 129175b29833Smrg esac 129275b29833Smrg ;; 129375b29833Smrgesac 129475b29833Smrg 129575b29833Smrg# Here we canonicalize certain aliases for manufacturers. 129675b29833Smrgcase $vendor in 129775b29833Smrg digital*) 129875b29833Smrg vendor=dec 129975b29833Smrg ;; 130075b29833Smrg commodore*) 130175b29833Smrg vendor=cbm 130275b29833Smrg ;; 130375b29833Smrg *) 130475b29833Smrg ;; 130575b29833Smrgesac 130675b29833Smrg 130775b29833Smrg# Decode manufacturer-specific aliases for certain operating systems. 130875b29833Smrg 130975b29833Smrgif test x$basic_os != x 131075b29833Smrgthen 131175b29833Smrg 131275b29833Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 131375b29833Smrg# set os. 131475b29833Smrgcase $basic_os in 131575b29833Smrg gnu/linux*) 131675b29833Smrg kernel=linux 131775b29833Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131875b29833Smrg ;; 131975b29833Smrg os2-emx) 132075b29833Smrg kernel=os2 132175b29833Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 132275b29833Smrg ;; 132375b29833Smrg nto-qnx*) 132475b29833Smrg kernel=nto 132575b29833Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132675b29833Smrg ;; 132775b29833Smrg *-*) 132875b29833Smrg # shellcheck disable=SC2162 132975b29833Smrg saved_IFS=$IFS 133075b29833Smrg IFS="-" read kernel os <<EOF 133175b29833Smrg$basic_os 133275b29833SmrgEOF 133375b29833Smrg IFS=$saved_IFS 133475b29833Smrg ;; 133575b29833Smrg # Default OS when just kernel was specified 133675b29833Smrg nto*) 133775b29833Smrg kernel=nto 133875b29833Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133975b29833Smrg ;; 134075b29833Smrg linux*) 134175b29833Smrg kernel=linux 134275b29833Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 134375b29833Smrg ;; 134475b29833Smrg managarm*) 134575b29833Smrg kernel=managarm 134675b29833Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 134775b29833Smrg ;; 134875b29833Smrg *) 134975b29833Smrg kernel= 135075b29833Smrg os=$basic_os 135175b29833Smrg ;; 135275b29833Smrgesac 135375b29833Smrg 135475b29833Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 135575b29833Smrg# etc.) 135675b29833Smrgcase $os in 135775b29833Smrg # First match some system type aliases that might get confused 135875b29833Smrg # with valid system types. 135975b29833Smrg # solaris* is a basic system type, with this one exception. 136075b29833Smrg auroraux) 136175b29833Smrg os=auroraux 136275b29833Smrg ;; 136375b29833Smrg bluegene*) 136475b29833Smrg os=cnk 136575b29833Smrg ;; 136675b29833Smrg solaris1 | solaris1.*) 136775b29833Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 136875b29833Smrg ;; 136975b29833Smrg solaris) 137075b29833Smrg os=solaris2 137175b29833Smrg ;; 137275b29833Smrg unixware*) 137375b29833Smrg os=sysv4.2uw 137475b29833Smrg ;; 137575b29833Smrg # es1800 is here to avoid being matched by es* (a different OS) 137675b29833Smrg es1800*) 137775b29833Smrg os=ose 137875b29833Smrg ;; 137975b29833Smrg # Some version numbers need modification 138075b29833Smrg chorusos*) 138175b29833Smrg os=chorusos 138275b29833Smrg ;; 138375b29833Smrg isc) 138475b29833Smrg os=isc2.2 138575b29833Smrg ;; 138675b29833Smrg sco6) 138775b29833Smrg os=sco5v6 138875b29833Smrg ;; 138975b29833Smrg sco5) 139075b29833Smrg os=sco3.2v5 139175b29833Smrg ;; 139275b29833Smrg sco4) 139375b29833Smrg os=sco3.2v4 139475b29833Smrg ;; 139575b29833Smrg sco3.2.[4-9]*) 139675b29833Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 139775b29833Smrg ;; 139875b29833Smrg sco*v* | scout) 139975b29833Smrg # Don't match below 140075b29833Smrg ;; 140175b29833Smrg sco*) 140275b29833Smrg os=sco3.2v2 140375b29833Smrg ;; 140475b29833Smrg psos*) 140575b29833Smrg os=psos 140675b29833Smrg ;; 140775b29833Smrg qnx*) 140875b29833Smrg os=qnx 140975b29833Smrg ;; 141075b29833Smrg hiux*) 141175b29833Smrg os=hiuxwe2 141275b29833Smrg ;; 141375b29833Smrg lynx*178) 141475b29833Smrg os=lynxos178 141575b29833Smrg ;; 141675b29833Smrg lynx*5) 141775b29833Smrg os=lynxos5 141875b29833Smrg ;; 141975b29833Smrg lynxos*) 142075b29833Smrg # don't get caught up in next wildcard 142175b29833Smrg ;; 142275b29833Smrg lynx*) 142375b29833Smrg os=lynxos 142475b29833Smrg ;; 142575b29833Smrg mac[0-9]*) 142675b29833Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 142775b29833Smrg ;; 142875b29833Smrg opened*) 142975b29833Smrg os=openedition 143075b29833Smrg ;; 143175b29833Smrg os400*) 143275b29833Smrg os=os400 143375b29833Smrg ;; 143475b29833Smrg sunos5*) 143575b29833Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 143675b29833Smrg ;; 143775b29833Smrg sunos6*) 143875b29833Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 143975b29833Smrg ;; 144075b29833Smrg wince*) 144175b29833Smrg os=wince 144275b29833Smrg ;; 144375b29833Smrg utek*) 144475b29833Smrg os=bsd 144575b29833Smrg ;; 144675b29833Smrg dynix*) 144775b29833Smrg os=bsd 144875b29833Smrg ;; 144975b29833Smrg acis*) 145075b29833Smrg os=aos 145175b29833Smrg ;; 145275b29833Smrg atheos*) 145375b29833Smrg os=atheos 145475b29833Smrg ;; 145575b29833Smrg syllable*) 145675b29833Smrg os=syllable 145775b29833Smrg ;; 145875b29833Smrg 386bsd) 145975b29833Smrg os=bsd 146075b29833Smrg ;; 146175b29833Smrg ctix* | uts*) 146275b29833Smrg os=sysv 146375b29833Smrg ;; 146475b29833Smrg nova*) 146575b29833Smrg os=rtmk-nova 146675b29833Smrg ;; 146775b29833Smrg ns2) 146875b29833Smrg os=nextstep2 146975b29833Smrg ;; 147075b29833Smrg # Preserve the version number of sinix5. 147175b29833Smrg sinix5.*) 147275b29833Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 147375b29833Smrg ;; 147475b29833Smrg sinix*) 147575b29833Smrg os=sysv4 147675b29833Smrg ;; 147775b29833Smrg tpf*) 147875b29833Smrg os=tpf 147975b29833Smrg ;; 148075b29833Smrg triton*) 148175b29833Smrg os=sysv3 148275b29833Smrg ;; 148375b29833Smrg oss*) 148475b29833Smrg os=sysv3 148575b29833Smrg ;; 148675b29833Smrg svr4*) 148775b29833Smrg os=sysv4 148875b29833Smrg ;; 148975b29833Smrg svr3) 149075b29833Smrg os=sysv3 149175b29833Smrg ;; 149275b29833Smrg sysvr4) 149375b29833Smrg os=sysv4 149475b29833Smrg ;; 149575b29833Smrg ose*) 149675b29833Smrg os=ose 149775b29833Smrg ;; 149875b29833Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149975b29833Smrg os=mint 150075b29833Smrg ;; 150175b29833Smrg dicos*) 150275b29833Smrg os=dicos 150375b29833Smrg ;; 150475b29833Smrg pikeos*) 150575b29833Smrg # Until real need of OS specific support for 150675b29833Smrg # particular features comes up, bare metal 150775b29833Smrg # configurations are quite functional. 150875b29833Smrg case $cpu in 150975b29833Smrg arm*) 151075b29833Smrg os=eabi 151175b29833Smrg ;; 151275b29833Smrg *) 151375b29833Smrg os=elf 151475b29833Smrg ;; 151575b29833Smrg esac 151675b29833Smrg ;; 151775b29833Smrg *) 151875b29833Smrg # No normalization, but not necessarily accepted, that comes below. 151975b29833Smrg ;; 152075b29833Smrgesac 152175b29833Smrg 152275b29833Smrgelse 152375b29833Smrg 152475b29833Smrg# Here we handle the default operating systems that come with various machines. 152575b29833Smrg# The value should be what the vendor currently ships out the door with their 152675b29833Smrg# machine or put another way, the most popular os provided with the machine. 152775b29833Smrg 152875b29833Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 152975b29833Smrg# "-sun"), then you have to tell the case statement up towards the top 153075b29833Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 153175b29833Smrg# will signal an error saying that MANUFACTURER isn't an operating 153275b29833Smrg# system, and we'll never get to this point. 153375b29833Smrg 153475b29833Smrgkernel= 153575b29833Smrgcase $cpu-$vendor in 153675b29833Smrg score-*) 153775b29833Smrg os=elf 153875b29833Smrg ;; 153975b29833Smrg spu-*) 154075b29833Smrg os=elf 154175b29833Smrg ;; 154275b29833Smrg *-acorn) 154375b29833Smrg os=riscix1.2 154475b29833Smrg ;; 154575b29833Smrg arm*-rebel) 154675b29833Smrg kernel=linux 154775b29833Smrg os=gnu 154875b29833Smrg ;; 154975b29833Smrg arm*-semi) 155075b29833Smrg os=aout 155175b29833Smrg ;; 155275b29833Smrg c4x-* | tic4x-*) 155375b29833Smrg os=coff 155475b29833Smrg ;; 155575b29833Smrg c8051-*) 155675b29833Smrg os=elf 155775b29833Smrg ;; 155875b29833Smrg clipper-intergraph) 155975b29833Smrg os=clix 156075b29833Smrg ;; 156175b29833Smrg hexagon-*) 156275b29833Smrg os=elf 156375b29833Smrg ;; 156475b29833Smrg tic54x-*) 156575b29833Smrg os=coff 156675b29833Smrg ;; 156775b29833Smrg tic55x-*) 156875b29833Smrg os=coff 156975b29833Smrg ;; 157075b29833Smrg tic6x-*) 157175b29833Smrg os=coff 157275b29833Smrg ;; 157375b29833Smrg # This must come before the *-dec entry. 157475b29833Smrg pdp10-*) 157575b29833Smrg os=tops20 157675b29833Smrg ;; 157775b29833Smrg pdp11-*) 157875b29833Smrg os=none 157975b29833Smrg ;; 158075b29833Smrg *-dec | vax-*) 158175b29833Smrg os=ultrix4.2 158275b29833Smrg ;; 158375b29833Smrg m68*-apollo) 158475b29833Smrg os=domain 158575b29833Smrg ;; 158675b29833Smrg i386-sun) 158775b29833Smrg os=sunos4.0.2 158875b29833Smrg ;; 158975b29833Smrg m68000-sun) 159075b29833Smrg os=sunos3 159175b29833Smrg ;; 159275b29833Smrg m68*-cisco) 159375b29833Smrg os=aout 159475b29833Smrg ;; 159575b29833Smrg mep-*) 159675b29833Smrg os=elf 159775b29833Smrg ;; 159875b29833Smrg mips*-cisco) 159975b29833Smrg os=elf 160075b29833Smrg ;; 160175b29833Smrg mips*-*) 160275b29833Smrg os=elf 160375b29833Smrg ;; 160475b29833Smrg or32-*) 160575b29833Smrg os=coff 160675b29833Smrg ;; 160775b29833Smrg *-tti) # must be before sparc entry or we get the wrong os. 160875b29833Smrg os=sysv3 160975b29833Smrg ;; 161075b29833Smrg sparc-* | *-sun) 161175b29833Smrg os=sunos4.1.1 161275b29833Smrg ;; 161375b29833Smrg pru-*) 161475b29833Smrg os=elf 161575b29833Smrg ;; 161675b29833Smrg *-be) 161775b29833Smrg os=beos 161875b29833Smrg ;; 161975b29833Smrg *-ibm) 162075b29833Smrg os=aix 162175b29833Smrg ;; 162275b29833Smrg *-knuth) 162375b29833Smrg os=mmixware 162475b29833Smrg ;; 162575b29833Smrg *-wec) 162675b29833Smrg os=proelf 162775b29833Smrg ;; 162875b29833Smrg *-winbond) 162975b29833Smrg os=proelf 163075b29833Smrg ;; 163175b29833Smrg *-oki) 163275b29833Smrg os=proelf 163375b29833Smrg ;; 163475b29833Smrg *-hp) 163575b29833Smrg os=hpux 163675b29833Smrg ;; 163775b29833Smrg *-hitachi) 163875b29833Smrg os=hiux 163975b29833Smrg ;; 164075b29833Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 164175b29833Smrg os=sysv 164275b29833Smrg ;; 164375b29833Smrg *-cbm) 164475b29833Smrg os=amigaos 164575b29833Smrg ;; 164675b29833Smrg *-dg) 164775b29833Smrg os=dgux 164875b29833Smrg ;; 164975b29833Smrg *-dolphin) 165075b29833Smrg os=sysv3 165175b29833Smrg ;; 165275b29833Smrg m68k-ccur) 165375b29833Smrg os=rtu 165475b29833Smrg ;; 165575b29833Smrg m88k-omron*) 165675b29833Smrg os=luna 165775b29833Smrg ;; 165875b29833Smrg *-next) 165975b29833Smrg os=nextstep 166075b29833Smrg ;; 166175b29833Smrg *-sequent) 166275b29833Smrg os=ptx 166375b29833Smrg ;; 166475b29833Smrg *-crds) 166575b29833Smrg os=unos 166675b29833Smrg ;; 166775b29833Smrg *-ns) 166875b29833Smrg os=genix 166975b29833Smrg ;; 167075b29833Smrg i370-*) 167175b29833Smrg os=mvs 167275b29833Smrg ;; 167375b29833Smrg *-gould) 167475b29833Smrg os=sysv 167575b29833Smrg ;; 167675b29833Smrg *-highlevel) 167775b29833Smrg os=bsd 167875b29833Smrg ;; 167975b29833Smrg *-encore) 168075b29833Smrg os=bsd 168175b29833Smrg ;; 168275b29833Smrg *-sgi) 168375b29833Smrg os=irix 168475b29833Smrg ;; 168575b29833Smrg *-siemens) 168675b29833Smrg os=sysv4 168775b29833Smrg ;; 168875b29833Smrg *-masscomp) 168975b29833Smrg os=rtu 169075b29833Smrg ;; 169175b29833Smrg f30[01]-fujitsu | f700-fujitsu) 169275b29833Smrg os=uxpv 169375b29833Smrg ;; 169475b29833Smrg *-rom68k) 169575b29833Smrg os=coff 169675b29833Smrg ;; 169775b29833Smrg *-*bug) 169875b29833Smrg os=coff 169975b29833Smrg ;; 170075b29833Smrg *-apple) 170175b29833Smrg os=macos 170275b29833Smrg ;; 170375b29833Smrg *-atari*) 170475b29833Smrg os=mint 170575b29833Smrg ;; 170675b29833Smrg *-wrs) 170775b29833Smrg os=vxworks 170875b29833Smrg ;; 170975b29833Smrg *) 171075b29833Smrg os=none 171175b29833Smrg ;; 171275b29833Smrgesac 171375b29833Smrg 171475b29833Smrgfi 171575b29833Smrg 171675b29833Smrg# Now, validate our (potentially fixed-up) OS. 171775b29833Smrgcase $os in 171875b29833Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171975b29833Smrg musl* | newlib* | relibc* | uclibc*) 172075b29833Smrg ;; 172175b29833Smrg # Likewise for "kernel-abi" 172275b29833Smrg eabi* | gnueabi*) 172375b29833Smrg ;; 172475b29833Smrg # VxWorks passes extra cpu info in the 4th filed. 172575b29833Smrg simlinux | simwindows | spe) 172675b29833Smrg ;; 172775b29833Smrg # Now accept the basic system types. 172875b29833Smrg # The portable systems comes first. 172975b29833Smrg # Each alternative MUST end in a * to match a version number. 173075b29833Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 173175b29833Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 173275b29833Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 173375b29833Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 173475b29833Smrg | hiux* | abug | nacl* | netware* | windows* \ 173575b29833Smrg | os9* | macos* | osx* | ios* \ 173675b29833Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 173775b29833Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 173875b29833Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173975b29833Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 174075b29833Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 174175b29833Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 174275b29833Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 174375b29833Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 174475b29833Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 174575b29833Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 174675b29833Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 174775b29833Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 174875b29833Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174975b29833Smrg | midipix* | mingw32* | mingw64* | mint* \ 175075b29833Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 175175b29833Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 175275b29833Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 175375b29833Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 175475b29833Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 175575b29833Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 175675b29833Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 175775b29833Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 175875b29833Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175975b29833Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 176075b29833Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 176175b29833Smrg | fiwix* | mlibc* ) 176275b29833Smrg ;; 176375b29833Smrg # This one is extra strict with allowed versions 176475b29833Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 176575b29833Smrg # Don't forget version if it is 3.2v4 or newer. 176675b29833Smrg ;; 176775b29833Smrg none) 176875b29833Smrg ;; 176975b29833Smrg kernel* ) 177075b29833Smrg # Restricted further below 177175b29833Smrg ;; 177275b29833Smrg *) 177375b29833Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 177475b29833Smrg exit 1 177575b29833Smrg ;; 177675b29833Smrgesac 177775b29833Smrg 177875b29833Smrg# As a final step for OS-related things, validate the OS-kernel combination 177975b29833Smrg# (given a valid OS), if there is a kernel. 178075b29833Smrgcase $kernel-$os in 178175b29833Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 178275b29833Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 178375b29833Smrg ;; 178475b29833Smrg uclinux-uclibc* ) 178575b29833Smrg ;; 178675b29833Smrg managarm-mlibc* | managarm-kernel* ) 178775b29833Smrg ;; 178875b29833Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 178975b29833Smrg # These are just libc implementations, not actual OSes, and thus 179075b29833Smrg # require a kernel. 179175b29833Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 179275b29833Smrg exit 1 179375b29833Smrg ;; 179475b29833Smrg -kernel* ) 179575b29833Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 179675b29833Smrg exit 1 179775b29833Smrg ;; 179875b29833Smrg *-kernel* ) 179975b29833Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 180075b29833Smrg exit 1 180175b29833Smrg ;; 180275b29833Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 180375b29833Smrg ;; 180475b29833Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 180575b29833Smrg ;; 180675b29833Smrg nto-qnx*) 180775b29833Smrg ;; 180875b29833Smrg os2-emx) 180975b29833Smrg ;; 181075b29833Smrg *-eabi* | *-gnueabi*) 181175b29833Smrg ;; 181275b29833Smrg -*) 181375b29833Smrg # Blank kernel with real OS is always fine. 181475b29833Smrg ;; 181575b29833Smrg *-*) 181675b29833Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 181775b29833Smrg exit 1 181875b29833Smrg ;; 181975b29833Smrgesac 182075b29833Smrg 182175b29833Smrg# Here we handle the case where we know the os, and the CPU type, but not the 182275b29833Smrg# manufacturer. We pick the logical manufacturer. 182375b29833Smrgcase $vendor in 182475b29833Smrg unknown) 182575b29833Smrg case $cpu-$os in 182675b29833Smrg *-riscix*) 182775b29833Smrg vendor=acorn 182875b29833Smrg ;; 182975b29833Smrg *-sunos*) 183075b29833Smrg vendor=sun 183175b29833Smrg ;; 183275b29833Smrg *-cnk* | *-aix*) 183375b29833Smrg vendor=ibm 183475b29833Smrg ;; 183575b29833Smrg *-beos*) 183675b29833Smrg vendor=be 183775b29833Smrg ;; 183875b29833Smrg *-hpux*) 183975b29833Smrg vendor=hp 184075b29833Smrg ;; 184175b29833Smrg *-mpeix*) 184275b29833Smrg vendor=hp 184375b29833Smrg ;; 184475b29833Smrg *-hiux*) 184575b29833Smrg vendor=hitachi 184675b29833Smrg ;; 184775b29833Smrg *-unos*) 184875b29833Smrg vendor=crds 184975b29833Smrg ;; 185075b29833Smrg *-dgux*) 185175b29833Smrg vendor=dg 185275b29833Smrg ;; 185375b29833Smrg *-luna*) 185475b29833Smrg vendor=omron 185575b29833Smrg ;; 185675b29833Smrg *-genix*) 185775b29833Smrg vendor=ns 185875b29833Smrg ;; 185975b29833Smrg *-clix*) 186075b29833Smrg vendor=intergraph 186175b29833Smrg ;; 186275b29833Smrg *-mvs* | *-opened*) 186375b29833Smrg vendor=ibm 186475b29833Smrg ;; 186575b29833Smrg *-os400*) 186675b29833Smrg vendor=ibm 186775b29833Smrg ;; 186875b29833Smrg s390-* | s390x-*) 186975b29833Smrg vendor=ibm 187075b29833Smrg ;; 187175b29833Smrg *-ptx*) 187275b29833Smrg vendor=sequent 187375b29833Smrg ;; 187475b29833Smrg *-tpf*) 187575b29833Smrg vendor=ibm 187675b29833Smrg ;; 187775b29833Smrg *-vxsim* | *-vxworks* | *-windiss*) 187875b29833Smrg vendor=wrs 187975b29833Smrg ;; 188075b29833Smrg *-aux*) 188175b29833Smrg vendor=apple 188275b29833Smrg ;; 188375b29833Smrg *-hms*) 188475b29833Smrg vendor=hitachi 188575b29833Smrg ;; 188675b29833Smrg *-mpw* | *-macos*) 188775b29833Smrg vendor=apple 188875b29833Smrg ;; 188975b29833Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 189075b29833Smrg vendor=atari 189175b29833Smrg ;; 189275b29833Smrg *-vos*) 189375b29833Smrg vendor=stratus 189475b29833Smrg ;; 189575b29833Smrg esac 189675b29833Smrg ;; 189775b29833Smrgesac 189875b29833Smrg 189975b29833Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 190075b29833Smrgexit 190175b29833Smrg 190275b29833Smrg# Local variables: 190375b29833Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 190475b29833Smrg# time-stamp-start: "timestamp='" 190575b29833Smrg# time-stamp-format: "%:y-%02m-%02d" 190675b29833Smrg# time-stamp-end: "'" 190775b29833Smrg# End: 1908