1f7ec340bSmacallan#! /bin/sh 2f7ec340bSmacallan# Configuration validation subroutine script. 366ab3337Smrg# Copyright 1992-2021 Free Software Foundation, Inc. 4f7ec340bSmacallan 566ab3337Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6f7ec340bSmacallan 766ab3337Smrgtimestamp='2021-08-14' 866ab3337Smrg 966ab3337Smrg# This file is free software; you can redistribute it and/or modify it 1066ab3337Smrg# under the terms of the GNU General Public License as published by 1166ab3337Smrg# the Free Software Foundation; either version 3 of the License, or 12f7ec340bSmacallan# (at your option) any later version. 13f7ec340bSmacallan# 1466ab3337Smrg# This program is distributed in the hope that it will be useful, but 1566ab3337Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1666ab3337Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1766ab3337Smrg# General Public License for more details. 18f7ec340bSmacallan# 19f7ec340bSmacallan# You should have received a copy of the GNU General Public License 2066ab3337Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 217ce7e03cSmrg# 22f7ec340bSmacallan# As a special exception to the GNU General Public License, if you 23f7ec340bSmacallan# distribute this file as part of a program that contains a 24f7ec340bSmacallan# configuration script generated by Autoconf, you may include it under 2566ab3337Smrg# the same distribution terms that you use for the rest of that 2666ab3337Smrg# program. This Exception is an additional permission under section 7 2766ab3337Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28f7ec340bSmacallan 297ce7e03cSmrg 3066ab3337Smrg# Please send patches to <config-patches@gnu.org>. 31f7ec340bSmacallan# 32f7ec340bSmacallan# Configuration subroutine to validate and canonicalize a configuration type. 33f7ec340bSmacallan# Supply the specified configuration type as an argument. 34f7ec340bSmacallan# If it is invalid, we print an error message on stderr and exit with code 1. 35f7ec340bSmacallan# Otherwise, we print the canonical config type on stdout and succeed. 36f7ec340bSmacallan 372a75d1c4Smrg# You can get the latest version of this script from: 3866ab3337Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 392a75d1c4Smrg 40f7ec340bSmacallan# This file is supposed to be the same for all GNU packages 41f7ec340bSmacallan# and recognize all the CPU types, system types and aliases 42f7ec340bSmacallan# that are meaningful with *any* GNU software. 43f7ec340bSmacallan# Each package is responsible for reporting which valid configurations 44f7ec340bSmacallan# it does not support. The user should be able to distinguish 45f7ec340bSmacallan# a failure to support a valid configuration from a meaningless 46f7ec340bSmacallan# configuration. 47f7ec340bSmacallan 48f7ec340bSmacallan# The goal of this file is to map all the various variations of a given 49f7ec340bSmacallan# machine specification into a single specification in the form: 50f7ec340bSmacallan# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51f7ec340bSmacallan# or in some cases, the newer four-part form: 52f7ec340bSmacallan# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53f7ec340bSmacallan# It is wrong to echo any other type of specification. 54f7ec340bSmacallan 5566ab3337Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 5666ab3337Smrg# about features and limitations of the classic Bourne shell that were 5766ab3337Smrg# superseded or lifted in POSIX. However, this script identifies a wide 5866ab3337Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5966ab3337Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6066ab3337Smrg# have a pre-POSIX /bin/sh. 6166ab3337Smrg 62f7ec340bSmacallanme=`echo "$0" | sed -e 's,.*/,,'` 63f7ec340bSmacallan 64f7ec340bSmacallanusage="\ 6566ab3337SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66f7ec340bSmacallan 67f7ec340bSmacallanCanonicalize a configuration name. 68f7ec340bSmacallan 6966ab3337SmrgOptions: 70f7ec340bSmacallan -h, --help print this help, then exit 71f7ec340bSmacallan -t, --time-stamp print date of last modification, then exit 72f7ec340bSmacallan -v, --version print version number, then exit 73f7ec340bSmacallan 74f7ec340bSmacallanReport bugs and patches to <config-patches@gnu.org>." 75f7ec340bSmacallan 76f7ec340bSmacallanversion="\ 77f7ec340bSmacallanGNU config.sub ($timestamp) 78f7ec340bSmacallan 7966ab3337SmrgCopyright 1992-2021 Free Software Foundation, Inc. 80f7ec340bSmacallan 81f7ec340bSmacallanThis is free software; see the source for copying conditions. There is NO 82f7ec340bSmacallanwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83f7ec340bSmacallan 84f7ec340bSmacallanhelp=" 85f7ec340bSmacallanTry \`$me --help' for more information." 86f7ec340bSmacallan 87f7ec340bSmacallan# Parse command line 88f7ec340bSmacallanwhile test $# -gt 0 ; do 89f7ec340bSmacallan case $1 in 90f7ec340bSmacallan --time-stamp | --time* | -t ) 917ce7e03cSmrg echo "$timestamp" ; exit ;; 92f7ec340bSmacallan --version | -v ) 937ce7e03cSmrg echo "$version" ; exit ;; 94f7ec340bSmacallan --help | --h* | -h ) 957ce7e03cSmrg echo "$usage"; exit ;; 96f7ec340bSmacallan -- ) # Stop option processing 97f7ec340bSmacallan shift; break ;; 98f7ec340bSmacallan - ) # Use stdin as input. 99f7ec340bSmacallan break ;; 100f7ec340bSmacallan -* ) 10166ab3337Smrg echo "$me: invalid option $1$help" >&2 102f7ec340bSmacallan exit 1 ;; 103f7ec340bSmacallan 104f7ec340bSmacallan *local*) 105f7ec340bSmacallan # First pass through any local machine types. 10666ab3337Smrg echo "$1" 1077ce7e03cSmrg exit ;; 108f7ec340bSmacallan 109f7ec340bSmacallan * ) 110f7ec340bSmacallan break ;; 111f7ec340bSmacallan esac 112f7ec340bSmacallandone 113f7ec340bSmacallan 114f7ec340bSmacallancase $# in 115f7ec340bSmacallan 0) echo "$me: missing argument$help" >&2 116f7ec340bSmacallan exit 1;; 117f7ec340bSmacallan 1) ;; 118f7ec340bSmacallan *) echo "$me: too many arguments$help" >&2 119f7ec340bSmacallan exit 1;; 120f7ec340bSmacallanesac 121f7ec340bSmacallan 12266ab3337Smrg# Split fields of configuration type 12366ab3337Smrg# shellcheck disable=SC2162 12466ab3337Smrgsaved_IFS=$IFS 12566ab3337SmrgIFS="-" read field1 field2 field3 field4 <<EOF 12666ab3337Smrg$1 12766ab3337SmrgEOF 12866ab3337SmrgIFS=$saved_IFS 129f7ec340bSmacallan 13066ab3337Smrg# Separate into logical components for further validation 13166ab3337Smrgcase $1 in 13266ab3337Smrg *-*-*-*-*) 13366ab3337Smrg echo Invalid configuration \`"$1"\': more than four components >&2 13466ab3337Smrg exit 1 135f7ec340bSmacallan ;; 13666ab3337Smrg *-*-*-*) 13766ab3337Smrg basic_machine=$field1-$field2 13866ab3337Smrg basic_os=$field3-$field4 139f7ec340bSmacallan ;; 14066ab3337Smrg *-*-*) 14166ab3337Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14266ab3337Smrg # parts 14366ab3337Smrg maybe_os=$field2-$field3 14466ab3337Smrg case $maybe_os in 14566ab3337Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 14666ab3337Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14766ab3337Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14866ab3337Smrg | storm-chaos* | os2-emx* | rtmk-nova*) 14966ab3337Smrg basic_machine=$field1 15066ab3337Smrg basic_os=$maybe_os 15166ab3337Smrg ;; 15266ab3337Smrg android-linux) 15366ab3337Smrg basic_machine=$field1-unknown 15466ab3337Smrg basic_os=linux-android 15566ab3337Smrg ;; 15666ab3337Smrg *) 15766ab3337Smrg basic_machine=$field1-$field2 15866ab3337Smrg basic_os=$field3 15966ab3337Smrg ;; 16066ab3337Smrg esac 161f7ec340bSmacallan ;; 16266ab3337Smrg *-*) 16366ab3337Smrg # A lone config we happen to match not fitting any pattern 16466ab3337Smrg case $field1-$field2 in 16566ab3337Smrg decstation-3100) 16666ab3337Smrg basic_machine=mips-dec 16766ab3337Smrg basic_os= 16866ab3337Smrg ;; 16966ab3337Smrg *-*) 17066ab3337Smrg # Second component is usually, but not always the OS 17166ab3337Smrg case $field2 in 17266ab3337Smrg # Prevent following clause from handling this valid os 17366ab3337Smrg sun*os*) 17466ab3337Smrg basic_machine=$field1 17566ab3337Smrg basic_os=$field2 17666ab3337Smrg ;; 17766ab3337Smrg zephyr*) 17866ab3337Smrg basic_machine=$field1-unknown 17966ab3337Smrg basic_os=$field2 18066ab3337Smrg ;; 18166ab3337Smrg # Manufacturers 18266ab3337Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18366ab3337Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18466ab3337Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18566ab3337Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18666ab3337Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18766ab3337Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18866ab3337Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18966ab3337Smrg | microblaze* | sim | cisco \ 19066ab3337Smrg | oki | wec | wrs | winbond) 19166ab3337Smrg basic_machine=$field1-$field2 19266ab3337Smrg basic_os= 19366ab3337Smrg ;; 19466ab3337Smrg *) 19566ab3337Smrg basic_machine=$field1 19666ab3337Smrg basic_os=$field2 19766ab3337Smrg ;; 19866ab3337Smrg esac 19966ab3337Smrg ;; 20066ab3337Smrg esac 201f7ec340bSmacallan ;; 20266ab3337Smrg *) 20366ab3337Smrg # Convert single-component short-hands not valid as part of 20466ab3337Smrg # multi-component configurations. 20566ab3337Smrg case $field1 in 20666ab3337Smrg 386bsd) 20766ab3337Smrg basic_machine=i386-pc 20866ab3337Smrg basic_os=bsd 20966ab3337Smrg ;; 21066ab3337Smrg a29khif) 21166ab3337Smrg basic_machine=a29k-amd 21266ab3337Smrg basic_os=udi 21366ab3337Smrg ;; 21466ab3337Smrg adobe68k) 21566ab3337Smrg basic_machine=m68010-adobe 21666ab3337Smrg basic_os=scout 21766ab3337Smrg ;; 21866ab3337Smrg alliant) 21966ab3337Smrg basic_machine=fx80-alliant 22066ab3337Smrg basic_os= 22166ab3337Smrg ;; 22266ab3337Smrg altos | altos3068) 22366ab3337Smrg basic_machine=m68k-altos 22466ab3337Smrg basic_os= 22566ab3337Smrg ;; 22666ab3337Smrg am29k) 22766ab3337Smrg basic_machine=a29k-none 22866ab3337Smrg basic_os=bsd 22966ab3337Smrg ;; 23066ab3337Smrg amdahl) 23166ab3337Smrg basic_machine=580-amdahl 23266ab3337Smrg basic_os=sysv 23366ab3337Smrg ;; 23466ab3337Smrg amiga) 23566ab3337Smrg basic_machine=m68k-unknown 23666ab3337Smrg basic_os= 23766ab3337Smrg ;; 23866ab3337Smrg amigaos | amigados) 23966ab3337Smrg basic_machine=m68k-unknown 24066ab3337Smrg basic_os=amigaos 24166ab3337Smrg ;; 24266ab3337Smrg amigaunix | amix) 24366ab3337Smrg basic_machine=m68k-unknown 24466ab3337Smrg basic_os=sysv4 24566ab3337Smrg ;; 24666ab3337Smrg apollo68) 24766ab3337Smrg basic_machine=m68k-apollo 24866ab3337Smrg basic_os=sysv 24966ab3337Smrg ;; 25066ab3337Smrg apollo68bsd) 25166ab3337Smrg basic_machine=m68k-apollo 25266ab3337Smrg basic_os=bsd 25366ab3337Smrg ;; 25466ab3337Smrg aros) 25566ab3337Smrg basic_machine=i386-pc 25666ab3337Smrg basic_os=aros 25766ab3337Smrg ;; 25866ab3337Smrg aux) 25966ab3337Smrg basic_machine=m68k-apple 26066ab3337Smrg basic_os=aux 26166ab3337Smrg ;; 26266ab3337Smrg balance) 26366ab3337Smrg basic_machine=ns32k-sequent 26466ab3337Smrg basic_os=dynix 26566ab3337Smrg ;; 26666ab3337Smrg blackfin) 26766ab3337Smrg basic_machine=bfin-unknown 26866ab3337Smrg basic_os=linux 26966ab3337Smrg ;; 27066ab3337Smrg cegcc) 27166ab3337Smrg basic_machine=arm-unknown 27266ab3337Smrg basic_os=cegcc 27366ab3337Smrg ;; 27466ab3337Smrg convex-c1) 27566ab3337Smrg basic_machine=c1-convex 27666ab3337Smrg basic_os=bsd 27766ab3337Smrg ;; 27866ab3337Smrg convex-c2) 27966ab3337Smrg basic_machine=c2-convex 28066ab3337Smrg basic_os=bsd 28166ab3337Smrg ;; 28266ab3337Smrg convex-c32) 28366ab3337Smrg basic_machine=c32-convex 28466ab3337Smrg basic_os=bsd 28566ab3337Smrg ;; 28666ab3337Smrg convex-c34) 28766ab3337Smrg basic_machine=c34-convex 28866ab3337Smrg basic_os=bsd 28966ab3337Smrg ;; 29066ab3337Smrg convex-c38) 29166ab3337Smrg basic_machine=c38-convex 29266ab3337Smrg basic_os=bsd 29366ab3337Smrg ;; 29466ab3337Smrg cray) 29566ab3337Smrg basic_machine=j90-cray 29666ab3337Smrg basic_os=unicos 29766ab3337Smrg ;; 29866ab3337Smrg crds | unos) 29966ab3337Smrg basic_machine=m68k-crds 30066ab3337Smrg basic_os= 30166ab3337Smrg ;; 30266ab3337Smrg da30) 30366ab3337Smrg basic_machine=m68k-da30 30466ab3337Smrg basic_os= 30566ab3337Smrg ;; 30666ab3337Smrg decstation | pmax | pmin | dec3100 | decstatn) 30766ab3337Smrg basic_machine=mips-dec 30866ab3337Smrg basic_os= 30966ab3337Smrg ;; 31066ab3337Smrg delta88) 31166ab3337Smrg basic_machine=m88k-motorola 31266ab3337Smrg basic_os=sysv3 31366ab3337Smrg ;; 31466ab3337Smrg dicos) 31566ab3337Smrg basic_machine=i686-pc 31666ab3337Smrg basic_os=dicos 31766ab3337Smrg ;; 31866ab3337Smrg djgpp) 31966ab3337Smrg basic_machine=i586-pc 32066ab3337Smrg basic_os=msdosdjgpp 32166ab3337Smrg ;; 32266ab3337Smrg ebmon29k) 32366ab3337Smrg basic_machine=a29k-amd 32466ab3337Smrg basic_os=ebmon 32566ab3337Smrg ;; 32666ab3337Smrg es1800 | OSE68k | ose68k | ose | OSE) 32766ab3337Smrg basic_machine=m68k-ericsson 32866ab3337Smrg basic_os=ose 32966ab3337Smrg ;; 33066ab3337Smrg gmicro) 33166ab3337Smrg basic_machine=tron-gmicro 33266ab3337Smrg basic_os=sysv 33366ab3337Smrg ;; 33466ab3337Smrg go32) 33566ab3337Smrg basic_machine=i386-pc 33666ab3337Smrg basic_os=go32 33766ab3337Smrg ;; 33866ab3337Smrg h8300hms) 33966ab3337Smrg basic_machine=h8300-hitachi 34066ab3337Smrg basic_os=hms 34166ab3337Smrg ;; 34266ab3337Smrg h8300xray) 34366ab3337Smrg basic_machine=h8300-hitachi 34466ab3337Smrg basic_os=xray 34566ab3337Smrg ;; 34666ab3337Smrg h8500hms) 34766ab3337Smrg basic_machine=h8500-hitachi 34866ab3337Smrg basic_os=hms 34966ab3337Smrg ;; 35066ab3337Smrg harris) 35166ab3337Smrg basic_machine=m88k-harris 35266ab3337Smrg basic_os=sysv3 35366ab3337Smrg ;; 35466ab3337Smrg hp300 | hp300hpux) 35566ab3337Smrg basic_machine=m68k-hp 35666ab3337Smrg basic_os=hpux 35766ab3337Smrg ;; 35866ab3337Smrg hp300bsd) 35966ab3337Smrg basic_machine=m68k-hp 36066ab3337Smrg basic_os=bsd 36166ab3337Smrg ;; 36266ab3337Smrg hppaosf) 36366ab3337Smrg basic_machine=hppa1.1-hp 36466ab3337Smrg basic_os=osf 36566ab3337Smrg ;; 36666ab3337Smrg hppro) 36766ab3337Smrg basic_machine=hppa1.1-hp 36866ab3337Smrg basic_os=proelf 36966ab3337Smrg ;; 37066ab3337Smrg i386mach) 37166ab3337Smrg basic_machine=i386-mach 37266ab3337Smrg basic_os=mach 37366ab3337Smrg ;; 37466ab3337Smrg isi68 | isi) 37566ab3337Smrg basic_machine=m68k-isi 37666ab3337Smrg basic_os=sysv 37766ab3337Smrg ;; 37866ab3337Smrg m68knommu) 37966ab3337Smrg basic_machine=m68k-unknown 38066ab3337Smrg basic_os=linux 38166ab3337Smrg ;; 38266ab3337Smrg magnum | m3230) 38366ab3337Smrg basic_machine=mips-mips 38466ab3337Smrg basic_os=sysv 38566ab3337Smrg ;; 38666ab3337Smrg merlin) 38766ab3337Smrg basic_machine=ns32k-utek 38866ab3337Smrg basic_os=sysv 38966ab3337Smrg ;; 39066ab3337Smrg mingw64) 39166ab3337Smrg basic_machine=x86_64-pc 39266ab3337Smrg basic_os=mingw64 39366ab3337Smrg ;; 39466ab3337Smrg mingw32) 39566ab3337Smrg basic_machine=i686-pc 39666ab3337Smrg basic_os=mingw32 39766ab3337Smrg ;; 39866ab3337Smrg mingw32ce) 39966ab3337Smrg basic_machine=arm-unknown 40066ab3337Smrg basic_os=mingw32ce 40166ab3337Smrg ;; 40266ab3337Smrg monitor) 40366ab3337Smrg basic_machine=m68k-rom68k 40466ab3337Smrg basic_os=coff 40566ab3337Smrg ;; 40666ab3337Smrg morphos) 40766ab3337Smrg basic_machine=powerpc-unknown 40866ab3337Smrg basic_os=morphos 40966ab3337Smrg ;; 41066ab3337Smrg moxiebox) 41166ab3337Smrg basic_machine=moxie-unknown 41266ab3337Smrg basic_os=moxiebox 41366ab3337Smrg ;; 41466ab3337Smrg msdos) 41566ab3337Smrg basic_machine=i386-pc 41666ab3337Smrg basic_os=msdos 41766ab3337Smrg ;; 41866ab3337Smrg msys) 41966ab3337Smrg basic_machine=i686-pc 42066ab3337Smrg basic_os=msys 42166ab3337Smrg ;; 42266ab3337Smrg mvs) 42366ab3337Smrg basic_machine=i370-ibm 42466ab3337Smrg basic_os=mvs 42566ab3337Smrg ;; 42666ab3337Smrg nacl) 42766ab3337Smrg basic_machine=le32-unknown 42866ab3337Smrg basic_os=nacl 42966ab3337Smrg ;; 43066ab3337Smrg ncr3000) 43166ab3337Smrg basic_machine=i486-ncr 43266ab3337Smrg basic_os=sysv4 43366ab3337Smrg ;; 43466ab3337Smrg netbsd386) 43566ab3337Smrg basic_machine=i386-pc 43666ab3337Smrg basic_os=netbsd 43766ab3337Smrg ;; 43866ab3337Smrg netwinder) 43966ab3337Smrg basic_machine=armv4l-rebel 44066ab3337Smrg basic_os=linux 44166ab3337Smrg ;; 44266ab3337Smrg news | news700 | news800 | news900) 44366ab3337Smrg basic_machine=m68k-sony 44466ab3337Smrg basic_os=newsos 44566ab3337Smrg ;; 44666ab3337Smrg news1000) 44766ab3337Smrg basic_machine=m68030-sony 44866ab3337Smrg basic_os=newsos 44966ab3337Smrg ;; 45066ab3337Smrg necv70) 45166ab3337Smrg basic_machine=v70-nec 45266ab3337Smrg basic_os=sysv 45366ab3337Smrg ;; 45466ab3337Smrg nh3000) 45566ab3337Smrg basic_machine=m68k-harris 45666ab3337Smrg basic_os=cxux 45766ab3337Smrg ;; 45866ab3337Smrg nh[45]000) 45966ab3337Smrg basic_machine=m88k-harris 46066ab3337Smrg basic_os=cxux 46166ab3337Smrg ;; 46266ab3337Smrg nindy960) 46366ab3337Smrg basic_machine=i960-intel 46466ab3337Smrg basic_os=nindy 46566ab3337Smrg ;; 46666ab3337Smrg mon960) 46766ab3337Smrg basic_machine=i960-intel 46866ab3337Smrg basic_os=mon960 46966ab3337Smrg ;; 47066ab3337Smrg nonstopux) 47166ab3337Smrg basic_machine=mips-compaq 47266ab3337Smrg basic_os=nonstopux 47366ab3337Smrg ;; 47466ab3337Smrg os400) 47566ab3337Smrg basic_machine=powerpc-ibm 47666ab3337Smrg basic_os=os400 47766ab3337Smrg ;; 47866ab3337Smrg OSE68000 | ose68000) 47966ab3337Smrg basic_machine=m68000-ericsson 48066ab3337Smrg basic_os=ose 48166ab3337Smrg ;; 48266ab3337Smrg os68k) 48366ab3337Smrg basic_machine=m68k-none 48466ab3337Smrg basic_os=os68k 48566ab3337Smrg ;; 48666ab3337Smrg paragon) 48766ab3337Smrg basic_machine=i860-intel 48866ab3337Smrg basic_os=osf 48966ab3337Smrg ;; 49066ab3337Smrg parisc) 49166ab3337Smrg basic_machine=hppa-unknown 49266ab3337Smrg basic_os=linux 49366ab3337Smrg ;; 49466ab3337Smrg psp) 49566ab3337Smrg basic_machine=mipsallegrexel-sony 49666ab3337Smrg basic_os=psp 49766ab3337Smrg ;; 49866ab3337Smrg pw32) 49966ab3337Smrg basic_machine=i586-unknown 50066ab3337Smrg basic_os=pw32 50166ab3337Smrg ;; 50266ab3337Smrg rdos | rdos64) 50366ab3337Smrg basic_machine=x86_64-pc 50466ab3337Smrg basic_os=rdos 50566ab3337Smrg ;; 50666ab3337Smrg rdos32) 50766ab3337Smrg basic_machine=i386-pc 50866ab3337Smrg basic_os=rdos 50966ab3337Smrg ;; 51066ab3337Smrg rom68k) 51166ab3337Smrg basic_machine=m68k-rom68k 51266ab3337Smrg basic_os=coff 51366ab3337Smrg ;; 51466ab3337Smrg sa29200) 51566ab3337Smrg basic_machine=a29k-amd 51666ab3337Smrg basic_os=udi 51766ab3337Smrg ;; 51866ab3337Smrg sei) 51966ab3337Smrg basic_machine=mips-sei 52066ab3337Smrg basic_os=seiux 52166ab3337Smrg ;; 52266ab3337Smrg sequent) 52366ab3337Smrg basic_machine=i386-sequent 52466ab3337Smrg basic_os= 52566ab3337Smrg ;; 52666ab3337Smrg sps7) 52766ab3337Smrg basic_machine=m68k-bull 52866ab3337Smrg basic_os=sysv2 52966ab3337Smrg ;; 53066ab3337Smrg st2000) 53166ab3337Smrg basic_machine=m68k-tandem 53266ab3337Smrg basic_os= 53366ab3337Smrg ;; 53466ab3337Smrg stratus) 53566ab3337Smrg basic_machine=i860-stratus 53666ab3337Smrg basic_os=sysv4 53766ab3337Smrg ;; 53866ab3337Smrg sun2) 53966ab3337Smrg basic_machine=m68000-sun 54066ab3337Smrg basic_os= 54166ab3337Smrg ;; 54266ab3337Smrg sun2os3) 54366ab3337Smrg basic_machine=m68000-sun 54466ab3337Smrg basic_os=sunos3 54566ab3337Smrg ;; 54666ab3337Smrg sun2os4) 54766ab3337Smrg basic_machine=m68000-sun 54866ab3337Smrg basic_os=sunos4 54966ab3337Smrg ;; 55066ab3337Smrg sun3) 55166ab3337Smrg basic_machine=m68k-sun 55266ab3337Smrg basic_os= 55366ab3337Smrg ;; 55466ab3337Smrg sun3os3) 55566ab3337Smrg basic_machine=m68k-sun 55666ab3337Smrg basic_os=sunos3 55766ab3337Smrg ;; 55866ab3337Smrg sun3os4) 55966ab3337Smrg basic_machine=m68k-sun 56066ab3337Smrg basic_os=sunos4 56166ab3337Smrg ;; 56266ab3337Smrg sun4) 56366ab3337Smrg basic_machine=sparc-sun 56466ab3337Smrg basic_os= 56566ab3337Smrg ;; 56666ab3337Smrg sun4os3) 56766ab3337Smrg basic_machine=sparc-sun 56866ab3337Smrg basic_os=sunos3 56966ab3337Smrg ;; 57066ab3337Smrg sun4os4) 57166ab3337Smrg basic_machine=sparc-sun 57266ab3337Smrg basic_os=sunos4 57366ab3337Smrg ;; 57466ab3337Smrg sun4sol2) 57566ab3337Smrg basic_machine=sparc-sun 57666ab3337Smrg basic_os=solaris2 57766ab3337Smrg ;; 57866ab3337Smrg sun386 | sun386i | roadrunner) 57966ab3337Smrg basic_machine=i386-sun 58066ab3337Smrg basic_os= 58166ab3337Smrg ;; 58266ab3337Smrg sv1) 58366ab3337Smrg basic_machine=sv1-cray 58466ab3337Smrg basic_os=unicos 58566ab3337Smrg ;; 58666ab3337Smrg symmetry) 58766ab3337Smrg basic_machine=i386-sequent 58866ab3337Smrg basic_os=dynix 58966ab3337Smrg ;; 59066ab3337Smrg t3e) 59166ab3337Smrg basic_machine=alphaev5-cray 59266ab3337Smrg basic_os=unicos 59366ab3337Smrg ;; 59466ab3337Smrg t90) 59566ab3337Smrg basic_machine=t90-cray 59666ab3337Smrg basic_os=unicos 59766ab3337Smrg ;; 59866ab3337Smrg toad1) 59966ab3337Smrg basic_machine=pdp10-xkl 60066ab3337Smrg basic_os=tops20 60166ab3337Smrg ;; 60266ab3337Smrg tpf) 60366ab3337Smrg basic_machine=s390x-ibm 60466ab3337Smrg basic_os=tpf 60566ab3337Smrg ;; 60666ab3337Smrg udi29k) 60766ab3337Smrg basic_machine=a29k-amd 60866ab3337Smrg basic_os=udi 60966ab3337Smrg ;; 61066ab3337Smrg ultra3) 61166ab3337Smrg basic_machine=a29k-nyu 61266ab3337Smrg basic_os=sym1 61366ab3337Smrg ;; 61466ab3337Smrg v810 | necv810) 61566ab3337Smrg basic_machine=v810-nec 61666ab3337Smrg basic_os=none 61766ab3337Smrg ;; 61866ab3337Smrg vaxv) 61966ab3337Smrg basic_machine=vax-dec 62066ab3337Smrg basic_os=sysv 62166ab3337Smrg ;; 62266ab3337Smrg vms) 62366ab3337Smrg basic_machine=vax-dec 62466ab3337Smrg basic_os=vms 62566ab3337Smrg ;; 62666ab3337Smrg vsta) 62766ab3337Smrg basic_machine=i386-pc 62866ab3337Smrg basic_os=vsta 62966ab3337Smrg ;; 63066ab3337Smrg vxworks960) 63166ab3337Smrg basic_machine=i960-wrs 63266ab3337Smrg basic_os=vxworks 63366ab3337Smrg ;; 63466ab3337Smrg vxworks68) 63566ab3337Smrg basic_machine=m68k-wrs 63666ab3337Smrg basic_os=vxworks 63766ab3337Smrg ;; 63866ab3337Smrg vxworks29k) 63966ab3337Smrg basic_machine=a29k-wrs 64066ab3337Smrg basic_os=vxworks 64166ab3337Smrg ;; 64266ab3337Smrg xbox) 64366ab3337Smrg basic_machine=i686-pc 64466ab3337Smrg basic_os=mingw32 64566ab3337Smrg ;; 64666ab3337Smrg ymp) 64766ab3337Smrg basic_machine=ymp-cray 64866ab3337Smrg basic_os=unicos 64966ab3337Smrg ;; 65066ab3337Smrg *) 65166ab3337Smrg basic_machine=$1 65266ab3337Smrg basic_os= 65366ab3337Smrg ;; 65466ab3337Smrg esac 655f7ec340bSmacallan ;; 656f7ec340bSmacallanesac 657f7ec340bSmacallan 65866ab3337Smrg# Decode 1-component or ad-hoc basic machines 659f7ec340bSmacallancase $basic_machine in 66066ab3337Smrg # Here we handle the default manufacturer of certain CPU types. It is in 66166ab3337Smrg # some cases the only manufacturer, in others, it is the most popular. 66266ab3337Smrg w89k) 66366ab3337Smrg cpu=hppa1.1 66466ab3337Smrg vendor=winbond 6657ce7e03cSmrg ;; 66666ab3337Smrg op50n) 66766ab3337Smrg cpu=hppa1.1 66866ab3337Smrg vendor=oki 6692a75d1c4Smrg ;; 67066ab3337Smrg op60c) 67166ab3337Smrg cpu=hppa1.1 67266ab3337Smrg vendor=oki 6732a75d1c4Smrg ;; 67466ab3337Smrg ibm*) 67566ab3337Smrg cpu=i370 67666ab3337Smrg vendor=ibm 6772a75d1c4Smrg ;; 67866ab3337Smrg orion105) 67966ab3337Smrg cpu=clipper 68066ab3337Smrg vendor=highlevel 6812a75d1c4Smrg ;; 68266ab3337Smrg mac | mpw | mac-mpw) 68366ab3337Smrg cpu=m68k 68466ab3337Smrg vendor=apple 685f7ec340bSmacallan ;; 68666ab3337Smrg pmac | pmac-mpw) 68766ab3337Smrg cpu=powerpc 68866ab3337Smrg vendor=apple 6897ce7e03cSmrg ;; 69066ab3337Smrg 691f7ec340bSmacallan # Recognize the various machine names and aliases which stand 692f7ec340bSmacallan # for a CPU type and a company and sometimes even an OS. 693f7ec340bSmacallan 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69466ab3337Smrg cpu=m68000 69566ab3337Smrg vendor=att 696f7ec340bSmacallan ;; 697f7ec340bSmacallan 3b*) 69866ab3337Smrg cpu=we32k 69966ab3337Smrg vendor=att 7007ce7e03cSmrg ;; 7012a75d1c4Smrg bluegene*) 70266ab3337Smrg cpu=powerpc 70366ab3337Smrg vendor=ibm 70466ab3337Smrg basic_os=cnk 705f7ec340bSmacallan ;; 706f7ec340bSmacallan decsystem10* | dec10*) 70766ab3337Smrg cpu=pdp10 70866ab3337Smrg vendor=dec 70966ab3337Smrg basic_os=tops10 710f7ec340bSmacallan ;; 711f7ec340bSmacallan decsystem20* | dec20*) 71266ab3337Smrg cpu=pdp10 71366ab3337Smrg vendor=dec 71466ab3337Smrg basic_os=tops20 715f7ec340bSmacallan ;; 716f7ec340bSmacallan delta | 3300 | motorola-3300 | motorola-delta \ 717f7ec340bSmacallan | 3300-motorola | delta-motorola) 71866ab3337Smrg cpu=m68k 71966ab3337Smrg vendor=motorola 7207ce7e03cSmrg ;; 72166ab3337Smrg dpx2*) 72266ab3337Smrg cpu=m68k 72366ab3337Smrg vendor=bull 72466ab3337Smrg basic_os=sysv3 725f7ec340bSmacallan ;; 726f7ec340bSmacallan encore | umax | mmax) 72766ab3337Smrg cpu=ns32k 72866ab3337Smrg vendor=encore 729f7ec340bSmacallan ;; 73066ab3337Smrg elxsi) 73166ab3337Smrg cpu=elxsi 73266ab3337Smrg vendor=elxsi 73366ab3337Smrg basic_os=${basic_os:-bsd} 734f7ec340bSmacallan ;; 735f7ec340bSmacallan fx2800) 73666ab3337Smrg cpu=i860 73766ab3337Smrg vendor=alliant 738f7ec340bSmacallan ;; 739f7ec340bSmacallan genix) 74066ab3337Smrg cpu=ns32k 74166ab3337Smrg vendor=ns 742f7ec340bSmacallan ;; 743f7ec340bSmacallan h3050r* | hiux*) 74466ab3337Smrg cpu=hppa1.1 74566ab3337Smrg vendor=hitachi 74666ab3337Smrg basic_os=hiuxwe2 747f7ec340bSmacallan ;; 748f7ec340bSmacallan hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74966ab3337Smrg cpu=hppa1.0 75066ab3337Smrg vendor=hp 751f7ec340bSmacallan ;; 752f7ec340bSmacallan hp9k2[0-9][0-9] | hp9k31[0-9]) 75366ab3337Smrg cpu=m68000 75466ab3337Smrg vendor=hp 755f7ec340bSmacallan ;; 756f7ec340bSmacallan hp9k3[2-9][0-9]) 75766ab3337Smrg cpu=m68k 75866ab3337Smrg vendor=hp 759f7ec340bSmacallan ;; 760f7ec340bSmacallan hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76166ab3337Smrg cpu=hppa1.0 76266ab3337Smrg vendor=hp 763f7ec340bSmacallan ;; 764f7ec340bSmacallan hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76566ab3337Smrg cpu=hppa1.1 76666ab3337Smrg vendor=hp 767f7ec340bSmacallan ;; 768f7ec340bSmacallan hp9k78[0-9] | hp78[0-9]) 769f7ec340bSmacallan # FIXME: really hppa2.0-hp 77066ab3337Smrg cpu=hppa1.1 77166ab3337Smrg vendor=hp 772f7ec340bSmacallan ;; 773f7ec340bSmacallan hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774f7ec340bSmacallan # FIXME: really hppa2.0-hp 77566ab3337Smrg cpu=hppa1.1 77666ab3337Smrg vendor=hp 777f7ec340bSmacallan ;; 778f7ec340bSmacallan hp9k8[0-9][13679] | hp8[0-9][13679]) 77966ab3337Smrg cpu=hppa1.1 78066ab3337Smrg vendor=hp 781f7ec340bSmacallan ;; 782f7ec340bSmacallan hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78366ab3337Smrg cpu=hppa1.0 78466ab3337Smrg vendor=hp 785f7ec340bSmacallan ;; 786f7ec340bSmacallan i*86v32) 78766ab3337Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78866ab3337Smrg vendor=pc 78966ab3337Smrg basic_os=sysv32 790f7ec340bSmacallan ;; 791f7ec340bSmacallan i*86v4*) 79266ab3337Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79366ab3337Smrg vendor=pc 79466ab3337Smrg basic_os=sysv4 795f7ec340bSmacallan ;; 796f7ec340bSmacallan i*86v) 79766ab3337Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79866ab3337Smrg vendor=pc 79966ab3337Smrg basic_os=sysv 800f7ec340bSmacallan ;; 801f7ec340bSmacallan i*86sol2) 80266ab3337Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80366ab3337Smrg vendor=pc 80466ab3337Smrg basic_os=solaris2 805f7ec340bSmacallan ;; 80666ab3337Smrg j90 | j90-cray) 80766ab3337Smrg cpu=j90 80866ab3337Smrg vendor=cray 80966ab3337Smrg basic_os=${basic_os:-unicos} 810f7ec340bSmacallan ;; 811f7ec340bSmacallan iris | iris4d) 81266ab3337Smrg cpu=mips 81366ab3337Smrg vendor=sgi 81466ab3337Smrg case $basic_os in 81566ab3337Smrg irix*) 816f7ec340bSmacallan ;; 817f7ec340bSmacallan *) 81866ab3337Smrg basic_os=irix4 819f7ec340bSmacallan ;; 820f7ec340bSmacallan esac 821f7ec340bSmacallan ;; 822f7ec340bSmacallan miniframe) 82366ab3337Smrg cpu=m68000 82466ab3337Smrg vendor=convergent 825f7ec340bSmacallan ;; 82666ab3337Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82766ab3337Smrg cpu=m68k 82866ab3337Smrg vendor=atari 82966ab3337Smrg basic_os=mint 830f7ec340bSmacallan ;; 831f7ec340bSmacallan news-3600 | risc-news) 83266ab3337Smrg cpu=mips 83366ab3337Smrg vendor=sony 83466ab3337Smrg basic_os=newsos 83566ab3337Smrg ;; 83666ab3337Smrg next | m*-next) 83766ab3337Smrg cpu=m68k 83866ab3337Smrg vendor=next 83966ab3337Smrg case $basic_os in 84066ab3337Smrg openstep*) 84166ab3337Smrg ;; 84266ab3337Smrg nextstep*) 843f7ec340bSmacallan ;; 84466ab3337Smrg ns2*) 84566ab3337Smrg basic_os=nextstep2 846f7ec340bSmacallan ;; 847f7ec340bSmacallan *) 84866ab3337Smrg basic_os=nextstep3 849f7ec340bSmacallan ;; 850f7ec340bSmacallan esac 851f7ec340bSmacallan ;; 852f7ec340bSmacallan np1) 85366ab3337Smrg cpu=np1 85466ab3337Smrg vendor=gould 855f7ec340bSmacallan ;; 856f7ec340bSmacallan op50n-* | op60c-*) 85766ab3337Smrg cpu=hppa1.1 85866ab3337Smrg vendor=oki 85966ab3337Smrg basic_os=proelf 860f7ec340bSmacallan ;; 861f7ec340bSmacallan pa-hitachi) 86266ab3337Smrg cpu=hppa1.1 86366ab3337Smrg vendor=hitachi 86466ab3337Smrg basic_os=hiuxwe2 8657ce7e03cSmrg ;; 866f7ec340bSmacallan pbd) 86766ab3337Smrg cpu=sparc 86866ab3337Smrg vendor=tti 869f7ec340bSmacallan ;; 870f7ec340bSmacallan pbb) 87166ab3337Smrg cpu=m68k 87266ab3337Smrg vendor=tti 873f7ec340bSmacallan ;; 87466ab3337Smrg pc532) 87566ab3337Smrg cpu=ns32k 87666ab3337Smrg vendor=pc532 877f7ec340bSmacallan ;; 878f7ec340bSmacallan pn) 87966ab3337Smrg cpu=pn 88066ab3337Smrg vendor=gould 881f7ec340bSmacallan ;; 88266ab3337Smrg power) 88366ab3337Smrg cpu=power 88466ab3337Smrg vendor=ibm 885f7ec340bSmacallan ;; 886f7ec340bSmacallan ps2) 88766ab3337Smrg cpu=i386 88866ab3337Smrg vendor=ibm 889f7ec340bSmacallan ;; 890f7ec340bSmacallan rm[46]00) 89166ab3337Smrg cpu=mips 89266ab3337Smrg vendor=siemens 893f7ec340bSmacallan ;; 894f7ec340bSmacallan rtpc | rtpc-*) 89566ab3337Smrg cpu=romp 89666ab3337Smrg vendor=ibm 8977ce7e03cSmrg ;; 89866ab3337Smrg sde) 89966ab3337Smrg cpu=mipsisa32 90066ab3337Smrg vendor=sde 90166ab3337Smrg basic_os=${basic_os:-elf} 902f7ec340bSmacallan ;; 90366ab3337Smrg simso-wrs) 90466ab3337Smrg cpu=sparclite 90566ab3337Smrg vendor=wrs 90666ab3337Smrg basic_os=vxworks 907f7ec340bSmacallan ;; 90866ab3337Smrg tower | tower-32) 90966ab3337Smrg cpu=m68k 91066ab3337Smrg vendor=ncr 9117ce7e03cSmrg ;; 91266ab3337Smrg vpp*|vx|vx-*) 91366ab3337Smrg cpu=f301 91466ab3337Smrg vendor=fujitsu 915f7ec340bSmacallan ;; 91666ab3337Smrg w65) 91766ab3337Smrg cpu=w65 91866ab3337Smrg vendor=wdc 919f7ec340bSmacallan ;; 92066ab3337Smrg w89k-*) 92166ab3337Smrg cpu=hppa1.1 92266ab3337Smrg vendor=winbond 92366ab3337Smrg basic_os=proelf 924f7ec340bSmacallan ;; 92566ab3337Smrg none) 92666ab3337Smrg cpu=none 92766ab3337Smrg vendor=none 9287ce7e03cSmrg ;; 92966ab3337Smrg leon|leon[3-9]) 93066ab3337Smrg cpu=sparc 93166ab3337Smrg vendor=$basic_machine 932f7ec340bSmacallan ;; 93366ab3337Smrg leon-*|leon[3-9]-*) 93466ab3337Smrg cpu=sparc 93566ab3337Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936f7ec340bSmacallan ;; 93766ab3337Smrg 93866ab3337Smrg *-*) 93966ab3337Smrg # shellcheck disable=SC2162 94066ab3337Smrg saved_IFS=$IFS 94166ab3337Smrg IFS="-" read cpu vendor <<EOF 94266ab3337Smrg$basic_machine 94366ab3337SmrgEOF 94466ab3337Smrg IFS=$saved_IFS 945f7ec340bSmacallan ;; 94666ab3337Smrg # We use `pc' rather than `unknown' 94766ab3337Smrg # because (1) that's what they normally are, and 94866ab3337Smrg # (2) the word "unknown" tends to confuse beginning users. 94966ab3337Smrg i*86 | x86_64) 95066ab3337Smrg cpu=$basic_machine 95166ab3337Smrg vendor=pc 952f7ec340bSmacallan ;; 95366ab3337Smrg # These rules are duplicated from below for sake of the special case above; 95466ab3337Smrg # i.e. things that normalized to x86 arches should also default to "pc" 95566ab3337Smrg pc98) 95666ab3337Smrg cpu=i386 95766ab3337Smrg vendor=pc 958f7ec340bSmacallan ;; 95966ab3337Smrg x64 | amd64) 96066ab3337Smrg cpu=x86_64 96166ab3337Smrg vendor=pc 962f7ec340bSmacallan ;; 96366ab3337Smrg # Recognize the basic CPU types without company name. 96466ab3337Smrg *) 96566ab3337Smrg cpu=$basic_machine 96666ab3337Smrg vendor=unknown 9672a75d1c4Smrg ;; 96866ab3337Smrgesac 96966ab3337Smrg 97066ab3337Smrgunset -v basic_machine 97166ab3337Smrg 97266ab3337Smrg# Decode basic machines in the full and proper CPU-Company form. 97366ab3337Smrgcase $cpu-$vendor in 97466ab3337Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97566ab3337Smrg # some cases the only manufacturer, in others, it is the most popular. 97666ab3337Smrg craynv-unknown) 97766ab3337Smrg vendor=cray 97866ab3337Smrg basic_os=${basic_os:-unicosmp} 979f7ec340bSmacallan ;; 98066ab3337Smrg c90-unknown | c90-cray) 98166ab3337Smrg vendor=cray 98266ab3337Smrg basic_os=${Basic_os:-unicos} 983f7ec340bSmacallan ;; 98466ab3337Smrg fx80-unknown) 98566ab3337Smrg vendor=alliant 986f7ec340bSmacallan ;; 98766ab3337Smrg romp-unknown) 98866ab3337Smrg vendor=ibm 989f7ec340bSmacallan ;; 99066ab3337Smrg mmix-unknown) 99166ab3337Smrg vendor=knuth 992f7ec340bSmacallan ;; 99366ab3337Smrg microblaze-unknown | microblazeel-unknown) 99466ab3337Smrg vendor=xilinx 995f7ec340bSmacallan ;; 99666ab3337Smrg rs6000-unknown) 99766ab3337Smrg vendor=ibm 998f7ec340bSmacallan ;; 99966ab3337Smrg vax-unknown) 100066ab3337Smrg vendor=dec 1001f7ec340bSmacallan ;; 100266ab3337Smrg pdp11-unknown) 100366ab3337Smrg vendor=dec 1004f7ec340bSmacallan ;; 100566ab3337Smrg we32k-unknown) 100666ab3337Smrg vendor=att 1007f7ec340bSmacallan ;; 100866ab3337Smrg cydra-unknown) 100966ab3337Smrg vendor=cydrome 1010f7ec340bSmacallan ;; 101166ab3337Smrg i370-ibm*) 101266ab3337Smrg vendor=ibm 1013f7ec340bSmacallan ;; 101466ab3337Smrg orion-unknown) 101566ab3337Smrg vendor=highlevel 1016f7ec340bSmacallan ;; 101766ab3337Smrg xps-unknown | xps100-unknown) 101866ab3337Smrg cpu=xps100 101966ab3337Smrg vendor=honeywell 1020f7ec340bSmacallan ;; 102166ab3337Smrg 102266ab3337Smrg # Here we normalize CPU types with a missing or matching vendor 102366ab3337Smrg dpx20-unknown | dpx20-bull) 102466ab3337Smrg cpu=rs6000 102566ab3337Smrg vendor=bull 102666ab3337Smrg basic_os=${basic_os:-bosx} 1027f7ec340bSmacallan ;; 102866ab3337Smrg 102966ab3337Smrg # Here we normalize CPU types irrespective of the vendor 103066ab3337Smrg amd64-*) 103166ab3337Smrg cpu=x86_64 10327ce7e03cSmrg ;; 103366ab3337Smrg blackfin-*) 103466ab3337Smrg cpu=bfin 103566ab3337Smrg basic_os=linux 1036f7ec340bSmacallan ;; 103766ab3337Smrg c54x-*) 103866ab3337Smrg cpu=tic54x 1039f7ec340bSmacallan ;; 104066ab3337Smrg c55x-*) 104166ab3337Smrg cpu=tic55x 1042f7ec340bSmacallan ;; 104366ab3337Smrg c6x-*) 104466ab3337Smrg cpu=tic6x 1045f7ec340bSmacallan ;; 104666ab3337Smrg e500v[12]-*) 104766ab3337Smrg cpu=powerpc 104866ab3337Smrg basic_os=${basic_os}"spe" 10497ce7e03cSmrg ;; 105066ab3337Smrg mips3*-*) 105166ab3337Smrg cpu=mips64 1052f7ec340bSmacallan ;; 105366ab3337Smrg ms1-*) 105466ab3337Smrg cpu=mt 1055f7ec340bSmacallan ;; 105666ab3337Smrg m68knommu-*) 105766ab3337Smrg cpu=m68k 105866ab3337Smrg basic_os=linux 1059f7ec340bSmacallan ;; 106066ab3337Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106166ab3337Smrg cpu=s12z 1062f7ec340bSmacallan ;; 106366ab3337Smrg openrisc-*) 106466ab3337Smrg cpu=or32 1065f7ec340bSmacallan ;; 106666ab3337Smrg parisc-*) 106766ab3337Smrg cpu=hppa 106866ab3337Smrg basic_os=linux 1069f7ec340bSmacallan ;; 107066ab3337Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107166ab3337Smrg cpu=i586 1072f7ec340bSmacallan ;; 107366ab3337Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 107466ab3337Smrg cpu=i686 1075f7ec340bSmacallan ;; 107666ab3337Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 107766ab3337Smrg cpu=i686 1078f7ec340bSmacallan ;; 107966ab3337Smrg pentium4-*) 108066ab3337Smrg cpu=i786 1081f7ec340bSmacallan ;; 108266ab3337Smrg pc98-*) 108366ab3337Smrg cpu=i386 1084f7ec340bSmacallan ;; 108566ab3337Smrg ppc-* | ppcbe-*) 108666ab3337Smrg cpu=powerpc 10877ce7e03cSmrg ;; 108866ab3337Smrg ppcle-* | powerpclittle-*) 108966ab3337Smrg cpu=powerpcle 1090f7ec340bSmacallan ;; 109166ab3337Smrg ppc64-*) 109266ab3337Smrg cpu=powerpc64 10932a75d1c4Smrg ;; 109466ab3337Smrg ppc64le-* | powerpc64little-*) 109566ab3337Smrg cpu=powerpc64le 1096f7ec340bSmacallan ;; 109766ab3337Smrg sb1-*) 109866ab3337Smrg cpu=mipsisa64sb1 1099f7ec340bSmacallan ;; 110066ab3337Smrg sb1el-*) 110166ab3337Smrg cpu=mipsisa64sb1el 11022a75d1c4Smrg ;; 110366ab3337Smrg sh5e[lb]-*) 110466ab3337Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1105f7ec340bSmacallan ;; 110666ab3337Smrg spur-*) 110766ab3337Smrg cpu=spur 1108f7ec340bSmacallan ;; 110966ab3337Smrg strongarm-* | thumb-*) 111066ab3337Smrg cpu=arm 1111f7ec340bSmacallan ;; 111266ab3337Smrg tx39-*) 111366ab3337Smrg cpu=mipstx39 1114f7ec340bSmacallan ;; 111566ab3337Smrg tx39el-*) 111666ab3337Smrg cpu=mipstx39el 1117f7ec340bSmacallan ;; 111866ab3337Smrg x64-*) 111966ab3337Smrg cpu=x86_64 11207ce7e03cSmrg ;; 112166ab3337Smrg xscale-* | xscalee[bl]-*) 112266ab3337Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1123f7ec340bSmacallan ;; 112466ab3337Smrg arm64-*) 112566ab3337Smrg cpu=aarch64 1126f7ec340bSmacallan ;; 112766ab3337Smrg 112866ab3337Smrg # Recognize the canonical CPU Types that limit and/or modify the 112966ab3337Smrg # company names they are paired with. 113066ab3337Smrg cr16-*) 113166ab3337Smrg basic_os=${basic_os:-elf} 1132f7ec340bSmacallan ;; 113366ab3337Smrg crisv32-* | etraxfs*-*) 113466ab3337Smrg cpu=crisv32 113566ab3337Smrg vendor=axis 1136f7ec340bSmacallan ;; 113766ab3337Smrg cris-* | etrax*-*) 113866ab3337Smrg cpu=cris 113966ab3337Smrg vendor=axis 1140f7ec340bSmacallan ;; 114166ab3337Smrg crx-*) 114266ab3337Smrg basic_os=${basic_os:-elf} 1143f7ec340bSmacallan ;; 114466ab3337Smrg neo-tandem) 114566ab3337Smrg cpu=neo 114666ab3337Smrg vendor=tandem 1147f7ec340bSmacallan ;; 114866ab3337Smrg nse-tandem) 114966ab3337Smrg cpu=nse 115066ab3337Smrg vendor=tandem 1151f7ec340bSmacallan ;; 115266ab3337Smrg nsr-tandem) 115366ab3337Smrg cpu=nsr 115466ab3337Smrg vendor=tandem 1155f7ec340bSmacallan ;; 115666ab3337Smrg nsv-tandem) 115766ab3337Smrg cpu=nsv 115866ab3337Smrg vendor=tandem 1159f7ec340bSmacallan ;; 116066ab3337Smrg nsx-tandem) 116166ab3337Smrg cpu=nsx 116266ab3337Smrg vendor=tandem 1163f7ec340bSmacallan ;; 116466ab3337Smrg mipsallegrexel-sony) 116566ab3337Smrg cpu=mipsallegrexel 116666ab3337Smrg vendor=sony 1167f7ec340bSmacallan ;; 116866ab3337Smrg tile*-*) 116966ab3337Smrg basic_os=${basic_os:-linux-gnu} 1170f7ec340bSmacallan ;; 117166ab3337Smrg 1172f7ec340bSmacallan *) 117366ab3337Smrg # Recognize the canonical CPU types that are allowed with any 117466ab3337Smrg # company name. 117566ab3337Smrg case $cpu in 117666ab3337Smrg 1750a | 580 \ 117766ab3337Smrg | a29k \ 117866ab3337Smrg | aarch64 | aarch64_be \ 117966ab3337Smrg | abacus \ 118066ab3337Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118166ab3337Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118266ab3337Smrg | alphapca5[67] | alpha64pca5[67] \ 118366ab3337Smrg | am33_2.0 \ 118466ab3337Smrg | amdgcn \ 118566ab3337Smrg | arc | arceb | arc32 | arc64 \ 118666ab3337Smrg | arm | arm[lb]e | arme[lb] | armv* \ 118766ab3337Smrg | avr | avr32 \ 118866ab3337Smrg | asmjs \ 118966ab3337Smrg | ba \ 119066ab3337Smrg | be32 | be64 \ 119166ab3337Smrg | bfin | bpf | bs2000 \ 119266ab3337Smrg | c[123]* | c30 | [cjt]90 | c4x \ 119366ab3337Smrg | c8051 | clipper | craynv | csky | cydra \ 119466ab3337Smrg | d10v | d30v | dlx | dsp16xx \ 119566ab3337Smrg | e2k | elxsi | epiphany \ 119666ab3337Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 119766ab3337Smrg | h8300 | h8500 \ 119866ab3337Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 119966ab3337Smrg | hexagon \ 120066ab3337Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120166ab3337Smrg | ip2k | iq2000 \ 120266ab3337Smrg | k1om \ 120366ab3337Smrg | le32 | le64 \ 120466ab3337Smrg | lm32 \ 120566ab3337Smrg | loongarch32 | loongarch64 | loongarchx32 \ 120666ab3337Smrg | m32c | m32r | m32rle \ 120766ab3337Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 120866ab3337Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 120966ab3337Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121066ab3337Smrg | microblaze | microblazeel \ 121166ab3337Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121266ab3337Smrg | mips16 \ 121366ab3337Smrg | mips64 | mips64eb | mips64el \ 121466ab3337Smrg | mips64octeon | mips64octeonel \ 121566ab3337Smrg | mips64orion | mips64orionel \ 121666ab3337Smrg | mips64r5900 | mips64r5900el \ 121766ab3337Smrg | mips64vr | mips64vrel \ 121866ab3337Smrg | mips64vr4100 | mips64vr4100el \ 121966ab3337Smrg | mips64vr4300 | mips64vr4300el \ 122066ab3337Smrg | mips64vr5000 | mips64vr5000el \ 122166ab3337Smrg | mips64vr5900 | mips64vr5900el \ 122266ab3337Smrg | mipsisa32 | mipsisa32el \ 122366ab3337Smrg | mipsisa32r2 | mipsisa32r2el \ 122466ab3337Smrg | mipsisa32r3 | mipsisa32r3el \ 122566ab3337Smrg | mipsisa32r5 | mipsisa32r5el \ 122666ab3337Smrg | mipsisa32r6 | mipsisa32r6el \ 122766ab3337Smrg | mipsisa64 | mipsisa64el \ 122866ab3337Smrg | mipsisa64r2 | mipsisa64r2el \ 122966ab3337Smrg | mipsisa64r3 | mipsisa64r3el \ 123066ab3337Smrg | mipsisa64r5 | mipsisa64r5el \ 123166ab3337Smrg | mipsisa64r6 | mipsisa64r6el \ 123266ab3337Smrg | mipsisa64sb1 | mipsisa64sb1el \ 123366ab3337Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 123466ab3337Smrg | mipsr5900 | mipsr5900el \ 123566ab3337Smrg | mipstx39 | mipstx39el \ 123666ab3337Smrg | mmix \ 123766ab3337Smrg | mn10200 | mn10300 \ 123866ab3337Smrg | moxie \ 123966ab3337Smrg | mt \ 124066ab3337Smrg | msp430 \ 124166ab3337Smrg | nds32 | nds32le | nds32be \ 124266ab3337Smrg | nfp \ 124366ab3337Smrg | nios | nios2 | nios2eb | nios2el \ 124466ab3337Smrg | none | np1 | ns16k | ns32k | nvptx \ 124566ab3337Smrg | open8 \ 124666ab3337Smrg | or1k* \ 124766ab3337Smrg | or32 \ 124866ab3337Smrg | orion \ 124966ab3337Smrg | picochip \ 125066ab3337Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125166ab3337Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125266ab3337Smrg | pru \ 125366ab3337Smrg | pyramid \ 125466ab3337Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 125566ab3337Smrg | rl78 | romp | rs6000 | rx \ 125666ab3337Smrg | s390 | s390x \ 125766ab3337Smrg | score \ 125866ab3337Smrg | sh | shl \ 125966ab3337Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126066ab3337Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126166ab3337Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126266ab3337Smrg | sparclite \ 126366ab3337Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126466ab3337Smrg | spu \ 126566ab3337Smrg | tahoe \ 126666ab3337Smrg | thumbv7* \ 126766ab3337Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 126866ab3337Smrg | tron \ 126966ab3337Smrg | ubicom32 \ 127066ab3337Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127166ab3337Smrg | vax \ 127266ab3337Smrg | visium \ 127366ab3337Smrg | w65 \ 127466ab3337Smrg | wasm32 | wasm64 \ 127566ab3337Smrg | we32k \ 127666ab3337Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 127766ab3337Smrg | xstormy16 | xtensa* \ 127866ab3337Smrg | ymp \ 127966ab3337Smrg | z8k | z80) 128066ab3337Smrg ;; 128166ab3337Smrg 128266ab3337Smrg *) 128366ab3337Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128466ab3337Smrg exit 1 128566ab3337Smrg ;; 128666ab3337Smrg esac 1287f7ec340bSmacallan ;; 1288f7ec340bSmacallanesac 1289f7ec340bSmacallan 1290f7ec340bSmacallan# Here we canonicalize certain aliases for manufacturers. 129166ab3337Smrgcase $vendor in 129266ab3337Smrg digital*) 129366ab3337Smrg vendor=dec 1294f7ec340bSmacallan ;; 129566ab3337Smrg commodore*) 129666ab3337Smrg vendor=cbm 1297f7ec340bSmacallan ;; 1298f7ec340bSmacallan *) 1299f7ec340bSmacallan ;; 1300f7ec340bSmacallanesac 1301f7ec340bSmacallan 1302f7ec340bSmacallan# Decode manufacturer-specific aliases for certain operating systems. 1303f7ec340bSmacallan 130466ab3337Smrgif test x$basic_os != x 1305f7ec340bSmacallanthen 130666ab3337Smrg 130766ab3337Smrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 130866ab3337Smrg# set os. 130966ab3337Smrgcase $basic_os in 131066ab3337Smrg gnu/linux*) 131166ab3337Smrg kernel=linux 131266ab3337Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131366ab3337Smrg ;; 131466ab3337Smrg os2-emx) 131566ab3337Smrg kernel=os2 131666ab3337Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 131766ab3337Smrg ;; 131866ab3337Smrg nto-qnx*) 131966ab3337Smrg kernel=nto 132066ab3337Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132166ab3337Smrg ;; 132266ab3337Smrg *-*) 132366ab3337Smrg # shellcheck disable=SC2162 132466ab3337Smrg saved_IFS=$IFS 132566ab3337Smrg IFS="-" read kernel os <<EOF 132666ab3337Smrg$basic_os 132766ab3337SmrgEOF 132866ab3337Smrg IFS=$saved_IFS 132966ab3337Smrg ;; 133066ab3337Smrg # Default OS when just kernel was specified 133166ab3337Smrg nto*) 133266ab3337Smrg kernel=nto 133366ab3337Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133466ab3337Smrg ;; 133566ab3337Smrg linux*) 133666ab3337Smrg kernel=linux 133766ab3337Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13382a75d1c4Smrg ;; 133966ab3337Smrg *) 134066ab3337Smrg kernel= 134166ab3337Smrg os=$basic_os 1342f7ec340bSmacallan ;; 134366ab3337Smrgesac 134466ab3337Smrg 134566ab3337Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 134666ab3337Smrg# etc.) 134766ab3337Smrgcase $os in 134866ab3337Smrg # First match some system type aliases that might get confused 134966ab3337Smrg # with valid system types. 135066ab3337Smrg # solaris* is a basic system type, with this one exception. 135166ab3337Smrg auroraux) 135266ab3337Smrg os=auroraux 1353f7ec340bSmacallan ;; 135466ab3337Smrg bluegene*) 135566ab3337Smrg os=cnk 1356f7ec340bSmacallan ;; 135766ab3337Smrg solaris1 | solaris1.*) 135866ab3337Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1359f7ec340bSmacallan ;; 136066ab3337Smrg solaris) 136166ab3337Smrg os=solaris2 1362f7ec340bSmacallan ;; 136366ab3337Smrg unixware*) 136466ab3337Smrg os=sysv4.2uw 1365f7ec340bSmacallan ;; 136666ab3337Smrg # es1800 is here to avoid being matched by es* (a different OS) 136766ab3337Smrg es1800*) 136866ab3337Smrg os=ose 1369f7ec340bSmacallan ;; 137066ab3337Smrg # Some version numbers need modification 137166ab3337Smrg chorusos*) 137266ab3337Smrg os=chorusos 1373f7ec340bSmacallan ;; 137466ab3337Smrg isc) 137566ab3337Smrg os=isc2.2 1376f7ec340bSmacallan ;; 137766ab3337Smrg sco6) 137866ab3337Smrg os=sco5v6 1379f7ec340bSmacallan ;; 138066ab3337Smrg sco5) 138166ab3337Smrg os=sco3.2v5 13827ce7e03cSmrg ;; 138366ab3337Smrg sco4) 138466ab3337Smrg os=sco3.2v4 1385f7ec340bSmacallan ;; 138666ab3337Smrg sco3.2.[4-9]*) 138766ab3337Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1388f7ec340bSmacallan ;; 138966ab3337Smrg sco*v* | scout) 139066ab3337Smrg # Don't match below 1391f7ec340bSmacallan ;; 139266ab3337Smrg sco*) 139366ab3337Smrg os=sco3.2v2 1394f7ec340bSmacallan ;; 139566ab3337Smrg psos*) 139666ab3337Smrg os=psos 13977ce7e03cSmrg ;; 139866ab3337Smrg qnx*) 139966ab3337Smrg os=qnx 1400f7ec340bSmacallan ;; 140166ab3337Smrg hiux*) 140266ab3337Smrg os=hiuxwe2 1403f7ec340bSmacallan ;; 140466ab3337Smrg lynx*178) 140566ab3337Smrg os=lynxos178 1406f7ec340bSmacallan ;; 140766ab3337Smrg lynx*5) 140866ab3337Smrg os=lynxos5 1409f7ec340bSmacallan ;; 141066ab3337Smrg lynxos*) 141166ab3337Smrg # don't get caught up in next wildcard 1412f7ec340bSmacallan ;; 141366ab3337Smrg lynx*) 141466ab3337Smrg os=lynxos 1415f7ec340bSmacallan ;; 141666ab3337Smrg mac[0-9]*) 141766ab3337Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1418f7ec340bSmacallan ;; 141966ab3337Smrg opened*) 142066ab3337Smrg os=openedition 14217ce7e03cSmrg ;; 142266ab3337Smrg os400*) 142366ab3337Smrg os=os400 1424f7ec340bSmacallan ;; 142566ab3337Smrg sunos5*) 142666ab3337Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1427f7ec340bSmacallan ;; 142866ab3337Smrg sunos6*) 142966ab3337Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1430f7ec340bSmacallan ;; 143166ab3337Smrg wince*) 143266ab3337Smrg os=wince 1433f7ec340bSmacallan ;; 143466ab3337Smrg utek*) 143566ab3337Smrg os=bsd 1436f7ec340bSmacallan ;; 143766ab3337Smrg dynix*) 143866ab3337Smrg os=bsd 143966ab3337Smrg ;; 144066ab3337Smrg acis*) 144166ab3337Smrg os=aos 1442f7ec340bSmacallan ;; 144366ab3337Smrg atheos*) 144466ab3337Smrg os=atheos 1445f7ec340bSmacallan ;; 144666ab3337Smrg syllable*) 144766ab3337Smrg os=syllable 14487ce7e03cSmrg ;; 144966ab3337Smrg 386bsd) 145066ab3337Smrg os=bsd 1451f7ec340bSmacallan ;; 145266ab3337Smrg ctix* | uts*) 145366ab3337Smrg os=sysv 1454f7ec340bSmacallan ;; 145566ab3337Smrg nova*) 145666ab3337Smrg os=rtmk-nova 1457f7ec340bSmacallan ;; 145866ab3337Smrg ns2) 145966ab3337Smrg os=nextstep2 1460f7ec340bSmacallan ;; 146166ab3337Smrg # Preserve the version number of sinix5. 146266ab3337Smrg sinix5.*) 146366ab3337Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1464f7ec340bSmacallan ;; 146566ab3337Smrg sinix*) 146666ab3337Smrg os=sysv4 1467f7ec340bSmacallan ;; 146866ab3337Smrg tpf*) 146966ab3337Smrg os=tpf 1470f7ec340bSmacallan ;; 147166ab3337Smrg triton*) 147266ab3337Smrg os=sysv3 1473f7ec340bSmacallan ;; 147466ab3337Smrg oss*) 147566ab3337Smrg os=sysv3 1476f7ec340bSmacallan ;; 147766ab3337Smrg svr4*) 147866ab3337Smrg os=sysv4 1479f7ec340bSmacallan ;; 148066ab3337Smrg svr3) 148166ab3337Smrg os=sysv3 1482f7ec340bSmacallan ;; 148366ab3337Smrg sysvr4) 148466ab3337Smrg os=sysv4 1485f7ec340bSmacallan ;; 148666ab3337Smrg ose*) 148766ab3337Smrg os=ose 14887ce7e03cSmrg ;; 148966ab3337Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149066ab3337Smrg os=mint 14912a75d1c4Smrg ;; 149266ab3337Smrg dicos*) 149366ab3337Smrg os=dicos 14942a75d1c4Smrg ;; 149566ab3337Smrg pikeos*) 149666ab3337Smrg # Until real need of OS specific support for 149766ab3337Smrg # particular features comes up, bare metal 149866ab3337Smrg # configurations are quite functional. 149966ab3337Smrg case $cpu in 150066ab3337Smrg arm*) 150166ab3337Smrg os=eabi 150266ab3337Smrg ;; 150366ab3337Smrg *) 150466ab3337Smrg os=elf 150566ab3337Smrg ;; 150666ab3337Smrg esac 1507f7ec340bSmacallan ;; 1508f7ec340bSmacallan *) 150966ab3337Smrg # No normalization, but not necessarily accepted, that comes below. 1510f7ec340bSmacallan ;; 1511f7ec340bSmacallanesac 151266ab3337Smrg 1513f7ec340bSmacallanelse 1514f7ec340bSmacallan 1515f7ec340bSmacallan# Here we handle the default operating systems that come with various machines. 1516f7ec340bSmacallan# The value should be what the vendor currently ships out the door with their 1517f7ec340bSmacallan# machine or put another way, the most popular os provided with the machine. 1518f7ec340bSmacallan 1519f7ec340bSmacallan# Note that if you're going to try to match "-MANUFACTURER" here (say, 1520f7ec340bSmacallan# "-sun"), then you have to tell the case statement up towards the top 1521f7ec340bSmacallan# that MANUFACTURER isn't an operating system. Otherwise, code above 1522f7ec340bSmacallan# will signal an error saying that MANUFACTURER isn't an operating 1523f7ec340bSmacallan# system, and we'll never get to this point. 1524f7ec340bSmacallan 152566ab3337Smrgkernel= 152666ab3337Smrgcase $cpu-$vendor in 15272a75d1c4Smrg score-*) 152866ab3337Smrg os=elf 15297ce7e03cSmrg ;; 15302a75d1c4Smrg spu-*) 153166ab3337Smrg os=elf 15327ce7e03cSmrg ;; 1533f7ec340bSmacallan *-acorn) 153466ab3337Smrg os=riscix1.2 1535f7ec340bSmacallan ;; 1536f7ec340bSmacallan arm*-rebel) 153766ab3337Smrg kernel=linux 153866ab3337Smrg os=gnu 1539f7ec340bSmacallan ;; 1540f7ec340bSmacallan arm*-semi) 154166ab3337Smrg os=aout 1542f7ec340bSmacallan ;; 15432a75d1c4Smrg c4x-* | tic4x-*) 154466ab3337Smrg os=coff 154566ab3337Smrg ;; 154666ab3337Smrg c8051-*) 154766ab3337Smrg os=elf 154866ab3337Smrg ;; 154966ab3337Smrg clipper-intergraph) 155066ab3337Smrg os=clix 15512a75d1c4Smrg ;; 15522a75d1c4Smrg hexagon-*) 155366ab3337Smrg os=elf 15542a75d1c4Smrg ;; 15552a75d1c4Smrg tic54x-*) 155666ab3337Smrg os=coff 15572a75d1c4Smrg ;; 15582a75d1c4Smrg tic55x-*) 155966ab3337Smrg os=coff 15602a75d1c4Smrg ;; 15612a75d1c4Smrg tic6x-*) 156266ab3337Smrg os=coff 1563f7ec340bSmacallan ;; 1564f7ec340bSmacallan # This must come before the *-dec entry. 1565f7ec340bSmacallan pdp10-*) 156666ab3337Smrg os=tops20 1567f7ec340bSmacallan ;; 1568f7ec340bSmacallan pdp11-*) 156966ab3337Smrg os=none 1570f7ec340bSmacallan ;; 1571f7ec340bSmacallan *-dec | vax-*) 157266ab3337Smrg os=ultrix4.2 1573f7ec340bSmacallan ;; 1574f7ec340bSmacallan m68*-apollo) 157566ab3337Smrg os=domain 1576f7ec340bSmacallan ;; 1577f7ec340bSmacallan i386-sun) 157866ab3337Smrg os=sunos4.0.2 1579f7ec340bSmacallan ;; 1580f7ec340bSmacallan m68000-sun) 158166ab3337Smrg os=sunos3 1582f7ec340bSmacallan ;; 1583f7ec340bSmacallan m68*-cisco) 158466ab3337Smrg os=aout 1585f7ec340bSmacallan ;; 15862a75d1c4Smrg mep-*) 158766ab3337Smrg os=elf 15887ce7e03cSmrg ;; 1589f7ec340bSmacallan mips*-cisco) 159066ab3337Smrg os=elf 1591f7ec340bSmacallan ;; 1592f7ec340bSmacallan mips*-*) 159366ab3337Smrg os=elf 1594f7ec340bSmacallan ;; 1595f7ec340bSmacallan or32-*) 159666ab3337Smrg os=coff 1597f7ec340bSmacallan ;; 1598f7ec340bSmacallan *-tti) # must be before sparc entry or we get the wrong os. 159966ab3337Smrg os=sysv3 1600f7ec340bSmacallan ;; 1601f7ec340bSmacallan sparc-* | *-sun) 160266ab3337Smrg os=sunos4.1.1 1603f7ec340bSmacallan ;; 160466ab3337Smrg pru-*) 160566ab3337Smrg os=elf 1606f7ec340bSmacallan ;; 160766ab3337Smrg *-be) 160866ab3337Smrg os=beos 16097ce7e03cSmrg ;; 1610f7ec340bSmacallan *-ibm) 161166ab3337Smrg os=aix 1612f7ec340bSmacallan ;; 16132a75d1c4Smrg *-knuth) 161466ab3337Smrg os=mmixware 16157ce7e03cSmrg ;; 1616f7ec340bSmacallan *-wec) 161766ab3337Smrg os=proelf 1618f7ec340bSmacallan ;; 1619f7ec340bSmacallan *-winbond) 162066ab3337Smrg os=proelf 1621f7ec340bSmacallan ;; 1622f7ec340bSmacallan *-oki) 162366ab3337Smrg os=proelf 1624f7ec340bSmacallan ;; 1625f7ec340bSmacallan *-hp) 162666ab3337Smrg os=hpux 1627f7ec340bSmacallan ;; 1628f7ec340bSmacallan *-hitachi) 162966ab3337Smrg os=hiux 1630f7ec340bSmacallan ;; 1631f7ec340bSmacallan i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 163266ab3337Smrg os=sysv 1633f7ec340bSmacallan ;; 1634f7ec340bSmacallan *-cbm) 163566ab3337Smrg os=amigaos 1636f7ec340bSmacallan ;; 1637f7ec340bSmacallan *-dg) 163866ab3337Smrg os=dgux 1639f7ec340bSmacallan ;; 1640f7ec340bSmacallan *-dolphin) 164166ab3337Smrg os=sysv3 1642f7ec340bSmacallan ;; 1643f7ec340bSmacallan m68k-ccur) 164466ab3337Smrg os=rtu 1645f7ec340bSmacallan ;; 1646f7ec340bSmacallan m88k-omron*) 164766ab3337Smrg os=luna 1648f7ec340bSmacallan ;; 164966ab3337Smrg *-next) 165066ab3337Smrg os=nextstep 1651f7ec340bSmacallan ;; 1652f7ec340bSmacallan *-sequent) 165366ab3337Smrg os=ptx 1654f7ec340bSmacallan ;; 1655f7ec340bSmacallan *-crds) 165666ab3337Smrg os=unos 1657f7ec340bSmacallan ;; 1658f7ec340bSmacallan *-ns) 165966ab3337Smrg os=genix 1660f7ec340bSmacallan ;; 1661f7ec340bSmacallan i370-*) 166266ab3337Smrg os=mvs 1663f7ec340bSmacallan ;; 1664f7ec340bSmacallan *-gould) 166566ab3337Smrg os=sysv 1666f7ec340bSmacallan ;; 1667f7ec340bSmacallan *-highlevel) 166866ab3337Smrg os=bsd 1669f7ec340bSmacallan ;; 1670f7ec340bSmacallan *-encore) 167166ab3337Smrg os=bsd 1672f7ec340bSmacallan ;; 1673f7ec340bSmacallan *-sgi) 167466ab3337Smrg os=irix 1675f7ec340bSmacallan ;; 1676f7ec340bSmacallan *-siemens) 167766ab3337Smrg os=sysv4 1678f7ec340bSmacallan ;; 1679f7ec340bSmacallan *-masscomp) 168066ab3337Smrg os=rtu 1681f7ec340bSmacallan ;; 1682f7ec340bSmacallan f30[01]-fujitsu | f700-fujitsu) 168366ab3337Smrg os=uxpv 1684f7ec340bSmacallan ;; 1685f7ec340bSmacallan *-rom68k) 168666ab3337Smrg os=coff 1687f7ec340bSmacallan ;; 1688f7ec340bSmacallan *-*bug) 168966ab3337Smrg os=coff 1690f7ec340bSmacallan ;; 1691f7ec340bSmacallan *-apple) 169266ab3337Smrg os=macos 1693f7ec340bSmacallan ;; 1694f7ec340bSmacallan *-atari*) 169566ab3337Smrg os=mint 169666ab3337Smrg ;; 169766ab3337Smrg *-wrs) 169866ab3337Smrg os=vxworks 1699f7ec340bSmacallan ;; 1700f7ec340bSmacallan *) 170166ab3337Smrg os=none 1702f7ec340bSmacallan ;; 1703f7ec340bSmacallanesac 170466ab3337Smrg 1705f7ec340bSmacallanfi 1706f7ec340bSmacallan 170766ab3337Smrg# Now, validate our (potentially fixed-up) OS. 170866ab3337Smrgcase $os in 170966ab3337Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171066ab3337Smrg musl* | newlib* | relibc* | uclibc*) 171166ab3337Smrg ;; 171266ab3337Smrg # Likewise for "kernel-abi" 171366ab3337Smrg eabi* | gnueabi*) 171466ab3337Smrg ;; 171566ab3337Smrg # VxWorks passes extra cpu info in the 4th filed. 171666ab3337Smrg simlinux | simwindows | spe) 171766ab3337Smrg ;; 171866ab3337Smrg # Now accept the basic system types. 171966ab3337Smrg # The portable systems comes first. 172066ab3337Smrg # Each alternative MUST end in a * to match a version number. 172166ab3337Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 172266ab3337Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 172366ab3337Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 172466ab3337Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 172566ab3337Smrg | hiux* | abug | nacl* | netware* | windows* \ 172666ab3337Smrg | os9* | macos* | osx* | ios* \ 172766ab3337Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 172866ab3337Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 172966ab3337Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173066ab3337Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 173166ab3337Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 173266ab3337Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 173366ab3337Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 173466ab3337Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 173566ab3337Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 173666ab3337Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 173766ab3337Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 173866ab3337Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 173966ab3337Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174066ab3337Smrg | midipix* | mingw32* | mingw64* | mint* \ 174166ab3337Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 174266ab3337Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 174366ab3337Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 174466ab3337Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 174566ab3337Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 174666ab3337Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 174766ab3337Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 174866ab3337Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 174966ab3337Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175066ab3337Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 175166ab3337Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 175266ab3337Smrg ;; 175366ab3337Smrg # This one is extra strict with allowed versions 175466ab3337Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 175566ab3337Smrg # Don't forget version if it is 3.2v4 or newer. 175666ab3337Smrg ;; 175766ab3337Smrg none) 175866ab3337Smrg ;; 175966ab3337Smrg *) 176066ab3337Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 176166ab3337Smrg exit 1 176266ab3337Smrg ;; 176366ab3337Smrgesac 176466ab3337Smrg 176566ab3337Smrg# As a final step for OS-related things, validate the OS-kernel combination 176666ab3337Smrg# (given a valid OS), if there is a kernel. 176766ab3337Smrgcase $kernel-$os in 176866ab3337Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 176966ab3337Smrg | linux-musl* | linux-relibc* | linux-uclibc* ) 177066ab3337Smrg ;; 177166ab3337Smrg uclinux-uclibc* ) 177266ab3337Smrg ;; 177366ab3337Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 177466ab3337Smrg # These are just libc implementations, not actual OSes, and thus 177566ab3337Smrg # require a kernel. 177666ab3337Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 177766ab3337Smrg exit 1 177866ab3337Smrg ;; 177966ab3337Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 178066ab3337Smrg ;; 178166ab3337Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 178266ab3337Smrg ;; 178366ab3337Smrg nto-qnx*) 178466ab3337Smrg ;; 178566ab3337Smrg os2-emx) 178666ab3337Smrg ;; 178766ab3337Smrg *-eabi* | *-gnueabi*) 178866ab3337Smrg ;; 178966ab3337Smrg -*) 179066ab3337Smrg # Blank kernel with real OS is always fine. 179166ab3337Smrg ;; 179266ab3337Smrg *-*) 179366ab3337Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 179466ab3337Smrg exit 1 179566ab3337Smrg ;; 179666ab3337Smrgesac 179766ab3337Smrg 1798f7ec340bSmacallan# Here we handle the case where we know the os, and the CPU type, but not the 1799f7ec340bSmacallan# manufacturer. We pick the logical manufacturer. 180066ab3337Smrgcase $vendor in 180166ab3337Smrg unknown) 180266ab3337Smrg case $cpu-$os in 180366ab3337Smrg *-riscix*) 1804f7ec340bSmacallan vendor=acorn 1805f7ec340bSmacallan ;; 180666ab3337Smrg *-sunos*) 1807f7ec340bSmacallan vendor=sun 1808f7ec340bSmacallan ;; 180966ab3337Smrg *-cnk* | *-aix*) 1810f7ec340bSmacallan vendor=ibm 1811f7ec340bSmacallan ;; 181266ab3337Smrg *-beos*) 1813f7ec340bSmacallan vendor=be 1814f7ec340bSmacallan ;; 181566ab3337Smrg *-hpux*) 1816f7ec340bSmacallan vendor=hp 1817f7ec340bSmacallan ;; 181866ab3337Smrg *-mpeix*) 1819f7ec340bSmacallan vendor=hp 1820f7ec340bSmacallan ;; 182166ab3337Smrg *-hiux*) 1822f7ec340bSmacallan vendor=hitachi 1823f7ec340bSmacallan ;; 182466ab3337Smrg *-unos*) 1825f7ec340bSmacallan vendor=crds 1826f7ec340bSmacallan ;; 182766ab3337Smrg *-dgux*) 1828f7ec340bSmacallan vendor=dg 1829f7ec340bSmacallan ;; 183066ab3337Smrg *-luna*) 1831f7ec340bSmacallan vendor=omron 1832f7ec340bSmacallan ;; 183366ab3337Smrg *-genix*) 1834f7ec340bSmacallan vendor=ns 1835f7ec340bSmacallan ;; 183666ab3337Smrg *-clix*) 183766ab3337Smrg vendor=intergraph 183866ab3337Smrg ;; 183966ab3337Smrg *-mvs* | *-opened*) 184066ab3337Smrg vendor=ibm 184166ab3337Smrg ;; 184266ab3337Smrg *-os400*) 1843f7ec340bSmacallan vendor=ibm 1844f7ec340bSmacallan ;; 184566ab3337Smrg s390-* | s390x-*) 18467ce7e03cSmrg vendor=ibm 18477ce7e03cSmrg ;; 184866ab3337Smrg *-ptx*) 1849f7ec340bSmacallan vendor=sequent 1850f7ec340bSmacallan ;; 185166ab3337Smrg *-tpf*) 18527ce7e03cSmrg vendor=ibm 18537ce7e03cSmrg ;; 185466ab3337Smrg *-vxsim* | *-vxworks* | *-windiss*) 1855f7ec340bSmacallan vendor=wrs 1856f7ec340bSmacallan ;; 185766ab3337Smrg *-aux*) 1858f7ec340bSmacallan vendor=apple 1859f7ec340bSmacallan ;; 186066ab3337Smrg *-hms*) 1861f7ec340bSmacallan vendor=hitachi 1862f7ec340bSmacallan ;; 186366ab3337Smrg *-mpw* | *-macos*) 1864f7ec340bSmacallan vendor=apple 1865f7ec340bSmacallan ;; 186666ab3337Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1867f7ec340bSmacallan vendor=atari 1868f7ec340bSmacallan ;; 186966ab3337Smrg *-vos*) 1870f7ec340bSmacallan vendor=stratus 1871f7ec340bSmacallan ;; 1872f7ec340bSmacallan esac 1873f7ec340bSmacallan ;; 1874f7ec340bSmacallanesac 1875f7ec340bSmacallan 187666ab3337Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 18777ce7e03cSmrgexit 1878f7ec340bSmacallan 1879f7ec340bSmacallan# Local variables: 188066ab3337Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1881f7ec340bSmacallan# time-stamp-start: "timestamp='" 1882f7ec340bSmacallan# time-stamp-format: "%:y-%02m-%02d" 1883f7ec340bSmacallan# time-stamp-end: "'" 1884f7ec340bSmacallan# End: 1885