13da084b3Smrg#! /bin/sh 23da084b3Smrg# Configuration validation subroutine script. 3da2777aaSmrg# Copyright 1992-2023 Free Software Foundation, Inc. 43da084b3Smrg 52a53b785Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 62a53b785Smrg 7da2777aaSmrgtimestamp='2023-01-21' 83da084b3Smrg 9e1c0d025Smrg# This file is free software; you can redistribute it and/or modify it 10e1c0d025Smrg# under the terms of the GNU General Public License as published by 1143d802faSmrg# the Free Software Foundation, either version 3 of the License, or 123da084b3Smrg# (at your option) any later version. 133da084b3Smrg# 14e1c0d025Smrg# This program is distributed in the hope that it will be useful, but 15e1c0d025Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16e1c0d025Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17e1c0d025Smrg# General Public License for more details. 183da084b3Smrg# 193da084b3Smrg# You should have received a copy of the GNU General Public License 2052fd71cdSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 213da084b3Smrg# 223da084b3Smrg# As a special exception to the GNU General Public License, if you 233da084b3Smrg# distribute this file as part of a program that contains a 243da084b3Smrg# configuration script generated by Autoconf, you may include it under 25e1c0d025Smrg# the same distribution terms that you use for the rest of that 26e1c0d025Smrg# program. This Exception is an additional permission under section 7 27e1c0d025Smrg# of the GNU General Public License, version 3 ("GPLv3"). 283da084b3Smrg 293da084b3Smrg 30e1c0d025Smrg# Please send patches to <config-patches@gnu.org>. 313da084b3Smrg# 323da084b3Smrg# Configuration subroutine to validate and canonicalize a configuration type. 333da084b3Smrg# Supply the specified configuration type as an argument. 343da084b3Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 353da084b3Smrg# Otherwise, we print the canonical config type on stdout and succeed. 363da084b3Smrg 3755acc8fcSmrg# You can get the latest version of this script from: 382a53b785Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 3955acc8fcSmrg 403da084b3Smrg# This file is supposed to be the same for all GNU packages 413da084b3Smrg# and recognize all the CPU types, system types and aliases 423da084b3Smrg# that are meaningful with *any* GNU software. 433da084b3Smrg# Each package is responsible for reporting which valid configurations 443da084b3Smrg# it does not support. The user should be able to distinguish 453da084b3Smrg# a failure to support a valid configuration from a meaningless 463da084b3Smrg# configuration. 473da084b3Smrg 483da084b3Smrg# The goal of this file is to map all the various variations of a given 493da084b3Smrg# machine specification into a single specification in the form: 503da084b3Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 513da084b3Smrg# or in some cases, the newer four-part form: 523da084b3Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 533da084b3Smrg# It is wrong to echo any other type of specification. 543da084b3Smrg 552a53b785Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 562a53b785Smrg# about features and limitations of the classic Bourne shell that were 572a53b785Smrg# superseded or lifted in POSIX. However, this script identifies a wide 582a53b785Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 592a53b785Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 602a53b785Smrg# have a pre-POSIX /bin/sh. 612a53b785Smrg 623da084b3Smrgme=`echo "$0" | sed -e 's,.*/,,'` 633da084b3Smrg 643da084b3Smrgusage="\ 6552fd71cdSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 663da084b3Smrg 673da084b3SmrgCanonicalize a configuration name. 683da084b3Smrg 6952fd71cdSmrgOptions: 703da084b3Smrg -h, --help print this help, then exit 713da084b3Smrg -t, --time-stamp print date of last modification, then exit 723da084b3Smrg -v, --version print version number, then exit 733da084b3Smrg 743da084b3SmrgReport bugs and patches to <config-patches@gnu.org>." 753da084b3Smrg 763da084b3Smrgversion="\ 773da084b3SmrgGNU config.sub ($timestamp) 783da084b3Smrg 79da2777aaSmrgCopyright 1992-2023 Free Software Foundation, Inc. 803da084b3Smrg 813da084b3SmrgThis is free software; see the source for copying conditions. There is NO 823da084b3Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 833da084b3Smrg 843da084b3Smrghelp=" 853da084b3SmrgTry \`$me --help' for more information." 863da084b3Smrg 873da084b3Smrg# Parse command line 883da084b3Smrgwhile test $# -gt 0 ; do 893da084b3Smrg case $1 in 903da084b3Smrg --time-stamp | --time* | -t ) 913da084b3Smrg echo "$timestamp" ; exit ;; 923da084b3Smrg --version | -v ) 933da084b3Smrg echo "$version" ; exit ;; 943da084b3Smrg --help | --h* | -h ) 953da084b3Smrg echo "$usage"; exit ;; 963da084b3Smrg -- ) # Stop option processing 973da084b3Smrg shift; break ;; 983da084b3Smrg - ) # Use stdin as input. 993da084b3Smrg break ;; 1003da084b3Smrg -* ) 1012a53b785Smrg echo "$me: invalid option $1$help" >&2 1023da084b3Smrg exit 1 ;; 1033da084b3Smrg 1043da084b3Smrg *local*) 1053da084b3Smrg # First pass through any local machine types. 10652fd71cdSmrg echo "$1" 1073da084b3Smrg exit ;; 1083da084b3Smrg 1093da084b3Smrg * ) 1103da084b3Smrg break ;; 1113da084b3Smrg esac 1123da084b3Smrgdone 1133da084b3Smrg 1143da084b3Smrgcase $# in 1153da084b3Smrg 0) echo "$me: missing argument$help" >&2 1163da084b3Smrg exit 1;; 1173da084b3Smrg 1) ;; 1183da084b3Smrg *) echo "$me: too many arguments$help" >&2 1193da084b3Smrg exit 1;; 1203da084b3Smrgesac 1213da084b3Smrg 1222a53b785Smrg# Split fields of configuration type 1232a53b785Smrg# shellcheck disable=SC2162 1242a53b785Smrgsaved_IFS=$IFS 1252a53b785SmrgIFS="-" read field1 field2 field3 field4 <<EOF 1262a53b785Smrg$1 1272a53b785SmrgEOF 1282a53b785SmrgIFS=$saved_IFS 1293da084b3Smrg 1302a53b785Smrg# Separate into logical components for further validation 1312a53b785Smrgcase $1 in 1322a53b785Smrg *-*-*-*-*) 1332a53b785Smrg echo Invalid configuration \`"$1"\': more than four components >&2 1342a53b785Smrg exit 1 135e1c0d025Smrg ;; 1362a53b785Smrg *-*-*-*) 1372a53b785Smrg basic_machine=$field1-$field2 1382a53b785Smrg basic_os=$field3-$field4 1393da084b3Smrg ;; 1402a53b785Smrg *-*-*) 1412a53b785Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1422a53b785Smrg # parts 1432a53b785Smrg maybe_os=$field2-$field3 1442a53b785Smrg case $maybe_os in 1452a53b785Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 1462a53b785Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1472a53b785Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14843d802faSmrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 1492a53b785Smrg basic_machine=$field1 1502a53b785Smrg basic_os=$maybe_os 1512a53b785Smrg ;; 1522a53b785Smrg android-linux) 1532a53b785Smrg basic_machine=$field1-unknown 1542a53b785Smrg basic_os=linux-android 1552a53b785Smrg ;; 1562a53b785Smrg *) 1572a53b785Smrg basic_machine=$field1-$field2 1582a53b785Smrg basic_os=$field3 1592a53b785Smrg ;; 1602a53b785Smrg esac 1613da084b3Smrg ;; 1622a53b785Smrg *-*) 1632a53b785Smrg # A lone config we happen to match not fitting any pattern 1642a53b785Smrg case $field1-$field2 in 1652a53b785Smrg decstation-3100) 1662a53b785Smrg basic_machine=mips-dec 1672a53b785Smrg basic_os= 1682a53b785Smrg ;; 1692a53b785Smrg *-*) 1702a53b785Smrg # Second component is usually, but not always the OS 1712a53b785Smrg case $field2 in 1722a53b785Smrg # Prevent following clause from handling this valid os 1732a53b785Smrg sun*os*) 1742a53b785Smrg basic_machine=$field1 1752a53b785Smrg basic_os=$field2 1762a53b785Smrg ;; 1772a53b785Smrg zephyr*) 1782a53b785Smrg basic_machine=$field1-unknown 1792a53b785Smrg basic_os=$field2 1802a53b785Smrg ;; 1812a53b785Smrg # Manufacturers 1822a53b785Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1832a53b785Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1842a53b785Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1852a53b785Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1862a53b785Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1872a53b785Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1882a53b785Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1892a53b785Smrg | microblaze* | sim | cisco \ 1902a53b785Smrg | oki | wec | wrs | winbond) 1912a53b785Smrg basic_machine=$field1-$field2 1922a53b785Smrg basic_os= 1932a53b785Smrg ;; 1942a53b785Smrg *) 1952a53b785Smrg basic_machine=$field1 1962a53b785Smrg basic_os=$field2 1972a53b785Smrg ;; 1982a53b785Smrg esac 1992a53b785Smrg ;; 2002a53b785Smrg esac 2013da084b3Smrg ;; 2022a53b785Smrg *) 2032a53b785Smrg # Convert single-component short-hands not valid as part of 2042a53b785Smrg # multi-component configurations. 2052a53b785Smrg case $field1 in 2062a53b785Smrg 386bsd) 2072a53b785Smrg basic_machine=i386-pc 2082a53b785Smrg basic_os=bsd 2092a53b785Smrg ;; 2102a53b785Smrg a29khif) 2112a53b785Smrg basic_machine=a29k-amd 2122a53b785Smrg basic_os=udi 2132a53b785Smrg ;; 2142a53b785Smrg adobe68k) 2152a53b785Smrg basic_machine=m68010-adobe 2162a53b785Smrg basic_os=scout 2172a53b785Smrg ;; 2182a53b785Smrg alliant) 2192a53b785Smrg basic_machine=fx80-alliant 2202a53b785Smrg basic_os= 2212a53b785Smrg ;; 2222a53b785Smrg altos | altos3068) 2232a53b785Smrg basic_machine=m68k-altos 2242a53b785Smrg basic_os= 2252a53b785Smrg ;; 2262a53b785Smrg am29k) 2272a53b785Smrg basic_machine=a29k-none 2282a53b785Smrg basic_os=bsd 2292a53b785Smrg ;; 2302a53b785Smrg amdahl) 2312a53b785Smrg basic_machine=580-amdahl 2322a53b785Smrg basic_os=sysv 2332a53b785Smrg ;; 2342a53b785Smrg amiga) 2352a53b785Smrg basic_machine=m68k-unknown 2362a53b785Smrg basic_os= 2372a53b785Smrg ;; 2382a53b785Smrg amigaos | amigados) 2392a53b785Smrg basic_machine=m68k-unknown 2402a53b785Smrg basic_os=amigaos 2412a53b785Smrg ;; 2422a53b785Smrg amigaunix | amix) 2432a53b785Smrg basic_machine=m68k-unknown 2442a53b785Smrg basic_os=sysv4 2452a53b785Smrg ;; 2462a53b785Smrg apollo68) 2472a53b785Smrg basic_machine=m68k-apollo 2482a53b785Smrg basic_os=sysv 2492a53b785Smrg ;; 2502a53b785Smrg apollo68bsd) 2512a53b785Smrg basic_machine=m68k-apollo 2522a53b785Smrg basic_os=bsd 2532a53b785Smrg ;; 2542a53b785Smrg aros) 2552a53b785Smrg basic_machine=i386-pc 2562a53b785Smrg basic_os=aros 2572a53b785Smrg ;; 2582a53b785Smrg aux) 2592a53b785Smrg basic_machine=m68k-apple 2602a53b785Smrg basic_os=aux 2612a53b785Smrg ;; 2622a53b785Smrg balance) 2632a53b785Smrg basic_machine=ns32k-sequent 2642a53b785Smrg basic_os=dynix 2652a53b785Smrg ;; 2662a53b785Smrg blackfin) 2672a53b785Smrg basic_machine=bfin-unknown 2682a53b785Smrg basic_os=linux 2692a53b785Smrg ;; 2702a53b785Smrg cegcc) 2712a53b785Smrg basic_machine=arm-unknown 2722a53b785Smrg basic_os=cegcc 2732a53b785Smrg ;; 2742a53b785Smrg convex-c1) 2752a53b785Smrg basic_machine=c1-convex 2762a53b785Smrg basic_os=bsd 2772a53b785Smrg ;; 2782a53b785Smrg convex-c2) 2792a53b785Smrg basic_machine=c2-convex 2802a53b785Smrg basic_os=bsd 2812a53b785Smrg ;; 2822a53b785Smrg convex-c32) 2832a53b785Smrg basic_machine=c32-convex 2842a53b785Smrg basic_os=bsd 2852a53b785Smrg ;; 2862a53b785Smrg convex-c34) 2872a53b785Smrg basic_machine=c34-convex 2882a53b785Smrg basic_os=bsd 2892a53b785Smrg ;; 2902a53b785Smrg convex-c38) 2912a53b785Smrg basic_machine=c38-convex 2922a53b785Smrg basic_os=bsd 2932a53b785Smrg ;; 2942a53b785Smrg cray) 2952a53b785Smrg basic_machine=j90-cray 2962a53b785Smrg basic_os=unicos 2972a53b785Smrg ;; 2982a53b785Smrg crds | unos) 2992a53b785Smrg basic_machine=m68k-crds 3002a53b785Smrg basic_os= 3012a53b785Smrg ;; 3022a53b785Smrg da30) 3032a53b785Smrg basic_machine=m68k-da30 3042a53b785Smrg basic_os= 3052a53b785Smrg ;; 3062a53b785Smrg decstation | pmax | pmin | dec3100 | decstatn) 3072a53b785Smrg basic_machine=mips-dec 3082a53b785Smrg basic_os= 3092a53b785Smrg ;; 3102a53b785Smrg delta88) 3112a53b785Smrg basic_machine=m88k-motorola 3122a53b785Smrg basic_os=sysv3 3132a53b785Smrg ;; 3142a53b785Smrg dicos) 3152a53b785Smrg basic_machine=i686-pc 3162a53b785Smrg basic_os=dicos 3172a53b785Smrg ;; 3182a53b785Smrg djgpp) 3192a53b785Smrg basic_machine=i586-pc 3202a53b785Smrg basic_os=msdosdjgpp 3212a53b785Smrg ;; 3222a53b785Smrg ebmon29k) 3232a53b785Smrg basic_machine=a29k-amd 3242a53b785Smrg basic_os=ebmon 3252a53b785Smrg ;; 3262a53b785Smrg es1800 | OSE68k | ose68k | ose | OSE) 3272a53b785Smrg basic_machine=m68k-ericsson 3282a53b785Smrg basic_os=ose 3292a53b785Smrg ;; 3302a53b785Smrg gmicro) 3312a53b785Smrg basic_machine=tron-gmicro 3322a53b785Smrg basic_os=sysv 3332a53b785Smrg ;; 3342a53b785Smrg go32) 3352a53b785Smrg basic_machine=i386-pc 3362a53b785Smrg basic_os=go32 3372a53b785Smrg ;; 3382a53b785Smrg h8300hms) 3392a53b785Smrg basic_machine=h8300-hitachi 3402a53b785Smrg basic_os=hms 3412a53b785Smrg ;; 3422a53b785Smrg h8300xray) 3432a53b785Smrg basic_machine=h8300-hitachi 3442a53b785Smrg basic_os=xray 3452a53b785Smrg ;; 3462a53b785Smrg h8500hms) 3472a53b785Smrg basic_machine=h8500-hitachi 3482a53b785Smrg basic_os=hms 3492a53b785Smrg ;; 3502a53b785Smrg harris) 3512a53b785Smrg basic_machine=m88k-harris 3522a53b785Smrg basic_os=sysv3 3532a53b785Smrg ;; 3542a53b785Smrg hp300 | hp300hpux) 3552a53b785Smrg basic_machine=m68k-hp 3562a53b785Smrg basic_os=hpux 3572a53b785Smrg ;; 3582a53b785Smrg hp300bsd) 3592a53b785Smrg basic_machine=m68k-hp 3602a53b785Smrg basic_os=bsd 3612a53b785Smrg ;; 3622a53b785Smrg hppaosf) 3632a53b785Smrg basic_machine=hppa1.1-hp 3642a53b785Smrg basic_os=osf 3652a53b785Smrg ;; 3662a53b785Smrg hppro) 3672a53b785Smrg basic_machine=hppa1.1-hp 3682a53b785Smrg basic_os=proelf 3692a53b785Smrg ;; 3702a53b785Smrg i386mach) 3712a53b785Smrg basic_machine=i386-mach 3722a53b785Smrg basic_os=mach 3732a53b785Smrg ;; 3742a53b785Smrg isi68 | isi) 3752a53b785Smrg basic_machine=m68k-isi 3762a53b785Smrg basic_os=sysv 3772a53b785Smrg ;; 3782a53b785Smrg m68knommu) 3792a53b785Smrg basic_machine=m68k-unknown 3802a53b785Smrg basic_os=linux 3812a53b785Smrg ;; 3822a53b785Smrg magnum | m3230) 3832a53b785Smrg basic_machine=mips-mips 3842a53b785Smrg basic_os=sysv 3852a53b785Smrg ;; 3862a53b785Smrg merlin) 3872a53b785Smrg basic_machine=ns32k-utek 3882a53b785Smrg basic_os=sysv 3892a53b785Smrg ;; 3902a53b785Smrg mingw64) 3912a53b785Smrg basic_machine=x86_64-pc 3922a53b785Smrg basic_os=mingw64 3932a53b785Smrg ;; 3942a53b785Smrg mingw32) 3952a53b785Smrg basic_machine=i686-pc 3962a53b785Smrg basic_os=mingw32 3972a53b785Smrg ;; 3982a53b785Smrg mingw32ce) 3992a53b785Smrg basic_machine=arm-unknown 4002a53b785Smrg basic_os=mingw32ce 4012a53b785Smrg ;; 4022a53b785Smrg monitor) 4032a53b785Smrg basic_machine=m68k-rom68k 4042a53b785Smrg basic_os=coff 4052a53b785Smrg ;; 4062a53b785Smrg morphos) 4072a53b785Smrg basic_machine=powerpc-unknown 4082a53b785Smrg basic_os=morphos 4092a53b785Smrg ;; 4102a53b785Smrg moxiebox) 4112a53b785Smrg basic_machine=moxie-unknown 4122a53b785Smrg basic_os=moxiebox 4132a53b785Smrg ;; 4142a53b785Smrg msdos) 4152a53b785Smrg basic_machine=i386-pc 4162a53b785Smrg basic_os=msdos 4172a53b785Smrg ;; 4182a53b785Smrg msys) 4192a53b785Smrg basic_machine=i686-pc 4202a53b785Smrg basic_os=msys 4212a53b785Smrg ;; 4222a53b785Smrg mvs) 4232a53b785Smrg basic_machine=i370-ibm 4242a53b785Smrg basic_os=mvs 4252a53b785Smrg ;; 4262a53b785Smrg nacl) 4272a53b785Smrg basic_machine=le32-unknown 4282a53b785Smrg basic_os=nacl 4292a53b785Smrg ;; 4302a53b785Smrg ncr3000) 4312a53b785Smrg basic_machine=i486-ncr 4322a53b785Smrg basic_os=sysv4 4332a53b785Smrg ;; 4342a53b785Smrg netbsd386) 4352a53b785Smrg basic_machine=i386-pc 4362a53b785Smrg basic_os=netbsd 4372a53b785Smrg ;; 4382a53b785Smrg netwinder) 4392a53b785Smrg basic_machine=armv4l-rebel 4402a53b785Smrg basic_os=linux 4412a53b785Smrg ;; 4422a53b785Smrg news | news700 | news800 | news900) 4432a53b785Smrg basic_machine=m68k-sony 4442a53b785Smrg basic_os=newsos 4452a53b785Smrg ;; 4462a53b785Smrg news1000) 4472a53b785Smrg basic_machine=m68030-sony 4482a53b785Smrg basic_os=newsos 4492a53b785Smrg ;; 4502a53b785Smrg necv70) 4512a53b785Smrg basic_machine=v70-nec 4522a53b785Smrg basic_os=sysv 4532a53b785Smrg ;; 4542a53b785Smrg nh3000) 4552a53b785Smrg basic_machine=m68k-harris 4562a53b785Smrg basic_os=cxux 4572a53b785Smrg ;; 4582a53b785Smrg nh[45]000) 4592a53b785Smrg basic_machine=m88k-harris 4602a53b785Smrg basic_os=cxux 4612a53b785Smrg ;; 4622a53b785Smrg nindy960) 4632a53b785Smrg basic_machine=i960-intel 4642a53b785Smrg basic_os=nindy 4652a53b785Smrg ;; 4662a53b785Smrg mon960) 4672a53b785Smrg basic_machine=i960-intel 4682a53b785Smrg basic_os=mon960 4692a53b785Smrg ;; 4702a53b785Smrg nonstopux) 4712a53b785Smrg basic_machine=mips-compaq 4722a53b785Smrg basic_os=nonstopux 4732a53b785Smrg ;; 4742a53b785Smrg os400) 4752a53b785Smrg basic_machine=powerpc-ibm 4762a53b785Smrg basic_os=os400 4772a53b785Smrg ;; 4782a53b785Smrg OSE68000 | ose68000) 4792a53b785Smrg basic_machine=m68000-ericsson 4802a53b785Smrg basic_os=ose 4812a53b785Smrg ;; 4822a53b785Smrg os68k) 4832a53b785Smrg basic_machine=m68k-none 4842a53b785Smrg basic_os=os68k 4852a53b785Smrg ;; 4862a53b785Smrg paragon) 4872a53b785Smrg basic_machine=i860-intel 4882a53b785Smrg basic_os=osf 4892a53b785Smrg ;; 4902a53b785Smrg parisc) 4912a53b785Smrg basic_machine=hppa-unknown 4922a53b785Smrg basic_os=linux 4932a53b785Smrg ;; 4942a53b785Smrg psp) 4952a53b785Smrg basic_machine=mipsallegrexel-sony 4962a53b785Smrg basic_os=psp 4972a53b785Smrg ;; 4982a53b785Smrg pw32) 4992a53b785Smrg basic_machine=i586-unknown 5002a53b785Smrg basic_os=pw32 5012a53b785Smrg ;; 5022a53b785Smrg rdos | rdos64) 5032a53b785Smrg basic_machine=x86_64-pc 5042a53b785Smrg basic_os=rdos 5052a53b785Smrg ;; 5062a53b785Smrg rdos32) 5072a53b785Smrg basic_machine=i386-pc 5082a53b785Smrg basic_os=rdos 5092a53b785Smrg ;; 5102a53b785Smrg rom68k) 5112a53b785Smrg basic_machine=m68k-rom68k 5122a53b785Smrg basic_os=coff 5132a53b785Smrg ;; 5142a53b785Smrg sa29200) 5152a53b785Smrg basic_machine=a29k-amd 5162a53b785Smrg basic_os=udi 5172a53b785Smrg ;; 5182a53b785Smrg sei) 5192a53b785Smrg basic_machine=mips-sei 5202a53b785Smrg basic_os=seiux 5212a53b785Smrg ;; 5222a53b785Smrg sequent) 5232a53b785Smrg basic_machine=i386-sequent 5242a53b785Smrg basic_os= 5252a53b785Smrg ;; 5262a53b785Smrg sps7) 5272a53b785Smrg basic_machine=m68k-bull 5282a53b785Smrg basic_os=sysv2 5292a53b785Smrg ;; 5302a53b785Smrg st2000) 5312a53b785Smrg basic_machine=m68k-tandem 5322a53b785Smrg basic_os= 5332a53b785Smrg ;; 5342a53b785Smrg stratus) 5352a53b785Smrg basic_machine=i860-stratus 5362a53b785Smrg basic_os=sysv4 5372a53b785Smrg ;; 5382a53b785Smrg sun2) 5392a53b785Smrg basic_machine=m68000-sun 5402a53b785Smrg basic_os= 5412a53b785Smrg ;; 5422a53b785Smrg sun2os3) 5432a53b785Smrg basic_machine=m68000-sun 5442a53b785Smrg basic_os=sunos3 5452a53b785Smrg ;; 5462a53b785Smrg sun2os4) 5472a53b785Smrg basic_machine=m68000-sun 5482a53b785Smrg basic_os=sunos4 5492a53b785Smrg ;; 5502a53b785Smrg sun3) 5512a53b785Smrg basic_machine=m68k-sun 5522a53b785Smrg basic_os= 5532a53b785Smrg ;; 5542a53b785Smrg sun3os3) 5552a53b785Smrg basic_machine=m68k-sun 5562a53b785Smrg basic_os=sunos3 5572a53b785Smrg ;; 5582a53b785Smrg sun3os4) 5592a53b785Smrg basic_machine=m68k-sun 5602a53b785Smrg basic_os=sunos4 5612a53b785Smrg ;; 5622a53b785Smrg sun4) 5632a53b785Smrg basic_machine=sparc-sun 5642a53b785Smrg basic_os= 5652a53b785Smrg ;; 5662a53b785Smrg sun4os3) 5672a53b785Smrg basic_machine=sparc-sun 5682a53b785Smrg basic_os=sunos3 5692a53b785Smrg ;; 5702a53b785Smrg sun4os4) 5712a53b785Smrg basic_machine=sparc-sun 5722a53b785Smrg basic_os=sunos4 5732a53b785Smrg ;; 5742a53b785Smrg sun4sol2) 5752a53b785Smrg basic_machine=sparc-sun 5762a53b785Smrg basic_os=solaris2 5772a53b785Smrg ;; 5782a53b785Smrg sun386 | sun386i | roadrunner) 5792a53b785Smrg basic_machine=i386-sun 5802a53b785Smrg basic_os= 5812a53b785Smrg ;; 5822a53b785Smrg sv1) 5832a53b785Smrg basic_machine=sv1-cray 5842a53b785Smrg basic_os=unicos 5852a53b785Smrg ;; 5862a53b785Smrg symmetry) 5872a53b785Smrg basic_machine=i386-sequent 5882a53b785Smrg basic_os=dynix 5892a53b785Smrg ;; 5902a53b785Smrg t3e) 5912a53b785Smrg basic_machine=alphaev5-cray 5922a53b785Smrg basic_os=unicos 5932a53b785Smrg ;; 5942a53b785Smrg t90) 5952a53b785Smrg basic_machine=t90-cray 5962a53b785Smrg basic_os=unicos 5972a53b785Smrg ;; 5982a53b785Smrg toad1) 5992a53b785Smrg basic_machine=pdp10-xkl 6002a53b785Smrg basic_os=tops20 6012a53b785Smrg ;; 6022a53b785Smrg tpf) 6032a53b785Smrg basic_machine=s390x-ibm 6042a53b785Smrg basic_os=tpf 6052a53b785Smrg ;; 6062a53b785Smrg udi29k) 6072a53b785Smrg basic_machine=a29k-amd 6082a53b785Smrg basic_os=udi 6092a53b785Smrg ;; 6102a53b785Smrg ultra3) 6112a53b785Smrg basic_machine=a29k-nyu 6122a53b785Smrg basic_os=sym1 6132a53b785Smrg ;; 6142a53b785Smrg v810 | necv810) 6152a53b785Smrg basic_machine=v810-nec 6162a53b785Smrg basic_os=none 6172a53b785Smrg ;; 6182a53b785Smrg vaxv) 6192a53b785Smrg basic_machine=vax-dec 6202a53b785Smrg basic_os=sysv 6212a53b785Smrg ;; 6222a53b785Smrg vms) 6232a53b785Smrg basic_machine=vax-dec 6242a53b785Smrg basic_os=vms 6252a53b785Smrg ;; 6262a53b785Smrg vsta) 6272a53b785Smrg basic_machine=i386-pc 6282a53b785Smrg basic_os=vsta 6292a53b785Smrg ;; 6302a53b785Smrg vxworks960) 6312a53b785Smrg basic_machine=i960-wrs 6322a53b785Smrg basic_os=vxworks 6332a53b785Smrg ;; 6342a53b785Smrg vxworks68) 6352a53b785Smrg basic_machine=m68k-wrs 6362a53b785Smrg basic_os=vxworks 6372a53b785Smrg ;; 6382a53b785Smrg vxworks29k) 6392a53b785Smrg basic_machine=a29k-wrs 6402a53b785Smrg basic_os=vxworks 6412a53b785Smrg ;; 6422a53b785Smrg xbox) 6432a53b785Smrg basic_machine=i686-pc 6442a53b785Smrg basic_os=mingw32 6452a53b785Smrg ;; 6462a53b785Smrg ymp) 6472a53b785Smrg basic_machine=ymp-cray 6482a53b785Smrg basic_os=unicos 6492a53b785Smrg ;; 6502a53b785Smrg *) 6512a53b785Smrg basic_machine=$1 6522a53b785Smrg basic_os= 6532a53b785Smrg ;; 6542a53b785Smrg esac 6553da084b3Smrg ;; 6563da084b3Smrgesac 6573da084b3Smrg 6582a53b785Smrg# Decode 1-component or ad-hoc basic machines 6593da084b3Smrgcase $basic_machine in 6602a53b785Smrg # Here we handle the default manufacturer of certain CPU types. It is in 6612a53b785Smrg # some cases the only manufacturer, in others, it is the most popular. 6622a53b785Smrg w89k) 6632a53b785Smrg cpu=hppa1.1 6642a53b785Smrg vendor=winbond 665e1c0d025Smrg ;; 6662a53b785Smrg op50n) 6672a53b785Smrg cpu=hppa1.1 6682a53b785Smrg vendor=oki 6693da084b3Smrg ;; 6702a53b785Smrg op60c) 6712a53b785Smrg cpu=hppa1.1 6722a53b785Smrg vendor=oki 6733da084b3Smrg ;; 6742a53b785Smrg ibm*) 6752a53b785Smrg cpu=i370 6762a53b785Smrg vendor=ibm 6773da084b3Smrg ;; 6782a53b785Smrg orion105) 6792a53b785Smrg cpu=clipper 6802a53b785Smrg vendor=highlevel 681e1c0d025Smrg ;; 6822a53b785Smrg mac | mpw | mac-mpw) 6832a53b785Smrg cpu=m68k 6842a53b785Smrg vendor=apple 68548c85eb7Smrg ;; 6862a53b785Smrg pmac | pmac-mpw) 6872a53b785Smrg cpu=powerpc 6882a53b785Smrg vendor=apple 68948c85eb7Smrg ;; 69048c85eb7Smrg 6913da084b3Smrg # Recognize the various machine names and aliases which stand 6923da084b3Smrg # for a CPU type and a company and sometimes even an OS. 6933da084b3Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6942a53b785Smrg cpu=m68000 6952a53b785Smrg vendor=att 6963da084b3Smrg ;; 6973da084b3Smrg 3b*) 6982a53b785Smrg cpu=we32k 6992a53b785Smrg vendor=att 700d63fdb69Smrg ;; 70155acc8fcSmrg bluegene*) 7022a53b785Smrg cpu=powerpc 7032a53b785Smrg vendor=ibm 7042a53b785Smrg basic_os=cnk 7053da084b3Smrg ;; 7063da084b3Smrg decsystem10* | dec10*) 7072a53b785Smrg cpu=pdp10 7082a53b785Smrg vendor=dec 7092a53b785Smrg basic_os=tops10 7103da084b3Smrg ;; 7113da084b3Smrg decsystem20* | dec20*) 7122a53b785Smrg cpu=pdp10 7132a53b785Smrg vendor=dec 7142a53b785Smrg basic_os=tops20 7153da084b3Smrg ;; 7163da084b3Smrg delta | 3300 | motorola-3300 | motorola-delta \ 7173da084b3Smrg | 3300-motorola | delta-motorola) 7182a53b785Smrg cpu=m68k 7192a53b785Smrg vendor=motorola 7203da084b3Smrg ;; 72152fd71cdSmrg dpx2*) 7222a53b785Smrg cpu=m68k 7232a53b785Smrg vendor=bull 7242a53b785Smrg basic_os=sysv3 7253da084b3Smrg ;; 7263da084b3Smrg encore | umax | mmax) 7272a53b785Smrg cpu=ns32k 7282a53b785Smrg vendor=encore 7293da084b3Smrg ;; 7302a53b785Smrg elxsi) 7312a53b785Smrg cpu=elxsi 7322a53b785Smrg vendor=elxsi 7332a53b785Smrg basic_os=${basic_os:-bsd} 7343da084b3Smrg ;; 7353da084b3Smrg fx2800) 7362a53b785Smrg cpu=i860 7372a53b785Smrg vendor=alliant 7383da084b3Smrg ;; 7393da084b3Smrg genix) 7402a53b785Smrg cpu=ns32k 7412a53b785Smrg vendor=ns 7423da084b3Smrg ;; 7433da084b3Smrg h3050r* | hiux*) 7442a53b785Smrg cpu=hppa1.1 7452a53b785Smrg vendor=hitachi 7462a53b785Smrg basic_os=hiuxwe2 7473da084b3Smrg ;; 7483da084b3Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7492a53b785Smrg cpu=hppa1.0 7502a53b785Smrg vendor=hp 7513da084b3Smrg ;; 7523da084b3Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7532a53b785Smrg cpu=m68000 7542a53b785Smrg vendor=hp 7553da084b3Smrg ;; 7563da084b3Smrg hp9k3[2-9][0-9]) 7572a53b785Smrg cpu=m68k 7582a53b785Smrg vendor=hp 7593da084b3Smrg ;; 7603da084b3Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7612a53b785Smrg cpu=hppa1.0 7622a53b785Smrg vendor=hp 7633da084b3Smrg ;; 7643da084b3Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7652a53b785Smrg cpu=hppa1.1 7662a53b785Smrg vendor=hp 7673da084b3Smrg ;; 7683da084b3Smrg hp9k78[0-9] | hp78[0-9]) 7693da084b3Smrg # FIXME: really hppa2.0-hp 7702a53b785Smrg cpu=hppa1.1 7712a53b785Smrg vendor=hp 7723da084b3Smrg ;; 7733da084b3Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7743da084b3Smrg # FIXME: really hppa2.0-hp 7752a53b785Smrg cpu=hppa1.1 7762a53b785Smrg vendor=hp 7773da084b3Smrg ;; 7783da084b3Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7792a53b785Smrg cpu=hppa1.1 7802a53b785Smrg vendor=hp 7813da084b3Smrg ;; 7823da084b3Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7832a53b785Smrg cpu=hppa1.0 7842a53b785Smrg vendor=hp 7853da084b3Smrg ;; 7863da084b3Smrg i*86v32) 7872a53b785Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7882a53b785Smrg vendor=pc 7892a53b785Smrg basic_os=sysv32 7903da084b3Smrg ;; 7913da084b3Smrg i*86v4*) 7922a53b785Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7932a53b785Smrg vendor=pc 7942a53b785Smrg basic_os=sysv4 7953da084b3Smrg ;; 7963da084b3Smrg i*86v) 7972a53b785Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7982a53b785Smrg vendor=pc 7992a53b785Smrg basic_os=sysv 8003da084b3Smrg ;; 8013da084b3Smrg i*86sol2) 8022a53b785Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8032a53b785Smrg vendor=pc 8042a53b785Smrg basic_os=solaris2 8053da084b3Smrg ;; 8062a53b785Smrg j90 | j90-cray) 8072a53b785Smrg cpu=j90 8082a53b785Smrg vendor=cray 8092a53b785Smrg basic_os=${basic_os:-unicos} 8103da084b3Smrg ;; 8113da084b3Smrg iris | iris4d) 8122a53b785Smrg cpu=mips 8132a53b785Smrg vendor=sgi 8142a53b785Smrg case $basic_os in 8152a53b785Smrg irix*) 8163da084b3Smrg ;; 8173da084b3Smrg *) 8182a53b785Smrg basic_os=irix4 8193da084b3Smrg ;; 8203da084b3Smrg esac 8213da084b3Smrg ;; 8223da084b3Smrg miniframe) 8232a53b785Smrg cpu=m68000 8242a53b785Smrg vendor=convergent 8253da084b3Smrg ;; 8262a53b785Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8272a53b785Smrg cpu=m68k 8282a53b785Smrg vendor=atari 8292a53b785Smrg basic_os=mint 8303da084b3Smrg ;; 8313da084b3Smrg news-3600 | risc-news) 8322a53b785Smrg cpu=mips 8332a53b785Smrg vendor=sony 8342a53b785Smrg basic_os=newsos 8353da084b3Smrg ;; 83652fd71cdSmrg next | m*-next) 8372a53b785Smrg cpu=m68k 8382a53b785Smrg vendor=next 8392a53b785Smrg case $basic_os in 8402a53b785Smrg openstep*) 8412a53b785Smrg ;; 8422a53b785Smrg nextstep*) 8433da084b3Smrg ;; 8442a53b785Smrg ns2*) 8452a53b785Smrg basic_os=nextstep2 8463da084b3Smrg ;; 8473da084b3Smrg *) 8482a53b785Smrg basic_os=nextstep3 8493da084b3Smrg ;; 8503da084b3Smrg esac 8513da084b3Smrg ;; 8523da084b3Smrg np1) 8532a53b785Smrg cpu=np1 8542a53b785Smrg vendor=gould 85552fd71cdSmrg ;; 8563da084b3Smrg op50n-* | op60c-*) 8572a53b785Smrg cpu=hppa1.1 8582a53b785Smrg vendor=oki 8592a53b785Smrg basic_os=proelf 8603da084b3Smrg ;; 8613da084b3Smrg pa-hitachi) 8622a53b785Smrg cpu=hppa1.1 8632a53b785Smrg vendor=hitachi 8642a53b785Smrg basic_os=hiuxwe2 865d63fdb69Smrg ;; 8663da084b3Smrg pbd) 8672a53b785Smrg cpu=sparc 8682a53b785Smrg vendor=tti 8693da084b3Smrg ;; 8703da084b3Smrg pbb) 8712a53b785Smrg cpu=m68k 8722a53b785Smrg vendor=tti 8733da084b3Smrg ;; 8742a53b785Smrg pc532) 8752a53b785Smrg cpu=ns32k 8762a53b785Smrg vendor=pc532 8773da084b3Smrg ;; 8783da084b3Smrg pn) 8792a53b785Smrg cpu=pn 8802a53b785Smrg vendor=gould 8813da084b3Smrg ;; 8822a53b785Smrg power) 8832a53b785Smrg cpu=power 8842a53b785Smrg vendor=ibm 8853da084b3Smrg ;; 8862a53b785Smrg ps2) 8872a53b785Smrg cpu=i386 8882a53b785Smrg vendor=ibm 8893da084b3Smrg ;; 8902a53b785Smrg rm[46]00) 8912a53b785Smrg cpu=mips 8922a53b785Smrg vendor=siemens 8933da084b3Smrg ;; 8942a53b785Smrg rtpc | rtpc-*) 8952a53b785Smrg cpu=romp 8962a53b785Smrg vendor=ibm 8973da084b3Smrg ;; 8982a53b785Smrg sde) 8992a53b785Smrg cpu=mipsisa32 9002a53b785Smrg vendor=sde 9012a53b785Smrg basic_os=${basic_os:-elf} 9023da084b3Smrg ;; 9032a53b785Smrg simso-wrs) 9042a53b785Smrg cpu=sparclite 9052a53b785Smrg vendor=wrs 9062a53b785Smrg basic_os=vxworks 9073da084b3Smrg ;; 9082a53b785Smrg tower | tower-32) 9092a53b785Smrg cpu=m68k 9102a53b785Smrg vendor=ncr 9113da084b3Smrg ;; 9122a53b785Smrg vpp*|vx|vx-*) 9132a53b785Smrg cpu=f301 9142a53b785Smrg vendor=fujitsu 915e1c0d025Smrg ;; 9162a53b785Smrg w65) 9172a53b785Smrg cpu=w65 9182a53b785Smrg vendor=wdc 9193da084b3Smrg ;; 9202a53b785Smrg w89k-*) 9212a53b785Smrg cpu=hppa1.1 9222a53b785Smrg vendor=winbond 9232a53b785Smrg basic_os=proelf 9243da084b3Smrg ;; 9252a53b785Smrg none) 9262a53b785Smrg cpu=none 9272a53b785Smrg vendor=none 9283da084b3Smrg ;; 9292a53b785Smrg leon|leon[3-9]) 9302a53b785Smrg cpu=sparc 9312a53b785Smrg vendor=$basic_machine 9323da084b3Smrg ;; 9332a53b785Smrg leon-*|leon[3-9]-*) 9342a53b785Smrg cpu=sparc 9352a53b785Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9363da084b3Smrg ;; 9372a53b785Smrg 9382a53b785Smrg *-*) 9392a53b785Smrg # shellcheck disable=SC2162 9402a53b785Smrg saved_IFS=$IFS 9412a53b785Smrg IFS="-" read cpu vendor <<EOF 9422a53b785Smrg$basic_machine 9432a53b785SmrgEOF 9442a53b785Smrg IFS=$saved_IFS 9453da084b3Smrg ;; 9462a53b785Smrg # We use `pc' rather than `unknown' 9472a53b785Smrg # because (1) that's what they normally are, and 9482a53b785Smrg # (2) the word "unknown" tends to confuse beginning users. 9492a53b785Smrg i*86 | x86_64) 9502a53b785Smrg cpu=$basic_machine 9512a53b785Smrg vendor=pc 9523da084b3Smrg ;; 9532a53b785Smrg # These rules are duplicated from below for sake of the special case above; 9542a53b785Smrg # i.e. things that normalized to x86 arches should also default to "pc" 9552a53b785Smrg pc98) 9562a53b785Smrg cpu=i386 9572a53b785Smrg vendor=pc 9583da084b3Smrg ;; 9592a53b785Smrg x64 | amd64) 9602a53b785Smrg cpu=x86_64 9612a53b785Smrg vendor=pc 9623da084b3Smrg ;; 9632a53b785Smrg # Recognize the basic CPU types without company name. 9642a53b785Smrg *) 9652a53b785Smrg cpu=$basic_machine 9662a53b785Smrg vendor=unknown 967d63fdb69Smrg ;; 9682a53b785Smrgesac 9692a53b785Smrg 9702a53b785Smrgunset -v basic_machine 9712a53b785Smrg 9722a53b785Smrg# Decode basic machines in the full and proper CPU-Company form. 9732a53b785Smrgcase $cpu-$vendor in 9742a53b785Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9752a53b785Smrg # some cases the only manufacturer, in others, it is the most popular. 9762a53b785Smrg craynv-unknown) 9772a53b785Smrg vendor=cray 9782a53b785Smrg basic_os=${basic_os:-unicosmp} 9793da084b3Smrg ;; 9802a53b785Smrg c90-unknown | c90-cray) 9812a53b785Smrg vendor=cray 9822a53b785Smrg basic_os=${Basic_os:-unicos} 9833da084b3Smrg ;; 9842a53b785Smrg fx80-unknown) 9852a53b785Smrg vendor=alliant 986d63fdb69Smrg ;; 9872a53b785Smrg romp-unknown) 9882a53b785Smrg vendor=ibm 9893da084b3Smrg ;; 9902a53b785Smrg mmix-unknown) 9912a53b785Smrg vendor=knuth 9923da084b3Smrg ;; 9932a53b785Smrg microblaze-unknown | microblazeel-unknown) 9942a53b785Smrg vendor=xilinx 9953da084b3Smrg ;; 9962a53b785Smrg rs6000-unknown) 9972a53b785Smrg vendor=ibm 9983da084b3Smrg ;; 9992a53b785Smrg vax-unknown) 10002a53b785Smrg vendor=dec 10013da084b3Smrg ;; 10022a53b785Smrg pdp11-unknown) 10032a53b785Smrg vendor=dec 100448c85eb7Smrg ;; 10052a53b785Smrg we32k-unknown) 10062a53b785Smrg vendor=att 10073da084b3Smrg ;; 10082a53b785Smrg cydra-unknown) 10092a53b785Smrg vendor=cydrome 10103da084b3Smrg ;; 10112a53b785Smrg i370-ibm*) 10122a53b785Smrg vendor=ibm 10133da084b3Smrg ;; 10142a53b785Smrg orion-unknown) 10152a53b785Smrg vendor=highlevel 10163da084b3Smrg ;; 10172a53b785Smrg xps-unknown | xps100-unknown) 10182a53b785Smrg cpu=xps100 10192a53b785Smrg vendor=honeywell 10203da084b3Smrg ;; 10212a53b785Smrg 10222a53b785Smrg # Here we normalize CPU types with a missing or matching vendor 102343d802faSmrg armh-unknown | armh-alt) 102443d802faSmrg cpu=armv7l 102543d802faSmrg vendor=alt 102643d802faSmrg basic_os=${basic_os:-linux-gnueabihf} 102743d802faSmrg ;; 10282a53b785Smrg dpx20-unknown | dpx20-bull) 10292a53b785Smrg cpu=rs6000 10302a53b785Smrg vendor=bull 10312a53b785Smrg basic_os=${basic_os:-bosx} 10323da084b3Smrg ;; 10332a53b785Smrg 10342a53b785Smrg # Here we normalize CPU types irrespective of the vendor 10352a53b785Smrg amd64-*) 10362a53b785Smrg cpu=x86_64 10373da084b3Smrg ;; 10382a53b785Smrg blackfin-*) 10392a53b785Smrg cpu=bfin 10402a53b785Smrg basic_os=linux 10413da084b3Smrg ;; 10422a53b785Smrg c54x-*) 10432a53b785Smrg cpu=tic54x 10443da084b3Smrg ;; 10452a53b785Smrg c55x-*) 10462a53b785Smrg cpu=tic55x 10473da084b3Smrg ;; 10482a53b785Smrg c6x-*) 10492a53b785Smrg cpu=tic6x 10503da084b3Smrg ;; 10512a53b785Smrg e500v[12]-*) 10522a53b785Smrg cpu=powerpc 10532a53b785Smrg basic_os=${basic_os}"spe" 10543da084b3Smrg ;; 10552a53b785Smrg mips3*-*) 10562a53b785Smrg cpu=mips64 10573da084b3Smrg ;; 10582a53b785Smrg ms1-*) 10592a53b785Smrg cpu=mt 10603da084b3Smrg ;; 10612a53b785Smrg m68knommu-*) 10622a53b785Smrg cpu=m68k 10632a53b785Smrg basic_os=linux 10643da084b3Smrg ;; 10652a53b785Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10662a53b785Smrg cpu=s12z 1067d63fdb69Smrg ;; 10682a53b785Smrg openrisc-*) 10692a53b785Smrg cpu=or32 10703da084b3Smrg ;; 10712a53b785Smrg parisc-*) 10722a53b785Smrg cpu=hppa 10732a53b785Smrg basic_os=linux 10743da084b3Smrg ;; 10752a53b785Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10762a53b785Smrg cpu=i586 10773da084b3Smrg ;; 1078da2777aaSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 10792a53b785Smrg cpu=i686 10803da084b3Smrg ;; 10812a53b785Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10822a53b785Smrg cpu=i686 10833da084b3Smrg ;; 10842a53b785Smrg pentium4-*) 10852a53b785Smrg cpu=i786 10863da084b3Smrg ;; 10872a53b785Smrg pc98-*) 10882a53b785Smrg cpu=i386 10893da084b3Smrg ;; 10902a53b785Smrg ppc-* | ppcbe-*) 10912a53b785Smrg cpu=powerpc 10923da084b3Smrg ;; 10932a53b785Smrg ppcle-* | powerpclittle-*) 10942a53b785Smrg cpu=powerpcle 10953da084b3Smrg ;; 10962a53b785Smrg ppc64-*) 10972a53b785Smrg cpu=powerpc64 10983da084b3Smrg ;; 10992a53b785Smrg ppc64le-* | powerpc64little-*) 11002a53b785Smrg cpu=powerpc64le 11013da084b3Smrg ;; 11022a53b785Smrg sb1-*) 11032a53b785Smrg cpu=mipsisa64sb1 11043da084b3Smrg ;; 11052a53b785Smrg sb1el-*) 11062a53b785Smrg cpu=mipsisa64sb1el 11073da084b3Smrg ;; 11082a53b785Smrg sh5e[lb]-*) 11092a53b785Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11103da084b3Smrg ;; 11112a53b785Smrg spur-*) 11122a53b785Smrg cpu=spur 11133da084b3Smrg ;; 11142a53b785Smrg strongarm-* | thumb-*) 11152a53b785Smrg cpu=arm 11163da084b3Smrg ;; 11172a53b785Smrg tx39-*) 11182a53b785Smrg cpu=mipstx39 111952fd71cdSmrg ;; 11202a53b785Smrg tx39el-*) 11212a53b785Smrg cpu=mipstx39el 11223da084b3Smrg ;; 11232a53b785Smrg x64-*) 11242a53b785Smrg cpu=x86_64 11253da084b3Smrg ;; 112648c85eb7Smrg xscale-* | xscalee[bl]-*) 11272a53b785Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11283da084b3Smrg ;; 112943d802faSmrg arm64-* | aarch64le-*) 11302a53b785Smrg cpu=aarch64 11313da084b3Smrg ;; 11323da084b3Smrg 11332a53b785Smrg # Recognize the canonical CPU Types that limit and/or modify the 11342a53b785Smrg # company names they are paired with. 11352a53b785Smrg cr16-*) 11362a53b785Smrg basic_os=${basic_os:-elf} 11373da084b3Smrg ;; 11382a53b785Smrg crisv32-* | etraxfs*-*) 11392a53b785Smrg cpu=crisv32 11402a53b785Smrg vendor=axis 11413da084b3Smrg ;; 11422a53b785Smrg cris-* | etrax*-*) 11432a53b785Smrg cpu=cris 11442a53b785Smrg vendor=axis 11453da084b3Smrg ;; 11462a53b785Smrg crx-*) 11472a53b785Smrg basic_os=${basic_os:-elf} 11483da084b3Smrg ;; 11492a53b785Smrg neo-tandem) 11502a53b785Smrg cpu=neo 11512a53b785Smrg vendor=tandem 11523da084b3Smrg ;; 11532a53b785Smrg nse-tandem) 11542a53b785Smrg cpu=nse 11552a53b785Smrg vendor=tandem 11563da084b3Smrg ;; 11572a53b785Smrg nsr-tandem) 11582a53b785Smrg cpu=nsr 11592a53b785Smrg vendor=tandem 11603da084b3Smrg ;; 11612a53b785Smrg nsv-tandem) 11622a53b785Smrg cpu=nsv 11632a53b785Smrg vendor=tandem 11643da084b3Smrg ;; 11652a53b785Smrg nsx-tandem) 11662a53b785Smrg cpu=nsx 11672a53b785Smrg vendor=tandem 11683da084b3Smrg ;; 11692a53b785Smrg mipsallegrexel-sony) 11702a53b785Smrg cpu=mipsallegrexel 11712a53b785Smrg vendor=sony 11723da084b3Smrg ;; 11732a53b785Smrg tile*-*) 11742a53b785Smrg basic_os=${basic_os:-linux-gnu} 11753da084b3Smrg ;; 11762a53b785Smrg 11773da084b3Smrg *) 11782a53b785Smrg # Recognize the canonical CPU types that are allowed with any 11792a53b785Smrg # company name. 11802a53b785Smrg case $cpu in 11812a53b785Smrg 1750a | 580 \ 11822a53b785Smrg | a29k \ 11832a53b785Smrg | aarch64 | aarch64_be \ 11842a53b785Smrg | abacus \ 11852a53b785Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11862a53b785Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11872a53b785Smrg | alphapca5[67] | alpha64pca5[67] \ 11882a53b785Smrg | am33_2.0 \ 11892a53b785Smrg | amdgcn \ 11902a53b785Smrg | arc | arceb | arc32 | arc64 \ 11912a53b785Smrg | arm | arm[lb]e | arme[lb] | armv* \ 11922a53b785Smrg | avr | avr32 \ 11932a53b785Smrg | asmjs \ 11942a53b785Smrg | ba \ 11952a53b785Smrg | be32 | be64 \ 11962a53b785Smrg | bfin | bpf | bs2000 \ 11972a53b785Smrg | c[123]* | c30 | [cjt]90 | c4x \ 11982a53b785Smrg | c8051 | clipper | craynv | csky | cydra \ 11992a53b785Smrg | d10v | d30v | dlx | dsp16xx \ 12002a53b785Smrg | e2k | elxsi | epiphany \ 12012a53b785Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 12022a53b785Smrg | h8300 | h8500 \ 12032a53b785Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 12042a53b785Smrg | hexagon \ 12052a53b785Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12062a53b785Smrg | ip2k | iq2000 \ 12072a53b785Smrg | k1om \ 12082a53b785Smrg | le32 | le64 \ 12092a53b785Smrg | lm32 \ 121043d802faSmrg | loongarch32 | loongarch64 \ 12112a53b785Smrg | m32c | m32r | m32rle \ 12122a53b785Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12132a53b785Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12142a53b785Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12152a53b785Smrg | microblaze | microblazeel \ 12162a53b785Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12172a53b785Smrg | mips16 \ 12182a53b785Smrg | mips64 | mips64eb | mips64el \ 12192a53b785Smrg | mips64octeon | mips64octeonel \ 12202a53b785Smrg | mips64orion | mips64orionel \ 12212a53b785Smrg | mips64r5900 | mips64r5900el \ 12222a53b785Smrg | mips64vr | mips64vrel \ 12232a53b785Smrg | mips64vr4100 | mips64vr4100el \ 12242a53b785Smrg | mips64vr4300 | mips64vr4300el \ 12252a53b785Smrg | mips64vr5000 | mips64vr5000el \ 12262a53b785Smrg | mips64vr5900 | mips64vr5900el \ 12272a53b785Smrg | mipsisa32 | mipsisa32el \ 12282a53b785Smrg | mipsisa32r2 | mipsisa32r2el \ 12292a53b785Smrg | mipsisa32r3 | mipsisa32r3el \ 12302a53b785Smrg | mipsisa32r5 | mipsisa32r5el \ 12312a53b785Smrg | mipsisa32r6 | mipsisa32r6el \ 12322a53b785Smrg | mipsisa64 | mipsisa64el \ 12332a53b785Smrg | mipsisa64r2 | mipsisa64r2el \ 12342a53b785Smrg | mipsisa64r3 | mipsisa64r3el \ 12352a53b785Smrg | mipsisa64r5 | mipsisa64r5el \ 12362a53b785Smrg | mipsisa64r6 | mipsisa64r6el \ 12372a53b785Smrg | mipsisa64sb1 | mipsisa64sb1el \ 12382a53b785Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 12392a53b785Smrg | mipsr5900 | mipsr5900el \ 12402a53b785Smrg | mipstx39 | mipstx39el \ 12412a53b785Smrg | mmix \ 12422a53b785Smrg | mn10200 | mn10300 \ 12432a53b785Smrg | moxie \ 12442a53b785Smrg | mt \ 12452a53b785Smrg | msp430 \ 12462a53b785Smrg | nds32 | nds32le | nds32be \ 12472a53b785Smrg | nfp \ 12482a53b785Smrg | nios | nios2 | nios2eb | nios2el \ 12492a53b785Smrg | none | np1 | ns16k | ns32k | nvptx \ 12502a53b785Smrg | open8 \ 12512a53b785Smrg | or1k* \ 12522a53b785Smrg | or32 \ 12532a53b785Smrg | orion \ 12542a53b785Smrg | picochip \ 12552a53b785Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12562a53b785Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12572a53b785Smrg | pru \ 12582a53b785Smrg | pyramid \ 12592a53b785Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12602a53b785Smrg | rl78 | romp | rs6000 | rx \ 12612a53b785Smrg | s390 | s390x \ 12622a53b785Smrg | score \ 12632a53b785Smrg | sh | shl \ 12642a53b785Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12652a53b785Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12662a53b785Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12672a53b785Smrg | sparclite \ 12682a53b785Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12692a53b785Smrg | spu \ 12702a53b785Smrg | tahoe \ 12712a53b785Smrg | thumbv7* \ 12722a53b785Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12732a53b785Smrg | tron \ 12742a53b785Smrg | ubicom32 \ 12752a53b785Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12762a53b785Smrg | vax \ 12772a53b785Smrg | visium \ 12782a53b785Smrg | w65 \ 12792a53b785Smrg | wasm32 | wasm64 \ 12802a53b785Smrg | we32k \ 12812a53b785Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12822a53b785Smrg | xstormy16 | xtensa* \ 12832a53b785Smrg | ymp \ 12842a53b785Smrg | z8k | z80) 12852a53b785Smrg ;; 12862a53b785Smrg 12872a53b785Smrg *) 12882a53b785Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12892a53b785Smrg exit 1 12902a53b785Smrg ;; 12912a53b785Smrg esac 12923da084b3Smrg ;; 12933da084b3Smrgesac 12943da084b3Smrg 12953da084b3Smrg# Here we canonicalize certain aliases for manufacturers. 12962a53b785Smrgcase $vendor in 12972a53b785Smrg digital*) 12982a53b785Smrg vendor=dec 12993da084b3Smrg ;; 13002a53b785Smrg commodore*) 13012a53b785Smrg vendor=cbm 13023da084b3Smrg ;; 13033da084b3Smrg *) 13043da084b3Smrg ;; 13053da084b3Smrgesac 13063da084b3Smrg 13073da084b3Smrg# Decode manufacturer-specific aliases for certain operating systems. 13083da084b3Smrg 13092a53b785Smrgif test x$basic_os != x 13103da084b3Smrgthen 13112a53b785Smrg 131243d802faSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 13132a53b785Smrg# set os. 13142a53b785Smrgcase $basic_os in 13152a53b785Smrg gnu/linux*) 13162a53b785Smrg kernel=linux 13172a53b785Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13182a53b785Smrg ;; 13192a53b785Smrg os2-emx) 13202a53b785Smrg kernel=os2 13212a53b785Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13222a53b785Smrg ;; 13232a53b785Smrg nto-qnx*) 13242a53b785Smrg kernel=nto 13252a53b785Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13262a53b785Smrg ;; 13272a53b785Smrg *-*) 13282a53b785Smrg # shellcheck disable=SC2162 13292a53b785Smrg saved_IFS=$IFS 13302a53b785Smrg IFS="-" read kernel os <<EOF 13312a53b785Smrg$basic_os 13322a53b785SmrgEOF 13332a53b785Smrg IFS=$saved_IFS 13342a53b785Smrg ;; 13352a53b785Smrg # Default OS when just kernel was specified 13362a53b785Smrg nto*) 13372a53b785Smrg kernel=nto 13382a53b785Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13392a53b785Smrg ;; 13402a53b785Smrg linux*) 13412a53b785Smrg kernel=linux 13422a53b785Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13432a53b785Smrg ;; 134443d802faSmrg managarm*) 134543d802faSmrg kernel=managarm 134643d802faSmrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 134743d802faSmrg ;; 13482a53b785Smrg *) 13492a53b785Smrg kernel= 13502a53b785Smrg os=$basic_os 13512a53b785Smrg ;; 13522a53b785Smrgesac 13532a53b785Smrg 13542a53b785Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13552a53b785Smrg# etc.) 13563da084b3Smrgcase $os in 135752fd71cdSmrg # First match some system type aliases that might get confused 135852fd71cdSmrg # with valid system types. 13592a53b785Smrg # solaris* is a basic system type, with this one exception. 13602a53b785Smrg auroraux) 13612a53b785Smrg os=auroraux 136255acc8fcSmrg ;; 13632a53b785Smrg bluegene*) 13642a53b785Smrg os=cnk 13653da084b3Smrg ;; 13662a53b785Smrg solaris1 | solaris1.*) 13672a53b785Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13683da084b3Smrg ;; 13692a53b785Smrg solaris) 13702a53b785Smrg os=solaris2 13713da084b3Smrg ;; 13722a53b785Smrg unixware*) 13732a53b785Smrg os=sysv4.2uw 13743da084b3Smrg ;; 137552fd71cdSmrg # es1800 is here to avoid being matched by es* (a different OS) 13762a53b785Smrg es1800*) 13772a53b785Smrg os=ose 137852fd71cdSmrg ;; 13792a53b785Smrg # Some version numbers need modification 13802a53b785Smrg chorusos*) 13812a53b785Smrg os=chorusos 13823da084b3Smrg ;; 13832a53b785Smrg isc) 13842a53b785Smrg os=isc2.2 13853da084b3Smrg ;; 13862a53b785Smrg sco6) 13872a53b785Smrg os=sco5v6 13883da084b3Smrg ;; 13892a53b785Smrg sco5) 13902a53b785Smrg os=sco3.2v5 13913da084b3Smrg ;; 13922a53b785Smrg sco4) 13932a53b785Smrg os=sco3.2v4 13943da084b3Smrg ;; 13952a53b785Smrg sco3.2.[4-9]*) 13962a53b785Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13973da084b3Smrg ;; 13982a53b785Smrg sco*v* | scout) 13992a53b785Smrg # Don't match below 14003da084b3Smrg ;; 14012a53b785Smrg sco*) 14022a53b785Smrg os=sco3.2v2 14033da084b3Smrg ;; 14042a53b785Smrg psos*) 14052a53b785Smrg os=psos 14063da084b3Smrg ;; 14072a53b785Smrg qnx*) 14082a53b785Smrg os=qnx 14093da084b3Smrg ;; 14102a53b785Smrg hiux*) 14112a53b785Smrg os=hiuxwe2 14123da084b3Smrg ;; 14132a53b785Smrg lynx*178) 14142a53b785Smrg os=lynxos178 14153da084b3Smrg ;; 14162a53b785Smrg lynx*5) 14172a53b785Smrg os=lynxos5 14183da084b3Smrg ;; 14192a53b785Smrg lynxos*) 14202a53b785Smrg # don't get caught up in next wildcard 14213da084b3Smrg ;; 14222a53b785Smrg lynx*) 14232a53b785Smrg os=lynxos 14243da084b3Smrg ;; 14252a53b785Smrg mac[0-9]*) 14262a53b785Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 14273da084b3Smrg ;; 14282a53b785Smrg opened*) 14292a53b785Smrg os=openedition 14303da084b3Smrg ;; 14312a53b785Smrg os400*) 14322a53b785Smrg os=os400 14333da084b3Smrg ;; 14342a53b785Smrg sunos5*) 14352a53b785Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14363da084b3Smrg ;; 14372a53b785Smrg sunos6*) 14382a53b785Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14393da084b3Smrg ;; 14402a53b785Smrg wince*) 14412a53b785Smrg os=wince 14423da084b3Smrg ;; 14432a53b785Smrg utek*) 14442a53b785Smrg os=bsd 14453da084b3Smrg ;; 14462a53b785Smrg dynix*) 14472a53b785Smrg os=bsd 14483da084b3Smrg ;; 14492a53b785Smrg acis*) 14502a53b785Smrg os=aos 14513da084b3Smrg ;; 14522a53b785Smrg atheos*) 14532a53b785Smrg os=atheos 14543da084b3Smrg ;; 14552a53b785Smrg syllable*) 14562a53b785Smrg os=syllable 14572a53b785Smrg ;; 14582a53b785Smrg 386bsd) 14592a53b785Smrg os=bsd 14602a53b785Smrg ;; 14612a53b785Smrg ctix* | uts*) 14622a53b785Smrg os=sysv 14632a53b785Smrg ;; 14642a53b785Smrg nova*) 14652a53b785Smrg os=rtmk-nova 14662a53b785Smrg ;; 14672a53b785Smrg ns2) 14682a53b785Smrg os=nextstep2 14692a53b785Smrg ;; 14702a53b785Smrg # Preserve the version number of sinix5. 14712a53b785Smrg sinix5.*) 14722a53b785Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14733da084b3Smrg ;; 14742a53b785Smrg sinix*) 14752a53b785Smrg os=sysv4 14763da084b3Smrg ;; 14772a53b785Smrg tpf*) 14782a53b785Smrg os=tpf 14793da084b3Smrg ;; 14802a53b785Smrg triton*) 14812a53b785Smrg os=sysv3 14823da084b3Smrg ;; 14832a53b785Smrg oss*) 14842a53b785Smrg os=sysv3 14853da084b3Smrg ;; 14862a53b785Smrg svr4*) 14872a53b785Smrg os=sysv4 14883da084b3Smrg ;; 14892a53b785Smrg svr3) 14902a53b785Smrg os=sysv3 14913da084b3Smrg ;; 14922a53b785Smrg sysvr4) 14932a53b785Smrg os=sysv4 14943da084b3Smrg ;; 14952a53b785Smrg ose*) 14962a53b785Smrg os=ose 14973da084b3Smrg ;; 14982a53b785Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14992a53b785Smrg os=mint 150055acc8fcSmrg ;; 15012a53b785Smrg dicos*) 15022a53b785Smrg os=dicos 15032a53b785Smrg ;; 15042a53b785Smrg pikeos*) 150552fd71cdSmrg # Until real need of OS specific support for 150652fd71cdSmrg # particular features comes up, bare metal 150752fd71cdSmrg # configurations are quite functional. 15082a53b785Smrg case $cpu in 150952fd71cdSmrg arm*) 15102a53b785Smrg os=eabi 151152fd71cdSmrg ;; 151252fd71cdSmrg *) 15132a53b785Smrg os=elf 151452fd71cdSmrg ;; 151552fd71cdSmrg esac 151652fd71cdSmrg ;; 15173da084b3Smrg *) 15182a53b785Smrg # No normalization, but not necessarily accepted, that comes below. 15193da084b3Smrg ;; 15203da084b3Smrgesac 15212a53b785Smrg 15223da084b3Smrgelse 15233da084b3Smrg 15243da084b3Smrg# Here we handle the default operating systems that come with various machines. 15253da084b3Smrg# The value should be what the vendor currently ships out the door with their 15263da084b3Smrg# machine or put another way, the most popular os provided with the machine. 15273da084b3Smrg 15283da084b3Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15293da084b3Smrg# "-sun"), then you have to tell the case statement up towards the top 15303da084b3Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15313da084b3Smrg# will signal an error saying that MANUFACTURER isn't an operating 15323da084b3Smrg# system, and we'll never get to this point. 15333da084b3Smrg 15342a53b785Smrgkernel= 15352a53b785Smrgcase $cpu-$vendor in 153648c85eb7Smrg score-*) 15372a53b785Smrg os=elf 1538d63fdb69Smrg ;; 153948c85eb7Smrg spu-*) 15402a53b785Smrg os=elf 1541d63fdb69Smrg ;; 15423da084b3Smrg *-acorn) 15432a53b785Smrg os=riscix1.2 15443da084b3Smrg ;; 15453da084b3Smrg arm*-rebel) 15462a53b785Smrg kernel=linux 15472a53b785Smrg os=gnu 15483da084b3Smrg ;; 15493da084b3Smrg arm*-semi) 15502a53b785Smrg os=aout 15513da084b3Smrg ;; 155248c85eb7Smrg c4x-* | tic4x-*) 15532a53b785Smrg os=coff 1554d63fdb69Smrg ;; 1555e1c0d025Smrg c8051-*) 15562a53b785Smrg os=elf 15572a53b785Smrg ;; 15582a53b785Smrg clipper-intergraph) 15592a53b785Smrg os=clix 1560e1c0d025Smrg ;; 1561e1c0d025Smrg hexagon-*) 15622a53b785Smrg os=elf 1563e1c0d025Smrg ;; 156455acc8fcSmrg tic54x-*) 15652a53b785Smrg os=coff 156655acc8fcSmrg ;; 156755acc8fcSmrg tic55x-*) 15682a53b785Smrg os=coff 156955acc8fcSmrg ;; 157055acc8fcSmrg tic6x-*) 15712a53b785Smrg os=coff 157255acc8fcSmrg ;; 15733da084b3Smrg # This must come before the *-dec entry. 15743da084b3Smrg pdp10-*) 15752a53b785Smrg os=tops20 15763da084b3Smrg ;; 15773da084b3Smrg pdp11-*) 15782a53b785Smrg os=none 15793da084b3Smrg ;; 15803da084b3Smrg *-dec | vax-*) 15812a53b785Smrg os=ultrix4.2 15823da084b3Smrg ;; 15833da084b3Smrg m68*-apollo) 15842a53b785Smrg os=domain 15853da084b3Smrg ;; 15863da084b3Smrg i386-sun) 15872a53b785Smrg os=sunos4.0.2 15883da084b3Smrg ;; 15893da084b3Smrg m68000-sun) 15902a53b785Smrg os=sunos3 15913da084b3Smrg ;; 15923da084b3Smrg m68*-cisco) 15932a53b785Smrg os=aout 15943da084b3Smrg ;; 159548c85eb7Smrg mep-*) 15962a53b785Smrg os=elf 1597d63fdb69Smrg ;; 15983da084b3Smrg mips*-cisco) 15992a53b785Smrg os=elf 16003da084b3Smrg ;; 16013da084b3Smrg mips*-*) 16022a53b785Smrg os=elf 16033da084b3Smrg ;; 16043da084b3Smrg or32-*) 16052a53b785Smrg os=coff 16063da084b3Smrg ;; 16073da084b3Smrg *-tti) # must be before sparc entry or we get the wrong os. 16082a53b785Smrg os=sysv3 16093da084b3Smrg ;; 16103da084b3Smrg sparc-* | *-sun) 16112a53b785Smrg os=sunos4.1.1 16123da084b3Smrg ;; 161352fd71cdSmrg pru-*) 16142a53b785Smrg os=elf 161552fd71cdSmrg ;; 16163da084b3Smrg *-be) 16172a53b785Smrg os=beos 16183da084b3Smrg ;; 16193da084b3Smrg *-ibm) 16202a53b785Smrg os=aix 16213da084b3Smrg ;; 162248c85eb7Smrg *-knuth) 16232a53b785Smrg os=mmixware 16243da084b3Smrg ;; 16253da084b3Smrg *-wec) 16262a53b785Smrg os=proelf 16273da084b3Smrg ;; 16283da084b3Smrg *-winbond) 16292a53b785Smrg os=proelf 16303da084b3Smrg ;; 16313da084b3Smrg *-oki) 16322a53b785Smrg os=proelf 16333da084b3Smrg ;; 16343da084b3Smrg *-hp) 16352a53b785Smrg os=hpux 16363da084b3Smrg ;; 16373da084b3Smrg *-hitachi) 16382a53b785Smrg os=hiux 16393da084b3Smrg ;; 16403da084b3Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16412a53b785Smrg os=sysv 16423da084b3Smrg ;; 16433da084b3Smrg *-cbm) 16442a53b785Smrg os=amigaos 16453da084b3Smrg ;; 16463da084b3Smrg *-dg) 16472a53b785Smrg os=dgux 16483da084b3Smrg ;; 16493da084b3Smrg *-dolphin) 16502a53b785Smrg os=sysv3 16513da084b3Smrg ;; 16523da084b3Smrg m68k-ccur) 16532a53b785Smrg os=rtu 16543da084b3Smrg ;; 16553da084b3Smrg m88k-omron*) 16562a53b785Smrg os=luna 16573da084b3Smrg ;; 165852fd71cdSmrg *-next) 16592a53b785Smrg os=nextstep 16603da084b3Smrg ;; 16613da084b3Smrg *-sequent) 16622a53b785Smrg os=ptx 16633da084b3Smrg ;; 16643da084b3Smrg *-crds) 16652a53b785Smrg os=unos 16663da084b3Smrg ;; 16673da084b3Smrg *-ns) 16682a53b785Smrg os=genix 16693da084b3Smrg ;; 16703da084b3Smrg i370-*) 16712a53b785Smrg os=mvs 16723da084b3Smrg ;; 16733da084b3Smrg *-gould) 16742a53b785Smrg os=sysv 16753da084b3Smrg ;; 16763da084b3Smrg *-highlevel) 16772a53b785Smrg os=bsd 16783da084b3Smrg ;; 16793da084b3Smrg *-encore) 16802a53b785Smrg os=bsd 16813da084b3Smrg ;; 16823da084b3Smrg *-sgi) 16832a53b785Smrg os=irix 16843da084b3Smrg ;; 16853da084b3Smrg *-siemens) 16862a53b785Smrg os=sysv4 16873da084b3Smrg ;; 16883da084b3Smrg *-masscomp) 16892a53b785Smrg os=rtu 16903da084b3Smrg ;; 16913da084b3Smrg f30[01]-fujitsu | f700-fujitsu) 16922a53b785Smrg os=uxpv 16933da084b3Smrg ;; 16943da084b3Smrg *-rom68k) 16952a53b785Smrg os=coff 16963da084b3Smrg ;; 16973da084b3Smrg *-*bug) 16982a53b785Smrg os=coff 16993da084b3Smrg ;; 17003da084b3Smrg *-apple) 17012a53b785Smrg os=macos 17023da084b3Smrg ;; 17033da084b3Smrg *-atari*) 17042a53b785Smrg os=mint 17052a53b785Smrg ;; 17062a53b785Smrg *-wrs) 17072a53b785Smrg os=vxworks 17083da084b3Smrg ;; 17093da084b3Smrg *) 17102a53b785Smrg os=none 17113da084b3Smrg ;; 17123da084b3Smrgesac 17132a53b785Smrg 17143da084b3Smrgfi 17153da084b3Smrg 17162a53b785Smrg# Now, validate our (potentially fixed-up) OS. 17172a53b785Smrgcase $os in 17182a53b785Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17192a53b785Smrg musl* | newlib* | relibc* | uclibc*) 17202a53b785Smrg ;; 17212a53b785Smrg # Likewise for "kernel-abi" 17222a53b785Smrg eabi* | gnueabi*) 17232a53b785Smrg ;; 17242a53b785Smrg # VxWorks passes extra cpu info in the 4th filed. 17252a53b785Smrg simlinux | simwindows | spe) 17262a53b785Smrg ;; 17272a53b785Smrg # Now accept the basic system types. 17282a53b785Smrg # The portable systems comes first. 17292a53b785Smrg # Each alternative MUST end in a * to match a version number. 17302a53b785Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17312a53b785Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17322a53b785Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17332a53b785Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17342a53b785Smrg | hiux* | abug | nacl* | netware* | windows* \ 17352a53b785Smrg | os9* | macos* | osx* | ios* \ 17362a53b785Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17372a53b785Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17382a53b785Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17392a53b785Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17402a53b785Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17412a53b785Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17422a53b785Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17432a53b785Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17442a53b785Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17452a53b785Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17462a53b785Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17472a53b785Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17482a53b785Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17492a53b785Smrg | midipix* | mingw32* | mingw64* | mint* \ 17502a53b785Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17512a53b785Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17522a53b785Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17532a53b785Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17542a53b785Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17552a53b785Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17562a53b785Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17572a53b785Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17582a53b785Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17592a53b785Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 176043d802faSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 176143d802faSmrg | fiwix* | mlibc* ) 17622a53b785Smrg ;; 17632a53b785Smrg # This one is extra strict with allowed versions 17642a53b785Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17652a53b785Smrg # Don't forget version if it is 3.2v4 or newer. 17662a53b785Smrg ;; 17672a53b785Smrg none) 17682a53b785Smrg ;; 176943d802faSmrg kernel* ) 177043d802faSmrg # Restricted further below 177143d802faSmrg ;; 17722a53b785Smrg *) 17732a53b785Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17742a53b785Smrg exit 1 17752a53b785Smrg ;; 17762a53b785Smrgesac 17772a53b785Smrg 17782a53b785Smrg# As a final step for OS-related things, validate the OS-kernel combination 17792a53b785Smrg# (given a valid OS), if there is a kernel. 17802a53b785Smrgcase $kernel-$os in 17812a53b785Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 178243d802faSmrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 17832a53b785Smrg ;; 17842a53b785Smrg uclinux-uclibc* ) 17852a53b785Smrg ;; 178643d802faSmrg managarm-mlibc* | managarm-kernel* ) 178743d802faSmrg ;; 178843d802faSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 17892a53b785Smrg # These are just libc implementations, not actual OSes, and thus 17902a53b785Smrg # require a kernel. 17912a53b785Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17922a53b785Smrg exit 1 17932a53b785Smrg ;; 179443d802faSmrg -kernel* ) 179543d802faSmrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 179643d802faSmrg exit 1 179743d802faSmrg ;; 179843d802faSmrg *-kernel* ) 179943d802faSmrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 180043d802faSmrg exit 1 180143d802faSmrg ;; 18022a53b785Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 18032a53b785Smrg ;; 18042a53b785Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 18052a53b785Smrg ;; 18062a53b785Smrg nto-qnx*) 18072a53b785Smrg ;; 18082a53b785Smrg os2-emx) 18092a53b785Smrg ;; 18102a53b785Smrg *-eabi* | *-gnueabi*) 18112a53b785Smrg ;; 18122a53b785Smrg -*) 18132a53b785Smrg # Blank kernel with real OS is always fine. 18142a53b785Smrg ;; 18152a53b785Smrg *-*) 18162a53b785Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 18172a53b785Smrg exit 1 18182a53b785Smrg ;; 18192a53b785Smrgesac 18202a53b785Smrg 18213da084b3Smrg# Here we handle the case where we know the os, and the CPU type, but not the 18223da084b3Smrg# manufacturer. We pick the logical manufacturer. 18232a53b785Smrgcase $vendor in 18242a53b785Smrg unknown) 18252a53b785Smrg case $cpu-$os in 18262a53b785Smrg *-riscix*) 18273da084b3Smrg vendor=acorn 18283da084b3Smrg ;; 18292a53b785Smrg *-sunos*) 18303da084b3Smrg vendor=sun 18313da084b3Smrg ;; 18322a53b785Smrg *-cnk* | *-aix*) 18333da084b3Smrg vendor=ibm 18343da084b3Smrg ;; 18352a53b785Smrg *-beos*) 18363da084b3Smrg vendor=be 18373da084b3Smrg ;; 18382a53b785Smrg *-hpux*) 18393da084b3Smrg vendor=hp 18403da084b3Smrg ;; 18412a53b785Smrg *-mpeix*) 18423da084b3Smrg vendor=hp 18433da084b3Smrg ;; 18442a53b785Smrg *-hiux*) 18453da084b3Smrg vendor=hitachi 18463da084b3Smrg ;; 18472a53b785Smrg *-unos*) 18483da084b3Smrg vendor=crds 18493da084b3Smrg ;; 18502a53b785Smrg *-dgux*) 18513da084b3Smrg vendor=dg 18523da084b3Smrg ;; 18532a53b785Smrg *-luna*) 18543da084b3Smrg vendor=omron 18553da084b3Smrg ;; 18562a53b785Smrg *-genix*) 18573da084b3Smrg vendor=ns 18583da084b3Smrg ;; 18592a53b785Smrg *-clix*) 18602a53b785Smrg vendor=intergraph 18612a53b785Smrg ;; 18622a53b785Smrg *-mvs* | *-opened*) 18632a53b785Smrg vendor=ibm 18642a53b785Smrg ;; 18652a53b785Smrg *-os400*) 18663da084b3Smrg vendor=ibm 18673da084b3Smrg ;; 18682a53b785Smrg s390-* | s390x-*) 18693da084b3Smrg vendor=ibm 18703da084b3Smrg ;; 18712a53b785Smrg *-ptx*) 18723da084b3Smrg vendor=sequent 18733da084b3Smrg ;; 18742a53b785Smrg *-tpf*) 18753da084b3Smrg vendor=ibm 18763da084b3Smrg ;; 18772a53b785Smrg *-vxsim* | *-vxworks* | *-windiss*) 18783da084b3Smrg vendor=wrs 18793da084b3Smrg ;; 18802a53b785Smrg *-aux*) 18813da084b3Smrg vendor=apple 18823da084b3Smrg ;; 18832a53b785Smrg *-hms*) 18843da084b3Smrg vendor=hitachi 18853da084b3Smrg ;; 18862a53b785Smrg *-mpw* | *-macos*) 18873da084b3Smrg vendor=apple 18883da084b3Smrg ;; 18892a53b785Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18903da084b3Smrg vendor=atari 18913da084b3Smrg ;; 18922a53b785Smrg *-vos*) 18933da084b3Smrg vendor=stratus 18943da084b3Smrg ;; 18953da084b3Smrg esac 18963da084b3Smrg ;; 18973da084b3Smrgesac 18983da084b3Smrg 18992a53b785Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 19003da084b3Smrgexit 19013da084b3Smrg 19023da084b3Smrg# Local variables: 19032a53b785Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 19043da084b3Smrg# time-stamp-start: "timestamp='" 19053da084b3Smrg# time-stamp-format: "%:y-%02m-%02d" 19063da084b3Smrg# time-stamp-end: "'" 19073da084b3Smrg# End: 1908