1c19de146Smrg#! /bin/sh 2c19de146Smrg# Configuration validation subroutine script. 33b83913fSmrg# Copyright 1992-2023 Free Software Foundation, Inc. 4c19de146Smrg 53b83913fSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 63b83913fSmrg 73b83913fSmrgtimestamp='2023-01-21' 8c19de146Smrg 9a39bb051Smrg# This file is free software; you can redistribute it and/or modify it 10a39bb051Smrg# under the terms of the GNU General Public License as published by 113b83913fSmrg# the Free Software Foundation, either version 3 of the License, or 12c19de146Smrg# (at your option) any later version. 13c19de146Smrg# 14a39bb051Smrg# This program is distributed in the hope that it will be useful, but 15a39bb051Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16a39bb051Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17a39bb051Smrg# General Public License for more details. 18c19de146Smrg# 19c19de146Smrg# You should have received a copy of the GNU General Public License 20a39bb051Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 219ef7378bSmrg# 22c19de146Smrg# As a special exception to the GNU General Public License, if you 23c19de146Smrg# distribute this file as part of a program that contains a 24c19de146Smrg# configuration script generated by Autoconf, you may include it under 25a39bb051Smrg# the same distribution terms that you use for the rest of that 26a39bb051Smrg# program. This Exception is an additional permission under section 7 27a39bb051Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28c19de146Smrg 299ef7378bSmrg 30a39bb051Smrg# Please send patches to <config-patches@gnu.org>. 31c19de146Smrg# 32c19de146Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33c19de146Smrg# Supply the specified configuration type as an argument. 34c19de146Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35c19de146Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36c19de146Smrg 379ef7378bSmrg# You can get the latest version of this script from: 383b83913fSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 399ef7378bSmrg 40c19de146Smrg# This file is supposed to be the same for all GNU packages 41c19de146Smrg# and recognize all the CPU types, system types and aliases 42c19de146Smrg# that are meaningful with *any* GNU software. 43c19de146Smrg# Each package is responsible for reporting which valid configurations 44c19de146Smrg# it does not support. The user should be able to distinguish 45c19de146Smrg# a failure to support a valid configuration from a meaningless 46c19de146Smrg# configuration. 47c19de146Smrg 48c19de146Smrg# The goal of this file is to map all the various variations of a given 49c19de146Smrg# machine specification into a single specification in the form: 50c19de146Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51c19de146Smrg# or in some cases, the newer four-part form: 52c19de146Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53c19de146Smrg# It is wrong to echo any other type of specification. 54c19de146Smrg 553b83913fSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 563b83913fSmrg# about features and limitations of the classic Bourne shell that were 573b83913fSmrg# superseded or lifted in POSIX. However, this script identifies a wide 583b83913fSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 593b83913fSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 603b83913fSmrg# have a pre-POSIX /bin/sh. 613b83913fSmrg 62c19de146Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63c19de146Smrg 64c19de146Smrgusage="\ 65a39bb051SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66c19de146Smrg 67c19de146SmrgCanonicalize a configuration name. 68c19de146Smrg 69a39bb051SmrgOptions: 70c19de146Smrg -h, --help print this help, then exit 71c19de146Smrg -t, --time-stamp print date of last modification, then exit 72c19de146Smrg -v, --version print version number, then exit 73c19de146Smrg 74c19de146SmrgReport bugs and patches to <config-patches@gnu.org>." 75c19de146Smrg 76c19de146Smrgversion="\ 77c19de146SmrgGNU config.sub ($timestamp) 78c19de146Smrg 793b83913fSmrgCopyright 1992-2023 Free Software Foundation, Inc. 80c19de146Smrg 81c19de146SmrgThis is free software; see the source for copying conditions. There is NO 82c19de146Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83c19de146Smrg 84c19de146Smrghelp=" 85c19de146SmrgTry \`$me --help' for more information." 86c19de146Smrg 87c19de146Smrg# Parse command line 88c19de146Smrgwhile test $# -gt 0 ; do 89c19de146Smrg case $1 in 90c19de146Smrg --time-stamp | --time* | -t ) 919ef7378bSmrg echo "$timestamp" ; exit ;; 92c19de146Smrg --version | -v ) 939ef7378bSmrg echo "$version" ; exit ;; 94c19de146Smrg --help | --h* | -h ) 959ef7378bSmrg echo "$usage"; exit ;; 96c19de146Smrg -- ) # Stop option processing 97c19de146Smrg shift; break ;; 98c19de146Smrg - ) # Use stdin as input. 99c19de146Smrg break ;; 100c19de146Smrg -* ) 1013b83913fSmrg echo "$me: invalid option $1$help" >&2 102c19de146Smrg exit 1 ;; 103c19de146Smrg 104c19de146Smrg *local*) 105c19de146Smrg # First pass through any local machine types. 106a39bb051Smrg echo "$1" 1079ef7378bSmrg exit ;; 108c19de146Smrg 109c19de146Smrg * ) 110c19de146Smrg break ;; 111c19de146Smrg esac 112c19de146Smrgdone 113c19de146Smrg 114c19de146Smrgcase $# in 115c19de146Smrg 0) echo "$me: missing argument$help" >&2 116c19de146Smrg exit 1;; 117c19de146Smrg 1) ;; 118c19de146Smrg *) echo "$me: too many arguments$help" >&2 119c19de146Smrg exit 1;; 120c19de146Smrgesac 121c19de146Smrg 1223b83913fSmrg# Split fields of configuration type 1233b83913fSmrg# shellcheck disable=SC2162 1243b83913fSmrgsaved_IFS=$IFS 1253b83913fSmrgIFS="-" read field1 field2 field3 field4 <<EOF 1263b83913fSmrg$1 1273b83913fSmrgEOF 1283b83913fSmrgIFS=$saved_IFS 129c19de146Smrg 1303b83913fSmrg# Separate into logical components for further validation 1313b83913fSmrgcase $1 in 1323b83913fSmrg *-*-*-*-*) 1333b83913fSmrg echo Invalid configuration \`"$1"\': more than four components >&2 1343b83913fSmrg exit 1 135c19de146Smrg ;; 1363b83913fSmrg *-*-*-*) 1373b83913fSmrg basic_machine=$field1-$field2 1383b83913fSmrg basic_os=$field3-$field4 139c19de146Smrg ;; 1403b83913fSmrg *-*-*) 1413b83913fSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1423b83913fSmrg # parts 1433b83913fSmrg maybe_os=$field2-$field3 1443b83913fSmrg case $maybe_os in 1453b83913fSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 1463b83913fSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1473b83913fSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1483b83913fSmrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 1493b83913fSmrg basic_machine=$field1 1503b83913fSmrg basic_os=$maybe_os 1513b83913fSmrg ;; 1523b83913fSmrg android-linux) 1533b83913fSmrg basic_machine=$field1-unknown 1543b83913fSmrg basic_os=linux-android 1553b83913fSmrg ;; 1563b83913fSmrg *) 1573b83913fSmrg basic_machine=$field1-$field2 1583b83913fSmrg basic_os=$field3 1593b83913fSmrg ;; 1603b83913fSmrg esac 161c19de146Smrg ;; 1623b83913fSmrg *-*) 1633b83913fSmrg # A lone config we happen to match not fitting any pattern 1643b83913fSmrg case $field1-$field2 in 1653b83913fSmrg decstation-3100) 1663b83913fSmrg basic_machine=mips-dec 1673b83913fSmrg basic_os= 1683b83913fSmrg ;; 1693b83913fSmrg *-*) 1703b83913fSmrg # Second component is usually, but not always the OS 1713b83913fSmrg case $field2 in 1723b83913fSmrg # Prevent following clause from handling this valid os 1733b83913fSmrg sun*os*) 1743b83913fSmrg basic_machine=$field1 1753b83913fSmrg basic_os=$field2 1763b83913fSmrg ;; 1773b83913fSmrg zephyr*) 1783b83913fSmrg basic_machine=$field1-unknown 1793b83913fSmrg basic_os=$field2 1803b83913fSmrg ;; 1813b83913fSmrg # Manufacturers 1823b83913fSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1833b83913fSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1843b83913fSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1853b83913fSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1863b83913fSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1873b83913fSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1883b83913fSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1893b83913fSmrg | microblaze* | sim | cisco \ 1903b83913fSmrg | oki | wec | wrs | winbond) 1913b83913fSmrg basic_machine=$field1-$field2 1923b83913fSmrg basic_os= 1933b83913fSmrg ;; 1943b83913fSmrg *) 1953b83913fSmrg basic_machine=$field1 1963b83913fSmrg basic_os=$field2 1973b83913fSmrg ;; 1983b83913fSmrg esac 1993b83913fSmrg ;; 2003b83913fSmrg esac 201c19de146Smrg ;; 2023b83913fSmrg *) 2033b83913fSmrg # Convert single-component short-hands not valid as part of 2043b83913fSmrg # multi-component configurations. 2053b83913fSmrg case $field1 in 2063b83913fSmrg 386bsd) 2073b83913fSmrg basic_machine=i386-pc 2083b83913fSmrg basic_os=bsd 2093b83913fSmrg ;; 2103b83913fSmrg a29khif) 2113b83913fSmrg basic_machine=a29k-amd 2123b83913fSmrg basic_os=udi 2133b83913fSmrg ;; 2143b83913fSmrg adobe68k) 2153b83913fSmrg basic_machine=m68010-adobe 2163b83913fSmrg basic_os=scout 2173b83913fSmrg ;; 2183b83913fSmrg alliant) 2193b83913fSmrg basic_machine=fx80-alliant 2203b83913fSmrg basic_os= 2213b83913fSmrg ;; 2223b83913fSmrg altos | altos3068) 2233b83913fSmrg basic_machine=m68k-altos 2243b83913fSmrg basic_os= 2253b83913fSmrg ;; 2263b83913fSmrg am29k) 2273b83913fSmrg basic_machine=a29k-none 2283b83913fSmrg basic_os=bsd 2293b83913fSmrg ;; 2303b83913fSmrg amdahl) 2313b83913fSmrg basic_machine=580-amdahl 2323b83913fSmrg basic_os=sysv 2333b83913fSmrg ;; 2343b83913fSmrg amiga) 2353b83913fSmrg basic_machine=m68k-unknown 2363b83913fSmrg basic_os= 2373b83913fSmrg ;; 2383b83913fSmrg amigaos | amigados) 2393b83913fSmrg basic_machine=m68k-unknown 2403b83913fSmrg basic_os=amigaos 2413b83913fSmrg ;; 2423b83913fSmrg amigaunix | amix) 2433b83913fSmrg basic_machine=m68k-unknown 2443b83913fSmrg basic_os=sysv4 2453b83913fSmrg ;; 2463b83913fSmrg apollo68) 2473b83913fSmrg basic_machine=m68k-apollo 2483b83913fSmrg basic_os=sysv 2493b83913fSmrg ;; 2503b83913fSmrg apollo68bsd) 2513b83913fSmrg basic_machine=m68k-apollo 2523b83913fSmrg basic_os=bsd 2533b83913fSmrg ;; 2543b83913fSmrg aros) 2553b83913fSmrg basic_machine=i386-pc 2563b83913fSmrg basic_os=aros 2573b83913fSmrg ;; 2583b83913fSmrg aux) 2593b83913fSmrg basic_machine=m68k-apple 2603b83913fSmrg basic_os=aux 2613b83913fSmrg ;; 2623b83913fSmrg balance) 2633b83913fSmrg basic_machine=ns32k-sequent 2643b83913fSmrg basic_os=dynix 2653b83913fSmrg ;; 2663b83913fSmrg blackfin) 2673b83913fSmrg basic_machine=bfin-unknown 2683b83913fSmrg basic_os=linux 2693b83913fSmrg ;; 2703b83913fSmrg cegcc) 2713b83913fSmrg basic_machine=arm-unknown 2723b83913fSmrg basic_os=cegcc 2733b83913fSmrg ;; 2743b83913fSmrg convex-c1) 2753b83913fSmrg basic_machine=c1-convex 2763b83913fSmrg basic_os=bsd 2773b83913fSmrg ;; 2783b83913fSmrg convex-c2) 2793b83913fSmrg basic_machine=c2-convex 2803b83913fSmrg basic_os=bsd 2813b83913fSmrg ;; 2823b83913fSmrg convex-c32) 2833b83913fSmrg basic_machine=c32-convex 2843b83913fSmrg basic_os=bsd 2853b83913fSmrg ;; 2863b83913fSmrg convex-c34) 2873b83913fSmrg basic_machine=c34-convex 2883b83913fSmrg basic_os=bsd 2893b83913fSmrg ;; 2903b83913fSmrg convex-c38) 2913b83913fSmrg basic_machine=c38-convex 2923b83913fSmrg basic_os=bsd 2933b83913fSmrg ;; 2943b83913fSmrg cray) 2953b83913fSmrg basic_machine=j90-cray 2963b83913fSmrg basic_os=unicos 2973b83913fSmrg ;; 2983b83913fSmrg crds | unos) 2993b83913fSmrg basic_machine=m68k-crds 3003b83913fSmrg basic_os= 3013b83913fSmrg ;; 3023b83913fSmrg da30) 3033b83913fSmrg basic_machine=m68k-da30 3043b83913fSmrg basic_os= 3053b83913fSmrg ;; 3063b83913fSmrg decstation | pmax | pmin | dec3100 | decstatn) 3073b83913fSmrg basic_machine=mips-dec 3083b83913fSmrg basic_os= 3093b83913fSmrg ;; 3103b83913fSmrg delta88) 3113b83913fSmrg basic_machine=m88k-motorola 3123b83913fSmrg basic_os=sysv3 3133b83913fSmrg ;; 3143b83913fSmrg dicos) 3153b83913fSmrg basic_machine=i686-pc 3163b83913fSmrg basic_os=dicos 3173b83913fSmrg ;; 3183b83913fSmrg djgpp) 3193b83913fSmrg basic_machine=i586-pc 3203b83913fSmrg basic_os=msdosdjgpp 3213b83913fSmrg ;; 3223b83913fSmrg ebmon29k) 3233b83913fSmrg basic_machine=a29k-amd 3243b83913fSmrg basic_os=ebmon 3253b83913fSmrg ;; 3263b83913fSmrg es1800 | OSE68k | ose68k | ose | OSE) 3273b83913fSmrg basic_machine=m68k-ericsson 3283b83913fSmrg basic_os=ose 3293b83913fSmrg ;; 3303b83913fSmrg gmicro) 3313b83913fSmrg basic_machine=tron-gmicro 3323b83913fSmrg basic_os=sysv 3333b83913fSmrg ;; 3343b83913fSmrg go32) 3353b83913fSmrg basic_machine=i386-pc 3363b83913fSmrg basic_os=go32 3373b83913fSmrg ;; 3383b83913fSmrg h8300hms) 3393b83913fSmrg basic_machine=h8300-hitachi 3403b83913fSmrg basic_os=hms 3413b83913fSmrg ;; 3423b83913fSmrg h8300xray) 3433b83913fSmrg basic_machine=h8300-hitachi 3443b83913fSmrg basic_os=xray 3453b83913fSmrg ;; 3463b83913fSmrg h8500hms) 3473b83913fSmrg basic_machine=h8500-hitachi 3483b83913fSmrg basic_os=hms 3493b83913fSmrg ;; 3503b83913fSmrg harris) 3513b83913fSmrg basic_machine=m88k-harris 3523b83913fSmrg basic_os=sysv3 3533b83913fSmrg ;; 3543b83913fSmrg hp300 | hp300hpux) 3553b83913fSmrg basic_machine=m68k-hp 3563b83913fSmrg basic_os=hpux 3573b83913fSmrg ;; 3583b83913fSmrg hp300bsd) 3593b83913fSmrg basic_machine=m68k-hp 3603b83913fSmrg basic_os=bsd 3613b83913fSmrg ;; 3623b83913fSmrg hppaosf) 3633b83913fSmrg basic_machine=hppa1.1-hp 3643b83913fSmrg basic_os=osf 3653b83913fSmrg ;; 3663b83913fSmrg hppro) 3673b83913fSmrg basic_machine=hppa1.1-hp 3683b83913fSmrg basic_os=proelf 3693b83913fSmrg ;; 3703b83913fSmrg i386mach) 3713b83913fSmrg basic_machine=i386-mach 3723b83913fSmrg basic_os=mach 3733b83913fSmrg ;; 3743b83913fSmrg isi68 | isi) 3753b83913fSmrg basic_machine=m68k-isi 3763b83913fSmrg basic_os=sysv 3773b83913fSmrg ;; 3783b83913fSmrg m68knommu) 3793b83913fSmrg basic_machine=m68k-unknown 3803b83913fSmrg basic_os=linux 3813b83913fSmrg ;; 3823b83913fSmrg magnum | m3230) 3833b83913fSmrg basic_machine=mips-mips 3843b83913fSmrg basic_os=sysv 3853b83913fSmrg ;; 3863b83913fSmrg merlin) 3873b83913fSmrg basic_machine=ns32k-utek 3883b83913fSmrg basic_os=sysv 3893b83913fSmrg ;; 3903b83913fSmrg mingw64) 3913b83913fSmrg basic_machine=x86_64-pc 3923b83913fSmrg basic_os=mingw64 3933b83913fSmrg ;; 3943b83913fSmrg mingw32) 3953b83913fSmrg basic_machine=i686-pc 3963b83913fSmrg basic_os=mingw32 3973b83913fSmrg ;; 3983b83913fSmrg mingw32ce) 3993b83913fSmrg basic_machine=arm-unknown 4003b83913fSmrg basic_os=mingw32ce 4013b83913fSmrg ;; 4023b83913fSmrg monitor) 4033b83913fSmrg basic_machine=m68k-rom68k 4043b83913fSmrg basic_os=coff 4053b83913fSmrg ;; 4063b83913fSmrg morphos) 4073b83913fSmrg basic_machine=powerpc-unknown 4083b83913fSmrg basic_os=morphos 4093b83913fSmrg ;; 4103b83913fSmrg moxiebox) 4113b83913fSmrg basic_machine=moxie-unknown 4123b83913fSmrg basic_os=moxiebox 4133b83913fSmrg ;; 4143b83913fSmrg msdos) 4153b83913fSmrg basic_machine=i386-pc 4163b83913fSmrg basic_os=msdos 4173b83913fSmrg ;; 4183b83913fSmrg msys) 4193b83913fSmrg basic_machine=i686-pc 4203b83913fSmrg basic_os=msys 4213b83913fSmrg ;; 4223b83913fSmrg mvs) 4233b83913fSmrg basic_machine=i370-ibm 4243b83913fSmrg basic_os=mvs 4253b83913fSmrg ;; 4263b83913fSmrg nacl) 4273b83913fSmrg basic_machine=le32-unknown 4283b83913fSmrg basic_os=nacl 4293b83913fSmrg ;; 4303b83913fSmrg ncr3000) 4313b83913fSmrg basic_machine=i486-ncr 4323b83913fSmrg basic_os=sysv4 4333b83913fSmrg ;; 4343b83913fSmrg netbsd386) 4353b83913fSmrg basic_machine=i386-pc 4363b83913fSmrg basic_os=netbsd 4373b83913fSmrg ;; 4383b83913fSmrg netwinder) 4393b83913fSmrg basic_machine=armv4l-rebel 4403b83913fSmrg basic_os=linux 4413b83913fSmrg ;; 4423b83913fSmrg news | news700 | news800 | news900) 4433b83913fSmrg basic_machine=m68k-sony 4443b83913fSmrg basic_os=newsos 4453b83913fSmrg ;; 4463b83913fSmrg news1000) 4473b83913fSmrg basic_machine=m68030-sony 4483b83913fSmrg basic_os=newsos 4493b83913fSmrg ;; 4503b83913fSmrg necv70) 4513b83913fSmrg basic_machine=v70-nec 4523b83913fSmrg basic_os=sysv 4533b83913fSmrg ;; 4543b83913fSmrg nh3000) 4553b83913fSmrg basic_machine=m68k-harris 4563b83913fSmrg basic_os=cxux 4573b83913fSmrg ;; 4583b83913fSmrg nh[45]000) 4593b83913fSmrg basic_machine=m88k-harris 4603b83913fSmrg basic_os=cxux 4613b83913fSmrg ;; 4623b83913fSmrg nindy960) 4633b83913fSmrg basic_machine=i960-intel 4643b83913fSmrg basic_os=nindy 4653b83913fSmrg ;; 4663b83913fSmrg mon960) 4673b83913fSmrg basic_machine=i960-intel 4683b83913fSmrg basic_os=mon960 4693b83913fSmrg ;; 4703b83913fSmrg nonstopux) 4713b83913fSmrg basic_machine=mips-compaq 4723b83913fSmrg basic_os=nonstopux 4733b83913fSmrg ;; 4743b83913fSmrg os400) 4753b83913fSmrg basic_machine=powerpc-ibm 4763b83913fSmrg basic_os=os400 4773b83913fSmrg ;; 4783b83913fSmrg OSE68000 | ose68000) 4793b83913fSmrg basic_machine=m68000-ericsson 4803b83913fSmrg basic_os=ose 4813b83913fSmrg ;; 4823b83913fSmrg os68k) 4833b83913fSmrg basic_machine=m68k-none 4843b83913fSmrg basic_os=os68k 4853b83913fSmrg ;; 4863b83913fSmrg paragon) 4873b83913fSmrg basic_machine=i860-intel 4883b83913fSmrg basic_os=osf 4893b83913fSmrg ;; 4903b83913fSmrg parisc) 4913b83913fSmrg basic_machine=hppa-unknown 4923b83913fSmrg basic_os=linux 4933b83913fSmrg ;; 4943b83913fSmrg psp) 4953b83913fSmrg basic_machine=mipsallegrexel-sony 4963b83913fSmrg basic_os=psp 4973b83913fSmrg ;; 4983b83913fSmrg pw32) 4993b83913fSmrg basic_machine=i586-unknown 5003b83913fSmrg basic_os=pw32 5013b83913fSmrg ;; 5023b83913fSmrg rdos | rdos64) 5033b83913fSmrg basic_machine=x86_64-pc 5043b83913fSmrg basic_os=rdos 5053b83913fSmrg ;; 5063b83913fSmrg rdos32) 5073b83913fSmrg basic_machine=i386-pc 5083b83913fSmrg basic_os=rdos 5093b83913fSmrg ;; 5103b83913fSmrg rom68k) 5113b83913fSmrg basic_machine=m68k-rom68k 5123b83913fSmrg basic_os=coff 5133b83913fSmrg ;; 5143b83913fSmrg sa29200) 5153b83913fSmrg basic_machine=a29k-amd 5163b83913fSmrg basic_os=udi 5173b83913fSmrg ;; 5183b83913fSmrg sei) 5193b83913fSmrg basic_machine=mips-sei 5203b83913fSmrg basic_os=seiux 5213b83913fSmrg ;; 5223b83913fSmrg sequent) 5233b83913fSmrg basic_machine=i386-sequent 5243b83913fSmrg basic_os= 5253b83913fSmrg ;; 5263b83913fSmrg sps7) 5273b83913fSmrg basic_machine=m68k-bull 5283b83913fSmrg basic_os=sysv2 5293b83913fSmrg ;; 5303b83913fSmrg st2000) 5313b83913fSmrg basic_machine=m68k-tandem 5323b83913fSmrg basic_os= 5333b83913fSmrg ;; 5343b83913fSmrg stratus) 5353b83913fSmrg basic_machine=i860-stratus 5363b83913fSmrg basic_os=sysv4 5373b83913fSmrg ;; 5383b83913fSmrg sun2) 5393b83913fSmrg basic_machine=m68000-sun 5403b83913fSmrg basic_os= 5413b83913fSmrg ;; 5423b83913fSmrg sun2os3) 5433b83913fSmrg basic_machine=m68000-sun 5443b83913fSmrg basic_os=sunos3 5453b83913fSmrg ;; 5463b83913fSmrg sun2os4) 5473b83913fSmrg basic_machine=m68000-sun 5483b83913fSmrg basic_os=sunos4 5493b83913fSmrg ;; 5503b83913fSmrg sun3) 5513b83913fSmrg basic_machine=m68k-sun 5523b83913fSmrg basic_os= 5533b83913fSmrg ;; 5543b83913fSmrg sun3os3) 5553b83913fSmrg basic_machine=m68k-sun 5563b83913fSmrg basic_os=sunos3 5573b83913fSmrg ;; 5583b83913fSmrg sun3os4) 5593b83913fSmrg basic_machine=m68k-sun 5603b83913fSmrg basic_os=sunos4 5613b83913fSmrg ;; 5623b83913fSmrg sun4) 5633b83913fSmrg basic_machine=sparc-sun 5643b83913fSmrg basic_os= 5653b83913fSmrg ;; 5663b83913fSmrg sun4os3) 5673b83913fSmrg basic_machine=sparc-sun 5683b83913fSmrg basic_os=sunos3 5693b83913fSmrg ;; 5703b83913fSmrg sun4os4) 5713b83913fSmrg basic_machine=sparc-sun 5723b83913fSmrg basic_os=sunos4 5733b83913fSmrg ;; 5743b83913fSmrg sun4sol2) 5753b83913fSmrg basic_machine=sparc-sun 5763b83913fSmrg basic_os=solaris2 5773b83913fSmrg ;; 5783b83913fSmrg sun386 | sun386i | roadrunner) 5793b83913fSmrg basic_machine=i386-sun 5803b83913fSmrg basic_os= 5813b83913fSmrg ;; 5823b83913fSmrg sv1) 5833b83913fSmrg basic_machine=sv1-cray 5843b83913fSmrg basic_os=unicos 5853b83913fSmrg ;; 5863b83913fSmrg symmetry) 5873b83913fSmrg basic_machine=i386-sequent 5883b83913fSmrg basic_os=dynix 5893b83913fSmrg ;; 5903b83913fSmrg t3e) 5913b83913fSmrg basic_machine=alphaev5-cray 5923b83913fSmrg basic_os=unicos 5933b83913fSmrg ;; 5943b83913fSmrg t90) 5953b83913fSmrg basic_machine=t90-cray 5963b83913fSmrg basic_os=unicos 5973b83913fSmrg ;; 5983b83913fSmrg toad1) 5993b83913fSmrg basic_machine=pdp10-xkl 6003b83913fSmrg basic_os=tops20 6013b83913fSmrg ;; 6023b83913fSmrg tpf) 6033b83913fSmrg basic_machine=s390x-ibm 6043b83913fSmrg basic_os=tpf 6053b83913fSmrg ;; 6063b83913fSmrg udi29k) 6073b83913fSmrg basic_machine=a29k-amd 6083b83913fSmrg basic_os=udi 6093b83913fSmrg ;; 6103b83913fSmrg ultra3) 6113b83913fSmrg basic_machine=a29k-nyu 6123b83913fSmrg basic_os=sym1 6133b83913fSmrg ;; 6143b83913fSmrg v810 | necv810) 6153b83913fSmrg basic_machine=v810-nec 6163b83913fSmrg basic_os=none 6173b83913fSmrg ;; 6183b83913fSmrg vaxv) 6193b83913fSmrg basic_machine=vax-dec 6203b83913fSmrg basic_os=sysv 6213b83913fSmrg ;; 6223b83913fSmrg vms) 6233b83913fSmrg basic_machine=vax-dec 6243b83913fSmrg basic_os=vms 6253b83913fSmrg ;; 6263b83913fSmrg vsta) 6273b83913fSmrg basic_machine=i386-pc 6283b83913fSmrg basic_os=vsta 6293b83913fSmrg ;; 6303b83913fSmrg vxworks960) 6313b83913fSmrg basic_machine=i960-wrs 6323b83913fSmrg basic_os=vxworks 6333b83913fSmrg ;; 6343b83913fSmrg vxworks68) 6353b83913fSmrg basic_machine=m68k-wrs 6363b83913fSmrg basic_os=vxworks 6373b83913fSmrg ;; 6383b83913fSmrg vxworks29k) 6393b83913fSmrg basic_machine=a29k-wrs 6403b83913fSmrg basic_os=vxworks 6413b83913fSmrg ;; 6423b83913fSmrg xbox) 6433b83913fSmrg basic_machine=i686-pc 6443b83913fSmrg basic_os=mingw32 6453b83913fSmrg ;; 6463b83913fSmrg ymp) 6473b83913fSmrg basic_machine=ymp-cray 6483b83913fSmrg basic_os=unicos 6493b83913fSmrg ;; 6503b83913fSmrg *) 6513b83913fSmrg basic_machine=$1 6523b83913fSmrg basic_os= 6533b83913fSmrg ;; 6543b83913fSmrg esac 655c19de146Smrg ;; 656c19de146Smrgesac 657c19de146Smrg 6583b83913fSmrg# Decode 1-component or ad-hoc basic machines 659c19de146Smrgcase $basic_machine in 6603b83913fSmrg # Here we handle the default manufacturer of certain CPU types. It is in 6613b83913fSmrg # some cases the only manufacturer, in others, it is the most popular. 6623b83913fSmrg w89k) 6633b83913fSmrg cpu=hppa1.1 6643b83913fSmrg vendor=winbond 665c19de146Smrg ;; 6663b83913fSmrg op50n) 6673b83913fSmrg cpu=hppa1.1 6683b83913fSmrg vendor=oki 669c19de146Smrg ;; 6703b83913fSmrg op60c) 6713b83913fSmrg cpu=hppa1.1 6723b83913fSmrg vendor=oki 6739ef7378bSmrg ;; 6743b83913fSmrg ibm*) 6753b83913fSmrg cpu=i370 6763b83913fSmrg vendor=ibm 677a39bb051Smrg ;; 6783b83913fSmrg orion105) 6793b83913fSmrg cpu=clipper 6803b83913fSmrg vendor=highlevel 681a39bb051Smrg ;; 6823b83913fSmrg mac | mpw | mac-mpw) 6833b83913fSmrg cpu=m68k 6843b83913fSmrg vendor=apple 685a39bb051Smrg ;; 6863b83913fSmrg pmac | pmac-mpw) 6873b83913fSmrg cpu=powerpc 6883b83913fSmrg vendor=apple 689a39bb051Smrg ;; 690a39bb051Smrg 691c19de146Smrg # Recognize the various machine names and aliases which stand 692c19de146Smrg # for a CPU type and a company and sometimes even an OS. 693c19de146Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6943b83913fSmrg cpu=m68000 6953b83913fSmrg vendor=att 696c19de146Smrg ;; 697c19de146Smrg 3b*) 6983b83913fSmrg cpu=we32k 6993b83913fSmrg vendor=att 7009ef7378bSmrg ;; 7019ef7378bSmrg bluegene*) 7023b83913fSmrg cpu=powerpc 7033b83913fSmrg vendor=ibm 7043b83913fSmrg basic_os=cnk 705c19de146Smrg ;; 706c19de146Smrg decsystem10* | dec10*) 7073b83913fSmrg cpu=pdp10 7083b83913fSmrg vendor=dec 7093b83913fSmrg basic_os=tops10 710c19de146Smrg ;; 711c19de146Smrg decsystem20* | dec20*) 7123b83913fSmrg cpu=pdp10 7133b83913fSmrg vendor=dec 7143b83913fSmrg basic_os=tops20 715c19de146Smrg ;; 716c19de146Smrg delta | 3300 | motorola-3300 | motorola-delta \ 717c19de146Smrg | 3300-motorola | delta-motorola) 7183b83913fSmrg cpu=m68k 7193b83913fSmrg vendor=motorola 720c19de146Smrg ;; 721a39bb051Smrg dpx2*) 7223b83913fSmrg cpu=m68k 7233b83913fSmrg vendor=bull 7243b83913fSmrg basic_os=sysv3 725c19de146Smrg ;; 726c19de146Smrg encore | umax | mmax) 7273b83913fSmrg cpu=ns32k 7283b83913fSmrg vendor=encore 729c19de146Smrg ;; 7303b83913fSmrg elxsi) 7313b83913fSmrg cpu=elxsi 7323b83913fSmrg vendor=elxsi 7333b83913fSmrg basic_os=${basic_os:-bsd} 734c19de146Smrg ;; 735c19de146Smrg fx2800) 7363b83913fSmrg cpu=i860 7373b83913fSmrg vendor=alliant 738c19de146Smrg ;; 739c19de146Smrg genix) 7403b83913fSmrg cpu=ns32k 7413b83913fSmrg vendor=ns 742c19de146Smrg ;; 743c19de146Smrg h3050r* | hiux*) 7443b83913fSmrg cpu=hppa1.1 7453b83913fSmrg vendor=hitachi 7463b83913fSmrg basic_os=hiuxwe2 747c19de146Smrg ;; 748c19de146Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7493b83913fSmrg cpu=hppa1.0 7503b83913fSmrg vendor=hp 751c19de146Smrg ;; 752c19de146Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7533b83913fSmrg cpu=m68000 7543b83913fSmrg vendor=hp 755c19de146Smrg ;; 756c19de146Smrg hp9k3[2-9][0-9]) 7573b83913fSmrg cpu=m68k 7583b83913fSmrg vendor=hp 759c19de146Smrg ;; 760c19de146Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7613b83913fSmrg cpu=hppa1.0 7623b83913fSmrg vendor=hp 763c19de146Smrg ;; 764c19de146Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7653b83913fSmrg cpu=hppa1.1 7663b83913fSmrg vendor=hp 767c19de146Smrg ;; 768c19de146Smrg hp9k78[0-9] | hp78[0-9]) 769c19de146Smrg # FIXME: really hppa2.0-hp 7703b83913fSmrg cpu=hppa1.1 7713b83913fSmrg vendor=hp 772c19de146Smrg ;; 773c19de146Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774c19de146Smrg # FIXME: really hppa2.0-hp 7753b83913fSmrg cpu=hppa1.1 7763b83913fSmrg vendor=hp 777c19de146Smrg ;; 778c19de146Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7793b83913fSmrg cpu=hppa1.1 7803b83913fSmrg vendor=hp 781c19de146Smrg ;; 782c19de146Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7833b83913fSmrg cpu=hppa1.0 7843b83913fSmrg vendor=hp 785c19de146Smrg ;; 786c19de146Smrg i*86v32) 7873b83913fSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7883b83913fSmrg vendor=pc 7893b83913fSmrg basic_os=sysv32 790c19de146Smrg ;; 791c19de146Smrg i*86v4*) 7923b83913fSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7933b83913fSmrg vendor=pc 7943b83913fSmrg basic_os=sysv4 795c19de146Smrg ;; 796c19de146Smrg i*86v) 7973b83913fSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7983b83913fSmrg vendor=pc 7993b83913fSmrg basic_os=sysv 800c19de146Smrg ;; 801c19de146Smrg i*86sol2) 8023b83913fSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8033b83913fSmrg vendor=pc 8043b83913fSmrg basic_os=solaris2 805c19de146Smrg ;; 8063b83913fSmrg j90 | j90-cray) 8073b83913fSmrg cpu=j90 8083b83913fSmrg vendor=cray 8093b83913fSmrg basic_os=${basic_os:-unicos} 810c19de146Smrg ;; 811c19de146Smrg iris | iris4d) 8123b83913fSmrg cpu=mips 8133b83913fSmrg vendor=sgi 8143b83913fSmrg case $basic_os in 8153b83913fSmrg irix*) 816c19de146Smrg ;; 817c19de146Smrg *) 8183b83913fSmrg basic_os=irix4 819c19de146Smrg ;; 820c19de146Smrg esac 821c19de146Smrg ;; 822c19de146Smrg miniframe) 8233b83913fSmrg cpu=m68000 8243b83913fSmrg vendor=convergent 825c19de146Smrg ;; 8263b83913fSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8273b83913fSmrg cpu=m68k 8283b83913fSmrg vendor=atari 8293b83913fSmrg basic_os=mint 830c19de146Smrg ;; 831c19de146Smrg news-3600 | risc-news) 8323b83913fSmrg cpu=mips 8333b83913fSmrg vendor=sony 8343b83913fSmrg basic_os=newsos 835c19de146Smrg ;; 836a39bb051Smrg next | m*-next) 8373b83913fSmrg cpu=m68k 8383b83913fSmrg vendor=next 8393b83913fSmrg case $basic_os in 8403b83913fSmrg openstep*) 8413b83913fSmrg ;; 8423b83913fSmrg nextstep*) 843c19de146Smrg ;; 8443b83913fSmrg ns2*) 8453b83913fSmrg basic_os=nextstep2 846c19de146Smrg ;; 847c19de146Smrg *) 8483b83913fSmrg basic_os=nextstep3 849c19de146Smrg ;; 850c19de146Smrg esac 851c19de146Smrg ;; 852c19de146Smrg np1) 8533b83913fSmrg cpu=np1 8543b83913fSmrg vendor=gould 855a39bb051Smrg ;; 856c19de146Smrg op50n-* | op60c-*) 8573b83913fSmrg cpu=hppa1.1 8583b83913fSmrg vendor=oki 8593b83913fSmrg basic_os=proelf 860c19de146Smrg ;; 861c19de146Smrg pa-hitachi) 8623b83913fSmrg cpu=hppa1.1 8633b83913fSmrg vendor=hitachi 8643b83913fSmrg basic_os=hiuxwe2 8659ef7378bSmrg ;; 866c19de146Smrg pbd) 8673b83913fSmrg cpu=sparc 8683b83913fSmrg vendor=tti 869c19de146Smrg ;; 870c19de146Smrg pbb) 8713b83913fSmrg cpu=m68k 8723b83913fSmrg vendor=tti 873c19de146Smrg ;; 8743b83913fSmrg pc532) 8753b83913fSmrg cpu=ns32k 8763b83913fSmrg vendor=pc532 877c19de146Smrg ;; 878c19de146Smrg pn) 8793b83913fSmrg cpu=pn 8803b83913fSmrg vendor=gould 881c19de146Smrg ;; 8823b83913fSmrg power) 8833b83913fSmrg cpu=power 8843b83913fSmrg vendor=ibm 885c19de146Smrg ;; 8863b83913fSmrg ps2) 8873b83913fSmrg cpu=i386 8883b83913fSmrg vendor=ibm 889c19de146Smrg ;; 8903b83913fSmrg rm[46]00) 8913b83913fSmrg cpu=mips 8923b83913fSmrg vendor=siemens 893c19de146Smrg ;; 8943b83913fSmrg rtpc | rtpc-*) 8953b83913fSmrg cpu=romp 8963b83913fSmrg vendor=ibm 897c19de146Smrg ;; 8983b83913fSmrg sde) 8993b83913fSmrg cpu=mipsisa32 9003b83913fSmrg vendor=sde 9013b83913fSmrg basic_os=${basic_os:-elf} 902c19de146Smrg ;; 9033b83913fSmrg simso-wrs) 9043b83913fSmrg cpu=sparclite 9053b83913fSmrg vendor=wrs 9063b83913fSmrg basic_os=vxworks 907c19de146Smrg ;; 9083b83913fSmrg tower | tower-32) 9093b83913fSmrg cpu=m68k 9103b83913fSmrg vendor=ncr 911c19de146Smrg ;; 9123b83913fSmrg vpp*|vx|vx-*) 9133b83913fSmrg cpu=f301 9143b83913fSmrg vendor=fujitsu 915c19de146Smrg ;; 9163b83913fSmrg w65) 9173b83913fSmrg cpu=w65 9183b83913fSmrg vendor=wdc 919a39bb051Smrg ;; 9203b83913fSmrg w89k-*) 9213b83913fSmrg cpu=hppa1.1 9223b83913fSmrg vendor=winbond 9233b83913fSmrg basic_os=proelf 9249ef7378bSmrg ;; 9253b83913fSmrg none) 9263b83913fSmrg cpu=none 9273b83913fSmrg vendor=none 928c19de146Smrg ;; 9293b83913fSmrg leon|leon[3-9]) 9303b83913fSmrg cpu=sparc 9313b83913fSmrg vendor=$basic_machine 932c19de146Smrg ;; 9333b83913fSmrg leon-*|leon[3-9]-*) 9343b83913fSmrg cpu=sparc 9353b83913fSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936c19de146Smrg ;; 9373b83913fSmrg 9383b83913fSmrg *-*) 9393b83913fSmrg # shellcheck disable=SC2162 9403b83913fSmrg saved_IFS=$IFS 9413b83913fSmrg IFS="-" read cpu vendor <<EOF 9423b83913fSmrg$basic_machine 9433b83913fSmrgEOF 9443b83913fSmrg IFS=$saved_IFS 9459ef7378bSmrg ;; 9463b83913fSmrg # We use `pc' rather than `unknown' 9473b83913fSmrg # because (1) that's what they normally are, and 9483b83913fSmrg # (2) the word "unknown" tends to confuse beginning users. 9493b83913fSmrg i*86 | x86_64) 9503b83913fSmrg cpu=$basic_machine 9513b83913fSmrg vendor=pc 9529ef7378bSmrg ;; 9533b83913fSmrg # These rules are duplicated from below for sake of the special case above; 9543b83913fSmrg # i.e. things that normalized to x86 arches should also default to "pc" 9553b83913fSmrg pc98) 9563b83913fSmrg cpu=i386 9573b83913fSmrg vendor=pc 958c19de146Smrg ;; 9593b83913fSmrg x64 | amd64) 9603b83913fSmrg cpu=x86_64 9613b83913fSmrg vendor=pc 962c19de146Smrg ;; 9633b83913fSmrg # Recognize the basic CPU types without company name. 9643b83913fSmrg *) 9653b83913fSmrg cpu=$basic_machine 9663b83913fSmrg vendor=unknown 967c19de146Smrg ;; 9683b83913fSmrgesac 9693b83913fSmrg 9703b83913fSmrgunset -v basic_machine 9713b83913fSmrg 9723b83913fSmrg# Decode basic machines in the full and proper CPU-Company form. 9733b83913fSmrgcase $cpu-$vendor in 9743b83913fSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9753b83913fSmrg # some cases the only manufacturer, in others, it is the most popular. 9763b83913fSmrg craynv-unknown) 9773b83913fSmrg vendor=cray 9783b83913fSmrg basic_os=${basic_os:-unicosmp} 9799ef7378bSmrg ;; 9803b83913fSmrg c90-unknown | c90-cray) 9813b83913fSmrg vendor=cray 9823b83913fSmrg basic_os=${Basic_os:-unicos} 983c19de146Smrg ;; 9843b83913fSmrg fx80-unknown) 9853b83913fSmrg vendor=alliant 986c19de146Smrg ;; 9873b83913fSmrg romp-unknown) 9883b83913fSmrg vendor=ibm 9899ef7378bSmrg ;; 9903b83913fSmrg mmix-unknown) 9913b83913fSmrg vendor=knuth 992c19de146Smrg ;; 9933b83913fSmrg microblaze-unknown | microblazeel-unknown) 9943b83913fSmrg vendor=xilinx 995c19de146Smrg ;; 9963b83913fSmrg rs6000-unknown) 9973b83913fSmrg vendor=ibm 998c19de146Smrg ;; 9993b83913fSmrg vax-unknown) 10003b83913fSmrg vendor=dec 1001c19de146Smrg ;; 10023b83913fSmrg pdp11-unknown) 10033b83913fSmrg vendor=dec 1004c19de146Smrg ;; 10053b83913fSmrg we32k-unknown) 10063b83913fSmrg vendor=att 1007a39bb051Smrg ;; 10083b83913fSmrg cydra-unknown) 10093b83913fSmrg vendor=cydrome 1010c19de146Smrg ;; 10113b83913fSmrg i370-ibm*) 10123b83913fSmrg vendor=ibm 1013c19de146Smrg ;; 10143b83913fSmrg orion-unknown) 10153b83913fSmrg vendor=highlevel 1016c19de146Smrg ;; 10173b83913fSmrg xps-unknown | xps100-unknown) 10183b83913fSmrg cpu=xps100 10193b83913fSmrg vendor=honeywell 1020c19de146Smrg ;; 10213b83913fSmrg 10223b83913fSmrg # Here we normalize CPU types with a missing or matching vendor 10233b83913fSmrg armh-unknown | armh-alt) 10243b83913fSmrg cpu=armv7l 10253b83913fSmrg vendor=alt 10263b83913fSmrg basic_os=${basic_os:-linux-gnueabihf} 1027c19de146Smrg ;; 10283b83913fSmrg dpx20-unknown | dpx20-bull) 10293b83913fSmrg cpu=rs6000 10303b83913fSmrg vendor=bull 10313b83913fSmrg basic_os=${basic_os:-bosx} 1032c19de146Smrg ;; 10333b83913fSmrg 10343b83913fSmrg # Here we normalize CPU types irrespective of the vendor 10353b83913fSmrg amd64-*) 10363b83913fSmrg cpu=x86_64 1037c19de146Smrg ;; 10383b83913fSmrg blackfin-*) 10393b83913fSmrg cpu=bfin 10403b83913fSmrg basic_os=linux 1041c19de146Smrg ;; 10423b83913fSmrg c54x-*) 10433b83913fSmrg cpu=tic54x 1044c19de146Smrg ;; 10453b83913fSmrg c55x-*) 10463b83913fSmrg cpu=tic55x 1047c19de146Smrg ;; 10483b83913fSmrg c6x-*) 10493b83913fSmrg cpu=tic6x 1050c19de146Smrg ;; 10513b83913fSmrg e500v[12]-*) 10523b83913fSmrg cpu=powerpc 10533b83913fSmrg basic_os=${basic_os}"spe" 1054c19de146Smrg ;; 10553b83913fSmrg mips3*-*) 10563b83913fSmrg cpu=mips64 1057c19de146Smrg ;; 10583b83913fSmrg ms1-*) 10593b83913fSmrg cpu=mt 1060c19de146Smrg ;; 10613b83913fSmrg m68knommu-*) 10623b83913fSmrg cpu=m68k 10633b83913fSmrg basic_os=linux 1064c19de146Smrg ;; 10653b83913fSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10663b83913fSmrg cpu=s12z 10679ef7378bSmrg ;; 10683b83913fSmrg openrisc-*) 10693b83913fSmrg cpu=or32 1070c19de146Smrg ;; 10713b83913fSmrg parisc-*) 10723b83913fSmrg cpu=hppa 10733b83913fSmrg basic_os=linux 1074c19de146Smrg ;; 10753b83913fSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10763b83913fSmrg cpu=i586 1077c19de146Smrg ;; 10783b83913fSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 10793b83913fSmrg cpu=i686 1080c19de146Smrg ;; 10813b83913fSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10823b83913fSmrg cpu=i686 10839ef7378bSmrg ;; 10843b83913fSmrg pentium4-*) 10853b83913fSmrg cpu=i786 1086c19de146Smrg ;; 10873b83913fSmrg pc98-*) 10883b83913fSmrg cpu=i386 1089c19de146Smrg ;; 10903b83913fSmrg ppc-* | ppcbe-*) 10913b83913fSmrg cpu=powerpc 1092c19de146Smrg ;; 10933b83913fSmrg ppcle-* | powerpclittle-*) 10943b83913fSmrg cpu=powerpcle 1095c19de146Smrg ;; 10963b83913fSmrg ppc64-*) 10973b83913fSmrg cpu=powerpc64 1098c19de146Smrg ;; 10993b83913fSmrg ppc64le-* | powerpc64little-*) 11003b83913fSmrg cpu=powerpc64le 1101c19de146Smrg ;; 11023b83913fSmrg sb1-*) 11033b83913fSmrg cpu=mipsisa64sb1 1104c19de146Smrg ;; 11053b83913fSmrg sb1el-*) 11063b83913fSmrg cpu=mipsisa64sb1el 1107c19de146Smrg ;; 11083b83913fSmrg sh5e[lb]-*) 11093b83913fSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1110c19de146Smrg ;; 11113b83913fSmrg spur-*) 11123b83913fSmrg cpu=spur 1113c19de146Smrg ;; 11143b83913fSmrg strongarm-* | thumb-*) 11153b83913fSmrg cpu=arm 1116c19de146Smrg ;; 11173b83913fSmrg tx39-*) 11183b83913fSmrg cpu=mipstx39 1119a39bb051Smrg ;; 11203b83913fSmrg tx39el-*) 11213b83913fSmrg cpu=mipstx39el 11229ef7378bSmrg ;; 11233b83913fSmrg x64-*) 11243b83913fSmrg cpu=x86_64 1125c19de146Smrg ;; 1126a39bb051Smrg xscale-* | xscalee[bl]-*) 11273b83913fSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1128c19de146Smrg ;; 11293b83913fSmrg arm64-* | aarch64le-*) 11303b83913fSmrg cpu=aarch64 1131c19de146Smrg ;; 1132c19de146Smrg 11333b83913fSmrg # Recognize the canonical CPU Types that limit and/or modify the 11343b83913fSmrg # company names they are paired with. 11353b83913fSmrg cr16-*) 11363b83913fSmrg basic_os=${basic_os:-elf} 11379ef7378bSmrg ;; 11383b83913fSmrg crisv32-* | etraxfs*-*) 11393b83913fSmrg cpu=crisv32 11403b83913fSmrg vendor=axis 1141c19de146Smrg ;; 11423b83913fSmrg cris-* | etrax*-*) 11433b83913fSmrg cpu=cris 11443b83913fSmrg vendor=axis 1145c19de146Smrg ;; 11463b83913fSmrg crx-*) 11473b83913fSmrg basic_os=${basic_os:-elf} 1148c19de146Smrg ;; 11493b83913fSmrg neo-tandem) 11503b83913fSmrg cpu=neo 11513b83913fSmrg vendor=tandem 1152c19de146Smrg ;; 11533b83913fSmrg nse-tandem) 11543b83913fSmrg cpu=nse 11553b83913fSmrg vendor=tandem 1156c19de146Smrg ;; 11573b83913fSmrg nsr-tandem) 11583b83913fSmrg cpu=nsr 11593b83913fSmrg vendor=tandem 1160c19de146Smrg ;; 11613b83913fSmrg nsv-tandem) 11623b83913fSmrg cpu=nsv 11633b83913fSmrg vendor=tandem 1164c19de146Smrg ;; 11653b83913fSmrg nsx-tandem) 11663b83913fSmrg cpu=nsx 11673b83913fSmrg vendor=tandem 1168c19de146Smrg ;; 11693b83913fSmrg mipsallegrexel-sony) 11703b83913fSmrg cpu=mipsallegrexel 11713b83913fSmrg vendor=sony 1172c19de146Smrg ;; 11733b83913fSmrg tile*-*) 11743b83913fSmrg basic_os=${basic_os:-linux-gnu} 1175c19de146Smrg ;; 11763b83913fSmrg 1177c19de146Smrg *) 11783b83913fSmrg # Recognize the canonical CPU types that are allowed with any 11793b83913fSmrg # company name. 11803b83913fSmrg case $cpu in 11813b83913fSmrg 1750a | 580 \ 11823b83913fSmrg | a29k \ 11833b83913fSmrg | aarch64 | aarch64_be \ 11843b83913fSmrg | abacus \ 11853b83913fSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11863b83913fSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11873b83913fSmrg | alphapca5[67] | alpha64pca5[67] \ 11883b83913fSmrg | am33_2.0 \ 11893b83913fSmrg | amdgcn \ 11903b83913fSmrg | arc | arceb | arc32 | arc64 \ 11913b83913fSmrg | arm | arm[lb]e | arme[lb] | armv* \ 11923b83913fSmrg | avr | avr32 \ 11933b83913fSmrg | asmjs \ 11943b83913fSmrg | ba \ 11953b83913fSmrg | be32 | be64 \ 11963b83913fSmrg | bfin | bpf | bs2000 \ 11973b83913fSmrg | c[123]* | c30 | [cjt]90 | c4x \ 11983b83913fSmrg | c8051 | clipper | craynv | csky | cydra \ 11993b83913fSmrg | d10v | d30v | dlx | dsp16xx \ 12003b83913fSmrg | e2k | elxsi | epiphany \ 12013b83913fSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 12023b83913fSmrg | h8300 | h8500 \ 12033b83913fSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 12043b83913fSmrg | hexagon \ 12053b83913fSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12063b83913fSmrg | ip2k | iq2000 \ 12073b83913fSmrg | k1om \ 12083b83913fSmrg | le32 | le64 \ 12093b83913fSmrg | lm32 \ 12103b83913fSmrg | loongarch32 | loongarch64 \ 12113b83913fSmrg | m32c | m32r | m32rle \ 12123b83913fSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12133b83913fSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12143b83913fSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12153b83913fSmrg | microblaze | microblazeel \ 12163b83913fSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12173b83913fSmrg | mips16 \ 12183b83913fSmrg | mips64 | mips64eb | mips64el \ 12193b83913fSmrg | mips64octeon | mips64octeonel \ 12203b83913fSmrg | mips64orion | mips64orionel \ 12213b83913fSmrg | mips64r5900 | mips64r5900el \ 12223b83913fSmrg | mips64vr | mips64vrel \ 12233b83913fSmrg | mips64vr4100 | mips64vr4100el \ 12243b83913fSmrg | mips64vr4300 | mips64vr4300el \ 12253b83913fSmrg | mips64vr5000 | mips64vr5000el \ 12263b83913fSmrg | mips64vr5900 | mips64vr5900el \ 12273b83913fSmrg | mipsisa32 | mipsisa32el \ 12283b83913fSmrg | mipsisa32r2 | mipsisa32r2el \ 12293b83913fSmrg | mipsisa32r3 | mipsisa32r3el \ 12303b83913fSmrg | mipsisa32r5 | mipsisa32r5el \ 12313b83913fSmrg | mipsisa32r6 | mipsisa32r6el \ 12323b83913fSmrg | mipsisa64 | mipsisa64el \ 12333b83913fSmrg | mipsisa64r2 | mipsisa64r2el \ 12343b83913fSmrg | mipsisa64r3 | mipsisa64r3el \ 12353b83913fSmrg | mipsisa64r5 | mipsisa64r5el \ 12363b83913fSmrg | mipsisa64r6 | mipsisa64r6el \ 12373b83913fSmrg | mipsisa64sb1 | mipsisa64sb1el \ 12383b83913fSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 12393b83913fSmrg | mipsr5900 | mipsr5900el \ 12403b83913fSmrg | mipstx39 | mipstx39el \ 12413b83913fSmrg | mmix \ 12423b83913fSmrg | mn10200 | mn10300 \ 12433b83913fSmrg | moxie \ 12443b83913fSmrg | mt \ 12453b83913fSmrg | msp430 \ 12463b83913fSmrg | nds32 | nds32le | nds32be \ 12473b83913fSmrg | nfp \ 12483b83913fSmrg | nios | nios2 | nios2eb | nios2el \ 12493b83913fSmrg | none | np1 | ns16k | ns32k | nvptx \ 12503b83913fSmrg | open8 \ 12513b83913fSmrg | or1k* \ 12523b83913fSmrg | or32 \ 12533b83913fSmrg | orion \ 12543b83913fSmrg | picochip \ 12553b83913fSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12563b83913fSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12573b83913fSmrg | pru \ 12583b83913fSmrg | pyramid \ 12593b83913fSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12603b83913fSmrg | rl78 | romp | rs6000 | rx \ 12613b83913fSmrg | s390 | s390x \ 12623b83913fSmrg | score \ 12633b83913fSmrg | sh | shl \ 12643b83913fSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12653b83913fSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12663b83913fSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12673b83913fSmrg | sparclite \ 12683b83913fSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12693b83913fSmrg | spu \ 12703b83913fSmrg | tahoe \ 12713b83913fSmrg | thumbv7* \ 12723b83913fSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12733b83913fSmrg | tron \ 12743b83913fSmrg | ubicom32 \ 12753b83913fSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12763b83913fSmrg | vax \ 12773b83913fSmrg | visium \ 12783b83913fSmrg | w65 \ 12793b83913fSmrg | wasm32 | wasm64 \ 12803b83913fSmrg | we32k \ 12813b83913fSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12823b83913fSmrg | xstormy16 | xtensa* \ 12833b83913fSmrg | ymp \ 12843b83913fSmrg | z8k | z80) 12853b83913fSmrg ;; 12863b83913fSmrg 12873b83913fSmrg *) 12883b83913fSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12893b83913fSmrg exit 1 12903b83913fSmrg ;; 12913b83913fSmrg esac 1292c19de146Smrg ;; 1293c19de146Smrgesac 1294c19de146Smrg 1295c19de146Smrg# Here we canonicalize certain aliases for manufacturers. 12963b83913fSmrgcase $vendor in 12973b83913fSmrg digital*) 12983b83913fSmrg vendor=dec 1299c19de146Smrg ;; 13003b83913fSmrg commodore*) 13013b83913fSmrg vendor=cbm 1302c19de146Smrg ;; 1303c19de146Smrg *) 1304c19de146Smrg ;; 1305c19de146Smrgesac 1306c19de146Smrg 1307c19de146Smrg# Decode manufacturer-specific aliases for certain operating systems. 1308c19de146Smrg 13093b83913fSmrgif test x$basic_os != x 1310c19de146Smrgthen 13113b83913fSmrg 13123b83913fSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 13133b83913fSmrg# set os. 13143b83913fSmrgcase $basic_os in 13153b83913fSmrg gnu/linux*) 13163b83913fSmrg kernel=linux 13173b83913fSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13183b83913fSmrg ;; 13193b83913fSmrg os2-emx) 13203b83913fSmrg kernel=os2 13213b83913fSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13223b83913fSmrg ;; 13233b83913fSmrg nto-qnx*) 13243b83913fSmrg kernel=nto 13253b83913fSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13263b83913fSmrg ;; 13273b83913fSmrg *-*) 13283b83913fSmrg # shellcheck disable=SC2162 13293b83913fSmrg saved_IFS=$IFS 13303b83913fSmrg IFS="-" read kernel os <<EOF 13313b83913fSmrg$basic_os 13323b83913fSmrgEOF 13333b83913fSmrg IFS=$saved_IFS 13343b83913fSmrg ;; 13353b83913fSmrg # Default OS when just kernel was specified 13363b83913fSmrg nto*) 13373b83913fSmrg kernel=nto 13383b83913fSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13393b83913fSmrg ;; 13403b83913fSmrg linux*) 13413b83913fSmrg kernel=linux 13423b83913fSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13433b83913fSmrg ;; 13443b83913fSmrg managarm*) 13453b83913fSmrg kernel=managarm 13463b83913fSmrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 13473b83913fSmrg ;; 13483b83913fSmrg *) 13493b83913fSmrg kernel= 13503b83913fSmrg os=$basic_os 13513b83913fSmrg ;; 13523b83913fSmrgesac 13533b83913fSmrg 13543b83913fSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13553b83913fSmrg# etc.) 1356c19de146Smrgcase $os in 1357a39bb051Smrg # First match some system type aliases that might get confused 1358a39bb051Smrg # with valid system types. 13593b83913fSmrg # solaris* is a basic system type, with this one exception. 13603b83913fSmrg auroraux) 13613b83913fSmrg os=auroraux 13629ef7378bSmrg ;; 13633b83913fSmrg bluegene*) 13643b83913fSmrg os=cnk 1365c19de146Smrg ;; 13663b83913fSmrg solaris1 | solaris1.*) 13673b83913fSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1368c19de146Smrg ;; 13693b83913fSmrg solaris) 13703b83913fSmrg os=solaris2 1371c19de146Smrg ;; 13723b83913fSmrg unixware*) 13733b83913fSmrg os=sysv4.2uw 1374c19de146Smrg ;; 1375a39bb051Smrg # es1800 is here to avoid being matched by es* (a different OS) 13763b83913fSmrg es1800*) 13773b83913fSmrg os=ose 1378a39bb051Smrg ;; 13793b83913fSmrg # Some version numbers need modification 13803b83913fSmrg chorusos*) 13813b83913fSmrg os=chorusos 1382c19de146Smrg ;; 13833b83913fSmrg isc) 13843b83913fSmrg os=isc2.2 1385c19de146Smrg ;; 13863b83913fSmrg sco6) 13873b83913fSmrg os=sco5v6 1388c19de146Smrg ;; 13893b83913fSmrg sco5) 13903b83913fSmrg os=sco3.2v5 1391c19de146Smrg ;; 13923b83913fSmrg sco4) 13933b83913fSmrg os=sco3.2v4 1394c19de146Smrg ;; 13953b83913fSmrg sco3.2.[4-9]*) 13963b83913fSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13979ef7378bSmrg ;; 13983b83913fSmrg sco*v* | scout) 13993b83913fSmrg # Don't match below 1400c19de146Smrg ;; 14013b83913fSmrg sco*) 14023b83913fSmrg os=sco3.2v2 1403c19de146Smrg ;; 14043b83913fSmrg psos*) 14053b83913fSmrg os=psos 1406c19de146Smrg ;; 14073b83913fSmrg qnx*) 14083b83913fSmrg os=qnx 1409c19de146Smrg ;; 14103b83913fSmrg hiux*) 14113b83913fSmrg os=hiuxwe2 14129ef7378bSmrg ;; 14133b83913fSmrg lynx*178) 14143b83913fSmrg os=lynxos178 1415c19de146Smrg ;; 14163b83913fSmrg lynx*5) 14173b83913fSmrg os=lynxos5 1418c19de146Smrg ;; 14193b83913fSmrg lynxos*) 14203b83913fSmrg # don't get caught up in next wildcard 1421c19de146Smrg ;; 14223b83913fSmrg lynx*) 14233b83913fSmrg os=lynxos 1424c19de146Smrg ;; 14253b83913fSmrg mac[0-9]*) 14263b83913fSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 1427c19de146Smrg ;; 14283b83913fSmrg opened*) 14293b83913fSmrg os=openedition 14309ef7378bSmrg ;; 14313b83913fSmrg os400*) 14323b83913fSmrg os=os400 1433c19de146Smrg ;; 14343b83913fSmrg sunos5*) 14353b83913fSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1436c19de146Smrg ;; 14373b83913fSmrg sunos6*) 14383b83913fSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1439c19de146Smrg ;; 14403b83913fSmrg wince*) 14413b83913fSmrg os=wince 1442c19de146Smrg ;; 14433b83913fSmrg utek*) 14443b83913fSmrg os=bsd 1445c19de146Smrg ;; 14463b83913fSmrg dynix*) 14473b83913fSmrg os=bsd 14483b83913fSmrg ;; 14493b83913fSmrg acis*) 14503b83913fSmrg os=aos 14513b83913fSmrg ;; 14523b83913fSmrg atheos*) 14533b83913fSmrg os=atheos 14543b83913fSmrg ;; 14553b83913fSmrg syllable*) 14563b83913fSmrg os=syllable 1457c19de146Smrg ;; 14583b83913fSmrg 386bsd) 14593b83913fSmrg os=bsd 14603b83913fSmrg ;; 14613b83913fSmrg ctix* | uts*) 14623b83913fSmrg os=sysv 1463c19de146Smrg ;; 14643b83913fSmrg nova*) 14653b83913fSmrg os=rtmk-nova 14669ef7378bSmrg ;; 14673b83913fSmrg ns2) 14683b83913fSmrg os=nextstep2 14693b83913fSmrg ;; 14703b83913fSmrg # Preserve the version number of sinix5. 14713b83913fSmrg sinix5.*) 14723b83913fSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1473c19de146Smrg ;; 14743b83913fSmrg sinix*) 14753b83913fSmrg os=sysv4 1476c19de146Smrg ;; 14773b83913fSmrg tpf*) 14783b83913fSmrg os=tpf 1479c19de146Smrg ;; 14803b83913fSmrg triton*) 14813b83913fSmrg os=sysv3 1482c19de146Smrg ;; 14833b83913fSmrg oss*) 14843b83913fSmrg os=sysv3 1485c19de146Smrg ;; 14863b83913fSmrg svr4*) 14873b83913fSmrg os=sysv4 1488c19de146Smrg ;; 14893b83913fSmrg svr3) 14903b83913fSmrg os=sysv3 1491c19de146Smrg ;; 14923b83913fSmrg sysvr4) 14933b83913fSmrg os=sysv4 1494c19de146Smrg ;; 14953b83913fSmrg ose*) 14963b83913fSmrg os=ose 14979ef7378bSmrg ;; 14983b83913fSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14993b83913fSmrg os=mint 15009ef7378bSmrg ;; 15013b83913fSmrg dicos*) 15023b83913fSmrg os=dicos 15033b83913fSmrg ;; 15043b83913fSmrg pikeos*) 1505a39bb051Smrg # Until real need of OS specific support for 1506a39bb051Smrg # particular features comes up, bare metal 1507a39bb051Smrg # configurations are quite functional. 15083b83913fSmrg case $cpu in 1509a39bb051Smrg arm*) 15103b83913fSmrg os=eabi 1511a39bb051Smrg ;; 1512a39bb051Smrg *) 15133b83913fSmrg os=elf 1514a39bb051Smrg ;; 1515a39bb051Smrg esac 1516a39bb051Smrg ;; 1517c19de146Smrg *) 15183b83913fSmrg # No normalization, but not necessarily accepted, that comes below. 1519c19de146Smrg ;; 1520c19de146Smrgesac 15213b83913fSmrg 1522c19de146Smrgelse 1523c19de146Smrg 1524c19de146Smrg# Here we handle the default operating systems that come with various machines. 1525c19de146Smrg# The value should be what the vendor currently ships out the door with their 1526c19de146Smrg# machine or put another way, the most popular os provided with the machine. 1527c19de146Smrg 1528c19de146Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1529c19de146Smrg# "-sun"), then you have to tell the case statement up towards the top 1530c19de146Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1531c19de146Smrg# will signal an error saying that MANUFACTURER isn't an operating 1532c19de146Smrg# system, and we'll never get to this point. 1533c19de146Smrg 15343b83913fSmrgkernel= 15353b83913fSmrgcase $cpu-$vendor in 1536a39bb051Smrg score-*) 15373b83913fSmrg os=elf 15389ef7378bSmrg ;; 1539a39bb051Smrg spu-*) 15403b83913fSmrg os=elf 15419ef7378bSmrg ;; 1542c19de146Smrg *-acorn) 15433b83913fSmrg os=riscix1.2 1544c19de146Smrg ;; 1545c19de146Smrg arm*-rebel) 15463b83913fSmrg kernel=linux 15473b83913fSmrg os=gnu 1548c19de146Smrg ;; 1549c19de146Smrg arm*-semi) 15503b83913fSmrg os=aout 1551c19de146Smrg ;; 1552a39bb051Smrg c4x-* | tic4x-*) 15533b83913fSmrg os=coff 1554a39bb051Smrg ;; 1555a39bb051Smrg c8051-*) 15563b83913fSmrg os=elf 15573b83913fSmrg ;; 15583b83913fSmrg clipper-intergraph) 15593b83913fSmrg os=clix 1560a39bb051Smrg ;; 1561a39bb051Smrg hexagon-*) 15623b83913fSmrg os=elf 1563c19de146Smrg ;; 1564c918a7e2Smrg tic54x-*) 15653b83913fSmrg os=coff 1566c918a7e2Smrg ;; 1567c918a7e2Smrg tic55x-*) 15683b83913fSmrg os=coff 1569c918a7e2Smrg ;; 1570c918a7e2Smrg tic6x-*) 15713b83913fSmrg os=coff 1572c918a7e2Smrg ;; 1573c19de146Smrg # This must come before the *-dec entry. 1574c19de146Smrg pdp10-*) 15753b83913fSmrg os=tops20 1576c19de146Smrg ;; 1577c19de146Smrg pdp11-*) 15783b83913fSmrg os=none 1579c19de146Smrg ;; 1580c19de146Smrg *-dec | vax-*) 15813b83913fSmrg os=ultrix4.2 1582c19de146Smrg ;; 1583c19de146Smrg m68*-apollo) 15843b83913fSmrg os=domain 1585c19de146Smrg ;; 1586c19de146Smrg i386-sun) 15873b83913fSmrg os=sunos4.0.2 1588c19de146Smrg ;; 1589c19de146Smrg m68000-sun) 15903b83913fSmrg os=sunos3 1591c19de146Smrg ;; 1592c19de146Smrg m68*-cisco) 15933b83913fSmrg os=aout 1594c19de146Smrg ;; 1595a39bb051Smrg mep-*) 15963b83913fSmrg os=elf 15979ef7378bSmrg ;; 1598c19de146Smrg mips*-cisco) 15993b83913fSmrg os=elf 1600c19de146Smrg ;; 1601c19de146Smrg mips*-*) 16023b83913fSmrg os=elf 1603c19de146Smrg ;; 1604c19de146Smrg or32-*) 16053b83913fSmrg os=coff 1606c19de146Smrg ;; 1607c19de146Smrg *-tti) # must be before sparc entry or we get the wrong os. 16083b83913fSmrg os=sysv3 1609c19de146Smrg ;; 1610c19de146Smrg sparc-* | *-sun) 16113b83913fSmrg os=sunos4.1.1 1612c19de146Smrg ;; 1613a39bb051Smrg pru-*) 16143b83913fSmrg os=elf 1615a39bb051Smrg ;; 1616c19de146Smrg *-be) 16173b83913fSmrg os=beos 1618c19de146Smrg ;; 1619c19de146Smrg *-ibm) 16203b83913fSmrg os=aix 1621c19de146Smrg ;; 1622a39bb051Smrg *-knuth) 16233b83913fSmrg os=mmixware 16249ef7378bSmrg ;; 1625c19de146Smrg *-wec) 16263b83913fSmrg os=proelf 1627c19de146Smrg ;; 1628c19de146Smrg *-winbond) 16293b83913fSmrg os=proelf 1630c19de146Smrg ;; 1631c19de146Smrg *-oki) 16323b83913fSmrg os=proelf 1633c19de146Smrg ;; 1634c19de146Smrg *-hp) 16353b83913fSmrg os=hpux 1636c19de146Smrg ;; 1637c19de146Smrg *-hitachi) 16383b83913fSmrg os=hiux 1639c19de146Smrg ;; 1640c19de146Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16413b83913fSmrg os=sysv 1642c19de146Smrg ;; 1643c19de146Smrg *-cbm) 16443b83913fSmrg os=amigaos 1645c19de146Smrg ;; 1646c19de146Smrg *-dg) 16473b83913fSmrg os=dgux 1648c19de146Smrg ;; 1649c19de146Smrg *-dolphin) 16503b83913fSmrg os=sysv3 1651c19de146Smrg ;; 1652c19de146Smrg m68k-ccur) 16533b83913fSmrg os=rtu 1654c19de146Smrg ;; 1655c19de146Smrg m88k-omron*) 16563b83913fSmrg os=luna 1657c19de146Smrg ;; 1658a39bb051Smrg *-next) 16593b83913fSmrg os=nextstep 1660c19de146Smrg ;; 1661c19de146Smrg *-sequent) 16623b83913fSmrg os=ptx 1663c19de146Smrg ;; 1664c19de146Smrg *-crds) 16653b83913fSmrg os=unos 1666c19de146Smrg ;; 1667c19de146Smrg *-ns) 16683b83913fSmrg os=genix 1669c19de146Smrg ;; 1670c19de146Smrg i370-*) 16713b83913fSmrg os=mvs 1672c19de146Smrg ;; 1673c19de146Smrg *-gould) 16743b83913fSmrg os=sysv 1675c19de146Smrg ;; 1676c19de146Smrg *-highlevel) 16773b83913fSmrg os=bsd 1678c19de146Smrg ;; 1679c19de146Smrg *-encore) 16803b83913fSmrg os=bsd 1681c19de146Smrg ;; 1682c19de146Smrg *-sgi) 16833b83913fSmrg os=irix 1684c19de146Smrg ;; 1685c19de146Smrg *-siemens) 16863b83913fSmrg os=sysv4 1687c19de146Smrg ;; 1688c19de146Smrg *-masscomp) 16893b83913fSmrg os=rtu 1690c19de146Smrg ;; 1691c19de146Smrg f30[01]-fujitsu | f700-fujitsu) 16923b83913fSmrg os=uxpv 1693c19de146Smrg ;; 1694c19de146Smrg *-rom68k) 16953b83913fSmrg os=coff 1696c19de146Smrg ;; 1697c19de146Smrg *-*bug) 16983b83913fSmrg os=coff 1699c19de146Smrg ;; 1700c19de146Smrg *-apple) 17013b83913fSmrg os=macos 1702c19de146Smrg ;; 1703c19de146Smrg *-atari*) 17043b83913fSmrg os=mint 17053b83913fSmrg ;; 17063b83913fSmrg *-wrs) 17073b83913fSmrg os=vxworks 1708c19de146Smrg ;; 1709c19de146Smrg *) 17103b83913fSmrg os=none 1711c19de146Smrg ;; 1712c19de146Smrgesac 17133b83913fSmrg 1714c19de146Smrgfi 1715c19de146Smrg 17163b83913fSmrg# Now, validate our (potentially fixed-up) OS. 17173b83913fSmrgcase $os in 17183b83913fSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17193b83913fSmrg musl* | newlib* | relibc* | uclibc*) 17203b83913fSmrg ;; 17213b83913fSmrg # Likewise for "kernel-abi" 17223b83913fSmrg eabi* | gnueabi*) 17233b83913fSmrg ;; 17243b83913fSmrg # VxWorks passes extra cpu info in the 4th filed. 17253b83913fSmrg simlinux | simwindows | spe) 17263b83913fSmrg ;; 17273b83913fSmrg # Now accept the basic system types. 17283b83913fSmrg # The portable systems comes first. 17293b83913fSmrg # Each alternative MUST end in a * to match a version number. 17303b83913fSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17313b83913fSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17323b83913fSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17333b83913fSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17343b83913fSmrg | hiux* | abug | nacl* | netware* | windows* \ 17353b83913fSmrg | os9* | macos* | osx* | ios* \ 17363b83913fSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17373b83913fSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17383b83913fSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17393b83913fSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17403b83913fSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17413b83913fSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17423b83913fSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17433b83913fSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17443b83913fSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17453b83913fSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17463b83913fSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17473b83913fSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17483b83913fSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17493b83913fSmrg | midipix* | mingw32* | mingw64* | mint* \ 17503b83913fSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17513b83913fSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17523b83913fSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17533b83913fSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17543b83913fSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17553b83913fSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17563b83913fSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17573b83913fSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17583b83913fSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17593b83913fSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17603b83913fSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 17613b83913fSmrg | fiwix* | mlibc* ) 17623b83913fSmrg ;; 17633b83913fSmrg # This one is extra strict with allowed versions 17643b83913fSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17653b83913fSmrg # Don't forget version if it is 3.2v4 or newer. 17663b83913fSmrg ;; 17673b83913fSmrg none) 17683b83913fSmrg ;; 17693b83913fSmrg kernel* ) 17703b83913fSmrg # Restricted further below 17713b83913fSmrg ;; 17723b83913fSmrg *) 17733b83913fSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17743b83913fSmrg exit 1 17753b83913fSmrg ;; 17763b83913fSmrgesac 17773b83913fSmrg 17783b83913fSmrg# As a final step for OS-related things, validate the OS-kernel combination 17793b83913fSmrg# (given a valid OS), if there is a kernel. 17803b83913fSmrgcase $kernel-$os in 17813b83913fSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17823b83913fSmrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 17833b83913fSmrg ;; 17843b83913fSmrg uclinux-uclibc* ) 17853b83913fSmrg ;; 17863b83913fSmrg managarm-mlibc* | managarm-kernel* ) 17873b83913fSmrg ;; 17883b83913fSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 17893b83913fSmrg # These are just libc implementations, not actual OSes, and thus 17903b83913fSmrg # require a kernel. 17913b83913fSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17923b83913fSmrg exit 1 17933b83913fSmrg ;; 17943b83913fSmrg -kernel* ) 17953b83913fSmrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 17963b83913fSmrg exit 1 17973b83913fSmrg ;; 17983b83913fSmrg *-kernel* ) 17993b83913fSmrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 18003b83913fSmrg exit 1 18013b83913fSmrg ;; 18023b83913fSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 18033b83913fSmrg ;; 18043b83913fSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 18053b83913fSmrg ;; 18063b83913fSmrg nto-qnx*) 18073b83913fSmrg ;; 18083b83913fSmrg os2-emx) 18093b83913fSmrg ;; 18103b83913fSmrg *-eabi* | *-gnueabi*) 18113b83913fSmrg ;; 18123b83913fSmrg -*) 18133b83913fSmrg # Blank kernel with real OS is always fine. 18143b83913fSmrg ;; 18153b83913fSmrg *-*) 18163b83913fSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 18173b83913fSmrg exit 1 18183b83913fSmrg ;; 18193b83913fSmrgesac 18203b83913fSmrg 1821c19de146Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1822c19de146Smrg# manufacturer. We pick the logical manufacturer. 18233b83913fSmrgcase $vendor in 18243b83913fSmrg unknown) 18253b83913fSmrg case $cpu-$os in 18263b83913fSmrg *-riscix*) 1827c19de146Smrg vendor=acorn 1828c19de146Smrg ;; 18293b83913fSmrg *-sunos*) 1830c19de146Smrg vendor=sun 1831c19de146Smrg ;; 18323b83913fSmrg *-cnk* | *-aix*) 1833c19de146Smrg vendor=ibm 1834c19de146Smrg ;; 18353b83913fSmrg *-beos*) 1836c19de146Smrg vendor=be 1837c19de146Smrg ;; 18383b83913fSmrg *-hpux*) 1839c19de146Smrg vendor=hp 1840c19de146Smrg ;; 18413b83913fSmrg *-mpeix*) 1842c19de146Smrg vendor=hp 1843c19de146Smrg ;; 18443b83913fSmrg *-hiux*) 1845c19de146Smrg vendor=hitachi 1846c19de146Smrg ;; 18473b83913fSmrg *-unos*) 1848c19de146Smrg vendor=crds 1849c19de146Smrg ;; 18503b83913fSmrg *-dgux*) 1851c19de146Smrg vendor=dg 1852c19de146Smrg ;; 18533b83913fSmrg *-luna*) 1854c19de146Smrg vendor=omron 1855c19de146Smrg ;; 18563b83913fSmrg *-genix*) 1857c19de146Smrg vendor=ns 1858c19de146Smrg ;; 18593b83913fSmrg *-clix*) 18603b83913fSmrg vendor=intergraph 18613b83913fSmrg ;; 18623b83913fSmrg *-mvs* | *-opened*) 18633b83913fSmrg vendor=ibm 18643b83913fSmrg ;; 18653b83913fSmrg *-os400*) 1866c19de146Smrg vendor=ibm 1867c19de146Smrg ;; 18683b83913fSmrg s390-* | s390x-*) 18699ef7378bSmrg vendor=ibm 18709ef7378bSmrg ;; 18713b83913fSmrg *-ptx*) 1872c19de146Smrg vendor=sequent 1873c19de146Smrg ;; 18743b83913fSmrg *-tpf*) 18759ef7378bSmrg vendor=ibm 18769ef7378bSmrg ;; 18773b83913fSmrg *-vxsim* | *-vxworks* | *-windiss*) 1878c19de146Smrg vendor=wrs 1879c19de146Smrg ;; 18803b83913fSmrg *-aux*) 1881c19de146Smrg vendor=apple 1882c19de146Smrg ;; 18833b83913fSmrg *-hms*) 1884c19de146Smrg vendor=hitachi 1885c19de146Smrg ;; 18863b83913fSmrg *-mpw* | *-macos*) 1887c19de146Smrg vendor=apple 1888c19de146Smrg ;; 18893b83913fSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1890c19de146Smrg vendor=atari 1891c19de146Smrg ;; 18923b83913fSmrg *-vos*) 1893c19de146Smrg vendor=stratus 1894c19de146Smrg ;; 1895c19de146Smrg esac 1896c19de146Smrg ;; 1897c19de146Smrgesac 1898c19de146Smrg 18993b83913fSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 19009ef7378bSmrgexit 1901c19de146Smrg 1902c19de146Smrg# Local variables: 19033b83913fSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 1904c19de146Smrg# time-stamp-start: "timestamp='" 1905c19de146Smrg# time-stamp-format: "%:y-%02m-%02d" 1906c19de146Smrg# time-stamp-end: "'" 1907c19de146Smrg# End: 1908