1e6232409Smrg#! /bin/sh 2e6232409Smrg# Configuration validation subroutine script. 361d7a284Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 4e6232409Smrg 56d1874b2Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 66d1874b2Smrg 761d7a284Smrgtimestamp='2023-01-21' 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 1161d7a284Smrg# 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 7961d7a284SmrgCopyright 1992-2023 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* \ 14861d7a284Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 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 102361d7a284Smrg armh-unknown | armh-alt) 102461d7a284Smrg cpu=armv7l 102561d7a284Smrg vendor=alt 102661d7a284Smrg basic_os=${basic_os:-linux-gnueabihf} 102761d7a284Smrg ;; 10286d1874b2Smrg dpx20-unknown | dpx20-bull) 10296d1874b2Smrg cpu=rs6000 10306d1874b2Smrg vendor=bull 10316d1874b2Smrg basic_os=${basic_os:-bosx} 1032e6232409Smrg ;; 10336d1874b2Smrg 10346d1874b2Smrg # Here we normalize CPU types irrespective of the vendor 10356d1874b2Smrg amd64-*) 10366d1874b2Smrg cpu=x86_64 1037e6232409Smrg ;; 10386d1874b2Smrg blackfin-*) 10396d1874b2Smrg cpu=bfin 10406d1874b2Smrg basic_os=linux 1041e6232409Smrg ;; 10426d1874b2Smrg c54x-*) 10436d1874b2Smrg cpu=tic54x 1044e6232409Smrg ;; 10456d1874b2Smrg c55x-*) 10466d1874b2Smrg cpu=tic55x 1047e6232409Smrg ;; 10486d1874b2Smrg c6x-*) 10496d1874b2Smrg cpu=tic6x 1050e6232409Smrg ;; 10516d1874b2Smrg e500v[12]-*) 10526d1874b2Smrg cpu=powerpc 10536d1874b2Smrg basic_os=${basic_os}"spe" 1054e6232409Smrg ;; 10556d1874b2Smrg mips3*-*) 10566d1874b2Smrg cpu=mips64 1057e6232409Smrg ;; 10586d1874b2Smrg ms1-*) 10596d1874b2Smrg cpu=mt 1060e6232409Smrg ;; 10616d1874b2Smrg m68knommu-*) 10626d1874b2Smrg cpu=m68k 10636d1874b2Smrg basic_os=linux 1064e6232409Smrg ;; 10656d1874b2Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10666d1874b2Smrg cpu=s12z 10678fff3f40Smrg ;; 10686d1874b2Smrg openrisc-*) 10696d1874b2Smrg cpu=or32 1070e6232409Smrg ;; 10716d1874b2Smrg parisc-*) 10726d1874b2Smrg cpu=hppa 10736d1874b2Smrg basic_os=linux 1074e6232409Smrg ;; 10756d1874b2Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10766d1874b2Smrg cpu=i586 1077e6232409Smrg ;; 107861d7a284Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 10796d1874b2Smrg cpu=i686 1080e6232409Smrg ;; 10816d1874b2Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10826d1874b2Smrg cpu=i686 1083e6232409Smrg ;; 10846d1874b2Smrg pentium4-*) 10856d1874b2Smrg cpu=i786 1086e6232409Smrg ;; 10876d1874b2Smrg pc98-*) 10886d1874b2Smrg cpu=i386 1089e6232409Smrg ;; 10906d1874b2Smrg ppc-* | ppcbe-*) 10916d1874b2Smrg cpu=powerpc 1092e6232409Smrg ;; 10936d1874b2Smrg ppcle-* | powerpclittle-*) 10946d1874b2Smrg cpu=powerpcle 1095e6232409Smrg ;; 10966d1874b2Smrg ppc64-*) 10976d1874b2Smrg cpu=powerpc64 1098e6232409Smrg ;; 10996d1874b2Smrg ppc64le-* | powerpc64little-*) 11006d1874b2Smrg cpu=powerpc64le 1101e6232409Smrg ;; 11026d1874b2Smrg sb1-*) 11036d1874b2Smrg cpu=mipsisa64sb1 1104e6232409Smrg ;; 11056d1874b2Smrg sb1el-*) 11066d1874b2Smrg cpu=mipsisa64sb1el 1107e6232409Smrg ;; 11086d1874b2Smrg sh5e[lb]-*) 11096d1874b2Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1110e6232409Smrg ;; 11116d1874b2Smrg spur-*) 11126d1874b2Smrg cpu=spur 1113e6232409Smrg ;; 11146d1874b2Smrg strongarm-* | thumb-*) 11156d1874b2Smrg cpu=arm 1116e6232409Smrg ;; 11176d1874b2Smrg tx39-*) 11186d1874b2Smrg cpu=mipstx39 1119c05e7a3eSmrg ;; 11206d1874b2Smrg tx39el-*) 11216d1874b2Smrg cpu=mipstx39el 1122e6232409Smrg ;; 11236d1874b2Smrg x64-*) 11246d1874b2Smrg cpu=x86_64 1125e6232409Smrg ;; 112694a251fdSmrg xscale-* | xscalee[bl]-*) 11276d1874b2Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1128e6232409Smrg ;; 112961d7a284Smrg arm64-* | aarch64le-*) 11306d1874b2Smrg cpu=aarch64 1131e6232409Smrg ;; 1132e6232409Smrg 11336d1874b2Smrg # Recognize the canonical CPU Types that limit and/or modify the 11346d1874b2Smrg # company names they are paired with. 11356d1874b2Smrg cr16-*) 11366d1874b2Smrg basic_os=${basic_os:-elf} 1137e6232409Smrg ;; 11386d1874b2Smrg crisv32-* | etraxfs*-*) 11396d1874b2Smrg cpu=crisv32 11406d1874b2Smrg vendor=axis 1141e6232409Smrg ;; 11426d1874b2Smrg cris-* | etrax*-*) 11436d1874b2Smrg cpu=cris 11446d1874b2Smrg vendor=axis 1145e6232409Smrg ;; 11466d1874b2Smrg crx-*) 11476d1874b2Smrg basic_os=${basic_os:-elf} 1148e6232409Smrg ;; 11496d1874b2Smrg neo-tandem) 11506d1874b2Smrg cpu=neo 11516d1874b2Smrg vendor=tandem 1152e6232409Smrg ;; 11536d1874b2Smrg nse-tandem) 11546d1874b2Smrg cpu=nse 11556d1874b2Smrg vendor=tandem 1156e6232409Smrg ;; 11576d1874b2Smrg nsr-tandem) 11586d1874b2Smrg cpu=nsr 11596d1874b2Smrg vendor=tandem 1160e6232409Smrg ;; 11616d1874b2Smrg nsv-tandem) 11626d1874b2Smrg cpu=nsv 11636d1874b2Smrg vendor=tandem 1164e6232409Smrg ;; 11656d1874b2Smrg nsx-tandem) 11666d1874b2Smrg cpu=nsx 11676d1874b2Smrg vendor=tandem 1168e6232409Smrg ;; 11696d1874b2Smrg mipsallegrexel-sony) 11706d1874b2Smrg cpu=mipsallegrexel 11716d1874b2Smrg vendor=sony 1172e6232409Smrg ;; 11736d1874b2Smrg tile*-*) 11746d1874b2Smrg basic_os=${basic_os:-linux-gnu} 1175e6232409Smrg ;; 11766d1874b2Smrg 1177e6232409Smrg *) 11786d1874b2Smrg # Recognize the canonical CPU types that are allowed with any 11796d1874b2Smrg # company name. 11806d1874b2Smrg case $cpu in 11816d1874b2Smrg 1750a | 580 \ 11826d1874b2Smrg | a29k \ 11836d1874b2Smrg | aarch64 | aarch64_be \ 11846d1874b2Smrg | abacus \ 11856d1874b2Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11866d1874b2Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11876d1874b2Smrg | alphapca5[67] | alpha64pca5[67] \ 11886d1874b2Smrg | am33_2.0 \ 11896d1874b2Smrg | amdgcn \ 11906d1874b2Smrg | arc | arceb | arc32 | arc64 \ 11916d1874b2Smrg | arm | arm[lb]e | arme[lb] | armv* \ 11926d1874b2Smrg | avr | avr32 \ 11936d1874b2Smrg | asmjs \ 11946d1874b2Smrg | ba \ 11956d1874b2Smrg | be32 | be64 \ 11966d1874b2Smrg | bfin | bpf | bs2000 \ 11976d1874b2Smrg | c[123]* | c30 | [cjt]90 | c4x \ 11986d1874b2Smrg | c8051 | clipper | craynv | csky | cydra \ 11996d1874b2Smrg | d10v | d30v | dlx | dsp16xx \ 12006d1874b2Smrg | e2k | elxsi | epiphany \ 12016d1874b2Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 12026d1874b2Smrg | h8300 | h8500 \ 12036d1874b2Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 12046d1874b2Smrg | hexagon \ 12056d1874b2Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12066d1874b2Smrg | ip2k | iq2000 \ 12076d1874b2Smrg | k1om \ 12086d1874b2Smrg | le32 | le64 \ 12096d1874b2Smrg | lm32 \ 121061d7a284Smrg | loongarch32 | loongarch64 \ 12116d1874b2Smrg | m32c | m32r | m32rle \ 12126d1874b2Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12136d1874b2Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12146d1874b2Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12156d1874b2Smrg | microblaze | microblazeel \ 12166d1874b2Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12176d1874b2Smrg | mips16 \ 12186d1874b2Smrg | mips64 | mips64eb | mips64el \ 12196d1874b2Smrg | mips64octeon | mips64octeonel \ 12206d1874b2Smrg | mips64orion | mips64orionel \ 12216d1874b2Smrg | mips64r5900 | mips64r5900el \ 12226d1874b2Smrg | mips64vr | mips64vrel \ 12236d1874b2Smrg | mips64vr4100 | mips64vr4100el \ 12246d1874b2Smrg | mips64vr4300 | mips64vr4300el \ 12256d1874b2Smrg | mips64vr5000 | mips64vr5000el \ 12266d1874b2Smrg | mips64vr5900 | mips64vr5900el \ 12276d1874b2Smrg | mipsisa32 | mipsisa32el \ 12286d1874b2Smrg | mipsisa32r2 | mipsisa32r2el \ 12296d1874b2Smrg | mipsisa32r3 | mipsisa32r3el \ 12306d1874b2Smrg | mipsisa32r5 | mipsisa32r5el \ 12316d1874b2Smrg | mipsisa32r6 | mipsisa32r6el \ 12326d1874b2Smrg | mipsisa64 | mipsisa64el \ 12336d1874b2Smrg | mipsisa64r2 | mipsisa64r2el \ 12346d1874b2Smrg | mipsisa64r3 | mipsisa64r3el \ 12356d1874b2Smrg | mipsisa64r5 | mipsisa64r5el \ 12366d1874b2Smrg | mipsisa64r6 | mipsisa64r6el \ 12376d1874b2Smrg | mipsisa64sb1 | mipsisa64sb1el \ 12386d1874b2Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 12396d1874b2Smrg | mipsr5900 | mipsr5900el \ 12406d1874b2Smrg | mipstx39 | mipstx39el \ 12416d1874b2Smrg | mmix \ 12426d1874b2Smrg | mn10200 | mn10300 \ 12436d1874b2Smrg | moxie \ 12446d1874b2Smrg | mt \ 12456d1874b2Smrg | msp430 \ 12466d1874b2Smrg | nds32 | nds32le | nds32be \ 12476d1874b2Smrg | nfp \ 12486d1874b2Smrg | nios | nios2 | nios2eb | nios2el \ 12496d1874b2Smrg | none | np1 | ns16k | ns32k | nvptx \ 12506d1874b2Smrg | open8 \ 12516d1874b2Smrg | or1k* \ 12526d1874b2Smrg | or32 \ 12536d1874b2Smrg | orion \ 12546d1874b2Smrg | picochip \ 12556d1874b2Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12566d1874b2Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12576d1874b2Smrg | pru \ 12586d1874b2Smrg | pyramid \ 12596d1874b2Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12606d1874b2Smrg | rl78 | romp | rs6000 | rx \ 12616d1874b2Smrg | s390 | s390x \ 12626d1874b2Smrg | score \ 12636d1874b2Smrg | sh | shl \ 12646d1874b2Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12656d1874b2Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12666d1874b2Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12676d1874b2Smrg | sparclite \ 12686d1874b2Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12696d1874b2Smrg | spu \ 12706d1874b2Smrg | tahoe \ 12716d1874b2Smrg | thumbv7* \ 12726d1874b2Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12736d1874b2Smrg | tron \ 12746d1874b2Smrg | ubicom32 \ 12756d1874b2Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12766d1874b2Smrg | vax \ 12776d1874b2Smrg | visium \ 12786d1874b2Smrg | w65 \ 12796d1874b2Smrg | wasm32 | wasm64 \ 12806d1874b2Smrg | we32k \ 12816d1874b2Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12826d1874b2Smrg | xstormy16 | xtensa* \ 12836d1874b2Smrg | ymp \ 12846d1874b2Smrg | z8k | z80) 12856d1874b2Smrg ;; 12866d1874b2Smrg 12876d1874b2Smrg *) 12886d1874b2Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12896d1874b2Smrg exit 1 12906d1874b2Smrg ;; 12916d1874b2Smrg esac 1292e6232409Smrg ;; 1293e6232409Smrgesac 1294e6232409Smrg 1295e6232409Smrg# Here we canonicalize certain aliases for manufacturers. 12966d1874b2Smrgcase $vendor in 12976d1874b2Smrg digital*) 12986d1874b2Smrg vendor=dec 1299e6232409Smrg ;; 13006d1874b2Smrg commodore*) 13016d1874b2Smrg vendor=cbm 1302e6232409Smrg ;; 1303e6232409Smrg *) 1304e6232409Smrg ;; 1305e6232409Smrgesac 1306e6232409Smrg 1307e6232409Smrg# Decode manufacturer-specific aliases for certain operating systems. 1308e6232409Smrg 13096d1874b2Smrgif test x$basic_os != x 1310e6232409Smrgthen 13116d1874b2Smrg 131261d7a284Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 13136d1874b2Smrg# set os. 13146d1874b2Smrgcase $basic_os in 13156d1874b2Smrg gnu/linux*) 13166d1874b2Smrg kernel=linux 13176d1874b2Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13186d1874b2Smrg ;; 13196d1874b2Smrg os2-emx) 13206d1874b2Smrg kernel=os2 13216d1874b2Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13226d1874b2Smrg ;; 13236d1874b2Smrg nto-qnx*) 13246d1874b2Smrg kernel=nto 13256d1874b2Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13266d1874b2Smrg ;; 13276d1874b2Smrg *-*) 13286d1874b2Smrg # shellcheck disable=SC2162 13296d1874b2Smrg saved_IFS=$IFS 13306d1874b2Smrg IFS="-" read kernel os <<EOF 13316d1874b2Smrg$basic_os 13326d1874b2SmrgEOF 13336d1874b2Smrg IFS=$saved_IFS 13346d1874b2Smrg ;; 13356d1874b2Smrg # Default OS when just kernel was specified 13366d1874b2Smrg nto*) 13376d1874b2Smrg kernel=nto 13386d1874b2Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13396d1874b2Smrg ;; 13406d1874b2Smrg linux*) 13416d1874b2Smrg kernel=linux 13426d1874b2Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13436d1874b2Smrg ;; 134461d7a284Smrg managarm*) 134561d7a284Smrg kernel=managarm 134661d7a284Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 134761d7a284Smrg ;; 13486d1874b2Smrg *) 13496d1874b2Smrg kernel= 13506d1874b2Smrg os=$basic_os 13516d1874b2Smrg ;; 13526d1874b2Smrgesac 13536d1874b2Smrg 13546d1874b2Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13556d1874b2Smrg# etc.) 1356e6232409Smrgcase $os in 1357c05e7a3eSmrg # First match some system type aliases that might get confused 1358c05e7a3eSmrg # with valid system types. 13596d1874b2Smrg # solaris* is a basic system type, with this one exception. 13606d1874b2Smrg auroraux) 13616d1874b2Smrg os=auroraux 13628fff3f40Smrg ;; 13636d1874b2Smrg bluegene*) 13646d1874b2Smrg os=cnk 1365e6232409Smrg ;; 13666d1874b2Smrg solaris1 | solaris1.*) 13676d1874b2Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1368e6232409Smrg ;; 13696d1874b2Smrg solaris) 13706d1874b2Smrg os=solaris2 1371e6232409Smrg ;; 13726d1874b2Smrg unixware*) 13736d1874b2Smrg os=sysv4.2uw 1374e6232409Smrg ;; 1375c05e7a3eSmrg # es1800 is here to avoid being matched by es* (a different OS) 13766d1874b2Smrg es1800*) 13776d1874b2Smrg os=ose 1378c05e7a3eSmrg ;; 13796d1874b2Smrg # Some version numbers need modification 13806d1874b2Smrg chorusos*) 13816d1874b2Smrg os=chorusos 1382e6232409Smrg ;; 13836d1874b2Smrg isc) 13846d1874b2Smrg os=isc2.2 1385e6232409Smrg ;; 13866d1874b2Smrg sco6) 13876d1874b2Smrg os=sco5v6 1388e6232409Smrg ;; 13896d1874b2Smrg sco5) 13906d1874b2Smrg os=sco3.2v5 1391e6232409Smrg ;; 13926d1874b2Smrg sco4) 13936d1874b2Smrg os=sco3.2v4 1394e6232409Smrg ;; 13956d1874b2Smrg sco3.2.[4-9]*) 13966d1874b2Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1397e6232409Smrg ;; 13986d1874b2Smrg sco*v* | scout) 13996d1874b2Smrg # Don't match below 1400e6232409Smrg ;; 14016d1874b2Smrg sco*) 14026d1874b2Smrg os=sco3.2v2 1403e6232409Smrg ;; 14046d1874b2Smrg psos*) 14056d1874b2Smrg os=psos 1406e6232409Smrg ;; 14076d1874b2Smrg qnx*) 14086d1874b2Smrg os=qnx 1409e6232409Smrg ;; 14106d1874b2Smrg hiux*) 14116d1874b2Smrg os=hiuxwe2 1412e6232409Smrg ;; 14136d1874b2Smrg lynx*178) 14146d1874b2Smrg os=lynxos178 1415e6232409Smrg ;; 14166d1874b2Smrg lynx*5) 14176d1874b2Smrg os=lynxos5 1418e6232409Smrg ;; 14196d1874b2Smrg lynxos*) 14206d1874b2Smrg # don't get caught up in next wildcard 1421e6232409Smrg ;; 14226d1874b2Smrg lynx*) 14236d1874b2Smrg os=lynxos 1424e6232409Smrg ;; 14256d1874b2Smrg mac[0-9]*) 14266d1874b2Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1427e6232409Smrg ;; 14286d1874b2Smrg opened*) 14296d1874b2Smrg os=openedition 1430e6232409Smrg ;; 14316d1874b2Smrg os400*) 14326d1874b2Smrg os=os400 1433e6232409Smrg ;; 14346d1874b2Smrg sunos5*) 14356d1874b2Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1436e6232409Smrg ;; 14376d1874b2Smrg sunos6*) 14386d1874b2Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1439e6232409Smrg ;; 14406d1874b2Smrg wince*) 14416d1874b2Smrg os=wince 1442e6232409Smrg ;; 14436d1874b2Smrg utek*) 14446d1874b2Smrg os=bsd 1445e6232409Smrg ;; 14466d1874b2Smrg dynix*) 14476d1874b2Smrg os=bsd 1448e6232409Smrg ;; 14496d1874b2Smrg acis*) 14506d1874b2Smrg os=aos 1451e6232409Smrg ;; 14526d1874b2Smrg atheos*) 14536d1874b2Smrg os=atheos 1454e6232409Smrg ;; 14556d1874b2Smrg syllable*) 14566d1874b2Smrg os=syllable 14576d1874b2Smrg ;; 14586d1874b2Smrg 386bsd) 14596d1874b2Smrg os=bsd 14606d1874b2Smrg ;; 14616d1874b2Smrg ctix* | uts*) 14626d1874b2Smrg os=sysv 14636d1874b2Smrg ;; 14646d1874b2Smrg nova*) 14656d1874b2Smrg os=rtmk-nova 14666d1874b2Smrg ;; 14676d1874b2Smrg ns2) 14686d1874b2Smrg os=nextstep2 14696d1874b2Smrg ;; 14706d1874b2Smrg # Preserve the version number of sinix5. 14716d1874b2Smrg sinix5.*) 14726d1874b2Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1473e6232409Smrg ;; 14746d1874b2Smrg sinix*) 14756d1874b2Smrg os=sysv4 1476e6232409Smrg ;; 14776d1874b2Smrg tpf*) 14786d1874b2Smrg os=tpf 1479e6232409Smrg ;; 14806d1874b2Smrg triton*) 14816d1874b2Smrg os=sysv3 1482e6232409Smrg ;; 14836d1874b2Smrg oss*) 14846d1874b2Smrg os=sysv3 1485e6232409Smrg ;; 14866d1874b2Smrg svr4*) 14876d1874b2Smrg os=sysv4 1488e6232409Smrg ;; 14896d1874b2Smrg svr3) 14906d1874b2Smrg os=sysv3 1491e6232409Smrg ;; 14926d1874b2Smrg sysvr4) 14936d1874b2Smrg os=sysv4 1494e6232409Smrg ;; 14956d1874b2Smrg ose*) 14966d1874b2Smrg os=ose 1497e6232409Smrg ;; 14986d1874b2Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14996d1874b2Smrg os=mint 15008fff3f40Smrg ;; 15016d1874b2Smrg dicos*) 15026d1874b2Smrg os=dicos 15036d1874b2Smrg ;; 15046d1874b2Smrg pikeos*) 1505c05e7a3eSmrg # Until real need of OS specific support for 1506c05e7a3eSmrg # particular features comes up, bare metal 1507c05e7a3eSmrg # configurations are quite functional. 15086d1874b2Smrg case $cpu in 1509c05e7a3eSmrg arm*) 15106d1874b2Smrg os=eabi 1511c05e7a3eSmrg ;; 1512c05e7a3eSmrg *) 15136d1874b2Smrg os=elf 1514c05e7a3eSmrg ;; 1515c05e7a3eSmrg esac 1516c05e7a3eSmrg ;; 1517e6232409Smrg *) 15186d1874b2Smrg # No normalization, but not necessarily accepted, that comes below. 1519e6232409Smrg ;; 1520e6232409Smrgesac 15216d1874b2Smrg 1522e6232409Smrgelse 1523e6232409Smrg 1524e6232409Smrg# Here we handle the default operating systems that come with various machines. 1525e6232409Smrg# The value should be what the vendor currently ships out the door with their 1526e6232409Smrg# machine or put another way, the most popular os provided with the machine. 1527e6232409Smrg 1528e6232409Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1529e6232409Smrg# "-sun"), then you have to tell the case statement up towards the top 1530e6232409Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1531e6232409Smrg# will signal an error saying that MANUFACTURER isn't an operating 1532e6232409Smrg# system, and we'll never get to this point. 1533e6232409Smrg 15346d1874b2Smrgkernel= 15356d1874b2Smrgcase $cpu-$vendor in 153694a251fdSmrg score-*) 15376d1874b2Smrg os=elf 1538e6232409Smrg ;; 153994a251fdSmrg spu-*) 15406d1874b2Smrg os=elf 1541e6232409Smrg ;; 1542e6232409Smrg *-acorn) 15436d1874b2Smrg os=riscix1.2 1544e6232409Smrg ;; 1545e6232409Smrg arm*-rebel) 15466d1874b2Smrg kernel=linux 15476d1874b2Smrg os=gnu 1548e6232409Smrg ;; 1549e6232409Smrg arm*-semi) 15506d1874b2Smrg os=aout 1551e6232409Smrg ;; 155294a251fdSmrg c4x-* | tic4x-*) 15536d1874b2Smrg os=coff 155494a251fdSmrg ;; 15556a45684fSmrg c8051-*) 15566d1874b2Smrg os=elf 15576d1874b2Smrg ;; 15586d1874b2Smrg clipper-intergraph) 15596d1874b2Smrg os=clix 15606a45684fSmrg ;; 15616a45684fSmrg hexagon-*) 15626d1874b2Smrg os=elf 15636a45684fSmrg ;; 156494a251fdSmrg tic54x-*) 15656d1874b2Smrg os=coff 156694a251fdSmrg ;; 156794a251fdSmrg tic55x-*) 15686d1874b2Smrg os=coff 156994a251fdSmrg ;; 157094a251fdSmrg tic6x-*) 15716d1874b2Smrg os=coff 1572e6232409Smrg ;; 1573e6232409Smrg # This must come before the *-dec entry. 1574e6232409Smrg pdp10-*) 15756d1874b2Smrg os=tops20 1576e6232409Smrg ;; 1577e6232409Smrg pdp11-*) 15786d1874b2Smrg os=none 1579e6232409Smrg ;; 1580e6232409Smrg *-dec | vax-*) 15816d1874b2Smrg os=ultrix4.2 1582e6232409Smrg ;; 1583e6232409Smrg m68*-apollo) 15846d1874b2Smrg os=domain 1585e6232409Smrg ;; 1586e6232409Smrg i386-sun) 15876d1874b2Smrg os=sunos4.0.2 1588e6232409Smrg ;; 1589e6232409Smrg m68000-sun) 15906d1874b2Smrg os=sunos3 1591e6232409Smrg ;; 1592e6232409Smrg m68*-cisco) 15936d1874b2Smrg os=aout 1594e6232409Smrg ;; 159594a251fdSmrg mep-*) 15966d1874b2Smrg os=elf 15978fff3f40Smrg ;; 1598e6232409Smrg mips*-cisco) 15996d1874b2Smrg os=elf 1600e6232409Smrg ;; 1601e6232409Smrg mips*-*) 16026d1874b2Smrg os=elf 1603e6232409Smrg ;; 1604e6232409Smrg or32-*) 16056d1874b2Smrg os=coff 1606e6232409Smrg ;; 1607e6232409Smrg *-tti) # must be before sparc entry or we get the wrong os. 16086d1874b2Smrg os=sysv3 1609e6232409Smrg ;; 1610e6232409Smrg sparc-* | *-sun) 16116d1874b2Smrg os=sunos4.1.1 1612e6232409Smrg ;; 1613c05e7a3eSmrg pru-*) 16146d1874b2Smrg os=elf 1615c05e7a3eSmrg ;; 1616e6232409Smrg *-be) 16176d1874b2Smrg os=beos 1618e6232409Smrg ;; 1619e6232409Smrg *-ibm) 16206d1874b2Smrg os=aix 1621e6232409Smrg ;; 162294a251fdSmrg *-knuth) 16236d1874b2Smrg os=mmixware 1624e6232409Smrg ;; 1625e6232409Smrg *-wec) 16266d1874b2Smrg os=proelf 1627e6232409Smrg ;; 1628e6232409Smrg *-winbond) 16296d1874b2Smrg os=proelf 1630e6232409Smrg ;; 1631e6232409Smrg *-oki) 16326d1874b2Smrg os=proelf 1633e6232409Smrg ;; 1634e6232409Smrg *-hp) 16356d1874b2Smrg os=hpux 1636e6232409Smrg ;; 1637e6232409Smrg *-hitachi) 16386d1874b2Smrg os=hiux 1639e6232409Smrg ;; 1640e6232409Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16416d1874b2Smrg os=sysv 1642e6232409Smrg ;; 1643e6232409Smrg *-cbm) 16446d1874b2Smrg os=amigaos 1645e6232409Smrg ;; 1646e6232409Smrg *-dg) 16476d1874b2Smrg os=dgux 1648e6232409Smrg ;; 1649e6232409Smrg *-dolphin) 16506d1874b2Smrg os=sysv3 1651e6232409Smrg ;; 1652e6232409Smrg m68k-ccur) 16536d1874b2Smrg os=rtu 1654e6232409Smrg ;; 1655e6232409Smrg m88k-omron*) 16566d1874b2Smrg os=luna 1657e6232409Smrg ;; 1658c05e7a3eSmrg *-next) 16596d1874b2Smrg os=nextstep 1660e6232409Smrg ;; 1661e6232409Smrg *-sequent) 16626d1874b2Smrg os=ptx 1663e6232409Smrg ;; 1664e6232409Smrg *-crds) 16656d1874b2Smrg os=unos 1666e6232409Smrg ;; 1667e6232409Smrg *-ns) 16686d1874b2Smrg os=genix 1669e6232409Smrg ;; 1670e6232409Smrg i370-*) 16716d1874b2Smrg os=mvs 1672e6232409Smrg ;; 1673e6232409Smrg *-gould) 16746d1874b2Smrg os=sysv 1675e6232409Smrg ;; 1676e6232409Smrg *-highlevel) 16776d1874b2Smrg os=bsd 1678e6232409Smrg ;; 1679e6232409Smrg *-encore) 16806d1874b2Smrg os=bsd 1681e6232409Smrg ;; 1682e6232409Smrg *-sgi) 16836d1874b2Smrg os=irix 1684e6232409Smrg ;; 1685e6232409Smrg *-siemens) 16866d1874b2Smrg os=sysv4 1687e6232409Smrg ;; 1688e6232409Smrg *-masscomp) 16896d1874b2Smrg os=rtu 1690e6232409Smrg ;; 1691e6232409Smrg f30[01]-fujitsu | f700-fujitsu) 16926d1874b2Smrg os=uxpv 1693e6232409Smrg ;; 1694e6232409Smrg *-rom68k) 16956d1874b2Smrg os=coff 1696e6232409Smrg ;; 1697e6232409Smrg *-*bug) 16986d1874b2Smrg os=coff 1699e6232409Smrg ;; 1700e6232409Smrg *-apple) 17016d1874b2Smrg os=macos 1702e6232409Smrg ;; 1703e6232409Smrg *-atari*) 17046d1874b2Smrg os=mint 17056d1874b2Smrg ;; 17066d1874b2Smrg *-wrs) 17076d1874b2Smrg os=vxworks 1708e6232409Smrg ;; 1709e6232409Smrg *) 17106d1874b2Smrg os=none 1711e6232409Smrg ;; 1712e6232409Smrgesac 17136d1874b2Smrg 1714e6232409Smrgfi 1715e6232409Smrg 17166d1874b2Smrg# Now, validate our (potentially fixed-up) OS. 17176d1874b2Smrgcase $os in 17186d1874b2Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17196d1874b2Smrg musl* | newlib* | relibc* | uclibc*) 17206d1874b2Smrg ;; 17216d1874b2Smrg # Likewise for "kernel-abi" 17226d1874b2Smrg eabi* | gnueabi*) 17236d1874b2Smrg ;; 17246d1874b2Smrg # VxWorks passes extra cpu info in the 4th filed. 17256d1874b2Smrg simlinux | simwindows | spe) 17266d1874b2Smrg ;; 17276d1874b2Smrg # Now accept the basic system types. 17286d1874b2Smrg # The portable systems comes first. 17296d1874b2Smrg # Each alternative MUST end in a * to match a version number. 17306d1874b2Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17316d1874b2Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17326d1874b2Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17336d1874b2Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17346d1874b2Smrg | hiux* | abug | nacl* | netware* | windows* \ 17356d1874b2Smrg | os9* | macos* | osx* | ios* \ 17366d1874b2Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17376d1874b2Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17386d1874b2Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17396d1874b2Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17406d1874b2Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17416d1874b2Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17426d1874b2Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17436d1874b2Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17446d1874b2Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17456d1874b2Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17466d1874b2Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17476d1874b2Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17486d1874b2Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17496d1874b2Smrg | midipix* | mingw32* | mingw64* | mint* \ 17506d1874b2Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17516d1874b2Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17526d1874b2Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17536d1874b2Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17546d1874b2Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17556d1874b2Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17566d1874b2Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17576d1874b2Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17586d1874b2Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17596d1874b2Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 176061d7a284Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 176161d7a284Smrg | fiwix* | mlibc* ) 17626d1874b2Smrg ;; 17636d1874b2Smrg # This one is extra strict with allowed versions 17646d1874b2Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17656d1874b2Smrg # Don't forget version if it is 3.2v4 or newer. 17666d1874b2Smrg ;; 17676d1874b2Smrg none) 17686d1874b2Smrg ;; 176961d7a284Smrg kernel* ) 177061d7a284Smrg # Restricted further below 177161d7a284Smrg ;; 17726d1874b2Smrg *) 17736d1874b2Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17746d1874b2Smrg exit 1 17756d1874b2Smrg ;; 17766d1874b2Smrgesac 17776d1874b2Smrg 17786d1874b2Smrg# As a final step for OS-related things, validate the OS-kernel combination 17796d1874b2Smrg# (given a valid OS), if there is a kernel. 17806d1874b2Smrgcase $kernel-$os in 17816d1874b2Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 178261d7a284Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 17836d1874b2Smrg ;; 17846d1874b2Smrg uclinux-uclibc* ) 17856d1874b2Smrg ;; 178661d7a284Smrg managarm-mlibc* | managarm-kernel* ) 178761d7a284Smrg ;; 178861d7a284Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 17896d1874b2Smrg # These are just libc implementations, not actual OSes, and thus 17906d1874b2Smrg # require a kernel. 17916d1874b2Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17926d1874b2Smrg exit 1 17936d1874b2Smrg ;; 179461d7a284Smrg -kernel* ) 179561d7a284Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 179661d7a284Smrg exit 1 179761d7a284Smrg ;; 179861d7a284Smrg *-kernel* ) 179961d7a284Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 180061d7a284Smrg exit 1 180161d7a284Smrg ;; 18026d1874b2Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 18036d1874b2Smrg ;; 18046d1874b2Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 18056d1874b2Smrg ;; 18066d1874b2Smrg nto-qnx*) 18076d1874b2Smrg ;; 18086d1874b2Smrg os2-emx) 18096d1874b2Smrg ;; 18106d1874b2Smrg *-eabi* | *-gnueabi*) 18116d1874b2Smrg ;; 18126d1874b2Smrg -*) 18136d1874b2Smrg # Blank kernel with real OS is always fine. 18146d1874b2Smrg ;; 18156d1874b2Smrg *-*) 18166d1874b2Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 18176d1874b2Smrg exit 1 18186d1874b2Smrg ;; 18196d1874b2Smrgesac 18206d1874b2Smrg 1821e6232409Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1822e6232409Smrg# manufacturer. We pick the logical manufacturer. 18236d1874b2Smrgcase $vendor in 18246d1874b2Smrg unknown) 18256d1874b2Smrg case $cpu-$os in 18266d1874b2Smrg *-riscix*) 1827e6232409Smrg vendor=acorn 1828e6232409Smrg ;; 18296d1874b2Smrg *-sunos*) 1830e6232409Smrg vendor=sun 1831e6232409Smrg ;; 18326d1874b2Smrg *-cnk* | *-aix*) 1833e6232409Smrg vendor=ibm 1834e6232409Smrg ;; 18356d1874b2Smrg *-beos*) 1836e6232409Smrg vendor=be 1837e6232409Smrg ;; 18386d1874b2Smrg *-hpux*) 1839e6232409Smrg vendor=hp 1840e6232409Smrg ;; 18416d1874b2Smrg *-mpeix*) 1842e6232409Smrg vendor=hp 1843e6232409Smrg ;; 18446d1874b2Smrg *-hiux*) 1845e6232409Smrg vendor=hitachi 1846e6232409Smrg ;; 18476d1874b2Smrg *-unos*) 1848e6232409Smrg vendor=crds 1849e6232409Smrg ;; 18506d1874b2Smrg *-dgux*) 1851e6232409Smrg vendor=dg 1852e6232409Smrg ;; 18536d1874b2Smrg *-luna*) 1854e6232409Smrg vendor=omron 1855e6232409Smrg ;; 18566d1874b2Smrg *-genix*) 1857e6232409Smrg vendor=ns 1858e6232409Smrg ;; 18596d1874b2Smrg *-clix*) 18606d1874b2Smrg vendor=intergraph 18616d1874b2Smrg ;; 18626d1874b2Smrg *-mvs* | *-opened*) 18636d1874b2Smrg vendor=ibm 18646d1874b2Smrg ;; 18656d1874b2Smrg *-os400*) 1866e6232409Smrg vendor=ibm 1867e6232409Smrg ;; 18686d1874b2Smrg s390-* | s390x-*) 1869e6232409Smrg vendor=ibm 1870e6232409Smrg ;; 18716d1874b2Smrg *-ptx*) 1872e6232409Smrg vendor=sequent 1873e6232409Smrg ;; 18746d1874b2Smrg *-tpf*) 1875e6232409Smrg vendor=ibm 1876e6232409Smrg ;; 18776d1874b2Smrg *-vxsim* | *-vxworks* | *-windiss*) 1878e6232409Smrg vendor=wrs 1879e6232409Smrg ;; 18806d1874b2Smrg *-aux*) 1881e6232409Smrg vendor=apple 1882e6232409Smrg ;; 18836d1874b2Smrg *-hms*) 1884e6232409Smrg vendor=hitachi 1885e6232409Smrg ;; 18866d1874b2Smrg *-mpw* | *-macos*) 1887e6232409Smrg vendor=apple 1888e6232409Smrg ;; 18896d1874b2Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1890e6232409Smrg vendor=atari 1891e6232409Smrg ;; 18926d1874b2Smrg *-vos*) 1893e6232409Smrg vendor=stratus 1894e6232409Smrg ;; 1895e6232409Smrg esac 1896e6232409Smrg ;; 1897e6232409Smrgesac 1898e6232409Smrg 18996d1874b2Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1900e6232409Smrgexit 1901e6232409Smrg 1902e6232409Smrg# Local variables: 19036d1874b2Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1904e6232409Smrg# time-stamp-start: "timestamp='" 1905e6232409Smrg# time-stamp-format: "%:y-%02m-%02d" 1906e6232409Smrg# time-stamp-end: "'" 1907e6232409Smrg# End: 1908