config.sub revision 6d1874b2
1e6232409Smrg#! /bin/sh 2e6232409Smrg# Configuration validation subroutine script. 36d1874b2Smrg# Copyright 1992-2021 Free Software Foundation, Inc. 4e6232409Smrg 56d1874b2Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 66d1874b2Smrg 76d1874b2Smrgtimestamp='2021-08-14' 8e6232409Smrg 96a45684fSmrg# This file is free software; you can redistribute it and/or modify it 106a45684fSmrg# under the terms of the GNU General Public License as published by 116a45684fSmrg# the Free Software Foundation; either version 3 of the License, or 12e6232409Smrg# (at your option) any later version. 13e6232409Smrg# 146a45684fSmrg# This program is distributed in the hope that it will be useful, but 156a45684fSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 166a45684fSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 176a45684fSmrg# General Public License for more details. 18e6232409Smrg# 19e6232409Smrg# You should have received a copy of the GNU General Public License 20c05e7a3eSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21e6232409Smrg# 22e6232409Smrg# As a special exception to the GNU General Public License, if you 23e6232409Smrg# distribute this file as part of a program that contains a 24e6232409Smrg# configuration script generated by Autoconf, you may include it under 256a45684fSmrg# the same distribution terms that you use for the rest of that 266a45684fSmrg# program. This Exception is an additional permission under section 7 276a45684fSmrg# of the GNU General Public License, version 3 ("GPLv3"). 28e6232409Smrg 29e6232409Smrg 306a45684fSmrg# Please send patches to <config-patches@gnu.org>. 31e6232409Smrg# 32e6232409Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33e6232409Smrg# Supply the specified configuration type as an argument. 34e6232409Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35e6232409Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36e6232409Smrg 378fff3f40Smrg# You can get the latest version of this script from: 386d1874b2Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 398fff3f40Smrg 40e6232409Smrg# This file is supposed to be the same for all GNU packages 41e6232409Smrg# and recognize all the CPU types, system types and aliases 42e6232409Smrg# that are meaningful with *any* GNU software. 43e6232409Smrg# Each package is responsible for reporting which valid configurations 44e6232409Smrg# it does not support. The user should be able to distinguish 45e6232409Smrg# a failure to support a valid configuration from a meaningless 46e6232409Smrg# configuration. 47e6232409Smrg 48e6232409Smrg# The goal of this file is to map all the various variations of a given 49e6232409Smrg# machine specification into a single specification in the form: 50e6232409Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51e6232409Smrg# or in some cases, the newer four-part form: 52e6232409Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53e6232409Smrg# It is wrong to echo any other type of specification. 54e6232409Smrg 556d1874b2Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 566d1874b2Smrg# about features and limitations of the classic Bourne shell that were 576d1874b2Smrg# superseded or lifted in POSIX. However, this script identifies a wide 586d1874b2Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 596d1874b2Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 606d1874b2Smrg# have a pre-POSIX /bin/sh. 616d1874b2Smrg 62e6232409Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63e6232409Smrg 64e6232409Smrgusage="\ 65c05e7a3eSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66e6232409Smrg 67e6232409SmrgCanonicalize a configuration name. 68e6232409Smrg 69c05e7a3eSmrgOptions: 70e6232409Smrg -h, --help print this help, then exit 71e6232409Smrg -t, --time-stamp print date of last modification, then exit 72e6232409Smrg -v, --version print version number, then exit 73e6232409Smrg 74e6232409SmrgReport bugs and patches to <config-patches@gnu.org>." 75e6232409Smrg 76e6232409Smrgversion="\ 77e6232409SmrgGNU config.sub ($timestamp) 78e6232409Smrg 796d1874b2SmrgCopyright 1992-2021 Free Software Foundation, Inc. 80e6232409Smrg 81e6232409SmrgThis is free software; see the source for copying conditions. There is NO 82e6232409Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83e6232409Smrg 84e6232409Smrghelp=" 85e6232409SmrgTry \`$me --help' for more information." 86e6232409Smrg 87e6232409Smrg# Parse command line 88e6232409Smrgwhile test $# -gt 0 ; do 89e6232409Smrg case $1 in 90e6232409Smrg --time-stamp | --time* | -t ) 91e6232409Smrg echo "$timestamp" ; exit ;; 92e6232409Smrg --version | -v ) 93e6232409Smrg echo "$version" ; exit ;; 94e6232409Smrg --help | --h* | -h ) 95e6232409Smrg echo "$usage"; exit ;; 96e6232409Smrg -- ) # Stop option processing 97e6232409Smrg shift; break ;; 98e6232409Smrg - ) # Use stdin as input. 99e6232409Smrg break ;; 100e6232409Smrg -* ) 1016d1874b2Smrg echo "$me: invalid option $1$help" >&2 102e6232409Smrg exit 1 ;; 103e6232409Smrg 104e6232409Smrg *local*) 105e6232409Smrg # First pass through any local machine types. 106c05e7a3eSmrg echo "$1" 107e6232409Smrg exit ;; 108e6232409Smrg 109e6232409Smrg * ) 110e6232409Smrg break ;; 111e6232409Smrg esac 112e6232409Smrgdone 113e6232409Smrg 114e6232409Smrgcase $# in 115e6232409Smrg 0) echo "$me: missing argument$help" >&2 116e6232409Smrg exit 1;; 117e6232409Smrg 1) ;; 118e6232409Smrg *) echo "$me: too many arguments$help" >&2 119e6232409Smrg exit 1;; 120e6232409Smrgesac 121e6232409Smrg 1226d1874b2Smrg# Split fields of configuration type 1236d1874b2Smrg# shellcheck disable=SC2162 1246d1874b2Smrgsaved_IFS=$IFS 1256d1874b2SmrgIFS="-" read field1 field2 field3 field4 <<EOF 1266d1874b2Smrg$1 1276d1874b2SmrgEOF 1286d1874b2SmrgIFS=$saved_IFS 129e6232409Smrg 1306d1874b2Smrg# Separate into logical components for further validation 1316d1874b2Smrgcase $1 in 1326d1874b2Smrg *-*-*-*-*) 1336d1874b2Smrg echo Invalid configuration \`"$1"\': more than four components >&2 1346d1874b2Smrg exit 1 1356a45684fSmrg ;; 1366d1874b2Smrg *-*-*-*) 1376d1874b2Smrg basic_machine=$field1-$field2 1386d1874b2Smrg basic_os=$field3-$field4 139e6232409Smrg ;; 1406d1874b2Smrg *-*-*) 1416d1874b2Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1426d1874b2Smrg # parts 1436d1874b2Smrg maybe_os=$field2-$field3 1446d1874b2Smrg case $maybe_os in 1456d1874b2Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 1466d1874b2Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1476d1874b2Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1486d1874b2Smrg | storm-chaos* | os2-emx* | rtmk-nova*) 1496d1874b2Smrg basic_machine=$field1 1506d1874b2Smrg basic_os=$maybe_os 1516d1874b2Smrg ;; 1526d1874b2Smrg android-linux) 1536d1874b2Smrg basic_machine=$field1-unknown 1546d1874b2Smrg basic_os=linux-android 1556d1874b2Smrg ;; 1566d1874b2Smrg *) 1576d1874b2Smrg basic_machine=$field1-$field2 1586d1874b2Smrg basic_os=$field3 1596d1874b2Smrg ;; 1606d1874b2Smrg esac 161e6232409Smrg ;; 1626d1874b2Smrg *-*) 1636d1874b2Smrg # A lone config we happen to match not fitting any pattern 1646d1874b2Smrg case $field1-$field2 in 1656d1874b2Smrg decstation-3100) 1666d1874b2Smrg basic_machine=mips-dec 1676d1874b2Smrg basic_os= 1686d1874b2Smrg ;; 1696d1874b2Smrg *-*) 1706d1874b2Smrg # Second component is usually, but not always the OS 1716d1874b2Smrg case $field2 in 1726d1874b2Smrg # Prevent following clause from handling this valid os 1736d1874b2Smrg sun*os*) 1746d1874b2Smrg basic_machine=$field1 1756d1874b2Smrg basic_os=$field2 1766d1874b2Smrg ;; 1776d1874b2Smrg zephyr*) 1786d1874b2Smrg basic_machine=$field1-unknown 1796d1874b2Smrg basic_os=$field2 1806d1874b2Smrg ;; 1816d1874b2Smrg # Manufacturers 1826d1874b2Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1836d1874b2Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1846d1874b2Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1856d1874b2Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1866d1874b2Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1876d1874b2Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1886d1874b2Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1896d1874b2Smrg | microblaze* | sim | cisco \ 1906d1874b2Smrg | oki | wec | wrs | winbond) 1916d1874b2Smrg basic_machine=$field1-$field2 1926d1874b2Smrg basic_os= 1936d1874b2Smrg ;; 1946d1874b2Smrg *) 1956d1874b2Smrg basic_machine=$field1 1966d1874b2Smrg basic_os=$field2 1976d1874b2Smrg ;; 1986d1874b2Smrg esac 1996d1874b2Smrg ;; 2006d1874b2Smrg esac 201e6232409Smrg ;; 2026d1874b2Smrg *) 2036d1874b2Smrg # Convert single-component short-hands not valid as part of 2046d1874b2Smrg # multi-component configurations. 2056d1874b2Smrg case $field1 in 2066d1874b2Smrg 386bsd) 2076d1874b2Smrg basic_machine=i386-pc 2086d1874b2Smrg basic_os=bsd 2096d1874b2Smrg ;; 2106d1874b2Smrg a29khif) 2116d1874b2Smrg basic_machine=a29k-amd 2126d1874b2Smrg basic_os=udi 2136d1874b2Smrg ;; 2146d1874b2Smrg adobe68k) 2156d1874b2Smrg basic_machine=m68010-adobe 2166d1874b2Smrg basic_os=scout 2176d1874b2Smrg ;; 2186d1874b2Smrg alliant) 2196d1874b2Smrg basic_machine=fx80-alliant 2206d1874b2Smrg basic_os= 2216d1874b2Smrg ;; 2226d1874b2Smrg altos | altos3068) 2236d1874b2Smrg basic_machine=m68k-altos 2246d1874b2Smrg basic_os= 2256d1874b2Smrg ;; 2266d1874b2Smrg am29k) 2276d1874b2Smrg basic_machine=a29k-none 2286d1874b2Smrg basic_os=bsd 2296d1874b2Smrg ;; 2306d1874b2Smrg amdahl) 2316d1874b2Smrg basic_machine=580-amdahl 2326d1874b2Smrg basic_os=sysv 2336d1874b2Smrg ;; 2346d1874b2Smrg amiga) 2356d1874b2Smrg basic_machine=m68k-unknown 2366d1874b2Smrg basic_os= 2376d1874b2Smrg ;; 2386d1874b2Smrg amigaos | amigados) 2396d1874b2Smrg basic_machine=m68k-unknown 2406d1874b2Smrg basic_os=amigaos 2416d1874b2Smrg ;; 2426d1874b2Smrg amigaunix | amix) 2436d1874b2Smrg basic_machine=m68k-unknown 2446d1874b2Smrg basic_os=sysv4 2456d1874b2Smrg ;; 2466d1874b2Smrg apollo68) 2476d1874b2Smrg basic_machine=m68k-apollo 2486d1874b2Smrg basic_os=sysv 2496d1874b2Smrg ;; 2506d1874b2Smrg apollo68bsd) 2516d1874b2Smrg basic_machine=m68k-apollo 2526d1874b2Smrg basic_os=bsd 2536d1874b2Smrg ;; 2546d1874b2Smrg aros) 2556d1874b2Smrg basic_machine=i386-pc 2566d1874b2Smrg basic_os=aros 2576d1874b2Smrg ;; 2586d1874b2Smrg aux) 2596d1874b2Smrg basic_machine=m68k-apple 2606d1874b2Smrg basic_os=aux 2616d1874b2Smrg ;; 2626d1874b2Smrg balance) 2636d1874b2Smrg basic_machine=ns32k-sequent 2646d1874b2Smrg basic_os=dynix 2656d1874b2Smrg ;; 2666d1874b2Smrg blackfin) 2676d1874b2Smrg basic_machine=bfin-unknown 2686d1874b2Smrg basic_os=linux 2696d1874b2Smrg ;; 2706d1874b2Smrg cegcc) 2716d1874b2Smrg basic_machine=arm-unknown 2726d1874b2Smrg basic_os=cegcc 2736d1874b2Smrg ;; 2746d1874b2Smrg convex-c1) 2756d1874b2Smrg basic_machine=c1-convex 2766d1874b2Smrg basic_os=bsd 2776d1874b2Smrg ;; 2786d1874b2Smrg convex-c2) 2796d1874b2Smrg basic_machine=c2-convex 2806d1874b2Smrg basic_os=bsd 2816d1874b2Smrg ;; 2826d1874b2Smrg convex-c32) 2836d1874b2Smrg basic_machine=c32-convex 2846d1874b2Smrg basic_os=bsd 2856d1874b2Smrg ;; 2866d1874b2Smrg convex-c34) 2876d1874b2Smrg basic_machine=c34-convex 2886d1874b2Smrg basic_os=bsd 2896d1874b2Smrg ;; 2906d1874b2Smrg convex-c38) 2916d1874b2Smrg basic_machine=c38-convex 2926d1874b2Smrg basic_os=bsd 2936d1874b2Smrg ;; 2946d1874b2Smrg cray) 2956d1874b2Smrg basic_machine=j90-cray 2966d1874b2Smrg basic_os=unicos 2976d1874b2Smrg ;; 2986d1874b2Smrg crds | unos) 2996d1874b2Smrg basic_machine=m68k-crds 3006d1874b2Smrg basic_os= 3016d1874b2Smrg ;; 3026d1874b2Smrg da30) 3036d1874b2Smrg basic_machine=m68k-da30 3046d1874b2Smrg basic_os= 3056d1874b2Smrg ;; 3066d1874b2Smrg decstation | pmax | pmin | dec3100 | decstatn) 3076d1874b2Smrg basic_machine=mips-dec 3086d1874b2Smrg basic_os= 3096d1874b2Smrg ;; 3106d1874b2Smrg delta88) 3116d1874b2Smrg basic_machine=m88k-motorola 3126d1874b2Smrg basic_os=sysv3 3136d1874b2Smrg ;; 3146d1874b2Smrg dicos) 3156d1874b2Smrg basic_machine=i686-pc 3166d1874b2Smrg basic_os=dicos 3176d1874b2Smrg ;; 3186d1874b2Smrg djgpp) 3196d1874b2Smrg basic_machine=i586-pc 3206d1874b2Smrg basic_os=msdosdjgpp 3216d1874b2Smrg ;; 3226d1874b2Smrg ebmon29k) 3236d1874b2Smrg basic_machine=a29k-amd 3246d1874b2Smrg basic_os=ebmon 3256d1874b2Smrg ;; 3266d1874b2Smrg es1800 | OSE68k | ose68k | ose | OSE) 3276d1874b2Smrg basic_machine=m68k-ericsson 3286d1874b2Smrg basic_os=ose 3296d1874b2Smrg ;; 3306d1874b2Smrg gmicro) 3316d1874b2Smrg basic_machine=tron-gmicro 3326d1874b2Smrg basic_os=sysv 3336d1874b2Smrg ;; 3346d1874b2Smrg go32) 3356d1874b2Smrg basic_machine=i386-pc 3366d1874b2Smrg basic_os=go32 3376d1874b2Smrg ;; 3386d1874b2Smrg h8300hms) 3396d1874b2Smrg basic_machine=h8300-hitachi 3406d1874b2Smrg basic_os=hms 3416d1874b2Smrg ;; 3426d1874b2Smrg h8300xray) 3436d1874b2Smrg basic_machine=h8300-hitachi 3446d1874b2Smrg basic_os=xray 3456d1874b2Smrg ;; 3466d1874b2Smrg h8500hms) 3476d1874b2Smrg basic_machine=h8500-hitachi 3486d1874b2Smrg basic_os=hms 3496d1874b2Smrg ;; 3506d1874b2Smrg harris) 3516d1874b2Smrg basic_machine=m88k-harris 3526d1874b2Smrg basic_os=sysv3 3536d1874b2Smrg ;; 3546d1874b2Smrg hp300 | hp300hpux) 3556d1874b2Smrg basic_machine=m68k-hp 3566d1874b2Smrg basic_os=hpux 3576d1874b2Smrg ;; 3586d1874b2Smrg hp300bsd) 3596d1874b2Smrg basic_machine=m68k-hp 3606d1874b2Smrg basic_os=bsd 3616d1874b2Smrg ;; 3626d1874b2Smrg hppaosf) 3636d1874b2Smrg basic_machine=hppa1.1-hp 3646d1874b2Smrg basic_os=osf 3656d1874b2Smrg ;; 3666d1874b2Smrg hppro) 3676d1874b2Smrg basic_machine=hppa1.1-hp 3686d1874b2Smrg basic_os=proelf 3696d1874b2Smrg ;; 3706d1874b2Smrg i386mach) 3716d1874b2Smrg basic_machine=i386-mach 3726d1874b2Smrg basic_os=mach 3736d1874b2Smrg ;; 3746d1874b2Smrg isi68 | isi) 3756d1874b2Smrg basic_machine=m68k-isi 3766d1874b2Smrg basic_os=sysv 3776d1874b2Smrg ;; 3786d1874b2Smrg m68knommu) 3796d1874b2Smrg basic_machine=m68k-unknown 3806d1874b2Smrg basic_os=linux 3816d1874b2Smrg ;; 3826d1874b2Smrg magnum | m3230) 3836d1874b2Smrg basic_machine=mips-mips 3846d1874b2Smrg basic_os=sysv 3856d1874b2Smrg ;; 3866d1874b2Smrg merlin) 3876d1874b2Smrg basic_machine=ns32k-utek 3886d1874b2Smrg basic_os=sysv 3896d1874b2Smrg ;; 3906d1874b2Smrg mingw64) 3916d1874b2Smrg basic_machine=x86_64-pc 3926d1874b2Smrg basic_os=mingw64 3936d1874b2Smrg ;; 3946d1874b2Smrg mingw32) 3956d1874b2Smrg basic_machine=i686-pc 3966d1874b2Smrg basic_os=mingw32 3976d1874b2Smrg ;; 3986d1874b2Smrg mingw32ce) 3996d1874b2Smrg basic_machine=arm-unknown 4006d1874b2Smrg basic_os=mingw32ce 4016d1874b2Smrg ;; 4026d1874b2Smrg monitor) 4036d1874b2Smrg basic_machine=m68k-rom68k 4046d1874b2Smrg basic_os=coff 4056d1874b2Smrg ;; 4066d1874b2Smrg morphos) 4076d1874b2Smrg basic_machine=powerpc-unknown 4086d1874b2Smrg basic_os=morphos 4096d1874b2Smrg ;; 4106d1874b2Smrg moxiebox) 4116d1874b2Smrg basic_machine=moxie-unknown 4126d1874b2Smrg basic_os=moxiebox 4136d1874b2Smrg ;; 4146d1874b2Smrg msdos) 4156d1874b2Smrg basic_machine=i386-pc 4166d1874b2Smrg basic_os=msdos 4176d1874b2Smrg ;; 4186d1874b2Smrg msys) 4196d1874b2Smrg basic_machine=i686-pc 4206d1874b2Smrg basic_os=msys 4216d1874b2Smrg ;; 4226d1874b2Smrg mvs) 4236d1874b2Smrg basic_machine=i370-ibm 4246d1874b2Smrg basic_os=mvs 4256d1874b2Smrg ;; 4266d1874b2Smrg nacl) 4276d1874b2Smrg basic_machine=le32-unknown 4286d1874b2Smrg basic_os=nacl 4296d1874b2Smrg ;; 4306d1874b2Smrg ncr3000) 4316d1874b2Smrg basic_machine=i486-ncr 4326d1874b2Smrg basic_os=sysv4 4336d1874b2Smrg ;; 4346d1874b2Smrg netbsd386) 4356d1874b2Smrg basic_machine=i386-pc 4366d1874b2Smrg basic_os=netbsd 4376d1874b2Smrg ;; 4386d1874b2Smrg netwinder) 4396d1874b2Smrg basic_machine=armv4l-rebel 4406d1874b2Smrg basic_os=linux 4416d1874b2Smrg ;; 4426d1874b2Smrg news | news700 | news800 | news900) 4436d1874b2Smrg basic_machine=m68k-sony 4446d1874b2Smrg basic_os=newsos 4456d1874b2Smrg ;; 4466d1874b2Smrg news1000) 4476d1874b2Smrg basic_machine=m68030-sony 4486d1874b2Smrg basic_os=newsos 4496d1874b2Smrg ;; 4506d1874b2Smrg necv70) 4516d1874b2Smrg basic_machine=v70-nec 4526d1874b2Smrg basic_os=sysv 4536d1874b2Smrg ;; 4546d1874b2Smrg nh3000) 4556d1874b2Smrg basic_machine=m68k-harris 4566d1874b2Smrg basic_os=cxux 4576d1874b2Smrg ;; 4586d1874b2Smrg nh[45]000) 4596d1874b2Smrg basic_machine=m88k-harris 4606d1874b2Smrg basic_os=cxux 4616d1874b2Smrg ;; 4626d1874b2Smrg nindy960) 4636d1874b2Smrg basic_machine=i960-intel 4646d1874b2Smrg basic_os=nindy 4656d1874b2Smrg ;; 4666d1874b2Smrg mon960) 4676d1874b2Smrg basic_machine=i960-intel 4686d1874b2Smrg basic_os=mon960 4696d1874b2Smrg ;; 4706d1874b2Smrg nonstopux) 4716d1874b2Smrg basic_machine=mips-compaq 4726d1874b2Smrg basic_os=nonstopux 4736d1874b2Smrg ;; 4746d1874b2Smrg os400) 4756d1874b2Smrg basic_machine=powerpc-ibm 4766d1874b2Smrg basic_os=os400 4776d1874b2Smrg ;; 4786d1874b2Smrg OSE68000 | ose68000) 4796d1874b2Smrg basic_machine=m68000-ericsson 4806d1874b2Smrg basic_os=ose 4816d1874b2Smrg ;; 4826d1874b2Smrg os68k) 4836d1874b2Smrg basic_machine=m68k-none 4846d1874b2Smrg basic_os=os68k 4856d1874b2Smrg ;; 4866d1874b2Smrg paragon) 4876d1874b2Smrg basic_machine=i860-intel 4886d1874b2Smrg basic_os=osf 4896d1874b2Smrg ;; 4906d1874b2Smrg parisc) 4916d1874b2Smrg basic_machine=hppa-unknown 4926d1874b2Smrg basic_os=linux 4936d1874b2Smrg ;; 4946d1874b2Smrg psp) 4956d1874b2Smrg basic_machine=mipsallegrexel-sony 4966d1874b2Smrg basic_os=psp 4976d1874b2Smrg ;; 4986d1874b2Smrg pw32) 4996d1874b2Smrg basic_machine=i586-unknown 5006d1874b2Smrg basic_os=pw32 5016d1874b2Smrg ;; 5026d1874b2Smrg rdos | rdos64) 5036d1874b2Smrg basic_machine=x86_64-pc 5046d1874b2Smrg basic_os=rdos 5056d1874b2Smrg ;; 5066d1874b2Smrg rdos32) 5076d1874b2Smrg basic_machine=i386-pc 5086d1874b2Smrg basic_os=rdos 5096d1874b2Smrg ;; 5106d1874b2Smrg rom68k) 5116d1874b2Smrg basic_machine=m68k-rom68k 5126d1874b2Smrg basic_os=coff 5136d1874b2Smrg ;; 5146d1874b2Smrg sa29200) 5156d1874b2Smrg basic_machine=a29k-amd 5166d1874b2Smrg basic_os=udi 5176d1874b2Smrg ;; 5186d1874b2Smrg sei) 5196d1874b2Smrg basic_machine=mips-sei 5206d1874b2Smrg basic_os=seiux 5216d1874b2Smrg ;; 5226d1874b2Smrg sequent) 5236d1874b2Smrg basic_machine=i386-sequent 5246d1874b2Smrg basic_os= 5256d1874b2Smrg ;; 5266d1874b2Smrg sps7) 5276d1874b2Smrg basic_machine=m68k-bull 5286d1874b2Smrg basic_os=sysv2 5296d1874b2Smrg ;; 5306d1874b2Smrg st2000) 5316d1874b2Smrg basic_machine=m68k-tandem 5326d1874b2Smrg basic_os= 5336d1874b2Smrg ;; 5346d1874b2Smrg stratus) 5356d1874b2Smrg basic_machine=i860-stratus 5366d1874b2Smrg basic_os=sysv4 5376d1874b2Smrg ;; 5386d1874b2Smrg sun2) 5396d1874b2Smrg basic_machine=m68000-sun 5406d1874b2Smrg basic_os= 5416d1874b2Smrg ;; 5426d1874b2Smrg sun2os3) 5436d1874b2Smrg basic_machine=m68000-sun 5446d1874b2Smrg basic_os=sunos3 5456d1874b2Smrg ;; 5466d1874b2Smrg sun2os4) 5476d1874b2Smrg basic_machine=m68000-sun 5486d1874b2Smrg basic_os=sunos4 5496d1874b2Smrg ;; 5506d1874b2Smrg sun3) 5516d1874b2Smrg basic_machine=m68k-sun 5526d1874b2Smrg basic_os= 5536d1874b2Smrg ;; 5546d1874b2Smrg sun3os3) 5556d1874b2Smrg basic_machine=m68k-sun 5566d1874b2Smrg basic_os=sunos3 5576d1874b2Smrg ;; 5586d1874b2Smrg sun3os4) 5596d1874b2Smrg basic_machine=m68k-sun 5606d1874b2Smrg basic_os=sunos4 5616d1874b2Smrg ;; 5626d1874b2Smrg sun4) 5636d1874b2Smrg basic_machine=sparc-sun 5646d1874b2Smrg basic_os= 5656d1874b2Smrg ;; 5666d1874b2Smrg sun4os3) 5676d1874b2Smrg basic_machine=sparc-sun 5686d1874b2Smrg basic_os=sunos3 5696d1874b2Smrg ;; 5706d1874b2Smrg sun4os4) 5716d1874b2Smrg basic_machine=sparc-sun 5726d1874b2Smrg basic_os=sunos4 5736d1874b2Smrg ;; 5746d1874b2Smrg sun4sol2) 5756d1874b2Smrg basic_machine=sparc-sun 5766d1874b2Smrg basic_os=solaris2 5776d1874b2Smrg ;; 5786d1874b2Smrg sun386 | sun386i | roadrunner) 5796d1874b2Smrg basic_machine=i386-sun 5806d1874b2Smrg basic_os= 5816d1874b2Smrg ;; 5826d1874b2Smrg sv1) 5836d1874b2Smrg basic_machine=sv1-cray 5846d1874b2Smrg basic_os=unicos 5856d1874b2Smrg ;; 5866d1874b2Smrg symmetry) 5876d1874b2Smrg basic_machine=i386-sequent 5886d1874b2Smrg basic_os=dynix 5896d1874b2Smrg ;; 5906d1874b2Smrg t3e) 5916d1874b2Smrg basic_machine=alphaev5-cray 5926d1874b2Smrg basic_os=unicos 5936d1874b2Smrg ;; 5946d1874b2Smrg t90) 5956d1874b2Smrg basic_machine=t90-cray 5966d1874b2Smrg basic_os=unicos 5976d1874b2Smrg ;; 5986d1874b2Smrg toad1) 5996d1874b2Smrg basic_machine=pdp10-xkl 6006d1874b2Smrg basic_os=tops20 6016d1874b2Smrg ;; 6026d1874b2Smrg tpf) 6036d1874b2Smrg basic_machine=s390x-ibm 6046d1874b2Smrg basic_os=tpf 6056d1874b2Smrg ;; 6066d1874b2Smrg udi29k) 6076d1874b2Smrg basic_machine=a29k-amd 6086d1874b2Smrg basic_os=udi 6096d1874b2Smrg ;; 6106d1874b2Smrg ultra3) 6116d1874b2Smrg basic_machine=a29k-nyu 6126d1874b2Smrg basic_os=sym1 6136d1874b2Smrg ;; 6146d1874b2Smrg v810 | necv810) 6156d1874b2Smrg basic_machine=v810-nec 6166d1874b2Smrg basic_os=none 6176d1874b2Smrg ;; 6186d1874b2Smrg vaxv) 6196d1874b2Smrg basic_machine=vax-dec 6206d1874b2Smrg basic_os=sysv 6216d1874b2Smrg ;; 6226d1874b2Smrg vms) 6236d1874b2Smrg basic_machine=vax-dec 6246d1874b2Smrg basic_os=vms 6256d1874b2Smrg ;; 6266d1874b2Smrg vsta) 6276d1874b2Smrg basic_machine=i386-pc 6286d1874b2Smrg basic_os=vsta 6296d1874b2Smrg ;; 6306d1874b2Smrg vxworks960) 6316d1874b2Smrg basic_machine=i960-wrs 6326d1874b2Smrg basic_os=vxworks 6336d1874b2Smrg ;; 6346d1874b2Smrg vxworks68) 6356d1874b2Smrg basic_machine=m68k-wrs 6366d1874b2Smrg basic_os=vxworks 6376d1874b2Smrg ;; 6386d1874b2Smrg vxworks29k) 6396d1874b2Smrg basic_machine=a29k-wrs 6406d1874b2Smrg basic_os=vxworks 6416d1874b2Smrg ;; 6426d1874b2Smrg xbox) 6436d1874b2Smrg basic_machine=i686-pc 6446d1874b2Smrg basic_os=mingw32 6456d1874b2Smrg ;; 6466d1874b2Smrg ymp) 6476d1874b2Smrg basic_machine=ymp-cray 6486d1874b2Smrg basic_os=unicos 6496d1874b2Smrg ;; 6506d1874b2Smrg *) 6516d1874b2Smrg basic_machine=$1 6526d1874b2Smrg basic_os= 6536d1874b2Smrg ;; 6546d1874b2Smrg esac 655e6232409Smrg ;; 656e6232409Smrgesac 657e6232409Smrg 6586d1874b2Smrg# Decode 1-component or ad-hoc basic machines 659e6232409Smrgcase $basic_machine in 6606d1874b2Smrg # Here we handle the default manufacturer of certain CPU types. It is in 6616d1874b2Smrg # some cases the only manufacturer, in others, it is the most popular. 6626d1874b2Smrg w89k) 6636d1874b2Smrg cpu=hppa1.1 6646d1874b2Smrg vendor=winbond 6656a45684fSmrg ;; 6666d1874b2Smrg op50n) 6676d1874b2Smrg cpu=hppa1.1 6686d1874b2Smrg vendor=oki 669e6232409Smrg ;; 6706d1874b2Smrg op60c) 6716d1874b2Smrg cpu=hppa1.1 6726d1874b2Smrg vendor=oki 673e6232409Smrg ;; 6746d1874b2Smrg ibm*) 6756d1874b2Smrg cpu=i370 6766d1874b2Smrg vendor=ibm 677e6232409Smrg ;; 6786d1874b2Smrg orion105) 6796d1874b2Smrg cpu=clipper 6806d1874b2Smrg vendor=highlevel 6816a45684fSmrg ;; 6826d1874b2Smrg mac | mpw | mac-mpw) 6836d1874b2Smrg cpu=m68k 6846d1874b2Smrg vendor=apple 68594a251fdSmrg ;; 6866d1874b2Smrg pmac | pmac-mpw) 6876d1874b2Smrg cpu=powerpc 6886d1874b2Smrg vendor=apple 68994a251fdSmrg ;; 69094a251fdSmrg 691e6232409Smrg # Recognize the various machine names and aliases which stand 692e6232409Smrg # for a CPU type and a company and sometimes even an OS. 693e6232409Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6946d1874b2Smrg cpu=m68000 6956d1874b2Smrg vendor=att 696e6232409Smrg ;; 697e6232409Smrg 3b*) 6986d1874b2Smrg cpu=we32k 6996d1874b2Smrg vendor=att 7008fff3f40Smrg ;; 7018fff3f40Smrg bluegene*) 7026d1874b2Smrg cpu=powerpc 7036d1874b2Smrg vendor=ibm 7046d1874b2Smrg basic_os=cnk 705e6232409Smrg ;; 706e6232409Smrg decsystem10* | dec10*) 7076d1874b2Smrg cpu=pdp10 7086d1874b2Smrg vendor=dec 7096d1874b2Smrg basic_os=tops10 710e6232409Smrg ;; 711e6232409Smrg decsystem20* | dec20*) 7126d1874b2Smrg cpu=pdp10 7136d1874b2Smrg vendor=dec 7146d1874b2Smrg basic_os=tops20 715e6232409Smrg ;; 716e6232409Smrg delta | 3300 | motorola-3300 | motorola-delta \ 717e6232409Smrg | 3300-motorola | delta-motorola) 7186d1874b2Smrg cpu=m68k 7196d1874b2Smrg vendor=motorola 720e6232409Smrg ;; 721c05e7a3eSmrg dpx2*) 7226d1874b2Smrg cpu=m68k 7236d1874b2Smrg vendor=bull 7246d1874b2Smrg basic_os=sysv3 725e6232409Smrg ;; 726e6232409Smrg encore | umax | mmax) 7276d1874b2Smrg cpu=ns32k 7286d1874b2Smrg vendor=encore 729e6232409Smrg ;; 7306d1874b2Smrg elxsi) 7316d1874b2Smrg cpu=elxsi 7326d1874b2Smrg vendor=elxsi 7336d1874b2Smrg basic_os=${basic_os:-bsd} 734e6232409Smrg ;; 735e6232409Smrg fx2800) 7366d1874b2Smrg cpu=i860 7376d1874b2Smrg vendor=alliant 738e6232409Smrg ;; 739e6232409Smrg genix) 7406d1874b2Smrg cpu=ns32k 7416d1874b2Smrg vendor=ns 742e6232409Smrg ;; 743e6232409Smrg h3050r* | hiux*) 7446d1874b2Smrg cpu=hppa1.1 7456d1874b2Smrg vendor=hitachi 7466d1874b2Smrg basic_os=hiuxwe2 747e6232409Smrg ;; 748e6232409Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7496d1874b2Smrg cpu=hppa1.0 7506d1874b2Smrg vendor=hp 751e6232409Smrg ;; 752e6232409Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7536d1874b2Smrg cpu=m68000 7546d1874b2Smrg vendor=hp 755e6232409Smrg ;; 756e6232409Smrg hp9k3[2-9][0-9]) 7576d1874b2Smrg cpu=m68k 7586d1874b2Smrg vendor=hp 759e6232409Smrg ;; 760e6232409Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7616d1874b2Smrg cpu=hppa1.0 7626d1874b2Smrg vendor=hp 763e6232409Smrg ;; 764e6232409Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7656d1874b2Smrg cpu=hppa1.1 7666d1874b2Smrg vendor=hp 767e6232409Smrg ;; 768e6232409Smrg hp9k78[0-9] | hp78[0-9]) 769e6232409Smrg # FIXME: really hppa2.0-hp 7706d1874b2Smrg cpu=hppa1.1 7716d1874b2Smrg vendor=hp 772e6232409Smrg ;; 773e6232409Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774e6232409Smrg # FIXME: really hppa2.0-hp 7756d1874b2Smrg cpu=hppa1.1 7766d1874b2Smrg vendor=hp 777e6232409Smrg ;; 778e6232409Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7796d1874b2Smrg cpu=hppa1.1 7806d1874b2Smrg vendor=hp 781e6232409Smrg ;; 782e6232409Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7836d1874b2Smrg cpu=hppa1.0 7846d1874b2Smrg vendor=hp 785e6232409Smrg ;; 786e6232409Smrg i*86v32) 7876d1874b2Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7886d1874b2Smrg vendor=pc 7896d1874b2Smrg basic_os=sysv32 790e6232409Smrg ;; 791e6232409Smrg i*86v4*) 7926d1874b2Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7936d1874b2Smrg vendor=pc 7946d1874b2Smrg basic_os=sysv4 795e6232409Smrg ;; 796e6232409Smrg i*86v) 7976d1874b2Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7986d1874b2Smrg vendor=pc 7996d1874b2Smrg basic_os=sysv 800e6232409Smrg ;; 801e6232409Smrg i*86sol2) 8026d1874b2Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8036d1874b2Smrg vendor=pc 8046d1874b2Smrg basic_os=solaris2 805e6232409Smrg ;; 8066d1874b2Smrg j90 | j90-cray) 8076d1874b2Smrg cpu=j90 8086d1874b2Smrg vendor=cray 8096d1874b2Smrg basic_os=${basic_os:-unicos} 810e6232409Smrg ;; 811e6232409Smrg iris | iris4d) 8126d1874b2Smrg cpu=mips 8136d1874b2Smrg vendor=sgi 8146d1874b2Smrg case $basic_os in 8156d1874b2Smrg irix*) 816e6232409Smrg ;; 817e6232409Smrg *) 8186d1874b2Smrg basic_os=irix4 819e6232409Smrg ;; 820e6232409Smrg esac 821e6232409Smrg ;; 822e6232409Smrg miniframe) 8236d1874b2Smrg cpu=m68000 8246d1874b2Smrg vendor=convergent 825e6232409Smrg ;; 8266d1874b2Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8276d1874b2Smrg cpu=m68k 8286d1874b2Smrg vendor=atari 8296d1874b2Smrg basic_os=mint 830e6232409Smrg ;; 831e6232409Smrg news-3600 | risc-news) 8326d1874b2Smrg cpu=mips 8336d1874b2Smrg vendor=sony 8346d1874b2Smrg basic_os=newsos 835e6232409Smrg ;; 836c05e7a3eSmrg next | m*-next) 8376d1874b2Smrg cpu=m68k 8386d1874b2Smrg vendor=next 8396d1874b2Smrg case $basic_os in 8406d1874b2Smrg openstep*) 8416d1874b2Smrg ;; 8426d1874b2Smrg nextstep*) 843e6232409Smrg ;; 8446d1874b2Smrg ns2*) 8456d1874b2Smrg basic_os=nextstep2 846e6232409Smrg ;; 847e6232409Smrg *) 8486d1874b2Smrg basic_os=nextstep3 849e6232409Smrg ;; 850e6232409Smrg esac 851e6232409Smrg ;; 852e6232409Smrg np1) 8536d1874b2Smrg cpu=np1 8546d1874b2Smrg vendor=gould 855c05e7a3eSmrg ;; 856e6232409Smrg op50n-* | op60c-*) 8576d1874b2Smrg cpu=hppa1.1 8586d1874b2Smrg vendor=oki 8596d1874b2Smrg basic_os=proelf 860e6232409Smrg ;; 861e6232409Smrg pa-hitachi) 8626d1874b2Smrg cpu=hppa1.1 8636d1874b2Smrg vendor=hitachi 8646d1874b2Smrg basic_os=hiuxwe2 8658fff3f40Smrg ;; 866e6232409Smrg pbd) 8676d1874b2Smrg cpu=sparc 8686d1874b2Smrg vendor=tti 869e6232409Smrg ;; 870e6232409Smrg pbb) 8716d1874b2Smrg cpu=m68k 8726d1874b2Smrg vendor=tti 873e6232409Smrg ;; 8746d1874b2Smrg pc532) 8756d1874b2Smrg cpu=ns32k 8766d1874b2Smrg vendor=pc532 877e6232409Smrg ;; 878e6232409Smrg pn) 8796d1874b2Smrg cpu=pn 8806d1874b2Smrg vendor=gould 881e6232409Smrg ;; 8826d1874b2Smrg power) 8836d1874b2Smrg cpu=power 8846d1874b2Smrg vendor=ibm 885e6232409Smrg ;; 8866d1874b2Smrg ps2) 8876d1874b2Smrg cpu=i386 8886d1874b2Smrg vendor=ibm 889e6232409Smrg ;; 8906d1874b2Smrg rm[46]00) 8916d1874b2Smrg cpu=mips 8926d1874b2Smrg vendor=siemens 893e6232409Smrg ;; 8946d1874b2Smrg rtpc | rtpc-*) 8956d1874b2Smrg cpu=romp 8966d1874b2Smrg vendor=ibm 897e6232409Smrg ;; 8986d1874b2Smrg sde) 8996d1874b2Smrg cpu=mipsisa32 9006d1874b2Smrg vendor=sde 9016d1874b2Smrg basic_os=${basic_os:-elf} 902e6232409Smrg ;; 9036d1874b2Smrg simso-wrs) 9046d1874b2Smrg cpu=sparclite 9056d1874b2Smrg vendor=wrs 9066d1874b2Smrg basic_os=vxworks 907e6232409Smrg ;; 9086d1874b2Smrg tower | tower-32) 9096d1874b2Smrg cpu=m68k 9106d1874b2Smrg vendor=ncr 911e6232409Smrg ;; 9126d1874b2Smrg vpp*|vx|vx-*) 9136d1874b2Smrg cpu=f301 9146d1874b2Smrg vendor=fujitsu 9156a45684fSmrg ;; 9166d1874b2Smrg w65) 9176d1874b2Smrg cpu=w65 9186d1874b2Smrg vendor=wdc 919e6232409Smrg ;; 9206d1874b2Smrg w89k-*) 9216d1874b2Smrg cpu=hppa1.1 9226d1874b2Smrg vendor=winbond 9236d1874b2Smrg basic_os=proelf 924e6232409Smrg ;; 9256d1874b2Smrg none) 9266d1874b2Smrg cpu=none 9276d1874b2Smrg vendor=none 928e6232409Smrg ;; 9296d1874b2Smrg leon|leon[3-9]) 9306d1874b2Smrg cpu=sparc 9316d1874b2Smrg vendor=$basic_machine 932e6232409Smrg ;; 9336d1874b2Smrg leon-*|leon[3-9]-*) 9346d1874b2Smrg cpu=sparc 9356d1874b2Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936e6232409Smrg ;; 9376d1874b2Smrg 9386d1874b2Smrg *-*) 9396d1874b2Smrg # shellcheck disable=SC2162 9406d1874b2Smrg saved_IFS=$IFS 9416d1874b2Smrg IFS="-" read cpu vendor <<EOF 9426d1874b2Smrg$basic_machine 9436d1874b2SmrgEOF 9446d1874b2Smrg IFS=$saved_IFS 945e6232409Smrg ;; 9466d1874b2Smrg # We use `pc' rather than `unknown' 9476d1874b2Smrg # because (1) that's what they normally are, and 9486d1874b2Smrg # (2) the word "unknown" tends to confuse beginning users. 9496d1874b2Smrg i*86 | x86_64) 9506d1874b2Smrg cpu=$basic_machine 9516d1874b2Smrg vendor=pc 952e6232409Smrg ;; 9536d1874b2Smrg # These rules are duplicated from below for sake of the special case above; 9546d1874b2Smrg # i.e. things that normalized to x86 arches should also default to "pc" 9556d1874b2Smrg pc98) 9566d1874b2Smrg cpu=i386 9576d1874b2Smrg vendor=pc 958e6232409Smrg ;; 9596d1874b2Smrg x64 | amd64) 9606d1874b2Smrg cpu=x86_64 9616d1874b2Smrg vendor=pc 962e6232409Smrg ;; 9636d1874b2Smrg # Recognize the basic CPU types without company name. 9646d1874b2Smrg *) 9656d1874b2Smrg cpu=$basic_machine 9666d1874b2Smrg vendor=unknown 967e6232409Smrg ;; 9686d1874b2Smrgesac 9696d1874b2Smrg 9706d1874b2Smrgunset -v basic_machine 9716d1874b2Smrg 9726d1874b2Smrg# Decode basic machines in the full and proper CPU-Company form. 9736d1874b2Smrgcase $cpu-$vendor in 9746d1874b2Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9756d1874b2Smrg # some cases the only manufacturer, in others, it is the most popular. 9766d1874b2Smrg craynv-unknown) 9776d1874b2Smrg vendor=cray 9786d1874b2Smrg basic_os=${basic_os:-unicosmp} 979e6232409Smrg ;; 9806d1874b2Smrg c90-unknown | c90-cray) 9816d1874b2Smrg vendor=cray 9826d1874b2Smrg basic_os=${Basic_os:-unicos} 983e6232409Smrg ;; 9846d1874b2Smrg fx80-unknown) 9856d1874b2Smrg vendor=alliant 986e6232409Smrg ;; 9876d1874b2Smrg romp-unknown) 9886d1874b2Smrg vendor=ibm 989e6232409Smrg ;; 9906d1874b2Smrg mmix-unknown) 9916d1874b2Smrg vendor=knuth 992e6232409Smrg ;; 9936d1874b2Smrg microblaze-unknown | microblazeel-unknown) 9946d1874b2Smrg vendor=xilinx 995e6232409Smrg ;; 9966d1874b2Smrg rs6000-unknown) 9976d1874b2Smrg vendor=ibm 998e6232409Smrg ;; 9996d1874b2Smrg vax-unknown) 10006d1874b2Smrg vendor=dec 1001e6232409Smrg ;; 10026d1874b2Smrg pdp11-unknown) 10036d1874b2Smrg vendor=dec 100494a251fdSmrg ;; 10056d1874b2Smrg we32k-unknown) 10066d1874b2Smrg vendor=att 1007e6232409Smrg ;; 10086d1874b2Smrg cydra-unknown) 10096d1874b2Smrg vendor=cydrome 1010e6232409Smrg ;; 10116d1874b2Smrg i370-ibm*) 10126d1874b2Smrg vendor=ibm 1013e6232409Smrg ;; 10146d1874b2Smrg orion-unknown) 10156d1874b2Smrg vendor=highlevel 1016e6232409Smrg ;; 10176d1874b2Smrg xps-unknown | xps100-unknown) 10186d1874b2Smrg cpu=xps100 10196d1874b2Smrg vendor=honeywell 1020e6232409Smrg ;; 10216d1874b2Smrg 10226d1874b2Smrg # Here we normalize CPU types with a missing or matching vendor 10236d1874b2Smrg dpx20-unknown | dpx20-bull) 10246d1874b2Smrg cpu=rs6000 10256d1874b2Smrg vendor=bull 10266d1874b2Smrg basic_os=${basic_os:-bosx} 1027e6232409Smrg ;; 10286d1874b2Smrg 10296d1874b2Smrg # Here we normalize CPU types irrespective of the vendor 10306d1874b2Smrg amd64-*) 10316d1874b2Smrg cpu=x86_64 1032e6232409Smrg ;; 10336d1874b2Smrg blackfin-*) 10346d1874b2Smrg cpu=bfin 10356d1874b2Smrg basic_os=linux 1036e6232409Smrg ;; 10376d1874b2Smrg c54x-*) 10386d1874b2Smrg cpu=tic54x 1039e6232409Smrg ;; 10406d1874b2Smrg c55x-*) 10416d1874b2Smrg cpu=tic55x 1042e6232409Smrg ;; 10436d1874b2Smrg c6x-*) 10446d1874b2Smrg cpu=tic6x 1045e6232409Smrg ;; 10466d1874b2Smrg e500v[12]-*) 10476d1874b2Smrg cpu=powerpc 10486d1874b2Smrg basic_os=${basic_os}"spe" 1049e6232409Smrg ;; 10506d1874b2Smrg mips3*-*) 10516d1874b2Smrg cpu=mips64 1052e6232409Smrg ;; 10536d1874b2Smrg ms1-*) 10546d1874b2Smrg cpu=mt 1055e6232409Smrg ;; 10566d1874b2Smrg m68knommu-*) 10576d1874b2Smrg cpu=m68k 10586d1874b2Smrg basic_os=linux 1059e6232409Smrg ;; 10606d1874b2Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10616d1874b2Smrg cpu=s12z 10628fff3f40Smrg ;; 10636d1874b2Smrg openrisc-*) 10646d1874b2Smrg cpu=or32 1065e6232409Smrg ;; 10666d1874b2Smrg parisc-*) 10676d1874b2Smrg cpu=hppa 10686d1874b2Smrg basic_os=linux 1069e6232409Smrg ;; 10706d1874b2Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10716d1874b2Smrg cpu=i586 1072e6232409Smrg ;; 10736d1874b2Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 10746d1874b2Smrg cpu=i686 1075e6232409Smrg ;; 10766d1874b2Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10776d1874b2Smrg cpu=i686 1078e6232409Smrg ;; 10796d1874b2Smrg pentium4-*) 10806d1874b2Smrg cpu=i786 1081e6232409Smrg ;; 10826d1874b2Smrg pc98-*) 10836d1874b2Smrg cpu=i386 1084e6232409Smrg ;; 10856d1874b2Smrg ppc-* | ppcbe-*) 10866d1874b2Smrg cpu=powerpc 1087e6232409Smrg ;; 10886d1874b2Smrg ppcle-* | powerpclittle-*) 10896d1874b2Smrg cpu=powerpcle 1090e6232409Smrg ;; 10916d1874b2Smrg ppc64-*) 10926d1874b2Smrg cpu=powerpc64 1093e6232409Smrg ;; 10946d1874b2Smrg ppc64le-* | powerpc64little-*) 10956d1874b2Smrg cpu=powerpc64le 1096e6232409Smrg ;; 10976d1874b2Smrg sb1-*) 10986d1874b2Smrg cpu=mipsisa64sb1 1099e6232409Smrg ;; 11006d1874b2Smrg sb1el-*) 11016d1874b2Smrg cpu=mipsisa64sb1el 1102e6232409Smrg ;; 11036d1874b2Smrg sh5e[lb]-*) 11046d1874b2Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1105e6232409Smrg ;; 11066d1874b2Smrg spur-*) 11076d1874b2Smrg cpu=spur 1108e6232409Smrg ;; 11096d1874b2Smrg strongarm-* | thumb-*) 11106d1874b2Smrg cpu=arm 1111e6232409Smrg ;; 11126d1874b2Smrg tx39-*) 11136d1874b2Smrg cpu=mipstx39 1114c05e7a3eSmrg ;; 11156d1874b2Smrg tx39el-*) 11166d1874b2Smrg cpu=mipstx39el 1117e6232409Smrg ;; 11186d1874b2Smrg x64-*) 11196d1874b2Smrg cpu=x86_64 1120e6232409Smrg ;; 112194a251fdSmrg xscale-* | xscalee[bl]-*) 11226d1874b2Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1123e6232409Smrg ;; 11246d1874b2Smrg arm64-*) 11256d1874b2Smrg cpu=aarch64 1126e6232409Smrg ;; 1127e6232409Smrg 11286d1874b2Smrg # Recognize the canonical CPU Types that limit and/or modify the 11296d1874b2Smrg # company names they are paired with. 11306d1874b2Smrg cr16-*) 11316d1874b2Smrg basic_os=${basic_os:-elf} 1132e6232409Smrg ;; 11336d1874b2Smrg crisv32-* | etraxfs*-*) 11346d1874b2Smrg cpu=crisv32 11356d1874b2Smrg vendor=axis 1136e6232409Smrg ;; 11376d1874b2Smrg cris-* | etrax*-*) 11386d1874b2Smrg cpu=cris 11396d1874b2Smrg vendor=axis 1140e6232409Smrg ;; 11416d1874b2Smrg crx-*) 11426d1874b2Smrg basic_os=${basic_os:-elf} 1143e6232409Smrg ;; 11446d1874b2Smrg neo-tandem) 11456d1874b2Smrg cpu=neo 11466d1874b2Smrg vendor=tandem 1147e6232409Smrg ;; 11486d1874b2Smrg nse-tandem) 11496d1874b2Smrg cpu=nse 11506d1874b2Smrg vendor=tandem 1151e6232409Smrg ;; 11526d1874b2Smrg nsr-tandem) 11536d1874b2Smrg cpu=nsr 11546d1874b2Smrg vendor=tandem 1155e6232409Smrg ;; 11566d1874b2Smrg nsv-tandem) 11576d1874b2Smrg cpu=nsv 11586d1874b2Smrg vendor=tandem 1159e6232409Smrg ;; 11606d1874b2Smrg nsx-tandem) 11616d1874b2Smrg cpu=nsx 11626d1874b2Smrg vendor=tandem 1163e6232409Smrg ;; 11646d1874b2Smrg mipsallegrexel-sony) 11656d1874b2Smrg cpu=mipsallegrexel 11666d1874b2Smrg vendor=sony 1167e6232409Smrg ;; 11686d1874b2Smrg tile*-*) 11696d1874b2Smrg basic_os=${basic_os:-linux-gnu} 1170e6232409Smrg ;; 11716d1874b2Smrg 1172e6232409Smrg *) 11736d1874b2Smrg # Recognize the canonical CPU types that are allowed with any 11746d1874b2Smrg # company name. 11756d1874b2Smrg case $cpu in 11766d1874b2Smrg 1750a | 580 \ 11776d1874b2Smrg | a29k \ 11786d1874b2Smrg | aarch64 | aarch64_be \ 11796d1874b2Smrg | abacus \ 11806d1874b2Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11816d1874b2Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11826d1874b2Smrg | alphapca5[67] | alpha64pca5[67] \ 11836d1874b2Smrg | am33_2.0 \ 11846d1874b2Smrg | amdgcn \ 11856d1874b2Smrg | arc | arceb | arc32 | arc64 \ 11866d1874b2Smrg | arm | arm[lb]e | arme[lb] | armv* \ 11876d1874b2Smrg | avr | avr32 \ 11886d1874b2Smrg | asmjs \ 11896d1874b2Smrg | ba \ 11906d1874b2Smrg | be32 | be64 \ 11916d1874b2Smrg | bfin | bpf | bs2000 \ 11926d1874b2Smrg | c[123]* | c30 | [cjt]90 | c4x \ 11936d1874b2Smrg | c8051 | clipper | craynv | csky | cydra \ 11946d1874b2Smrg | d10v | d30v | dlx | dsp16xx \ 11956d1874b2Smrg | e2k | elxsi | epiphany \ 11966d1874b2Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 11976d1874b2Smrg | h8300 | h8500 \ 11986d1874b2Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 11996d1874b2Smrg | hexagon \ 12006d1874b2Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12016d1874b2Smrg | ip2k | iq2000 \ 12026d1874b2Smrg | k1om \ 12036d1874b2Smrg | le32 | le64 \ 12046d1874b2Smrg | lm32 \ 12056d1874b2Smrg | loongarch32 | loongarch64 | loongarchx32 \ 12066d1874b2Smrg | m32c | m32r | m32rle \ 12076d1874b2Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12086d1874b2Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12096d1874b2Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12106d1874b2Smrg | microblaze | microblazeel \ 12116d1874b2Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12126d1874b2Smrg | mips16 \ 12136d1874b2Smrg | mips64 | mips64eb | mips64el \ 12146d1874b2Smrg | mips64octeon | mips64octeonel \ 12156d1874b2Smrg | mips64orion | mips64orionel \ 12166d1874b2Smrg | mips64r5900 | mips64r5900el \ 12176d1874b2Smrg | mips64vr | mips64vrel \ 12186d1874b2Smrg | mips64vr4100 | mips64vr4100el \ 12196d1874b2Smrg | mips64vr4300 | mips64vr4300el \ 12206d1874b2Smrg | mips64vr5000 | mips64vr5000el \ 12216d1874b2Smrg | mips64vr5900 | mips64vr5900el \ 12226d1874b2Smrg | mipsisa32 | mipsisa32el \ 12236d1874b2Smrg | mipsisa32r2 | mipsisa32r2el \ 12246d1874b2Smrg | mipsisa32r3 | mipsisa32r3el \ 12256d1874b2Smrg | mipsisa32r5 | mipsisa32r5el \ 12266d1874b2Smrg | mipsisa32r6 | mipsisa32r6el \ 12276d1874b2Smrg | mipsisa64 | mipsisa64el \ 12286d1874b2Smrg | mipsisa64r2 | mipsisa64r2el \ 12296d1874b2Smrg | mipsisa64r3 | mipsisa64r3el \ 12306d1874b2Smrg | mipsisa64r5 | mipsisa64r5el \ 12316d1874b2Smrg | mipsisa64r6 | mipsisa64r6el \ 12326d1874b2Smrg | mipsisa64sb1 | mipsisa64sb1el \ 12336d1874b2Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 12346d1874b2Smrg | mipsr5900 | mipsr5900el \ 12356d1874b2Smrg | mipstx39 | mipstx39el \ 12366d1874b2Smrg | mmix \ 12376d1874b2Smrg | mn10200 | mn10300 \ 12386d1874b2Smrg | moxie \ 12396d1874b2Smrg | mt \ 12406d1874b2Smrg | msp430 \ 12416d1874b2Smrg | nds32 | nds32le | nds32be \ 12426d1874b2Smrg | nfp \ 12436d1874b2Smrg | nios | nios2 | nios2eb | nios2el \ 12446d1874b2Smrg | none | np1 | ns16k | ns32k | nvptx \ 12456d1874b2Smrg | open8 \ 12466d1874b2Smrg | or1k* \ 12476d1874b2Smrg | or32 \ 12486d1874b2Smrg | orion \ 12496d1874b2Smrg | picochip \ 12506d1874b2Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12516d1874b2Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12526d1874b2Smrg | pru \ 12536d1874b2Smrg | pyramid \ 12546d1874b2Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12556d1874b2Smrg | rl78 | romp | rs6000 | rx \ 12566d1874b2Smrg | s390 | s390x \ 12576d1874b2Smrg | score \ 12586d1874b2Smrg | sh | shl \ 12596d1874b2Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12606d1874b2Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12616d1874b2Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12626d1874b2Smrg | sparclite \ 12636d1874b2Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12646d1874b2Smrg | spu \ 12656d1874b2Smrg | tahoe \ 12666d1874b2Smrg | thumbv7* \ 12676d1874b2Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12686d1874b2Smrg | tron \ 12696d1874b2Smrg | ubicom32 \ 12706d1874b2Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12716d1874b2Smrg | vax \ 12726d1874b2Smrg | visium \ 12736d1874b2Smrg | w65 \ 12746d1874b2Smrg | wasm32 | wasm64 \ 12756d1874b2Smrg | we32k \ 12766d1874b2Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12776d1874b2Smrg | xstormy16 | xtensa* \ 12786d1874b2Smrg | ymp \ 12796d1874b2Smrg | z8k | z80) 12806d1874b2Smrg ;; 12816d1874b2Smrg 12826d1874b2Smrg *) 12836d1874b2Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12846d1874b2Smrg exit 1 12856d1874b2Smrg ;; 12866d1874b2Smrg esac 1287e6232409Smrg ;; 1288e6232409Smrgesac 1289e6232409Smrg 1290e6232409Smrg# Here we canonicalize certain aliases for manufacturers. 12916d1874b2Smrgcase $vendor in 12926d1874b2Smrg digital*) 12936d1874b2Smrg vendor=dec 1294e6232409Smrg ;; 12956d1874b2Smrg commodore*) 12966d1874b2Smrg vendor=cbm 1297e6232409Smrg ;; 1298e6232409Smrg *) 1299e6232409Smrg ;; 1300e6232409Smrgesac 1301e6232409Smrg 1302e6232409Smrg# Decode manufacturer-specific aliases for certain operating systems. 1303e6232409Smrg 13046d1874b2Smrgif test x$basic_os != x 1305e6232409Smrgthen 13066d1874b2Smrg 13076d1874b2Smrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 13086d1874b2Smrg# set os. 13096d1874b2Smrgcase $basic_os in 13106d1874b2Smrg gnu/linux*) 13116d1874b2Smrg kernel=linux 13126d1874b2Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13136d1874b2Smrg ;; 13146d1874b2Smrg os2-emx) 13156d1874b2Smrg kernel=os2 13166d1874b2Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13176d1874b2Smrg ;; 13186d1874b2Smrg nto-qnx*) 13196d1874b2Smrg kernel=nto 13206d1874b2Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13216d1874b2Smrg ;; 13226d1874b2Smrg *-*) 13236d1874b2Smrg # shellcheck disable=SC2162 13246d1874b2Smrg saved_IFS=$IFS 13256d1874b2Smrg IFS="-" read kernel os <<EOF 13266d1874b2Smrg$basic_os 13276d1874b2SmrgEOF 13286d1874b2Smrg IFS=$saved_IFS 13296d1874b2Smrg ;; 13306d1874b2Smrg # Default OS when just kernel was specified 13316d1874b2Smrg nto*) 13326d1874b2Smrg kernel=nto 13336d1874b2Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13346d1874b2Smrg ;; 13356d1874b2Smrg linux*) 13366d1874b2Smrg kernel=linux 13376d1874b2Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13386d1874b2Smrg ;; 13396d1874b2Smrg *) 13406d1874b2Smrg kernel= 13416d1874b2Smrg os=$basic_os 13426d1874b2Smrg ;; 13436d1874b2Smrgesac 13446d1874b2Smrg 13456d1874b2Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13466d1874b2Smrg# etc.) 1347e6232409Smrgcase $os in 1348c05e7a3eSmrg # First match some system type aliases that might get confused 1349c05e7a3eSmrg # with valid system types. 13506d1874b2Smrg # solaris* is a basic system type, with this one exception. 13516d1874b2Smrg auroraux) 13526d1874b2Smrg os=auroraux 13538fff3f40Smrg ;; 13546d1874b2Smrg bluegene*) 13556d1874b2Smrg os=cnk 1356e6232409Smrg ;; 13576d1874b2Smrg solaris1 | solaris1.*) 13586d1874b2Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1359e6232409Smrg ;; 13606d1874b2Smrg solaris) 13616d1874b2Smrg os=solaris2 1362e6232409Smrg ;; 13636d1874b2Smrg unixware*) 13646d1874b2Smrg os=sysv4.2uw 1365e6232409Smrg ;; 1366c05e7a3eSmrg # es1800 is here to avoid being matched by es* (a different OS) 13676d1874b2Smrg es1800*) 13686d1874b2Smrg os=ose 1369c05e7a3eSmrg ;; 13706d1874b2Smrg # Some version numbers need modification 13716d1874b2Smrg chorusos*) 13726d1874b2Smrg os=chorusos 1373e6232409Smrg ;; 13746d1874b2Smrg isc) 13756d1874b2Smrg os=isc2.2 1376e6232409Smrg ;; 13776d1874b2Smrg sco6) 13786d1874b2Smrg os=sco5v6 1379e6232409Smrg ;; 13806d1874b2Smrg sco5) 13816d1874b2Smrg os=sco3.2v5 1382e6232409Smrg ;; 13836d1874b2Smrg sco4) 13846d1874b2Smrg os=sco3.2v4 1385e6232409Smrg ;; 13866d1874b2Smrg sco3.2.[4-9]*) 13876d1874b2Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1388e6232409Smrg ;; 13896d1874b2Smrg sco*v* | scout) 13906d1874b2Smrg # Don't match below 1391e6232409Smrg ;; 13926d1874b2Smrg sco*) 13936d1874b2Smrg os=sco3.2v2 1394e6232409Smrg ;; 13956d1874b2Smrg psos*) 13966d1874b2Smrg os=psos 1397e6232409Smrg ;; 13986d1874b2Smrg qnx*) 13996d1874b2Smrg os=qnx 1400e6232409Smrg ;; 14016d1874b2Smrg hiux*) 14026d1874b2Smrg os=hiuxwe2 1403e6232409Smrg ;; 14046d1874b2Smrg lynx*178) 14056d1874b2Smrg os=lynxos178 1406e6232409Smrg ;; 14076d1874b2Smrg lynx*5) 14086d1874b2Smrg os=lynxos5 1409e6232409Smrg ;; 14106d1874b2Smrg lynxos*) 14116d1874b2Smrg # don't get caught up in next wildcard 1412e6232409Smrg ;; 14136d1874b2Smrg lynx*) 14146d1874b2Smrg os=lynxos 1415e6232409Smrg ;; 14166d1874b2Smrg mac[0-9]*) 14176d1874b2Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1418e6232409Smrg ;; 14196d1874b2Smrg opened*) 14206d1874b2Smrg os=openedition 1421e6232409Smrg ;; 14226d1874b2Smrg os400*) 14236d1874b2Smrg os=os400 1424e6232409Smrg ;; 14256d1874b2Smrg sunos5*) 14266d1874b2Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1427e6232409Smrg ;; 14286d1874b2Smrg sunos6*) 14296d1874b2Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1430e6232409Smrg ;; 14316d1874b2Smrg wince*) 14326d1874b2Smrg os=wince 1433e6232409Smrg ;; 14346d1874b2Smrg utek*) 14356d1874b2Smrg os=bsd 1436e6232409Smrg ;; 14376d1874b2Smrg dynix*) 14386d1874b2Smrg os=bsd 1439e6232409Smrg ;; 14406d1874b2Smrg acis*) 14416d1874b2Smrg os=aos 1442e6232409Smrg ;; 14436d1874b2Smrg atheos*) 14446d1874b2Smrg os=atheos 1445e6232409Smrg ;; 14466d1874b2Smrg syllable*) 14476d1874b2Smrg os=syllable 14486d1874b2Smrg ;; 14496d1874b2Smrg 386bsd) 14506d1874b2Smrg os=bsd 14516d1874b2Smrg ;; 14526d1874b2Smrg ctix* | uts*) 14536d1874b2Smrg os=sysv 14546d1874b2Smrg ;; 14556d1874b2Smrg nova*) 14566d1874b2Smrg os=rtmk-nova 14576d1874b2Smrg ;; 14586d1874b2Smrg ns2) 14596d1874b2Smrg os=nextstep2 14606d1874b2Smrg ;; 14616d1874b2Smrg # Preserve the version number of sinix5. 14626d1874b2Smrg sinix5.*) 14636d1874b2Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1464e6232409Smrg ;; 14656d1874b2Smrg sinix*) 14666d1874b2Smrg os=sysv4 1467e6232409Smrg ;; 14686d1874b2Smrg tpf*) 14696d1874b2Smrg os=tpf 1470e6232409Smrg ;; 14716d1874b2Smrg triton*) 14726d1874b2Smrg os=sysv3 1473e6232409Smrg ;; 14746d1874b2Smrg oss*) 14756d1874b2Smrg os=sysv3 1476e6232409Smrg ;; 14776d1874b2Smrg svr4*) 14786d1874b2Smrg os=sysv4 1479e6232409Smrg ;; 14806d1874b2Smrg svr3) 14816d1874b2Smrg os=sysv3 1482e6232409Smrg ;; 14836d1874b2Smrg sysvr4) 14846d1874b2Smrg os=sysv4 1485e6232409Smrg ;; 14866d1874b2Smrg ose*) 14876d1874b2Smrg os=ose 1488e6232409Smrg ;; 14896d1874b2Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14906d1874b2Smrg os=mint 14918fff3f40Smrg ;; 14926d1874b2Smrg dicos*) 14936d1874b2Smrg os=dicos 14946d1874b2Smrg ;; 14956d1874b2Smrg pikeos*) 1496c05e7a3eSmrg # Until real need of OS specific support for 1497c05e7a3eSmrg # particular features comes up, bare metal 1498c05e7a3eSmrg # configurations are quite functional. 14996d1874b2Smrg case $cpu in 1500c05e7a3eSmrg arm*) 15016d1874b2Smrg os=eabi 1502c05e7a3eSmrg ;; 1503c05e7a3eSmrg *) 15046d1874b2Smrg os=elf 1505c05e7a3eSmrg ;; 1506c05e7a3eSmrg esac 1507c05e7a3eSmrg ;; 1508e6232409Smrg *) 15096d1874b2Smrg # No normalization, but not necessarily accepted, that comes below. 1510e6232409Smrg ;; 1511e6232409Smrgesac 15126d1874b2Smrg 1513e6232409Smrgelse 1514e6232409Smrg 1515e6232409Smrg# Here we handle the default operating systems that come with various machines. 1516e6232409Smrg# The value should be what the vendor currently ships out the door with their 1517e6232409Smrg# machine or put another way, the most popular os provided with the machine. 1518e6232409Smrg 1519e6232409Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1520e6232409Smrg# "-sun"), then you have to tell the case statement up towards the top 1521e6232409Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1522e6232409Smrg# will signal an error saying that MANUFACTURER isn't an operating 1523e6232409Smrg# system, and we'll never get to this point. 1524e6232409Smrg 15256d1874b2Smrgkernel= 15266d1874b2Smrgcase $cpu-$vendor in 152794a251fdSmrg score-*) 15286d1874b2Smrg os=elf 1529e6232409Smrg ;; 153094a251fdSmrg spu-*) 15316d1874b2Smrg os=elf 1532e6232409Smrg ;; 1533e6232409Smrg *-acorn) 15346d1874b2Smrg os=riscix1.2 1535e6232409Smrg ;; 1536e6232409Smrg arm*-rebel) 15376d1874b2Smrg kernel=linux 15386d1874b2Smrg os=gnu 1539e6232409Smrg ;; 1540e6232409Smrg arm*-semi) 15416d1874b2Smrg os=aout 1542e6232409Smrg ;; 154394a251fdSmrg c4x-* | tic4x-*) 15446d1874b2Smrg os=coff 154594a251fdSmrg ;; 15466a45684fSmrg c8051-*) 15476d1874b2Smrg os=elf 15486d1874b2Smrg ;; 15496d1874b2Smrg clipper-intergraph) 15506d1874b2Smrg os=clix 15516a45684fSmrg ;; 15526a45684fSmrg hexagon-*) 15536d1874b2Smrg os=elf 15546a45684fSmrg ;; 155594a251fdSmrg tic54x-*) 15566d1874b2Smrg os=coff 155794a251fdSmrg ;; 155894a251fdSmrg tic55x-*) 15596d1874b2Smrg os=coff 156094a251fdSmrg ;; 156194a251fdSmrg tic6x-*) 15626d1874b2Smrg os=coff 1563e6232409Smrg ;; 1564e6232409Smrg # This must come before the *-dec entry. 1565e6232409Smrg pdp10-*) 15666d1874b2Smrg os=tops20 1567e6232409Smrg ;; 1568e6232409Smrg pdp11-*) 15696d1874b2Smrg os=none 1570e6232409Smrg ;; 1571e6232409Smrg *-dec | vax-*) 15726d1874b2Smrg os=ultrix4.2 1573e6232409Smrg ;; 1574e6232409Smrg m68*-apollo) 15756d1874b2Smrg os=domain 1576e6232409Smrg ;; 1577e6232409Smrg i386-sun) 15786d1874b2Smrg os=sunos4.0.2 1579e6232409Smrg ;; 1580e6232409Smrg m68000-sun) 15816d1874b2Smrg os=sunos3 1582e6232409Smrg ;; 1583e6232409Smrg m68*-cisco) 15846d1874b2Smrg os=aout 1585e6232409Smrg ;; 158694a251fdSmrg mep-*) 15876d1874b2Smrg os=elf 15888fff3f40Smrg ;; 1589e6232409Smrg mips*-cisco) 15906d1874b2Smrg os=elf 1591e6232409Smrg ;; 1592e6232409Smrg mips*-*) 15936d1874b2Smrg os=elf 1594e6232409Smrg ;; 1595e6232409Smrg or32-*) 15966d1874b2Smrg os=coff 1597e6232409Smrg ;; 1598e6232409Smrg *-tti) # must be before sparc entry or we get the wrong os. 15996d1874b2Smrg os=sysv3 1600e6232409Smrg ;; 1601e6232409Smrg sparc-* | *-sun) 16026d1874b2Smrg os=sunos4.1.1 1603e6232409Smrg ;; 1604c05e7a3eSmrg pru-*) 16056d1874b2Smrg os=elf 1606c05e7a3eSmrg ;; 1607e6232409Smrg *-be) 16086d1874b2Smrg os=beos 1609e6232409Smrg ;; 1610e6232409Smrg *-ibm) 16116d1874b2Smrg os=aix 1612e6232409Smrg ;; 161394a251fdSmrg *-knuth) 16146d1874b2Smrg os=mmixware 1615e6232409Smrg ;; 1616e6232409Smrg *-wec) 16176d1874b2Smrg os=proelf 1618e6232409Smrg ;; 1619e6232409Smrg *-winbond) 16206d1874b2Smrg os=proelf 1621e6232409Smrg ;; 1622e6232409Smrg *-oki) 16236d1874b2Smrg os=proelf 1624e6232409Smrg ;; 1625e6232409Smrg *-hp) 16266d1874b2Smrg os=hpux 1627e6232409Smrg ;; 1628e6232409Smrg *-hitachi) 16296d1874b2Smrg os=hiux 1630e6232409Smrg ;; 1631e6232409Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16326d1874b2Smrg os=sysv 1633e6232409Smrg ;; 1634e6232409Smrg *-cbm) 16356d1874b2Smrg os=amigaos 1636e6232409Smrg ;; 1637e6232409Smrg *-dg) 16386d1874b2Smrg os=dgux 1639e6232409Smrg ;; 1640e6232409Smrg *-dolphin) 16416d1874b2Smrg os=sysv3 1642e6232409Smrg ;; 1643e6232409Smrg m68k-ccur) 16446d1874b2Smrg os=rtu 1645e6232409Smrg ;; 1646e6232409Smrg m88k-omron*) 16476d1874b2Smrg os=luna 1648e6232409Smrg ;; 1649c05e7a3eSmrg *-next) 16506d1874b2Smrg os=nextstep 1651e6232409Smrg ;; 1652e6232409Smrg *-sequent) 16536d1874b2Smrg os=ptx 1654e6232409Smrg ;; 1655e6232409Smrg *-crds) 16566d1874b2Smrg os=unos 1657e6232409Smrg ;; 1658e6232409Smrg *-ns) 16596d1874b2Smrg os=genix 1660e6232409Smrg ;; 1661e6232409Smrg i370-*) 16626d1874b2Smrg os=mvs 1663e6232409Smrg ;; 1664e6232409Smrg *-gould) 16656d1874b2Smrg os=sysv 1666e6232409Smrg ;; 1667e6232409Smrg *-highlevel) 16686d1874b2Smrg os=bsd 1669e6232409Smrg ;; 1670e6232409Smrg *-encore) 16716d1874b2Smrg os=bsd 1672e6232409Smrg ;; 1673e6232409Smrg *-sgi) 16746d1874b2Smrg os=irix 1675e6232409Smrg ;; 1676e6232409Smrg *-siemens) 16776d1874b2Smrg os=sysv4 1678e6232409Smrg ;; 1679e6232409Smrg *-masscomp) 16806d1874b2Smrg os=rtu 1681e6232409Smrg ;; 1682e6232409Smrg f30[01]-fujitsu | f700-fujitsu) 16836d1874b2Smrg os=uxpv 1684e6232409Smrg ;; 1685e6232409Smrg *-rom68k) 16866d1874b2Smrg os=coff 1687e6232409Smrg ;; 1688e6232409Smrg *-*bug) 16896d1874b2Smrg os=coff 1690e6232409Smrg ;; 1691e6232409Smrg *-apple) 16926d1874b2Smrg os=macos 1693e6232409Smrg ;; 1694e6232409Smrg *-atari*) 16956d1874b2Smrg os=mint 16966d1874b2Smrg ;; 16976d1874b2Smrg *-wrs) 16986d1874b2Smrg os=vxworks 1699e6232409Smrg ;; 1700e6232409Smrg *) 17016d1874b2Smrg os=none 1702e6232409Smrg ;; 1703e6232409Smrgesac 17046d1874b2Smrg 1705e6232409Smrgfi 1706e6232409Smrg 17076d1874b2Smrg# Now, validate our (potentially fixed-up) OS. 17086d1874b2Smrgcase $os in 17096d1874b2Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17106d1874b2Smrg musl* | newlib* | relibc* | uclibc*) 17116d1874b2Smrg ;; 17126d1874b2Smrg # Likewise for "kernel-abi" 17136d1874b2Smrg eabi* | gnueabi*) 17146d1874b2Smrg ;; 17156d1874b2Smrg # VxWorks passes extra cpu info in the 4th filed. 17166d1874b2Smrg simlinux | simwindows | spe) 17176d1874b2Smrg ;; 17186d1874b2Smrg # Now accept the basic system types. 17196d1874b2Smrg # The portable systems comes first. 17206d1874b2Smrg # Each alternative MUST end in a * to match a version number. 17216d1874b2Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17226d1874b2Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17236d1874b2Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17246d1874b2Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17256d1874b2Smrg | hiux* | abug | nacl* | netware* | windows* \ 17266d1874b2Smrg | os9* | macos* | osx* | ios* \ 17276d1874b2Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17286d1874b2Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17296d1874b2Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17306d1874b2Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17316d1874b2Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17326d1874b2Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17336d1874b2Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17346d1874b2Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17356d1874b2Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17366d1874b2Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17376d1874b2Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17386d1874b2Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17396d1874b2Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17406d1874b2Smrg | midipix* | mingw32* | mingw64* | mint* \ 17416d1874b2Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17426d1874b2Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17436d1874b2Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17446d1874b2Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17456d1874b2Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17466d1874b2Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17476d1874b2Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17486d1874b2Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17496d1874b2Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17506d1874b2Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17516d1874b2Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 17526d1874b2Smrg ;; 17536d1874b2Smrg # This one is extra strict with allowed versions 17546d1874b2Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17556d1874b2Smrg # Don't forget version if it is 3.2v4 or newer. 17566d1874b2Smrg ;; 17576d1874b2Smrg none) 17586d1874b2Smrg ;; 17596d1874b2Smrg *) 17606d1874b2Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17616d1874b2Smrg exit 1 17626d1874b2Smrg ;; 17636d1874b2Smrgesac 17646d1874b2Smrg 17656d1874b2Smrg# As a final step for OS-related things, validate the OS-kernel combination 17666d1874b2Smrg# (given a valid OS), if there is a kernel. 17676d1874b2Smrgcase $kernel-$os in 17686d1874b2Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17696d1874b2Smrg | linux-musl* | linux-relibc* | linux-uclibc* ) 17706d1874b2Smrg ;; 17716d1874b2Smrg uclinux-uclibc* ) 17726d1874b2Smrg ;; 17736d1874b2Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 17746d1874b2Smrg # These are just libc implementations, not actual OSes, and thus 17756d1874b2Smrg # require a kernel. 17766d1874b2Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17776d1874b2Smrg exit 1 17786d1874b2Smrg ;; 17796d1874b2Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 17806d1874b2Smrg ;; 17816d1874b2Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 17826d1874b2Smrg ;; 17836d1874b2Smrg nto-qnx*) 17846d1874b2Smrg ;; 17856d1874b2Smrg os2-emx) 17866d1874b2Smrg ;; 17876d1874b2Smrg *-eabi* | *-gnueabi*) 17886d1874b2Smrg ;; 17896d1874b2Smrg -*) 17906d1874b2Smrg # Blank kernel with real OS is always fine. 17916d1874b2Smrg ;; 17926d1874b2Smrg *-*) 17936d1874b2Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 17946d1874b2Smrg exit 1 17956d1874b2Smrg ;; 17966d1874b2Smrgesac 17976d1874b2Smrg 1798e6232409Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1799e6232409Smrg# manufacturer. We pick the logical manufacturer. 18006d1874b2Smrgcase $vendor in 18016d1874b2Smrg unknown) 18026d1874b2Smrg case $cpu-$os in 18036d1874b2Smrg *-riscix*) 1804e6232409Smrg vendor=acorn 1805e6232409Smrg ;; 18066d1874b2Smrg *-sunos*) 1807e6232409Smrg vendor=sun 1808e6232409Smrg ;; 18096d1874b2Smrg *-cnk* | *-aix*) 1810e6232409Smrg vendor=ibm 1811e6232409Smrg ;; 18126d1874b2Smrg *-beos*) 1813e6232409Smrg vendor=be 1814e6232409Smrg ;; 18156d1874b2Smrg *-hpux*) 1816e6232409Smrg vendor=hp 1817e6232409Smrg ;; 18186d1874b2Smrg *-mpeix*) 1819e6232409Smrg vendor=hp 1820e6232409Smrg ;; 18216d1874b2Smrg *-hiux*) 1822e6232409Smrg vendor=hitachi 1823e6232409Smrg ;; 18246d1874b2Smrg *-unos*) 1825e6232409Smrg vendor=crds 1826e6232409Smrg ;; 18276d1874b2Smrg *-dgux*) 1828e6232409Smrg vendor=dg 1829e6232409Smrg ;; 18306d1874b2Smrg *-luna*) 1831e6232409Smrg vendor=omron 1832e6232409Smrg ;; 18336d1874b2Smrg *-genix*) 1834e6232409Smrg vendor=ns 1835e6232409Smrg ;; 18366d1874b2Smrg *-clix*) 18376d1874b2Smrg vendor=intergraph 18386d1874b2Smrg ;; 18396d1874b2Smrg *-mvs* | *-opened*) 18406d1874b2Smrg vendor=ibm 18416d1874b2Smrg ;; 18426d1874b2Smrg *-os400*) 1843e6232409Smrg vendor=ibm 1844e6232409Smrg ;; 18456d1874b2Smrg s390-* | s390x-*) 1846e6232409Smrg vendor=ibm 1847e6232409Smrg ;; 18486d1874b2Smrg *-ptx*) 1849e6232409Smrg vendor=sequent 1850e6232409Smrg ;; 18516d1874b2Smrg *-tpf*) 1852e6232409Smrg vendor=ibm 1853e6232409Smrg ;; 18546d1874b2Smrg *-vxsim* | *-vxworks* | *-windiss*) 1855e6232409Smrg vendor=wrs 1856e6232409Smrg ;; 18576d1874b2Smrg *-aux*) 1858e6232409Smrg vendor=apple 1859e6232409Smrg ;; 18606d1874b2Smrg *-hms*) 1861e6232409Smrg vendor=hitachi 1862e6232409Smrg ;; 18636d1874b2Smrg *-mpw* | *-macos*) 1864e6232409Smrg vendor=apple 1865e6232409Smrg ;; 18666d1874b2Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1867e6232409Smrg vendor=atari 1868e6232409Smrg ;; 18696d1874b2Smrg *-vos*) 1870e6232409Smrg vendor=stratus 1871e6232409Smrg ;; 1872e6232409Smrg esac 1873e6232409Smrg ;; 1874e6232409Smrgesac 1875e6232409Smrg 18766d1874b2Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1877e6232409Smrgexit 1878e6232409Smrg 1879e6232409Smrg# Local variables: 18806d1874b2Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1881e6232409Smrg# time-stamp-start: "timestamp='" 1882e6232409Smrg# time-stamp-format: "%:y-%02m-%02d" 1883e6232409Smrg# time-stamp-end: "'" 1884e6232409Smrg# End: 1885