104007ebaSmrg#! /bin/sh 204007ebaSmrg# Configuration validation subroutine script. 379d5fcd7Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 404007ebaSmrg 579d5fcd7Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 679d5fcd7Smrg 779d5fcd7Smrgtimestamp='2023-01-21' 804007ebaSmrg 904007ebaSmrg# This file is free software; you can redistribute it and/or modify it 1004007ebaSmrg# under the terms of the GNU General Public License as published by 1179d5fcd7Smrg# the Free Software Foundation, either version 3 of the License, or 1204007ebaSmrg# (at your option) any later version. 1304007ebaSmrg# 1404007ebaSmrg# This program is distributed in the hope that it will be useful, but 1504007ebaSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1604007ebaSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1704007ebaSmrg# General Public License for more details. 1804007ebaSmrg# 1904007ebaSmrg# You should have received a copy of the GNU General Public License 2005cf1079Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 2104007ebaSmrg# 2204007ebaSmrg# As a special exception to the GNU General Public License, if you 2304007ebaSmrg# distribute this file as part of a program that contains a 2404007ebaSmrg# configuration script generated by Autoconf, you may include it under 2504007ebaSmrg# the same distribution terms that you use for the rest of that 2604007ebaSmrg# program. This Exception is an additional permission under section 7 2704007ebaSmrg# of the GNU General Public License, version 3 ("GPLv3"). 2804007ebaSmrg 2904007ebaSmrg 3005cf1079Smrg# Please send patches to <config-patches@gnu.org>. 3104007ebaSmrg# 3204007ebaSmrg# Configuration subroutine to validate and canonicalize a configuration type. 3304007ebaSmrg# Supply the specified configuration type as an argument. 3404007ebaSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 3504007ebaSmrg# Otherwise, we print the canonical config type on stdout and succeed. 3604007ebaSmrg 3704007ebaSmrg# You can get the latest version of this script from: 3879d5fcd7Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 3904007ebaSmrg 4004007ebaSmrg# This file is supposed to be the same for all GNU packages 4104007ebaSmrg# and recognize all the CPU types, system types and aliases 4204007ebaSmrg# that are meaningful with *any* GNU software. 4304007ebaSmrg# Each package is responsible for reporting which valid configurations 4404007ebaSmrg# it does not support. The user should be able to distinguish 4504007ebaSmrg# a failure to support a valid configuration from a meaningless 4604007ebaSmrg# configuration. 4704007ebaSmrg 4804007ebaSmrg# The goal of this file is to map all the various variations of a given 4904007ebaSmrg# machine specification into a single specification in the form: 5004007ebaSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5104007ebaSmrg# or in some cases, the newer four-part form: 5204007ebaSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5304007ebaSmrg# It is wrong to echo any other type of specification. 5404007ebaSmrg 5579d5fcd7Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 5679d5fcd7Smrg# about features and limitations of the classic Bourne shell that were 5779d5fcd7Smrg# superseded or lifted in POSIX. However, this script identifies a wide 5879d5fcd7Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5979d5fcd7Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6079d5fcd7Smrg# have a pre-POSIX /bin/sh. 6179d5fcd7Smrg 6204007ebaSmrgme=`echo "$0" | sed -e 's,.*/,,'` 6304007ebaSmrg 6404007ebaSmrgusage="\ 6505cf1079SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6604007ebaSmrg 6704007ebaSmrgCanonicalize a configuration name. 6804007ebaSmrg 6905cf1079SmrgOptions: 7004007ebaSmrg -h, --help print this help, then exit 7104007ebaSmrg -t, --time-stamp print date of last modification, then exit 7204007ebaSmrg -v, --version print version number, then exit 7304007ebaSmrg 7404007ebaSmrgReport bugs and patches to <config-patches@gnu.org>." 7504007ebaSmrg 7604007ebaSmrgversion="\ 7704007ebaSmrgGNU config.sub ($timestamp) 7804007ebaSmrg 7979d5fcd7SmrgCopyright 1992-2023 Free Software Foundation, Inc. 8004007ebaSmrg 8104007ebaSmrgThis is free software; see the source for copying conditions. There is NO 8204007ebaSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8304007ebaSmrg 8404007ebaSmrghelp=" 8504007ebaSmrgTry \`$me --help' for more information." 8604007ebaSmrg 8704007ebaSmrg# Parse command line 8804007ebaSmrgwhile test $# -gt 0 ; do 8904007ebaSmrg case $1 in 9004007ebaSmrg --time-stamp | --time* | -t ) 9104007ebaSmrg echo "$timestamp" ; exit ;; 9204007ebaSmrg --version | -v ) 9304007ebaSmrg echo "$version" ; exit ;; 9404007ebaSmrg --help | --h* | -h ) 9504007ebaSmrg echo "$usage"; exit ;; 9604007ebaSmrg -- ) # Stop option processing 9704007ebaSmrg shift; break ;; 9804007ebaSmrg - ) # Use stdin as input. 9904007ebaSmrg break ;; 10004007ebaSmrg -* ) 10179d5fcd7Smrg echo "$me: invalid option $1$help" >&2 10204007ebaSmrg exit 1 ;; 10304007ebaSmrg 10404007ebaSmrg *local*) 10504007ebaSmrg # First pass through any local machine types. 10605cf1079Smrg echo "$1" 10704007ebaSmrg exit ;; 10804007ebaSmrg 10904007ebaSmrg * ) 11004007ebaSmrg break ;; 11104007ebaSmrg esac 11204007ebaSmrgdone 11304007ebaSmrg 11404007ebaSmrgcase $# in 11504007ebaSmrg 0) echo "$me: missing argument$help" >&2 11604007ebaSmrg exit 1;; 11704007ebaSmrg 1) ;; 11804007ebaSmrg *) echo "$me: too many arguments$help" >&2 11904007ebaSmrg exit 1;; 12004007ebaSmrgesac 12104007ebaSmrg 12279d5fcd7Smrg# Split fields of configuration type 12379d5fcd7Smrg# shellcheck disable=SC2162 12479d5fcd7Smrgsaved_IFS=$IFS 12579d5fcd7SmrgIFS="-" read field1 field2 field3 field4 <<EOF 12679d5fcd7Smrg$1 12779d5fcd7SmrgEOF 12879d5fcd7SmrgIFS=$saved_IFS 12904007ebaSmrg 13079d5fcd7Smrg# Separate into logical components for further validation 13179d5fcd7Smrgcase $1 in 13279d5fcd7Smrg *-*-*-*-*) 13379d5fcd7Smrg echo Invalid configuration \`"$1"\': more than four components >&2 13479d5fcd7Smrg exit 1 13504007ebaSmrg ;; 13679d5fcd7Smrg *-*-*-*) 13779d5fcd7Smrg basic_machine=$field1-$field2 13879d5fcd7Smrg basic_os=$field3-$field4 13904007ebaSmrg ;; 14079d5fcd7Smrg *-*-*) 14179d5fcd7Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14279d5fcd7Smrg # parts 14379d5fcd7Smrg maybe_os=$field2-$field3 14479d5fcd7Smrg case $maybe_os in 14579d5fcd7Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 14679d5fcd7Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14779d5fcd7Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14879d5fcd7Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 14979d5fcd7Smrg basic_machine=$field1 15079d5fcd7Smrg basic_os=$maybe_os 15179d5fcd7Smrg ;; 15279d5fcd7Smrg android-linux) 15379d5fcd7Smrg basic_machine=$field1-unknown 15479d5fcd7Smrg basic_os=linux-android 15579d5fcd7Smrg ;; 15679d5fcd7Smrg *) 15779d5fcd7Smrg basic_machine=$field1-$field2 15879d5fcd7Smrg basic_os=$field3 15979d5fcd7Smrg ;; 16079d5fcd7Smrg esac 16104007ebaSmrg ;; 16279d5fcd7Smrg *-*) 16379d5fcd7Smrg # A lone config we happen to match not fitting any pattern 16479d5fcd7Smrg case $field1-$field2 in 16579d5fcd7Smrg decstation-3100) 16679d5fcd7Smrg basic_machine=mips-dec 16779d5fcd7Smrg basic_os= 16879d5fcd7Smrg ;; 16979d5fcd7Smrg *-*) 17079d5fcd7Smrg # Second component is usually, but not always the OS 17179d5fcd7Smrg case $field2 in 17279d5fcd7Smrg # Prevent following clause from handling this valid os 17379d5fcd7Smrg sun*os*) 17479d5fcd7Smrg basic_machine=$field1 17579d5fcd7Smrg basic_os=$field2 17679d5fcd7Smrg ;; 17779d5fcd7Smrg zephyr*) 17879d5fcd7Smrg basic_machine=$field1-unknown 17979d5fcd7Smrg basic_os=$field2 18079d5fcd7Smrg ;; 18179d5fcd7Smrg # Manufacturers 18279d5fcd7Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18379d5fcd7Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18479d5fcd7Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18579d5fcd7Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18679d5fcd7Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18779d5fcd7Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18879d5fcd7Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18979d5fcd7Smrg | microblaze* | sim | cisco \ 19079d5fcd7Smrg | oki | wec | wrs | winbond) 19179d5fcd7Smrg basic_machine=$field1-$field2 19279d5fcd7Smrg basic_os= 19379d5fcd7Smrg ;; 19479d5fcd7Smrg *) 19579d5fcd7Smrg basic_machine=$field1 19679d5fcd7Smrg basic_os=$field2 19779d5fcd7Smrg ;; 19879d5fcd7Smrg esac 19979d5fcd7Smrg ;; 20079d5fcd7Smrg esac 20104007ebaSmrg ;; 20279d5fcd7Smrg *) 20379d5fcd7Smrg # Convert single-component short-hands not valid as part of 20479d5fcd7Smrg # multi-component configurations. 20579d5fcd7Smrg case $field1 in 20679d5fcd7Smrg 386bsd) 20779d5fcd7Smrg basic_machine=i386-pc 20879d5fcd7Smrg basic_os=bsd 20979d5fcd7Smrg ;; 21079d5fcd7Smrg a29khif) 21179d5fcd7Smrg basic_machine=a29k-amd 21279d5fcd7Smrg basic_os=udi 21379d5fcd7Smrg ;; 21479d5fcd7Smrg adobe68k) 21579d5fcd7Smrg basic_machine=m68010-adobe 21679d5fcd7Smrg basic_os=scout 21779d5fcd7Smrg ;; 21879d5fcd7Smrg alliant) 21979d5fcd7Smrg basic_machine=fx80-alliant 22079d5fcd7Smrg basic_os= 22179d5fcd7Smrg ;; 22279d5fcd7Smrg altos | altos3068) 22379d5fcd7Smrg basic_machine=m68k-altos 22479d5fcd7Smrg basic_os= 22579d5fcd7Smrg ;; 22679d5fcd7Smrg am29k) 22779d5fcd7Smrg basic_machine=a29k-none 22879d5fcd7Smrg basic_os=bsd 22979d5fcd7Smrg ;; 23079d5fcd7Smrg amdahl) 23179d5fcd7Smrg basic_machine=580-amdahl 23279d5fcd7Smrg basic_os=sysv 23379d5fcd7Smrg ;; 23479d5fcd7Smrg amiga) 23579d5fcd7Smrg basic_machine=m68k-unknown 23679d5fcd7Smrg basic_os= 23779d5fcd7Smrg ;; 23879d5fcd7Smrg amigaos | amigados) 23979d5fcd7Smrg basic_machine=m68k-unknown 24079d5fcd7Smrg basic_os=amigaos 24179d5fcd7Smrg ;; 24279d5fcd7Smrg amigaunix | amix) 24379d5fcd7Smrg basic_machine=m68k-unknown 24479d5fcd7Smrg basic_os=sysv4 24579d5fcd7Smrg ;; 24679d5fcd7Smrg apollo68) 24779d5fcd7Smrg basic_machine=m68k-apollo 24879d5fcd7Smrg basic_os=sysv 24979d5fcd7Smrg ;; 25079d5fcd7Smrg apollo68bsd) 25179d5fcd7Smrg basic_machine=m68k-apollo 25279d5fcd7Smrg basic_os=bsd 25379d5fcd7Smrg ;; 25479d5fcd7Smrg aros) 25579d5fcd7Smrg basic_machine=i386-pc 25679d5fcd7Smrg basic_os=aros 25779d5fcd7Smrg ;; 25879d5fcd7Smrg aux) 25979d5fcd7Smrg basic_machine=m68k-apple 26079d5fcd7Smrg basic_os=aux 26179d5fcd7Smrg ;; 26279d5fcd7Smrg balance) 26379d5fcd7Smrg basic_machine=ns32k-sequent 26479d5fcd7Smrg basic_os=dynix 26579d5fcd7Smrg ;; 26679d5fcd7Smrg blackfin) 26779d5fcd7Smrg basic_machine=bfin-unknown 26879d5fcd7Smrg basic_os=linux 26979d5fcd7Smrg ;; 27079d5fcd7Smrg cegcc) 27179d5fcd7Smrg basic_machine=arm-unknown 27279d5fcd7Smrg basic_os=cegcc 27379d5fcd7Smrg ;; 27479d5fcd7Smrg convex-c1) 27579d5fcd7Smrg basic_machine=c1-convex 27679d5fcd7Smrg basic_os=bsd 27779d5fcd7Smrg ;; 27879d5fcd7Smrg convex-c2) 27979d5fcd7Smrg basic_machine=c2-convex 28079d5fcd7Smrg basic_os=bsd 28179d5fcd7Smrg ;; 28279d5fcd7Smrg convex-c32) 28379d5fcd7Smrg basic_machine=c32-convex 28479d5fcd7Smrg basic_os=bsd 28579d5fcd7Smrg ;; 28679d5fcd7Smrg convex-c34) 28779d5fcd7Smrg basic_machine=c34-convex 28879d5fcd7Smrg basic_os=bsd 28979d5fcd7Smrg ;; 29079d5fcd7Smrg convex-c38) 29179d5fcd7Smrg basic_machine=c38-convex 29279d5fcd7Smrg basic_os=bsd 29379d5fcd7Smrg ;; 29479d5fcd7Smrg cray) 29579d5fcd7Smrg basic_machine=j90-cray 29679d5fcd7Smrg basic_os=unicos 29779d5fcd7Smrg ;; 29879d5fcd7Smrg crds | unos) 29979d5fcd7Smrg basic_machine=m68k-crds 30079d5fcd7Smrg basic_os= 30179d5fcd7Smrg ;; 30279d5fcd7Smrg da30) 30379d5fcd7Smrg basic_machine=m68k-da30 30479d5fcd7Smrg basic_os= 30579d5fcd7Smrg ;; 30679d5fcd7Smrg decstation | pmax | pmin | dec3100 | decstatn) 30779d5fcd7Smrg basic_machine=mips-dec 30879d5fcd7Smrg basic_os= 30979d5fcd7Smrg ;; 31079d5fcd7Smrg delta88) 31179d5fcd7Smrg basic_machine=m88k-motorola 31279d5fcd7Smrg basic_os=sysv3 31379d5fcd7Smrg ;; 31479d5fcd7Smrg dicos) 31579d5fcd7Smrg basic_machine=i686-pc 31679d5fcd7Smrg basic_os=dicos 31779d5fcd7Smrg ;; 31879d5fcd7Smrg djgpp) 31979d5fcd7Smrg basic_machine=i586-pc 32079d5fcd7Smrg basic_os=msdosdjgpp 32179d5fcd7Smrg ;; 32279d5fcd7Smrg ebmon29k) 32379d5fcd7Smrg basic_machine=a29k-amd 32479d5fcd7Smrg basic_os=ebmon 32579d5fcd7Smrg ;; 32679d5fcd7Smrg es1800 | OSE68k | ose68k | ose | OSE) 32779d5fcd7Smrg basic_machine=m68k-ericsson 32879d5fcd7Smrg basic_os=ose 32979d5fcd7Smrg ;; 33079d5fcd7Smrg gmicro) 33179d5fcd7Smrg basic_machine=tron-gmicro 33279d5fcd7Smrg basic_os=sysv 33379d5fcd7Smrg ;; 33479d5fcd7Smrg go32) 33579d5fcd7Smrg basic_machine=i386-pc 33679d5fcd7Smrg basic_os=go32 33779d5fcd7Smrg ;; 33879d5fcd7Smrg h8300hms) 33979d5fcd7Smrg basic_machine=h8300-hitachi 34079d5fcd7Smrg basic_os=hms 34179d5fcd7Smrg ;; 34279d5fcd7Smrg h8300xray) 34379d5fcd7Smrg basic_machine=h8300-hitachi 34479d5fcd7Smrg basic_os=xray 34579d5fcd7Smrg ;; 34679d5fcd7Smrg h8500hms) 34779d5fcd7Smrg basic_machine=h8500-hitachi 34879d5fcd7Smrg basic_os=hms 34979d5fcd7Smrg ;; 35079d5fcd7Smrg harris) 35179d5fcd7Smrg basic_machine=m88k-harris 35279d5fcd7Smrg basic_os=sysv3 35379d5fcd7Smrg ;; 35479d5fcd7Smrg hp300 | hp300hpux) 35579d5fcd7Smrg basic_machine=m68k-hp 35679d5fcd7Smrg basic_os=hpux 35779d5fcd7Smrg ;; 35879d5fcd7Smrg hp300bsd) 35979d5fcd7Smrg basic_machine=m68k-hp 36079d5fcd7Smrg basic_os=bsd 36179d5fcd7Smrg ;; 36279d5fcd7Smrg hppaosf) 36379d5fcd7Smrg basic_machine=hppa1.1-hp 36479d5fcd7Smrg basic_os=osf 36579d5fcd7Smrg ;; 36679d5fcd7Smrg hppro) 36779d5fcd7Smrg basic_machine=hppa1.1-hp 36879d5fcd7Smrg basic_os=proelf 36979d5fcd7Smrg ;; 37079d5fcd7Smrg i386mach) 37179d5fcd7Smrg basic_machine=i386-mach 37279d5fcd7Smrg basic_os=mach 37379d5fcd7Smrg ;; 37479d5fcd7Smrg isi68 | isi) 37579d5fcd7Smrg basic_machine=m68k-isi 37679d5fcd7Smrg basic_os=sysv 37779d5fcd7Smrg ;; 37879d5fcd7Smrg m68knommu) 37979d5fcd7Smrg basic_machine=m68k-unknown 38079d5fcd7Smrg basic_os=linux 38179d5fcd7Smrg ;; 38279d5fcd7Smrg magnum | m3230) 38379d5fcd7Smrg basic_machine=mips-mips 38479d5fcd7Smrg basic_os=sysv 38579d5fcd7Smrg ;; 38679d5fcd7Smrg merlin) 38779d5fcd7Smrg basic_machine=ns32k-utek 38879d5fcd7Smrg basic_os=sysv 38979d5fcd7Smrg ;; 39079d5fcd7Smrg mingw64) 39179d5fcd7Smrg basic_machine=x86_64-pc 39279d5fcd7Smrg basic_os=mingw64 39379d5fcd7Smrg ;; 39479d5fcd7Smrg mingw32) 39579d5fcd7Smrg basic_machine=i686-pc 39679d5fcd7Smrg basic_os=mingw32 39779d5fcd7Smrg ;; 39879d5fcd7Smrg mingw32ce) 39979d5fcd7Smrg basic_machine=arm-unknown 40079d5fcd7Smrg basic_os=mingw32ce 40179d5fcd7Smrg ;; 40279d5fcd7Smrg monitor) 40379d5fcd7Smrg basic_machine=m68k-rom68k 40479d5fcd7Smrg basic_os=coff 40579d5fcd7Smrg ;; 40679d5fcd7Smrg morphos) 40779d5fcd7Smrg basic_machine=powerpc-unknown 40879d5fcd7Smrg basic_os=morphos 40979d5fcd7Smrg ;; 41079d5fcd7Smrg moxiebox) 41179d5fcd7Smrg basic_machine=moxie-unknown 41279d5fcd7Smrg basic_os=moxiebox 41379d5fcd7Smrg ;; 41479d5fcd7Smrg msdos) 41579d5fcd7Smrg basic_machine=i386-pc 41679d5fcd7Smrg basic_os=msdos 41779d5fcd7Smrg ;; 41879d5fcd7Smrg msys) 41979d5fcd7Smrg basic_machine=i686-pc 42079d5fcd7Smrg basic_os=msys 42179d5fcd7Smrg ;; 42279d5fcd7Smrg mvs) 42379d5fcd7Smrg basic_machine=i370-ibm 42479d5fcd7Smrg basic_os=mvs 42579d5fcd7Smrg ;; 42679d5fcd7Smrg nacl) 42779d5fcd7Smrg basic_machine=le32-unknown 42879d5fcd7Smrg basic_os=nacl 42979d5fcd7Smrg ;; 43079d5fcd7Smrg ncr3000) 43179d5fcd7Smrg basic_machine=i486-ncr 43279d5fcd7Smrg basic_os=sysv4 43379d5fcd7Smrg ;; 43479d5fcd7Smrg netbsd386) 43579d5fcd7Smrg basic_machine=i386-pc 43679d5fcd7Smrg basic_os=netbsd 43779d5fcd7Smrg ;; 43879d5fcd7Smrg netwinder) 43979d5fcd7Smrg basic_machine=armv4l-rebel 44079d5fcd7Smrg basic_os=linux 44179d5fcd7Smrg ;; 44279d5fcd7Smrg news | news700 | news800 | news900) 44379d5fcd7Smrg basic_machine=m68k-sony 44479d5fcd7Smrg basic_os=newsos 44579d5fcd7Smrg ;; 44679d5fcd7Smrg news1000) 44779d5fcd7Smrg basic_machine=m68030-sony 44879d5fcd7Smrg basic_os=newsos 44979d5fcd7Smrg ;; 45079d5fcd7Smrg necv70) 45179d5fcd7Smrg basic_machine=v70-nec 45279d5fcd7Smrg basic_os=sysv 45379d5fcd7Smrg ;; 45479d5fcd7Smrg nh3000) 45579d5fcd7Smrg basic_machine=m68k-harris 45679d5fcd7Smrg basic_os=cxux 45779d5fcd7Smrg ;; 45879d5fcd7Smrg nh[45]000) 45979d5fcd7Smrg basic_machine=m88k-harris 46079d5fcd7Smrg basic_os=cxux 46179d5fcd7Smrg ;; 46279d5fcd7Smrg nindy960) 46379d5fcd7Smrg basic_machine=i960-intel 46479d5fcd7Smrg basic_os=nindy 46579d5fcd7Smrg ;; 46679d5fcd7Smrg mon960) 46779d5fcd7Smrg basic_machine=i960-intel 46879d5fcd7Smrg basic_os=mon960 46979d5fcd7Smrg ;; 47079d5fcd7Smrg nonstopux) 47179d5fcd7Smrg basic_machine=mips-compaq 47279d5fcd7Smrg basic_os=nonstopux 47379d5fcd7Smrg ;; 47479d5fcd7Smrg os400) 47579d5fcd7Smrg basic_machine=powerpc-ibm 47679d5fcd7Smrg basic_os=os400 47779d5fcd7Smrg ;; 47879d5fcd7Smrg OSE68000 | ose68000) 47979d5fcd7Smrg basic_machine=m68000-ericsson 48079d5fcd7Smrg basic_os=ose 48179d5fcd7Smrg ;; 48279d5fcd7Smrg os68k) 48379d5fcd7Smrg basic_machine=m68k-none 48479d5fcd7Smrg basic_os=os68k 48579d5fcd7Smrg ;; 48679d5fcd7Smrg paragon) 48779d5fcd7Smrg basic_machine=i860-intel 48879d5fcd7Smrg basic_os=osf 48979d5fcd7Smrg ;; 49079d5fcd7Smrg parisc) 49179d5fcd7Smrg basic_machine=hppa-unknown 49279d5fcd7Smrg basic_os=linux 49379d5fcd7Smrg ;; 49479d5fcd7Smrg psp) 49579d5fcd7Smrg basic_machine=mipsallegrexel-sony 49679d5fcd7Smrg basic_os=psp 49779d5fcd7Smrg ;; 49879d5fcd7Smrg pw32) 49979d5fcd7Smrg basic_machine=i586-unknown 50079d5fcd7Smrg basic_os=pw32 50179d5fcd7Smrg ;; 50279d5fcd7Smrg rdos | rdos64) 50379d5fcd7Smrg basic_machine=x86_64-pc 50479d5fcd7Smrg basic_os=rdos 50579d5fcd7Smrg ;; 50679d5fcd7Smrg rdos32) 50779d5fcd7Smrg basic_machine=i386-pc 50879d5fcd7Smrg basic_os=rdos 50979d5fcd7Smrg ;; 51079d5fcd7Smrg rom68k) 51179d5fcd7Smrg basic_machine=m68k-rom68k 51279d5fcd7Smrg basic_os=coff 51379d5fcd7Smrg ;; 51479d5fcd7Smrg sa29200) 51579d5fcd7Smrg basic_machine=a29k-amd 51679d5fcd7Smrg basic_os=udi 51779d5fcd7Smrg ;; 51879d5fcd7Smrg sei) 51979d5fcd7Smrg basic_machine=mips-sei 52079d5fcd7Smrg basic_os=seiux 52179d5fcd7Smrg ;; 52279d5fcd7Smrg sequent) 52379d5fcd7Smrg basic_machine=i386-sequent 52479d5fcd7Smrg basic_os= 52579d5fcd7Smrg ;; 52679d5fcd7Smrg sps7) 52779d5fcd7Smrg basic_machine=m68k-bull 52879d5fcd7Smrg basic_os=sysv2 52979d5fcd7Smrg ;; 53079d5fcd7Smrg st2000) 53179d5fcd7Smrg basic_machine=m68k-tandem 53279d5fcd7Smrg basic_os= 53379d5fcd7Smrg ;; 53479d5fcd7Smrg stratus) 53579d5fcd7Smrg basic_machine=i860-stratus 53679d5fcd7Smrg basic_os=sysv4 53779d5fcd7Smrg ;; 53879d5fcd7Smrg sun2) 53979d5fcd7Smrg basic_machine=m68000-sun 54079d5fcd7Smrg basic_os= 54179d5fcd7Smrg ;; 54279d5fcd7Smrg sun2os3) 54379d5fcd7Smrg basic_machine=m68000-sun 54479d5fcd7Smrg basic_os=sunos3 54579d5fcd7Smrg ;; 54679d5fcd7Smrg sun2os4) 54779d5fcd7Smrg basic_machine=m68000-sun 54879d5fcd7Smrg basic_os=sunos4 54979d5fcd7Smrg ;; 55079d5fcd7Smrg sun3) 55179d5fcd7Smrg basic_machine=m68k-sun 55279d5fcd7Smrg basic_os= 55379d5fcd7Smrg ;; 55479d5fcd7Smrg sun3os3) 55579d5fcd7Smrg basic_machine=m68k-sun 55679d5fcd7Smrg basic_os=sunos3 55779d5fcd7Smrg ;; 55879d5fcd7Smrg sun3os4) 55979d5fcd7Smrg basic_machine=m68k-sun 56079d5fcd7Smrg basic_os=sunos4 56179d5fcd7Smrg ;; 56279d5fcd7Smrg sun4) 56379d5fcd7Smrg basic_machine=sparc-sun 56479d5fcd7Smrg basic_os= 56579d5fcd7Smrg ;; 56679d5fcd7Smrg sun4os3) 56779d5fcd7Smrg basic_machine=sparc-sun 56879d5fcd7Smrg basic_os=sunos3 56979d5fcd7Smrg ;; 57079d5fcd7Smrg sun4os4) 57179d5fcd7Smrg basic_machine=sparc-sun 57279d5fcd7Smrg basic_os=sunos4 57379d5fcd7Smrg ;; 57479d5fcd7Smrg sun4sol2) 57579d5fcd7Smrg basic_machine=sparc-sun 57679d5fcd7Smrg basic_os=solaris2 57779d5fcd7Smrg ;; 57879d5fcd7Smrg sun386 | sun386i | roadrunner) 57979d5fcd7Smrg basic_machine=i386-sun 58079d5fcd7Smrg basic_os= 58179d5fcd7Smrg ;; 58279d5fcd7Smrg sv1) 58379d5fcd7Smrg basic_machine=sv1-cray 58479d5fcd7Smrg basic_os=unicos 58579d5fcd7Smrg ;; 58679d5fcd7Smrg symmetry) 58779d5fcd7Smrg basic_machine=i386-sequent 58879d5fcd7Smrg basic_os=dynix 58979d5fcd7Smrg ;; 59079d5fcd7Smrg t3e) 59179d5fcd7Smrg basic_machine=alphaev5-cray 59279d5fcd7Smrg basic_os=unicos 59379d5fcd7Smrg ;; 59479d5fcd7Smrg t90) 59579d5fcd7Smrg basic_machine=t90-cray 59679d5fcd7Smrg basic_os=unicos 59779d5fcd7Smrg ;; 59879d5fcd7Smrg toad1) 59979d5fcd7Smrg basic_machine=pdp10-xkl 60079d5fcd7Smrg basic_os=tops20 60179d5fcd7Smrg ;; 60279d5fcd7Smrg tpf) 60379d5fcd7Smrg basic_machine=s390x-ibm 60479d5fcd7Smrg basic_os=tpf 60579d5fcd7Smrg ;; 60679d5fcd7Smrg udi29k) 60779d5fcd7Smrg basic_machine=a29k-amd 60879d5fcd7Smrg basic_os=udi 60979d5fcd7Smrg ;; 61079d5fcd7Smrg ultra3) 61179d5fcd7Smrg basic_machine=a29k-nyu 61279d5fcd7Smrg basic_os=sym1 61379d5fcd7Smrg ;; 61479d5fcd7Smrg v810 | necv810) 61579d5fcd7Smrg basic_machine=v810-nec 61679d5fcd7Smrg basic_os=none 61779d5fcd7Smrg ;; 61879d5fcd7Smrg vaxv) 61979d5fcd7Smrg basic_machine=vax-dec 62079d5fcd7Smrg basic_os=sysv 62179d5fcd7Smrg ;; 62279d5fcd7Smrg vms) 62379d5fcd7Smrg basic_machine=vax-dec 62479d5fcd7Smrg basic_os=vms 62579d5fcd7Smrg ;; 62679d5fcd7Smrg vsta) 62779d5fcd7Smrg basic_machine=i386-pc 62879d5fcd7Smrg basic_os=vsta 62979d5fcd7Smrg ;; 63079d5fcd7Smrg vxworks960) 63179d5fcd7Smrg basic_machine=i960-wrs 63279d5fcd7Smrg basic_os=vxworks 63379d5fcd7Smrg ;; 63479d5fcd7Smrg vxworks68) 63579d5fcd7Smrg basic_machine=m68k-wrs 63679d5fcd7Smrg basic_os=vxworks 63779d5fcd7Smrg ;; 63879d5fcd7Smrg vxworks29k) 63979d5fcd7Smrg basic_machine=a29k-wrs 64079d5fcd7Smrg basic_os=vxworks 64179d5fcd7Smrg ;; 64279d5fcd7Smrg xbox) 64379d5fcd7Smrg basic_machine=i686-pc 64479d5fcd7Smrg basic_os=mingw32 64579d5fcd7Smrg ;; 64679d5fcd7Smrg ymp) 64779d5fcd7Smrg basic_machine=ymp-cray 64879d5fcd7Smrg basic_os=unicos 64979d5fcd7Smrg ;; 65079d5fcd7Smrg *) 65179d5fcd7Smrg basic_machine=$1 65279d5fcd7Smrg basic_os= 65379d5fcd7Smrg ;; 65479d5fcd7Smrg esac 65504007ebaSmrg ;; 65604007ebaSmrgesac 65704007ebaSmrg 65879d5fcd7Smrg# Decode 1-component or ad-hoc basic machines 65904007ebaSmrgcase $basic_machine in 66079d5fcd7Smrg # Here we handle the default manufacturer of certain CPU types. It is in 66179d5fcd7Smrg # some cases the only manufacturer, in others, it is the most popular. 66279d5fcd7Smrg w89k) 66379d5fcd7Smrg cpu=hppa1.1 66479d5fcd7Smrg vendor=winbond 66504007ebaSmrg ;; 66679d5fcd7Smrg op50n) 66779d5fcd7Smrg cpu=hppa1.1 66879d5fcd7Smrg vendor=oki 66904007ebaSmrg ;; 67079d5fcd7Smrg op60c) 67179d5fcd7Smrg cpu=hppa1.1 67279d5fcd7Smrg vendor=oki 67304007ebaSmrg ;; 67479d5fcd7Smrg ibm*) 67579d5fcd7Smrg cpu=i370 67679d5fcd7Smrg vendor=ibm 67704007ebaSmrg ;; 67879d5fcd7Smrg orion105) 67979d5fcd7Smrg cpu=clipper 68079d5fcd7Smrg vendor=highlevel 68104007ebaSmrg ;; 68279d5fcd7Smrg mac | mpw | mac-mpw) 68379d5fcd7Smrg cpu=m68k 68479d5fcd7Smrg vendor=apple 68504007ebaSmrg ;; 68679d5fcd7Smrg pmac | pmac-mpw) 68779d5fcd7Smrg cpu=powerpc 68879d5fcd7Smrg vendor=apple 68904007ebaSmrg ;; 69004007ebaSmrg 69104007ebaSmrg # Recognize the various machine names and aliases which stand 69204007ebaSmrg # for a CPU type and a company and sometimes even an OS. 69304007ebaSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69479d5fcd7Smrg cpu=m68000 69579d5fcd7Smrg vendor=att 69604007ebaSmrg ;; 69704007ebaSmrg 3b*) 69879d5fcd7Smrg cpu=we32k 69979d5fcd7Smrg vendor=att 70004007ebaSmrg ;; 70104007ebaSmrg bluegene*) 70279d5fcd7Smrg cpu=powerpc 70379d5fcd7Smrg vendor=ibm 70479d5fcd7Smrg basic_os=cnk 70504007ebaSmrg ;; 70604007ebaSmrg decsystem10* | dec10*) 70779d5fcd7Smrg cpu=pdp10 70879d5fcd7Smrg vendor=dec 70979d5fcd7Smrg basic_os=tops10 71004007ebaSmrg ;; 71104007ebaSmrg decsystem20* | dec20*) 71279d5fcd7Smrg cpu=pdp10 71379d5fcd7Smrg vendor=dec 71479d5fcd7Smrg basic_os=tops20 71504007ebaSmrg ;; 71604007ebaSmrg delta | 3300 | motorola-3300 | motorola-delta \ 71704007ebaSmrg | 3300-motorola | delta-motorola) 71879d5fcd7Smrg cpu=m68k 71979d5fcd7Smrg vendor=motorola 72004007ebaSmrg ;; 72105cf1079Smrg dpx2*) 72279d5fcd7Smrg cpu=m68k 72379d5fcd7Smrg vendor=bull 72479d5fcd7Smrg basic_os=sysv3 72504007ebaSmrg ;; 72604007ebaSmrg encore | umax | mmax) 72779d5fcd7Smrg cpu=ns32k 72879d5fcd7Smrg vendor=encore 72904007ebaSmrg ;; 73079d5fcd7Smrg elxsi) 73179d5fcd7Smrg cpu=elxsi 73279d5fcd7Smrg vendor=elxsi 73379d5fcd7Smrg basic_os=${basic_os:-bsd} 73404007ebaSmrg ;; 73504007ebaSmrg fx2800) 73679d5fcd7Smrg cpu=i860 73779d5fcd7Smrg vendor=alliant 73804007ebaSmrg ;; 73904007ebaSmrg genix) 74079d5fcd7Smrg cpu=ns32k 74179d5fcd7Smrg vendor=ns 74204007ebaSmrg ;; 74304007ebaSmrg h3050r* | hiux*) 74479d5fcd7Smrg cpu=hppa1.1 74579d5fcd7Smrg vendor=hitachi 74679d5fcd7Smrg basic_os=hiuxwe2 74704007ebaSmrg ;; 74804007ebaSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74979d5fcd7Smrg cpu=hppa1.0 75079d5fcd7Smrg vendor=hp 75104007ebaSmrg ;; 75204007ebaSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 75379d5fcd7Smrg cpu=m68000 75479d5fcd7Smrg vendor=hp 75504007ebaSmrg ;; 75604007ebaSmrg hp9k3[2-9][0-9]) 75779d5fcd7Smrg cpu=m68k 75879d5fcd7Smrg vendor=hp 75904007ebaSmrg ;; 76004007ebaSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76179d5fcd7Smrg cpu=hppa1.0 76279d5fcd7Smrg vendor=hp 76304007ebaSmrg ;; 76404007ebaSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76579d5fcd7Smrg cpu=hppa1.1 76679d5fcd7Smrg vendor=hp 76704007ebaSmrg ;; 76804007ebaSmrg hp9k78[0-9] | hp78[0-9]) 76904007ebaSmrg # FIXME: really hppa2.0-hp 77079d5fcd7Smrg cpu=hppa1.1 77179d5fcd7Smrg vendor=hp 77204007ebaSmrg ;; 77304007ebaSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77404007ebaSmrg # FIXME: really hppa2.0-hp 77579d5fcd7Smrg cpu=hppa1.1 77679d5fcd7Smrg vendor=hp 77704007ebaSmrg ;; 77804007ebaSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 77979d5fcd7Smrg cpu=hppa1.1 78079d5fcd7Smrg vendor=hp 78104007ebaSmrg ;; 78204007ebaSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78379d5fcd7Smrg cpu=hppa1.0 78479d5fcd7Smrg vendor=hp 78504007ebaSmrg ;; 78604007ebaSmrg i*86v32) 78779d5fcd7Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78879d5fcd7Smrg vendor=pc 78979d5fcd7Smrg basic_os=sysv32 79004007ebaSmrg ;; 79104007ebaSmrg i*86v4*) 79279d5fcd7Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79379d5fcd7Smrg vendor=pc 79479d5fcd7Smrg basic_os=sysv4 79504007ebaSmrg ;; 79604007ebaSmrg i*86v) 79779d5fcd7Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79879d5fcd7Smrg vendor=pc 79979d5fcd7Smrg basic_os=sysv 80004007ebaSmrg ;; 80104007ebaSmrg i*86sol2) 80279d5fcd7Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80379d5fcd7Smrg vendor=pc 80479d5fcd7Smrg basic_os=solaris2 80504007ebaSmrg ;; 80679d5fcd7Smrg j90 | j90-cray) 80779d5fcd7Smrg cpu=j90 80879d5fcd7Smrg vendor=cray 80979d5fcd7Smrg basic_os=${basic_os:-unicos} 81004007ebaSmrg ;; 81104007ebaSmrg iris | iris4d) 81279d5fcd7Smrg cpu=mips 81379d5fcd7Smrg vendor=sgi 81479d5fcd7Smrg case $basic_os in 81579d5fcd7Smrg irix*) 81604007ebaSmrg ;; 81704007ebaSmrg *) 81879d5fcd7Smrg basic_os=irix4 81904007ebaSmrg ;; 82004007ebaSmrg esac 82104007ebaSmrg ;; 82204007ebaSmrg miniframe) 82379d5fcd7Smrg cpu=m68000 82479d5fcd7Smrg vendor=convergent 82504007ebaSmrg ;; 82679d5fcd7Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82779d5fcd7Smrg cpu=m68k 82879d5fcd7Smrg vendor=atari 82979d5fcd7Smrg basic_os=mint 83004007ebaSmrg ;; 83104007ebaSmrg news-3600 | risc-news) 83279d5fcd7Smrg cpu=mips 83379d5fcd7Smrg vendor=sony 83479d5fcd7Smrg basic_os=newsos 83504007ebaSmrg ;; 83605cf1079Smrg next | m*-next) 83779d5fcd7Smrg cpu=m68k 83879d5fcd7Smrg vendor=next 83979d5fcd7Smrg case $basic_os in 84079d5fcd7Smrg openstep*) 84179d5fcd7Smrg ;; 84279d5fcd7Smrg nextstep*) 84304007ebaSmrg ;; 84479d5fcd7Smrg ns2*) 84579d5fcd7Smrg basic_os=nextstep2 84604007ebaSmrg ;; 84704007ebaSmrg *) 84879d5fcd7Smrg basic_os=nextstep3 84904007ebaSmrg ;; 85004007ebaSmrg esac 85104007ebaSmrg ;; 85204007ebaSmrg np1) 85379d5fcd7Smrg cpu=np1 85479d5fcd7Smrg vendor=gould 85505cf1079Smrg ;; 85604007ebaSmrg op50n-* | op60c-*) 85779d5fcd7Smrg cpu=hppa1.1 85879d5fcd7Smrg vendor=oki 85979d5fcd7Smrg basic_os=proelf 86004007ebaSmrg ;; 86104007ebaSmrg pa-hitachi) 86279d5fcd7Smrg cpu=hppa1.1 86379d5fcd7Smrg vendor=hitachi 86479d5fcd7Smrg basic_os=hiuxwe2 86504007ebaSmrg ;; 86604007ebaSmrg pbd) 86779d5fcd7Smrg cpu=sparc 86879d5fcd7Smrg vendor=tti 86904007ebaSmrg ;; 87004007ebaSmrg pbb) 87179d5fcd7Smrg cpu=m68k 87279d5fcd7Smrg vendor=tti 87304007ebaSmrg ;; 87479d5fcd7Smrg pc532) 87579d5fcd7Smrg cpu=ns32k 87679d5fcd7Smrg vendor=pc532 87704007ebaSmrg ;; 87804007ebaSmrg pn) 87979d5fcd7Smrg cpu=pn 88079d5fcd7Smrg vendor=gould 88104007ebaSmrg ;; 88279d5fcd7Smrg power) 88379d5fcd7Smrg cpu=power 88479d5fcd7Smrg vendor=ibm 88504007ebaSmrg ;; 88679d5fcd7Smrg ps2) 88779d5fcd7Smrg cpu=i386 88879d5fcd7Smrg vendor=ibm 88904007ebaSmrg ;; 89079d5fcd7Smrg rm[46]00) 89179d5fcd7Smrg cpu=mips 89279d5fcd7Smrg vendor=siemens 89304007ebaSmrg ;; 89479d5fcd7Smrg rtpc | rtpc-*) 89579d5fcd7Smrg cpu=romp 89679d5fcd7Smrg vendor=ibm 89704007ebaSmrg ;; 89879d5fcd7Smrg sde) 89979d5fcd7Smrg cpu=mipsisa32 90079d5fcd7Smrg vendor=sde 90179d5fcd7Smrg basic_os=${basic_os:-elf} 90204007ebaSmrg ;; 90379d5fcd7Smrg simso-wrs) 90479d5fcd7Smrg cpu=sparclite 90579d5fcd7Smrg vendor=wrs 90679d5fcd7Smrg basic_os=vxworks 90704007ebaSmrg ;; 90879d5fcd7Smrg tower | tower-32) 90979d5fcd7Smrg cpu=m68k 91079d5fcd7Smrg vendor=ncr 91104007ebaSmrg ;; 91279d5fcd7Smrg vpp*|vx|vx-*) 91379d5fcd7Smrg cpu=f301 91479d5fcd7Smrg vendor=fujitsu 91504007ebaSmrg ;; 91679d5fcd7Smrg w65) 91779d5fcd7Smrg cpu=w65 91879d5fcd7Smrg vendor=wdc 91904007ebaSmrg ;; 92079d5fcd7Smrg w89k-*) 92179d5fcd7Smrg cpu=hppa1.1 92279d5fcd7Smrg vendor=winbond 92379d5fcd7Smrg basic_os=proelf 92404007ebaSmrg ;; 92579d5fcd7Smrg none) 92679d5fcd7Smrg cpu=none 92779d5fcd7Smrg vendor=none 92804007ebaSmrg ;; 92979d5fcd7Smrg leon|leon[3-9]) 93079d5fcd7Smrg cpu=sparc 93179d5fcd7Smrg vendor=$basic_machine 93204007ebaSmrg ;; 93379d5fcd7Smrg leon-*|leon[3-9]-*) 93479d5fcd7Smrg cpu=sparc 93579d5fcd7Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 93604007ebaSmrg ;; 93779d5fcd7Smrg 93879d5fcd7Smrg *-*) 93979d5fcd7Smrg # shellcheck disable=SC2162 94079d5fcd7Smrg saved_IFS=$IFS 94179d5fcd7Smrg IFS="-" read cpu vendor <<EOF 94279d5fcd7Smrg$basic_machine 94379d5fcd7SmrgEOF 94479d5fcd7Smrg IFS=$saved_IFS 94504007ebaSmrg ;; 94679d5fcd7Smrg # We use `pc' rather than `unknown' 94779d5fcd7Smrg # because (1) that's what they normally are, and 94879d5fcd7Smrg # (2) the word "unknown" tends to confuse beginning users. 94979d5fcd7Smrg i*86 | x86_64) 95079d5fcd7Smrg cpu=$basic_machine 95179d5fcd7Smrg vendor=pc 95204007ebaSmrg ;; 95379d5fcd7Smrg # These rules are duplicated from below for sake of the special case above; 95479d5fcd7Smrg # i.e. things that normalized to x86 arches should also default to "pc" 95579d5fcd7Smrg pc98) 95679d5fcd7Smrg cpu=i386 95779d5fcd7Smrg vendor=pc 95804007ebaSmrg ;; 95979d5fcd7Smrg x64 | amd64) 96079d5fcd7Smrg cpu=x86_64 96179d5fcd7Smrg vendor=pc 96204007ebaSmrg ;; 96379d5fcd7Smrg # Recognize the basic CPU types without company name. 96479d5fcd7Smrg *) 96579d5fcd7Smrg cpu=$basic_machine 96679d5fcd7Smrg vendor=unknown 96704007ebaSmrg ;; 96879d5fcd7Smrgesac 96979d5fcd7Smrg 97079d5fcd7Smrgunset -v basic_machine 97179d5fcd7Smrg 97279d5fcd7Smrg# Decode basic machines in the full and proper CPU-Company form. 97379d5fcd7Smrgcase $cpu-$vendor in 97479d5fcd7Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97579d5fcd7Smrg # some cases the only manufacturer, in others, it is the most popular. 97679d5fcd7Smrg craynv-unknown) 97779d5fcd7Smrg vendor=cray 97879d5fcd7Smrg basic_os=${basic_os:-unicosmp} 97904007ebaSmrg ;; 98079d5fcd7Smrg c90-unknown | c90-cray) 98179d5fcd7Smrg vendor=cray 98279d5fcd7Smrg basic_os=${Basic_os:-unicos} 98304007ebaSmrg ;; 98479d5fcd7Smrg fx80-unknown) 98579d5fcd7Smrg vendor=alliant 98604007ebaSmrg ;; 98779d5fcd7Smrg romp-unknown) 98879d5fcd7Smrg vendor=ibm 98904007ebaSmrg ;; 99079d5fcd7Smrg mmix-unknown) 99179d5fcd7Smrg vendor=knuth 99204007ebaSmrg ;; 99379d5fcd7Smrg microblaze-unknown | microblazeel-unknown) 99479d5fcd7Smrg vendor=xilinx 99504007ebaSmrg ;; 99679d5fcd7Smrg rs6000-unknown) 99779d5fcd7Smrg vendor=ibm 99804007ebaSmrg ;; 99979d5fcd7Smrg vax-unknown) 100079d5fcd7Smrg vendor=dec 100104007ebaSmrg ;; 100279d5fcd7Smrg pdp11-unknown) 100379d5fcd7Smrg vendor=dec 100404007ebaSmrg ;; 100579d5fcd7Smrg we32k-unknown) 100679d5fcd7Smrg vendor=att 100704007ebaSmrg ;; 100879d5fcd7Smrg cydra-unknown) 100979d5fcd7Smrg vendor=cydrome 101004007ebaSmrg ;; 101179d5fcd7Smrg i370-ibm*) 101279d5fcd7Smrg vendor=ibm 101304007ebaSmrg ;; 101479d5fcd7Smrg orion-unknown) 101579d5fcd7Smrg vendor=highlevel 101604007ebaSmrg ;; 101779d5fcd7Smrg xps-unknown | xps100-unknown) 101879d5fcd7Smrg cpu=xps100 101979d5fcd7Smrg vendor=honeywell 102004007ebaSmrg ;; 102179d5fcd7Smrg 102279d5fcd7Smrg # Here we normalize CPU types with a missing or matching vendor 102379d5fcd7Smrg armh-unknown | armh-alt) 102479d5fcd7Smrg cpu=armv7l 102579d5fcd7Smrg vendor=alt 102679d5fcd7Smrg basic_os=${basic_os:-linux-gnueabihf} 102704007ebaSmrg ;; 102879d5fcd7Smrg dpx20-unknown | dpx20-bull) 102979d5fcd7Smrg cpu=rs6000 103079d5fcd7Smrg vendor=bull 103179d5fcd7Smrg basic_os=${basic_os:-bosx} 103204007ebaSmrg ;; 103379d5fcd7Smrg 103479d5fcd7Smrg # Here we normalize CPU types irrespective of the vendor 103579d5fcd7Smrg amd64-*) 103679d5fcd7Smrg cpu=x86_64 103704007ebaSmrg ;; 103879d5fcd7Smrg blackfin-*) 103979d5fcd7Smrg cpu=bfin 104079d5fcd7Smrg basic_os=linux 104104007ebaSmrg ;; 104279d5fcd7Smrg c54x-*) 104379d5fcd7Smrg cpu=tic54x 104404007ebaSmrg ;; 104579d5fcd7Smrg c55x-*) 104679d5fcd7Smrg cpu=tic55x 104704007ebaSmrg ;; 104879d5fcd7Smrg c6x-*) 104979d5fcd7Smrg cpu=tic6x 105004007ebaSmrg ;; 105179d5fcd7Smrg e500v[12]-*) 105279d5fcd7Smrg cpu=powerpc 105379d5fcd7Smrg basic_os=${basic_os}"spe" 105404007ebaSmrg ;; 105579d5fcd7Smrg mips3*-*) 105679d5fcd7Smrg cpu=mips64 105704007ebaSmrg ;; 105879d5fcd7Smrg ms1-*) 105979d5fcd7Smrg cpu=mt 106004007ebaSmrg ;; 106179d5fcd7Smrg m68knommu-*) 106279d5fcd7Smrg cpu=m68k 106379d5fcd7Smrg basic_os=linux 106404007ebaSmrg ;; 106579d5fcd7Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106679d5fcd7Smrg cpu=s12z 106704007ebaSmrg ;; 106879d5fcd7Smrg openrisc-*) 106979d5fcd7Smrg cpu=or32 107004007ebaSmrg ;; 107179d5fcd7Smrg parisc-*) 107279d5fcd7Smrg cpu=hppa 107379d5fcd7Smrg basic_os=linux 107404007ebaSmrg ;; 107579d5fcd7Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107679d5fcd7Smrg cpu=i586 107704007ebaSmrg ;; 107879d5fcd7Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 107979d5fcd7Smrg cpu=i686 108004007ebaSmrg ;; 108179d5fcd7Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 108279d5fcd7Smrg cpu=i686 108304007ebaSmrg ;; 108479d5fcd7Smrg pentium4-*) 108579d5fcd7Smrg cpu=i786 108604007ebaSmrg ;; 108779d5fcd7Smrg pc98-*) 108879d5fcd7Smrg cpu=i386 108904007ebaSmrg ;; 109079d5fcd7Smrg ppc-* | ppcbe-*) 109179d5fcd7Smrg cpu=powerpc 109204007ebaSmrg ;; 109379d5fcd7Smrg ppcle-* | powerpclittle-*) 109479d5fcd7Smrg cpu=powerpcle 109504007ebaSmrg ;; 109679d5fcd7Smrg ppc64-*) 109779d5fcd7Smrg cpu=powerpc64 109804007ebaSmrg ;; 109979d5fcd7Smrg ppc64le-* | powerpc64little-*) 110079d5fcd7Smrg cpu=powerpc64le 110104007ebaSmrg ;; 110279d5fcd7Smrg sb1-*) 110379d5fcd7Smrg cpu=mipsisa64sb1 110404007ebaSmrg ;; 110579d5fcd7Smrg sb1el-*) 110679d5fcd7Smrg cpu=mipsisa64sb1el 110704007ebaSmrg ;; 110879d5fcd7Smrg sh5e[lb]-*) 110979d5fcd7Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 111004007ebaSmrg ;; 111179d5fcd7Smrg spur-*) 111279d5fcd7Smrg cpu=spur 111304007ebaSmrg ;; 111479d5fcd7Smrg strongarm-* | thumb-*) 111579d5fcd7Smrg cpu=arm 111604007ebaSmrg ;; 111779d5fcd7Smrg tx39-*) 111879d5fcd7Smrg cpu=mipstx39 111905cf1079Smrg ;; 112079d5fcd7Smrg tx39el-*) 112179d5fcd7Smrg cpu=mipstx39el 112204007ebaSmrg ;; 112379d5fcd7Smrg x64-*) 112479d5fcd7Smrg cpu=x86_64 112504007ebaSmrg ;; 112604007ebaSmrg xscale-* | xscalee[bl]-*) 112779d5fcd7Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112804007ebaSmrg ;; 112979d5fcd7Smrg arm64-* | aarch64le-*) 113079d5fcd7Smrg cpu=aarch64 113104007ebaSmrg ;; 113204007ebaSmrg 113379d5fcd7Smrg # Recognize the canonical CPU Types that limit and/or modify the 113479d5fcd7Smrg # company names they are paired with. 113579d5fcd7Smrg cr16-*) 113679d5fcd7Smrg basic_os=${basic_os:-elf} 113704007ebaSmrg ;; 113879d5fcd7Smrg crisv32-* | etraxfs*-*) 113979d5fcd7Smrg cpu=crisv32 114079d5fcd7Smrg vendor=axis 114104007ebaSmrg ;; 114279d5fcd7Smrg cris-* | etrax*-*) 114379d5fcd7Smrg cpu=cris 114479d5fcd7Smrg vendor=axis 114504007ebaSmrg ;; 114679d5fcd7Smrg crx-*) 114779d5fcd7Smrg basic_os=${basic_os:-elf} 114804007ebaSmrg ;; 114979d5fcd7Smrg neo-tandem) 115079d5fcd7Smrg cpu=neo 115179d5fcd7Smrg vendor=tandem 115204007ebaSmrg ;; 115379d5fcd7Smrg nse-tandem) 115479d5fcd7Smrg cpu=nse 115579d5fcd7Smrg vendor=tandem 115604007ebaSmrg ;; 115779d5fcd7Smrg nsr-tandem) 115879d5fcd7Smrg cpu=nsr 115979d5fcd7Smrg vendor=tandem 116004007ebaSmrg ;; 116179d5fcd7Smrg nsv-tandem) 116279d5fcd7Smrg cpu=nsv 116379d5fcd7Smrg vendor=tandem 116404007ebaSmrg ;; 116579d5fcd7Smrg nsx-tandem) 116679d5fcd7Smrg cpu=nsx 116779d5fcd7Smrg vendor=tandem 116804007ebaSmrg ;; 116979d5fcd7Smrg mipsallegrexel-sony) 117079d5fcd7Smrg cpu=mipsallegrexel 117179d5fcd7Smrg vendor=sony 117204007ebaSmrg ;; 117379d5fcd7Smrg tile*-*) 117479d5fcd7Smrg basic_os=${basic_os:-linux-gnu} 117504007ebaSmrg ;; 117679d5fcd7Smrg 117704007ebaSmrg *) 117879d5fcd7Smrg # Recognize the canonical CPU types that are allowed with any 117979d5fcd7Smrg # company name. 118079d5fcd7Smrg case $cpu in 118179d5fcd7Smrg 1750a | 580 \ 118279d5fcd7Smrg | a29k \ 118379d5fcd7Smrg | aarch64 | aarch64_be \ 118479d5fcd7Smrg | abacus \ 118579d5fcd7Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118679d5fcd7Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118779d5fcd7Smrg | alphapca5[67] | alpha64pca5[67] \ 118879d5fcd7Smrg | am33_2.0 \ 118979d5fcd7Smrg | amdgcn \ 119079d5fcd7Smrg | arc | arceb | arc32 | arc64 \ 119179d5fcd7Smrg | arm | arm[lb]e | arme[lb] | armv* \ 119279d5fcd7Smrg | avr | avr32 \ 119379d5fcd7Smrg | asmjs \ 119479d5fcd7Smrg | ba \ 119579d5fcd7Smrg | be32 | be64 \ 119679d5fcd7Smrg | bfin | bpf | bs2000 \ 119779d5fcd7Smrg | c[123]* | c30 | [cjt]90 | c4x \ 119879d5fcd7Smrg | c8051 | clipper | craynv | csky | cydra \ 119979d5fcd7Smrg | d10v | d30v | dlx | dsp16xx \ 120079d5fcd7Smrg | e2k | elxsi | epiphany \ 120179d5fcd7Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 120279d5fcd7Smrg | h8300 | h8500 \ 120379d5fcd7Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 120479d5fcd7Smrg | hexagon \ 120579d5fcd7Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120679d5fcd7Smrg | ip2k | iq2000 \ 120779d5fcd7Smrg | k1om \ 120879d5fcd7Smrg | le32 | le64 \ 120979d5fcd7Smrg | lm32 \ 121079d5fcd7Smrg | loongarch32 | loongarch64 \ 121179d5fcd7Smrg | m32c | m32r | m32rle \ 121279d5fcd7Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 121379d5fcd7Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 121479d5fcd7Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121579d5fcd7Smrg | microblaze | microblazeel \ 121679d5fcd7Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121779d5fcd7Smrg | mips16 \ 121879d5fcd7Smrg | mips64 | mips64eb | mips64el \ 121979d5fcd7Smrg | mips64octeon | mips64octeonel \ 122079d5fcd7Smrg | mips64orion | mips64orionel \ 122179d5fcd7Smrg | mips64r5900 | mips64r5900el \ 122279d5fcd7Smrg | mips64vr | mips64vrel \ 122379d5fcd7Smrg | mips64vr4100 | mips64vr4100el \ 122479d5fcd7Smrg | mips64vr4300 | mips64vr4300el \ 122579d5fcd7Smrg | mips64vr5000 | mips64vr5000el \ 122679d5fcd7Smrg | mips64vr5900 | mips64vr5900el \ 122779d5fcd7Smrg | mipsisa32 | mipsisa32el \ 122879d5fcd7Smrg | mipsisa32r2 | mipsisa32r2el \ 122979d5fcd7Smrg | mipsisa32r3 | mipsisa32r3el \ 123079d5fcd7Smrg | mipsisa32r5 | mipsisa32r5el \ 123179d5fcd7Smrg | mipsisa32r6 | mipsisa32r6el \ 123279d5fcd7Smrg | mipsisa64 | mipsisa64el \ 123379d5fcd7Smrg | mipsisa64r2 | mipsisa64r2el \ 123479d5fcd7Smrg | mipsisa64r3 | mipsisa64r3el \ 123579d5fcd7Smrg | mipsisa64r5 | mipsisa64r5el \ 123679d5fcd7Smrg | mipsisa64r6 | mipsisa64r6el \ 123779d5fcd7Smrg | mipsisa64sb1 | mipsisa64sb1el \ 123879d5fcd7Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 123979d5fcd7Smrg | mipsr5900 | mipsr5900el \ 124079d5fcd7Smrg | mipstx39 | mipstx39el \ 124179d5fcd7Smrg | mmix \ 124279d5fcd7Smrg | mn10200 | mn10300 \ 124379d5fcd7Smrg | moxie \ 124479d5fcd7Smrg | mt \ 124579d5fcd7Smrg | msp430 \ 124679d5fcd7Smrg | nds32 | nds32le | nds32be \ 124779d5fcd7Smrg | nfp \ 124879d5fcd7Smrg | nios | nios2 | nios2eb | nios2el \ 124979d5fcd7Smrg | none | np1 | ns16k | ns32k | nvptx \ 125079d5fcd7Smrg | open8 \ 125179d5fcd7Smrg | or1k* \ 125279d5fcd7Smrg | or32 \ 125379d5fcd7Smrg | orion \ 125479d5fcd7Smrg | picochip \ 125579d5fcd7Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125679d5fcd7Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125779d5fcd7Smrg | pru \ 125879d5fcd7Smrg | pyramid \ 125979d5fcd7Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 126079d5fcd7Smrg | rl78 | romp | rs6000 | rx \ 126179d5fcd7Smrg | s390 | s390x \ 126279d5fcd7Smrg | score \ 126379d5fcd7Smrg | sh | shl \ 126479d5fcd7Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126579d5fcd7Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126679d5fcd7Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126779d5fcd7Smrg | sparclite \ 126879d5fcd7Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126979d5fcd7Smrg | spu \ 127079d5fcd7Smrg | tahoe \ 127179d5fcd7Smrg | thumbv7* \ 127279d5fcd7Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 127379d5fcd7Smrg | tron \ 127479d5fcd7Smrg | ubicom32 \ 127579d5fcd7Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127679d5fcd7Smrg | vax \ 127779d5fcd7Smrg | visium \ 127879d5fcd7Smrg | w65 \ 127979d5fcd7Smrg | wasm32 | wasm64 \ 128079d5fcd7Smrg | we32k \ 128179d5fcd7Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 128279d5fcd7Smrg | xstormy16 | xtensa* \ 128379d5fcd7Smrg | ymp \ 128479d5fcd7Smrg | z8k | z80) 128579d5fcd7Smrg ;; 128679d5fcd7Smrg 128779d5fcd7Smrg *) 128879d5fcd7Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128979d5fcd7Smrg exit 1 129079d5fcd7Smrg ;; 129179d5fcd7Smrg esac 129204007ebaSmrg ;; 129304007ebaSmrgesac 129404007ebaSmrg 129504007ebaSmrg# Here we canonicalize certain aliases for manufacturers. 129679d5fcd7Smrgcase $vendor in 129779d5fcd7Smrg digital*) 129879d5fcd7Smrg vendor=dec 129904007ebaSmrg ;; 130079d5fcd7Smrg commodore*) 130179d5fcd7Smrg vendor=cbm 130204007ebaSmrg ;; 130304007ebaSmrg *) 130404007ebaSmrg ;; 130504007ebaSmrgesac 130604007ebaSmrg 130704007ebaSmrg# Decode manufacturer-specific aliases for certain operating systems. 130804007ebaSmrg 130979d5fcd7Smrgif test x$basic_os != x 131004007ebaSmrgthen 131179d5fcd7Smrg 131279d5fcd7Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 131379d5fcd7Smrg# set os. 131479d5fcd7Smrgcase $basic_os in 131579d5fcd7Smrg gnu/linux*) 131679d5fcd7Smrg kernel=linux 131779d5fcd7Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131879d5fcd7Smrg ;; 131979d5fcd7Smrg os2-emx) 132079d5fcd7Smrg kernel=os2 132179d5fcd7Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 132279d5fcd7Smrg ;; 132379d5fcd7Smrg nto-qnx*) 132479d5fcd7Smrg kernel=nto 132579d5fcd7Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132679d5fcd7Smrg ;; 132779d5fcd7Smrg *-*) 132879d5fcd7Smrg # shellcheck disable=SC2162 132979d5fcd7Smrg saved_IFS=$IFS 133079d5fcd7Smrg IFS="-" read kernel os <<EOF 133179d5fcd7Smrg$basic_os 133279d5fcd7SmrgEOF 133379d5fcd7Smrg IFS=$saved_IFS 133479d5fcd7Smrg ;; 133579d5fcd7Smrg # Default OS when just kernel was specified 133679d5fcd7Smrg nto*) 133779d5fcd7Smrg kernel=nto 133879d5fcd7Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133979d5fcd7Smrg ;; 134079d5fcd7Smrg linux*) 134179d5fcd7Smrg kernel=linux 134279d5fcd7Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 134379d5fcd7Smrg ;; 134479d5fcd7Smrg managarm*) 134579d5fcd7Smrg kernel=managarm 134679d5fcd7Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 134779d5fcd7Smrg ;; 134879d5fcd7Smrg *) 134979d5fcd7Smrg kernel= 135079d5fcd7Smrg os=$basic_os 135179d5fcd7Smrg ;; 135279d5fcd7Smrgesac 135379d5fcd7Smrg 135479d5fcd7Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 135579d5fcd7Smrg# etc.) 135604007ebaSmrgcase $os in 135705cf1079Smrg # First match some system type aliases that might get confused 135805cf1079Smrg # with valid system types. 135979d5fcd7Smrg # solaris* is a basic system type, with this one exception. 136079d5fcd7Smrg auroraux) 136179d5fcd7Smrg os=auroraux 136204007ebaSmrg ;; 136379d5fcd7Smrg bluegene*) 136479d5fcd7Smrg os=cnk 136504007ebaSmrg ;; 136679d5fcd7Smrg solaris1 | solaris1.*) 136779d5fcd7Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 136804007ebaSmrg ;; 136979d5fcd7Smrg solaris) 137079d5fcd7Smrg os=solaris2 137104007ebaSmrg ;; 137279d5fcd7Smrg unixware*) 137379d5fcd7Smrg os=sysv4.2uw 137404007ebaSmrg ;; 137505cf1079Smrg # es1800 is here to avoid being matched by es* (a different OS) 137679d5fcd7Smrg es1800*) 137779d5fcd7Smrg os=ose 137805cf1079Smrg ;; 137979d5fcd7Smrg # Some version numbers need modification 138079d5fcd7Smrg chorusos*) 138179d5fcd7Smrg os=chorusos 138204007ebaSmrg ;; 138379d5fcd7Smrg isc) 138479d5fcd7Smrg os=isc2.2 138504007ebaSmrg ;; 138679d5fcd7Smrg sco6) 138779d5fcd7Smrg os=sco5v6 138804007ebaSmrg ;; 138979d5fcd7Smrg sco5) 139079d5fcd7Smrg os=sco3.2v5 139104007ebaSmrg ;; 139279d5fcd7Smrg sco4) 139379d5fcd7Smrg os=sco3.2v4 139404007ebaSmrg ;; 139579d5fcd7Smrg sco3.2.[4-9]*) 139679d5fcd7Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 139704007ebaSmrg ;; 139879d5fcd7Smrg sco*v* | scout) 139979d5fcd7Smrg # Don't match below 140004007ebaSmrg ;; 140179d5fcd7Smrg sco*) 140279d5fcd7Smrg os=sco3.2v2 140304007ebaSmrg ;; 140479d5fcd7Smrg psos*) 140579d5fcd7Smrg os=psos 140604007ebaSmrg ;; 140779d5fcd7Smrg qnx*) 140879d5fcd7Smrg os=qnx 140904007ebaSmrg ;; 141079d5fcd7Smrg hiux*) 141179d5fcd7Smrg os=hiuxwe2 141204007ebaSmrg ;; 141379d5fcd7Smrg lynx*178) 141479d5fcd7Smrg os=lynxos178 141504007ebaSmrg ;; 141679d5fcd7Smrg lynx*5) 141779d5fcd7Smrg os=lynxos5 141804007ebaSmrg ;; 141979d5fcd7Smrg lynxos*) 142079d5fcd7Smrg # don't get caught up in next wildcard 142104007ebaSmrg ;; 142279d5fcd7Smrg lynx*) 142379d5fcd7Smrg os=lynxos 142404007ebaSmrg ;; 142579d5fcd7Smrg mac[0-9]*) 142679d5fcd7Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 142704007ebaSmrg ;; 142879d5fcd7Smrg opened*) 142979d5fcd7Smrg os=openedition 143004007ebaSmrg ;; 143179d5fcd7Smrg os400*) 143279d5fcd7Smrg os=os400 143304007ebaSmrg ;; 143479d5fcd7Smrg sunos5*) 143579d5fcd7Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 143604007ebaSmrg ;; 143779d5fcd7Smrg sunos6*) 143879d5fcd7Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 143904007ebaSmrg ;; 144079d5fcd7Smrg wince*) 144179d5fcd7Smrg os=wince 144204007ebaSmrg ;; 144379d5fcd7Smrg utek*) 144479d5fcd7Smrg os=bsd 144504007ebaSmrg ;; 144679d5fcd7Smrg dynix*) 144779d5fcd7Smrg os=bsd 144879d5fcd7Smrg ;; 144979d5fcd7Smrg acis*) 145079d5fcd7Smrg os=aos 145179d5fcd7Smrg ;; 145279d5fcd7Smrg atheos*) 145379d5fcd7Smrg os=atheos 145479d5fcd7Smrg ;; 145579d5fcd7Smrg syllable*) 145679d5fcd7Smrg os=syllable 145704007ebaSmrg ;; 145879d5fcd7Smrg 386bsd) 145979d5fcd7Smrg os=bsd 146079d5fcd7Smrg ;; 146179d5fcd7Smrg ctix* | uts*) 146279d5fcd7Smrg os=sysv 146304007ebaSmrg ;; 146479d5fcd7Smrg nova*) 146579d5fcd7Smrg os=rtmk-nova 146604007ebaSmrg ;; 146779d5fcd7Smrg ns2) 146879d5fcd7Smrg os=nextstep2 146979d5fcd7Smrg ;; 147079d5fcd7Smrg # Preserve the version number of sinix5. 147179d5fcd7Smrg sinix5.*) 147279d5fcd7Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 147304007ebaSmrg ;; 147479d5fcd7Smrg sinix*) 147579d5fcd7Smrg os=sysv4 147604007ebaSmrg ;; 147779d5fcd7Smrg tpf*) 147879d5fcd7Smrg os=tpf 147904007ebaSmrg ;; 148079d5fcd7Smrg triton*) 148179d5fcd7Smrg os=sysv3 148204007ebaSmrg ;; 148379d5fcd7Smrg oss*) 148479d5fcd7Smrg os=sysv3 148504007ebaSmrg ;; 148679d5fcd7Smrg svr4*) 148779d5fcd7Smrg os=sysv4 148804007ebaSmrg ;; 148979d5fcd7Smrg svr3) 149079d5fcd7Smrg os=sysv3 149104007ebaSmrg ;; 149279d5fcd7Smrg sysvr4) 149379d5fcd7Smrg os=sysv4 149404007ebaSmrg ;; 149579d5fcd7Smrg ose*) 149679d5fcd7Smrg os=ose 149704007ebaSmrg ;; 149879d5fcd7Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149979d5fcd7Smrg os=mint 150004007ebaSmrg ;; 150179d5fcd7Smrg dicos*) 150279d5fcd7Smrg os=dicos 150379d5fcd7Smrg ;; 150479d5fcd7Smrg pikeos*) 150505cf1079Smrg # Until real need of OS specific support for 150605cf1079Smrg # particular features comes up, bare metal 150705cf1079Smrg # configurations are quite functional. 150879d5fcd7Smrg case $cpu in 150905cf1079Smrg arm*) 151079d5fcd7Smrg os=eabi 151105cf1079Smrg ;; 151205cf1079Smrg *) 151379d5fcd7Smrg os=elf 151405cf1079Smrg ;; 151505cf1079Smrg esac 151605cf1079Smrg ;; 151704007ebaSmrg *) 151879d5fcd7Smrg # No normalization, but not necessarily accepted, that comes below. 151904007ebaSmrg ;; 152004007ebaSmrgesac 152179d5fcd7Smrg 152204007ebaSmrgelse 152304007ebaSmrg 152404007ebaSmrg# Here we handle the default operating systems that come with various machines. 152504007ebaSmrg# The value should be what the vendor currently ships out the door with their 152604007ebaSmrg# machine or put another way, the most popular os provided with the machine. 152704007ebaSmrg 152804007ebaSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 152904007ebaSmrg# "-sun"), then you have to tell the case statement up towards the top 153004007ebaSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 153104007ebaSmrg# will signal an error saying that MANUFACTURER isn't an operating 153204007ebaSmrg# system, and we'll never get to this point. 153304007ebaSmrg 153479d5fcd7Smrgkernel= 153579d5fcd7Smrgcase $cpu-$vendor in 153604007ebaSmrg score-*) 153779d5fcd7Smrg os=elf 153804007ebaSmrg ;; 153904007ebaSmrg spu-*) 154079d5fcd7Smrg os=elf 154104007ebaSmrg ;; 154204007ebaSmrg *-acorn) 154379d5fcd7Smrg os=riscix1.2 154404007ebaSmrg ;; 154504007ebaSmrg arm*-rebel) 154679d5fcd7Smrg kernel=linux 154779d5fcd7Smrg os=gnu 154804007ebaSmrg ;; 154904007ebaSmrg arm*-semi) 155079d5fcd7Smrg os=aout 155104007ebaSmrg ;; 155204007ebaSmrg c4x-* | tic4x-*) 155379d5fcd7Smrg os=coff 155404007ebaSmrg ;; 155504007ebaSmrg c8051-*) 155679d5fcd7Smrg os=elf 155779d5fcd7Smrg ;; 155879d5fcd7Smrg clipper-intergraph) 155979d5fcd7Smrg os=clix 156004007ebaSmrg ;; 156104007ebaSmrg hexagon-*) 156279d5fcd7Smrg os=elf 156304007ebaSmrg ;; 156404007ebaSmrg tic54x-*) 156579d5fcd7Smrg os=coff 156604007ebaSmrg ;; 156704007ebaSmrg tic55x-*) 156879d5fcd7Smrg os=coff 156904007ebaSmrg ;; 157004007ebaSmrg tic6x-*) 157179d5fcd7Smrg os=coff 157204007ebaSmrg ;; 157304007ebaSmrg # This must come before the *-dec entry. 157404007ebaSmrg pdp10-*) 157579d5fcd7Smrg os=tops20 157604007ebaSmrg ;; 157704007ebaSmrg pdp11-*) 157879d5fcd7Smrg os=none 157904007ebaSmrg ;; 158004007ebaSmrg *-dec | vax-*) 158179d5fcd7Smrg os=ultrix4.2 158204007ebaSmrg ;; 158304007ebaSmrg m68*-apollo) 158479d5fcd7Smrg os=domain 158504007ebaSmrg ;; 158604007ebaSmrg i386-sun) 158779d5fcd7Smrg os=sunos4.0.2 158804007ebaSmrg ;; 158904007ebaSmrg m68000-sun) 159079d5fcd7Smrg os=sunos3 159104007ebaSmrg ;; 159204007ebaSmrg m68*-cisco) 159379d5fcd7Smrg os=aout 159404007ebaSmrg ;; 159504007ebaSmrg mep-*) 159679d5fcd7Smrg os=elf 159704007ebaSmrg ;; 159804007ebaSmrg mips*-cisco) 159979d5fcd7Smrg os=elf 160004007ebaSmrg ;; 160104007ebaSmrg mips*-*) 160279d5fcd7Smrg os=elf 160304007ebaSmrg ;; 160404007ebaSmrg or32-*) 160579d5fcd7Smrg os=coff 160604007ebaSmrg ;; 160704007ebaSmrg *-tti) # must be before sparc entry or we get the wrong os. 160879d5fcd7Smrg os=sysv3 160904007ebaSmrg ;; 161004007ebaSmrg sparc-* | *-sun) 161179d5fcd7Smrg os=sunos4.1.1 161204007ebaSmrg ;; 161305cf1079Smrg pru-*) 161479d5fcd7Smrg os=elf 161505cf1079Smrg ;; 161604007ebaSmrg *-be) 161779d5fcd7Smrg os=beos 161804007ebaSmrg ;; 161904007ebaSmrg *-ibm) 162079d5fcd7Smrg os=aix 162104007ebaSmrg ;; 162204007ebaSmrg *-knuth) 162379d5fcd7Smrg os=mmixware 162404007ebaSmrg ;; 162504007ebaSmrg *-wec) 162679d5fcd7Smrg os=proelf 162704007ebaSmrg ;; 162804007ebaSmrg *-winbond) 162979d5fcd7Smrg os=proelf 163004007ebaSmrg ;; 163104007ebaSmrg *-oki) 163279d5fcd7Smrg os=proelf 163304007ebaSmrg ;; 163404007ebaSmrg *-hp) 163579d5fcd7Smrg os=hpux 163604007ebaSmrg ;; 163704007ebaSmrg *-hitachi) 163879d5fcd7Smrg os=hiux 163904007ebaSmrg ;; 164004007ebaSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 164179d5fcd7Smrg os=sysv 164204007ebaSmrg ;; 164304007ebaSmrg *-cbm) 164479d5fcd7Smrg os=amigaos 164504007ebaSmrg ;; 164604007ebaSmrg *-dg) 164779d5fcd7Smrg os=dgux 164804007ebaSmrg ;; 164904007ebaSmrg *-dolphin) 165079d5fcd7Smrg os=sysv3 165104007ebaSmrg ;; 165204007ebaSmrg m68k-ccur) 165379d5fcd7Smrg os=rtu 165404007ebaSmrg ;; 165504007ebaSmrg m88k-omron*) 165679d5fcd7Smrg os=luna 165704007ebaSmrg ;; 165805cf1079Smrg *-next) 165979d5fcd7Smrg os=nextstep 166004007ebaSmrg ;; 166104007ebaSmrg *-sequent) 166279d5fcd7Smrg os=ptx 166304007ebaSmrg ;; 166404007ebaSmrg *-crds) 166579d5fcd7Smrg os=unos 166604007ebaSmrg ;; 166704007ebaSmrg *-ns) 166879d5fcd7Smrg os=genix 166904007ebaSmrg ;; 167004007ebaSmrg i370-*) 167179d5fcd7Smrg os=mvs 167204007ebaSmrg ;; 167304007ebaSmrg *-gould) 167479d5fcd7Smrg os=sysv 167504007ebaSmrg ;; 167604007ebaSmrg *-highlevel) 167779d5fcd7Smrg os=bsd 167804007ebaSmrg ;; 167904007ebaSmrg *-encore) 168079d5fcd7Smrg os=bsd 168104007ebaSmrg ;; 168204007ebaSmrg *-sgi) 168379d5fcd7Smrg os=irix 168404007ebaSmrg ;; 168504007ebaSmrg *-siemens) 168679d5fcd7Smrg os=sysv4 168704007ebaSmrg ;; 168804007ebaSmrg *-masscomp) 168979d5fcd7Smrg os=rtu 169004007ebaSmrg ;; 169104007ebaSmrg f30[01]-fujitsu | f700-fujitsu) 169279d5fcd7Smrg os=uxpv 169304007ebaSmrg ;; 169404007ebaSmrg *-rom68k) 169579d5fcd7Smrg os=coff 169604007ebaSmrg ;; 169704007ebaSmrg *-*bug) 169879d5fcd7Smrg os=coff 169904007ebaSmrg ;; 170004007ebaSmrg *-apple) 170179d5fcd7Smrg os=macos 170204007ebaSmrg ;; 170304007ebaSmrg *-atari*) 170479d5fcd7Smrg os=mint 170579d5fcd7Smrg ;; 170679d5fcd7Smrg *-wrs) 170779d5fcd7Smrg os=vxworks 170804007ebaSmrg ;; 170904007ebaSmrg *) 171079d5fcd7Smrg os=none 171104007ebaSmrg ;; 171204007ebaSmrgesac 171379d5fcd7Smrg 171404007ebaSmrgfi 171504007ebaSmrg 171679d5fcd7Smrg# Now, validate our (potentially fixed-up) OS. 171779d5fcd7Smrgcase $os in 171879d5fcd7Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171979d5fcd7Smrg musl* | newlib* | relibc* | uclibc*) 172079d5fcd7Smrg ;; 172179d5fcd7Smrg # Likewise for "kernel-abi" 172279d5fcd7Smrg eabi* | gnueabi*) 172379d5fcd7Smrg ;; 172479d5fcd7Smrg # VxWorks passes extra cpu info in the 4th filed. 172579d5fcd7Smrg simlinux | simwindows | spe) 172679d5fcd7Smrg ;; 172779d5fcd7Smrg # Now accept the basic system types. 172879d5fcd7Smrg # The portable systems comes first. 172979d5fcd7Smrg # Each alternative MUST end in a * to match a version number. 173079d5fcd7Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 173179d5fcd7Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 173279d5fcd7Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 173379d5fcd7Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 173479d5fcd7Smrg | hiux* | abug | nacl* | netware* | windows* \ 173579d5fcd7Smrg | os9* | macos* | osx* | ios* \ 173679d5fcd7Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 173779d5fcd7Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 173879d5fcd7Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173979d5fcd7Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 174079d5fcd7Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 174179d5fcd7Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 174279d5fcd7Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 174379d5fcd7Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 174479d5fcd7Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 174579d5fcd7Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 174679d5fcd7Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 174779d5fcd7Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 174879d5fcd7Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174979d5fcd7Smrg | midipix* | mingw32* | mingw64* | mint* \ 175079d5fcd7Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 175179d5fcd7Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 175279d5fcd7Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 175379d5fcd7Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 175479d5fcd7Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 175579d5fcd7Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 175679d5fcd7Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 175779d5fcd7Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 175879d5fcd7Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175979d5fcd7Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 176079d5fcd7Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 176179d5fcd7Smrg | fiwix* | mlibc* ) 176279d5fcd7Smrg ;; 176379d5fcd7Smrg # This one is extra strict with allowed versions 176479d5fcd7Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 176579d5fcd7Smrg # Don't forget version if it is 3.2v4 or newer. 176679d5fcd7Smrg ;; 176779d5fcd7Smrg none) 176879d5fcd7Smrg ;; 176979d5fcd7Smrg kernel* ) 177079d5fcd7Smrg # Restricted further below 177179d5fcd7Smrg ;; 177279d5fcd7Smrg *) 177379d5fcd7Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 177479d5fcd7Smrg exit 1 177579d5fcd7Smrg ;; 177679d5fcd7Smrgesac 177779d5fcd7Smrg 177879d5fcd7Smrg# As a final step for OS-related things, validate the OS-kernel combination 177979d5fcd7Smrg# (given a valid OS), if there is a kernel. 178079d5fcd7Smrgcase $kernel-$os in 178179d5fcd7Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 178279d5fcd7Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 178379d5fcd7Smrg ;; 178479d5fcd7Smrg uclinux-uclibc* ) 178579d5fcd7Smrg ;; 178679d5fcd7Smrg managarm-mlibc* | managarm-kernel* ) 178779d5fcd7Smrg ;; 178879d5fcd7Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 178979d5fcd7Smrg # These are just libc implementations, not actual OSes, and thus 179079d5fcd7Smrg # require a kernel. 179179d5fcd7Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 179279d5fcd7Smrg exit 1 179379d5fcd7Smrg ;; 179479d5fcd7Smrg -kernel* ) 179579d5fcd7Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 179679d5fcd7Smrg exit 1 179779d5fcd7Smrg ;; 179879d5fcd7Smrg *-kernel* ) 179979d5fcd7Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 180079d5fcd7Smrg exit 1 180179d5fcd7Smrg ;; 180279d5fcd7Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 180379d5fcd7Smrg ;; 180479d5fcd7Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 180579d5fcd7Smrg ;; 180679d5fcd7Smrg nto-qnx*) 180779d5fcd7Smrg ;; 180879d5fcd7Smrg os2-emx) 180979d5fcd7Smrg ;; 181079d5fcd7Smrg *-eabi* | *-gnueabi*) 181179d5fcd7Smrg ;; 181279d5fcd7Smrg -*) 181379d5fcd7Smrg # Blank kernel with real OS is always fine. 181479d5fcd7Smrg ;; 181579d5fcd7Smrg *-*) 181679d5fcd7Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 181779d5fcd7Smrg exit 1 181879d5fcd7Smrg ;; 181979d5fcd7Smrgesac 182079d5fcd7Smrg 182104007ebaSmrg# Here we handle the case where we know the os, and the CPU type, but not the 182204007ebaSmrg# manufacturer. We pick the logical manufacturer. 182379d5fcd7Smrgcase $vendor in 182479d5fcd7Smrg unknown) 182579d5fcd7Smrg case $cpu-$os in 182679d5fcd7Smrg *-riscix*) 182704007ebaSmrg vendor=acorn 182804007ebaSmrg ;; 182979d5fcd7Smrg *-sunos*) 183004007ebaSmrg vendor=sun 183104007ebaSmrg ;; 183279d5fcd7Smrg *-cnk* | *-aix*) 183304007ebaSmrg vendor=ibm 183404007ebaSmrg ;; 183579d5fcd7Smrg *-beos*) 183604007ebaSmrg vendor=be 183704007ebaSmrg ;; 183879d5fcd7Smrg *-hpux*) 183904007ebaSmrg vendor=hp 184004007ebaSmrg ;; 184179d5fcd7Smrg *-mpeix*) 184204007ebaSmrg vendor=hp 184304007ebaSmrg ;; 184479d5fcd7Smrg *-hiux*) 184504007ebaSmrg vendor=hitachi 184604007ebaSmrg ;; 184779d5fcd7Smrg *-unos*) 184804007ebaSmrg vendor=crds 184904007ebaSmrg ;; 185079d5fcd7Smrg *-dgux*) 185104007ebaSmrg vendor=dg 185204007ebaSmrg ;; 185379d5fcd7Smrg *-luna*) 185404007ebaSmrg vendor=omron 185504007ebaSmrg ;; 185679d5fcd7Smrg *-genix*) 185704007ebaSmrg vendor=ns 185804007ebaSmrg ;; 185979d5fcd7Smrg *-clix*) 186079d5fcd7Smrg vendor=intergraph 186179d5fcd7Smrg ;; 186279d5fcd7Smrg *-mvs* | *-opened*) 186379d5fcd7Smrg vendor=ibm 186479d5fcd7Smrg ;; 186579d5fcd7Smrg *-os400*) 186604007ebaSmrg vendor=ibm 186704007ebaSmrg ;; 186879d5fcd7Smrg s390-* | s390x-*) 186904007ebaSmrg vendor=ibm 187004007ebaSmrg ;; 187179d5fcd7Smrg *-ptx*) 187204007ebaSmrg vendor=sequent 187304007ebaSmrg ;; 187479d5fcd7Smrg *-tpf*) 187504007ebaSmrg vendor=ibm 187604007ebaSmrg ;; 187779d5fcd7Smrg *-vxsim* | *-vxworks* | *-windiss*) 187804007ebaSmrg vendor=wrs 187904007ebaSmrg ;; 188079d5fcd7Smrg *-aux*) 188104007ebaSmrg vendor=apple 188204007ebaSmrg ;; 188379d5fcd7Smrg *-hms*) 188404007ebaSmrg vendor=hitachi 188504007ebaSmrg ;; 188679d5fcd7Smrg *-mpw* | *-macos*) 188704007ebaSmrg vendor=apple 188804007ebaSmrg ;; 188979d5fcd7Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 189004007ebaSmrg vendor=atari 189104007ebaSmrg ;; 189279d5fcd7Smrg *-vos*) 189304007ebaSmrg vendor=stratus 189404007ebaSmrg ;; 189504007ebaSmrg esac 189604007ebaSmrg ;; 189704007ebaSmrgesac 189804007ebaSmrg 189979d5fcd7Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 190004007ebaSmrgexit 190104007ebaSmrg 190204007ebaSmrg# Local variables: 190379d5fcd7Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 190404007ebaSmrg# time-stamp-start: "timestamp='" 190504007ebaSmrg# time-stamp-format: "%:y-%02m-%02d" 190604007ebaSmrg# time-stamp-end: "'" 190704007ebaSmrg# End: 1908