config.sub revision 6d8e82c3
13e747e6dSmrg#! /bin/sh 23e747e6dSmrg# Configuration validation subroutine script. 36d8e82c3Smrg# Copyright 1992-2022 Free Software Foundation, Inc. 43e747e6dSmrg 56d8e82c3Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 66d8e82c3Smrg 76d8e82c3Smrgtimestamp='2022-01-03' 83e747e6dSmrg 9c2535118Smrg# This file is free software; you can redistribute it and/or modify it 10c2535118Smrg# under the terms of the GNU General Public License as published by 116d8e82c3Smrg# the Free Software Foundation, either version 3 of the License, or 123e747e6dSmrg# (at your option) any later version. 133e747e6dSmrg# 14c2535118Smrg# This program is distributed in the hope that it will be useful, but 15c2535118Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16c2535118Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17c2535118Smrg# General Public License for more details. 183e747e6dSmrg# 193e747e6dSmrg# You should have received a copy of the GNU General Public License 204a1eb5dbSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 213e747e6dSmrg# 223e747e6dSmrg# As a special exception to the GNU General Public License, if you 233e747e6dSmrg# distribute this file as part of a program that contains a 243e747e6dSmrg# configuration script generated by Autoconf, you may include it under 25c2535118Smrg# the same distribution terms that you use for the rest of that 26c2535118Smrg# program. This Exception is an additional permission under section 7 27c2535118Smrg# of the GNU General Public License, version 3 ("GPLv3"). 283e747e6dSmrg 293e747e6dSmrg 309cd34f4bSmrg# Please send patches to <config-patches@gnu.org>. 313e747e6dSmrg# 323e747e6dSmrg# Configuration subroutine to validate and canonicalize a configuration type. 333e747e6dSmrg# Supply the specified configuration type as an argument. 343e747e6dSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 353e747e6dSmrg# Otherwise, we print the canonical config type on stdout and succeed. 363e747e6dSmrg 377a2631fcSmrg# You can get the latest version of this script from: 386d8e82c3Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 397a2631fcSmrg 403e747e6dSmrg# This file is supposed to be the same for all GNU packages 413e747e6dSmrg# and recognize all the CPU types, system types and aliases 423e747e6dSmrg# that are meaningful with *any* GNU software. 433e747e6dSmrg# Each package is responsible for reporting which valid configurations 443e747e6dSmrg# it does not support. The user should be able to distinguish 453e747e6dSmrg# a failure to support a valid configuration from a meaningless 463e747e6dSmrg# configuration. 473e747e6dSmrg 483e747e6dSmrg# The goal of this file is to map all the various variations of a given 493e747e6dSmrg# machine specification into a single specification in the form: 503e747e6dSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 513e747e6dSmrg# or in some cases, the newer four-part form: 523e747e6dSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 533e747e6dSmrg# It is wrong to echo any other type of specification. 543e747e6dSmrg 556d8e82c3Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 566d8e82c3Smrg# about features and limitations of the classic Bourne shell that were 576d8e82c3Smrg# superseded or lifted in POSIX. However, this script identifies a wide 586d8e82c3Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 596d8e82c3Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 606d8e82c3Smrg# have a pre-POSIX /bin/sh. 616d8e82c3Smrg 623e747e6dSmrgme=`echo "$0" | sed -e 's,.*/,,'` 633e747e6dSmrg 643e747e6dSmrgusage="\ 654a1eb5dbSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 663e747e6dSmrg 673e747e6dSmrgCanonicalize a configuration name. 683e747e6dSmrg 694a1eb5dbSmrgOptions: 703e747e6dSmrg -h, --help print this help, then exit 713e747e6dSmrg -t, --time-stamp print date of last modification, then exit 723e747e6dSmrg -v, --version print version number, then exit 733e747e6dSmrg 743e747e6dSmrgReport bugs and patches to <config-patches@gnu.org>." 753e747e6dSmrg 763e747e6dSmrgversion="\ 773e747e6dSmrgGNU config.sub ($timestamp) 783e747e6dSmrg 796d8e82c3SmrgCopyright 1992-2022 Free Software Foundation, Inc. 803e747e6dSmrg 813e747e6dSmrgThis is free software; see the source for copying conditions. There is NO 823e747e6dSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 833e747e6dSmrg 843e747e6dSmrghelp=" 853e747e6dSmrgTry \`$me --help' for more information." 863e747e6dSmrg 873e747e6dSmrg# Parse command line 883e747e6dSmrgwhile test $# -gt 0 ; do 893e747e6dSmrg case $1 in 903e747e6dSmrg --time-stamp | --time* | -t ) 913e747e6dSmrg echo "$timestamp" ; exit ;; 923e747e6dSmrg --version | -v ) 933e747e6dSmrg echo "$version" ; exit ;; 943e747e6dSmrg --help | --h* | -h ) 953e747e6dSmrg echo "$usage"; exit ;; 963e747e6dSmrg -- ) # Stop option processing 973e747e6dSmrg shift; break ;; 983e747e6dSmrg - ) # Use stdin as input. 993e747e6dSmrg break ;; 1003e747e6dSmrg -* ) 1016d8e82c3Smrg echo "$me: invalid option $1$help" >&2 1023e747e6dSmrg exit 1 ;; 1033e747e6dSmrg 1043e747e6dSmrg *local*) 1053e747e6dSmrg # First pass through any local machine types. 1064a1eb5dbSmrg echo "$1" 1073e747e6dSmrg exit ;; 1083e747e6dSmrg 1093e747e6dSmrg * ) 1103e747e6dSmrg break ;; 1113e747e6dSmrg esac 1123e747e6dSmrgdone 1133e747e6dSmrg 1143e747e6dSmrgcase $# in 1153e747e6dSmrg 0) echo "$me: missing argument$help" >&2 1163e747e6dSmrg exit 1;; 1173e747e6dSmrg 1) ;; 1183e747e6dSmrg *) echo "$me: too many arguments$help" >&2 1193e747e6dSmrg exit 1;; 1203e747e6dSmrgesac 1213e747e6dSmrg 1226d8e82c3Smrg# Split fields of configuration type 1236d8e82c3Smrg# shellcheck disable=SC2162 1246d8e82c3Smrgsaved_IFS=$IFS 1256d8e82c3SmrgIFS="-" read field1 field2 field3 field4 <<EOF 1266d8e82c3Smrg$1 1276d8e82c3SmrgEOF 1286d8e82c3SmrgIFS=$saved_IFS 1293e747e6dSmrg 1306d8e82c3Smrg# Separate into logical components for further validation 1316d8e82c3Smrgcase $1 in 1326d8e82c3Smrg *-*-*-*-*) 1336d8e82c3Smrg echo Invalid configuration \`"$1"\': more than four components >&2 1346d8e82c3Smrg exit 1 135c2535118Smrg ;; 1366d8e82c3Smrg *-*-*-*) 1376d8e82c3Smrg basic_machine=$field1-$field2 1386d8e82c3Smrg basic_os=$field3-$field4 1393e747e6dSmrg ;; 1406d8e82c3Smrg *-*-*) 1416d8e82c3Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1426d8e82c3Smrg # parts 1436d8e82c3Smrg maybe_os=$field2-$field3 1446d8e82c3Smrg case $maybe_os in 1456d8e82c3Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 1466d8e82c3Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1476d8e82c3Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1486d8e82c3Smrg | storm-chaos* | os2-emx* | rtmk-nova*) 1496d8e82c3Smrg basic_machine=$field1 1506d8e82c3Smrg basic_os=$maybe_os 1516d8e82c3Smrg ;; 1526d8e82c3Smrg android-linux) 1536d8e82c3Smrg basic_machine=$field1-unknown 1546d8e82c3Smrg basic_os=linux-android 1556d8e82c3Smrg ;; 1566d8e82c3Smrg *) 1576d8e82c3Smrg basic_machine=$field1-$field2 1586d8e82c3Smrg basic_os=$field3 1596d8e82c3Smrg ;; 1606d8e82c3Smrg esac 1613e747e6dSmrg ;; 1626d8e82c3Smrg *-*) 1636d8e82c3Smrg # A lone config we happen to match not fitting any pattern 1646d8e82c3Smrg case $field1-$field2 in 1656d8e82c3Smrg decstation-3100) 1666d8e82c3Smrg basic_machine=mips-dec 1676d8e82c3Smrg basic_os= 1686d8e82c3Smrg ;; 1696d8e82c3Smrg *-*) 1706d8e82c3Smrg # Second component is usually, but not always the OS 1716d8e82c3Smrg case $field2 in 1726d8e82c3Smrg # Prevent following clause from handling this valid os 1736d8e82c3Smrg sun*os*) 1746d8e82c3Smrg basic_machine=$field1 1756d8e82c3Smrg basic_os=$field2 1766d8e82c3Smrg ;; 1776d8e82c3Smrg zephyr*) 1786d8e82c3Smrg basic_machine=$field1-unknown 1796d8e82c3Smrg basic_os=$field2 1806d8e82c3Smrg ;; 1816d8e82c3Smrg # Manufacturers 1826d8e82c3Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1836d8e82c3Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1846d8e82c3Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1856d8e82c3Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1866d8e82c3Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1876d8e82c3Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1886d8e82c3Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1896d8e82c3Smrg | microblaze* | sim | cisco \ 1906d8e82c3Smrg | oki | wec | wrs | winbond) 1916d8e82c3Smrg basic_machine=$field1-$field2 1926d8e82c3Smrg basic_os= 1936d8e82c3Smrg ;; 1946d8e82c3Smrg *) 1956d8e82c3Smrg basic_machine=$field1 1966d8e82c3Smrg basic_os=$field2 1976d8e82c3Smrg ;; 1986d8e82c3Smrg esac 1996d8e82c3Smrg ;; 2006d8e82c3Smrg esac 2013e747e6dSmrg ;; 2026d8e82c3Smrg *) 2036d8e82c3Smrg # Convert single-component short-hands not valid as part of 2046d8e82c3Smrg # multi-component configurations. 2056d8e82c3Smrg case $field1 in 2066d8e82c3Smrg 386bsd) 2076d8e82c3Smrg basic_machine=i386-pc 2086d8e82c3Smrg basic_os=bsd 2096d8e82c3Smrg ;; 2106d8e82c3Smrg a29khif) 2116d8e82c3Smrg basic_machine=a29k-amd 2126d8e82c3Smrg basic_os=udi 2136d8e82c3Smrg ;; 2146d8e82c3Smrg adobe68k) 2156d8e82c3Smrg basic_machine=m68010-adobe 2166d8e82c3Smrg basic_os=scout 2176d8e82c3Smrg ;; 2186d8e82c3Smrg alliant) 2196d8e82c3Smrg basic_machine=fx80-alliant 2206d8e82c3Smrg basic_os= 2216d8e82c3Smrg ;; 2226d8e82c3Smrg altos | altos3068) 2236d8e82c3Smrg basic_machine=m68k-altos 2246d8e82c3Smrg basic_os= 2256d8e82c3Smrg ;; 2266d8e82c3Smrg am29k) 2276d8e82c3Smrg basic_machine=a29k-none 2286d8e82c3Smrg basic_os=bsd 2296d8e82c3Smrg ;; 2306d8e82c3Smrg amdahl) 2316d8e82c3Smrg basic_machine=580-amdahl 2326d8e82c3Smrg basic_os=sysv 2336d8e82c3Smrg ;; 2346d8e82c3Smrg amiga) 2356d8e82c3Smrg basic_machine=m68k-unknown 2366d8e82c3Smrg basic_os= 2376d8e82c3Smrg ;; 2386d8e82c3Smrg amigaos | amigados) 2396d8e82c3Smrg basic_machine=m68k-unknown 2406d8e82c3Smrg basic_os=amigaos 2416d8e82c3Smrg ;; 2426d8e82c3Smrg amigaunix | amix) 2436d8e82c3Smrg basic_machine=m68k-unknown 2446d8e82c3Smrg basic_os=sysv4 2456d8e82c3Smrg ;; 2466d8e82c3Smrg apollo68) 2476d8e82c3Smrg basic_machine=m68k-apollo 2486d8e82c3Smrg basic_os=sysv 2496d8e82c3Smrg ;; 2506d8e82c3Smrg apollo68bsd) 2516d8e82c3Smrg basic_machine=m68k-apollo 2526d8e82c3Smrg basic_os=bsd 2536d8e82c3Smrg ;; 2546d8e82c3Smrg aros) 2556d8e82c3Smrg basic_machine=i386-pc 2566d8e82c3Smrg basic_os=aros 2576d8e82c3Smrg ;; 2586d8e82c3Smrg aux) 2596d8e82c3Smrg basic_machine=m68k-apple 2606d8e82c3Smrg basic_os=aux 2616d8e82c3Smrg ;; 2626d8e82c3Smrg balance) 2636d8e82c3Smrg basic_machine=ns32k-sequent 2646d8e82c3Smrg basic_os=dynix 2656d8e82c3Smrg ;; 2666d8e82c3Smrg blackfin) 2676d8e82c3Smrg basic_machine=bfin-unknown 2686d8e82c3Smrg basic_os=linux 2696d8e82c3Smrg ;; 2706d8e82c3Smrg cegcc) 2716d8e82c3Smrg basic_machine=arm-unknown 2726d8e82c3Smrg basic_os=cegcc 2736d8e82c3Smrg ;; 2746d8e82c3Smrg convex-c1) 2756d8e82c3Smrg basic_machine=c1-convex 2766d8e82c3Smrg basic_os=bsd 2776d8e82c3Smrg ;; 2786d8e82c3Smrg convex-c2) 2796d8e82c3Smrg basic_machine=c2-convex 2806d8e82c3Smrg basic_os=bsd 2816d8e82c3Smrg ;; 2826d8e82c3Smrg convex-c32) 2836d8e82c3Smrg basic_machine=c32-convex 2846d8e82c3Smrg basic_os=bsd 2856d8e82c3Smrg ;; 2866d8e82c3Smrg convex-c34) 2876d8e82c3Smrg basic_machine=c34-convex 2886d8e82c3Smrg basic_os=bsd 2896d8e82c3Smrg ;; 2906d8e82c3Smrg convex-c38) 2916d8e82c3Smrg basic_machine=c38-convex 2926d8e82c3Smrg basic_os=bsd 2936d8e82c3Smrg ;; 2946d8e82c3Smrg cray) 2956d8e82c3Smrg basic_machine=j90-cray 2966d8e82c3Smrg basic_os=unicos 2976d8e82c3Smrg ;; 2986d8e82c3Smrg crds | unos) 2996d8e82c3Smrg basic_machine=m68k-crds 3006d8e82c3Smrg basic_os= 3016d8e82c3Smrg ;; 3026d8e82c3Smrg da30) 3036d8e82c3Smrg basic_machine=m68k-da30 3046d8e82c3Smrg basic_os= 3056d8e82c3Smrg ;; 3066d8e82c3Smrg decstation | pmax | pmin | dec3100 | decstatn) 3076d8e82c3Smrg basic_machine=mips-dec 3086d8e82c3Smrg basic_os= 3096d8e82c3Smrg ;; 3106d8e82c3Smrg delta88) 3116d8e82c3Smrg basic_machine=m88k-motorola 3126d8e82c3Smrg basic_os=sysv3 3136d8e82c3Smrg ;; 3146d8e82c3Smrg dicos) 3156d8e82c3Smrg basic_machine=i686-pc 3166d8e82c3Smrg basic_os=dicos 3176d8e82c3Smrg ;; 3186d8e82c3Smrg djgpp) 3196d8e82c3Smrg basic_machine=i586-pc 3206d8e82c3Smrg basic_os=msdosdjgpp 3216d8e82c3Smrg ;; 3226d8e82c3Smrg ebmon29k) 3236d8e82c3Smrg basic_machine=a29k-amd 3246d8e82c3Smrg basic_os=ebmon 3256d8e82c3Smrg ;; 3266d8e82c3Smrg es1800 | OSE68k | ose68k | ose | OSE) 3276d8e82c3Smrg basic_machine=m68k-ericsson 3286d8e82c3Smrg basic_os=ose 3296d8e82c3Smrg ;; 3306d8e82c3Smrg gmicro) 3316d8e82c3Smrg basic_machine=tron-gmicro 3326d8e82c3Smrg basic_os=sysv 3336d8e82c3Smrg ;; 3346d8e82c3Smrg go32) 3356d8e82c3Smrg basic_machine=i386-pc 3366d8e82c3Smrg basic_os=go32 3376d8e82c3Smrg ;; 3386d8e82c3Smrg h8300hms) 3396d8e82c3Smrg basic_machine=h8300-hitachi 3406d8e82c3Smrg basic_os=hms 3416d8e82c3Smrg ;; 3426d8e82c3Smrg h8300xray) 3436d8e82c3Smrg basic_machine=h8300-hitachi 3446d8e82c3Smrg basic_os=xray 3456d8e82c3Smrg ;; 3466d8e82c3Smrg h8500hms) 3476d8e82c3Smrg basic_machine=h8500-hitachi 3486d8e82c3Smrg basic_os=hms 3496d8e82c3Smrg ;; 3506d8e82c3Smrg harris) 3516d8e82c3Smrg basic_machine=m88k-harris 3526d8e82c3Smrg basic_os=sysv3 3536d8e82c3Smrg ;; 3546d8e82c3Smrg hp300 | hp300hpux) 3556d8e82c3Smrg basic_machine=m68k-hp 3566d8e82c3Smrg basic_os=hpux 3576d8e82c3Smrg ;; 3586d8e82c3Smrg hp300bsd) 3596d8e82c3Smrg basic_machine=m68k-hp 3606d8e82c3Smrg basic_os=bsd 3616d8e82c3Smrg ;; 3626d8e82c3Smrg hppaosf) 3636d8e82c3Smrg basic_machine=hppa1.1-hp 3646d8e82c3Smrg basic_os=osf 3656d8e82c3Smrg ;; 3666d8e82c3Smrg hppro) 3676d8e82c3Smrg basic_machine=hppa1.1-hp 3686d8e82c3Smrg basic_os=proelf 3696d8e82c3Smrg ;; 3706d8e82c3Smrg i386mach) 3716d8e82c3Smrg basic_machine=i386-mach 3726d8e82c3Smrg basic_os=mach 3736d8e82c3Smrg ;; 3746d8e82c3Smrg isi68 | isi) 3756d8e82c3Smrg basic_machine=m68k-isi 3766d8e82c3Smrg basic_os=sysv 3776d8e82c3Smrg ;; 3786d8e82c3Smrg m68knommu) 3796d8e82c3Smrg basic_machine=m68k-unknown 3806d8e82c3Smrg basic_os=linux 3816d8e82c3Smrg ;; 3826d8e82c3Smrg magnum | m3230) 3836d8e82c3Smrg basic_machine=mips-mips 3846d8e82c3Smrg basic_os=sysv 3856d8e82c3Smrg ;; 3866d8e82c3Smrg merlin) 3876d8e82c3Smrg basic_machine=ns32k-utek 3886d8e82c3Smrg basic_os=sysv 3896d8e82c3Smrg ;; 3906d8e82c3Smrg mingw64) 3916d8e82c3Smrg basic_machine=x86_64-pc 3926d8e82c3Smrg basic_os=mingw64 3936d8e82c3Smrg ;; 3946d8e82c3Smrg mingw32) 3956d8e82c3Smrg basic_machine=i686-pc 3966d8e82c3Smrg basic_os=mingw32 3976d8e82c3Smrg ;; 3986d8e82c3Smrg mingw32ce) 3996d8e82c3Smrg basic_machine=arm-unknown 4006d8e82c3Smrg basic_os=mingw32ce 4016d8e82c3Smrg ;; 4026d8e82c3Smrg monitor) 4036d8e82c3Smrg basic_machine=m68k-rom68k 4046d8e82c3Smrg basic_os=coff 4056d8e82c3Smrg ;; 4066d8e82c3Smrg morphos) 4076d8e82c3Smrg basic_machine=powerpc-unknown 4086d8e82c3Smrg basic_os=morphos 4096d8e82c3Smrg ;; 4106d8e82c3Smrg moxiebox) 4116d8e82c3Smrg basic_machine=moxie-unknown 4126d8e82c3Smrg basic_os=moxiebox 4136d8e82c3Smrg ;; 4146d8e82c3Smrg msdos) 4156d8e82c3Smrg basic_machine=i386-pc 4166d8e82c3Smrg basic_os=msdos 4176d8e82c3Smrg ;; 4186d8e82c3Smrg msys) 4196d8e82c3Smrg basic_machine=i686-pc 4206d8e82c3Smrg basic_os=msys 4216d8e82c3Smrg ;; 4226d8e82c3Smrg mvs) 4236d8e82c3Smrg basic_machine=i370-ibm 4246d8e82c3Smrg basic_os=mvs 4256d8e82c3Smrg ;; 4266d8e82c3Smrg nacl) 4276d8e82c3Smrg basic_machine=le32-unknown 4286d8e82c3Smrg basic_os=nacl 4296d8e82c3Smrg ;; 4306d8e82c3Smrg ncr3000) 4316d8e82c3Smrg basic_machine=i486-ncr 4326d8e82c3Smrg basic_os=sysv4 4336d8e82c3Smrg ;; 4346d8e82c3Smrg netbsd386) 4356d8e82c3Smrg basic_machine=i386-pc 4366d8e82c3Smrg basic_os=netbsd 4376d8e82c3Smrg ;; 4386d8e82c3Smrg netwinder) 4396d8e82c3Smrg basic_machine=armv4l-rebel 4406d8e82c3Smrg basic_os=linux 4416d8e82c3Smrg ;; 4426d8e82c3Smrg news | news700 | news800 | news900) 4436d8e82c3Smrg basic_machine=m68k-sony 4446d8e82c3Smrg basic_os=newsos 4456d8e82c3Smrg ;; 4466d8e82c3Smrg news1000) 4476d8e82c3Smrg basic_machine=m68030-sony 4486d8e82c3Smrg basic_os=newsos 4496d8e82c3Smrg ;; 4506d8e82c3Smrg necv70) 4516d8e82c3Smrg basic_machine=v70-nec 4526d8e82c3Smrg basic_os=sysv 4536d8e82c3Smrg ;; 4546d8e82c3Smrg nh3000) 4556d8e82c3Smrg basic_machine=m68k-harris 4566d8e82c3Smrg basic_os=cxux 4576d8e82c3Smrg ;; 4586d8e82c3Smrg nh[45]000) 4596d8e82c3Smrg basic_machine=m88k-harris 4606d8e82c3Smrg basic_os=cxux 4616d8e82c3Smrg ;; 4626d8e82c3Smrg nindy960) 4636d8e82c3Smrg basic_machine=i960-intel 4646d8e82c3Smrg basic_os=nindy 4656d8e82c3Smrg ;; 4666d8e82c3Smrg mon960) 4676d8e82c3Smrg basic_machine=i960-intel 4686d8e82c3Smrg basic_os=mon960 4696d8e82c3Smrg ;; 4706d8e82c3Smrg nonstopux) 4716d8e82c3Smrg basic_machine=mips-compaq 4726d8e82c3Smrg basic_os=nonstopux 4736d8e82c3Smrg ;; 4746d8e82c3Smrg os400) 4756d8e82c3Smrg basic_machine=powerpc-ibm 4766d8e82c3Smrg basic_os=os400 4776d8e82c3Smrg ;; 4786d8e82c3Smrg OSE68000 | ose68000) 4796d8e82c3Smrg basic_machine=m68000-ericsson 4806d8e82c3Smrg basic_os=ose 4816d8e82c3Smrg ;; 4826d8e82c3Smrg os68k) 4836d8e82c3Smrg basic_machine=m68k-none 4846d8e82c3Smrg basic_os=os68k 4856d8e82c3Smrg ;; 4866d8e82c3Smrg paragon) 4876d8e82c3Smrg basic_machine=i860-intel 4886d8e82c3Smrg basic_os=osf 4896d8e82c3Smrg ;; 4906d8e82c3Smrg parisc) 4916d8e82c3Smrg basic_machine=hppa-unknown 4926d8e82c3Smrg basic_os=linux 4936d8e82c3Smrg ;; 4946d8e82c3Smrg psp) 4956d8e82c3Smrg basic_machine=mipsallegrexel-sony 4966d8e82c3Smrg basic_os=psp 4976d8e82c3Smrg ;; 4986d8e82c3Smrg pw32) 4996d8e82c3Smrg basic_machine=i586-unknown 5006d8e82c3Smrg basic_os=pw32 5016d8e82c3Smrg ;; 5026d8e82c3Smrg rdos | rdos64) 5036d8e82c3Smrg basic_machine=x86_64-pc 5046d8e82c3Smrg basic_os=rdos 5056d8e82c3Smrg ;; 5066d8e82c3Smrg rdos32) 5076d8e82c3Smrg basic_machine=i386-pc 5086d8e82c3Smrg basic_os=rdos 5096d8e82c3Smrg ;; 5106d8e82c3Smrg rom68k) 5116d8e82c3Smrg basic_machine=m68k-rom68k 5126d8e82c3Smrg basic_os=coff 5136d8e82c3Smrg ;; 5146d8e82c3Smrg sa29200) 5156d8e82c3Smrg basic_machine=a29k-amd 5166d8e82c3Smrg basic_os=udi 5176d8e82c3Smrg ;; 5186d8e82c3Smrg sei) 5196d8e82c3Smrg basic_machine=mips-sei 5206d8e82c3Smrg basic_os=seiux 5216d8e82c3Smrg ;; 5226d8e82c3Smrg sequent) 5236d8e82c3Smrg basic_machine=i386-sequent 5246d8e82c3Smrg basic_os= 5256d8e82c3Smrg ;; 5266d8e82c3Smrg sps7) 5276d8e82c3Smrg basic_machine=m68k-bull 5286d8e82c3Smrg basic_os=sysv2 5296d8e82c3Smrg ;; 5306d8e82c3Smrg st2000) 5316d8e82c3Smrg basic_machine=m68k-tandem 5326d8e82c3Smrg basic_os= 5336d8e82c3Smrg ;; 5346d8e82c3Smrg stratus) 5356d8e82c3Smrg basic_machine=i860-stratus 5366d8e82c3Smrg basic_os=sysv4 5376d8e82c3Smrg ;; 5386d8e82c3Smrg sun2) 5396d8e82c3Smrg basic_machine=m68000-sun 5406d8e82c3Smrg basic_os= 5416d8e82c3Smrg ;; 5426d8e82c3Smrg sun2os3) 5436d8e82c3Smrg basic_machine=m68000-sun 5446d8e82c3Smrg basic_os=sunos3 5456d8e82c3Smrg ;; 5466d8e82c3Smrg sun2os4) 5476d8e82c3Smrg basic_machine=m68000-sun 5486d8e82c3Smrg basic_os=sunos4 5496d8e82c3Smrg ;; 5506d8e82c3Smrg sun3) 5516d8e82c3Smrg basic_machine=m68k-sun 5526d8e82c3Smrg basic_os= 5536d8e82c3Smrg ;; 5546d8e82c3Smrg sun3os3) 5556d8e82c3Smrg basic_machine=m68k-sun 5566d8e82c3Smrg basic_os=sunos3 5576d8e82c3Smrg ;; 5586d8e82c3Smrg sun3os4) 5596d8e82c3Smrg basic_machine=m68k-sun 5606d8e82c3Smrg basic_os=sunos4 5616d8e82c3Smrg ;; 5626d8e82c3Smrg sun4) 5636d8e82c3Smrg basic_machine=sparc-sun 5646d8e82c3Smrg basic_os= 5656d8e82c3Smrg ;; 5666d8e82c3Smrg sun4os3) 5676d8e82c3Smrg basic_machine=sparc-sun 5686d8e82c3Smrg basic_os=sunos3 5696d8e82c3Smrg ;; 5706d8e82c3Smrg sun4os4) 5716d8e82c3Smrg basic_machine=sparc-sun 5726d8e82c3Smrg basic_os=sunos4 5736d8e82c3Smrg ;; 5746d8e82c3Smrg sun4sol2) 5756d8e82c3Smrg basic_machine=sparc-sun 5766d8e82c3Smrg basic_os=solaris2 5776d8e82c3Smrg ;; 5786d8e82c3Smrg sun386 | sun386i | roadrunner) 5796d8e82c3Smrg basic_machine=i386-sun 5806d8e82c3Smrg basic_os= 5816d8e82c3Smrg ;; 5826d8e82c3Smrg sv1) 5836d8e82c3Smrg basic_machine=sv1-cray 5846d8e82c3Smrg basic_os=unicos 5856d8e82c3Smrg ;; 5866d8e82c3Smrg symmetry) 5876d8e82c3Smrg basic_machine=i386-sequent 5886d8e82c3Smrg basic_os=dynix 5896d8e82c3Smrg ;; 5906d8e82c3Smrg t3e) 5916d8e82c3Smrg basic_machine=alphaev5-cray 5926d8e82c3Smrg basic_os=unicos 5936d8e82c3Smrg ;; 5946d8e82c3Smrg t90) 5956d8e82c3Smrg basic_machine=t90-cray 5966d8e82c3Smrg basic_os=unicos 5976d8e82c3Smrg ;; 5986d8e82c3Smrg toad1) 5996d8e82c3Smrg basic_machine=pdp10-xkl 6006d8e82c3Smrg basic_os=tops20 6016d8e82c3Smrg ;; 6026d8e82c3Smrg tpf) 6036d8e82c3Smrg basic_machine=s390x-ibm 6046d8e82c3Smrg basic_os=tpf 6056d8e82c3Smrg ;; 6066d8e82c3Smrg udi29k) 6076d8e82c3Smrg basic_machine=a29k-amd 6086d8e82c3Smrg basic_os=udi 6096d8e82c3Smrg ;; 6106d8e82c3Smrg ultra3) 6116d8e82c3Smrg basic_machine=a29k-nyu 6126d8e82c3Smrg basic_os=sym1 6136d8e82c3Smrg ;; 6146d8e82c3Smrg v810 | necv810) 6156d8e82c3Smrg basic_machine=v810-nec 6166d8e82c3Smrg basic_os=none 6176d8e82c3Smrg ;; 6186d8e82c3Smrg vaxv) 6196d8e82c3Smrg basic_machine=vax-dec 6206d8e82c3Smrg basic_os=sysv 6216d8e82c3Smrg ;; 6226d8e82c3Smrg vms) 6236d8e82c3Smrg basic_machine=vax-dec 6246d8e82c3Smrg basic_os=vms 6256d8e82c3Smrg ;; 6266d8e82c3Smrg vsta) 6276d8e82c3Smrg basic_machine=i386-pc 6286d8e82c3Smrg basic_os=vsta 6296d8e82c3Smrg ;; 6306d8e82c3Smrg vxworks960) 6316d8e82c3Smrg basic_machine=i960-wrs 6326d8e82c3Smrg basic_os=vxworks 6336d8e82c3Smrg ;; 6346d8e82c3Smrg vxworks68) 6356d8e82c3Smrg basic_machine=m68k-wrs 6366d8e82c3Smrg basic_os=vxworks 6376d8e82c3Smrg ;; 6386d8e82c3Smrg vxworks29k) 6396d8e82c3Smrg basic_machine=a29k-wrs 6406d8e82c3Smrg basic_os=vxworks 6416d8e82c3Smrg ;; 6426d8e82c3Smrg xbox) 6436d8e82c3Smrg basic_machine=i686-pc 6446d8e82c3Smrg basic_os=mingw32 6456d8e82c3Smrg ;; 6466d8e82c3Smrg ymp) 6476d8e82c3Smrg basic_machine=ymp-cray 6486d8e82c3Smrg basic_os=unicos 6496d8e82c3Smrg ;; 6506d8e82c3Smrg *) 6516d8e82c3Smrg basic_machine=$1 6526d8e82c3Smrg basic_os= 6536d8e82c3Smrg ;; 6546d8e82c3Smrg esac 6553e747e6dSmrg ;; 6563e747e6dSmrgesac 6573e747e6dSmrg 6586d8e82c3Smrg# Decode 1-component or ad-hoc basic machines 6593e747e6dSmrgcase $basic_machine in 6606d8e82c3Smrg # Here we handle the default manufacturer of certain CPU types. It is in 6616d8e82c3Smrg # some cases the only manufacturer, in others, it is the most popular. 6626d8e82c3Smrg w89k) 6636d8e82c3Smrg cpu=hppa1.1 6646d8e82c3Smrg vendor=winbond 6653e747e6dSmrg ;; 6666d8e82c3Smrg op50n) 6676d8e82c3Smrg cpu=hppa1.1 6686d8e82c3Smrg vendor=oki 6693e747e6dSmrg ;; 6706d8e82c3Smrg op60c) 6716d8e82c3Smrg cpu=hppa1.1 6726d8e82c3Smrg vendor=oki 6733e747e6dSmrg ;; 6746d8e82c3Smrg ibm*) 6756d8e82c3Smrg cpu=i370 6766d8e82c3Smrg vendor=ibm 677c2535118Smrg ;; 6786d8e82c3Smrg orion105) 6796d8e82c3Smrg cpu=clipper 6806d8e82c3Smrg vendor=highlevel 681c2535118Smrg ;; 6826d8e82c3Smrg mac | mpw | mac-mpw) 6836d8e82c3Smrg cpu=m68k 6846d8e82c3Smrg vendor=apple 685c2535118Smrg ;; 6866d8e82c3Smrg pmac | pmac-mpw) 6876d8e82c3Smrg cpu=powerpc 6886d8e82c3Smrg vendor=apple 689c2535118Smrg ;; 690c2535118Smrg 6913e747e6dSmrg # Recognize the various machine names and aliases which stand 6923e747e6dSmrg # for a CPU type and a company and sometimes even an OS. 6933e747e6dSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6946d8e82c3Smrg cpu=m68000 6956d8e82c3Smrg vendor=att 6963e747e6dSmrg ;; 6973e747e6dSmrg 3b*) 6986d8e82c3Smrg cpu=we32k 6996d8e82c3Smrg vendor=att 7003e747e6dSmrg ;; 7017a2631fcSmrg bluegene*) 7026d8e82c3Smrg cpu=powerpc 7036d8e82c3Smrg vendor=ibm 7046d8e82c3Smrg basic_os=cnk 7053e747e6dSmrg ;; 7063e747e6dSmrg decsystem10* | dec10*) 7076d8e82c3Smrg cpu=pdp10 7086d8e82c3Smrg vendor=dec 7096d8e82c3Smrg basic_os=tops10 7103e747e6dSmrg ;; 7113e747e6dSmrg decsystem20* | dec20*) 7126d8e82c3Smrg cpu=pdp10 7136d8e82c3Smrg vendor=dec 7146d8e82c3Smrg basic_os=tops20 7153e747e6dSmrg ;; 7163e747e6dSmrg delta | 3300 | motorola-3300 | motorola-delta \ 7173e747e6dSmrg | 3300-motorola | delta-motorola) 7186d8e82c3Smrg cpu=m68k 7196d8e82c3Smrg vendor=motorola 7203e747e6dSmrg ;; 7214a1eb5dbSmrg dpx2*) 7226d8e82c3Smrg cpu=m68k 7236d8e82c3Smrg vendor=bull 7246d8e82c3Smrg basic_os=sysv3 7253e747e6dSmrg ;; 7263e747e6dSmrg encore | umax | mmax) 7276d8e82c3Smrg cpu=ns32k 7286d8e82c3Smrg vendor=encore 7293e747e6dSmrg ;; 7306d8e82c3Smrg elxsi) 7316d8e82c3Smrg cpu=elxsi 7326d8e82c3Smrg vendor=elxsi 7336d8e82c3Smrg basic_os=${basic_os:-bsd} 7343e747e6dSmrg ;; 7353e747e6dSmrg fx2800) 7366d8e82c3Smrg cpu=i860 7376d8e82c3Smrg vendor=alliant 7383e747e6dSmrg ;; 7393e747e6dSmrg genix) 7406d8e82c3Smrg cpu=ns32k 7416d8e82c3Smrg vendor=ns 7423e747e6dSmrg ;; 7433e747e6dSmrg h3050r* | hiux*) 7446d8e82c3Smrg cpu=hppa1.1 7456d8e82c3Smrg vendor=hitachi 7466d8e82c3Smrg basic_os=hiuxwe2 7473e747e6dSmrg ;; 7483e747e6dSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7496d8e82c3Smrg cpu=hppa1.0 7506d8e82c3Smrg vendor=hp 7513e747e6dSmrg ;; 7523e747e6dSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7536d8e82c3Smrg cpu=m68000 7546d8e82c3Smrg vendor=hp 7553e747e6dSmrg ;; 7563e747e6dSmrg hp9k3[2-9][0-9]) 7576d8e82c3Smrg cpu=m68k 7586d8e82c3Smrg vendor=hp 7593e747e6dSmrg ;; 7603e747e6dSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7616d8e82c3Smrg cpu=hppa1.0 7626d8e82c3Smrg vendor=hp 7633e747e6dSmrg ;; 7643e747e6dSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7656d8e82c3Smrg cpu=hppa1.1 7666d8e82c3Smrg vendor=hp 7673e747e6dSmrg ;; 7683e747e6dSmrg hp9k78[0-9] | hp78[0-9]) 7693e747e6dSmrg # FIXME: really hppa2.0-hp 7706d8e82c3Smrg cpu=hppa1.1 7716d8e82c3Smrg vendor=hp 7723e747e6dSmrg ;; 7733e747e6dSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7743e747e6dSmrg # FIXME: really hppa2.0-hp 7756d8e82c3Smrg cpu=hppa1.1 7766d8e82c3Smrg vendor=hp 7773e747e6dSmrg ;; 7783e747e6dSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7796d8e82c3Smrg cpu=hppa1.1 7806d8e82c3Smrg vendor=hp 7813e747e6dSmrg ;; 7823e747e6dSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7836d8e82c3Smrg cpu=hppa1.0 7846d8e82c3Smrg vendor=hp 7853e747e6dSmrg ;; 7863e747e6dSmrg i*86v32) 7876d8e82c3Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7886d8e82c3Smrg vendor=pc 7896d8e82c3Smrg basic_os=sysv32 7903e747e6dSmrg ;; 7913e747e6dSmrg i*86v4*) 7926d8e82c3Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7936d8e82c3Smrg vendor=pc 7946d8e82c3Smrg basic_os=sysv4 7953e747e6dSmrg ;; 7963e747e6dSmrg i*86v) 7976d8e82c3Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7986d8e82c3Smrg vendor=pc 7996d8e82c3Smrg basic_os=sysv 8003e747e6dSmrg ;; 8013e747e6dSmrg i*86sol2) 8026d8e82c3Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8036d8e82c3Smrg vendor=pc 8046d8e82c3Smrg basic_os=solaris2 8053e747e6dSmrg ;; 8066d8e82c3Smrg j90 | j90-cray) 8076d8e82c3Smrg cpu=j90 8086d8e82c3Smrg vendor=cray 8096d8e82c3Smrg basic_os=${basic_os:-unicos} 8103e747e6dSmrg ;; 8113e747e6dSmrg iris | iris4d) 8126d8e82c3Smrg cpu=mips 8136d8e82c3Smrg vendor=sgi 8146d8e82c3Smrg case $basic_os in 8156d8e82c3Smrg irix*) 8163e747e6dSmrg ;; 8173e747e6dSmrg *) 8186d8e82c3Smrg basic_os=irix4 8193e747e6dSmrg ;; 8203e747e6dSmrg esac 8213e747e6dSmrg ;; 8223e747e6dSmrg miniframe) 8236d8e82c3Smrg cpu=m68000 8246d8e82c3Smrg vendor=convergent 8259cd34f4bSmrg ;; 8266d8e82c3Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8276d8e82c3Smrg cpu=m68k 8286d8e82c3Smrg vendor=atari 8296d8e82c3Smrg basic_os=mint 8303e747e6dSmrg ;; 8313e747e6dSmrg news-3600 | risc-news) 8326d8e82c3Smrg cpu=mips 8336d8e82c3Smrg vendor=sony 8346d8e82c3Smrg basic_os=newsos 8353e747e6dSmrg ;; 8364a1eb5dbSmrg next | m*-next) 8376d8e82c3Smrg cpu=m68k 8386d8e82c3Smrg vendor=next 8396d8e82c3Smrg case $basic_os in 8406d8e82c3Smrg openstep*) 8416d8e82c3Smrg ;; 8426d8e82c3Smrg nextstep*) 8433e747e6dSmrg ;; 8446d8e82c3Smrg ns2*) 8456d8e82c3Smrg basic_os=nextstep2 8463e747e6dSmrg ;; 8473e747e6dSmrg *) 8486d8e82c3Smrg basic_os=nextstep3 8493e747e6dSmrg ;; 8503e747e6dSmrg esac 8513e747e6dSmrg ;; 8523e747e6dSmrg np1) 8536d8e82c3Smrg cpu=np1 8546d8e82c3Smrg vendor=gould 8554a1eb5dbSmrg ;; 8563e747e6dSmrg op50n-* | op60c-*) 8576d8e82c3Smrg cpu=hppa1.1 8586d8e82c3Smrg vendor=oki 8596d8e82c3Smrg basic_os=proelf 8603e747e6dSmrg ;; 8613e747e6dSmrg pa-hitachi) 8626d8e82c3Smrg cpu=hppa1.1 8636d8e82c3Smrg vendor=hitachi 8646d8e82c3Smrg basic_os=hiuxwe2 8653e747e6dSmrg ;; 8663e747e6dSmrg pbd) 8676d8e82c3Smrg cpu=sparc 8686d8e82c3Smrg vendor=tti 8693e747e6dSmrg ;; 8703e747e6dSmrg pbb) 8716d8e82c3Smrg cpu=m68k 8726d8e82c3Smrg vendor=tti 8733e747e6dSmrg ;; 8746d8e82c3Smrg pc532) 8756d8e82c3Smrg cpu=ns32k 8766d8e82c3Smrg vendor=pc532 8773e747e6dSmrg ;; 8783e747e6dSmrg pn) 8796d8e82c3Smrg cpu=pn 8806d8e82c3Smrg vendor=gould 8813e747e6dSmrg ;; 8826d8e82c3Smrg power) 8836d8e82c3Smrg cpu=power 8846d8e82c3Smrg vendor=ibm 8853e747e6dSmrg ;; 8866d8e82c3Smrg ps2) 8876d8e82c3Smrg cpu=i386 8886d8e82c3Smrg vendor=ibm 8893e747e6dSmrg ;; 8906d8e82c3Smrg rm[46]00) 8916d8e82c3Smrg cpu=mips 8926d8e82c3Smrg vendor=siemens 8933e747e6dSmrg ;; 8946d8e82c3Smrg rtpc | rtpc-*) 8956d8e82c3Smrg cpu=romp 8966d8e82c3Smrg vendor=ibm 8973e747e6dSmrg ;; 8986d8e82c3Smrg sde) 8996d8e82c3Smrg cpu=mipsisa32 9006d8e82c3Smrg vendor=sde 9016d8e82c3Smrg basic_os=${basic_os:-elf} 9023e747e6dSmrg ;; 9036d8e82c3Smrg simso-wrs) 9046d8e82c3Smrg cpu=sparclite 9056d8e82c3Smrg vendor=wrs 9066d8e82c3Smrg basic_os=vxworks 9073e747e6dSmrg ;; 9086d8e82c3Smrg tower | tower-32) 9096d8e82c3Smrg cpu=m68k 9106d8e82c3Smrg vendor=ncr 9113e747e6dSmrg ;; 9126d8e82c3Smrg vpp*|vx|vx-*) 9136d8e82c3Smrg cpu=f301 9146d8e82c3Smrg vendor=fujitsu 9153e747e6dSmrg ;; 9166d8e82c3Smrg w65) 9176d8e82c3Smrg cpu=w65 9186d8e82c3Smrg vendor=wdc 919c2535118Smrg ;; 9206d8e82c3Smrg w89k-*) 9216d8e82c3Smrg cpu=hppa1.1 9226d8e82c3Smrg vendor=winbond 9236d8e82c3Smrg basic_os=proelf 9243e747e6dSmrg ;; 9256d8e82c3Smrg none) 9266d8e82c3Smrg cpu=none 9276d8e82c3Smrg vendor=none 9283e747e6dSmrg ;; 9296d8e82c3Smrg leon|leon[3-9]) 9306d8e82c3Smrg cpu=sparc 9316d8e82c3Smrg vendor=$basic_machine 9323e747e6dSmrg ;; 9336d8e82c3Smrg leon-*|leon[3-9]-*) 9346d8e82c3Smrg cpu=sparc 9356d8e82c3Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9363e747e6dSmrg ;; 9376d8e82c3Smrg 9386d8e82c3Smrg *-*) 9396d8e82c3Smrg # shellcheck disable=SC2162 9406d8e82c3Smrg saved_IFS=$IFS 9416d8e82c3Smrg IFS="-" read cpu vendor <<EOF 9426d8e82c3Smrg$basic_machine 9436d8e82c3SmrgEOF 9446d8e82c3Smrg IFS=$saved_IFS 9453e747e6dSmrg ;; 9466d8e82c3Smrg # We use `pc' rather than `unknown' 9476d8e82c3Smrg # because (1) that's what they normally are, and 9486d8e82c3Smrg # (2) the word "unknown" tends to confuse beginning users. 9496d8e82c3Smrg i*86 | x86_64) 9506d8e82c3Smrg cpu=$basic_machine 9516d8e82c3Smrg vendor=pc 9523e747e6dSmrg ;; 9536d8e82c3Smrg # These rules are duplicated from below for sake of the special case above; 9546d8e82c3Smrg # i.e. things that normalized to x86 arches should also default to "pc" 9556d8e82c3Smrg pc98) 9566d8e82c3Smrg cpu=i386 9576d8e82c3Smrg vendor=pc 9583e747e6dSmrg ;; 9596d8e82c3Smrg x64 | amd64) 9606d8e82c3Smrg cpu=x86_64 9616d8e82c3Smrg vendor=pc 9623e747e6dSmrg ;; 9636d8e82c3Smrg # Recognize the basic CPU types without company name. 9646d8e82c3Smrg *) 9656d8e82c3Smrg cpu=$basic_machine 9666d8e82c3Smrg vendor=unknown 9673e747e6dSmrg ;; 9686d8e82c3Smrgesac 9696d8e82c3Smrg 9706d8e82c3Smrgunset -v basic_machine 9716d8e82c3Smrg 9726d8e82c3Smrg# Decode basic machines in the full and proper CPU-Company form. 9736d8e82c3Smrgcase $cpu-$vendor in 9746d8e82c3Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9756d8e82c3Smrg # some cases the only manufacturer, in others, it is the most popular. 9766d8e82c3Smrg craynv-unknown) 9776d8e82c3Smrg vendor=cray 9786d8e82c3Smrg basic_os=${basic_os:-unicosmp} 9793e747e6dSmrg ;; 9806d8e82c3Smrg c90-unknown | c90-cray) 9816d8e82c3Smrg vendor=cray 9826d8e82c3Smrg basic_os=${Basic_os:-unicos} 9833e747e6dSmrg ;; 9846d8e82c3Smrg fx80-unknown) 9856d8e82c3Smrg vendor=alliant 9863e747e6dSmrg ;; 9876d8e82c3Smrg romp-unknown) 9886d8e82c3Smrg vendor=ibm 9893e747e6dSmrg ;; 9906d8e82c3Smrg mmix-unknown) 9916d8e82c3Smrg vendor=knuth 9923e747e6dSmrg ;; 9936d8e82c3Smrg microblaze-unknown | microblazeel-unknown) 9946d8e82c3Smrg vendor=xilinx 9953e747e6dSmrg ;; 9966d8e82c3Smrg rs6000-unknown) 9976d8e82c3Smrg vendor=ibm 9983e747e6dSmrg ;; 9996d8e82c3Smrg vax-unknown) 10006d8e82c3Smrg vendor=dec 10013e747e6dSmrg ;; 10026d8e82c3Smrg pdp11-unknown) 10036d8e82c3Smrg vendor=dec 10043e747e6dSmrg ;; 10056d8e82c3Smrg we32k-unknown) 10066d8e82c3Smrg vendor=att 1007c2535118Smrg ;; 10086d8e82c3Smrg cydra-unknown) 10096d8e82c3Smrg vendor=cydrome 10103e747e6dSmrg ;; 10116d8e82c3Smrg i370-ibm*) 10126d8e82c3Smrg vendor=ibm 10133e747e6dSmrg ;; 10146d8e82c3Smrg orion-unknown) 10156d8e82c3Smrg vendor=highlevel 10163e747e6dSmrg ;; 10176d8e82c3Smrg xps-unknown | xps100-unknown) 10186d8e82c3Smrg cpu=xps100 10196d8e82c3Smrg vendor=honeywell 10203e747e6dSmrg ;; 10216d8e82c3Smrg 10226d8e82c3Smrg # Here we normalize CPU types with a missing or matching vendor 10236d8e82c3Smrg armh-unknown | armh-alt) 10246d8e82c3Smrg cpu=armv7l 10256d8e82c3Smrg vendor=alt 10266d8e82c3Smrg basic_os=${basic_os:-linux-gnueabihf} 10273e747e6dSmrg ;; 10286d8e82c3Smrg dpx20-unknown | dpx20-bull) 10296d8e82c3Smrg cpu=rs6000 10306d8e82c3Smrg vendor=bull 10316d8e82c3Smrg basic_os=${basic_os:-bosx} 10323e747e6dSmrg ;; 10336d8e82c3Smrg 10346d8e82c3Smrg # Here we normalize CPU types irrespective of the vendor 10356d8e82c3Smrg amd64-*) 10366d8e82c3Smrg cpu=x86_64 10373e747e6dSmrg ;; 10386d8e82c3Smrg blackfin-*) 10396d8e82c3Smrg cpu=bfin 10406d8e82c3Smrg basic_os=linux 10413e747e6dSmrg ;; 10426d8e82c3Smrg c54x-*) 10436d8e82c3Smrg cpu=tic54x 10443e747e6dSmrg ;; 10456d8e82c3Smrg c55x-*) 10466d8e82c3Smrg cpu=tic55x 10473e747e6dSmrg ;; 10486d8e82c3Smrg c6x-*) 10496d8e82c3Smrg cpu=tic6x 10503e747e6dSmrg ;; 10516d8e82c3Smrg e500v[12]-*) 10526d8e82c3Smrg cpu=powerpc 10536d8e82c3Smrg basic_os=${basic_os}"spe" 10543e747e6dSmrg ;; 10556d8e82c3Smrg mips3*-*) 10566d8e82c3Smrg cpu=mips64 10573e747e6dSmrg ;; 10586d8e82c3Smrg ms1-*) 10596d8e82c3Smrg cpu=mt 10603e747e6dSmrg ;; 10616d8e82c3Smrg m68knommu-*) 10626d8e82c3Smrg cpu=m68k 10636d8e82c3Smrg basic_os=linux 10643e747e6dSmrg ;; 10656d8e82c3Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10666d8e82c3Smrg cpu=s12z 10673e747e6dSmrg ;; 10686d8e82c3Smrg openrisc-*) 10696d8e82c3Smrg cpu=or32 10703e747e6dSmrg ;; 10716d8e82c3Smrg parisc-*) 10726d8e82c3Smrg cpu=hppa 10736d8e82c3Smrg basic_os=linux 10743e747e6dSmrg ;; 10756d8e82c3Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10766d8e82c3Smrg cpu=i586 10773e747e6dSmrg ;; 10786d8e82c3Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 10796d8e82c3Smrg cpu=i686 10803e747e6dSmrg ;; 10816d8e82c3Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10826d8e82c3Smrg cpu=i686 10833e747e6dSmrg ;; 10846d8e82c3Smrg pentium4-*) 10856d8e82c3Smrg cpu=i786 10863e747e6dSmrg ;; 10876d8e82c3Smrg pc98-*) 10886d8e82c3Smrg cpu=i386 10893e747e6dSmrg ;; 10906d8e82c3Smrg ppc-* | ppcbe-*) 10916d8e82c3Smrg cpu=powerpc 10923e747e6dSmrg ;; 10936d8e82c3Smrg ppcle-* | powerpclittle-*) 10946d8e82c3Smrg cpu=powerpcle 10953e747e6dSmrg ;; 10966d8e82c3Smrg ppc64-*) 10976d8e82c3Smrg cpu=powerpc64 10983e747e6dSmrg ;; 10996d8e82c3Smrg ppc64le-* | powerpc64little-*) 11006d8e82c3Smrg cpu=powerpc64le 11013e747e6dSmrg ;; 11026d8e82c3Smrg sb1-*) 11036d8e82c3Smrg cpu=mipsisa64sb1 11043e747e6dSmrg ;; 11056d8e82c3Smrg sb1el-*) 11066d8e82c3Smrg cpu=mipsisa64sb1el 11073e747e6dSmrg ;; 11086d8e82c3Smrg sh5e[lb]-*) 11096d8e82c3Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11103e747e6dSmrg ;; 11116d8e82c3Smrg spur-*) 11126d8e82c3Smrg cpu=spur 11133e747e6dSmrg ;; 11146d8e82c3Smrg strongarm-* | thumb-*) 11156d8e82c3Smrg cpu=arm 11163e747e6dSmrg ;; 11176d8e82c3Smrg tx39-*) 11186d8e82c3Smrg cpu=mipstx39 11194a1eb5dbSmrg ;; 11206d8e82c3Smrg tx39el-*) 11216d8e82c3Smrg cpu=mipstx39el 11223e747e6dSmrg ;; 11236d8e82c3Smrg x64-*) 11246d8e82c3Smrg cpu=x86_64 11253e747e6dSmrg ;; 1126c2535118Smrg xscale-* | xscalee[bl]-*) 11276d8e82c3Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11283e747e6dSmrg ;; 11296d8e82c3Smrg arm64-* | aarch64le-*) 11306d8e82c3Smrg cpu=aarch64 11313e747e6dSmrg ;; 11323e747e6dSmrg 11336d8e82c3Smrg # Recognize the canonical CPU Types that limit and/or modify the 11346d8e82c3Smrg # company names they are paired with. 11356d8e82c3Smrg cr16-*) 11366d8e82c3Smrg basic_os=${basic_os:-elf} 11373e747e6dSmrg ;; 11386d8e82c3Smrg crisv32-* | etraxfs*-*) 11396d8e82c3Smrg cpu=crisv32 11406d8e82c3Smrg vendor=axis 11413e747e6dSmrg ;; 11426d8e82c3Smrg cris-* | etrax*-*) 11436d8e82c3Smrg cpu=cris 11446d8e82c3Smrg vendor=axis 11453e747e6dSmrg ;; 11466d8e82c3Smrg crx-*) 11476d8e82c3Smrg basic_os=${basic_os:-elf} 11483e747e6dSmrg ;; 11496d8e82c3Smrg neo-tandem) 11506d8e82c3Smrg cpu=neo 11516d8e82c3Smrg vendor=tandem 11523e747e6dSmrg ;; 11536d8e82c3Smrg nse-tandem) 11546d8e82c3Smrg cpu=nse 11556d8e82c3Smrg vendor=tandem 11563e747e6dSmrg ;; 11576d8e82c3Smrg nsr-tandem) 11586d8e82c3Smrg cpu=nsr 11596d8e82c3Smrg vendor=tandem 11603e747e6dSmrg ;; 11616d8e82c3Smrg nsv-tandem) 11626d8e82c3Smrg cpu=nsv 11636d8e82c3Smrg vendor=tandem 11643e747e6dSmrg ;; 11656d8e82c3Smrg nsx-tandem) 11666d8e82c3Smrg cpu=nsx 11676d8e82c3Smrg vendor=tandem 11683e747e6dSmrg ;; 11696d8e82c3Smrg mipsallegrexel-sony) 11706d8e82c3Smrg cpu=mipsallegrexel 11716d8e82c3Smrg vendor=sony 11723e747e6dSmrg ;; 11736d8e82c3Smrg tile*-*) 11746d8e82c3Smrg basic_os=${basic_os:-linux-gnu} 11753e747e6dSmrg ;; 11766d8e82c3Smrg 11773e747e6dSmrg *) 11786d8e82c3Smrg # Recognize the canonical CPU types that are allowed with any 11796d8e82c3Smrg # company name. 11806d8e82c3Smrg case $cpu in 11816d8e82c3Smrg 1750a | 580 \ 11826d8e82c3Smrg | a29k \ 11836d8e82c3Smrg | aarch64 | aarch64_be \ 11846d8e82c3Smrg | abacus \ 11856d8e82c3Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11866d8e82c3Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11876d8e82c3Smrg | alphapca5[67] | alpha64pca5[67] \ 11886d8e82c3Smrg | am33_2.0 \ 11896d8e82c3Smrg | amdgcn \ 11906d8e82c3Smrg | arc | arceb | arc32 | arc64 \ 11916d8e82c3Smrg | arm | arm[lb]e | arme[lb] | armv* \ 11926d8e82c3Smrg | avr | avr32 \ 11936d8e82c3Smrg | asmjs \ 11946d8e82c3Smrg | ba \ 11956d8e82c3Smrg | be32 | be64 \ 11966d8e82c3Smrg | bfin | bpf | bs2000 \ 11976d8e82c3Smrg | c[123]* | c30 | [cjt]90 | c4x \ 11986d8e82c3Smrg | c8051 | clipper | craynv | csky | cydra \ 11996d8e82c3Smrg | d10v | d30v | dlx | dsp16xx \ 12006d8e82c3Smrg | e2k | elxsi | epiphany \ 12016d8e82c3Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 12026d8e82c3Smrg | h8300 | h8500 \ 12036d8e82c3Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 12046d8e82c3Smrg | hexagon \ 12056d8e82c3Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12066d8e82c3Smrg | ip2k | iq2000 \ 12076d8e82c3Smrg | k1om \ 12086d8e82c3Smrg | le32 | le64 \ 12096d8e82c3Smrg | lm32 \ 12106d8e82c3Smrg | loongarch32 | loongarch64 | loongarchx32 \ 12116d8e82c3Smrg | m32c | m32r | m32rle \ 12126d8e82c3Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12136d8e82c3Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12146d8e82c3Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12156d8e82c3Smrg | microblaze | microblazeel \ 12166d8e82c3Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12176d8e82c3Smrg | mips16 \ 12186d8e82c3Smrg | mips64 | mips64eb | mips64el \ 12196d8e82c3Smrg | mips64octeon | mips64octeonel \ 12206d8e82c3Smrg | mips64orion | mips64orionel \ 12216d8e82c3Smrg | mips64r5900 | mips64r5900el \ 12226d8e82c3Smrg | mips64vr | mips64vrel \ 12236d8e82c3Smrg | mips64vr4100 | mips64vr4100el \ 12246d8e82c3Smrg | mips64vr4300 | mips64vr4300el \ 12256d8e82c3Smrg | mips64vr5000 | mips64vr5000el \ 12266d8e82c3Smrg | mips64vr5900 | mips64vr5900el \ 12276d8e82c3Smrg | mipsisa32 | mipsisa32el \ 12286d8e82c3Smrg | mipsisa32r2 | mipsisa32r2el \ 12296d8e82c3Smrg | mipsisa32r3 | mipsisa32r3el \ 12306d8e82c3Smrg | mipsisa32r5 | mipsisa32r5el \ 12316d8e82c3Smrg | mipsisa32r6 | mipsisa32r6el \ 12326d8e82c3Smrg | mipsisa64 | mipsisa64el \ 12336d8e82c3Smrg | mipsisa64r2 | mipsisa64r2el \ 12346d8e82c3Smrg | mipsisa64r3 | mipsisa64r3el \ 12356d8e82c3Smrg | mipsisa64r5 | mipsisa64r5el \ 12366d8e82c3Smrg | mipsisa64r6 | mipsisa64r6el \ 12376d8e82c3Smrg | mipsisa64sb1 | mipsisa64sb1el \ 12386d8e82c3Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 12396d8e82c3Smrg | mipsr5900 | mipsr5900el \ 12406d8e82c3Smrg | mipstx39 | mipstx39el \ 12416d8e82c3Smrg | mmix \ 12426d8e82c3Smrg | mn10200 | mn10300 \ 12436d8e82c3Smrg | moxie \ 12446d8e82c3Smrg | mt \ 12456d8e82c3Smrg | msp430 \ 12466d8e82c3Smrg | nds32 | nds32le | nds32be \ 12476d8e82c3Smrg | nfp \ 12486d8e82c3Smrg | nios | nios2 | nios2eb | nios2el \ 12496d8e82c3Smrg | none | np1 | ns16k | ns32k | nvptx \ 12506d8e82c3Smrg | open8 \ 12516d8e82c3Smrg | or1k* \ 12526d8e82c3Smrg | or32 \ 12536d8e82c3Smrg | orion \ 12546d8e82c3Smrg | picochip \ 12556d8e82c3Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12566d8e82c3Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12576d8e82c3Smrg | pru \ 12586d8e82c3Smrg | pyramid \ 12596d8e82c3Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12606d8e82c3Smrg | rl78 | romp | rs6000 | rx \ 12616d8e82c3Smrg | s390 | s390x \ 12626d8e82c3Smrg | score \ 12636d8e82c3Smrg | sh | shl \ 12646d8e82c3Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12656d8e82c3Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12666d8e82c3Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12676d8e82c3Smrg | sparclite \ 12686d8e82c3Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12696d8e82c3Smrg | spu \ 12706d8e82c3Smrg | tahoe \ 12716d8e82c3Smrg | thumbv7* \ 12726d8e82c3Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12736d8e82c3Smrg | tron \ 12746d8e82c3Smrg | ubicom32 \ 12756d8e82c3Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12766d8e82c3Smrg | vax \ 12776d8e82c3Smrg | visium \ 12786d8e82c3Smrg | w65 \ 12796d8e82c3Smrg | wasm32 | wasm64 \ 12806d8e82c3Smrg | we32k \ 12816d8e82c3Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12826d8e82c3Smrg | xstormy16 | xtensa* \ 12836d8e82c3Smrg | ymp \ 12846d8e82c3Smrg | z8k | z80) 12856d8e82c3Smrg ;; 12866d8e82c3Smrg 12876d8e82c3Smrg *) 12886d8e82c3Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12896d8e82c3Smrg exit 1 12906d8e82c3Smrg ;; 12916d8e82c3Smrg esac 12923e747e6dSmrg ;; 12933e747e6dSmrgesac 12943e747e6dSmrg 12953e747e6dSmrg# Here we canonicalize certain aliases for manufacturers. 12966d8e82c3Smrgcase $vendor in 12976d8e82c3Smrg digital*) 12986d8e82c3Smrg vendor=dec 12993e747e6dSmrg ;; 13006d8e82c3Smrg commodore*) 13016d8e82c3Smrg vendor=cbm 13023e747e6dSmrg ;; 13033e747e6dSmrg *) 13043e747e6dSmrg ;; 13053e747e6dSmrgesac 13063e747e6dSmrg 13073e747e6dSmrg# Decode manufacturer-specific aliases for certain operating systems. 13083e747e6dSmrg 13096d8e82c3Smrgif test x$basic_os != x 13103e747e6dSmrgthen 13116d8e82c3Smrg 13126d8e82c3Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 13136d8e82c3Smrg# set os. 13146d8e82c3Smrgcase $basic_os in 13156d8e82c3Smrg gnu/linux*) 13166d8e82c3Smrg kernel=linux 13176d8e82c3Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13186d8e82c3Smrg ;; 13196d8e82c3Smrg os2-emx) 13206d8e82c3Smrg kernel=os2 13216d8e82c3Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13226d8e82c3Smrg ;; 13236d8e82c3Smrg nto-qnx*) 13246d8e82c3Smrg kernel=nto 13256d8e82c3Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13266d8e82c3Smrg ;; 13276d8e82c3Smrg *-*) 13286d8e82c3Smrg # shellcheck disable=SC2162 13296d8e82c3Smrg saved_IFS=$IFS 13306d8e82c3Smrg IFS="-" read kernel os <<EOF 13316d8e82c3Smrg$basic_os 13326d8e82c3SmrgEOF 13336d8e82c3Smrg IFS=$saved_IFS 13346d8e82c3Smrg ;; 13356d8e82c3Smrg # Default OS when just kernel was specified 13366d8e82c3Smrg nto*) 13376d8e82c3Smrg kernel=nto 13386d8e82c3Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13396d8e82c3Smrg ;; 13406d8e82c3Smrg linux*) 13416d8e82c3Smrg kernel=linux 13426d8e82c3Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13436d8e82c3Smrg ;; 13446d8e82c3Smrg *) 13456d8e82c3Smrg kernel= 13466d8e82c3Smrg os=$basic_os 13476d8e82c3Smrg ;; 13486d8e82c3Smrgesac 13496d8e82c3Smrg 13506d8e82c3Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13516d8e82c3Smrg# etc.) 13523e747e6dSmrgcase $os in 13534a1eb5dbSmrg # First match some system type aliases that might get confused 13544a1eb5dbSmrg # with valid system types. 13556d8e82c3Smrg # solaris* is a basic system type, with this one exception. 13566d8e82c3Smrg auroraux) 13576d8e82c3Smrg os=auroraux 13587a2631fcSmrg ;; 13596d8e82c3Smrg bluegene*) 13606d8e82c3Smrg os=cnk 13613e747e6dSmrg ;; 13626d8e82c3Smrg solaris1 | solaris1.*) 13636d8e82c3Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13643e747e6dSmrg ;; 13656d8e82c3Smrg solaris) 13666d8e82c3Smrg os=solaris2 13673e747e6dSmrg ;; 13686d8e82c3Smrg unixware*) 13696d8e82c3Smrg os=sysv4.2uw 13703e747e6dSmrg ;; 13714a1eb5dbSmrg # es1800 is here to avoid being matched by es* (a different OS) 13726d8e82c3Smrg es1800*) 13736d8e82c3Smrg os=ose 13744a1eb5dbSmrg ;; 13756d8e82c3Smrg # Some version numbers need modification 13766d8e82c3Smrg chorusos*) 13776d8e82c3Smrg os=chorusos 13783e747e6dSmrg ;; 13796d8e82c3Smrg isc) 13806d8e82c3Smrg os=isc2.2 13813e747e6dSmrg ;; 13826d8e82c3Smrg sco6) 13836d8e82c3Smrg os=sco5v6 13843e747e6dSmrg ;; 13856d8e82c3Smrg sco5) 13866d8e82c3Smrg os=sco3.2v5 13873e747e6dSmrg ;; 13886d8e82c3Smrg sco4) 13896d8e82c3Smrg os=sco3.2v4 13903e747e6dSmrg ;; 13916d8e82c3Smrg sco3.2.[4-9]*) 13926d8e82c3Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13933e747e6dSmrg ;; 13946d8e82c3Smrg sco*v* | scout) 13956d8e82c3Smrg # Don't match below 13963e747e6dSmrg ;; 13976d8e82c3Smrg sco*) 13986d8e82c3Smrg os=sco3.2v2 13993e747e6dSmrg ;; 14006d8e82c3Smrg psos*) 14016d8e82c3Smrg os=psos 14023e747e6dSmrg ;; 14036d8e82c3Smrg qnx*) 14046d8e82c3Smrg os=qnx 14053e747e6dSmrg ;; 14066d8e82c3Smrg hiux*) 14076d8e82c3Smrg os=hiuxwe2 14083e747e6dSmrg ;; 14096d8e82c3Smrg lynx*178) 14106d8e82c3Smrg os=lynxos178 14113e747e6dSmrg ;; 14126d8e82c3Smrg lynx*5) 14136d8e82c3Smrg os=lynxos5 14143e747e6dSmrg ;; 14156d8e82c3Smrg lynxos*) 14166d8e82c3Smrg # don't get caught up in next wildcard 14173e747e6dSmrg ;; 14186d8e82c3Smrg lynx*) 14196d8e82c3Smrg os=lynxos 14203e747e6dSmrg ;; 14216d8e82c3Smrg mac[0-9]*) 14226d8e82c3Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 14233e747e6dSmrg ;; 14246d8e82c3Smrg opened*) 14256d8e82c3Smrg os=openedition 14263e747e6dSmrg ;; 14276d8e82c3Smrg os400*) 14286d8e82c3Smrg os=os400 14293e747e6dSmrg ;; 14306d8e82c3Smrg sunos5*) 14316d8e82c3Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14323e747e6dSmrg ;; 14336d8e82c3Smrg sunos6*) 14346d8e82c3Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14353e747e6dSmrg ;; 14366d8e82c3Smrg wince*) 14376d8e82c3Smrg os=wince 14383e747e6dSmrg ;; 14396d8e82c3Smrg utek*) 14406d8e82c3Smrg os=bsd 14413e747e6dSmrg ;; 14426d8e82c3Smrg dynix*) 14436d8e82c3Smrg os=bsd 14443e747e6dSmrg ;; 14456d8e82c3Smrg acis*) 14466d8e82c3Smrg os=aos 14473e747e6dSmrg ;; 14486d8e82c3Smrg atheos*) 14496d8e82c3Smrg os=atheos 14503e747e6dSmrg ;; 14516d8e82c3Smrg syllable*) 14526d8e82c3Smrg os=syllable 14536d8e82c3Smrg ;; 14546d8e82c3Smrg 386bsd) 14556d8e82c3Smrg os=bsd 14566d8e82c3Smrg ;; 14576d8e82c3Smrg ctix* | uts*) 14586d8e82c3Smrg os=sysv 14596d8e82c3Smrg ;; 14606d8e82c3Smrg nova*) 14616d8e82c3Smrg os=rtmk-nova 14626d8e82c3Smrg ;; 14636d8e82c3Smrg ns2) 14646d8e82c3Smrg os=nextstep2 14656d8e82c3Smrg ;; 14666d8e82c3Smrg # Preserve the version number of sinix5. 14676d8e82c3Smrg sinix5.*) 14686d8e82c3Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14693e747e6dSmrg ;; 14706d8e82c3Smrg sinix*) 14716d8e82c3Smrg os=sysv4 14723e747e6dSmrg ;; 14736d8e82c3Smrg tpf*) 14746d8e82c3Smrg os=tpf 14753e747e6dSmrg ;; 14766d8e82c3Smrg triton*) 14776d8e82c3Smrg os=sysv3 14783e747e6dSmrg ;; 14796d8e82c3Smrg oss*) 14806d8e82c3Smrg os=sysv3 14813e747e6dSmrg ;; 14826d8e82c3Smrg svr4*) 14836d8e82c3Smrg os=sysv4 14843e747e6dSmrg ;; 14856d8e82c3Smrg svr3) 14866d8e82c3Smrg os=sysv3 14873e747e6dSmrg ;; 14886d8e82c3Smrg sysvr4) 14896d8e82c3Smrg os=sysv4 14903e747e6dSmrg ;; 14916d8e82c3Smrg ose*) 14926d8e82c3Smrg os=ose 14933e747e6dSmrg ;; 14946d8e82c3Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14956d8e82c3Smrg os=mint 14967a2631fcSmrg ;; 14976d8e82c3Smrg dicos*) 14986d8e82c3Smrg os=dicos 14996d8e82c3Smrg ;; 15006d8e82c3Smrg pikeos*) 15014a1eb5dbSmrg # Until real need of OS specific support for 15024a1eb5dbSmrg # particular features comes up, bare metal 15034a1eb5dbSmrg # configurations are quite functional. 15046d8e82c3Smrg case $cpu in 15054a1eb5dbSmrg arm*) 15066d8e82c3Smrg os=eabi 15074a1eb5dbSmrg ;; 15084a1eb5dbSmrg *) 15096d8e82c3Smrg os=elf 15104a1eb5dbSmrg ;; 15114a1eb5dbSmrg esac 15124a1eb5dbSmrg ;; 15133e747e6dSmrg *) 15146d8e82c3Smrg # No normalization, but not necessarily accepted, that comes below. 15153e747e6dSmrg ;; 15163e747e6dSmrgesac 15176d8e82c3Smrg 15183e747e6dSmrgelse 15193e747e6dSmrg 15203e747e6dSmrg# Here we handle the default operating systems that come with various machines. 15213e747e6dSmrg# The value should be what the vendor currently ships out the door with their 15223e747e6dSmrg# machine or put another way, the most popular os provided with the machine. 15233e747e6dSmrg 15243e747e6dSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15253e747e6dSmrg# "-sun"), then you have to tell the case statement up towards the top 15263e747e6dSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15273e747e6dSmrg# will signal an error saying that MANUFACTURER isn't an operating 15283e747e6dSmrg# system, and we'll never get to this point. 15293e747e6dSmrg 15306d8e82c3Smrgkernel= 15316d8e82c3Smrgcase $cpu-$vendor in 1532c2535118Smrg score-*) 15336d8e82c3Smrg os=elf 15343e747e6dSmrg ;; 1535c2535118Smrg spu-*) 15366d8e82c3Smrg os=elf 15373e747e6dSmrg ;; 15383e747e6dSmrg *-acorn) 15396d8e82c3Smrg os=riscix1.2 15403e747e6dSmrg ;; 15413e747e6dSmrg arm*-rebel) 15426d8e82c3Smrg kernel=linux 15436d8e82c3Smrg os=gnu 15443e747e6dSmrg ;; 15453e747e6dSmrg arm*-semi) 15466d8e82c3Smrg os=aout 15473e747e6dSmrg ;; 1548c2535118Smrg c4x-* | tic4x-*) 15496d8e82c3Smrg os=coff 1550c2535118Smrg ;; 15519cd34f4bSmrg c8051-*) 15526d8e82c3Smrg os=elf 15536d8e82c3Smrg ;; 15546d8e82c3Smrg clipper-intergraph) 15556d8e82c3Smrg os=clix 15569cd34f4bSmrg ;; 1557c2535118Smrg hexagon-*) 15586d8e82c3Smrg os=elf 15593e747e6dSmrg ;; 15607a2631fcSmrg tic54x-*) 15616d8e82c3Smrg os=coff 15627a2631fcSmrg ;; 15637a2631fcSmrg tic55x-*) 15646d8e82c3Smrg os=coff 15657a2631fcSmrg ;; 15667a2631fcSmrg tic6x-*) 15676d8e82c3Smrg os=coff 15687a2631fcSmrg ;; 15693e747e6dSmrg # This must come before the *-dec entry. 15703e747e6dSmrg pdp10-*) 15716d8e82c3Smrg os=tops20 15723e747e6dSmrg ;; 15733e747e6dSmrg pdp11-*) 15746d8e82c3Smrg os=none 15753e747e6dSmrg ;; 15763e747e6dSmrg *-dec | vax-*) 15776d8e82c3Smrg os=ultrix4.2 15783e747e6dSmrg ;; 15793e747e6dSmrg m68*-apollo) 15806d8e82c3Smrg os=domain 15813e747e6dSmrg ;; 15823e747e6dSmrg i386-sun) 15836d8e82c3Smrg os=sunos4.0.2 15843e747e6dSmrg ;; 15853e747e6dSmrg m68000-sun) 15866d8e82c3Smrg os=sunos3 15873e747e6dSmrg ;; 15883e747e6dSmrg m68*-cisco) 15896d8e82c3Smrg os=aout 15903e747e6dSmrg ;; 1591c2535118Smrg mep-*) 15926d8e82c3Smrg os=elf 15933e747e6dSmrg ;; 15943e747e6dSmrg mips*-cisco) 15956d8e82c3Smrg os=elf 15963e747e6dSmrg ;; 15973e747e6dSmrg mips*-*) 15986d8e82c3Smrg os=elf 15993e747e6dSmrg ;; 16003e747e6dSmrg or32-*) 16016d8e82c3Smrg os=coff 16023e747e6dSmrg ;; 16033e747e6dSmrg *-tti) # must be before sparc entry or we get the wrong os. 16046d8e82c3Smrg os=sysv3 16053e747e6dSmrg ;; 16063e747e6dSmrg sparc-* | *-sun) 16076d8e82c3Smrg os=sunos4.1.1 16083e747e6dSmrg ;; 16094a1eb5dbSmrg pru-*) 16106d8e82c3Smrg os=elf 16114a1eb5dbSmrg ;; 16123e747e6dSmrg *-be) 16136d8e82c3Smrg os=beos 16143e747e6dSmrg ;; 16153e747e6dSmrg *-ibm) 16166d8e82c3Smrg os=aix 16173e747e6dSmrg ;; 1618c2535118Smrg *-knuth) 16196d8e82c3Smrg os=mmixware 16203e747e6dSmrg ;; 16213e747e6dSmrg *-wec) 16226d8e82c3Smrg os=proelf 16233e747e6dSmrg ;; 16243e747e6dSmrg *-winbond) 16256d8e82c3Smrg os=proelf 16263e747e6dSmrg ;; 16273e747e6dSmrg *-oki) 16286d8e82c3Smrg os=proelf 16293e747e6dSmrg ;; 16303e747e6dSmrg *-hp) 16316d8e82c3Smrg os=hpux 16323e747e6dSmrg ;; 16333e747e6dSmrg *-hitachi) 16346d8e82c3Smrg os=hiux 16353e747e6dSmrg ;; 16363e747e6dSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16376d8e82c3Smrg os=sysv 16383e747e6dSmrg ;; 16393e747e6dSmrg *-cbm) 16406d8e82c3Smrg os=amigaos 16413e747e6dSmrg ;; 16423e747e6dSmrg *-dg) 16436d8e82c3Smrg os=dgux 16443e747e6dSmrg ;; 16453e747e6dSmrg *-dolphin) 16466d8e82c3Smrg os=sysv3 16473e747e6dSmrg ;; 16483e747e6dSmrg m68k-ccur) 16496d8e82c3Smrg os=rtu 16503e747e6dSmrg ;; 16513e747e6dSmrg m88k-omron*) 16526d8e82c3Smrg os=luna 16533e747e6dSmrg ;; 16544a1eb5dbSmrg *-next) 16556d8e82c3Smrg os=nextstep 16563e747e6dSmrg ;; 16573e747e6dSmrg *-sequent) 16586d8e82c3Smrg os=ptx 16593e747e6dSmrg ;; 16603e747e6dSmrg *-crds) 16616d8e82c3Smrg os=unos 16623e747e6dSmrg ;; 16633e747e6dSmrg *-ns) 16646d8e82c3Smrg os=genix 16653e747e6dSmrg ;; 16663e747e6dSmrg i370-*) 16676d8e82c3Smrg os=mvs 16683e747e6dSmrg ;; 16693e747e6dSmrg *-gould) 16706d8e82c3Smrg os=sysv 16713e747e6dSmrg ;; 16723e747e6dSmrg *-highlevel) 16736d8e82c3Smrg os=bsd 16743e747e6dSmrg ;; 16753e747e6dSmrg *-encore) 16766d8e82c3Smrg os=bsd 16773e747e6dSmrg ;; 16783e747e6dSmrg *-sgi) 16796d8e82c3Smrg os=irix 16803e747e6dSmrg ;; 16813e747e6dSmrg *-siemens) 16826d8e82c3Smrg os=sysv4 16833e747e6dSmrg ;; 16843e747e6dSmrg *-masscomp) 16856d8e82c3Smrg os=rtu 16863e747e6dSmrg ;; 16873e747e6dSmrg f30[01]-fujitsu | f700-fujitsu) 16886d8e82c3Smrg os=uxpv 16893e747e6dSmrg ;; 16903e747e6dSmrg *-rom68k) 16916d8e82c3Smrg os=coff 16923e747e6dSmrg ;; 16933e747e6dSmrg *-*bug) 16946d8e82c3Smrg os=coff 16953e747e6dSmrg ;; 16963e747e6dSmrg *-apple) 16976d8e82c3Smrg os=macos 16983e747e6dSmrg ;; 16993e747e6dSmrg *-atari*) 17006d8e82c3Smrg os=mint 17016d8e82c3Smrg ;; 17026d8e82c3Smrg *-wrs) 17036d8e82c3Smrg os=vxworks 17043e747e6dSmrg ;; 17053e747e6dSmrg *) 17066d8e82c3Smrg os=none 17073e747e6dSmrg ;; 17083e747e6dSmrgesac 17096d8e82c3Smrg 17103e747e6dSmrgfi 17113e747e6dSmrg 17126d8e82c3Smrg# Now, validate our (potentially fixed-up) OS. 17136d8e82c3Smrgcase $os in 17146d8e82c3Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17156d8e82c3Smrg musl* | newlib* | relibc* | uclibc*) 17166d8e82c3Smrg ;; 17176d8e82c3Smrg # Likewise for "kernel-abi" 17186d8e82c3Smrg eabi* | gnueabi*) 17196d8e82c3Smrg ;; 17206d8e82c3Smrg # VxWorks passes extra cpu info in the 4th filed. 17216d8e82c3Smrg simlinux | simwindows | spe) 17226d8e82c3Smrg ;; 17236d8e82c3Smrg # Now accept the basic system types. 17246d8e82c3Smrg # The portable systems comes first. 17256d8e82c3Smrg # Each alternative MUST end in a * to match a version number. 17266d8e82c3Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17276d8e82c3Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17286d8e82c3Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17296d8e82c3Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17306d8e82c3Smrg | hiux* | abug | nacl* | netware* | windows* \ 17316d8e82c3Smrg | os9* | macos* | osx* | ios* \ 17326d8e82c3Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17336d8e82c3Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17346d8e82c3Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17356d8e82c3Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17366d8e82c3Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17376d8e82c3Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17386d8e82c3Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17396d8e82c3Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17406d8e82c3Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17416d8e82c3Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17426d8e82c3Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17436d8e82c3Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17446d8e82c3Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17456d8e82c3Smrg | midipix* | mingw32* | mingw64* | mint* \ 17466d8e82c3Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17476d8e82c3Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17486d8e82c3Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17496d8e82c3Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17506d8e82c3Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17516d8e82c3Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17526d8e82c3Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17536d8e82c3Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17546d8e82c3Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17556d8e82c3Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17566d8e82c3Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 17576d8e82c3Smrg | fiwix* ) 17586d8e82c3Smrg ;; 17596d8e82c3Smrg # This one is extra strict with allowed versions 17606d8e82c3Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17616d8e82c3Smrg # Don't forget version if it is 3.2v4 or newer. 17626d8e82c3Smrg ;; 17636d8e82c3Smrg none) 17646d8e82c3Smrg ;; 17656d8e82c3Smrg *) 17666d8e82c3Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17676d8e82c3Smrg exit 1 17686d8e82c3Smrg ;; 17696d8e82c3Smrgesac 17706d8e82c3Smrg 17716d8e82c3Smrg# As a final step for OS-related things, validate the OS-kernel combination 17726d8e82c3Smrg# (given a valid OS), if there is a kernel. 17736d8e82c3Smrgcase $kernel-$os in 17746d8e82c3Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17756d8e82c3Smrg | linux-musl* | linux-relibc* | linux-uclibc* ) 17766d8e82c3Smrg ;; 17776d8e82c3Smrg uclinux-uclibc* ) 17786d8e82c3Smrg ;; 17796d8e82c3Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 17806d8e82c3Smrg # These are just libc implementations, not actual OSes, and thus 17816d8e82c3Smrg # require a kernel. 17826d8e82c3Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17836d8e82c3Smrg exit 1 17846d8e82c3Smrg ;; 17856d8e82c3Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 17866d8e82c3Smrg ;; 17876d8e82c3Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 17886d8e82c3Smrg ;; 17896d8e82c3Smrg nto-qnx*) 17906d8e82c3Smrg ;; 17916d8e82c3Smrg os2-emx) 17926d8e82c3Smrg ;; 17936d8e82c3Smrg *-eabi* | *-gnueabi*) 17946d8e82c3Smrg ;; 17956d8e82c3Smrg -*) 17966d8e82c3Smrg # Blank kernel with real OS is always fine. 17976d8e82c3Smrg ;; 17986d8e82c3Smrg *-*) 17996d8e82c3Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 18006d8e82c3Smrg exit 1 18016d8e82c3Smrg ;; 18026d8e82c3Smrgesac 18036d8e82c3Smrg 18043e747e6dSmrg# Here we handle the case where we know the os, and the CPU type, but not the 18053e747e6dSmrg# manufacturer. We pick the logical manufacturer. 18066d8e82c3Smrgcase $vendor in 18076d8e82c3Smrg unknown) 18086d8e82c3Smrg case $cpu-$os in 18096d8e82c3Smrg *-riscix*) 18103e747e6dSmrg vendor=acorn 18113e747e6dSmrg ;; 18126d8e82c3Smrg *-sunos*) 18133e747e6dSmrg vendor=sun 18143e747e6dSmrg ;; 18156d8e82c3Smrg *-cnk* | *-aix*) 18163e747e6dSmrg vendor=ibm 18173e747e6dSmrg ;; 18186d8e82c3Smrg *-beos*) 18193e747e6dSmrg vendor=be 18203e747e6dSmrg ;; 18216d8e82c3Smrg *-hpux*) 18223e747e6dSmrg vendor=hp 18233e747e6dSmrg ;; 18246d8e82c3Smrg *-mpeix*) 18253e747e6dSmrg vendor=hp 18263e747e6dSmrg ;; 18276d8e82c3Smrg *-hiux*) 18283e747e6dSmrg vendor=hitachi 18293e747e6dSmrg ;; 18306d8e82c3Smrg *-unos*) 18313e747e6dSmrg vendor=crds 18323e747e6dSmrg ;; 18336d8e82c3Smrg *-dgux*) 18343e747e6dSmrg vendor=dg 18353e747e6dSmrg ;; 18366d8e82c3Smrg *-luna*) 18373e747e6dSmrg vendor=omron 18383e747e6dSmrg ;; 18396d8e82c3Smrg *-genix*) 18403e747e6dSmrg vendor=ns 18413e747e6dSmrg ;; 18426d8e82c3Smrg *-clix*) 18436d8e82c3Smrg vendor=intergraph 18446d8e82c3Smrg ;; 18456d8e82c3Smrg *-mvs* | *-opened*) 18466d8e82c3Smrg vendor=ibm 18476d8e82c3Smrg ;; 18486d8e82c3Smrg *-os400*) 18493e747e6dSmrg vendor=ibm 18503e747e6dSmrg ;; 18516d8e82c3Smrg s390-* | s390x-*) 18523e747e6dSmrg vendor=ibm 18533e747e6dSmrg ;; 18546d8e82c3Smrg *-ptx*) 18553e747e6dSmrg vendor=sequent 18563e747e6dSmrg ;; 18576d8e82c3Smrg *-tpf*) 18583e747e6dSmrg vendor=ibm 18593e747e6dSmrg ;; 18606d8e82c3Smrg *-vxsim* | *-vxworks* | *-windiss*) 18613e747e6dSmrg vendor=wrs 18623e747e6dSmrg ;; 18636d8e82c3Smrg *-aux*) 18643e747e6dSmrg vendor=apple 18653e747e6dSmrg ;; 18666d8e82c3Smrg *-hms*) 18673e747e6dSmrg vendor=hitachi 18683e747e6dSmrg ;; 18696d8e82c3Smrg *-mpw* | *-macos*) 18703e747e6dSmrg vendor=apple 18713e747e6dSmrg ;; 18726d8e82c3Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18733e747e6dSmrg vendor=atari 18743e747e6dSmrg ;; 18756d8e82c3Smrg *-vos*) 18763e747e6dSmrg vendor=stratus 18773e747e6dSmrg ;; 18783e747e6dSmrg esac 18793e747e6dSmrg ;; 18803e747e6dSmrgesac 18813e747e6dSmrg 18826d8e82c3Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 18833e747e6dSmrgexit 18843e747e6dSmrg 18853e747e6dSmrg# Local variables: 18866d8e82c3Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 18873e747e6dSmrg# time-stamp-start: "timestamp='" 18883e747e6dSmrg# time-stamp-format: "%:y-%02m-%02d" 18893e747e6dSmrg# time-stamp-end: "'" 18903e747e6dSmrg# End: 1891