1943345d3Smrg#! /bin/sh 2943345d3Smrg# Configuration validation subroutine script. 315ffece8Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 4943345d3Smrg 515ffece8Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6943345d3Smrg 715ffece8Smrgtimestamp='2023-01-21' 815ffece8Smrg 915ffece8Smrg# This file is free software; you can redistribute it and/or modify it 1015ffece8Smrg# under the terms of the GNU General Public License as published by 1115ffece8Smrg# the Free Software Foundation, either version 3 of the License, or 12943345d3Smrg# (at your option) any later version. 13943345d3Smrg# 1415ffece8Smrg# This program is distributed in the hope that it will be useful, but 1515ffece8Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1615ffece8Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1715ffece8Smrg# General Public License for more details. 18943345d3Smrg# 19943345d3Smrg# You should have received a copy of the GNU General Public License 2015ffece8Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21f67b85aaSmrg# 22943345d3Smrg# As a special exception to the GNU General Public License, if you 23943345d3Smrg# distribute this file as part of a program that contains a 24943345d3Smrg# configuration script generated by Autoconf, you may include it under 2515ffece8Smrg# the same distribution terms that you use for the rest of that 2615ffece8Smrg# program. This Exception is an additional permission under section 7 2715ffece8Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28943345d3Smrg 29f67b85aaSmrg 3015ffece8Smrg# Please send patches to <config-patches@gnu.org>. 31943345d3Smrg# 32943345d3Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33943345d3Smrg# Supply the specified configuration type as an argument. 34943345d3Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35943345d3Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36943345d3Smrg 37a7b590b3Smrg# You can get the latest version of this script from: 3815ffece8Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39a7b590b3Smrg 40943345d3Smrg# This file is supposed to be the same for all GNU packages 41943345d3Smrg# and recognize all the CPU types, system types and aliases 42943345d3Smrg# that are meaningful with *any* GNU software. 43943345d3Smrg# Each package is responsible for reporting which valid configurations 44943345d3Smrg# it does not support. The user should be able to distinguish 45943345d3Smrg# a failure to support a valid configuration from a meaningless 46943345d3Smrg# configuration. 47943345d3Smrg 48943345d3Smrg# The goal of this file is to map all the various variations of a given 49943345d3Smrg# machine specification into a single specification in the form: 50943345d3Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51943345d3Smrg# or in some cases, the newer four-part form: 52943345d3Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53943345d3Smrg# It is wrong to echo any other type of specification. 54943345d3Smrg 5515ffece8Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 5615ffece8Smrg# about features and limitations of the classic Bourne shell that were 5715ffece8Smrg# superseded or lifted in POSIX. However, this script identifies a wide 5815ffece8Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5915ffece8Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6015ffece8Smrg# have a pre-POSIX /bin/sh. 6115ffece8Smrg 62943345d3Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63943345d3Smrg 64943345d3Smrgusage="\ 6515ffece8SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66943345d3Smrg 67943345d3SmrgCanonicalize a configuration name. 68943345d3Smrg 6915ffece8SmrgOptions: 70943345d3Smrg -h, --help print this help, then exit 71943345d3Smrg -t, --time-stamp print date of last modification, then exit 72943345d3Smrg -v, --version print version number, then exit 73943345d3Smrg 74943345d3SmrgReport bugs and patches to <config-patches@gnu.org>." 75943345d3Smrg 76943345d3Smrgversion="\ 77943345d3SmrgGNU config.sub ($timestamp) 78943345d3Smrg 7915ffece8SmrgCopyright 1992-2023 Free Software Foundation, Inc. 80943345d3Smrg 81943345d3SmrgThis is free software; see the source for copying conditions. There is NO 82943345d3Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83943345d3Smrg 84943345d3Smrghelp=" 85943345d3SmrgTry \`$me --help' for more information." 86943345d3Smrg 87943345d3Smrg# Parse command line 88943345d3Smrgwhile test $# -gt 0 ; do 89943345d3Smrg case $1 in 90943345d3Smrg --time-stamp | --time* | -t ) 91f67b85aaSmrg echo "$timestamp" ; exit ;; 92943345d3Smrg --version | -v ) 93f67b85aaSmrg echo "$version" ; exit ;; 94943345d3Smrg --help | --h* | -h ) 95f67b85aaSmrg echo "$usage"; exit ;; 96943345d3Smrg -- ) # Stop option processing 97943345d3Smrg shift; break ;; 98943345d3Smrg - ) # Use stdin as input. 99943345d3Smrg break ;; 100943345d3Smrg -* ) 10115ffece8Smrg echo "$me: invalid option $1$help" >&2 102943345d3Smrg exit 1 ;; 103943345d3Smrg 104943345d3Smrg *local*) 105943345d3Smrg # First pass through any local machine types. 10615ffece8Smrg echo "$1" 107f67b85aaSmrg exit ;; 108943345d3Smrg 109943345d3Smrg * ) 110943345d3Smrg break ;; 111943345d3Smrg esac 112943345d3Smrgdone 113943345d3Smrg 114943345d3Smrgcase $# in 115943345d3Smrg 0) echo "$me: missing argument$help" >&2 116943345d3Smrg exit 1;; 117943345d3Smrg 1) ;; 118943345d3Smrg *) echo "$me: too many arguments$help" >&2 119943345d3Smrg exit 1;; 120943345d3Smrgesac 121943345d3Smrg 12215ffece8Smrg# Split fields of configuration type 12315ffece8Smrg# shellcheck disable=SC2162 12415ffece8Smrgsaved_IFS=$IFS 12515ffece8SmrgIFS="-" read field1 field2 field3 field4 <<EOF 12615ffece8Smrg$1 12715ffece8SmrgEOF 12815ffece8SmrgIFS=$saved_IFS 129943345d3Smrg 13015ffece8Smrg# Separate into logical components for further validation 13115ffece8Smrgcase $1 in 13215ffece8Smrg *-*-*-*-*) 13315ffece8Smrg echo Invalid configuration \`"$1"\': more than four components >&2 13415ffece8Smrg exit 1 135943345d3Smrg ;; 13615ffece8Smrg *-*-*-*) 13715ffece8Smrg basic_machine=$field1-$field2 13815ffece8Smrg basic_os=$field3-$field4 139943345d3Smrg ;; 14015ffece8Smrg *-*-*) 14115ffece8Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14215ffece8Smrg # parts 14315ffece8Smrg maybe_os=$field2-$field3 14415ffece8Smrg case $maybe_os in 14515ffece8Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 14615ffece8Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14715ffece8Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14815ffece8Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 14915ffece8Smrg basic_machine=$field1 15015ffece8Smrg basic_os=$maybe_os 15115ffece8Smrg ;; 15215ffece8Smrg android-linux) 15315ffece8Smrg basic_machine=$field1-unknown 15415ffece8Smrg basic_os=linux-android 15515ffece8Smrg ;; 15615ffece8Smrg *) 15715ffece8Smrg basic_machine=$field1-$field2 15815ffece8Smrg basic_os=$field3 15915ffece8Smrg ;; 16015ffece8Smrg esac 161943345d3Smrg ;; 16215ffece8Smrg *-*) 16315ffece8Smrg # A lone config we happen to match not fitting any pattern 16415ffece8Smrg case $field1-$field2 in 16515ffece8Smrg decstation-3100) 16615ffece8Smrg basic_machine=mips-dec 16715ffece8Smrg basic_os= 16815ffece8Smrg ;; 16915ffece8Smrg *-*) 17015ffece8Smrg # Second component is usually, but not always the OS 17115ffece8Smrg case $field2 in 17215ffece8Smrg # Prevent following clause from handling this valid os 17315ffece8Smrg sun*os*) 17415ffece8Smrg basic_machine=$field1 17515ffece8Smrg basic_os=$field2 17615ffece8Smrg ;; 17715ffece8Smrg zephyr*) 17815ffece8Smrg basic_machine=$field1-unknown 17915ffece8Smrg basic_os=$field2 18015ffece8Smrg ;; 18115ffece8Smrg # Manufacturers 18215ffece8Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18315ffece8Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18415ffece8Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18515ffece8Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18615ffece8Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18715ffece8Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18815ffece8Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18915ffece8Smrg | microblaze* | sim | cisco \ 19015ffece8Smrg | oki | wec | wrs | winbond) 19115ffece8Smrg basic_machine=$field1-$field2 19215ffece8Smrg basic_os= 19315ffece8Smrg ;; 19415ffece8Smrg *) 19515ffece8Smrg basic_machine=$field1 19615ffece8Smrg basic_os=$field2 19715ffece8Smrg ;; 19815ffece8Smrg esac 19915ffece8Smrg ;; 20015ffece8Smrg esac 201943345d3Smrg ;; 20215ffece8Smrg *) 20315ffece8Smrg # Convert single-component short-hands not valid as part of 20415ffece8Smrg # multi-component configurations. 20515ffece8Smrg case $field1 in 20615ffece8Smrg 386bsd) 20715ffece8Smrg basic_machine=i386-pc 20815ffece8Smrg basic_os=bsd 20915ffece8Smrg ;; 21015ffece8Smrg a29khif) 21115ffece8Smrg basic_machine=a29k-amd 21215ffece8Smrg basic_os=udi 21315ffece8Smrg ;; 21415ffece8Smrg adobe68k) 21515ffece8Smrg basic_machine=m68010-adobe 21615ffece8Smrg basic_os=scout 21715ffece8Smrg ;; 21815ffece8Smrg alliant) 21915ffece8Smrg basic_machine=fx80-alliant 22015ffece8Smrg basic_os= 22115ffece8Smrg ;; 22215ffece8Smrg altos | altos3068) 22315ffece8Smrg basic_machine=m68k-altos 22415ffece8Smrg basic_os= 22515ffece8Smrg ;; 22615ffece8Smrg am29k) 22715ffece8Smrg basic_machine=a29k-none 22815ffece8Smrg basic_os=bsd 22915ffece8Smrg ;; 23015ffece8Smrg amdahl) 23115ffece8Smrg basic_machine=580-amdahl 23215ffece8Smrg basic_os=sysv 23315ffece8Smrg ;; 23415ffece8Smrg amiga) 23515ffece8Smrg basic_machine=m68k-unknown 23615ffece8Smrg basic_os= 23715ffece8Smrg ;; 23815ffece8Smrg amigaos | amigados) 23915ffece8Smrg basic_machine=m68k-unknown 24015ffece8Smrg basic_os=amigaos 24115ffece8Smrg ;; 24215ffece8Smrg amigaunix | amix) 24315ffece8Smrg basic_machine=m68k-unknown 24415ffece8Smrg basic_os=sysv4 24515ffece8Smrg ;; 24615ffece8Smrg apollo68) 24715ffece8Smrg basic_machine=m68k-apollo 24815ffece8Smrg basic_os=sysv 24915ffece8Smrg ;; 25015ffece8Smrg apollo68bsd) 25115ffece8Smrg basic_machine=m68k-apollo 25215ffece8Smrg basic_os=bsd 25315ffece8Smrg ;; 25415ffece8Smrg aros) 25515ffece8Smrg basic_machine=i386-pc 25615ffece8Smrg basic_os=aros 25715ffece8Smrg ;; 25815ffece8Smrg aux) 25915ffece8Smrg basic_machine=m68k-apple 26015ffece8Smrg basic_os=aux 26115ffece8Smrg ;; 26215ffece8Smrg balance) 26315ffece8Smrg basic_machine=ns32k-sequent 26415ffece8Smrg basic_os=dynix 26515ffece8Smrg ;; 26615ffece8Smrg blackfin) 26715ffece8Smrg basic_machine=bfin-unknown 26815ffece8Smrg basic_os=linux 26915ffece8Smrg ;; 27015ffece8Smrg cegcc) 27115ffece8Smrg basic_machine=arm-unknown 27215ffece8Smrg basic_os=cegcc 27315ffece8Smrg ;; 27415ffece8Smrg convex-c1) 27515ffece8Smrg basic_machine=c1-convex 27615ffece8Smrg basic_os=bsd 27715ffece8Smrg ;; 27815ffece8Smrg convex-c2) 27915ffece8Smrg basic_machine=c2-convex 28015ffece8Smrg basic_os=bsd 28115ffece8Smrg ;; 28215ffece8Smrg convex-c32) 28315ffece8Smrg basic_machine=c32-convex 28415ffece8Smrg basic_os=bsd 28515ffece8Smrg ;; 28615ffece8Smrg convex-c34) 28715ffece8Smrg basic_machine=c34-convex 28815ffece8Smrg basic_os=bsd 28915ffece8Smrg ;; 29015ffece8Smrg convex-c38) 29115ffece8Smrg basic_machine=c38-convex 29215ffece8Smrg basic_os=bsd 29315ffece8Smrg ;; 29415ffece8Smrg cray) 29515ffece8Smrg basic_machine=j90-cray 29615ffece8Smrg basic_os=unicos 29715ffece8Smrg ;; 29815ffece8Smrg crds | unos) 29915ffece8Smrg basic_machine=m68k-crds 30015ffece8Smrg basic_os= 30115ffece8Smrg ;; 30215ffece8Smrg da30) 30315ffece8Smrg basic_machine=m68k-da30 30415ffece8Smrg basic_os= 30515ffece8Smrg ;; 30615ffece8Smrg decstation | pmax | pmin | dec3100 | decstatn) 30715ffece8Smrg basic_machine=mips-dec 30815ffece8Smrg basic_os= 30915ffece8Smrg ;; 31015ffece8Smrg delta88) 31115ffece8Smrg basic_machine=m88k-motorola 31215ffece8Smrg basic_os=sysv3 31315ffece8Smrg ;; 31415ffece8Smrg dicos) 31515ffece8Smrg basic_machine=i686-pc 31615ffece8Smrg basic_os=dicos 31715ffece8Smrg ;; 31815ffece8Smrg djgpp) 31915ffece8Smrg basic_machine=i586-pc 32015ffece8Smrg basic_os=msdosdjgpp 32115ffece8Smrg ;; 32215ffece8Smrg ebmon29k) 32315ffece8Smrg basic_machine=a29k-amd 32415ffece8Smrg basic_os=ebmon 32515ffece8Smrg ;; 32615ffece8Smrg es1800 | OSE68k | ose68k | ose | OSE) 32715ffece8Smrg basic_machine=m68k-ericsson 32815ffece8Smrg basic_os=ose 32915ffece8Smrg ;; 33015ffece8Smrg gmicro) 33115ffece8Smrg basic_machine=tron-gmicro 33215ffece8Smrg basic_os=sysv 33315ffece8Smrg ;; 33415ffece8Smrg go32) 33515ffece8Smrg basic_machine=i386-pc 33615ffece8Smrg basic_os=go32 33715ffece8Smrg ;; 33815ffece8Smrg h8300hms) 33915ffece8Smrg basic_machine=h8300-hitachi 34015ffece8Smrg basic_os=hms 34115ffece8Smrg ;; 34215ffece8Smrg h8300xray) 34315ffece8Smrg basic_machine=h8300-hitachi 34415ffece8Smrg basic_os=xray 34515ffece8Smrg ;; 34615ffece8Smrg h8500hms) 34715ffece8Smrg basic_machine=h8500-hitachi 34815ffece8Smrg basic_os=hms 34915ffece8Smrg ;; 35015ffece8Smrg harris) 35115ffece8Smrg basic_machine=m88k-harris 35215ffece8Smrg basic_os=sysv3 35315ffece8Smrg ;; 35415ffece8Smrg hp300 | hp300hpux) 35515ffece8Smrg basic_machine=m68k-hp 35615ffece8Smrg basic_os=hpux 35715ffece8Smrg ;; 35815ffece8Smrg hp300bsd) 35915ffece8Smrg basic_machine=m68k-hp 36015ffece8Smrg basic_os=bsd 36115ffece8Smrg ;; 36215ffece8Smrg hppaosf) 36315ffece8Smrg basic_machine=hppa1.1-hp 36415ffece8Smrg basic_os=osf 36515ffece8Smrg ;; 36615ffece8Smrg hppro) 36715ffece8Smrg basic_machine=hppa1.1-hp 36815ffece8Smrg basic_os=proelf 36915ffece8Smrg ;; 37015ffece8Smrg i386mach) 37115ffece8Smrg basic_machine=i386-mach 37215ffece8Smrg basic_os=mach 37315ffece8Smrg ;; 37415ffece8Smrg isi68 | isi) 37515ffece8Smrg basic_machine=m68k-isi 37615ffece8Smrg basic_os=sysv 37715ffece8Smrg ;; 37815ffece8Smrg m68knommu) 37915ffece8Smrg basic_machine=m68k-unknown 38015ffece8Smrg basic_os=linux 38115ffece8Smrg ;; 38215ffece8Smrg magnum | m3230) 38315ffece8Smrg basic_machine=mips-mips 38415ffece8Smrg basic_os=sysv 38515ffece8Smrg ;; 38615ffece8Smrg merlin) 38715ffece8Smrg basic_machine=ns32k-utek 38815ffece8Smrg basic_os=sysv 38915ffece8Smrg ;; 39015ffece8Smrg mingw64) 39115ffece8Smrg basic_machine=x86_64-pc 39215ffece8Smrg basic_os=mingw64 39315ffece8Smrg ;; 39415ffece8Smrg mingw32) 39515ffece8Smrg basic_machine=i686-pc 39615ffece8Smrg basic_os=mingw32 39715ffece8Smrg ;; 39815ffece8Smrg mingw32ce) 39915ffece8Smrg basic_machine=arm-unknown 40015ffece8Smrg basic_os=mingw32ce 40115ffece8Smrg ;; 40215ffece8Smrg monitor) 40315ffece8Smrg basic_machine=m68k-rom68k 40415ffece8Smrg basic_os=coff 40515ffece8Smrg ;; 40615ffece8Smrg morphos) 40715ffece8Smrg basic_machine=powerpc-unknown 40815ffece8Smrg basic_os=morphos 40915ffece8Smrg ;; 41015ffece8Smrg moxiebox) 41115ffece8Smrg basic_machine=moxie-unknown 41215ffece8Smrg basic_os=moxiebox 41315ffece8Smrg ;; 41415ffece8Smrg msdos) 41515ffece8Smrg basic_machine=i386-pc 41615ffece8Smrg basic_os=msdos 41715ffece8Smrg ;; 41815ffece8Smrg msys) 41915ffece8Smrg basic_machine=i686-pc 42015ffece8Smrg basic_os=msys 42115ffece8Smrg ;; 42215ffece8Smrg mvs) 42315ffece8Smrg basic_machine=i370-ibm 42415ffece8Smrg basic_os=mvs 42515ffece8Smrg ;; 42615ffece8Smrg nacl) 42715ffece8Smrg basic_machine=le32-unknown 42815ffece8Smrg basic_os=nacl 42915ffece8Smrg ;; 43015ffece8Smrg ncr3000) 43115ffece8Smrg basic_machine=i486-ncr 43215ffece8Smrg basic_os=sysv4 43315ffece8Smrg ;; 43415ffece8Smrg netbsd386) 43515ffece8Smrg basic_machine=i386-pc 43615ffece8Smrg basic_os=netbsd 43715ffece8Smrg ;; 43815ffece8Smrg netwinder) 43915ffece8Smrg basic_machine=armv4l-rebel 44015ffece8Smrg basic_os=linux 44115ffece8Smrg ;; 44215ffece8Smrg news | news700 | news800 | news900) 44315ffece8Smrg basic_machine=m68k-sony 44415ffece8Smrg basic_os=newsos 44515ffece8Smrg ;; 44615ffece8Smrg news1000) 44715ffece8Smrg basic_machine=m68030-sony 44815ffece8Smrg basic_os=newsos 44915ffece8Smrg ;; 45015ffece8Smrg necv70) 45115ffece8Smrg basic_machine=v70-nec 45215ffece8Smrg basic_os=sysv 45315ffece8Smrg ;; 45415ffece8Smrg nh3000) 45515ffece8Smrg basic_machine=m68k-harris 45615ffece8Smrg basic_os=cxux 45715ffece8Smrg ;; 45815ffece8Smrg nh[45]000) 45915ffece8Smrg basic_machine=m88k-harris 46015ffece8Smrg basic_os=cxux 46115ffece8Smrg ;; 46215ffece8Smrg nindy960) 46315ffece8Smrg basic_machine=i960-intel 46415ffece8Smrg basic_os=nindy 46515ffece8Smrg ;; 46615ffece8Smrg mon960) 46715ffece8Smrg basic_machine=i960-intel 46815ffece8Smrg basic_os=mon960 46915ffece8Smrg ;; 47015ffece8Smrg nonstopux) 47115ffece8Smrg basic_machine=mips-compaq 47215ffece8Smrg basic_os=nonstopux 47315ffece8Smrg ;; 47415ffece8Smrg os400) 47515ffece8Smrg basic_machine=powerpc-ibm 47615ffece8Smrg basic_os=os400 47715ffece8Smrg ;; 47815ffece8Smrg OSE68000 | ose68000) 47915ffece8Smrg basic_machine=m68000-ericsson 48015ffece8Smrg basic_os=ose 48115ffece8Smrg ;; 48215ffece8Smrg os68k) 48315ffece8Smrg basic_machine=m68k-none 48415ffece8Smrg basic_os=os68k 48515ffece8Smrg ;; 48615ffece8Smrg paragon) 48715ffece8Smrg basic_machine=i860-intel 48815ffece8Smrg basic_os=osf 48915ffece8Smrg ;; 49015ffece8Smrg parisc) 49115ffece8Smrg basic_machine=hppa-unknown 49215ffece8Smrg basic_os=linux 49315ffece8Smrg ;; 49415ffece8Smrg psp) 49515ffece8Smrg basic_machine=mipsallegrexel-sony 49615ffece8Smrg basic_os=psp 49715ffece8Smrg ;; 49815ffece8Smrg pw32) 49915ffece8Smrg basic_machine=i586-unknown 50015ffece8Smrg basic_os=pw32 50115ffece8Smrg ;; 50215ffece8Smrg rdos | rdos64) 50315ffece8Smrg basic_machine=x86_64-pc 50415ffece8Smrg basic_os=rdos 50515ffece8Smrg ;; 50615ffece8Smrg rdos32) 50715ffece8Smrg basic_machine=i386-pc 50815ffece8Smrg basic_os=rdos 50915ffece8Smrg ;; 51015ffece8Smrg rom68k) 51115ffece8Smrg basic_machine=m68k-rom68k 51215ffece8Smrg basic_os=coff 51315ffece8Smrg ;; 51415ffece8Smrg sa29200) 51515ffece8Smrg basic_machine=a29k-amd 51615ffece8Smrg basic_os=udi 51715ffece8Smrg ;; 51815ffece8Smrg sei) 51915ffece8Smrg basic_machine=mips-sei 52015ffece8Smrg basic_os=seiux 52115ffece8Smrg ;; 52215ffece8Smrg sequent) 52315ffece8Smrg basic_machine=i386-sequent 52415ffece8Smrg basic_os= 52515ffece8Smrg ;; 52615ffece8Smrg sps7) 52715ffece8Smrg basic_machine=m68k-bull 52815ffece8Smrg basic_os=sysv2 52915ffece8Smrg ;; 53015ffece8Smrg st2000) 53115ffece8Smrg basic_machine=m68k-tandem 53215ffece8Smrg basic_os= 53315ffece8Smrg ;; 53415ffece8Smrg stratus) 53515ffece8Smrg basic_machine=i860-stratus 53615ffece8Smrg basic_os=sysv4 53715ffece8Smrg ;; 53815ffece8Smrg sun2) 53915ffece8Smrg basic_machine=m68000-sun 54015ffece8Smrg basic_os= 54115ffece8Smrg ;; 54215ffece8Smrg sun2os3) 54315ffece8Smrg basic_machine=m68000-sun 54415ffece8Smrg basic_os=sunos3 54515ffece8Smrg ;; 54615ffece8Smrg sun2os4) 54715ffece8Smrg basic_machine=m68000-sun 54815ffece8Smrg basic_os=sunos4 54915ffece8Smrg ;; 55015ffece8Smrg sun3) 55115ffece8Smrg basic_machine=m68k-sun 55215ffece8Smrg basic_os= 55315ffece8Smrg ;; 55415ffece8Smrg sun3os3) 55515ffece8Smrg basic_machine=m68k-sun 55615ffece8Smrg basic_os=sunos3 55715ffece8Smrg ;; 55815ffece8Smrg sun3os4) 55915ffece8Smrg basic_machine=m68k-sun 56015ffece8Smrg basic_os=sunos4 56115ffece8Smrg ;; 56215ffece8Smrg sun4) 56315ffece8Smrg basic_machine=sparc-sun 56415ffece8Smrg basic_os= 56515ffece8Smrg ;; 56615ffece8Smrg sun4os3) 56715ffece8Smrg basic_machine=sparc-sun 56815ffece8Smrg basic_os=sunos3 56915ffece8Smrg ;; 57015ffece8Smrg sun4os4) 57115ffece8Smrg basic_machine=sparc-sun 57215ffece8Smrg basic_os=sunos4 57315ffece8Smrg ;; 57415ffece8Smrg sun4sol2) 57515ffece8Smrg basic_machine=sparc-sun 57615ffece8Smrg basic_os=solaris2 57715ffece8Smrg ;; 57815ffece8Smrg sun386 | sun386i | roadrunner) 57915ffece8Smrg basic_machine=i386-sun 58015ffece8Smrg basic_os= 58115ffece8Smrg ;; 58215ffece8Smrg sv1) 58315ffece8Smrg basic_machine=sv1-cray 58415ffece8Smrg basic_os=unicos 58515ffece8Smrg ;; 58615ffece8Smrg symmetry) 58715ffece8Smrg basic_machine=i386-sequent 58815ffece8Smrg basic_os=dynix 58915ffece8Smrg ;; 59015ffece8Smrg t3e) 59115ffece8Smrg basic_machine=alphaev5-cray 59215ffece8Smrg basic_os=unicos 59315ffece8Smrg ;; 59415ffece8Smrg t90) 59515ffece8Smrg basic_machine=t90-cray 59615ffece8Smrg basic_os=unicos 59715ffece8Smrg ;; 59815ffece8Smrg toad1) 59915ffece8Smrg basic_machine=pdp10-xkl 60015ffece8Smrg basic_os=tops20 60115ffece8Smrg ;; 60215ffece8Smrg tpf) 60315ffece8Smrg basic_machine=s390x-ibm 60415ffece8Smrg basic_os=tpf 60515ffece8Smrg ;; 60615ffece8Smrg udi29k) 60715ffece8Smrg basic_machine=a29k-amd 60815ffece8Smrg basic_os=udi 60915ffece8Smrg ;; 61015ffece8Smrg ultra3) 61115ffece8Smrg basic_machine=a29k-nyu 61215ffece8Smrg basic_os=sym1 61315ffece8Smrg ;; 61415ffece8Smrg v810 | necv810) 61515ffece8Smrg basic_machine=v810-nec 61615ffece8Smrg basic_os=none 61715ffece8Smrg ;; 61815ffece8Smrg vaxv) 61915ffece8Smrg basic_machine=vax-dec 62015ffece8Smrg basic_os=sysv 62115ffece8Smrg ;; 62215ffece8Smrg vms) 62315ffece8Smrg basic_machine=vax-dec 62415ffece8Smrg basic_os=vms 62515ffece8Smrg ;; 62615ffece8Smrg vsta) 62715ffece8Smrg basic_machine=i386-pc 62815ffece8Smrg basic_os=vsta 62915ffece8Smrg ;; 63015ffece8Smrg vxworks960) 63115ffece8Smrg basic_machine=i960-wrs 63215ffece8Smrg basic_os=vxworks 63315ffece8Smrg ;; 63415ffece8Smrg vxworks68) 63515ffece8Smrg basic_machine=m68k-wrs 63615ffece8Smrg basic_os=vxworks 63715ffece8Smrg ;; 63815ffece8Smrg vxworks29k) 63915ffece8Smrg basic_machine=a29k-wrs 64015ffece8Smrg basic_os=vxworks 64115ffece8Smrg ;; 64215ffece8Smrg xbox) 64315ffece8Smrg basic_machine=i686-pc 64415ffece8Smrg basic_os=mingw32 64515ffece8Smrg ;; 64615ffece8Smrg ymp) 64715ffece8Smrg basic_machine=ymp-cray 64815ffece8Smrg basic_os=unicos 64915ffece8Smrg ;; 65015ffece8Smrg *) 65115ffece8Smrg basic_machine=$1 65215ffece8Smrg basic_os= 65315ffece8Smrg ;; 65415ffece8Smrg esac 655943345d3Smrg ;; 656943345d3Smrgesac 657943345d3Smrg 65815ffece8Smrg# Decode 1-component or ad-hoc basic machines 659943345d3Smrgcase $basic_machine in 66015ffece8Smrg # Here we handle the default manufacturer of certain CPU types. It is in 66115ffece8Smrg # some cases the only manufacturer, in others, it is the most popular. 66215ffece8Smrg w89k) 66315ffece8Smrg cpu=hppa1.1 66415ffece8Smrg vendor=winbond 665f67b85aaSmrg ;; 66615ffece8Smrg op50n) 66715ffece8Smrg cpu=hppa1.1 66815ffece8Smrg vendor=oki 6693e51e026Smrg ;; 67015ffece8Smrg op60c) 67115ffece8Smrg cpu=hppa1.1 67215ffece8Smrg vendor=oki 6733e51e026Smrg ;; 67415ffece8Smrg ibm*) 67515ffece8Smrg cpu=i370 67615ffece8Smrg vendor=ibm 6773e51e026Smrg ;; 67815ffece8Smrg orion105) 67915ffece8Smrg cpu=clipper 68015ffece8Smrg vendor=highlevel 681943345d3Smrg ;; 68215ffece8Smrg mac | mpw | mac-mpw) 68315ffece8Smrg cpu=m68k 68415ffece8Smrg vendor=apple 68515ffece8Smrg ;; 68615ffece8Smrg pmac | pmac-mpw) 68715ffece8Smrg cpu=powerpc 68815ffece8Smrg vendor=apple 6895e695a52Smrg ;; 69015ffece8Smrg 691943345d3Smrg # Recognize the various machine names and aliases which stand 692943345d3Smrg # for a CPU type and a company and sometimes even an OS. 693943345d3Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69415ffece8Smrg cpu=m68000 69515ffece8Smrg vendor=att 696943345d3Smrg ;; 697943345d3Smrg 3b*) 69815ffece8Smrg cpu=we32k 69915ffece8Smrg vendor=att 7005e695a52Smrg ;; 701a7b590b3Smrg bluegene*) 70215ffece8Smrg cpu=powerpc 70315ffece8Smrg vendor=ibm 70415ffece8Smrg basic_os=cnk 705943345d3Smrg ;; 706943345d3Smrg decsystem10* | dec10*) 70715ffece8Smrg cpu=pdp10 70815ffece8Smrg vendor=dec 70915ffece8Smrg basic_os=tops10 710943345d3Smrg ;; 711943345d3Smrg decsystem20* | dec20*) 71215ffece8Smrg cpu=pdp10 71315ffece8Smrg vendor=dec 71415ffece8Smrg basic_os=tops20 715943345d3Smrg ;; 716943345d3Smrg delta | 3300 | motorola-3300 | motorola-delta \ 717943345d3Smrg | 3300-motorola | delta-motorola) 71815ffece8Smrg cpu=m68k 71915ffece8Smrg vendor=motorola 720f67b85aaSmrg ;; 72115ffece8Smrg dpx2*) 72215ffece8Smrg cpu=m68k 72315ffece8Smrg vendor=bull 72415ffece8Smrg basic_os=sysv3 725943345d3Smrg ;; 726943345d3Smrg encore | umax | mmax) 72715ffece8Smrg cpu=ns32k 72815ffece8Smrg vendor=encore 729943345d3Smrg ;; 73015ffece8Smrg elxsi) 73115ffece8Smrg cpu=elxsi 73215ffece8Smrg vendor=elxsi 73315ffece8Smrg basic_os=${basic_os:-bsd} 734943345d3Smrg ;; 735943345d3Smrg fx2800) 73615ffece8Smrg cpu=i860 73715ffece8Smrg vendor=alliant 738943345d3Smrg ;; 739943345d3Smrg genix) 74015ffece8Smrg cpu=ns32k 74115ffece8Smrg vendor=ns 742943345d3Smrg ;; 743943345d3Smrg h3050r* | hiux*) 74415ffece8Smrg cpu=hppa1.1 74515ffece8Smrg vendor=hitachi 74615ffece8Smrg basic_os=hiuxwe2 747943345d3Smrg ;; 748943345d3Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74915ffece8Smrg cpu=hppa1.0 75015ffece8Smrg vendor=hp 751943345d3Smrg ;; 752943345d3Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 75315ffece8Smrg cpu=m68000 75415ffece8Smrg vendor=hp 755943345d3Smrg ;; 756943345d3Smrg hp9k3[2-9][0-9]) 75715ffece8Smrg cpu=m68k 75815ffece8Smrg vendor=hp 759943345d3Smrg ;; 760943345d3Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76115ffece8Smrg cpu=hppa1.0 76215ffece8Smrg vendor=hp 763943345d3Smrg ;; 764943345d3Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76515ffece8Smrg cpu=hppa1.1 76615ffece8Smrg vendor=hp 767943345d3Smrg ;; 768943345d3Smrg hp9k78[0-9] | hp78[0-9]) 769943345d3Smrg # FIXME: really hppa2.0-hp 77015ffece8Smrg cpu=hppa1.1 77115ffece8Smrg vendor=hp 772943345d3Smrg ;; 773943345d3Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774943345d3Smrg # FIXME: really hppa2.0-hp 77515ffece8Smrg cpu=hppa1.1 77615ffece8Smrg vendor=hp 777943345d3Smrg ;; 778943345d3Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 77915ffece8Smrg cpu=hppa1.1 78015ffece8Smrg vendor=hp 781943345d3Smrg ;; 782943345d3Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78315ffece8Smrg cpu=hppa1.0 78415ffece8Smrg vendor=hp 785943345d3Smrg ;; 786943345d3Smrg i*86v32) 78715ffece8Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78815ffece8Smrg vendor=pc 78915ffece8Smrg basic_os=sysv32 790943345d3Smrg ;; 791943345d3Smrg i*86v4*) 79215ffece8Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79315ffece8Smrg vendor=pc 79415ffece8Smrg basic_os=sysv4 795943345d3Smrg ;; 796943345d3Smrg i*86v) 79715ffece8Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79815ffece8Smrg vendor=pc 79915ffece8Smrg basic_os=sysv 800943345d3Smrg ;; 801943345d3Smrg i*86sol2) 80215ffece8Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80315ffece8Smrg vendor=pc 80415ffece8Smrg basic_os=solaris2 805943345d3Smrg ;; 80615ffece8Smrg j90 | j90-cray) 80715ffece8Smrg cpu=j90 80815ffece8Smrg vendor=cray 80915ffece8Smrg basic_os=${basic_os:-unicos} 810943345d3Smrg ;; 811943345d3Smrg iris | iris4d) 81215ffece8Smrg cpu=mips 81315ffece8Smrg vendor=sgi 81415ffece8Smrg case $basic_os in 81515ffece8Smrg irix*) 816943345d3Smrg ;; 817943345d3Smrg *) 81815ffece8Smrg basic_os=irix4 819943345d3Smrg ;; 820943345d3Smrg esac 821943345d3Smrg ;; 822943345d3Smrg miniframe) 82315ffece8Smrg cpu=m68000 82415ffece8Smrg vendor=convergent 825943345d3Smrg ;; 82615ffece8Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82715ffece8Smrg cpu=m68k 82815ffece8Smrg vendor=atari 82915ffece8Smrg basic_os=mint 830943345d3Smrg ;; 831943345d3Smrg news-3600 | risc-news) 83215ffece8Smrg cpu=mips 83315ffece8Smrg vendor=sony 83415ffece8Smrg basic_os=newsos 83515ffece8Smrg ;; 83615ffece8Smrg next | m*-next) 83715ffece8Smrg cpu=m68k 83815ffece8Smrg vendor=next 83915ffece8Smrg case $basic_os in 84015ffece8Smrg openstep*) 84115ffece8Smrg ;; 84215ffece8Smrg nextstep*) 843943345d3Smrg ;; 84415ffece8Smrg ns2*) 84515ffece8Smrg basic_os=nextstep2 846943345d3Smrg ;; 847943345d3Smrg *) 84815ffece8Smrg basic_os=nextstep3 849943345d3Smrg ;; 850943345d3Smrg esac 851943345d3Smrg ;; 852943345d3Smrg np1) 85315ffece8Smrg cpu=np1 85415ffece8Smrg vendor=gould 855943345d3Smrg ;; 856943345d3Smrg op50n-* | op60c-*) 85715ffece8Smrg cpu=hppa1.1 85815ffece8Smrg vendor=oki 85915ffece8Smrg basic_os=proelf 860943345d3Smrg ;; 861943345d3Smrg pa-hitachi) 86215ffece8Smrg cpu=hppa1.1 86315ffece8Smrg vendor=hitachi 86415ffece8Smrg basic_os=hiuxwe2 8655e695a52Smrg ;; 866943345d3Smrg pbd) 86715ffece8Smrg cpu=sparc 86815ffece8Smrg vendor=tti 869943345d3Smrg ;; 870943345d3Smrg pbb) 87115ffece8Smrg cpu=m68k 87215ffece8Smrg vendor=tti 873943345d3Smrg ;; 87415ffece8Smrg pc532) 87515ffece8Smrg cpu=ns32k 87615ffece8Smrg vendor=pc532 877943345d3Smrg ;; 878943345d3Smrg pn) 87915ffece8Smrg cpu=pn 88015ffece8Smrg vendor=gould 881943345d3Smrg ;; 88215ffece8Smrg power) 88315ffece8Smrg cpu=power 88415ffece8Smrg vendor=ibm 885943345d3Smrg ;; 886943345d3Smrg ps2) 88715ffece8Smrg cpu=i386 88815ffece8Smrg vendor=ibm 889943345d3Smrg ;; 890943345d3Smrg rm[46]00) 89115ffece8Smrg cpu=mips 89215ffece8Smrg vendor=siemens 893943345d3Smrg ;; 894943345d3Smrg rtpc | rtpc-*) 89515ffece8Smrg cpu=romp 89615ffece8Smrg vendor=ibm 897f67b85aaSmrg ;; 89815ffece8Smrg sde) 89915ffece8Smrg cpu=mipsisa32 90015ffece8Smrg vendor=sde 90115ffece8Smrg basic_os=${basic_os:-elf} 902943345d3Smrg ;; 90315ffece8Smrg simso-wrs) 90415ffece8Smrg cpu=sparclite 90515ffece8Smrg vendor=wrs 90615ffece8Smrg basic_os=vxworks 907943345d3Smrg ;; 90815ffece8Smrg tower | tower-32) 90915ffece8Smrg cpu=m68k 91015ffece8Smrg vendor=ncr 911943345d3Smrg ;; 91215ffece8Smrg vpp*|vx|vx-*) 91315ffece8Smrg cpu=f301 91415ffece8Smrg vendor=fujitsu 915f67b85aaSmrg ;; 91615ffece8Smrg w65) 91715ffece8Smrg cpu=w65 91815ffece8Smrg vendor=wdc 919943345d3Smrg ;; 92015ffece8Smrg w89k-*) 92115ffece8Smrg cpu=hppa1.1 92215ffece8Smrg vendor=winbond 92315ffece8Smrg basic_os=proelf 924943345d3Smrg ;; 92515ffece8Smrg none) 92615ffece8Smrg cpu=none 92715ffece8Smrg vendor=none 928943345d3Smrg ;; 92915ffece8Smrg leon|leon[3-9]) 93015ffece8Smrg cpu=sparc 93115ffece8Smrg vendor=$basic_machine 9325e695a52Smrg ;; 93315ffece8Smrg leon-*|leon[3-9]-*) 93415ffece8Smrg cpu=sparc 93515ffece8Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936943345d3Smrg ;; 93715ffece8Smrg 93815ffece8Smrg *-*) 93915ffece8Smrg # shellcheck disable=SC2162 94015ffece8Smrg saved_IFS=$IFS 94115ffece8Smrg IFS="-" read cpu vendor <<EOF 94215ffece8Smrg$basic_machine 94315ffece8SmrgEOF 94415ffece8Smrg IFS=$saved_IFS 945943345d3Smrg ;; 94615ffece8Smrg # We use `pc' rather than `unknown' 94715ffece8Smrg # because (1) that's what they normally are, and 94815ffece8Smrg # (2) the word "unknown" tends to confuse beginning users. 94915ffece8Smrg i*86 | x86_64) 95015ffece8Smrg cpu=$basic_machine 95115ffece8Smrg vendor=pc 952943345d3Smrg ;; 95315ffece8Smrg # These rules are duplicated from below for sake of the special case above; 95415ffece8Smrg # i.e. things that normalized to x86 arches should also default to "pc" 95515ffece8Smrg pc98) 95615ffece8Smrg cpu=i386 95715ffece8Smrg vendor=pc 958943345d3Smrg ;; 95915ffece8Smrg x64 | amd64) 96015ffece8Smrg cpu=x86_64 96115ffece8Smrg vendor=pc 962943345d3Smrg ;; 96315ffece8Smrg # Recognize the basic CPU types without company name. 96415ffece8Smrg *) 96515ffece8Smrg cpu=$basic_machine 96615ffece8Smrg vendor=unknown 967943345d3Smrg ;; 96815ffece8Smrgesac 96915ffece8Smrg 97015ffece8Smrgunset -v basic_machine 97115ffece8Smrg 97215ffece8Smrg# Decode basic machines in the full and proper CPU-Company form. 97315ffece8Smrgcase $cpu-$vendor in 97415ffece8Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97515ffece8Smrg # some cases the only manufacturer, in others, it is the most popular. 97615ffece8Smrg craynv-unknown) 97715ffece8Smrg vendor=cray 97815ffece8Smrg basic_os=${basic_os:-unicosmp} 9793e51e026Smrg ;; 98015ffece8Smrg c90-unknown | c90-cray) 98115ffece8Smrg vendor=cray 98215ffece8Smrg basic_os=${Basic_os:-unicos} 983943345d3Smrg ;; 98415ffece8Smrg fx80-unknown) 98515ffece8Smrg vendor=alliant 986943345d3Smrg ;; 98715ffece8Smrg romp-unknown) 98815ffece8Smrg vendor=ibm 989943345d3Smrg ;; 99015ffece8Smrg mmix-unknown) 99115ffece8Smrg vendor=knuth 992943345d3Smrg ;; 99315ffece8Smrg microblaze-unknown | microblazeel-unknown) 99415ffece8Smrg vendor=xilinx 995943345d3Smrg ;; 99615ffece8Smrg rs6000-unknown) 99715ffece8Smrg vendor=ibm 998943345d3Smrg ;; 99915ffece8Smrg vax-unknown) 100015ffece8Smrg vendor=dec 1001943345d3Smrg ;; 100215ffece8Smrg pdp11-unknown) 100315ffece8Smrg vendor=dec 1004943345d3Smrg ;; 100515ffece8Smrg we32k-unknown) 100615ffece8Smrg vendor=att 1007943345d3Smrg ;; 100815ffece8Smrg cydra-unknown) 100915ffece8Smrg vendor=cydrome 1010943345d3Smrg ;; 101115ffece8Smrg i370-ibm*) 101215ffece8Smrg vendor=ibm 1013943345d3Smrg ;; 101415ffece8Smrg orion-unknown) 101515ffece8Smrg vendor=highlevel 1016943345d3Smrg ;; 101715ffece8Smrg xps-unknown | xps100-unknown) 101815ffece8Smrg cpu=xps100 101915ffece8Smrg vendor=honeywell 1020943345d3Smrg ;; 102115ffece8Smrg 102215ffece8Smrg # Here we normalize CPU types with a missing or matching vendor 102315ffece8Smrg armh-unknown | armh-alt) 102415ffece8Smrg cpu=armv7l 102515ffece8Smrg vendor=alt 102615ffece8Smrg basic_os=${basic_os:-linux-gnueabihf} 1027943345d3Smrg ;; 102815ffece8Smrg dpx20-unknown | dpx20-bull) 102915ffece8Smrg cpu=rs6000 103015ffece8Smrg vendor=bull 103115ffece8Smrg basic_os=${basic_os:-bosx} 1032943345d3Smrg ;; 103315ffece8Smrg 103415ffece8Smrg # Here we normalize CPU types irrespective of the vendor 103515ffece8Smrg amd64-*) 103615ffece8Smrg cpu=x86_64 10375e695a52Smrg ;; 103815ffece8Smrg blackfin-*) 103915ffece8Smrg cpu=bfin 104015ffece8Smrg basic_os=linux 1041943345d3Smrg ;; 104215ffece8Smrg c54x-*) 104315ffece8Smrg cpu=tic54x 1044943345d3Smrg ;; 104515ffece8Smrg c55x-*) 104615ffece8Smrg cpu=tic55x 1047943345d3Smrg ;; 104815ffece8Smrg c6x-*) 104915ffece8Smrg cpu=tic6x 1050943345d3Smrg ;; 105115ffece8Smrg e500v[12]-*) 105215ffece8Smrg cpu=powerpc 105315ffece8Smrg basic_os=${basic_os}"spe" 1054f67b85aaSmrg ;; 105515ffece8Smrg mips3*-*) 105615ffece8Smrg cpu=mips64 1057943345d3Smrg ;; 105815ffece8Smrg ms1-*) 105915ffece8Smrg cpu=mt 1060943345d3Smrg ;; 106115ffece8Smrg m68knommu-*) 106215ffece8Smrg cpu=m68k 106315ffece8Smrg basic_os=linux 1064943345d3Smrg ;; 106515ffece8Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106615ffece8Smrg cpu=s12z 1067943345d3Smrg ;; 106815ffece8Smrg openrisc-*) 106915ffece8Smrg cpu=or32 1070943345d3Smrg ;; 107115ffece8Smrg parisc-*) 107215ffece8Smrg cpu=hppa 107315ffece8Smrg basic_os=linux 1074943345d3Smrg ;; 107515ffece8Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107615ffece8Smrg cpu=i586 1077943345d3Smrg ;; 107815ffece8Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 107915ffece8Smrg cpu=i686 1080943345d3Smrg ;; 108115ffece8Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 108215ffece8Smrg cpu=i686 1083943345d3Smrg ;; 108415ffece8Smrg pentium4-*) 108515ffece8Smrg cpu=i786 1086943345d3Smrg ;; 108715ffece8Smrg pc98-*) 108815ffece8Smrg cpu=i386 1089943345d3Smrg ;; 109015ffece8Smrg ppc-* | ppcbe-*) 109115ffece8Smrg cpu=powerpc 1092f67b85aaSmrg ;; 109315ffece8Smrg ppcle-* | powerpclittle-*) 109415ffece8Smrg cpu=powerpcle 1095943345d3Smrg ;; 109615ffece8Smrg ppc64-*) 109715ffece8Smrg cpu=powerpc64 10983e51e026Smrg ;; 109915ffece8Smrg ppc64le-* | powerpc64little-*) 110015ffece8Smrg cpu=powerpc64le 1101943345d3Smrg ;; 110215ffece8Smrg sb1-*) 110315ffece8Smrg cpu=mipsisa64sb1 1104943345d3Smrg ;; 110515ffece8Smrg sb1el-*) 110615ffece8Smrg cpu=mipsisa64sb1el 1107a7b590b3Smrg ;; 110815ffece8Smrg sh5e[lb]-*) 110915ffece8Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1110943345d3Smrg ;; 111115ffece8Smrg spur-*) 111215ffece8Smrg cpu=spur 1113943345d3Smrg ;; 111415ffece8Smrg strongarm-* | thumb-*) 111515ffece8Smrg cpu=arm 1116943345d3Smrg ;; 111715ffece8Smrg tx39-*) 111815ffece8Smrg cpu=mipstx39 1119943345d3Smrg ;; 112015ffece8Smrg tx39el-*) 112115ffece8Smrg cpu=mipstx39el 1122943345d3Smrg ;; 112315ffece8Smrg x64-*) 112415ffece8Smrg cpu=x86_64 1125f67b85aaSmrg ;; 112615ffece8Smrg xscale-* | xscalee[bl]-*) 112715ffece8Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1128943345d3Smrg ;; 112915ffece8Smrg arm64-* | aarch64le-*) 113015ffece8Smrg cpu=aarch64 1131943345d3Smrg ;; 113215ffece8Smrg 113315ffece8Smrg # Recognize the canonical CPU Types that limit and/or modify the 113415ffece8Smrg # company names they are paired with. 113515ffece8Smrg cr16-*) 113615ffece8Smrg basic_os=${basic_os:-elf} 1137943345d3Smrg ;; 113815ffece8Smrg crisv32-* | etraxfs*-*) 113915ffece8Smrg cpu=crisv32 114015ffece8Smrg vendor=axis 1141943345d3Smrg ;; 114215ffece8Smrg cris-* | etrax*-*) 114315ffece8Smrg cpu=cris 114415ffece8Smrg vendor=axis 1145943345d3Smrg ;; 114615ffece8Smrg crx-*) 114715ffece8Smrg basic_os=${basic_os:-elf} 1148943345d3Smrg ;; 114915ffece8Smrg neo-tandem) 115015ffece8Smrg cpu=neo 115115ffece8Smrg vendor=tandem 1152943345d3Smrg ;; 115315ffece8Smrg nse-tandem) 115415ffece8Smrg cpu=nse 115515ffece8Smrg vendor=tandem 1156943345d3Smrg ;; 115715ffece8Smrg nsr-tandem) 115815ffece8Smrg cpu=nsr 115915ffece8Smrg vendor=tandem 1160943345d3Smrg ;; 116115ffece8Smrg nsv-tandem) 116215ffece8Smrg cpu=nsv 116315ffece8Smrg vendor=tandem 1164943345d3Smrg ;; 116515ffece8Smrg nsx-tandem) 116615ffece8Smrg cpu=nsx 116715ffece8Smrg vendor=tandem 1168943345d3Smrg ;; 116915ffece8Smrg mipsallegrexel-sony) 117015ffece8Smrg cpu=mipsallegrexel 117115ffece8Smrg vendor=sony 1172943345d3Smrg ;; 117315ffece8Smrg tile*-*) 117415ffece8Smrg basic_os=${basic_os:-linux-gnu} 1175943345d3Smrg ;; 117615ffece8Smrg 1177943345d3Smrg *) 117815ffece8Smrg # Recognize the canonical CPU types that are allowed with any 117915ffece8Smrg # company name. 118015ffece8Smrg case $cpu in 118115ffece8Smrg 1750a | 580 \ 118215ffece8Smrg | a29k \ 118315ffece8Smrg | aarch64 | aarch64_be \ 118415ffece8Smrg | abacus \ 118515ffece8Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118615ffece8Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118715ffece8Smrg | alphapca5[67] | alpha64pca5[67] \ 118815ffece8Smrg | am33_2.0 \ 118915ffece8Smrg | amdgcn \ 119015ffece8Smrg | arc | arceb | arc32 | arc64 \ 119115ffece8Smrg | arm | arm[lb]e | arme[lb] | armv* \ 119215ffece8Smrg | avr | avr32 \ 119315ffece8Smrg | asmjs \ 119415ffece8Smrg | ba \ 119515ffece8Smrg | be32 | be64 \ 119615ffece8Smrg | bfin | bpf | bs2000 \ 119715ffece8Smrg | c[123]* | c30 | [cjt]90 | c4x \ 119815ffece8Smrg | c8051 | clipper | craynv | csky | cydra \ 119915ffece8Smrg | d10v | d30v | dlx | dsp16xx \ 120015ffece8Smrg | e2k | elxsi | epiphany \ 120115ffece8Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 120215ffece8Smrg | h8300 | h8500 \ 120315ffece8Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 120415ffece8Smrg | hexagon \ 120515ffece8Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120615ffece8Smrg | ip2k | iq2000 \ 120715ffece8Smrg | k1om \ 120815ffece8Smrg | le32 | le64 \ 120915ffece8Smrg | lm32 \ 121015ffece8Smrg | loongarch32 | loongarch64 \ 121115ffece8Smrg | m32c | m32r | m32rle \ 121215ffece8Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 121315ffece8Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 121415ffece8Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121515ffece8Smrg | microblaze | microblazeel \ 121615ffece8Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121715ffece8Smrg | mips16 \ 121815ffece8Smrg | mips64 | mips64eb | mips64el \ 121915ffece8Smrg | mips64octeon | mips64octeonel \ 122015ffece8Smrg | mips64orion | mips64orionel \ 122115ffece8Smrg | mips64r5900 | mips64r5900el \ 122215ffece8Smrg | mips64vr | mips64vrel \ 122315ffece8Smrg | mips64vr4100 | mips64vr4100el \ 122415ffece8Smrg | mips64vr4300 | mips64vr4300el \ 122515ffece8Smrg | mips64vr5000 | mips64vr5000el \ 122615ffece8Smrg | mips64vr5900 | mips64vr5900el \ 122715ffece8Smrg | mipsisa32 | mipsisa32el \ 122815ffece8Smrg | mipsisa32r2 | mipsisa32r2el \ 122915ffece8Smrg | mipsisa32r3 | mipsisa32r3el \ 123015ffece8Smrg | mipsisa32r5 | mipsisa32r5el \ 123115ffece8Smrg | mipsisa32r6 | mipsisa32r6el \ 123215ffece8Smrg | mipsisa64 | mipsisa64el \ 123315ffece8Smrg | mipsisa64r2 | mipsisa64r2el \ 123415ffece8Smrg | mipsisa64r3 | mipsisa64r3el \ 123515ffece8Smrg | mipsisa64r5 | mipsisa64r5el \ 123615ffece8Smrg | mipsisa64r6 | mipsisa64r6el \ 123715ffece8Smrg | mipsisa64sb1 | mipsisa64sb1el \ 123815ffece8Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 123915ffece8Smrg | mipsr5900 | mipsr5900el \ 124015ffece8Smrg | mipstx39 | mipstx39el \ 124115ffece8Smrg | mmix \ 124215ffece8Smrg | mn10200 | mn10300 \ 124315ffece8Smrg | moxie \ 124415ffece8Smrg | mt \ 124515ffece8Smrg | msp430 \ 124615ffece8Smrg | nds32 | nds32le | nds32be \ 124715ffece8Smrg | nfp \ 124815ffece8Smrg | nios | nios2 | nios2eb | nios2el \ 124915ffece8Smrg | none | np1 | ns16k | ns32k | nvptx \ 125015ffece8Smrg | open8 \ 125115ffece8Smrg | or1k* \ 125215ffece8Smrg | or32 \ 125315ffece8Smrg | orion \ 125415ffece8Smrg | picochip \ 125515ffece8Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125615ffece8Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125715ffece8Smrg | pru \ 125815ffece8Smrg | pyramid \ 125915ffece8Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 126015ffece8Smrg | rl78 | romp | rs6000 | rx \ 126115ffece8Smrg | s390 | s390x \ 126215ffece8Smrg | score \ 126315ffece8Smrg | sh | shl \ 126415ffece8Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126515ffece8Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126615ffece8Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126715ffece8Smrg | sparclite \ 126815ffece8Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126915ffece8Smrg | spu \ 127015ffece8Smrg | tahoe \ 127115ffece8Smrg | thumbv7* \ 127215ffece8Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 127315ffece8Smrg | tron \ 127415ffece8Smrg | ubicom32 \ 127515ffece8Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127615ffece8Smrg | vax \ 127715ffece8Smrg | visium \ 127815ffece8Smrg | w65 \ 127915ffece8Smrg | wasm32 | wasm64 \ 128015ffece8Smrg | we32k \ 128115ffece8Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 128215ffece8Smrg | xstormy16 | xtensa* \ 128315ffece8Smrg | ymp \ 128415ffece8Smrg | z8k | z80) 128515ffece8Smrg ;; 128615ffece8Smrg 128715ffece8Smrg *) 128815ffece8Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128915ffece8Smrg exit 1 129015ffece8Smrg ;; 129115ffece8Smrg esac 1292943345d3Smrg ;; 1293943345d3Smrgesac 1294943345d3Smrg 1295943345d3Smrg# Here we canonicalize certain aliases for manufacturers. 129615ffece8Smrgcase $vendor in 129715ffece8Smrg digital*) 129815ffece8Smrg vendor=dec 1299943345d3Smrg ;; 130015ffece8Smrg commodore*) 130115ffece8Smrg vendor=cbm 1302943345d3Smrg ;; 1303943345d3Smrg *) 1304943345d3Smrg ;; 1305943345d3Smrgesac 1306943345d3Smrg 1307943345d3Smrg# Decode manufacturer-specific aliases for certain operating systems. 1308943345d3Smrg 130915ffece8Smrgif test x$basic_os != x 1310943345d3Smrgthen 131115ffece8Smrg 131215ffece8Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 131315ffece8Smrg# set os. 131415ffece8Smrgcase $basic_os in 131515ffece8Smrg gnu/linux*) 131615ffece8Smrg kernel=linux 131715ffece8Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131815ffece8Smrg ;; 131915ffece8Smrg os2-emx) 132015ffece8Smrg kernel=os2 132115ffece8Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 132215ffece8Smrg ;; 132315ffece8Smrg nto-qnx*) 132415ffece8Smrg kernel=nto 132515ffece8Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132615ffece8Smrg ;; 132715ffece8Smrg *-*) 132815ffece8Smrg # shellcheck disable=SC2162 132915ffece8Smrg saved_IFS=$IFS 133015ffece8Smrg IFS="-" read kernel os <<EOF 133115ffece8Smrg$basic_os 133215ffece8SmrgEOF 133315ffece8Smrg IFS=$saved_IFS 133415ffece8Smrg ;; 133515ffece8Smrg # Default OS when just kernel was specified 133615ffece8Smrg nto*) 133715ffece8Smrg kernel=nto 133815ffece8Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133915ffece8Smrg ;; 134015ffece8Smrg linux*) 134115ffece8Smrg kernel=linux 134215ffece8Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 134315ffece8Smrg ;; 134415ffece8Smrg managarm*) 134515ffece8Smrg kernel=managarm 134615ffece8Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1347a7b590b3Smrg ;; 134815ffece8Smrg *) 134915ffece8Smrg kernel= 135015ffece8Smrg os=$basic_os 1351943345d3Smrg ;; 135215ffece8Smrgesac 135315ffece8Smrg 135415ffece8Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 135515ffece8Smrg# etc.) 135615ffece8Smrgcase $os in 135715ffece8Smrg # First match some system type aliases that might get confused 135815ffece8Smrg # with valid system types. 135915ffece8Smrg # solaris* is a basic system type, with this one exception. 136015ffece8Smrg auroraux) 136115ffece8Smrg os=auroraux 1362943345d3Smrg ;; 136315ffece8Smrg bluegene*) 136415ffece8Smrg os=cnk 1365943345d3Smrg ;; 136615ffece8Smrg solaris1 | solaris1.*) 136715ffece8Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1368943345d3Smrg ;; 136915ffece8Smrg solaris) 137015ffece8Smrg os=solaris2 1371943345d3Smrg ;; 137215ffece8Smrg unixware*) 137315ffece8Smrg os=sysv4.2uw 1374943345d3Smrg ;; 137515ffece8Smrg # es1800 is here to avoid being matched by es* (a different OS) 137615ffece8Smrg es1800*) 137715ffece8Smrg os=ose 1378943345d3Smrg ;; 137915ffece8Smrg # Some version numbers need modification 138015ffece8Smrg chorusos*) 138115ffece8Smrg os=chorusos 1382943345d3Smrg ;; 138315ffece8Smrg isc) 138415ffece8Smrg os=isc2.2 1385943345d3Smrg ;; 138615ffece8Smrg sco6) 138715ffece8Smrg os=sco5v6 1388943345d3Smrg ;; 138915ffece8Smrg sco5) 139015ffece8Smrg os=sco3.2v5 1391f67b85aaSmrg ;; 139215ffece8Smrg sco4) 139315ffece8Smrg os=sco3.2v4 1394943345d3Smrg ;; 139515ffece8Smrg sco3.2.[4-9]*) 139615ffece8Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1397943345d3Smrg ;; 139815ffece8Smrg sco*v* | scout) 139915ffece8Smrg # Don't match below 1400943345d3Smrg ;; 140115ffece8Smrg sco*) 140215ffece8Smrg os=sco3.2v2 1403943345d3Smrg ;; 140415ffece8Smrg psos*) 140515ffece8Smrg os=psos 1406f67b85aaSmrg ;; 140715ffece8Smrg qnx*) 140815ffece8Smrg os=qnx 1409943345d3Smrg ;; 141015ffece8Smrg hiux*) 141115ffece8Smrg os=hiuxwe2 1412943345d3Smrg ;; 141315ffece8Smrg lynx*178) 141415ffece8Smrg os=lynxos178 1415943345d3Smrg ;; 141615ffece8Smrg lynx*5) 141715ffece8Smrg os=lynxos5 1418943345d3Smrg ;; 141915ffece8Smrg lynxos*) 142015ffece8Smrg # don't get caught up in next wildcard 1421943345d3Smrg ;; 142215ffece8Smrg lynx*) 142315ffece8Smrg os=lynxos 1424943345d3Smrg ;; 142515ffece8Smrg mac[0-9]*) 142615ffece8Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1427943345d3Smrg ;; 142815ffece8Smrg opened*) 142915ffece8Smrg os=openedition 1430f67b85aaSmrg ;; 143115ffece8Smrg os400*) 143215ffece8Smrg os=os400 1433943345d3Smrg ;; 143415ffece8Smrg sunos5*) 143515ffece8Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1436943345d3Smrg ;; 143715ffece8Smrg sunos6*) 143815ffece8Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1439943345d3Smrg ;; 144015ffece8Smrg wince*) 144115ffece8Smrg os=wince 1442943345d3Smrg ;; 144315ffece8Smrg utek*) 144415ffece8Smrg os=bsd 1445943345d3Smrg ;; 144615ffece8Smrg dynix*) 144715ffece8Smrg os=bsd 1448943345d3Smrg ;; 144915ffece8Smrg acis*) 145015ffece8Smrg os=aos 1451943345d3Smrg ;; 145215ffece8Smrg atheos*) 145315ffece8Smrg os=atheos 1454f67b85aaSmrg ;; 145515ffece8Smrg syllable*) 145615ffece8Smrg os=syllable 1457943345d3Smrg ;; 145815ffece8Smrg 386bsd) 145915ffece8Smrg os=bsd 1460943345d3Smrg ;; 146115ffece8Smrg ctix* | uts*) 146215ffece8Smrg os=sysv 1463943345d3Smrg ;; 146415ffece8Smrg nova*) 146515ffece8Smrg os=rtmk-nova 1466943345d3Smrg ;; 146715ffece8Smrg ns2) 146815ffece8Smrg os=nextstep2 1469943345d3Smrg ;; 147015ffece8Smrg # Preserve the version number of sinix5. 147115ffece8Smrg sinix5.*) 147215ffece8Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1473943345d3Smrg ;; 147415ffece8Smrg sinix*) 147515ffece8Smrg os=sysv4 1476943345d3Smrg ;; 147715ffece8Smrg tpf*) 147815ffece8Smrg os=tpf 1479943345d3Smrg ;; 148015ffece8Smrg triton*) 148115ffece8Smrg os=sysv3 1482943345d3Smrg ;; 148315ffece8Smrg oss*) 148415ffece8Smrg os=sysv3 1485943345d3Smrg ;; 148615ffece8Smrg svr4*) 148715ffece8Smrg os=sysv4 1488943345d3Smrg ;; 148915ffece8Smrg svr3) 149015ffece8Smrg os=sysv3 1491943345d3Smrg ;; 149215ffece8Smrg sysvr4) 149315ffece8Smrg os=sysv4 1494f67b85aaSmrg ;; 149515ffece8Smrg ose*) 149615ffece8Smrg os=ose 1497a7b590b3Smrg ;; 149815ffece8Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149915ffece8Smrg os=mint 15003e51e026Smrg ;; 150115ffece8Smrg dicos*) 150215ffece8Smrg os=dicos 150315ffece8Smrg ;; 150415ffece8Smrg pikeos*) 150515ffece8Smrg # Until real need of OS specific support for 150615ffece8Smrg # particular features comes up, bare metal 150715ffece8Smrg # configurations are quite functional. 150815ffece8Smrg case $cpu in 150915ffece8Smrg arm*) 151015ffece8Smrg os=eabi 151115ffece8Smrg ;; 151215ffece8Smrg *) 151315ffece8Smrg os=elf 151415ffece8Smrg ;; 151515ffece8Smrg esac 1516943345d3Smrg ;; 1517943345d3Smrg *) 151815ffece8Smrg # No normalization, but not necessarily accepted, that comes below. 1519943345d3Smrg ;; 1520943345d3Smrgesac 152115ffece8Smrg 1522943345d3Smrgelse 1523943345d3Smrg 1524943345d3Smrg# Here we handle the default operating systems that come with various machines. 1525943345d3Smrg# The value should be what the vendor currently ships out the door with their 1526943345d3Smrg# machine or put another way, the most popular os provided with the machine. 1527943345d3Smrg 1528943345d3Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1529943345d3Smrg# "-sun"), then you have to tell the case statement up towards the top 1530943345d3Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1531943345d3Smrg# will signal an error saying that MANUFACTURER isn't an operating 1532943345d3Smrg# system, and we'll never get to this point. 1533943345d3Smrg 153415ffece8Smrgkernel= 153515ffece8Smrgcase $cpu-$vendor in 15363e51e026Smrg score-*) 153715ffece8Smrg os=elf 1538f67b85aaSmrg ;; 15393e51e026Smrg spu-*) 154015ffece8Smrg os=elf 1541f67b85aaSmrg ;; 1542943345d3Smrg *-acorn) 154315ffece8Smrg os=riscix1.2 1544943345d3Smrg ;; 1545943345d3Smrg arm*-rebel) 154615ffece8Smrg kernel=linux 154715ffece8Smrg os=gnu 1548943345d3Smrg ;; 1549943345d3Smrg arm*-semi) 155015ffece8Smrg os=aout 1551943345d3Smrg ;; 15523e51e026Smrg c4x-* | tic4x-*) 155315ffece8Smrg os=coff 155415ffece8Smrg ;; 155515ffece8Smrg c8051-*) 155615ffece8Smrg os=elf 155715ffece8Smrg ;; 155815ffece8Smrg clipper-intergraph) 155915ffece8Smrg os=clix 156015ffece8Smrg ;; 156115ffece8Smrg hexagon-*) 156215ffece8Smrg os=elf 15633e51e026Smrg ;; 15643e51e026Smrg tic54x-*) 156515ffece8Smrg os=coff 15663e51e026Smrg ;; 15673e51e026Smrg tic55x-*) 156815ffece8Smrg os=coff 15693e51e026Smrg ;; 15703e51e026Smrg tic6x-*) 157115ffece8Smrg os=coff 1572943345d3Smrg ;; 1573943345d3Smrg # This must come before the *-dec entry. 1574943345d3Smrg pdp10-*) 157515ffece8Smrg os=tops20 1576943345d3Smrg ;; 1577943345d3Smrg pdp11-*) 157815ffece8Smrg os=none 1579943345d3Smrg ;; 1580943345d3Smrg *-dec | vax-*) 158115ffece8Smrg os=ultrix4.2 1582943345d3Smrg ;; 1583943345d3Smrg m68*-apollo) 158415ffece8Smrg os=domain 1585943345d3Smrg ;; 1586943345d3Smrg i386-sun) 158715ffece8Smrg os=sunos4.0.2 1588943345d3Smrg ;; 1589943345d3Smrg m68000-sun) 159015ffece8Smrg os=sunos3 1591943345d3Smrg ;; 1592943345d3Smrg m68*-cisco) 159315ffece8Smrg os=aout 1594943345d3Smrg ;; 15953e51e026Smrg mep-*) 159615ffece8Smrg os=elf 15975e695a52Smrg ;; 1598943345d3Smrg mips*-cisco) 159915ffece8Smrg os=elf 1600943345d3Smrg ;; 1601943345d3Smrg mips*-*) 160215ffece8Smrg os=elf 1603943345d3Smrg ;; 1604943345d3Smrg or32-*) 160515ffece8Smrg os=coff 1606943345d3Smrg ;; 1607943345d3Smrg *-tti) # must be before sparc entry or we get the wrong os. 160815ffece8Smrg os=sysv3 1609943345d3Smrg ;; 1610943345d3Smrg sparc-* | *-sun) 161115ffece8Smrg os=sunos4.1.1 1612943345d3Smrg ;; 161315ffece8Smrg pru-*) 161415ffece8Smrg os=elf 1615943345d3Smrg ;; 161615ffece8Smrg *-be) 161715ffece8Smrg os=beos 1618f67b85aaSmrg ;; 1619943345d3Smrg *-ibm) 162015ffece8Smrg os=aix 1621943345d3Smrg ;; 16223e51e026Smrg *-knuth) 162315ffece8Smrg os=mmixware 1624f67b85aaSmrg ;; 1625943345d3Smrg *-wec) 162615ffece8Smrg os=proelf 1627943345d3Smrg ;; 1628943345d3Smrg *-winbond) 162915ffece8Smrg os=proelf 1630943345d3Smrg ;; 1631943345d3Smrg *-oki) 163215ffece8Smrg os=proelf 1633943345d3Smrg ;; 1634943345d3Smrg *-hp) 163515ffece8Smrg os=hpux 1636943345d3Smrg ;; 1637943345d3Smrg *-hitachi) 163815ffece8Smrg os=hiux 1639943345d3Smrg ;; 1640943345d3Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 164115ffece8Smrg os=sysv 1642943345d3Smrg ;; 1643943345d3Smrg *-cbm) 164415ffece8Smrg os=amigaos 1645943345d3Smrg ;; 1646943345d3Smrg *-dg) 164715ffece8Smrg os=dgux 1648943345d3Smrg ;; 1649943345d3Smrg *-dolphin) 165015ffece8Smrg os=sysv3 1651943345d3Smrg ;; 1652943345d3Smrg m68k-ccur) 165315ffece8Smrg os=rtu 1654943345d3Smrg ;; 1655943345d3Smrg m88k-omron*) 165615ffece8Smrg os=luna 1657943345d3Smrg ;; 165815ffece8Smrg *-next) 165915ffece8Smrg os=nextstep 1660943345d3Smrg ;; 1661943345d3Smrg *-sequent) 166215ffece8Smrg os=ptx 1663943345d3Smrg ;; 1664943345d3Smrg *-crds) 166515ffece8Smrg os=unos 1666943345d3Smrg ;; 1667943345d3Smrg *-ns) 166815ffece8Smrg os=genix 1669943345d3Smrg ;; 1670943345d3Smrg i370-*) 167115ffece8Smrg os=mvs 1672943345d3Smrg ;; 1673943345d3Smrg *-gould) 167415ffece8Smrg os=sysv 1675943345d3Smrg ;; 1676943345d3Smrg *-highlevel) 167715ffece8Smrg os=bsd 1678943345d3Smrg ;; 1679943345d3Smrg *-encore) 168015ffece8Smrg os=bsd 1681943345d3Smrg ;; 1682943345d3Smrg *-sgi) 168315ffece8Smrg os=irix 1684943345d3Smrg ;; 1685943345d3Smrg *-siemens) 168615ffece8Smrg os=sysv4 1687943345d3Smrg ;; 1688943345d3Smrg *-masscomp) 168915ffece8Smrg os=rtu 1690943345d3Smrg ;; 1691943345d3Smrg f30[01]-fujitsu | f700-fujitsu) 169215ffece8Smrg os=uxpv 1693943345d3Smrg ;; 1694943345d3Smrg *-rom68k) 169515ffece8Smrg os=coff 1696943345d3Smrg ;; 1697943345d3Smrg *-*bug) 169815ffece8Smrg os=coff 1699943345d3Smrg ;; 1700943345d3Smrg *-apple) 170115ffece8Smrg os=macos 1702943345d3Smrg ;; 1703943345d3Smrg *-atari*) 170415ffece8Smrg os=mint 170515ffece8Smrg ;; 170615ffece8Smrg *-wrs) 170715ffece8Smrg os=vxworks 1708943345d3Smrg ;; 1709943345d3Smrg *) 171015ffece8Smrg os=none 1711943345d3Smrg ;; 1712943345d3Smrgesac 171315ffece8Smrg 1714943345d3Smrgfi 1715943345d3Smrg 171615ffece8Smrg# Now, validate our (potentially fixed-up) OS. 171715ffece8Smrgcase $os in 171815ffece8Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171915ffece8Smrg musl* | newlib* | relibc* | uclibc*) 172015ffece8Smrg ;; 172115ffece8Smrg # Likewise for "kernel-abi" 172215ffece8Smrg eabi* | gnueabi*) 172315ffece8Smrg ;; 172415ffece8Smrg # VxWorks passes extra cpu info in the 4th filed. 172515ffece8Smrg simlinux | simwindows | spe) 172615ffece8Smrg ;; 172715ffece8Smrg # Now accept the basic system types. 172815ffece8Smrg # The portable systems comes first. 172915ffece8Smrg # Each alternative MUST end in a * to match a version number. 173015ffece8Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 173115ffece8Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 173215ffece8Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 173315ffece8Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 173415ffece8Smrg | hiux* | abug | nacl* | netware* | windows* \ 173515ffece8Smrg | os9* | macos* | osx* | ios* \ 173615ffece8Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 173715ffece8Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 173815ffece8Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173915ffece8Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 174015ffece8Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 174115ffece8Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 174215ffece8Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 174315ffece8Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 174415ffece8Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 174515ffece8Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 174615ffece8Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 174715ffece8Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 174815ffece8Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174915ffece8Smrg | midipix* | mingw32* | mingw64* | mint* \ 175015ffece8Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 175115ffece8Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 175215ffece8Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 175315ffece8Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 175415ffece8Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 175515ffece8Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 175615ffece8Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 175715ffece8Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 175815ffece8Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175915ffece8Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 176015ffece8Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 176115ffece8Smrg | fiwix* | mlibc* ) 176215ffece8Smrg ;; 176315ffece8Smrg # This one is extra strict with allowed versions 176415ffece8Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 176515ffece8Smrg # Don't forget version if it is 3.2v4 or newer. 176615ffece8Smrg ;; 176715ffece8Smrg none) 176815ffece8Smrg ;; 176915ffece8Smrg kernel* ) 177015ffece8Smrg # Restricted further below 177115ffece8Smrg ;; 177215ffece8Smrg *) 177315ffece8Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 177415ffece8Smrg exit 1 177515ffece8Smrg ;; 177615ffece8Smrgesac 177715ffece8Smrg 177815ffece8Smrg# As a final step for OS-related things, validate the OS-kernel combination 177915ffece8Smrg# (given a valid OS), if there is a kernel. 178015ffece8Smrgcase $kernel-$os in 178115ffece8Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 178215ffece8Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 178315ffece8Smrg ;; 178415ffece8Smrg uclinux-uclibc* ) 178515ffece8Smrg ;; 178615ffece8Smrg managarm-mlibc* | managarm-kernel* ) 178715ffece8Smrg ;; 178815ffece8Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 178915ffece8Smrg # These are just libc implementations, not actual OSes, and thus 179015ffece8Smrg # require a kernel. 179115ffece8Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 179215ffece8Smrg exit 1 179315ffece8Smrg ;; 179415ffece8Smrg -kernel* ) 179515ffece8Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 179615ffece8Smrg exit 1 179715ffece8Smrg ;; 179815ffece8Smrg *-kernel* ) 179915ffece8Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 180015ffece8Smrg exit 1 180115ffece8Smrg ;; 180215ffece8Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 180315ffece8Smrg ;; 180415ffece8Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 180515ffece8Smrg ;; 180615ffece8Smrg nto-qnx*) 180715ffece8Smrg ;; 180815ffece8Smrg os2-emx) 180915ffece8Smrg ;; 181015ffece8Smrg *-eabi* | *-gnueabi*) 181115ffece8Smrg ;; 181215ffece8Smrg -*) 181315ffece8Smrg # Blank kernel with real OS is always fine. 181415ffece8Smrg ;; 181515ffece8Smrg *-*) 181615ffece8Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 181715ffece8Smrg exit 1 181815ffece8Smrg ;; 181915ffece8Smrgesac 182015ffece8Smrg 1821943345d3Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1822943345d3Smrg# manufacturer. We pick the logical manufacturer. 182315ffece8Smrgcase $vendor in 182415ffece8Smrg unknown) 182515ffece8Smrg case $cpu-$os in 182615ffece8Smrg *-riscix*) 1827943345d3Smrg vendor=acorn 1828943345d3Smrg ;; 182915ffece8Smrg *-sunos*) 1830943345d3Smrg vendor=sun 1831943345d3Smrg ;; 183215ffece8Smrg *-cnk* | *-aix*) 1833943345d3Smrg vendor=ibm 1834943345d3Smrg ;; 183515ffece8Smrg *-beos*) 1836943345d3Smrg vendor=be 1837943345d3Smrg ;; 183815ffece8Smrg *-hpux*) 1839943345d3Smrg vendor=hp 1840943345d3Smrg ;; 184115ffece8Smrg *-mpeix*) 1842943345d3Smrg vendor=hp 1843943345d3Smrg ;; 184415ffece8Smrg *-hiux*) 1845943345d3Smrg vendor=hitachi 1846943345d3Smrg ;; 184715ffece8Smrg *-unos*) 1848943345d3Smrg vendor=crds 1849943345d3Smrg ;; 185015ffece8Smrg *-dgux*) 1851943345d3Smrg vendor=dg 1852943345d3Smrg ;; 185315ffece8Smrg *-luna*) 1854943345d3Smrg vendor=omron 1855943345d3Smrg ;; 185615ffece8Smrg *-genix*) 1857943345d3Smrg vendor=ns 1858943345d3Smrg ;; 185915ffece8Smrg *-clix*) 186015ffece8Smrg vendor=intergraph 186115ffece8Smrg ;; 186215ffece8Smrg *-mvs* | *-opened*) 186315ffece8Smrg vendor=ibm 186415ffece8Smrg ;; 186515ffece8Smrg *-os400*) 1866943345d3Smrg vendor=ibm 1867943345d3Smrg ;; 186815ffece8Smrg s390-* | s390x-*) 1869f67b85aaSmrg vendor=ibm 1870f67b85aaSmrg ;; 187115ffece8Smrg *-ptx*) 1872943345d3Smrg vendor=sequent 1873943345d3Smrg ;; 187415ffece8Smrg *-tpf*) 1875f67b85aaSmrg vendor=ibm 1876f67b85aaSmrg ;; 187715ffece8Smrg *-vxsim* | *-vxworks* | *-windiss*) 1878943345d3Smrg vendor=wrs 1879943345d3Smrg ;; 188015ffece8Smrg *-aux*) 1881943345d3Smrg vendor=apple 1882943345d3Smrg ;; 188315ffece8Smrg *-hms*) 1884943345d3Smrg vendor=hitachi 1885943345d3Smrg ;; 188615ffece8Smrg *-mpw* | *-macos*) 1887943345d3Smrg vendor=apple 1888943345d3Smrg ;; 188915ffece8Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1890943345d3Smrg vendor=atari 1891943345d3Smrg ;; 189215ffece8Smrg *-vos*) 1893943345d3Smrg vendor=stratus 1894943345d3Smrg ;; 1895943345d3Smrg esac 1896943345d3Smrg ;; 1897943345d3Smrgesac 1898943345d3Smrg 189915ffece8Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1900f67b85aaSmrgexit 1901943345d3Smrg 1902943345d3Smrg# Local variables: 190315ffece8Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1904943345d3Smrg# time-stamp-start: "timestamp='" 1905943345d3Smrg# time-stamp-format: "%:y-%02m-%02d" 1906943345d3Smrg# time-stamp-end: "'" 1907943345d3Smrg# End: 1908