config.sub revision 92e95ad1
1a6d9b409Smrg#! /bin/sh 2a6d9b409Smrg# Configuration validation subroutine script. 392e95ad1Smrg# Copyright 1992-2021 Free Software Foundation, Inc. 4a6d9b409Smrg 592e95ad1Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 692e95ad1Smrg 792e95ad1Smrgtimestamp='2021-08-14' 8a6d9b409Smrg 9b91640d3Smrg# This file is free software; you can redistribute it and/or modify it 10b91640d3Smrg# under the terms of the GNU General Public License as published by 11b91640d3Smrg# the Free Software Foundation; either version 3 of the License, or 12a6d9b409Smrg# (at your option) any later version. 13a6d9b409Smrg# 14b91640d3Smrg# This program is distributed in the hope that it will be useful, but 15b91640d3Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16b91640d3Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17b91640d3Smrg# General Public License for more details. 18a6d9b409Smrg# 19a6d9b409Smrg# You should have received a copy of the GNU General Public License 208b8e729cSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21a6d9b409Smrg# 22a6d9b409Smrg# As a special exception to the GNU General Public License, if you 23a6d9b409Smrg# distribute this file as part of a program that contains a 24a6d9b409Smrg# configuration script generated by Autoconf, you may include it under 25b91640d3Smrg# the same distribution terms that you use for the rest of that 26b91640d3Smrg# program. This Exception is an additional permission under section 7 27b91640d3Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28a6d9b409Smrg 29a6d9b409Smrg 30b91640d3Smrg# Please send patches to <config-patches@gnu.org>. 31a6d9b409Smrg# 32a6d9b409Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33a6d9b409Smrg# Supply the specified configuration type as an argument. 34a6d9b409Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35a6d9b409Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36a6d9b409Smrg 371e5fa1c5Smrg# You can get the latest version of this script from: 3892e95ad1Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 391e5fa1c5Smrg 40a6d9b409Smrg# This file is supposed to be the same for all GNU packages 41a6d9b409Smrg# and recognize all the CPU types, system types and aliases 42a6d9b409Smrg# that are meaningful with *any* GNU software. 43a6d9b409Smrg# Each package is responsible for reporting which valid configurations 44a6d9b409Smrg# it does not support. The user should be able to distinguish 45a6d9b409Smrg# a failure to support a valid configuration from a meaningless 46a6d9b409Smrg# configuration. 47a6d9b409Smrg 48a6d9b409Smrg# The goal of this file is to map all the various variations of a given 49a6d9b409Smrg# machine specification into a single specification in the form: 50a6d9b409Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51a6d9b409Smrg# or in some cases, the newer four-part form: 52a6d9b409Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53a6d9b409Smrg# It is wrong to echo any other type of specification. 54a6d9b409Smrg 5592e95ad1Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 5692e95ad1Smrg# about features and limitations of the classic Bourne shell that were 5792e95ad1Smrg# superseded or lifted in POSIX. However, this script identifies a wide 5892e95ad1Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5992e95ad1Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6092e95ad1Smrg# have a pre-POSIX /bin/sh. 6192e95ad1Smrg 62a6d9b409Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63a6d9b409Smrg 64a6d9b409Smrgusage="\ 6511a95ff3SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66a6d9b409Smrg 67a6d9b409SmrgCanonicalize a configuration name. 68a6d9b409Smrg 698b8e729cSmrgOptions: 70a6d9b409Smrg -h, --help print this help, then exit 71a6d9b409Smrg -t, --time-stamp print date of last modification, then exit 72a6d9b409Smrg -v, --version print version number, then exit 73a6d9b409Smrg 74a6d9b409SmrgReport bugs and patches to <config-patches@gnu.org>." 75a6d9b409Smrg 76a6d9b409Smrgversion="\ 77a6d9b409SmrgGNU config.sub ($timestamp) 78a6d9b409Smrg 7992e95ad1SmrgCopyright 1992-2021 Free Software Foundation, Inc. 80a6d9b409Smrg 81a6d9b409SmrgThis is free software; see the source for copying conditions. There is NO 82a6d9b409Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83a6d9b409Smrg 84a6d9b409Smrghelp=" 85a6d9b409SmrgTry \`$me --help' for more information." 86a6d9b409Smrg 87a6d9b409Smrg# Parse command line 88a6d9b409Smrgwhile test $# -gt 0 ; do 89a6d9b409Smrg case $1 in 90a6d9b409Smrg --time-stamp | --time* | -t ) 91a6d9b409Smrg echo "$timestamp" ; exit ;; 92a6d9b409Smrg --version | -v ) 93a6d9b409Smrg echo "$version" ; exit ;; 94a6d9b409Smrg --help | --h* | -h ) 95a6d9b409Smrg echo "$usage"; exit ;; 96a6d9b409Smrg -- ) # Stop option processing 97a6d9b409Smrg shift; break ;; 98a6d9b409Smrg - ) # Use stdin as input. 99a6d9b409Smrg break ;; 100a6d9b409Smrg -* ) 10192e95ad1Smrg echo "$me: invalid option $1$help" >&2 102a6d9b409Smrg exit 1 ;; 103a6d9b409Smrg 104a6d9b409Smrg *local*) 105a6d9b409Smrg # First pass through any local machine types. 1068b8e729cSmrg echo "$1" 107a6d9b409Smrg exit ;; 108a6d9b409Smrg 109a6d9b409Smrg * ) 110a6d9b409Smrg break ;; 111a6d9b409Smrg esac 112a6d9b409Smrgdone 113a6d9b409Smrg 114a6d9b409Smrgcase $# in 115a6d9b409Smrg 0) echo "$me: missing argument$help" >&2 116a6d9b409Smrg exit 1;; 117a6d9b409Smrg 1) ;; 118a6d9b409Smrg *) echo "$me: too many arguments$help" >&2 119a6d9b409Smrg exit 1;; 120a6d9b409Smrgesac 121a6d9b409Smrg 12292e95ad1Smrg# Split fields of configuration type 12392e95ad1Smrg# shellcheck disable=SC2162 12492e95ad1Smrgsaved_IFS=$IFS 12592e95ad1SmrgIFS="-" read field1 field2 field3 field4 <<EOF 12692e95ad1Smrg$1 12792e95ad1SmrgEOF 12892e95ad1SmrgIFS=$saved_IFS 129a6d9b409Smrg 13092e95ad1Smrg# Separate into logical components for further validation 13192e95ad1Smrgcase $1 in 13292e95ad1Smrg *-*-*-*-*) 13392e95ad1Smrg echo Invalid configuration \`"$1"\': more than four components >&2 13492e95ad1Smrg exit 1 135b91640d3Smrg ;; 13692e95ad1Smrg *-*-*-*) 13792e95ad1Smrg basic_machine=$field1-$field2 13892e95ad1Smrg basic_os=$field3-$field4 139a6d9b409Smrg ;; 14092e95ad1Smrg *-*-*) 14192e95ad1Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14292e95ad1Smrg # parts 14392e95ad1Smrg maybe_os=$field2-$field3 14492e95ad1Smrg case $maybe_os in 14592e95ad1Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 14692e95ad1Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14792e95ad1Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14892e95ad1Smrg | storm-chaos* | os2-emx* | rtmk-nova*) 14992e95ad1Smrg basic_machine=$field1 15092e95ad1Smrg basic_os=$maybe_os 15192e95ad1Smrg ;; 15292e95ad1Smrg android-linux) 15392e95ad1Smrg basic_machine=$field1-unknown 15492e95ad1Smrg basic_os=linux-android 15592e95ad1Smrg ;; 15692e95ad1Smrg *) 15792e95ad1Smrg basic_machine=$field1-$field2 15892e95ad1Smrg basic_os=$field3 15992e95ad1Smrg ;; 16092e95ad1Smrg esac 161a6d9b409Smrg ;; 16292e95ad1Smrg *-*) 16392e95ad1Smrg # A lone config we happen to match not fitting any pattern 16492e95ad1Smrg case $field1-$field2 in 16592e95ad1Smrg decstation-3100) 16692e95ad1Smrg basic_machine=mips-dec 16792e95ad1Smrg basic_os= 16892e95ad1Smrg ;; 16992e95ad1Smrg *-*) 17092e95ad1Smrg # Second component is usually, but not always the OS 17192e95ad1Smrg case $field2 in 17292e95ad1Smrg # Prevent following clause from handling this valid os 17392e95ad1Smrg sun*os*) 17492e95ad1Smrg basic_machine=$field1 17592e95ad1Smrg basic_os=$field2 17692e95ad1Smrg ;; 17792e95ad1Smrg zephyr*) 17892e95ad1Smrg basic_machine=$field1-unknown 17992e95ad1Smrg basic_os=$field2 18092e95ad1Smrg ;; 18192e95ad1Smrg # Manufacturers 18292e95ad1Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18392e95ad1Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18492e95ad1Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18592e95ad1Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18692e95ad1Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18792e95ad1Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18892e95ad1Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18992e95ad1Smrg | microblaze* | sim | cisco \ 19092e95ad1Smrg | oki | wec | wrs | winbond) 19192e95ad1Smrg basic_machine=$field1-$field2 19292e95ad1Smrg basic_os= 19392e95ad1Smrg ;; 19492e95ad1Smrg *) 19592e95ad1Smrg basic_machine=$field1 19692e95ad1Smrg basic_os=$field2 19792e95ad1Smrg ;; 19892e95ad1Smrg esac 19992e95ad1Smrg ;; 20092e95ad1Smrg esac 201a6d9b409Smrg ;; 20292e95ad1Smrg *) 20392e95ad1Smrg # Convert single-component short-hands not valid as part of 20492e95ad1Smrg # multi-component configurations. 20592e95ad1Smrg case $field1 in 20692e95ad1Smrg 386bsd) 20792e95ad1Smrg basic_machine=i386-pc 20892e95ad1Smrg basic_os=bsd 20992e95ad1Smrg ;; 21092e95ad1Smrg a29khif) 21192e95ad1Smrg basic_machine=a29k-amd 21292e95ad1Smrg basic_os=udi 21392e95ad1Smrg ;; 21492e95ad1Smrg adobe68k) 21592e95ad1Smrg basic_machine=m68010-adobe 21692e95ad1Smrg basic_os=scout 21792e95ad1Smrg ;; 21892e95ad1Smrg alliant) 21992e95ad1Smrg basic_machine=fx80-alliant 22092e95ad1Smrg basic_os= 22192e95ad1Smrg ;; 22292e95ad1Smrg altos | altos3068) 22392e95ad1Smrg basic_machine=m68k-altos 22492e95ad1Smrg basic_os= 22592e95ad1Smrg ;; 22692e95ad1Smrg am29k) 22792e95ad1Smrg basic_machine=a29k-none 22892e95ad1Smrg basic_os=bsd 22992e95ad1Smrg ;; 23092e95ad1Smrg amdahl) 23192e95ad1Smrg basic_machine=580-amdahl 23292e95ad1Smrg basic_os=sysv 23392e95ad1Smrg ;; 23492e95ad1Smrg amiga) 23592e95ad1Smrg basic_machine=m68k-unknown 23692e95ad1Smrg basic_os= 23792e95ad1Smrg ;; 23892e95ad1Smrg amigaos | amigados) 23992e95ad1Smrg basic_machine=m68k-unknown 24092e95ad1Smrg basic_os=amigaos 24192e95ad1Smrg ;; 24292e95ad1Smrg amigaunix | amix) 24392e95ad1Smrg basic_machine=m68k-unknown 24492e95ad1Smrg basic_os=sysv4 24592e95ad1Smrg ;; 24692e95ad1Smrg apollo68) 24792e95ad1Smrg basic_machine=m68k-apollo 24892e95ad1Smrg basic_os=sysv 24992e95ad1Smrg ;; 25092e95ad1Smrg apollo68bsd) 25192e95ad1Smrg basic_machine=m68k-apollo 25292e95ad1Smrg basic_os=bsd 25392e95ad1Smrg ;; 25492e95ad1Smrg aros) 25592e95ad1Smrg basic_machine=i386-pc 25692e95ad1Smrg basic_os=aros 25792e95ad1Smrg ;; 25892e95ad1Smrg aux) 25992e95ad1Smrg basic_machine=m68k-apple 26092e95ad1Smrg basic_os=aux 26192e95ad1Smrg ;; 26292e95ad1Smrg balance) 26392e95ad1Smrg basic_machine=ns32k-sequent 26492e95ad1Smrg basic_os=dynix 26592e95ad1Smrg ;; 26692e95ad1Smrg blackfin) 26792e95ad1Smrg basic_machine=bfin-unknown 26892e95ad1Smrg basic_os=linux 26992e95ad1Smrg ;; 27092e95ad1Smrg cegcc) 27192e95ad1Smrg basic_machine=arm-unknown 27292e95ad1Smrg basic_os=cegcc 27392e95ad1Smrg ;; 27492e95ad1Smrg convex-c1) 27592e95ad1Smrg basic_machine=c1-convex 27692e95ad1Smrg basic_os=bsd 27792e95ad1Smrg ;; 27892e95ad1Smrg convex-c2) 27992e95ad1Smrg basic_machine=c2-convex 28092e95ad1Smrg basic_os=bsd 28192e95ad1Smrg ;; 28292e95ad1Smrg convex-c32) 28392e95ad1Smrg basic_machine=c32-convex 28492e95ad1Smrg basic_os=bsd 28592e95ad1Smrg ;; 28692e95ad1Smrg convex-c34) 28792e95ad1Smrg basic_machine=c34-convex 28892e95ad1Smrg basic_os=bsd 28992e95ad1Smrg ;; 29092e95ad1Smrg convex-c38) 29192e95ad1Smrg basic_machine=c38-convex 29292e95ad1Smrg basic_os=bsd 29392e95ad1Smrg ;; 29492e95ad1Smrg cray) 29592e95ad1Smrg basic_machine=j90-cray 29692e95ad1Smrg basic_os=unicos 29792e95ad1Smrg ;; 29892e95ad1Smrg crds | unos) 29992e95ad1Smrg basic_machine=m68k-crds 30092e95ad1Smrg basic_os= 30192e95ad1Smrg ;; 30292e95ad1Smrg da30) 30392e95ad1Smrg basic_machine=m68k-da30 30492e95ad1Smrg basic_os= 30592e95ad1Smrg ;; 30692e95ad1Smrg decstation | pmax | pmin | dec3100 | decstatn) 30792e95ad1Smrg basic_machine=mips-dec 30892e95ad1Smrg basic_os= 30992e95ad1Smrg ;; 31092e95ad1Smrg delta88) 31192e95ad1Smrg basic_machine=m88k-motorola 31292e95ad1Smrg basic_os=sysv3 31392e95ad1Smrg ;; 31492e95ad1Smrg dicos) 31592e95ad1Smrg basic_machine=i686-pc 31692e95ad1Smrg basic_os=dicos 31792e95ad1Smrg ;; 31892e95ad1Smrg djgpp) 31992e95ad1Smrg basic_machine=i586-pc 32092e95ad1Smrg basic_os=msdosdjgpp 32192e95ad1Smrg ;; 32292e95ad1Smrg ebmon29k) 32392e95ad1Smrg basic_machine=a29k-amd 32492e95ad1Smrg basic_os=ebmon 32592e95ad1Smrg ;; 32692e95ad1Smrg es1800 | OSE68k | ose68k | ose | OSE) 32792e95ad1Smrg basic_machine=m68k-ericsson 32892e95ad1Smrg basic_os=ose 32992e95ad1Smrg ;; 33092e95ad1Smrg gmicro) 33192e95ad1Smrg basic_machine=tron-gmicro 33292e95ad1Smrg basic_os=sysv 33392e95ad1Smrg ;; 33492e95ad1Smrg go32) 33592e95ad1Smrg basic_machine=i386-pc 33692e95ad1Smrg basic_os=go32 33792e95ad1Smrg ;; 33892e95ad1Smrg h8300hms) 33992e95ad1Smrg basic_machine=h8300-hitachi 34092e95ad1Smrg basic_os=hms 34192e95ad1Smrg ;; 34292e95ad1Smrg h8300xray) 34392e95ad1Smrg basic_machine=h8300-hitachi 34492e95ad1Smrg basic_os=xray 34592e95ad1Smrg ;; 34692e95ad1Smrg h8500hms) 34792e95ad1Smrg basic_machine=h8500-hitachi 34892e95ad1Smrg basic_os=hms 34992e95ad1Smrg ;; 35092e95ad1Smrg harris) 35192e95ad1Smrg basic_machine=m88k-harris 35292e95ad1Smrg basic_os=sysv3 35392e95ad1Smrg ;; 35492e95ad1Smrg hp300 | hp300hpux) 35592e95ad1Smrg basic_machine=m68k-hp 35692e95ad1Smrg basic_os=hpux 35792e95ad1Smrg ;; 35892e95ad1Smrg hp300bsd) 35992e95ad1Smrg basic_machine=m68k-hp 36092e95ad1Smrg basic_os=bsd 36192e95ad1Smrg ;; 36292e95ad1Smrg hppaosf) 36392e95ad1Smrg basic_machine=hppa1.1-hp 36492e95ad1Smrg basic_os=osf 36592e95ad1Smrg ;; 36692e95ad1Smrg hppro) 36792e95ad1Smrg basic_machine=hppa1.1-hp 36892e95ad1Smrg basic_os=proelf 36992e95ad1Smrg ;; 37092e95ad1Smrg i386mach) 37192e95ad1Smrg basic_machine=i386-mach 37292e95ad1Smrg basic_os=mach 37392e95ad1Smrg ;; 37492e95ad1Smrg isi68 | isi) 37592e95ad1Smrg basic_machine=m68k-isi 37692e95ad1Smrg basic_os=sysv 37792e95ad1Smrg ;; 37892e95ad1Smrg m68knommu) 37992e95ad1Smrg basic_machine=m68k-unknown 38092e95ad1Smrg basic_os=linux 38192e95ad1Smrg ;; 38292e95ad1Smrg magnum | m3230) 38392e95ad1Smrg basic_machine=mips-mips 38492e95ad1Smrg basic_os=sysv 38592e95ad1Smrg ;; 38692e95ad1Smrg merlin) 38792e95ad1Smrg basic_machine=ns32k-utek 38892e95ad1Smrg basic_os=sysv 38992e95ad1Smrg ;; 39092e95ad1Smrg mingw64) 39192e95ad1Smrg basic_machine=x86_64-pc 39292e95ad1Smrg basic_os=mingw64 39392e95ad1Smrg ;; 39492e95ad1Smrg mingw32) 39592e95ad1Smrg basic_machine=i686-pc 39692e95ad1Smrg basic_os=mingw32 39792e95ad1Smrg ;; 39892e95ad1Smrg mingw32ce) 39992e95ad1Smrg basic_machine=arm-unknown 40092e95ad1Smrg basic_os=mingw32ce 40192e95ad1Smrg ;; 40292e95ad1Smrg monitor) 40392e95ad1Smrg basic_machine=m68k-rom68k 40492e95ad1Smrg basic_os=coff 40592e95ad1Smrg ;; 40692e95ad1Smrg morphos) 40792e95ad1Smrg basic_machine=powerpc-unknown 40892e95ad1Smrg basic_os=morphos 40992e95ad1Smrg ;; 41092e95ad1Smrg moxiebox) 41192e95ad1Smrg basic_machine=moxie-unknown 41292e95ad1Smrg basic_os=moxiebox 41392e95ad1Smrg ;; 41492e95ad1Smrg msdos) 41592e95ad1Smrg basic_machine=i386-pc 41692e95ad1Smrg basic_os=msdos 41792e95ad1Smrg ;; 41892e95ad1Smrg msys) 41992e95ad1Smrg basic_machine=i686-pc 42092e95ad1Smrg basic_os=msys 42192e95ad1Smrg ;; 42292e95ad1Smrg mvs) 42392e95ad1Smrg basic_machine=i370-ibm 42492e95ad1Smrg basic_os=mvs 42592e95ad1Smrg ;; 42692e95ad1Smrg nacl) 42792e95ad1Smrg basic_machine=le32-unknown 42892e95ad1Smrg basic_os=nacl 42992e95ad1Smrg ;; 43092e95ad1Smrg ncr3000) 43192e95ad1Smrg basic_machine=i486-ncr 43292e95ad1Smrg basic_os=sysv4 43392e95ad1Smrg ;; 43492e95ad1Smrg netbsd386) 43592e95ad1Smrg basic_machine=i386-pc 43692e95ad1Smrg basic_os=netbsd 43792e95ad1Smrg ;; 43892e95ad1Smrg netwinder) 43992e95ad1Smrg basic_machine=armv4l-rebel 44092e95ad1Smrg basic_os=linux 44192e95ad1Smrg ;; 44292e95ad1Smrg news | news700 | news800 | news900) 44392e95ad1Smrg basic_machine=m68k-sony 44492e95ad1Smrg basic_os=newsos 44592e95ad1Smrg ;; 44692e95ad1Smrg news1000) 44792e95ad1Smrg basic_machine=m68030-sony 44892e95ad1Smrg basic_os=newsos 44992e95ad1Smrg ;; 45092e95ad1Smrg necv70) 45192e95ad1Smrg basic_machine=v70-nec 45292e95ad1Smrg basic_os=sysv 45392e95ad1Smrg ;; 45492e95ad1Smrg nh3000) 45592e95ad1Smrg basic_machine=m68k-harris 45692e95ad1Smrg basic_os=cxux 45792e95ad1Smrg ;; 45892e95ad1Smrg nh[45]000) 45992e95ad1Smrg basic_machine=m88k-harris 46092e95ad1Smrg basic_os=cxux 46192e95ad1Smrg ;; 46292e95ad1Smrg nindy960) 46392e95ad1Smrg basic_machine=i960-intel 46492e95ad1Smrg basic_os=nindy 46592e95ad1Smrg ;; 46692e95ad1Smrg mon960) 46792e95ad1Smrg basic_machine=i960-intel 46892e95ad1Smrg basic_os=mon960 46992e95ad1Smrg ;; 47092e95ad1Smrg nonstopux) 47192e95ad1Smrg basic_machine=mips-compaq 47292e95ad1Smrg basic_os=nonstopux 47392e95ad1Smrg ;; 47492e95ad1Smrg os400) 47592e95ad1Smrg basic_machine=powerpc-ibm 47692e95ad1Smrg basic_os=os400 47792e95ad1Smrg ;; 47892e95ad1Smrg OSE68000 | ose68000) 47992e95ad1Smrg basic_machine=m68000-ericsson 48092e95ad1Smrg basic_os=ose 48192e95ad1Smrg ;; 48292e95ad1Smrg os68k) 48392e95ad1Smrg basic_machine=m68k-none 48492e95ad1Smrg basic_os=os68k 48592e95ad1Smrg ;; 48692e95ad1Smrg paragon) 48792e95ad1Smrg basic_machine=i860-intel 48892e95ad1Smrg basic_os=osf 48992e95ad1Smrg ;; 49092e95ad1Smrg parisc) 49192e95ad1Smrg basic_machine=hppa-unknown 49292e95ad1Smrg basic_os=linux 49392e95ad1Smrg ;; 49492e95ad1Smrg psp) 49592e95ad1Smrg basic_machine=mipsallegrexel-sony 49692e95ad1Smrg basic_os=psp 49792e95ad1Smrg ;; 49892e95ad1Smrg pw32) 49992e95ad1Smrg basic_machine=i586-unknown 50092e95ad1Smrg basic_os=pw32 50192e95ad1Smrg ;; 50292e95ad1Smrg rdos | rdos64) 50392e95ad1Smrg basic_machine=x86_64-pc 50492e95ad1Smrg basic_os=rdos 50592e95ad1Smrg ;; 50692e95ad1Smrg rdos32) 50792e95ad1Smrg basic_machine=i386-pc 50892e95ad1Smrg basic_os=rdos 50992e95ad1Smrg ;; 51092e95ad1Smrg rom68k) 51192e95ad1Smrg basic_machine=m68k-rom68k 51292e95ad1Smrg basic_os=coff 51392e95ad1Smrg ;; 51492e95ad1Smrg sa29200) 51592e95ad1Smrg basic_machine=a29k-amd 51692e95ad1Smrg basic_os=udi 51792e95ad1Smrg ;; 51892e95ad1Smrg sei) 51992e95ad1Smrg basic_machine=mips-sei 52092e95ad1Smrg basic_os=seiux 52192e95ad1Smrg ;; 52292e95ad1Smrg sequent) 52392e95ad1Smrg basic_machine=i386-sequent 52492e95ad1Smrg basic_os= 52592e95ad1Smrg ;; 52692e95ad1Smrg sps7) 52792e95ad1Smrg basic_machine=m68k-bull 52892e95ad1Smrg basic_os=sysv2 52992e95ad1Smrg ;; 53092e95ad1Smrg st2000) 53192e95ad1Smrg basic_machine=m68k-tandem 53292e95ad1Smrg basic_os= 53392e95ad1Smrg ;; 53492e95ad1Smrg stratus) 53592e95ad1Smrg basic_machine=i860-stratus 53692e95ad1Smrg basic_os=sysv4 53792e95ad1Smrg ;; 53892e95ad1Smrg sun2) 53992e95ad1Smrg basic_machine=m68000-sun 54092e95ad1Smrg basic_os= 54192e95ad1Smrg ;; 54292e95ad1Smrg sun2os3) 54392e95ad1Smrg basic_machine=m68000-sun 54492e95ad1Smrg basic_os=sunos3 54592e95ad1Smrg ;; 54692e95ad1Smrg sun2os4) 54792e95ad1Smrg basic_machine=m68000-sun 54892e95ad1Smrg basic_os=sunos4 54992e95ad1Smrg ;; 55092e95ad1Smrg sun3) 55192e95ad1Smrg basic_machine=m68k-sun 55292e95ad1Smrg basic_os= 55392e95ad1Smrg ;; 55492e95ad1Smrg sun3os3) 55592e95ad1Smrg basic_machine=m68k-sun 55692e95ad1Smrg basic_os=sunos3 55792e95ad1Smrg ;; 55892e95ad1Smrg sun3os4) 55992e95ad1Smrg basic_machine=m68k-sun 56092e95ad1Smrg basic_os=sunos4 56192e95ad1Smrg ;; 56292e95ad1Smrg sun4) 56392e95ad1Smrg basic_machine=sparc-sun 56492e95ad1Smrg basic_os= 56592e95ad1Smrg ;; 56692e95ad1Smrg sun4os3) 56792e95ad1Smrg basic_machine=sparc-sun 56892e95ad1Smrg basic_os=sunos3 56992e95ad1Smrg ;; 57092e95ad1Smrg sun4os4) 57192e95ad1Smrg basic_machine=sparc-sun 57292e95ad1Smrg basic_os=sunos4 57392e95ad1Smrg ;; 57492e95ad1Smrg sun4sol2) 57592e95ad1Smrg basic_machine=sparc-sun 57692e95ad1Smrg basic_os=solaris2 57792e95ad1Smrg ;; 57892e95ad1Smrg sun386 | sun386i | roadrunner) 57992e95ad1Smrg basic_machine=i386-sun 58092e95ad1Smrg basic_os= 58192e95ad1Smrg ;; 58292e95ad1Smrg sv1) 58392e95ad1Smrg basic_machine=sv1-cray 58492e95ad1Smrg basic_os=unicos 58592e95ad1Smrg ;; 58692e95ad1Smrg symmetry) 58792e95ad1Smrg basic_machine=i386-sequent 58892e95ad1Smrg basic_os=dynix 58992e95ad1Smrg ;; 59092e95ad1Smrg t3e) 59192e95ad1Smrg basic_machine=alphaev5-cray 59292e95ad1Smrg basic_os=unicos 59392e95ad1Smrg ;; 59492e95ad1Smrg t90) 59592e95ad1Smrg basic_machine=t90-cray 59692e95ad1Smrg basic_os=unicos 59792e95ad1Smrg ;; 59892e95ad1Smrg toad1) 59992e95ad1Smrg basic_machine=pdp10-xkl 60092e95ad1Smrg basic_os=tops20 60192e95ad1Smrg ;; 60292e95ad1Smrg tpf) 60392e95ad1Smrg basic_machine=s390x-ibm 60492e95ad1Smrg basic_os=tpf 60592e95ad1Smrg ;; 60692e95ad1Smrg udi29k) 60792e95ad1Smrg basic_machine=a29k-amd 60892e95ad1Smrg basic_os=udi 60992e95ad1Smrg ;; 61092e95ad1Smrg ultra3) 61192e95ad1Smrg basic_machine=a29k-nyu 61292e95ad1Smrg basic_os=sym1 61392e95ad1Smrg ;; 61492e95ad1Smrg v810 | necv810) 61592e95ad1Smrg basic_machine=v810-nec 61692e95ad1Smrg basic_os=none 61792e95ad1Smrg ;; 61892e95ad1Smrg vaxv) 61992e95ad1Smrg basic_machine=vax-dec 62092e95ad1Smrg basic_os=sysv 62192e95ad1Smrg ;; 62292e95ad1Smrg vms) 62392e95ad1Smrg basic_machine=vax-dec 62492e95ad1Smrg basic_os=vms 62592e95ad1Smrg ;; 62692e95ad1Smrg vsta) 62792e95ad1Smrg basic_machine=i386-pc 62892e95ad1Smrg basic_os=vsta 62992e95ad1Smrg ;; 63092e95ad1Smrg vxworks960) 63192e95ad1Smrg basic_machine=i960-wrs 63292e95ad1Smrg basic_os=vxworks 63392e95ad1Smrg ;; 63492e95ad1Smrg vxworks68) 63592e95ad1Smrg basic_machine=m68k-wrs 63692e95ad1Smrg basic_os=vxworks 63792e95ad1Smrg ;; 63892e95ad1Smrg vxworks29k) 63992e95ad1Smrg basic_machine=a29k-wrs 64092e95ad1Smrg basic_os=vxworks 64192e95ad1Smrg ;; 64292e95ad1Smrg xbox) 64392e95ad1Smrg basic_machine=i686-pc 64492e95ad1Smrg basic_os=mingw32 64592e95ad1Smrg ;; 64692e95ad1Smrg ymp) 64792e95ad1Smrg basic_machine=ymp-cray 64892e95ad1Smrg basic_os=unicos 64992e95ad1Smrg ;; 65092e95ad1Smrg *) 65192e95ad1Smrg basic_machine=$1 65292e95ad1Smrg basic_os= 65392e95ad1Smrg ;; 65492e95ad1Smrg esac 655a6d9b409Smrg ;; 656a6d9b409Smrgesac 657a6d9b409Smrg 65892e95ad1Smrg# Decode 1-component or ad-hoc basic machines 659a6d9b409Smrgcase $basic_machine in 66092e95ad1Smrg # Here we handle the default manufacturer of certain CPU types. It is in 66192e95ad1Smrg # some cases the only manufacturer, in others, it is the most popular. 66292e95ad1Smrg w89k) 66392e95ad1Smrg cpu=hppa1.1 66492e95ad1Smrg vendor=winbond 665b91640d3Smrg ;; 66692e95ad1Smrg op50n) 66792e95ad1Smrg cpu=hppa1.1 66892e95ad1Smrg vendor=oki 669a6d9b409Smrg ;; 67092e95ad1Smrg op60c) 67192e95ad1Smrg cpu=hppa1.1 67292e95ad1Smrg vendor=oki 673a6d9b409Smrg ;; 67492e95ad1Smrg ibm*) 67592e95ad1Smrg cpu=i370 67692e95ad1Smrg vendor=ibm 677cae39615Smrg ;; 67892e95ad1Smrg orion105) 67992e95ad1Smrg cpu=clipper 68092e95ad1Smrg vendor=highlevel 681b91640d3Smrg ;; 68292e95ad1Smrg mac | mpw | mac-mpw) 68392e95ad1Smrg cpu=m68k 68492e95ad1Smrg vendor=apple 685a097bd00Smrg ;; 68692e95ad1Smrg pmac | pmac-mpw) 68792e95ad1Smrg cpu=powerpc 68892e95ad1Smrg vendor=apple 689a097bd00Smrg ;; 690a097bd00Smrg 691a6d9b409Smrg # Recognize the various machine names and aliases which stand 692a6d9b409Smrg # for a CPU type and a company and sometimes even an OS. 693a6d9b409Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69492e95ad1Smrg cpu=m68000 69592e95ad1Smrg vendor=att 696a6d9b409Smrg ;; 697a6d9b409Smrg 3b*) 69892e95ad1Smrg cpu=we32k 69992e95ad1Smrg vendor=att 700cae39615Smrg ;; 7011e5fa1c5Smrg bluegene*) 70292e95ad1Smrg cpu=powerpc 70392e95ad1Smrg vendor=ibm 70492e95ad1Smrg basic_os=cnk 705a6d9b409Smrg ;; 706a6d9b409Smrg decsystem10* | dec10*) 70792e95ad1Smrg cpu=pdp10 70892e95ad1Smrg vendor=dec 70992e95ad1Smrg basic_os=tops10 710a6d9b409Smrg ;; 711a6d9b409Smrg decsystem20* | dec20*) 71292e95ad1Smrg cpu=pdp10 71392e95ad1Smrg vendor=dec 71492e95ad1Smrg basic_os=tops20 715a6d9b409Smrg ;; 716a6d9b409Smrg delta | 3300 | motorola-3300 | motorola-delta \ 717a6d9b409Smrg | 3300-motorola | delta-motorola) 71892e95ad1Smrg cpu=m68k 71992e95ad1Smrg vendor=motorola 720a6d9b409Smrg ;; 7218b8e729cSmrg dpx2*) 72292e95ad1Smrg cpu=m68k 72392e95ad1Smrg vendor=bull 72492e95ad1Smrg basic_os=sysv3 725a6d9b409Smrg ;; 726a6d9b409Smrg encore | umax | mmax) 72792e95ad1Smrg cpu=ns32k 72892e95ad1Smrg vendor=encore 729a6d9b409Smrg ;; 73092e95ad1Smrg elxsi) 73192e95ad1Smrg cpu=elxsi 73292e95ad1Smrg vendor=elxsi 73392e95ad1Smrg basic_os=${basic_os:-bsd} 734a6d9b409Smrg ;; 735a6d9b409Smrg fx2800) 73692e95ad1Smrg cpu=i860 73792e95ad1Smrg vendor=alliant 738a6d9b409Smrg ;; 739a6d9b409Smrg genix) 74092e95ad1Smrg cpu=ns32k 74192e95ad1Smrg vendor=ns 742a6d9b409Smrg ;; 743a6d9b409Smrg h3050r* | hiux*) 74492e95ad1Smrg cpu=hppa1.1 74592e95ad1Smrg vendor=hitachi 74692e95ad1Smrg basic_os=hiuxwe2 747a6d9b409Smrg ;; 748a6d9b409Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74992e95ad1Smrg cpu=hppa1.0 75092e95ad1Smrg vendor=hp 751a6d9b409Smrg ;; 752a6d9b409Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 75392e95ad1Smrg cpu=m68000 75492e95ad1Smrg vendor=hp 755a6d9b409Smrg ;; 756a6d9b409Smrg hp9k3[2-9][0-9]) 75792e95ad1Smrg cpu=m68k 75892e95ad1Smrg vendor=hp 759a6d9b409Smrg ;; 760a6d9b409Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76192e95ad1Smrg cpu=hppa1.0 76292e95ad1Smrg vendor=hp 763a6d9b409Smrg ;; 764a6d9b409Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76592e95ad1Smrg cpu=hppa1.1 76692e95ad1Smrg vendor=hp 767a6d9b409Smrg ;; 768a6d9b409Smrg hp9k78[0-9] | hp78[0-9]) 769a6d9b409Smrg # FIXME: really hppa2.0-hp 77092e95ad1Smrg cpu=hppa1.1 77192e95ad1Smrg vendor=hp 772a6d9b409Smrg ;; 773a6d9b409Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774a6d9b409Smrg # FIXME: really hppa2.0-hp 77592e95ad1Smrg cpu=hppa1.1 77692e95ad1Smrg vendor=hp 777a6d9b409Smrg ;; 778a6d9b409Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 77992e95ad1Smrg cpu=hppa1.1 78092e95ad1Smrg vendor=hp 781a6d9b409Smrg ;; 782a6d9b409Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78392e95ad1Smrg cpu=hppa1.0 78492e95ad1Smrg vendor=hp 785a6d9b409Smrg ;; 786a6d9b409Smrg i*86v32) 78792e95ad1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78892e95ad1Smrg vendor=pc 78992e95ad1Smrg basic_os=sysv32 790a6d9b409Smrg ;; 791a6d9b409Smrg i*86v4*) 79292e95ad1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79392e95ad1Smrg vendor=pc 79492e95ad1Smrg basic_os=sysv4 795a6d9b409Smrg ;; 796a6d9b409Smrg i*86v) 79792e95ad1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79892e95ad1Smrg vendor=pc 79992e95ad1Smrg basic_os=sysv 800a6d9b409Smrg ;; 801a6d9b409Smrg i*86sol2) 80292e95ad1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80392e95ad1Smrg vendor=pc 80492e95ad1Smrg basic_os=solaris2 805a6d9b409Smrg ;; 80692e95ad1Smrg j90 | j90-cray) 80792e95ad1Smrg cpu=j90 80892e95ad1Smrg vendor=cray 80992e95ad1Smrg basic_os=${basic_os:-unicos} 810a6d9b409Smrg ;; 811a6d9b409Smrg iris | iris4d) 81292e95ad1Smrg cpu=mips 81392e95ad1Smrg vendor=sgi 81492e95ad1Smrg case $basic_os in 81592e95ad1Smrg irix*) 816a6d9b409Smrg ;; 817a6d9b409Smrg *) 81892e95ad1Smrg basic_os=irix4 819a6d9b409Smrg ;; 820a6d9b409Smrg esac 821a6d9b409Smrg ;; 822a6d9b409Smrg miniframe) 82392e95ad1Smrg cpu=m68000 82492e95ad1Smrg vendor=convergent 825a6d9b409Smrg ;; 82692e95ad1Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82792e95ad1Smrg cpu=m68k 82892e95ad1Smrg vendor=atari 82992e95ad1Smrg basic_os=mint 830a6d9b409Smrg ;; 831a6d9b409Smrg news-3600 | risc-news) 83292e95ad1Smrg cpu=mips 83392e95ad1Smrg vendor=sony 83492e95ad1Smrg basic_os=newsos 835a6d9b409Smrg ;; 8368b8e729cSmrg next | m*-next) 83792e95ad1Smrg cpu=m68k 83892e95ad1Smrg vendor=next 83992e95ad1Smrg case $basic_os in 84092e95ad1Smrg openstep*) 84192e95ad1Smrg ;; 84292e95ad1Smrg nextstep*) 843a6d9b409Smrg ;; 84492e95ad1Smrg ns2*) 84592e95ad1Smrg basic_os=nextstep2 846a6d9b409Smrg ;; 847a6d9b409Smrg *) 84892e95ad1Smrg basic_os=nextstep3 849a6d9b409Smrg ;; 850a6d9b409Smrg esac 851a6d9b409Smrg ;; 852a6d9b409Smrg np1) 85392e95ad1Smrg cpu=np1 85492e95ad1Smrg vendor=gould 8558b8e729cSmrg ;; 856a6d9b409Smrg op50n-* | op60c-*) 85792e95ad1Smrg cpu=hppa1.1 85892e95ad1Smrg vendor=oki 85992e95ad1Smrg basic_os=proelf 860a6d9b409Smrg ;; 861a6d9b409Smrg pa-hitachi) 86292e95ad1Smrg cpu=hppa1.1 86392e95ad1Smrg vendor=hitachi 86492e95ad1Smrg basic_os=hiuxwe2 865cae39615Smrg ;; 866a6d9b409Smrg pbd) 86792e95ad1Smrg cpu=sparc 86892e95ad1Smrg vendor=tti 869a6d9b409Smrg ;; 870a6d9b409Smrg pbb) 87192e95ad1Smrg cpu=m68k 87292e95ad1Smrg vendor=tti 873a6d9b409Smrg ;; 87492e95ad1Smrg pc532) 87592e95ad1Smrg cpu=ns32k 87692e95ad1Smrg vendor=pc532 877a6d9b409Smrg ;; 878a6d9b409Smrg pn) 87992e95ad1Smrg cpu=pn 88092e95ad1Smrg vendor=gould 881a6d9b409Smrg ;; 88292e95ad1Smrg power) 88392e95ad1Smrg cpu=power 88492e95ad1Smrg vendor=ibm 885a6d9b409Smrg ;; 88692e95ad1Smrg ps2) 88792e95ad1Smrg cpu=i386 88892e95ad1Smrg vendor=ibm 889a6d9b409Smrg ;; 89092e95ad1Smrg rm[46]00) 89192e95ad1Smrg cpu=mips 89292e95ad1Smrg vendor=siemens 893a6d9b409Smrg ;; 89492e95ad1Smrg rtpc | rtpc-*) 89592e95ad1Smrg cpu=romp 89692e95ad1Smrg vendor=ibm 897a6d9b409Smrg ;; 89892e95ad1Smrg sde) 89992e95ad1Smrg cpu=mipsisa32 90092e95ad1Smrg vendor=sde 90192e95ad1Smrg basic_os=${basic_os:-elf} 902a6d9b409Smrg ;; 90392e95ad1Smrg simso-wrs) 90492e95ad1Smrg cpu=sparclite 90592e95ad1Smrg vendor=wrs 90692e95ad1Smrg basic_os=vxworks 907a6d9b409Smrg ;; 90892e95ad1Smrg tower | tower-32) 90992e95ad1Smrg cpu=m68k 91092e95ad1Smrg vendor=ncr 911a6d9b409Smrg ;; 91292e95ad1Smrg vpp*|vx|vx-*) 91392e95ad1Smrg cpu=f301 91492e95ad1Smrg vendor=fujitsu 915b91640d3Smrg ;; 91692e95ad1Smrg w65) 91792e95ad1Smrg cpu=w65 91892e95ad1Smrg vendor=wdc 919cae39615Smrg ;; 92092e95ad1Smrg w89k-*) 92192e95ad1Smrg cpu=hppa1.1 92292e95ad1Smrg vendor=winbond 92392e95ad1Smrg basic_os=proelf 924a6d9b409Smrg ;; 92592e95ad1Smrg none) 92692e95ad1Smrg cpu=none 92792e95ad1Smrg vendor=none 928a6d9b409Smrg ;; 92992e95ad1Smrg leon|leon[3-9]) 93092e95ad1Smrg cpu=sparc 93192e95ad1Smrg vendor=$basic_machine 932a6d9b409Smrg ;; 93392e95ad1Smrg leon-*|leon[3-9]-*) 93492e95ad1Smrg cpu=sparc 93592e95ad1Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936a6d9b409Smrg ;; 93792e95ad1Smrg 93892e95ad1Smrg *-*) 93992e95ad1Smrg # shellcheck disable=SC2162 94092e95ad1Smrg saved_IFS=$IFS 94192e95ad1Smrg IFS="-" read cpu vendor <<EOF 94292e95ad1Smrg$basic_machine 94392e95ad1SmrgEOF 94492e95ad1Smrg IFS=$saved_IFS 945a6d9b409Smrg ;; 94692e95ad1Smrg # We use `pc' rather than `unknown' 94792e95ad1Smrg # because (1) that's what they normally are, and 94892e95ad1Smrg # (2) the word "unknown" tends to confuse beginning users. 94992e95ad1Smrg i*86 | x86_64) 95092e95ad1Smrg cpu=$basic_machine 95192e95ad1Smrg vendor=pc 952a6d9b409Smrg ;; 95392e95ad1Smrg # These rules are duplicated from below for sake of the special case above; 95492e95ad1Smrg # i.e. things that normalized to x86 arches should also default to "pc" 95592e95ad1Smrg pc98) 95692e95ad1Smrg cpu=i386 95792e95ad1Smrg vendor=pc 958a6d9b409Smrg ;; 95992e95ad1Smrg x64 | amd64) 96092e95ad1Smrg cpu=x86_64 96192e95ad1Smrg vendor=pc 962a6d9b409Smrg ;; 96392e95ad1Smrg # Recognize the basic CPU types without company name. 96492e95ad1Smrg *) 96592e95ad1Smrg cpu=$basic_machine 96692e95ad1Smrg vendor=unknown 967cae39615Smrg ;; 96892e95ad1Smrgesac 96992e95ad1Smrg 97092e95ad1Smrgunset -v basic_machine 97192e95ad1Smrg 97292e95ad1Smrg# Decode basic machines in the full and proper CPU-Company form. 97392e95ad1Smrgcase $cpu-$vendor in 97492e95ad1Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97592e95ad1Smrg # some cases the only manufacturer, in others, it is the most popular. 97692e95ad1Smrg craynv-unknown) 97792e95ad1Smrg vendor=cray 97892e95ad1Smrg basic_os=${basic_os:-unicosmp} 979a6d9b409Smrg ;; 98092e95ad1Smrg c90-unknown | c90-cray) 98192e95ad1Smrg vendor=cray 98292e95ad1Smrg basic_os=${Basic_os:-unicos} 983a6d9b409Smrg ;; 98492e95ad1Smrg fx80-unknown) 98592e95ad1Smrg vendor=alliant 986cae39615Smrg ;; 98792e95ad1Smrg romp-unknown) 98892e95ad1Smrg vendor=ibm 989a6d9b409Smrg ;; 99092e95ad1Smrg mmix-unknown) 99192e95ad1Smrg vendor=knuth 992a6d9b409Smrg ;; 99392e95ad1Smrg microblaze-unknown | microblazeel-unknown) 99492e95ad1Smrg vendor=xilinx 995a6d9b409Smrg ;; 99692e95ad1Smrg rs6000-unknown) 99792e95ad1Smrg vendor=ibm 998a6d9b409Smrg ;; 99992e95ad1Smrg vax-unknown) 100092e95ad1Smrg vendor=dec 1001a6d9b409Smrg ;; 100292e95ad1Smrg pdp11-unknown) 100392e95ad1Smrg vendor=dec 1004a097bd00Smrg ;; 100592e95ad1Smrg we32k-unknown) 100692e95ad1Smrg vendor=att 1007a6d9b409Smrg ;; 100892e95ad1Smrg cydra-unknown) 100992e95ad1Smrg vendor=cydrome 1010a6d9b409Smrg ;; 101192e95ad1Smrg i370-ibm*) 101292e95ad1Smrg vendor=ibm 1013a6d9b409Smrg ;; 101492e95ad1Smrg orion-unknown) 101592e95ad1Smrg vendor=highlevel 1016a6d9b409Smrg ;; 101792e95ad1Smrg xps-unknown | xps100-unknown) 101892e95ad1Smrg cpu=xps100 101992e95ad1Smrg vendor=honeywell 1020a6d9b409Smrg ;; 102192e95ad1Smrg 102292e95ad1Smrg # Here we normalize CPU types with a missing or matching vendor 102392e95ad1Smrg dpx20-unknown | dpx20-bull) 102492e95ad1Smrg cpu=rs6000 102592e95ad1Smrg vendor=bull 102692e95ad1Smrg basic_os=${basic_os:-bosx} 1027a6d9b409Smrg ;; 102892e95ad1Smrg 102992e95ad1Smrg # Here we normalize CPU types irrespective of the vendor 103092e95ad1Smrg amd64-*) 103192e95ad1Smrg cpu=x86_64 1032a6d9b409Smrg ;; 103392e95ad1Smrg blackfin-*) 103492e95ad1Smrg cpu=bfin 103592e95ad1Smrg basic_os=linux 1036a6d9b409Smrg ;; 103792e95ad1Smrg c54x-*) 103892e95ad1Smrg cpu=tic54x 1039a6d9b409Smrg ;; 104092e95ad1Smrg c55x-*) 104192e95ad1Smrg cpu=tic55x 1042a6d9b409Smrg ;; 104392e95ad1Smrg c6x-*) 104492e95ad1Smrg cpu=tic6x 1045a6d9b409Smrg ;; 104692e95ad1Smrg e500v[12]-*) 104792e95ad1Smrg cpu=powerpc 104892e95ad1Smrg basic_os=${basic_os}"spe" 1049a6d9b409Smrg ;; 105092e95ad1Smrg mips3*-*) 105192e95ad1Smrg cpu=mips64 1052a6d9b409Smrg ;; 105392e95ad1Smrg ms1-*) 105492e95ad1Smrg cpu=mt 1055a6d9b409Smrg ;; 105692e95ad1Smrg m68knommu-*) 105792e95ad1Smrg cpu=m68k 105892e95ad1Smrg basic_os=linux 1059a6d9b409Smrg ;; 106092e95ad1Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106192e95ad1Smrg cpu=s12z 1062efda2da8Smrg ;; 106392e95ad1Smrg openrisc-*) 106492e95ad1Smrg cpu=or32 1065a6d9b409Smrg ;; 106692e95ad1Smrg parisc-*) 106792e95ad1Smrg cpu=hppa 106892e95ad1Smrg basic_os=linux 1069a6d9b409Smrg ;; 107092e95ad1Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107192e95ad1Smrg cpu=i586 1072a6d9b409Smrg ;; 107392e95ad1Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 107492e95ad1Smrg cpu=i686 1075a6d9b409Smrg ;; 107692e95ad1Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 107792e95ad1Smrg cpu=i686 1078a6d9b409Smrg ;; 107992e95ad1Smrg pentium4-*) 108092e95ad1Smrg cpu=i786 1081a6d9b409Smrg ;; 108292e95ad1Smrg pc98-*) 108392e95ad1Smrg cpu=i386 1084a6d9b409Smrg ;; 108592e95ad1Smrg ppc-* | ppcbe-*) 108692e95ad1Smrg cpu=powerpc 1087a6d9b409Smrg ;; 108892e95ad1Smrg ppcle-* | powerpclittle-*) 108992e95ad1Smrg cpu=powerpcle 1090a6d9b409Smrg ;; 109192e95ad1Smrg ppc64-*) 109292e95ad1Smrg cpu=powerpc64 1093a6d9b409Smrg ;; 109492e95ad1Smrg ppc64le-* | powerpc64little-*) 109592e95ad1Smrg cpu=powerpc64le 1096a6d9b409Smrg ;; 109792e95ad1Smrg sb1-*) 109892e95ad1Smrg cpu=mipsisa64sb1 1099a6d9b409Smrg ;; 110092e95ad1Smrg sb1el-*) 110192e95ad1Smrg cpu=mipsisa64sb1el 1102a6d9b409Smrg ;; 110392e95ad1Smrg sh5e[lb]-*) 110492e95ad1Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1105a6d9b409Smrg ;; 110692e95ad1Smrg spur-*) 110792e95ad1Smrg cpu=spur 1108a6d9b409Smrg ;; 110992e95ad1Smrg strongarm-* | thumb-*) 111092e95ad1Smrg cpu=arm 1111a6d9b409Smrg ;; 111292e95ad1Smrg tx39-*) 111392e95ad1Smrg cpu=mipstx39 11148b8e729cSmrg ;; 111592e95ad1Smrg tx39el-*) 111692e95ad1Smrg cpu=mipstx39el 1117a6d9b409Smrg ;; 111892e95ad1Smrg x64-*) 111992e95ad1Smrg cpu=x86_64 1120a6d9b409Smrg ;; 1121a097bd00Smrg xscale-* | xscalee[bl]-*) 112292e95ad1Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1123a6d9b409Smrg ;; 112492e95ad1Smrg arm64-*) 112592e95ad1Smrg cpu=aarch64 1126a6d9b409Smrg ;; 1127a6d9b409Smrg 112892e95ad1Smrg # Recognize the canonical CPU Types that limit and/or modify the 112992e95ad1Smrg # company names they are paired with. 113092e95ad1Smrg cr16-*) 113192e95ad1Smrg basic_os=${basic_os:-elf} 1132a6d9b409Smrg ;; 113392e95ad1Smrg crisv32-* | etraxfs*-*) 113492e95ad1Smrg cpu=crisv32 113592e95ad1Smrg vendor=axis 1136a6d9b409Smrg ;; 113792e95ad1Smrg cris-* | etrax*-*) 113892e95ad1Smrg cpu=cris 113992e95ad1Smrg vendor=axis 1140a6d9b409Smrg ;; 114192e95ad1Smrg crx-*) 114292e95ad1Smrg basic_os=${basic_os:-elf} 1143a6d9b409Smrg ;; 114492e95ad1Smrg neo-tandem) 114592e95ad1Smrg cpu=neo 114692e95ad1Smrg vendor=tandem 1147a6d9b409Smrg ;; 114892e95ad1Smrg nse-tandem) 114992e95ad1Smrg cpu=nse 115092e95ad1Smrg vendor=tandem 1151a6d9b409Smrg ;; 115292e95ad1Smrg nsr-tandem) 115392e95ad1Smrg cpu=nsr 115492e95ad1Smrg vendor=tandem 1155a6d9b409Smrg ;; 115692e95ad1Smrg nsv-tandem) 115792e95ad1Smrg cpu=nsv 115892e95ad1Smrg vendor=tandem 1159a6d9b409Smrg ;; 116092e95ad1Smrg nsx-tandem) 116192e95ad1Smrg cpu=nsx 116292e95ad1Smrg vendor=tandem 1163a6d9b409Smrg ;; 116492e95ad1Smrg mipsallegrexel-sony) 116592e95ad1Smrg cpu=mipsallegrexel 116692e95ad1Smrg vendor=sony 1167a6d9b409Smrg ;; 116892e95ad1Smrg tile*-*) 116992e95ad1Smrg basic_os=${basic_os:-linux-gnu} 1170a6d9b409Smrg ;; 117192e95ad1Smrg 1172a6d9b409Smrg *) 117392e95ad1Smrg # Recognize the canonical CPU types that are allowed with any 117492e95ad1Smrg # company name. 117592e95ad1Smrg case $cpu in 117692e95ad1Smrg 1750a | 580 \ 117792e95ad1Smrg | a29k \ 117892e95ad1Smrg | aarch64 | aarch64_be \ 117992e95ad1Smrg | abacus \ 118092e95ad1Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118192e95ad1Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118292e95ad1Smrg | alphapca5[67] | alpha64pca5[67] \ 118392e95ad1Smrg | am33_2.0 \ 118492e95ad1Smrg | amdgcn \ 118592e95ad1Smrg | arc | arceb | arc32 | arc64 \ 118692e95ad1Smrg | arm | arm[lb]e | arme[lb] | armv* \ 118792e95ad1Smrg | avr | avr32 \ 118892e95ad1Smrg | asmjs \ 118992e95ad1Smrg | ba \ 119092e95ad1Smrg | be32 | be64 \ 119192e95ad1Smrg | bfin | bpf | bs2000 \ 119292e95ad1Smrg | c[123]* | c30 | [cjt]90 | c4x \ 119392e95ad1Smrg | c8051 | clipper | craynv | csky | cydra \ 119492e95ad1Smrg | d10v | d30v | dlx | dsp16xx \ 119592e95ad1Smrg | e2k | elxsi | epiphany \ 119692e95ad1Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 119792e95ad1Smrg | h8300 | h8500 \ 119892e95ad1Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 119992e95ad1Smrg | hexagon \ 120092e95ad1Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120192e95ad1Smrg | ip2k | iq2000 \ 120292e95ad1Smrg | k1om \ 120392e95ad1Smrg | le32 | le64 \ 120492e95ad1Smrg | lm32 \ 120592e95ad1Smrg | loongarch32 | loongarch64 | loongarchx32 \ 120692e95ad1Smrg | m32c | m32r | m32rle \ 120792e95ad1Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 120892e95ad1Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 120992e95ad1Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121092e95ad1Smrg | microblaze | microblazeel \ 121192e95ad1Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121292e95ad1Smrg | mips16 \ 121392e95ad1Smrg | mips64 | mips64eb | mips64el \ 121492e95ad1Smrg | mips64octeon | mips64octeonel \ 121592e95ad1Smrg | mips64orion | mips64orionel \ 121692e95ad1Smrg | mips64r5900 | mips64r5900el \ 121792e95ad1Smrg | mips64vr | mips64vrel \ 121892e95ad1Smrg | mips64vr4100 | mips64vr4100el \ 121992e95ad1Smrg | mips64vr4300 | mips64vr4300el \ 122092e95ad1Smrg | mips64vr5000 | mips64vr5000el \ 122192e95ad1Smrg | mips64vr5900 | mips64vr5900el \ 122292e95ad1Smrg | mipsisa32 | mipsisa32el \ 122392e95ad1Smrg | mipsisa32r2 | mipsisa32r2el \ 122492e95ad1Smrg | mipsisa32r3 | mipsisa32r3el \ 122592e95ad1Smrg | mipsisa32r5 | mipsisa32r5el \ 122692e95ad1Smrg | mipsisa32r6 | mipsisa32r6el \ 122792e95ad1Smrg | mipsisa64 | mipsisa64el \ 122892e95ad1Smrg | mipsisa64r2 | mipsisa64r2el \ 122992e95ad1Smrg | mipsisa64r3 | mipsisa64r3el \ 123092e95ad1Smrg | mipsisa64r5 | mipsisa64r5el \ 123192e95ad1Smrg | mipsisa64r6 | mipsisa64r6el \ 123292e95ad1Smrg | mipsisa64sb1 | mipsisa64sb1el \ 123392e95ad1Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 123492e95ad1Smrg | mipsr5900 | mipsr5900el \ 123592e95ad1Smrg | mipstx39 | mipstx39el \ 123692e95ad1Smrg | mmix \ 123792e95ad1Smrg | mn10200 | mn10300 \ 123892e95ad1Smrg | moxie \ 123992e95ad1Smrg | mt \ 124092e95ad1Smrg | msp430 \ 124192e95ad1Smrg | nds32 | nds32le | nds32be \ 124292e95ad1Smrg | nfp \ 124392e95ad1Smrg | nios | nios2 | nios2eb | nios2el \ 124492e95ad1Smrg | none | np1 | ns16k | ns32k | nvptx \ 124592e95ad1Smrg | open8 \ 124692e95ad1Smrg | or1k* \ 124792e95ad1Smrg | or32 \ 124892e95ad1Smrg | orion \ 124992e95ad1Smrg | picochip \ 125092e95ad1Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125192e95ad1Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125292e95ad1Smrg | pru \ 125392e95ad1Smrg | pyramid \ 125492e95ad1Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 125592e95ad1Smrg | rl78 | romp | rs6000 | rx \ 125692e95ad1Smrg | s390 | s390x \ 125792e95ad1Smrg | score \ 125892e95ad1Smrg | sh | shl \ 125992e95ad1Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126092e95ad1Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126192e95ad1Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126292e95ad1Smrg | sparclite \ 126392e95ad1Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126492e95ad1Smrg | spu \ 126592e95ad1Smrg | tahoe \ 126692e95ad1Smrg | thumbv7* \ 126792e95ad1Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 126892e95ad1Smrg | tron \ 126992e95ad1Smrg | ubicom32 \ 127092e95ad1Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127192e95ad1Smrg | vax \ 127292e95ad1Smrg | visium \ 127392e95ad1Smrg | w65 \ 127492e95ad1Smrg | wasm32 | wasm64 \ 127592e95ad1Smrg | we32k \ 127692e95ad1Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 127792e95ad1Smrg | xstormy16 | xtensa* \ 127892e95ad1Smrg | ymp \ 127992e95ad1Smrg | z8k | z80) 128092e95ad1Smrg ;; 128192e95ad1Smrg 128292e95ad1Smrg *) 128392e95ad1Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128492e95ad1Smrg exit 1 128592e95ad1Smrg ;; 128692e95ad1Smrg esac 1287a6d9b409Smrg ;; 1288a6d9b409Smrgesac 1289a6d9b409Smrg 1290a6d9b409Smrg# Here we canonicalize certain aliases for manufacturers. 129192e95ad1Smrgcase $vendor in 129292e95ad1Smrg digital*) 129392e95ad1Smrg vendor=dec 1294a6d9b409Smrg ;; 129592e95ad1Smrg commodore*) 129692e95ad1Smrg vendor=cbm 1297a6d9b409Smrg ;; 1298a6d9b409Smrg *) 1299a6d9b409Smrg ;; 1300a6d9b409Smrgesac 1301a6d9b409Smrg 1302a6d9b409Smrg# Decode manufacturer-specific aliases for certain operating systems. 1303a6d9b409Smrg 130492e95ad1Smrgif test x$basic_os != x 1305a6d9b409Smrgthen 130692e95ad1Smrg 130792e95ad1Smrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 130892e95ad1Smrg# set os. 130992e95ad1Smrgcase $basic_os in 131092e95ad1Smrg gnu/linux*) 131192e95ad1Smrg kernel=linux 131292e95ad1Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131392e95ad1Smrg ;; 131492e95ad1Smrg os2-emx) 131592e95ad1Smrg kernel=os2 131692e95ad1Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 131792e95ad1Smrg ;; 131892e95ad1Smrg nto-qnx*) 131992e95ad1Smrg kernel=nto 132092e95ad1Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132192e95ad1Smrg ;; 132292e95ad1Smrg *-*) 132392e95ad1Smrg # shellcheck disable=SC2162 132492e95ad1Smrg saved_IFS=$IFS 132592e95ad1Smrg IFS="-" read kernel os <<EOF 132692e95ad1Smrg$basic_os 132792e95ad1SmrgEOF 132892e95ad1Smrg IFS=$saved_IFS 132992e95ad1Smrg ;; 133092e95ad1Smrg # Default OS when just kernel was specified 133192e95ad1Smrg nto*) 133292e95ad1Smrg kernel=nto 133392e95ad1Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133492e95ad1Smrg ;; 133592e95ad1Smrg linux*) 133692e95ad1Smrg kernel=linux 133792e95ad1Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 133892e95ad1Smrg ;; 133992e95ad1Smrg *) 134092e95ad1Smrg kernel= 134192e95ad1Smrg os=$basic_os 134292e95ad1Smrg ;; 134392e95ad1Smrgesac 134492e95ad1Smrg 134592e95ad1Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 134692e95ad1Smrg# etc.) 1347a6d9b409Smrgcase $os in 13488b8e729cSmrg # First match some system type aliases that might get confused 13498b8e729cSmrg # with valid system types. 135092e95ad1Smrg # solaris* is a basic system type, with this one exception. 135192e95ad1Smrg auroraux) 135292e95ad1Smrg os=auroraux 13531e5fa1c5Smrg ;; 135492e95ad1Smrg bluegene*) 135592e95ad1Smrg os=cnk 1356a6d9b409Smrg ;; 135792e95ad1Smrg solaris1 | solaris1.*) 135892e95ad1Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1359a6d9b409Smrg ;; 136092e95ad1Smrg solaris) 136192e95ad1Smrg os=solaris2 1362a6d9b409Smrg ;; 136392e95ad1Smrg unixware*) 136492e95ad1Smrg os=sysv4.2uw 1365a6d9b409Smrg ;; 13668b8e729cSmrg # es1800 is here to avoid being matched by es* (a different OS) 136792e95ad1Smrg es1800*) 136892e95ad1Smrg os=ose 13698b8e729cSmrg ;; 137092e95ad1Smrg # Some version numbers need modification 137192e95ad1Smrg chorusos*) 137292e95ad1Smrg os=chorusos 1373a6d9b409Smrg ;; 137492e95ad1Smrg isc) 137592e95ad1Smrg os=isc2.2 1376a6d9b409Smrg ;; 137792e95ad1Smrg sco6) 137892e95ad1Smrg os=sco5v6 1379a6d9b409Smrg ;; 138092e95ad1Smrg sco5) 138192e95ad1Smrg os=sco3.2v5 1382a6d9b409Smrg ;; 138392e95ad1Smrg sco4) 138492e95ad1Smrg os=sco3.2v4 1385a6d9b409Smrg ;; 138692e95ad1Smrg sco3.2.[4-9]*) 138792e95ad1Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1388a6d9b409Smrg ;; 138992e95ad1Smrg sco*v* | scout) 139092e95ad1Smrg # Don't match below 1391a6d9b409Smrg ;; 139292e95ad1Smrg sco*) 139392e95ad1Smrg os=sco3.2v2 1394a6d9b409Smrg ;; 139592e95ad1Smrg psos*) 139692e95ad1Smrg os=psos 1397a6d9b409Smrg ;; 139892e95ad1Smrg qnx*) 139992e95ad1Smrg os=qnx 1400a6d9b409Smrg ;; 140192e95ad1Smrg hiux*) 140292e95ad1Smrg os=hiuxwe2 1403a6d9b409Smrg ;; 140492e95ad1Smrg lynx*178) 140592e95ad1Smrg os=lynxos178 1406a6d9b409Smrg ;; 140792e95ad1Smrg lynx*5) 140892e95ad1Smrg os=lynxos5 1409a6d9b409Smrg ;; 141092e95ad1Smrg lynxos*) 141192e95ad1Smrg # don't get caught up in next wildcard 1412a6d9b409Smrg ;; 141392e95ad1Smrg lynx*) 141492e95ad1Smrg os=lynxos 1415a6d9b409Smrg ;; 141692e95ad1Smrg mac[0-9]*) 141792e95ad1Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1418a6d9b409Smrg ;; 141992e95ad1Smrg opened*) 142092e95ad1Smrg os=openedition 1421a6d9b409Smrg ;; 142292e95ad1Smrg os400*) 142392e95ad1Smrg os=os400 1424a6d9b409Smrg ;; 142592e95ad1Smrg sunos5*) 142692e95ad1Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1427a6d9b409Smrg ;; 142892e95ad1Smrg sunos6*) 142992e95ad1Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1430a6d9b409Smrg ;; 143192e95ad1Smrg wince*) 143292e95ad1Smrg os=wince 1433a6d9b409Smrg ;; 143492e95ad1Smrg utek*) 143592e95ad1Smrg os=bsd 1436a6d9b409Smrg ;; 143792e95ad1Smrg dynix*) 143892e95ad1Smrg os=bsd 1439a6d9b409Smrg ;; 144092e95ad1Smrg acis*) 144192e95ad1Smrg os=aos 1442a6d9b409Smrg ;; 144392e95ad1Smrg atheos*) 144492e95ad1Smrg os=atheos 1445a6d9b409Smrg ;; 144692e95ad1Smrg syllable*) 144792e95ad1Smrg os=syllable 144892e95ad1Smrg ;; 144992e95ad1Smrg 386bsd) 145092e95ad1Smrg os=bsd 145192e95ad1Smrg ;; 145292e95ad1Smrg ctix* | uts*) 145392e95ad1Smrg os=sysv 145492e95ad1Smrg ;; 145592e95ad1Smrg nova*) 145692e95ad1Smrg os=rtmk-nova 145792e95ad1Smrg ;; 145892e95ad1Smrg ns2) 145992e95ad1Smrg os=nextstep2 146092e95ad1Smrg ;; 146192e95ad1Smrg # Preserve the version number of sinix5. 146292e95ad1Smrg sinix5.*) 146392e95ad1Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1464a6d9b409Smrg ;; 146592e95ad1Smrg sinix*) 146692e95ad1Smrg os=sysv4 1467a6d9b409Smrg ;; 146892e95ad1Smrg tpf*) 146992e95ad1Smrg os=tpf 1470a6d9b409Smrg ;; 147192e95ad1Smrg triton*) 147292e95ad1Smrg os=sysv3 1473a6d9b409Smrg ;; 147492e95ad1Smrg oss*) 147592e95ad1Smrg os=sysv3 1476a6d9b409Smrg ;; 147792e95ad1Smrg svr4*) 147892e95ad1Smrg os=sysv4 1479a6d9b409Smrg ;; 148092e95ad1Smrg svr3) 148192e95ad1Smrg os=sysv3 1482a6d9b409Smrg ;; 148392e95ad1Smrg sysvr4) 148492e95ad1Smrg os=sysv4 1485a6d9b409Smrg ;; 148692e95ad1Smrg ose*) 148792e95ad1Smrg os=ose 1488a6d9b409Smrg ;; 148992e95ad1Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149092e95ad1Smrg os=mint 1491efda2da8Smrg ;; 149292e95ad1Smrg dicos*) 149392e95ad1Smrg os=dicos 149492e95ad1Smrg ;; 149592e95ad1Smrg pikeos*) 14968b8e729cSmrg # Until real need of OS specific support for 14978b8e729cSmrg # particular features comes up, bare metal 14988b8e729cSmrg # configurations are quite functional. 149992e95ad1Smrg case $cpu in 15008b8e729cSmrg arm*) 150192e95ad1Smrg os=eabi 15028b8e729cSmrg ;; 15038b8e729cSmrg *) 150492e95ad1Smrg os=elf 15058b8e729cSmrg ;; 15068b8e729cSmrg esac 15078b8e729cSmrg ;; 1508a6d9b409Smrg *) 150992e95ad1Smrg # No normalization, but not necessarily accepted, that comes below. 1510a6d9b409Smrg ;; 1511a6d9b409Smrgesac 151292e95ad1Smrg 1513a6d9b409Smrgelse 1514a6d9b409Smrg 1515a6d9b409Smrg# Here we handle the default operating systems that come with various machines. 1516a6d9b409Smrg# The value should be what the vendor currently ships out the door with their 1517a6d9b409Smrg# machine or put another way, the most popular os provided with the machine. 1518a6d9b409Smrg 1519a6d9b409Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1520a6d9b409Smrg# "-sun"), then you have to tell the case statement up towards the top 1521a6d9b409Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1522a6d9b409Smrg# will signal an error saying that MANUFACTURER isn't an operating 1523a6d9b409Smrg# system, and we'll never get to this point. 1524a6d9b409Smrg 152592e95ad1Smrgkernel= 152692e95ad1Smrgcase $cpu-$vendor in 1527a097bd00Smrg score-*) 152892e95ad1Smrg os=elf 1529cae39615Smrg ;; 1530a097bd00Smrg spu-*) 153192e95ad1Smrg os=elf 1532cae39615Smrg ;; 1533a6d9b409Smrg *-acorn) 153492e95ad1Smrg os=riscix1.2 1535a6d9b409Smrg ;; 1536a6d9b409Smrg arm*-rebel) 153792e95ad1Smrg kernel=linux 153892e95ad1Smrg os=gnu 1539a6d9b409Smrg ;; 1540a6d9b409Smrg arm*-semi) 154192e95ad1Smrg os=aout 1542a6d9b409Smrg ;; 1543a097bd00Smrg c4x-* | tic4x-*) 154492e95ad1Smrg os=coff 1545a097bd00Smrg ;; 1546b91640d3Smrg c8051-*) 154792e95ad1Smrg os=elf 154892e95ad1Smrg ;; 154992e95ad1Smrg clipper-intergraph) 155092e95ad1Smrg os=clix 1551b91640d3Smrg ;; 1552b91640d3Smrg hexagon-*) 155392e95ad1Smrg os=elf 1554b91640d3Smrg ;; 1555a097bd00Smrg tic54x-*) 155692e95ad1Smrg os=coff 1557a097bd00Smrg ;; 1558a097bd00Smrg tic55x-*) 155992e95ad1Smrg os=coff 1560a097bd00Smrg ;; 1561a097bd00Smrg tic6x-*) 156292e95ad1Smrg os=coff 1563cae39615Smrg ;; 1564a6d9b409Smrg # This must come before the *-dec entry. 1565a6d9b409Smrg pdp10-*) 156692e95ad1Smrg os=tops20 1567a6d9b409Smrg ;; 1568a6d9b409Smrg pdp11-*) 156992e95ad1Smrg os=none 1570a6d9b409Smrg ;; 1571a6d9b409Smrg *-dec | vax-*) 157292e95ad1Smrg os=ultrix4.2 1573a6d9b409Smrg ;; 1574a6d9b409Smrg m68*-apollo) 157592e95ad1Smrg os=domain 1576a6d9b409Smrg ;; 1577a6d9b409Smrg i386-sun) 157892e95ad1Smrg os=sunos4.0.2 1579a6d9b409Smrg ;; 1580a6d9b409Smrg m68000-sun) 158192e95ad1Smrg os=sunos3 1582a6d9b409Smrg ;; 1583a6d9b409Smrg m68*-cisco) 158492e95ad1Smrg os=aout 1585a6d9b409Smrg ;; 1586a097bd00Smrg mep-*) 158792e95ad1Smrg os=elf 1588cae39615Smrg ;; 1589a6d9b409Smrg mips*-cisco) 159092e95ad1Smrg os=elf 1591a6d9b409Smrg ;; 1592a6d9b409Smrg mips*-*) 159392e95ad1Smrg os=elf 1594a6d9b409Smrg ;; 1595a6d9b409Smrg or32-*) 159692e95ad1Smrg os=coff 1597a6d9b409Smrg ;; 1598a6d9b409Smrg *-tti) # must be before sparc entry or we get the wrong os. 159992e95ad1Smrg os=sysv3 1600a6d9b409Smrg ;; 1601a6d9b409Smrg sparc-* | *-sun) 160292e95ad1Smrg os=sunos4.1.1 1603a6d9b409Smrg ;; 16048b8e729cSmrg pru-*) 160592e95ad1Smrg os=elf 16068b8e729cSmrg ;; 1607a6d9b409Smrg *-be) 160892e95ad1Smrg os=beos 1609a6d9b409Smrg ;; 1610a6d9b409Smrg *-ibm) 161192e95ad1Smrg os=aix 1612a6d9b409Smrg ;; 1613a097bd00Smrg *-knuth) 161492e95ad1Smrg os=mmixware 1615a6d9b409Smrg ;; 1616a6d9b409Smrg *-wec) 161792e95ad1Smrg os=proelf 1618a6d9b409Smrg ;; 1619a6d9b409Smrg *-winbond) 162092e95ad1Smrg os=proelf 1621a6d9b409Smrg ;; 1622a6d9b409Smrg *-oki) 162392e95ad1Smrg os=proelf 1624a6d9b409Smrg ;; 1625a6d9b409Smrg *-hp) 162692e95ad1Smrg os=hpux 1627a6d9b409Smrg ;; 1628a6d9b409Smrg *-hitachi) 162992e95ad1Smrg os=hiux 1630a6d9b409Smrg ;; 1631a6d9b409Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 163292e95ad1Smrg os=sysv 1633a6d9b409Smrg ;; 1634a6d9b409Smrg *-cbm) 163592e95ad1Smrg os=amigaos 1636a6d9b409Smrg ;; 1637a6d9b409Smrg *-dg) 163892e95ad1Smrg os=dgux 1639a6d9b409Smrg ;; 1640a6d9b409Smrg *-dolphin) 164192e95ad1Smrg os=sysv3 1642a6d9b409Smrg ;; 1643a6d9b409Smrg m68k-ccur) 164492e95ad1Smrg os=rtu 1645a6d9b409Smrg ;; 1646a6d9b409Smrg m88k-omron*) 164792e95ad1Smrg os=luna 1648a6d9b409Smrg ;; 16498b8e729cSmrg *-next) 165092e95ad1Smrg os=nextstep 1651a6d9b409Smrg ;; 1652a6d9b409Smrg *-sequent) 165392e95ad1Smrg os=ptx 1654a6d9b409Smrg ;; 1655a6d9b409Smrg *-crds) 165692e95ad1Smrg os=unos 1657a6d9b409Smrg ;; 1658a6d9b409Smrg *-ns) 165992e95ad1Smrg os=genix 1660a6d9b409Smrg ;; 1661a6d9b409Smrg i370-*) 166292e95ad1Smrg os=mvs 1663a6d9b409Smrg ;; 1664a6d9b409Smrg *-gould) 166592e95ad1Smrg os=sysv 1666a6d9b409Smrg ;; 1667a6d9b409Smrg *-highlevel) 166892e95ad1Smrg os=bsd 1669a6d9b409Smrg ;; 1670a6d9b409Smrg *-encore) 167192e95ad1Smrg os=bsd 1672a6d9b409Smrg ;; 1673a6d9b409Smrg *-sgi) 167492e95ad1Smrg os=irix 1675a6d9b409Smrg ;; 1676a6d9b409Smrg *-siemens) 167792e95ad1Smrg os=sysv4 1678a6d9b409Smrg ;; 1679a6d9b409Smrg *-masscomp) 168092e95ad1Smrg os=rtu 1681a6d9b409Smrg ;; 1682a6d9b409Smrg f30[01]-fujitsu | f700-fujitsu) 168392e95ad1Smrg os=uxpv 1684a6d9b409Smrg ;; 1685a6d9b409Smrg *-rom68k) 168692e95ad1Smrg os=coff 1687a6d9b409Smrg ;; 1688a6d9b409Smrg *-*bug) 168992e95ad1Smrg os=coff 1690a6d9b409Smrg ;; 1691a6d9b409Smrg *-apple) 169292e95ad1Smrg os=macos 1693a6d9b409Smrg ;; 1694a6d9b409Smrg *-atari*) 169592e95ad1Smrg os=mint 169692e95ad1Smrg ;; 169792e95ad1Smrg *-wrs) 169892e95ad1Smrg os=vxworks 1699a6d9b409Smrg ;; 1700a6d9b409Smrg *) 170192e95ad1Smrg os=none 1702a6d9b409Smrg ;; 1703a6d9b409Smrgesac 170492e95ad1Smrg 1705a6d9b409Smrgfi 1706a6d9b409Smrg 170792e95ad1Smrg# Now, validate our (potentially fixed-up) OS. 170892e95ad1Smrgcase $os in 170992e95ad1Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171092e95ad1Smrg musl* | newlib* | relibc* | uclibc*) 171192e95ad1Smrg ;; 171292e95ad1Smrg # Likewise for "kernel-abi" 171392e95ad1Smrg eabi* | gnueabi*) 171492e95ad1Smrg ;; 171592e95ad1Smrg # VxWorks passes extra cpu info in the 4th filed. 171692e95ad1Smrg simlinux | simwindows | spe) 171792e95ad1Smrg ;; 171892e95ad1Smrg # Now accept the basic system types. 171992e95ad1Smrg # The portable systems comes first. 172092e95ad1Smrg # Each alternative MUST end in a * to match a version number. 172192e95ad1Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 172292e95ad1Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 172392e95ad1Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 172492e95ad1Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 172592e95ad1Smrg | hiux* | abug | nacl* | netware* | windows* \ 172692e95ad1Smrg | os9* | macos* | osx* | ios* \ 172792e95ad1Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 172892e95ad1Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 172992e95ad1Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173092e95ad1Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 173192e95ad1Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 173292e95ad1Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 173392e95ad1Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 173492e95ad1Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 173592e95ad1Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 173692e95ad1Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 173792e95ad1Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 173892e95ad1Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 173992e95ad1Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174092e95ad1Smrg | midipix* | mingw32* | mingw64* | mint* \ 174192e95ad1Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 174292e95ad1Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 174392e95ad1Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 174492e95ad1Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 174592e95ad1Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 174692e95ad1Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 174792e95ad1Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 174892e95ad1Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 174992e95ad1Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175092e95ad1Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 175192e95ad1Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 175292e95ad1Smrg ;; 175392e95ad1Smrg # This one is extra strict with allowed versions 175492e95ad1Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 175592e95ad1Smrg # Don't forget version if it is 3.2v4 or newer. 175692e95ad1Smrg ;; 175792e95ad1Smrg none) 175892e95ad1Smrg ;; 175992e95ad1Smrg *) 176092e95ad1Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 176192e95ad1Smrg exit 1 176292e95ad1Smrg ;; 176392e95ad1Smrgesac 176492e95ad1Smrg 176592e95ad1Smrg# As a final step for OS-related things, validate the OS-kernel combination 176692e95ad1Smrg# (given a valid OS), if there is a kernel. 176792e95ad1Smrgcase $kernel-$os in 176892e95ad1Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 176992e95ad1Smrg | linux-musl* | linux-relibc* | linux-uclibc* ) 177092e95ad1Smrg ;; 177192e95ad1Smrg uclinux-uclibc* ) 177292e95ad1Smrg ;; 177392e95ad1Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 177492e95ad1Smrg # These are just libc implementations, not actual OSes, and thus 177592e95ad1Smrg # require a kernel. 177692e95ad1Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 177792e95ad1Smrg exit 1 177892e95ad1Smrg ;; 177992e95ad1Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 178092e95ad1Smrg ;; 178192e95ad1Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 178292e95ad1Smrg ;; 178392e95ad1Smrg nto-qnx*) 178492e95ad1Smrg ;; 178592e95ad1Smrg os2-emx) 178692e95ad1Smrg ;; 178792e95ad1Smrg *-eabi* | *-gnueabi*) 178892e95ad1Smrg ;; 178992e95ad1Smrg -*) 179092e95ad1Smrg # Blank kernel with real OS is always fine. 179192e95ad1Smrg ;; 179292e95ad1Smrg *-*) 179392e95ad1Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 179492e95ad1Smrg exit 1 179592e95ad1Smrg ;; 179692e95ad1Smrgesac 179792e95ad1Smrg 1798a6d9b409Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1799a6d9b409Smrg# manufacturer. We pick the logical manufacturer. 180092e95ad1Smrgcase $vendor in 180192e95ad1Smrg unknown) 180292e95ad1Smrg case $cpu-$os in 180392e95ad1Smrg *-riscix*) 1804a6d9b409Smrg vendor=acorn 1805a6d9b409Smrg ;; 180692e95ad1Smrg *-sunos*) 1807a6d9b409Smrg vendor=sun 1808a6d9b409Smrg ;; 180992e95ad1Smrg *-cnk* | *-aix*) 1810a6d9b409Smrg vendor=ibm 1811a6d9b409Smrg ;; 181292e95ad1Smrg *-beos*) 1813a6d9b409Smrg vendor=be 1814a6d9b409Smrg ;; 181592e95ad1Smrg *-hpux*) 1816a6d9b409Smrg vendor=hp 1817a6d9b409Smrg ;; 181892e95ad1Smrg *-mpeix*) 1819a6d9b409Smrg vendor=hp 1820a6d9b409Smrg ;; 182192e95ad1Smrg *-hiux*) 1822a6d9b409Smrg vendor=hitachi 1823a6d9b409Smrg ;; 182492e95ad1Smrg *-unos*) 1825a6d9b409Smrg vendor=crds 1826a6d9b409Smrg ;; 182792e95ad1Smrg *-dgux*) 1828a6d9b409Smrg vendor=dg 1829a6d9b409Smrg ;; 183092e95ad1Smrg *-luna*) 1831a6d9b409Smrg vendor=omron 1832a6d9b409Smrg ;; 183392e95ad1Smrg *-genix*) 1834a6d9b409Smrg vendor=ns 1835a6d9b409Smrg ;; 183692e95ad1Smrg *-clix*) 183792e95ad1Smrg vendor=intergraph 183892e95ad1Smrg ;; 183992e95ad1Smrg *-mvs* | *-opened*) 184092e95ad1Smrg vendor=ibm 184192e95ad1Smrg ;; 184292e95ad1Smrg *-os400*) 1843a6d9b409Smrg vendor=ibm 1844a6d9b409Smrg ;; 184592e95ad1Smrg s390-* | s390x-*) 1846a6d9b409Smrg vendor=ibm 1847a6d9b409Smrg ;; 184892e95ad1Smrg *-ptx*) 1849a6d9b409Smrg vendor=sequent 1850a6d9b409Smrg ;; 185192e95ad1Smrg *-tpf*) 1852a6d9b409Smrg vendor=ibm 1853a6d9b409Smrg ;; 185492e95ad1Smrg *-vxsim* | *-vxworks* | *-windiss*) 1855a6d9b409Smrg vendor=wrs 1856a6d9b409Smrg ;; 185792e95ad1Smrg *-aux*) 1858a6d9b409Smrg vendor=apple 1859a6d9b409Smrg ;; 186092e95ad1Smrg *-hms*) 1861a6d9b409Smrg vendor=hitachi 1862a6d9b409Smrg ;; 186392e95ad1Smrg *-mpw* | *-macos*) 1864a6d9b409Smrg vendor=apple 1865a6d9b409Smrg ;; 186692e95ad1Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1867a6d9b409Smrg vendor=atari 1868a6d9b409Smrg ;; 186992e95ad1Smrg *-vos*) 1870a6d9b409Smrg vendor=stratus 1871a6d9b409Smrg ;; 1872a6d9b409Smrg esac 1873a6d9b409Smrg ;; 1874a6d9b409Smrgesac 1875a6d9b409Smrg 187692e95ad1Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1877a6d9b409Smrgexit 1878a6d9b409Smrg 1879a6d9b409Smrg# Local variables: 188092e95ad1Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1881a6d9b409Smrg# time-stamp-start: "timestamp='" 1882a6d9b409Smrg# time-stamp-format: "%:y-%02m-%02d" 1883a6d9b409Smrg# time-stamp-end: "'" 1884a6d9b409Smrg# End: 1885