1ff7e0accSmrg#! /bin/sh 2ff7e0accSmrg# Configuration validation subroutine script. 32163f7f8Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 4ff7e0accSmrg 52163f7f8Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 62163f7f8Smrg 72163f7f8Smrgtimestamp='2023-01-21' 8ff7e0accSmrg 905bee9bcSmrg# This file is free software; you can redistribute it and/or modify it 1005bee9bcSmrg# under the terms of the GNU General Public License as published by 112163f7f8Smrg# the Free Software Foundation, either version 3 of the License, or 12ff7e0accSmrg# (at your option) any later version. 13ff7e0accSmrg# 1405bee9bcSmrg# This program is distributed in the hope that it will be useful, but 1505bee9bcSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1605bee9bcSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1705bee9bcSmrg# General Public License for more details. 18ff7e0accSmrg# 19ff7e0accSmrg# You should have received a copy of the GNU General Public License 200c91c449Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21ff7e0accSmrg# 22ff7e0accSmrg# As a special exception to the GNU General Public License, if you 23ff7e0accSmrg# distribute this file as part of a program that contains a 24ff7e0accSmrg# configuration script generated by Autoconf, you may include it under 2505bee9bcSmrg# the same distribution terms that you use for the rest of that 2605bee9bcSmrg# program. This Exception is an additional permission under section 7 2705bee9bcSmrg# of the GNU General Public License, version 3 ("GPLv3"). 28ff7e0accSmrg 29ff7e0accSmrg 300c91c449Smrg# Please send patches to <config-patches@gnu.org>. 31ff7e0accSmrg# 32ff7e0accSmrg# Configuration subroutine to validate and canonicalize a configuration type. 33ff7e0accSmrg# Supply the specified configuration type as an argument. 34ff7e0accSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 35ff7e0accSmrg# Otherwise, we print the canonical config type on stdout and succeed. 36ff7e0accSmrg 37863f95b1Smrg# You can get the latest version of this script from: 382163f7f8Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39863f95b1Smrg 40ff7e0accSmrg# This file is supposed to be the same for all GNU packages 41ff7e0accSmrg# and recognize all the CPU types, system types and aliases 42ff7e0accSmrg# that are meaningful with *any* GNU software. 43ff7e0accSmrg# Each package is responsible for reporting which valid configurations 44ff7e0accSmrg# it does not support. The user should be able to distinguish 45ff7e0accSmrg# a failure to support a valid configuration from a meaningless 46ff7e0accSmrg# configuration. 47ff7e0accSmrg 48ff7e0accSmrg# The goal of this file is to map all the various variations of a given 49ff7e0accSmrg# machine specification into a single specification in the form: 50ff7e0accSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51ff7e0accSmrg# or in some cases, the newer four-part form: 52ff7e0accSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53ff7e0accSmrg# It is wrong to echo any other type of specification. 54ff7e0accSmrg 552163f7f8Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 562163f7f8Smrg# about features and limitations of the classic Bourne shell that were 572163f7f8Smrg# superseded or lifted in POSIX. However, this script identifies a wide 582163f7f8Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 592163f7f8Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 602163f7f8Smrg# have a pre-POSIX /bin/sh. 612163f7f8Smrg 62ff7e0accSmrgme=`echo "$0" | sed -e 's,.*/,,'` 63ff7e0accSmrg 64ff7e0accSmrgusage="\ 650c91c449SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66ff7e0accSmrg 67ff7e0accSmrgCanonicalize a configuration name. 68ff7e0accSmrg 690c91c449SmrgOptions: 70ff7e0accSmrg -h, --help print this help, then exit 71ff7e0accSmrg -t, --time-stamp print date of last modification, then exit 72ff7e0accSmrg -v, --version print version number, then exit 73ff7e0accSmrg 74ff7e0accSmrgReport bugs and patches to <config-patches@gnu.org>." 75ff7e0accSmrg 76ff7e0accSmrgversion="\ 77ff7e0accSmrgGNU config.sub ($timestamp) 78ff7e0accSmrg 792163f7f8SmrgCopyright 1992-2023 Free Software Foundation, Inc. 80ff7e0accSmrg 81ff7e0accSmrgThis is free software; see the source for copying conditions. There is NO 82ff7e0accSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83ff7e0accSmrg 84ff7e0accSmrghelp=" 85ff7e0accSmrgTry \`$me --help' for more information." 86ff7e0accSmrg 87ff7e0accSmrg# Parse command line 88ff7e0accSmrgwhile test $# -gt 0 ; do 89ff7e0accSmrg case $1 in 90ff7e0accSmrg --time-stamp | --time* | -t ) 91ff7e0accSmrg echo "$timestamp" ; exit ;; 92ff7e0accSmrg --version | -v ) 93ff7e0accSmrg echo "$version" ; exit ;; 94ff7e0accSmrg --help | --h* | -h ) 95ff7e0accSmrg echo "$usage"; exit ;; 96ff7e0accSmrg -- ) # Stop option processing 97ff7e0accSmrg shift; break ;; 98ff7e0accSmrg - ) # Use stdin as input. 99ff7e0accSmrg break ;; 100ff7e0accSmrg -* ) 1012163f7f8Smrg echo "$me: invalid option $1$help" >&2 102ff7e0accSmrg exit 1 ;; 103ff7e0accSmrg 104ff7e0accSmrg *local*) 105ff7e0accSmrg # First pass through any local machine types. 1060c91c449Smrg echo "$1" 107ff7e0accSmrg exit ;; 108ff7e0accSmrg 109ff7e0accSmrg * ) 110ff7e0accSmrg break ;; 111ff7e0accSmrg esac 112ff7e0accSmrgdone 113ff7e0accSmrg 114ff7e0accSmrgcase $# in 115ff7e0accSmrg 0) echo "$me: missing argument$help" >&2 116ff7e0accSmrg exit 1;; 117ff7e0accSmrg 1) ;; 118ff7e0accSmrg *) echo "$me: too many arguments$help" >&2 119ff7e0accSmrg exit 1;; 120ff7e0accSmrgesac 121ff7e0accSmrg 1222163f7f8Smrg# Split fields of configuration type 1232163f7f8Smrg# shellcheck disable=SC2162 1242163f7f8Smrgsaved_IFS=$IFS 1252163f7f8SmrgIFS="-" read field1 field2 field3 field4 <<EOF 1262163f7f8Smrg$1 1272163f7f8SmrgEOF 1282163f7f8SmrgIFS=$saved_IFS 129ff7e0accSmrg 1302163f7f8Smrg# Separate into logical components for further validation 1312163f7f8Smrgcase $1 in 1322163f7f8Smrg *-*-*-*-*) 1332163f7f8Smrg echo Invalid configuration \`"$1"\': more than four components >&2 1342163f7f8Smrg exit 1 13505bee9bcSmrg ;; 1362163f7f8Smrg *-*-*-*) 1372163f7f8Smrg basic_machine=$field1-$field2 1382163f7f8Smrg basic_os=$field3-$field4 139ff7e0accSmrg ;; 1402163f7f8Smrg *-*-*) 1412163f7f8Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1422163f7f8Smrg # parts 1432163f7f8Smrg maybe_os=$field2-$field3 1442163f7f8Smrg case $maybe_os in 1452163f7f8Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 1462163f7f8Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1472163f7f8Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1482163f7f8Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 1492163f7f8Smrg basic_machine=$field1 1502163f7f8Smrg basic_os=$maybe_os 1512163f7f8Smrg ;; 1522163f7f8Smrg android-linux) 1532163f7f8Smrg basic_machine=$field1-unknown 1542163f7f8Smrg basic_os=linux-android 1552163f7f8Smrg ;; 1562163f7f8Smrg *) 1572163f7f8Smrg basic_machine=$field1-$field2 1582163f7f8Smrg basic_os=$field3 1592163f7f8Smrg ;; 1602163f7f8Smrg esac 161ff7e0accSmrg ;; 1622163f7f8Smrg *-*) 1632163f7f8Smrg # A lone config we happen to match not fitting any pattern 1642163f7f8Smrg case $field1-$field2 in 1652163f7f8Smrg decstation-3100) 1662163f7f8Smrg basic_machine=mips-dec 1672163f7f8Smrg basic_os= 1682163f7f8Smrg ;; 1692163f7f8Smrg *-*) 1702163f7f8Smrg # Second component is usually, but not always the OS 1712163f7f8Smrg case $field2 in 1722163f7f8Smrg # Prevent following clause from handling this valid os 1732163f7f8Smrg sun*os*) 1742163f7f8Smrg basic_machine=$field1 1752163f7f8Smrg basic_os=$field2 1762163f7f8Smrg ;; 1772163f7f8Smrg zephyr*) 1782163f7f8Smrg basic_machine=$field1-unknown 1792163f7f8Smrg basic_os=$field2 1802163f7f8Smrg ;; 1812163f7f8Smrg # Manufacturers 1822163f7f8Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1832163f7f8Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1842163f7f8Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1852163f7f8Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1862163f7f8Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1872163f7f8Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1882163f7f8Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1892163f7f8Smrg | microblaze* | sim | cisco \ 1902163f7f8Smrg | oki | wec | wrs | winbond) 1912163f7f8Smrg basic_machine=$field1-$field2 1922163f7f8Smrg basic_os= 1932163f7f8Smrg ;; 1942163f7f8Smrg *) 1952163f7f8Smrg basic_machine=$field1 1962163f7f8Smrg basic_os=$field2 1972163f7f8Smrg ;; 1982163f7f8Smrg esac 1992163f7f8Smrg ;; 2002163f7f8Smrg esac 201ff7e0accSmrg ;; 2022163f7f8Smrg *) 2032163f7f8Smrg # Convert single-component short-hands not valid as part of 2042163f7f8Smrg # multi-component configurations. 2052163f7f8Smrg case $field1 in 2062163f7f8Smrg 386bsd) 2072163f7f8Smrg basic_machine=i386-pc 2082163f7f8Smrg basic_os=bsd 2092163f7f8Smrg ;; 2102163f7f8Smrg a29khif) 2112163f7f8Smrg basic_machine=a29k-amd 2122163f7f8Smrg basic_os=udi 2132163f7f8Smrg ;; 2142163f7f8Smrg adobe68k) 2152163f7f8Smrg basic_machine=m68010-adobe 2162163f7f8Smrg basic_os=scout 2172163f7f8Smrg ;; 2182163f7f8Smrg alliant) 2192163f7f8Smrg basic_machine=fx80-alliant 2202163f7f8Smrg basic_os= 2212163f7f8Smrg ;; 2222163f7f8Smrg altos | altos3068) 2232163f7f8Smrg basic_machine=m68k-altos 2242163f7f8Smrg basic_os= 2252163f7f8Smrg ;; 2262163f7f8Smrg am29k) 2272163f7f8Smrg basic_machine=a29k-none 2282163f7f8Smrg basic_os=bsd 2292163f7f8Smrg ;; 2302163f7f8Smrg amdahl) 2312163f7f8Smrg basic_machine=580-amdahl 2322163f7f8Smrg basic_os=sysv 2332163f7f8Smrg ;; 2342163f7f8Smrg amiga) 2352163f7f8Smrg basic_machine=m68k-unknown 2362163f7f8Smrg basic_os= 2372163f7f8Smrg ;; 2382163f7f8Smrg amigaos | amigados) 2392163f7f8Smrg basic_machine=m68k-unknown 2402163f7f8Smrg basic_os=amigaos 2412163f7f8Smrg ;; 2422163f7f8Smrg amigaunix | amix) 2432163f7f8Smrg basic_machine=m68k-unknown 2442163f7f8Smrg basic_os=sysv4 2452163f7f8Smrg ;; 2462163f7f8Smrg apollo68) 2472163f7f8Smrg basic_machine=m68k-apollo 2482163f7f8Smrg basic_os=sysv 2492163f7f8Smrg ;; 2502163f7f8Smrg apollo68bsd) 2512163f7f8Smrg basic_machine=m68k-apollo 2522163f7f8Smrg basic_os=bsd 2532163f7f8Smrg ;; 2542163f7f8Smrg aros) 2552163f7f8Smrg basic_machine=i386-pc 2562163f7f8Smrg basic_os=aros 2572163f7f8Smrg ;; 2582163f7f8Smrg aux) 2592163f7f8Smrg basic_machine=m68k-apple 2602163f7f8Smrg basic_os=aux 2612163f7f8Smrg ;; 2622163f7f8Smrg balance) 2632163f7f8Smrg basic_machine=ns32k-sequent 2642163f7f8Smrg basic_os=dynix 2652163f7f8Smrg ;; 2662163f7f8Smrg blackfin) 2672163f7f8Smrg basic_machine=bfin-unknown 2682163f7f8Smrg basic_os=linux 2692163f7f8Smrg ;; 2702163f7f8Smrg cegcc) 2712163f7f8Smrg basic_machine=arm-unknown 2722163f7f8Smrg basic_os=cegcc 2732163f7f8Smrg ;; 2742163f7f8Smrg convex-c1) 2752163f7f8Smrg basic_machine=c1-convex 2762163f7f8Smrg basic_os=bsd 2772163f7f8Smrg ;; 2782163f7f8Smrg convex-c2) 2792163f7f8Smrg basic_machine=c2-convex 2802163f7f8Smrg basic_os=bsd 2812163f7f8Smrg ;; 2822163f7f8Smrg convex-c32) 2832163f7f8Smrg basic_machine=c32-convex 2842163f7f8Smrg basic_os=bsd 2852163f7f8Smrg ;; 2862163f7f8Smrg convex-c34) 2872163f7f8Smrg basic_machine=c34-convex 2882163f7f8Smrg basic_os=bsd 2892163f7f8Smrg ;; 2902163f7f8Smrg convex-c38) 2912163f7f8Smrg basic_machine=c38-convex 2922163f7f8Smrg basic_os=bsd 2932163f7f8Smrg ;; 2942163f7f8Smrg cray) 2952163f7f8Smrg basic_machine=j90-cray 2962163f7f8Smrg basic_os=unicos 2972163f7f8Smrg ;; 2982163f7f8Smrg crds | unos) 2992163f7f8Smrg basic_machine=m68k-crds 3002163f7f8Smrg basic_os= 3012163f7f8Smrg ;; 3022163f7f8Smrg da30) 3032163f7f8Smrg basic_machine=m68k-da30 3042163f7f8Smrg basic_os= 3052163f7f8Smrg ;; 3062163f7f8Smrg decstation | pmax | pmin | dec3100 | decstatn) 3072163f7f8Smrg basic_machine=mips-dec 3082163f7f8Smrg basic_os= 3092163f7f8Smrg ;; 3102163f7f8Smrg delta88) 3112163f7f8Smrg basic_machine=m88k-motorola 3122163f7f8Smrg basic_os=sysv3 3132163f7f8Smrg ;; 3142163f7f8Smrg dicos) 3152163f7f8Smrg basic_machine=i686-pc 3162163f7f8Smrg basic_os=dicos 3172163f7f8Smrg ;; 3182163f7f8Smrg djgpp) 3192163f7f8Smrg basic_machine=i586-pc 3202163f7f8Smrg basic_os=msdosdjgpp 3212163f7f8Smrg ;; 3222163f7f8Smrg ebmon29k) 3232163f7f8Smrg basic_machine=a29k-amd 3242163f7f8Smrg basic_os=ebmon 3252163f7f8Smrg ;; 3262163f7f8Smrg es1800 | OSE68k | ose68k | ose | OSE) 3272163f7f8Smrg basic_machine=m68k-ericsson 3282163f7f8Smrg basic_os=ose 3292163f7f8Smrg ;; 3302163f7f8Smrg gmicro) 3312163f7f8Smrg basic_machine=tron-gmicro 3322163f7f8Smrg basic_os=sysv 3332163f7f8Smrg ;; 3342163f7f8Smrg go32) 3352163f7f8Smrg basic_machine=i386-pc 3362163f7f8Smrg basic_os=go32 3372163f7f8Smrg ;; 3382163f7f8Smrg h8300hms) 3392163f7f8Smrg basic_machine=h8300-hitachi 3402163f7f8Smrg basic_os=hms 3412163f7f8Smrg ;; 3422163f7f8Smrg h8300xray) 3432163f7f8Smrg basic_machine=h8300-hitachi 3442163f7f8Smrg basic_os=xray 3452163f7f8Smrg ;; 3462163f7f8Smrg h8500hms) 3472163f7f8Smrg basic_machine=h8500-hitachi 3482163f7f8Smrg basic_os=hms 3492163f7f8Smrg ;; 3502163f7f8Smrg harris) 3512163f7f8Smrg basic_machine=m88k-harris 3522163f7f8Smrg basic_os=sysv3 3532163f7f8Smrg ;; 3542163f7f8Smrg hp300 | hp300hpux) 3552163f7f8Smrg basic_machine=m68k-hp 3562163f7f8Smrg basic_os=hpux 3572163f7f8Smrg ;; 3582163f7f8Smrg hp300bsd) 3592163f7f8Smrg basic_machine=m68k-hp 3602163f7f8Smrg basic_os=bsd 3612163f7f8Smrg ;; 3622163f7f8Smrg hppaosf) 3632163f7f8Smrg basic_machine=hppa1.1-hp 3642163f7f8Smrg basic_os=osf 3652163f7f8Smrg ;; 3662163f7f8Smrg hppro) 3672163f7f8Smrg basic_machine=hppa1.1-hp 3682163f7f8Smrg basic_os=proelf 3692163f7f8Smrg ;; 3702163f7f8Smrg i386mach) 3712163f7f8Smrg basic_machine=i386-mach 3722163f7f8Smrg basic_os=mach 3732163f7f8Smrg ;; 3742163f7f8Smrg isi68 | isi) 3752163f7f8Smrg basic_machine=m68k-isi 3762163f7f8Smrg basic_os=sysv 3772163f7f8Smrg ;; 3782163f7f8Smrg m68knommu) 3792163f7f8Smrg basic_machine=m68k-unknown 3802163f7f8Smrg basic_os=linux 3812163f7f8Smrg ;; 3822163f7f8Smrg magnum | m3230) 3832163f7f8Smrg basic_machine=mips-mips 3842163f7f8Smrg basic_os=sysv 3852163f7f8Smrg ;; 3862163f7f8Smrg merlin) 3872163f7f8Smrg basic_machine=ns32k-utek 3882163f7f8Smrg basic_os=sysv 3892163f7f8Smrg ;; 3902163f7f8Smrg mingw64) 3912163f7f8Smrg basic_machine=x86_64-pc 3922163f7f8Smrg basic_os=mingw64 3932163f7f8Smrg ;; 3942163f7f8Smrg mingw32) 3952163f7f8Smrg basic_machine=i686-pc 3962163f7f8Smrg basic_os=mingw32 3972163f7f8Smrg ;; 3982163f7f8Smrg mingw32ce) 3992163f7f8Smrg basic_machine=arm-unknown 4002163f7f8Smrg basic_os=mingw32ce 4012163f7f8Smrg ;; 4022163f7f8Smrg monitor) 4032163f7f8Smrg basic_machine=m68k-rom68k 4042163f7f8Smrg basic_os=coff 4052163f7f8Smrg ;; 4062163f7f8Smrg morphos) 4072163f7f8Smrg basic_machine=powerpc-unknown 4082163f7f8Smrg basic_os=morphos 4092163f7f8Smrg ;; 4102163f7f8Smrg moxiebox) 4112163f7f8Smrg basic_machine=moxie-unknown 4122163f7f8Smrg basic_os=moxiebox 4132163f7f8Smrg ;; 4142163f7f8Smrg msdos) 4152163f7f8Smrg basic_machine=i386-pc 4162163f7f8Smrg basic_os=msdos 4172163f7f8Smrg ;; 4182163f7f8Smrg msys) 4192163f7f8Smrg basic_machine=i686-pc 4202163f7f8Smrg basic_os=msys 4212163f7f8Smrg ;; 4222163f7f8Smrg mvs) 4232163f7f8Smrg basic_machine=i370-ibm 4242163f7f8Smrg basic_os=mvs 4252163f7f8Smrg ;; 4262163f7f8Smrg nacl) 4272163f7f8Smrg basic_machine=le32-unknown 4282163f7f8Smrg basic_os=nacl 4292163f7f8Smrg ;; 4302163f7f8Smrg ncr3000) 4312163f7f8Smrg basic_machine=i486-ncr 4322163f7f8Smrg basic_os=sysv4 4332163f7f8Smrg ;; 4342163f7f8Smrg netbsd386) 4352163f7f8Smrg basic_machine=i386-pc 4362163f7f8Smrg basic_os=netbsd 4372163f7f8Smrg ;; 4382163f7f8Smrg netwinder) 4392163f7f8Smrg basic_machine=armv4l-rebel 4402163f7f8Smrg basic_os=linux 4412163f7f8Smrg ;; 4422163f7f8Smrg news | news700 | news800 | news900) 4432163f7f8Smrg basic_machine=m68k-sony 4442163f7f8Smrg basic_os=newsos 4452163f7f8Smrg ;; 4462163f7f8Smrg news1000) 4472163f7f8Smrg basic_machine=m68030-sony 4482163f7f8Smrg basic_os=newsos 4492163f7f8Smrg ;; 4502163f7f8Smrg necv70) 4512163f7f8Smrg basic_machine=v70-nec 4522163f7f8Smrg basic_os=sysv 4532163f7f8Smrg ;; 4542163f7f8Smrg nh3000) 4552163f7f8Smrg basic_machine=m68k-harris 4562163f7f8Smrg basic_os=cxux 4572163f7f8Smrg ;; 4582163f7f8Smrg nh[45]000) 4592163f7f8Smrg basic_machine=m88k-harris 4602163f7f8Smrg basic_os=cxux 4612163f7f8Smrg ;; 4622163f7f8Smrg nindy960) 4632163f7f8Smrg basic_machine=i960-intel 4642163f7f8Smrg basic_os=nindy 4652163f7f8Smrg ;; 4662163f7f8Smrg mon960) 4672163f7f8Smrg basic_machine=i960-intel 4682163f7f8Smrg basic_os=mon960 4692163f7f8Smrg ;; 4702163f7f8Smrg nonstopux) 4712163f7f8Smrg basic_machine=mips-compaq 4722163f7f8Smrg basic_os=nonstopux 4732163f7f8Smrg ;; 4742163f7f8Smrg os400) 4752163f7f8Smrg basic_machine=powerpc-ibm 4762163f7f8Smrg basic_os=os400 4772163f7f8Smrg ;; 4782163f7f8Smrg OSE68000 | ose68000) 4792163f7f8Smrg basic_machine=m68000-ericsson 4802163f7f8Smrg basic_os=ose 4812163f7f8Smrg ;; 4822163f7f8Smrg os68k) 4832163f7f8Smrg basic_machine=m68k-none 4842163f7f8Smrg basic_os=os68k 4852163f7f8Smrg ;; 4862163f7f8Smrg paragon) 4872163f7f8Smrg basic_machine=i860-intel 4882163f7f8Smrg basic_os=osf 4892163f7f8Smrg ;; 4902163f7f8Smrg parisc) 4912163f7f8Smrg basic_machine=hppa-unknown 4922163f7f8Smrg basic_os=linux 4932163f7f8Smrg ;; 4942163f7f8Smrg psp) 4952163f7f8Smrg basic_machine=mipsallegrexel-sony 4962163f7f8Smrg basic_os=psp 4972163f7f8Smrg ;; 4982163f7f8Smrg pw32) 4992163f7f8Smrg basic_machine=i586-unknown 5002163f7f8Smrg basic_os=pw32 5012163f7f8Smrg ;; 5022163f7f8Smrg rdos | rdos64) 5032163f7f8Smrg basic_machine=x86_64-pc 5042163f7f8Smrg basic_os=rdos 5052163f7f8Smrg ;; 5062163f7f8Smrg rdos32) 5072163f7f8Smrg basic_machine=i386-pc 5082163f7f8Smrg basic_os=rdos 5092163f7f8Smrg ;; 5102163f7f8Smrg rom68k) 5112163f7f8Smrg basic_machine=m68k-rom68k 5122163f7f8Smrg basic_os=coff 5132163f7f8Smrg ;; 5142163f7f8Smrg sa29200) 5152163f7f8Smrg basic_machine=a29k-amd 5162163f7f8Smrg basic_os=udi 5172163f7f8Smrg ;; 5182163f7f8Smrg sei) 5192163f7f8Smrg basic_machine=mips-sei 5202163f7f8Smrg basic_os=seiux 5212163f7f8Smrg ;; 5222163f7f8Smrg sequent) 5232163f7f8Smrg basic_machine=i386-sequent 5242163f7f8Smrg basic_os= 5252163f7f8Smrg ;; 5262163f7f8Smrg sps7) 5272163f7f8Smrg basic_machine=m68k-bull 5282163f7f8Smrg basic_os=sysv2 5292163f7f8Smrg ;; 5302163f7f8Smrg st2000) 5312163f7f8Smrg basic_machine=m68k-tandem 5322163f7f8Smrg basic_os= 5332163f7f8Smrg ;; 5342163f7f8Smrg stratus) 5352163f7f8Smrg basic_machine=i860-stratus 5362163f7f8Smrg basic_os=sysv4 5372163f7f8Smrg ;; 5382163f7f8Smrg sun2) 5392163f7f8Smrg basic_machine=m68000-sun 5402163f7f8Smrg basic_os= 5412163f7f8Smrg ;; 5422163f7f8Smrg sun2os3) 5432163f7f8Smrg basic_machine=m68000-sun 5442163f7f8Smrg basic_os=sunos3 5452163f7f8Smrg ;; 5462163f7f8Smrg sun2os4) 5472163f7f8Smrg basic_machine=m68000-sun 5482163f7f8Smrg basic_os=sunos4 5492163f7f8Smrg ;; 5502163f7f8Smrg sun3) 5512163f7f8Smrg basic_machine=m68k-sun 5522163f7f8Smrg basic_os= 5532163f7f8Smrg ;; 5542163f7f8Smrg sun3os3) 5552163f7f8Smrg basic_machine=m68k-sun 5562163f7f8Smrg basic_os=sunos3 5572163f7f8Smrg ;; 5582163f7f8Smrg sun3os4) 5592163f7f8Smrg basic_machine=m68k-sun 5602163f7f8Smrg basic_os=sunos4 5612163f7f8Smrg ;; 5622163f7f8Smrg sun4) 5632163f7f8Smrg basic_machine=sparc-sun 5642163f7f8Smrg basic_os= 5652163f7f8Smrg ;; 5662163f7f8Smrg sun4os3) 5672163f7f8Smrg basic_machine=sparc-sun 5682163f7f8Smrg basic_os=sunos3 5692163f7f8Smrg ;; 5702163f7f8Smrg sun4os4) 5712163f7f8Smrg basic_machine=sparc-sun 5722163f7f8Smrg basic_os=sunos4 5732163f7f8Smrg ;; 5742163f7f8Smrg sun4sol2) 5752163f7f8Smrg basic_machine=sparc-sun 5762163f7f8Smrg basic_os=solaris2 5772163f7f8Smrg ;; 5782163f7f8Smrg sun386 | sun386i | roadrunner) 5792163f7f8Smrg basic_machine=i386-sun 5802163f7f8Smrg basic_os= 5812163f7f8Smrg ;; 5822163f7f8Smrg sv1) 5832163f7f8Smrg basic_machine=sv1-cray 5842163f7f8Smrg basic_os=unicos 5852163f7f8Smrg ;; 5862163f7f8Smrg symmetry) 5872163f7f8Smrg basic_machine=i386-sequent 5882163f7f8Smrg basic_os=dynix 5892163f7f8Smrg ;; 5902163f7f8Smrg t3e) 5912163f7f8Smrg basic_machine=alphaev5-cray 5922163f7f8Smrg basic_os=unicos 5932163f7f8Smrg ;; 5942163f7f8Smrg t90) 5952163f7f8Smrg basic_machine=t90-cray 5962163f7f8Smrg basic_os=unicos 5972163f7f8Smrg ;; 5982163f7f8Smrg toad1) 5992163f7f8Smrg basic_machine=pdp10-xkl 6002163f7f8Smrg basic_os=tops20 6012163f7f8Smrg ;; 6022163f7f8Smrg tpf) 6032163f7f8Smrg basic_machine=s390x-ibm 6042163f7f8Smrg basic_os=tpf 6052163f7f8Smrg ;; 6062163f7f8Smrg udi29k) 6072163f7f8Smrg basic_machine=a29k-amd 6082163f7f8Smrg basic_os=udi 6092163f7f8Smrg ;; 6102163f7f8Smrg ultra3) 6112163f7f8Smrg basic_machine=a29k-nyu 6122163f7f8Smrg basic_os=sym1 6132163f7f8Smrg ;; 6142163f7f8Smrg v810 | necv810) 6152163f7f8Smrg basic_machine=v810-nec 6162163f7f8Smrg basic_os=none 6172163f7f8Smrg ;; 6182163f7f8Smrg vaxv) 6192163f7f8Smrg basic_machine=vax-dec 6202163f7f8Smrg basic_os=sysv 6212163f7f8Smrg ;; 6222163f7f8Smrg vms) 6232163f7f8Smrg basic_machine=vax-dec 6242163f7f8Smrg basic_os=vms 6252163f7f8Smrg ;; 6262163f7f8Smrg vsta) 6272163f7f8Smrg basic_machine=i386-pc 6282163f7f8Smrg basic_os=vsta 6292163f7f8Smrg ;; 6302163f7f8Smrg vxworks960) 6312163f7f8Smrg basic_machine=i960-wrs 6322163f7f8Smrg basic_os=vxworks 6332163f7f8Smrg ;; 6342163f7f8Smrg vxworks68) 6352163f7f8Smrg basic_machine=m68k-wrs 6362163f7f8Smrg basic_os=vxworks 6372163f7f8Smrg ;; 6382163f7f8Smrg vxworks29k) 6392163f7f8Smrg basic_machine=a29k-wrs 6402163f7f8Smrg basic_os=vxworks 6412163f7f8Smrg ;; 6422163f7f8Smrg xbox) 6432163f7f8Smrg basic_machine=i686-pc 6442163f7f8Smrg basic_os=mingw32 6452163f7f8Smrg ;; 6462163f7f8Smrg ymp) 6472163f7f8Smrg basic_machine=ymp-cray 6482163f7f8Smrg basic_os=unicos 6492163f7f8Smrg ;; 6502163f7f8Smrg *) 6512163f7f8Smrg basic_machine=$1 6522163f7f8Smrg basic_os= 6532163f7f8Smrg ;; 6542163f7f8Smrg esac 655ff7e0accSmrg ;; 656ff7e0accSmrgesac 657ff7e0accSmrg 6582163f7f8Smrg# Decode 1-component or ad-hoc basic machines 659ff7e0accSmrgcase $basic_machine in 6602163f7f8Smrg # Here we handle the default manufacturer of certain CPU types. It is in 6612163f7f8Smrg # some cases the only manufacturer, in others, it is the most popular. 6622163f7f8Smrg w89k) 6632163f7f8Smrg cpu=hppa1.1 6642163f7f8Smrg vendor=winbond 665ff7e0accSmrg ;; 6662163f7f8Smrg op50n) 6672163f7f8Smrg cpu=hppa1.1 6682163f7f8Smrg vendor=oki 669ff7e0accSmrg ;; 6702163f7f8Smrg op60c) 6712163f7f8Smrg cpu=hppa1.1 6722163f7f8Smrg vendor=oki 673ff7e0accSmrg ;; 6742163f7f8Smrg ibm*) 6752163f7f8Smrg cpu=i370 6762163f7f8Smrg vendor=ibm 67705bee9bcSmrg ;; 6782163f7f8Smrg orion105) 6792163f7f8Smrg cpu=clipper 6802163f7f8Smrg vendor=highlevel 68105bee9bcSmrg ;; 6822163f7f8Smrg mac | mpw | mac-mpw) 6832163f7f8Smrg cpu=m68k 6842163f7f8Smrg vendor=apple 68505bee9bcSmrg ;; 6862163f7f8Smrg pmac | pmac-mpw) 6872163f7f8Smrg cpu=powerpc 6882163f7f8Smrg vendor=apple 68905bee9bcSmrg ;; 69005bee9bcSmrg 691ff7e0accSmrg # Recognize the various machine names and aliases which stand 692ff7e0accSmrg # for a CPU type and a company and sometimes even an OS. 693ff7e0accSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6942163f7f8Smrg cpu=m68000 6952163f7f8Smrg vendor=att 696ff7e0accSmrg ;; 697ff7e0accSmrg 3b*) 6982163f7f8Smrg cpu=we32k 6992163f7f8Smrg vendor=att 700a005d216Smrg ;; 701863f95b1Smrg bluegene*) 7022163f7f8Smrg cpu=powerpc 7032163f7f8Smrg vendor=ibm 7042163f7f8Smrg basic_os=cnk 705ff7e0accSmrg ;; 706ff7e0accSmrg decsystem10* | dec10*) 7072163f7f8Smrg cpu=pdp10 7082163f7f8Smrg vendor=dec 7092163f7f8Smrg basic_os=tops10 710ff7e0accSmrg ;; 711ff7e0accSmrg decsystem20* | dec20*) 7122163f7f8Smrg cpu=pdp10 7132163f7f8Smrg vendor=dec 7142163f7f8Smrg basic_os=tops20 715ff7e0accSmrg ;; 716ff7e0accSmrg delta | 3300 | motorola-3300 | motorola-delta \ 717ff7e0accSmrg | 3300-motorola | delta-motorola) 7182163f7f8Smrg cpu=m68k 7192163f7f8Smrg vendor=motorola 720ff7e0accSmrg ;; 7210c91c449Smrg dpx2*) 7222163f7f8Smrg cpu=m68k 7232163f7f8Smrg vendor=bull 7242163f7f8Smrg basic_os=sysv3 725ff7e0accSmrg ;; 726ff7e0accSmrg encore | umax | mmax) 7272163f7f8Smrg cpu=ns32k 7282163f7f8Smrg vendor=encore 729ff7e0accSmrg ;; 7302163f7f8Smrg elxsi) 7312163f7f8Smrg cpu=elxsi 7322163f7f8Smrg vendor=elxsi 7332163f7f8Smrg basic_os=${basic_os:-bsd} 734ff7e0accSmrg ;; 735ff7e0accSmrg fx2800) 7362163f7f8Smrg cpu=i860 7372163f7f8Smrg vendor=alliant 738ff7e0accSmrg ;; 739ff7e0accSmrg genix) 7402163f7f8Smrg cpu=ns32k 7412163f7f8Smrg vendor=ns 742ff7e0accSmrg ;; 743ff7e0accSmrg h3050r* | hiux*) 7442163f7f8Smrg cpu=hppa1.1 7452163f7f8Smrg vendor=hitachi 7462163f7f8Smrg basic_os=hiuxwe2 747ff7e0accSmrg ;; 748ff7e0accSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7492163f7f8Smrg cpu=hppa1.0 7502163f7f8Smrg vendor=hp 751ff7e0accSmrg ;; 752ff7e0accSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7532163f7f8Smrg cpu=m68000 7542163f7f8Smrg vendor=hp 755ff7e0accSmrg ;; 756ff7e0accSmrg hp9k3[2-9][0-9]) 7572163f7f8Smrg cpu=m68k 7582163f7f8Smrg vendor=hp 759ff7e0accSmrg ;; 760ff7e0accSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7612163f7f8Smrg cpu=hppa1.0 7622163f7f8Smrg vendor=hp 763ff7e0accSmrg ;; 764ff7e0accSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7652163f7f8Smrg cpu=hppa1.1 7662163f7f8Smrg vendor=hp 767ff7e0accSmrg ;; 768ff7e0accSmrg hp9k78[0-9] | hp78[0-9]) 769ff7e0accSmrg # FIXME: really hppa2.0-hp 7702163f7f8Smrg cpu=hppa1.1 7712163f7f8Smrg vendor=hp 772ff7e0accSmrg ;; 773ff7e0accSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774ff7e0accSmrg # FIXME: really hppa2.0-hp 7752163f7f8Smrg cpu=hppa1.1 7762163f7f8Smrg vendor=hp 777ff7e0accSmrg ;; 778ff7e0accSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7792163f7f8Smrg cpu=hppa1.1 7802163f7f8Smrg vendor=hp 781ff7e0accSmrg ;; 782ff7e0accSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7832163f7f8Smrg cpu=hppa1.0 7842163f7f8Smrg vendor=hp 785ff7e0accSmrg ;; 786ff7e0accSmrg i*86v32) 7872163f7f8Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7882163f7f8Smrg vendor=pc 7892163f7f8Smrg basic_os=sysv32 790ff7e0accSmrg ;; 791ff7e0accSmrg i*86v4*) 7922163f7f8Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7932163f7f8Smrg vendor=pc 7942163f7f8Smrg basic_os=sysv4 795ff7e0accSmrg ;; 796ff7e0accSmrg i*86v) 7972163f7f8Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7982163f7f8Smrg vendor=pc 7992163f7f8Smrg basic_os=sysv 800ff7e0accSmrg ;; 801ff7e0accSmrg i*86sol2) 8022163f7f8Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8032163f7f8Smrg vendor=pc 8042163f7f8Smrg basic_os=solaris2 805ff7e0accSmrg ;; 8062163f7f8Smrg j90 | j90-cray) 8072163f7f8Smrg cpu=j90 8082163f7f8Smrg vendor=cray 8092163f7f8Smrg basic_os=${basic_os:-unicos} 810ff7e0accSmrg ;; 811ff7e0accSmrg iris | iris4d) 8122163f7f8Smrg cpu=mips 8132163f7f8Smrg vendor=sgi 8142163f7f8Smrg case $basic_os in 8152163f7f8Smrg irix*) 816ff7e0accSmrg ;; 817ff7e0accSmrg *) 8182163f7f8Smrg basic_os=irix4 819ff7e0accSmrg ;; 820ff7e0accSmrg esac 821ff7e0accSmrg ;; 822ff7e0accSmrg miniframe) 8232163f7f8Smrg cpu=m68000 8242163f7f8Smrg vendor=convergent 825ff7e0accSmrg ;; 8262163f7f8Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8272163f7f8Smrg cpu=m68k 8282163f7f8Smrg vendor=atari 8292163f7f8Smrg basic_os=mint 830ff7e0accSmrg ;; 831ff7e0accSmrg news-3600 | risc-news) 8322163f7f8Smrg cpu=mips 8332163f7f8Smrg vendor=sony 8342163f7f8Smrg basic_os=newsos 835ff7e0accSmrg ;; 8360c91c449Smrg next | m*-next) 8372163f7f8Smrg cpu=m68k 8382163f7f8Smrg vendor=next 8392163f7f8Smrg case $basic_os in 8402163f7f8Smrg openstep*) 8412163f7f8Smrg ;; 8422163f7f8Smrg nextstep*) 843ff7e0accSmrg ;; 8442163f7f8Smrg ns2*) 8452163f7f8Smrg basic_os=nextstep2 846ff7e0accSmrg ;; 847ff7e0accSmrg *) 8482163f7f8Smrg basic_os=nextstep3 849ff7e0accSmrg ;; 850ff7e0accSmrg esac 851ff7e0accSmrg ;; 852ff7e0accSmrg np1) 8532163f7f8Smrg cpu=np1 8542163f7f8Smrg vendor=gould 8550c91c449Smrg ;; 856ff7e0accSmrg op50n-* | op60c-*) 8572163f7f8Smrg cpu=hppa1.1 8582163f7f8Smrg vendor=oki 8592163f7f8Smrg basic_os=proelf 860ff7e0accSmrg ;; 861ff7e0accSmrg pa-hitachi) 8622163f7f8Smrg cpu=hppa1.1 8632163f7f8Smrg vendor=hitachi 8642163f7f8Smrg basic_os=hiuxwe2 865a005d216Smrg ;; 866ff7e0accSmrg pbd) 8672163f7f8Smrg cpu=sparc 8682163f7f8Smrg vendor=tti 869ff7e0accSmrg ;; 870ff7e0accSmrg pbb) 8712163f7f8Smrg cpu=m68k 8722163f7f8Smrg vendor=tti 873ff7e0accSmrg ;; 8742163f7f8Smrg pc532) 8752163f7f8Smrg cpu=ns32k 8762163f7f8Smrg vendor=pc532 877ff7e0accSmrg ;; 878ff7e0accSmrg pn) 8792163f7f8Smrg cpu=pn 8802163f7f8Smrg vendor=gould 881ff7e0accSmrg ;; 8822163f7f8Smrg power) 8832163f7f8Smrg cpu=power 8842163f7f8Smrg vendor=ibm 885ff7e0accSmrg ;; 8862163f7f8Smrg ps2) 8872163f7f8Smrg cpu=i386 8882163f7f8Smrg vendor=ibm 889ff7e0accSmrg ;; 8902163f7f8Smrg rm[46]00) 8912163f7f8Smrg cpu=mips 8922163f7f8Smrg vendor=siemens 893ff7e0accSmrg ;; 8942163f7f8Smrg rtpc | rtpc-*) 8952163f7f8Smrg cpu=romp 8962163f7f8Smrg vendor=ibm 897ff7e0accSmrg ;; 8982163f7f8Smrg sde) 8992163f7f8Smrg cpu=mipsisa32 9002163f7f8Smrg vendor=sde 9012163f7f8Smrg basic_os=${basic_os:-elf} 902ff7e0accSmrg ;; 9032163f7f8Smrg simso-wrs) 9042163f7f8Smrg cpu=sparclite 9052163f7f8Smrg vendor=wrs 9062163f7f8Smrg basic_os=vxworks 907ff7e0accSmrg ;; 9082163f7f8Smrg tower | tower-32) 9092163f7f8Smrg cpu=m68k 9102163f7f8Smrg vendor=ncr 911ff7e0accSmrg ;; 9122163f7f8Smrg vpp*|vx|vx-*) 9132163f7f8Smrg cpu=f301 9142163f7f8Smrg vendor=fujitsu 915ff7e0accSmrg ;; 9162163f7f8Smrg w65) 9172163f7f8Smrg cpu=w65 9182163f7f8Smrg vendor=wdc 91905bee9bcSmrg ;; 9202163f7f8Smrg w89k-*) 9212163f7f8Smrg cpu=hppa1.1 9222163f7f8Smrg vendor=winbond 9232163f7f8Smrg basic_os=proelf 924ff7e0accSmrg ;; 9252163f7f8Smrg none) 9262163f7f8Smrg cpu=none 9272163f7f8Smrg vendor=none 928ff7e0accSmrg ;; 9292163f7f8Smrg leon|leon[3-9]) 9302163f7f8Smrg cpu=sparc 9312163f7f8Smrg vendor=$basic_machine 932ff7e0accSmrg ;; 9332163f7f8Smrg leon-*|leon[3-9]-*) 9342163f7f8Smrg cpu=sparc 9352163f7f8Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936ff7e0accSmrg ;; 9372163f7f8Smrg 9382163f7f8Smrg *-*) 9392163f7f8Smrg # shellcheck disable=SC2162 9402163f7f8Smrg saved_IFS=$IFS 9412163f7f8Smrg IFS="-" read cpu vendor <<EOF 9422163f7f8Smrg$basic_machine 9432163f7f8SmrgEOF 9442163f7f8Smrg IFS=$saved_IFS 945ff7e0accSmrg ;; 9462163f7f8Smrg # We use `pc' rather than `unknown' 9472163f7f8Smrg # because (1) that's what they normally are, and 9482163f7f8Smrg # (2) the word "unknown" tends to confuse beginning users. 9492163f7f8Smrg i*86 | x86_64) 9502163f7f8Smrg cpu=$basic_machine 9512163f7f8Smrg vendor=pc 952ff7e0accSmrg ;; 9532163f7f8Smrg # These rules are duplicated from below for sake of the special case above; 9542163f7f8Smrg # i.e. things that normalized to x86 arches should also default to "pc" 9552163f7f8Smrg pc98) 9562163f7f8Smrg cpu=i386 9572163f7f8Smrg vendor=pc 958ff7e0accSmrg ;; 9592163f7f8Smrg x64 | amd64) 9602163f7f8Smrg cpu=x86_64 9612163f7f8Smrg vendor=pc 962ff7e0accSmrg ;; 9632163f7f8Smrg # Recognize the basic CPU types without company name. 9642163f7f8Smrg *) 9652163f7f8Smrg cpu=$basic_machine 9662163f7f8Smrg vendor=unknown 967ff7e0accSmrg ;; 9682163f7f8Smrgesac 9692163f7f8Smrg 9702163f7f8Smrgunset -v basic_machine 9712163f7f8Smrg 9722163f7f8Smrg# Decode basic machines in the full and proper CPU-Company form. 9732163f7f8Smrgcase $cpu-$vendor in 9742163f7f8Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9752163f7f8Smrg # some cases the only manufacturer, in others, it is the most popular. 9762163f7f8Smrg craynv-unknown) 9772163f7f8Smrg vendor=cray 9782163f7f8Smrg basic_os=${basic_os:-unicosmp} 979ff7e0accSmrg ;; 9802163f7f8Smrg c90-unknown | c90-cray) 9812163f7f8Smrg vendor=cray 9822163f7f8Smrg basic_os=${Basic_os:-unicos} 983ff7e0accSmrg ;; 9842163f7f8Smrg fx80-unknown) 9852163f7f8Smrg vendor=alliant 986ff7e0accSmrg ;; 9872163f7f8Smrg romp-unknown) 9882163f7f8Smrg vendor=ibm 989ff7e0accSmrg ;; 9902163f7f8Smrg mmix-unknown) 9912163f7f8Smrg vendor=knuth 992ff7e0accSmrg ;; 9932163f7f8Smrg microblaze-unknown | microblazeel-unknown) 9942163f7f8Smrg vendor=xilinx 995ff7e0accSmrg ;; 9962163f7f8Smrg rs6000-unknown) 9972163f7f8Smrg vendor=ibm 998ff7e0accSmrg ;; 9992163f7f8Smrg vax-unknown) 10002163f7f8Smrg vendor=dec 1001ff7e0accSmrg ;; 10022163f7f8Smrg pdp11-unknown) 10032163f7f8Smrg vendor=dec 1004ff7e0accSmrg ;; 10052163f7f8Smrg we32k-unknown) 10062163f7f8Smrg vendor=att 100705bee9bcSmrg ;; 10082163f7f8Smrg cydra-unknown) 10092163f7f8Smrg vendor=cydrome 1010ff7e0accSmrg ;; 10112163f7f8Smrg i370-ibm*) 10122163f7f8Smrg vendor=ibm 1013ff7e0accSmrg ;; 10142163f7f8Smrg orion-unknown) 10152163f7f8Smrg vendor=highlevel 1016ff7e0accSmrg ;; 10172163f7f8Smrg xps-unknown | xps100-unknown) 10182163f7f8Smrg cpu=xps100 10192163f7f8Smrg vendor=honeywell 1020ff7e0accSmrg ;; 10212163f7f8Smrg 10222163f7f8Smrg # Here we normalize CPU types with a missing or matching vendor 10232163f7f8Smrg armh-unknown | armh-alt) 10242163f7f8Smrg cpu=armv7l 10252163f7f8Smrg vendor=alt 10262163f7f8Smrg basic_os=${basic_os:-linux-gnueabihf} 1027ff7e0accSmrg ;; 10282163f7f8Smrg dpx20-unknown | dpx20-bull) 10292163f7f8Smrg cpu=rs6000 10302163f7f8Smrg vendor=bull 10312163f7f8Smrg basic_os=${basic_os:-bosx} 1032ff7e0accSmrg ;; 10332163f7f8Smrg 10342163f7f8Smrg # Here we normalize CPU types irrespective of the vendor 10352163f7f8Smrg amd64-*) 10362163f7f8Smrg cpu=x86_64 1037ff7e0accSmrg ;; 10382163f7f8Smrg blackfin-*) 10392163f7f8Smrg cpu=bfin 10402163f7f8Smrg basic_os=linux 1041ff7e0accSmrg ;; 10422163f7f8Smrg c54x-*) 10432163f7f8Smrg cpu=tic54x 1044ff7e0accSmrg ;; 10452163f7f8Smrg c55x-*) 10462163f7f8Smrg cpu=tic55x 1047ff7e0accSmrg ;; 10482163f7f8Smrg c6x-*) 10492163f7f8Smrg cpu=tic6x 1050ff7e0accSmrg ;; 10512163f7f8Smrg e500v[12]-*) 10522163f7f8Smrg cpu=powerpc 10532163f7f8Smrg basic_os=${basic_os}"spe" 1054ff7e0accSmrg ;; 10552163f7f8Smrg mips3*-*) 10562163f7f8Smrg cpu=mips64 1057ff7e0accSmrg ;; 10582163f7f8Smrg ms1-*) 10592163f7f8Smrg cpu=mt 1060ff7e0accSmrg ;; 10612163f7f8Smrg m68knommu-*) 10622163f7f8Smrg cpu=m68k 10632163f7f8Smrg basic_os=linux 1064ff7e0accSmrg ;; 10652163f7f8Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10662163f7f8Smrg cpu=s12z 1067a005d216Smrg ;; 10682163f7f8Smrg openrisc-*) 10692163f7f8Smrg cpu=or32 1070ff7e0accSmrg ;; 10712163f7f8Smrg parisc-*) 10722163f7f8Smrg cpu=hppa 10732163f7f8Smrg basic_os=linux 1074ff7e0accSmrg ;; 10752163f7f8Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10762163f7f8Smrg cpu=i586 1077ff7e0accSmrg ;; 10782163f7f8Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 10792163f7f8Smrg cpu=i686 1080ff7e0accSmrg ;; 10812163f7f8Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10822163f7f8Smrg cpu=i686 1083ff7e0accSmrg ;; 10842163f7f8Smrg pentium4-*) 10852163f7f8Smrg cpu=i786 1086ff7e0accSmrg ;; 10872163f7f8Smrg pc98-*) 10882163f7f8Smrg cpu=i386 1089ff7e0accSmrg ;; 10902163f7f8Smrg ppc-* | ppcbe-*) 10912163f7f8Smrg cpu=powerpc 1092ff7e0accSmrg ;; 10932163f7f8Smrg ppcle-* | powerpclittle-*) 10942163f7f8Smrg cpu=powerpcle 1095ff7e0accSmrg ;; 10962163f7f8Smrg ppc64-*) 10972163f7f8Smrg cpu=powerpc64 1098ff7e0accSmrg ;; 10992163f7f8Smrg ppc64le-* | powerpc64little-*) 11002163f7f8Smrg cpu=powerpc64le 1101ff7e0accSmrg ;; 11022163f7f8Smrg sb1-*) 11032163f7f8Smrg cpu=mipsisa64sb1 1104ff7e0accSmrg ;; 11052163f7f8Smrg sb1el-*) 11062163f7f8Smrg cpu=mipsisa64sb1el 1107ff7e0accSmrg ;; 11082163f7f8Smrg sh5e[lb]-*) 11092163f7f8Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1110ff7e0accSmrg ;; 11112163f7f8Smrg spur-*) 11122163f7f8Smrg cpu=spur 1113ff7e0accSmrg ;; 11142163f7f8Smrg strongarm-* | thumb-*) 11152163f7f8Smrg cpu=arm 1116ff7e0accSmrg ;; 11172163f7f8Smrg tx39-*) 11182163f7f8Smrg cpu=mipstx39 11190c91c449Smrg ;; 11202163f7f8Smrg tx39el-*) 11212163f7f8Smrg cpu=mipstx39el 1122ff7e0accSmrg ;; 11232163f7f8Smrg x64-*) 11242163f7f8Smrg cpu=x86_64 1125ff7e0accSmrg ;; 112605bee9bcSmrg xscale-* | xscalee[bl]-*) 11272163f7f8Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1128ff7e0accSmrg ;; 11292163f7f8Smrg arm64-* | aarch64le-*) 11302163f7f8Smrg cpu=aarch64 1131ff7e0accSmrg ;; 1132ff7e0accSmrg 11332163f7f8Smrg # Recognize the canonical CPU Types that limit and/or modify the 11342163f7f8Smrg # company names they are paired with. 11352163f7f8Smrg cr16-*) 11362163f7f8Smrg basic_os=${basic_os:-elf} 1137ff7e0accSmrg ;; 11382163f7f8Smrg crisv32-* | etraxfs*-*) 11392163f7f8Smrg cpu=crisv32 11402163f7f8Smrg vendor=axis 1141ff7e0accSmrg ;; 11422163f7f8Smrg cris-* | etrax*-*) 11432163f7f8Smrg cpu=cris 11442163f7f8Smrg vendor=axis 1145ff7e0accSmrg ;; 11462163f7f8Smrg crx-*) 11472163f7f8Smrg basic_os=${basic_os:-elf} 1148ff7e0accSmrg ;; 11492163f7f8Smrg neo-tandem) 11502163f7f8Smrg cpu=neo 11512163f7f8Smrg vendor=tandem 1152ff7e0accSmrg ;; 11532163f7f8Smrg nse-tandem) 11542163f7f8Smrg cpu=nse 11552163f7f8Smrg vendor=tandem 1156ff7e0accSmrg ;; 11572163f7f8Smrg nsr-tandem) 11582163f7f8Smrg cpu=nsr 11592163f7f8Smrg vendor=tandem 1160ff7e0accSmrg ;; 11612163f7f8Smrg nsv-tandem) 11622163f7f8Smrg cpu=nsv 11632163f7f8Smrg vendor=tandem 1164ff7e0accSmrg ;; 11652163f7f8Smrg nsx-tandem) 11662163f7f8Smrg cpu=nsx 11672163f7f8Smrg vendor=tandem 1168ff7e0accSmrg ;; 11692163f7f8Smrg mipsallegrexel-sony) 11702163f7f8Smrg cpu=mipsallegrexel 11712163f7f8Smrg vendor=sony 1172ff7e0accSmrg ;; 11732163f7f8Smrg tile*-*) 11742163f7f8Smrg basic_os=${basic_os:-linux-gnu} 1175ff7e0accSmrg ;; 11762163f7f8Smrg 1177ff7e0accSmrg *) 11782163f7f8Smrg # Recognize the canonical CPU types that are allowed with any 11792163f7f8Smrg # company name. 11802163f7f8Smrg case $cpu in 11812163f7f8Smrg 1750a | 580 \ 11822163f7f8Smrg | a29k \ 11832163f7f8Smrg | aarch64 | aarch64_be \ 11842163f7f8Smrg | abacus \ 11852163f7f8Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11862163f7f8Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11872163f7f8Smrg | alphapca5[67] | alpha64pca5[67] \ 11882163f7f8Smrg | am33_2.0 \ 11892163f7f8Smrg | amdgcn \ 11902163f7f8Smrg | arc | arceb | arc32 | arc64 \ 11912163f7f8Smrg | arm | arm[lb]e | arme[lb] | armv* \ 11922163f7f8Smrg | avr | avr32 \ 11932163f7f8Smrg | asmjs \ 11942163f7f8Smrg | ba \ 11952163f7f8Smrg | be32 | be64 \ 11962163f7f8Smrg | bfin | bpf | bs2000 \ 11972163f7f8Smrg | c[123]* | c30 | [cjt]90 | c4x \ 11982163f7f8Smrg | c8051 | clipper | craynv | csky | cydra \ 11992163f7f8Smrg | d10v | d30v | dlx | dsp16xx \ 12002163f7f8Smrg | e2k | elxsi | epiphany \ 12012163f7f8Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 12022163f7f8Smrg | h8300 | h8500 \ 12032163f7f8Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 12042163f7f8Smrg | hexagon \ 12052163f7f8Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12062163f7f8Smrg | ip2k | iq2000 \ 12072163f7f8Smrg | k1om \ 12082163f7f8Smrg | le32 | le64 \ 12092163f7f8Smrg | lm32 \ 12102163f7f8Smrg | loongarch32 | loongarch64 \ 12112163f7f8Smrg | m32c | m32r | m32rle \ 12122163f7f8Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12132163f7f8Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12142163f7f8Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12152163f7f8Smrg | microblaze | microblazeel \ 12162163f7f8Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12172163f7f8Smrg | mips16 \ 12182163f7f8Smrg | mips64 | mips64eb | mips64el \ 12192163f7f8Smrg | mips64octeon | mips64octeonel \ 12202163f7f8Smrg | mips64orion | mips64orionel \ 12212163f7f8Smrg | mips64r5900 | mips64r5900el \ 12222163f7f8Smrg | mips64vr | mips64vrel \ 12232163f7f8Smrg | mips64vr4100 | mips64vr4100el \ 12242163f7f8Smrg | mips64vr4300 | mips64vr4300el \ 12252163f7f8Smrg | mips64vr5000 | mips64vr5000el \ 12262163f7f8Smrg | mips64vr5900 | mips64vr5900el \ 12272163f7f8Smrg | mipsisa32 | mipsisa32el \ 12282163f7f8Smrg | mipsisa32r2 | mipsisa32r2el \ 12292163f7f8Smrg | mipsisa32r3 | mipsisa32r3el \ 12302163f7f8Smrg | mipsisa32r5 | mipsisa32r5el \ 12312163f7f8Smrg | mipsisa32r6 | mipsisa32r6el \ 12322163f7f8Smrg | mipsisa64 | mipsisa64el \ 12332163f7f8Smrg | mipsisa64r2 | mipsisa64r2el \ 12342163f7f8Smrg | mipsisa64r3 | mipsisa64r3el \ 12352163f7f8Smrg | mipsisa64r5 | mipsisa64r5el \ 12362163f7f8Smrg | mipsisa64r6 | mipsisa64r6el \ 12372163f7f8Smrg | mipsisa64sb1 | mipsisa64sb1el \ 12382163f7f8Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 12392163f7f8Smrg | mipsr5900 | mipsr5900el \ 12402163f7f8Smrg | mipstx39 | mipstx39el \ 12412163f7f8Smrg | mmix \ 12422163f7f8Smrg | mn10200 | mn10300 \ 12432163f7f8Smrg | moxie \ 12442163f7f8Smrg | mt \ 12452163f7f8Smrg | msp430 \ 12462163f7f8Smrg | nds32 | nds32le | nds32be \ 12472163f7f8Smrg | nfp \ 12482163f7f8Smrg | nios | nios2 | nios2eb | nios2el \ 12492163f7f8Smrg | none | np1 | ns16k | ns32k | nvptx \ 12502163f7f8Smrg | open8 \ 12512163f7f8Smrg | or1k* \ 12522163f7f8Smrg | or32 \ 12532163f7f8Smrg | orion \ 12542163f7f8Smrg | picochip \ 12552163f7f8Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12562163f7f8Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12572163f7f8Smrg | pru \ 12582163f7f8Smrg | pyramid \ 12592163f7f8Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12602163f7f8Smrg | rl78 | romp | rs6000 | rx \ 12612163f7f8Smrg | s390 | s390x \ 12622163f7f8Smrg | score \ 12632163f7f8Smrg | sh | shl \ 12642163f7f8Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12652163f7f8Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12662163f7f8Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12672163f7f8Smrg | sparclite \ 12682163f7f8Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12692163f7f8Smrg | spu \ 12702163f7f8Smrg | tahoe \ 12712163f7f8Smrg | thumbv7* \ 12722163f7f8Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12732163f7f8Smrg | tron \ 12742163f7f8Smrg | ubicom32 \ 12752163f7f8Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12762163f7f8Smrg | vax \ 12772163f7f8Smrg | visium \ 12782163f7f8Smrg | w65 \ 12792163f7f8Smrg | wasm32 | wasm64 \ 12802163f7f8Smrg | we32k \ 12812163f7f8Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12822163f7f8Smrg | xstormy16 | xtensa* \ 12832163f7f8Smrg | ymp \ 12842163f7f8Smrg | z8k | z80) 12852163f7f8Smrg ;; 12862163f7f8Smrg 12872163f7f8Smrg *) 12882163f7f8Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12892163f7f8Smrg exit 1 12902163f7f8Smrg ;; 12912163f7f8Smrg esac 1292ff7e0accSmrg ;; 1293ff7e0accSmrgesac 1294ff7e0accSmrg 1295ff7e0accSmrg# Here we canonicalize certain aliases for manufacturers. 12962163f7f8Smrgcase $vendor in 12972163f7f8Smrg digital*) 12982163f7f8Smrg vendor=dec 1299ff7e0accSmrg ;; 13002163f7f8Smrg commodore*) 13012163f7f8Smrg vendor=cbm 1302ff7e0accSmrg ;; 1303ff7e0accSmrg *) 1304ff7e0accSmrg ;; 1305ff7e0accSmrgesac 1306ff7e0accSmrg 1307ff7e0accSmrg# Decode manufacturer-specific aliases for certain operating systems. 1308ff7e0accSmrg 13092163f7f8Smrgif test x$basic_os != x 1310ff7e0accSmrgthen 13112163f7f8Smrg 13122163f7f8Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 13132163f7f8Smrg# set os. 13142163f7f8Smrgcase $basic_os in 13152163f7f8Smrg gnu/linux*) 13162163f7f8Smrg kernel=linux 13172163f7f8Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13182163f7f8Smrg ;; 13192163f7f8Smrg os2-emx) 13202163f7f8Smrg kernel=os2 13212163f7f8Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13222163f7f8Smrg ;; 13232163f7f8Smrg nto-qnx*) 13242163f7f8Smrg kernel=nto 13252163f7f8Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13262163f7f8Smrg ;; 13272163f7f8Smrg *-*) 13282163f7f8Smrg # shellcheck disable=SC2162 13292163f7f8Smrg saved_IFS=$IFS 13302163f7f8Smrg IFS="-" read kernel os <<EOF 13312163f7f8Smrg$basic_os 13322163f7f8SmrgEOF 13332163f7f8Smrg IFS=$saved_IFS 13342163f7f8Smrg ;; 13352163f7f8Smrg # Default OS when just kernel was specified 13362163f7f8Smrg nto*) 13372163f7f8Smrg kernel=nto 13382163f7f8Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13392163f7f8Smrg ;; 13402163f7f8Smrg linux*) 13412163f7f8Smrg kernel=linux 13422163f7f8Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13432163f7f8Smrg ;; 13442163f7f8Smrg managarm*) 13452163f7f8Smrg kernel=managarm 13462163f7f8Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 13472163f7f8Smrg ;; 13482163f7f8Smrg *) 13492163f7f8Smrg kernel= 13502163f7f8Smrg os=$basic_os 13512163f7f8Smrg ;; 13522163f7f8Smrgesac 13532163f7f8Smrg 13542163f7f8Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13552163f7f8Smrg# etc.) 1356ff7e0accSmrgcase $os in 13570c91c449Smrg # First match some system type aliases that might get confused 13580c91c449Smrg # with valid system types. 13592163f7f8Smrg # solaris* is a basic system type, with this one exception. 13602163f7f8Smrg auroraux) 13612163f7f8Smrg os=auroraux 1362863f95b1Smrg ;; 13632163f7f8Smrg bluegene*) 13642163f7f8Smrg os=cnk 1365ff7e0accSmrg ;; 13662163f7f8Smrg solaris1 | solaris1.*) 13672163f7f8Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1368ff7e0accSmrg ;; 13692163f7f8Smrg solaris) 13702163f7f8Smrg os=solaris2 1371ff7e0accSmrg ;; 13722163f7f8Smrg unixware*) 13732163f7f8Smrg os=sysv4.2uw 1374ff7e0accSmrg ;; 13750c91c449Smrg # es1800 is here to avoid being matched by es* (a different OS) 13762163f7f8Smrg es1800*) 13772163f7f8Smrg os=ose 13780c91c449Smrg ;; 13792163f7f8Smrg # Some version numbers need modification 13802163f7f8Smrg chorusos*) 13812163f7f8Smrg os=chorusos 1382ff7e0accSmrg ;; 13832163f7f8Smrg isc) 13842163f7f8Smrg os=isc2.2 1385ff7e0accSmrg ;; 13862163f7f8Smrg sco6) 13872163f7f8Smrg os=sco5v6 1388ff7e0accSmrg ;; 13892163f7f8Smrg sco5) 13902163f7f8Smrg os=sco3.2v5 1391ff7e0accSmrg ;; 13922163f7f8Smrg sco4) 13932163f7f8Smrg os=sco3.2v4 1394ff7e0accSmrg ;; 13952163f7f8Smrg sco3.2.[4-9]*) 13962163f7f8Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1397ff7e0accSmrg ;; 13982163f7f8Smrg sco*v* | scout) 13992163f7f8Smrg # Don't match below 1400ff7e0accSmrg ;; 14012163f7f8Smrg sco*) 14022163f7f8Smrg os=sco3.2v2 1403ff7e0accSmrg ;; 14042163f7f8Smrg psos*) 14052163f7f8Smrg os=psos 1406ff7e0accSmrg ;; 14072163f7f8Smrg qnx*) 14082163f7f8Smrg os=qnx 1409ff7e0accSmrg ;; 14102163f7f8Smrg hiux*) 14112163f7f8Smrg os=hiuxwe2 1412ff7e0accSmrg ;; 14132163f7f8Smrg lynx*178) 14142163f7f8Smrg os=lynxos178 1415ff7e0accSmrg ;; 14162163f7f8Smrg lynx*5) 14172163f7f8Smrg os=lynxos5 1418ff7e0accSmrg ;; 14192163f7f8Smrg lynxos*) 14202163f7f8Smrg # don't get caught up in next wildcard 1421ff7e0accSmrg ;; 14222163f7f8Smrg lynx*) 14232163f7f8Smrg os=lynxos 1424ff7e0accSmrg ;; 14252163f7f8Smrg mac[0-9]*) 14262163f7f8Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1427ff7e0accSmrg ;; 14282163f7f8Smrg opened*) 14292163f7f8Smrg os=openedition 1430ff7e0accSmrg ;; 14312163f7f8Smrg os400*) 14322163f7f8Smrg os=os400 1433ff7e0accSmrg ;; 14342163f7f8Smrg sunos5*) 14352163f7f8Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1436ff7e0accSmrg ;; 14372163f7f8Smrg sunos6*) 14382163f7f8Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1439ff7e0accSmrg ;; 14402163f7f8Smrg wince*) 14412163f7f8Smrg os=wince 1442ff7e0accSmrg ;; 14432163f7f8Smrg utek*) 14442163f7f8Smrg os=bsd 1445ff7e0accSmrg ;; 14462163f7f8Smrg dynix*) 14472163f7f8Smrg os=bsd 14482163f7f8Smrg ;; 14492163f7f8Smrg acis*) 14502163f7f8Smrg os=aos 14512163f7f8Smrg ;; 14522163f7f8Smrg atheos*) 14532163f7f8Smrg os=atheos 14542163f7f8Smrg ;; 14552163f7f8Smrg syllable*) 14562163f7f8Smrg os=syllable 1457ff7e0accSmrg ;; 14582163f7f8Smrg 386bsd) 14592163f7f8Smrg os=bsd 14602163f7f8Smrg ;; 14612163f7f8Smrg ctix* | uts*) 14622163f7f8Smrg os=sysv 1463ff7e0accSmrg ;; 14642163f7f8Smrg nova*) 14652163f7f8Smrg os=rtmk-nova 1466ff7e0accSmrg ;; 14672163f7f8Smrg ns2) 14682163f7f8Smrg os=nextstep2 14692163f7f8Smrg ;; 14702163f7f8Smrg # Preserve the version number of sinix5. 14712163f7f8Smrg sinix5.*) 14722163f7f8Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1473ff7e0accSmrg ;; 14742163f7f8Smrg sinix*) 14752163f7f8Smrg os=sysv4 1476ff7e0accSmrg ;; 14772163f7f8Smrg tpf*) 14782163f7f8Smrg os=tpf 1479ff7e0accSmrg ;; 14802163f7f8Smrg triton*) 14812163f7f8Smrg os=sysv3 1482ff7e0accSmrg ;; 14832163f7f8Smrg oss*) 14842163f7f8Smrg os=sysv3 1485ff7e0accSmrg ;; 14862163f7f8Smrg svr4*) 14872163f7f8Smrg os=sysv4 1488ff7e0accSmrg ;; 14892163f7f8Smrg svr3) 14902163f7f8Smrg os=sysv3 1491ff7e0accSmrg ;; 14922163f7f8Smrg sysvr4) 14932163f7f8Smrg os=sysv4 1494ff7e0accSmrg ;; 14952163f7f8Smrg ose*) 14962163f7f8Smrg os=ose 1497ff7e0accSmrg ;; 14982163f7f8Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14992163f7f8Smrg os=mint 150010998002Smrg ;; 15012163f7f8Smrg dicos*) 15022163f7f8Smrg os=dicos 15032163f7f8Smrg ;; 15042163f7f8Smrg pikeos*) 15050c91c449Smrg # Until real need of OS specific support for 15060c91c449Smrg # particular features comes up, bare metal 15070c91c449Smrg # configurations are quite functional. 15082163f7f8Smrg case $cpu in 15090c91c449Smrg arm*) 15102163f7f8Smrg os=eabi 15110c91c449Smrg ;; 15120c91c449Smrg *) 15132163f7f8Smrg os=elf 15140c91c449Smrg ;; 15150c91c449Smrg esac 15160c91c449Smrg ;; 1517ff7e0accSmrg *) 15182163f7f8Smrg # No normalization, but not necessarily accepted, that comes below. 1519ff7e0accSmrg ;; 1520ff7e0accSmrgesac 15212163f7f8Smrg 1522ff7e0accSmrgelse 1523ff7e0accSmrg 1524ff7e0accSmrg# Here we handle the default operating systems that come with various machines. 1525ff7e0accSmrg# The value should be what the vendor currently ships out the door with their 1526ff7e0accSmrg# machine or put another way, the most popular os provided with the machine. 1527ff7e0accSmrg 1528ff7e0accSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1529ff7e0accSmrg# "-sun"), then you have to tell the case statement up towards the top 1530ff7e0accSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1531ff7e0accSmrg# will signal an error saying that MANUFACTURER isn't an operating 1532ff7e0accSmrg# system, and we'll never get to this point. 1533ff7e0accSmrg 15342163f7f8Smrgkernel= 15352163f7f8Smrgcase $cpu-$vendor in 153605bee9bcSmrg score-*) 15372163f7f8Smrg os=elf 1538ff7e0accSmrg ;; 153905bee9bcSmrg spu-*) 15402163f7f8Smrg os=elf 1541ff7e0accSmrg ;; 1542ff7e0accSmrg *-acorn) 15432163f7f8Smrg os=riscix1.2 1544ff7e0accSmrg ;; 1545ff7e0accSmrg arm*-rebel) 15462163f7f8Smrg kernel=linux 15472163f7f8Smrg os=gnu 1548ff7e0accSmrg ;; 1549ff7e0accSmrg arm*-semi) 15502163f7f8Smrg os=aout 1551ff7e0accSmrg ;; 155205bee9bcSmrg c4x-* | tic4x-*) 15532163f7f8Smrg os=coff 155405bee9bcSmrg ;; 15550c91c449Smrg c8051-*) 15562163f7f8Smrg os=elf 15572163f7f8Smrg ;; 15582163f7f8Smrg clipper-intergraph) 15592163f7f8Smrg os=clix 15600c91c449Smrg ;; 156105bee9bcSmrg hexagon-*) 15622163f7f8Smrg os=elf 1563ff7e0accSmrg ;; 1564863f95b1Smrg tic54x-*) 15652163f7f8Smrg os=coff 1566863f95b1Smrg ;; 1567863f95b1Smrg tic55x-*) 15682163f7f8Smrg os=coff 1569863f95b1Smrg ;; 1570863f95b1Smrg tic6x-*) 15712163f7f8Smrg os=coff 1572863f95b1Smrg ;; 1573ff7e0accSmrg # This must come before the *-dec entry. 1574ff7e0accSmrg pdp10-*) 15752163f7f8Smrg os=tops20 1576ff7e0accSmrg ;; 1577ff7e0accSmrg pdp11-*) 15782163f7f8Smrg os=none 1579ff7e0accSmrg ;; 1580ff7e0accSmrg *-dec | vax-*) 15812163f7f8Smrg os=ultrix4.2 1582ff7e0accSmrg ;; 1583ff7e0accSmrg m68*-apollo) 15842163f7f8Smrg os=domain 1585ff7e0accSmrg ;; 1586ff7e0accSmrg i386-sun) 15872163f7f8Smrg os=sunos4.0.2 1588ff7e0accSmrg ;; 1589ff7e0accSmrg m68000-sun) 15902163f7f8Smrg os=sunos3 1591ff7e0accSmrg ;; 1592ff7e0accSmrg m68*-cisco) 15932163f7f8Smrg os=aout 1594ff7e0accSmrg ;; 159505bee9bcSmrg mep-*) 15962163f7f8Smrg os=elf 1597ff7e0accSmrg ;; 1598ff7e0accSmrg mips*-cisco) 15992163f7f8Smrg os=elf 1600ff7e0accSmrg ;; 1601ff7e0accSmrg mips*-*) 16022163f7f8Smrg os=elf 1603ff7e0accSmrg ;; 1604ff7e0accSmrg or32-*) 16052163f7f8Smrg os=coff 1606ff7e0accSmrg ;; 1607ff7e0accSmrg *-tti) # must be before sparc entry or we get the wrong os. 16082163f7f8Smrg os=sysv3 1609ff7e0accSmrg ;; 1610ff7e0accSmrg sparc-* | *-sun) 16112163f7f8Smrg os=sunos4.1.1 1612ff7e0accSmrg ;; 16130c91c449Smrg pru-*) 16142163f7f8Smrg os=elf 16150c91c449Smrg ;; 1616ff7e0accSmrg *-be) 16172163f7f8Smrg os=beos 1618ff7e0accSmrg ;; 1619ff7e0accSmrg *-ibm) 16202163f7f8Smrg os=aix 1621ff7e0accSmrg ;; 162205bee9bcSmrg *-knuth) 16232163f7f8Smrg os=mmixware 1624ff7e0accSmrg ;; 1625ff7e0accSmrg *-wec) 16262163f7f8Smrg os=proelf 1627ff7e0accSmrg ;; 1628ff7e0accSmrg *-winbond) 16292163f7f8Smrg os=proelf 1630ff7e0accSmrg ;; 1631ff7e0accSmrg *-oki) 16322163f7f8Smrg os=proelf 1633ff7e0accSmrg ;; 1634ff7e0accSmrg *-hp) 16352163f7f8Smrg os=hpux 1636ff7e0accSmrg ;; 1637ff7e0accSmrg *-hitachi) 16382163f7f8Smrg os=hiux 1639ff7e0accSmrg ;; 1640ff7e0accSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16412163f7f8Smrg os=sysv 1642ff7e0accSmrg ;; 1643ff7e0accSmrg *-cbm) 16442163f7f8Smrg os=amigaos 1645ff7e0accSmrg ;; 1646ff7e0accSmrg *-dg) 16472163f7f8Smrg os=dgux 1648ff7e0accSmrg ;; 1649ff7e0accSmrg *-dolphin) 16502163f7f8Smrg os=sysv3 1651ff7e0accSmrg ;; 1652ff7e0accSmrg m68k-ccur) 16532163f7f8Smrg os=rtu 1654ff7e0accSmrg ;; 1655ff7e0accSmrg m88k-omron*) 16562163f7f8Smrg os=luna 1657ff7e0accSmrg ;; 16580c91c449Smrg *-next) 16592163f7f8Smrg os=nextstep 1660ff7e0accSmrg ;; 1661ff7e0accSmrg *-sequent) 16622163f7f8Smrg os=ptx 1663ff7e0accSmrg ;; 1664ff7e0accSmrg *-crds) 16652163f7f8Smrg os=unos 1666ff7e0accSmrg ;; 1667ff7e0accSmrg *-ns) 16682163f7f8Smrg os=genix 1669ff7e0accSmrg ;; 1670ff7e0accSmrg i370-*) 16712163f7f8Smrg os=mvs 1672ff7e0accSmrg ;; 1673ff7e0accSmrg *-gould) 16742163f7f8Smrg os=sysv 1675ff7e0accSmrg ;; 1676ff7e0accSmrg *-highlevel) 16772163f7f8Smrg os=bsd 1678ff7e0accSmrg ;; 1679ff7e0accSmrg *-encore) 16802163f7f8Smrg os=bsd 1681ff7e0accSmrg ;; 1682ff7e0accSmrg *-sgi) 16832163f7f8Smrg os=irix 1684ff7e0accSmrg ;; 1685ff7e0accSmrg *-siemens) 16862163f7f8Smrg os=sysv4 1687ff7e0accSmrg ;; 1688ff7e0accSmrg *-masscomp) 16892163f7f8Smrg os=rtu 1690ff7e0accSmrg ;; 1691ff7e0accSmrg f30[01]-fujitsu | f700-fujitsu) 16922163f7f8Smrg os=uxpv 1693ff7e0accSmrg ;; 1694ff7e0accSmrg *-rom68k) 16952163f7f8Smrg os=coff 1696ff7e0accSmrg ;; 1697ff7e0accSmrg *-*bug) 16982163f7f8Smrg os=coff 1699ff7e0accSmrg ;; 1700ff7e0accSmrg *-apple) 17012163f7f8Smrg os=macos 1702ff7e0accSmrg ;; 1703ff7e0accSmrg *-atari*) 17042163f7f8Smrg os=mint 17052163f7f8Smrg ;; 17062163f7f8Smrg *-wrs) 17072163f7f8Smrg os=vxworks 1708ff7e0accSmrg ;; 1709ff7e0accSmrg *) 17102163f7f8Smrg os=none 1711ff7e0accSmrg ;; 1712ff7e0accSmrgesac 17132163f7f8Smrg 1714ff7e0accSmrgfi 1715ff7e0accSmrg 17162163f7f8Smrg# Now, validate our (potentially fixed-up) OS. 17172163f7f8Smrgcase $os in 17182163f7f8Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17192163f7f8Smrg musl* | newlib* | relibc* | uclibc*) 17202163f7f8Smrg ;; 17212163f7f8Smrg # Likewise for "kernel-abi" 17222163f7f8Smrg eabi* | gnueabi*) 17232163f7f8Smrg ;; 17242163f7f8Smrg # VxWorks passes extra cpu info in the 4th filed. 17252163f7f8Smrg simlinux | simwindows | spe) 17262163f7f8Smrg ;; 17272163f7f8Smrg # Now accept the basic system types. 17282163f7f8Smrg # The portable systems comes first. 17292163f7f8Smrg # Each alternative MUST end in a * to match a version number. 17302163f7f8Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17312163f7f8Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17322163f7f8Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17332163f7f8Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17342163f7f8Smrg | hiux* | abug | nacl* | netware* | windows* \ 17352163f7f8Smrg | os9* | macos* | osx* | ios* \ 17362163f7f8Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17372163f7f8Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17382163f7f8Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17392163f7f8Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17402163f7f8Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17412163f7f8Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17422163f7f8Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17432163f7f8Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17442163f7f8Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17452163f7f8Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17462163f7f8Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17472163f7f8Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17482163f7f8Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17492163f7f8Smrg | midipix* | mingw32* | mingw64* | mint* \ 17502163f7f8Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17512163f7f8Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17522163f7f8Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17532163f7f8Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17542163f7f8Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17552163f7f8Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17562163f7f8Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17572163f7f8Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17582163f7f8Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17592163f7f8Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17602163f7f8Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 17612163f7f8Smrg | fiwix* | mlibc* ) 17622163f7f8Smrg ;; 17632163f7f8Smrg # This one is extra strict with allowed versions 17642163f7f8Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17652163f7f8Smrg # Don't forget version if it is 3.2v4 or newer. 17662163f7f8Smrg ;; 17672163f7f8Smrg none) 17682163f7f8Smrg ;; 17692163f7f8Smrg kernel* ) 17702163f7f8Smrg # Restricted further below 17712163f7f8Smrg ;; 17722163f7f8Smrg *) 17732163f7f8Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17742163f7f8Smrg exit 1 17752163f7f8Smrg ;; 17762163f7f8Smrgesac 17772163f7f8Smrg 17782163f7f8Smrg# As a final step for OS-related things, validate the OS-kernel combination 17792163f7f8Smrg# (given a valid OS), if there is a kernel. 17802163f7f8Smrgcase $kernel-$os in 17812163f7f8Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17822163f7f8Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 17832163f7f8Smrg ;; 17842163f7f8Smrg uclinux-uclibc* ) 17852163f7f8Smrg ;; 17862163f7f8Smrg managarm-mlibc* | managarm-kernel* ) 17872163f7f8Smrg ;; 17882163f7f8Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 17892163f7f8Smrg # These are just libc implementations, not actual OSes, and thus 17902163f7f8Smrg # require a kernel. 17912163f7f8Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17922163f7f8Smrg exit 1 17932163f7f8Smrg ;; 17942163f7f8Smrg -kernel* ) 17952163f7f8Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 17962163f7f8Smrg exit 1 17972163f7f8Smrg ;; 17982163f7f8Smrg *-kernel* ) 17992163f7f8Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 18002163f7f8Smrg exit 1 18012163f7f8Smrg ;; 18022163f7f8Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 18032163f7f8Smrg ;; 18042163f7f8Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 18052163f7f8Smrg ;; 18062163f7f8Smrg nto-qnx*) 18072163f7f8Smrg ;; 18082163f7f8Smrg os2-emx) 18092163f7f8Smrg ;; 18102163f7f8Smrg *-eabi* | *-gnueabi*) 18112163f7f8Smrg ;; 18122163f7f8Smrg -*) 18132163f7f8Smrg # Blank kernel with real OS is always fine. 18142163f7f8Smrg ;; 18152163f7f8Smrg *-*) 18162163f7f8Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 18172163f7f8Smrg exit 1 18182163f7f8Smrg ;; 18192163f7f8Smrgesac 18202163f7f8Smrg 1821ff7e0accSmrg# Here we handle the case where we know the os, and the CPU type, but not the 1822ff7e0accSmrg# manufacturer. We pick the logical manufacturer. 18232163f7f8Smrgcase $vendor in 18242163f7f8Smrg unknown) 18252163f7f8Smrg case $cpu-$os in 18262163f7f8Smrg *-riscix*) 1827ff7e0accSmrg vendor=acorn 1828ff7e0accSmrg ;; 18292163f7f8Smrg *-sunos*) 1830ff7e0accSmrg vendor=sun 1831ff7e0accSmrg ;; 18322163f7f8Smrg *-cnk* | *-aix*) 1833ff7e0accSmrg vendor=ibm 1834ff7e0accSmrg ;; 18352163f7f8Smrg *-beos*) 1836ff7e0accSmrg vendor=be 1837ff7e0accSmrg ;; 18382163f7f8Smrg *-hpux*) 1839ff7e0accSmrg vendor=hp 1840ff7e0accSmrg ;; 18412163f7f8Smrg *-mpeix*) 1842ff7e0accSmrg vendor=hp 1843ff7e0accSmrg ;; 18442163f7f8Smrg *-hiux*) 1845ff7e0accSmrg vendor=hitachi 1846ff7e0accSmrg ;; 18472163f7f8Smrg *-unos*) 1848ff7e0accSmrg vendor=crds 1849ff7e0accSmrg ;; 18502163f7f8Smrg *-dgux*) 1851ff7e0accSmrg vendor=dg 1852ff7e0accSmrg ;; 18532163f7f8Smrg *-luna*) 1854ff7e0accSmrg vendor=omron 1855ff7e0accSmrg ;; 18562163f7f8Smrg *-genix*) 1857ff7e0accSmrg vendor=ns 1858ff7e0accSmrg ;; 18592163f7f8Smrg *-clix*) 18602163f7f8Smrg vendor=intergraph 18612163f7f8Smrg ;; 18622163f7f8Smrg *-mvs* | *-opened*) 18632163f7f8Smrg vendor=ibm 18642163f7f8Smrg ;; 18652163f7f8Smrg *-os400*) 1866ff7e0accSmrg vendor=ibm 1867ff7e0accSmrg ;; 18682163f7f8Smrg s390-* | s390x-*) 1869ff7e0accSmrg vendor=ibm 1870ff7e0accSmrg ;; 18712163f7f8Smrg *-ptx*) 1872ff7e0accSmrg vendor=sequent 1873ff7e0accSmrg ;; 18742163f7f8Smrg *-tpf*) 1875ff7e0accSmrg vendor=ibm 1876ff7e0accSmrg ;; 18772163f7f8Smrg *-vxsim* | *-vxworks* | *-windiss*) 1878ff7e0accSmrg vendor=wrs 1879ff7e0accSmrg ;; 18802163f7f8Smrg *-aux*) 1881ff7e0accSmrg vendor=apple 1882ff7e0accSmrg ;; 18832163f7f8Smrg *-hms*) 1884ff7e0accSmrg vendor=hitachi 1885ff7e0accSmrg ;; 18862163f7f8Smrg *-mpw* | *-macos*) 1887ff7e0accSmrg vendor=apple 1888ff7e0accSmrg ;; 18892163f7f8Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1890ff7e0accSmrg vendor=atari 1891ff7e0accSmrg ;; 18922163f7f8Smrg *-vos*) 1893ff7e0accSmrg vendor=stratus 1894ff7e0accSmrg ;; 1895ff7e0accSmrg esac 1896ff7e0accSmrg ;; 1897ff7e0accSmrgesac 1898ff7e0accSmrg 18992163f7f8Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1900ff7e0accSmrgexit 1901ff7e0accSmrg 1902ff7e0accSmrg# Local variables: 19032163f7f8Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1904ff7e0accSmrg# time-stamp-start: "timestamp='" 1905ff7e0accSmrg# time-stamp-format: "%:y-%02m-%02d" 1906ff7e0accSmrg# time-stamp-end: "'" 1907ff7e0accSmrg# End: 1908