1c582b7e3Smrg#! /bin/sh 2c582b7e3Smrg# Configuration validation subroutine script. 38ce07328Smrg# Copyright 1992-2021 Free Software Foundation, Inc. 4c582b7e3Smrg 58ce07328Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 68ce07328Smrg 78ce07328Smrgtimestamp='2021-08-14' 8c582b7e3Smrg 9e3d74329Smrg# This file is free software; you can redistribute it and/or modify it 10e3d74329Smrg# under the terms of the GNU General Public License as published by 11e3d74329Smrg# the Free Software Foundation; either version 3 of the License, or 12c582b7e3Smrg# (at your option) any later version. 13c582b7e3Smrg# 14e3d74329Smrg# This program is distributed in the hope that it will be useful, but 15e3d74329Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16e3d74329Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17e3d74329Smrg# General Public License for more details. 18c582b7e3Smrg# 19c582b7e3Smrg# You should have received a copy of the GNU General Public License 208ce07328Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21c582b7e3Smrg# 22c582b7e3Smrg# As a special exception to the GNU General Public License, if you 23c582b7e3Smrg# distribute this file as part of a program that contains a 24c582b7e3Smrg# configuration script generated by Autoconf, you may include it under 25e3d74329Smrg# the same distribution terms that you use for the rest of that 26e3d74329Smrg# program. This Exception is an additional permission under section 7 27e3d74329Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28c582b7e3Smrg 29c582b7e3Smrg 30a56d54acSmrg# Please send patches to <config-patches@gnu.org>. 31c582b7e3Smrg# 32c582b7e3Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33c582b7e3Smrg# Supply the specified configuration type as an argument. 34c582b7e3Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35c582b7e3Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36c582b7e3Smrg 3742a55b46Smrg# You can get the latest version of this script from: 388ce07328Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 3942a55b46Smrg 40c582b7e3Smrg# This file is supposed to be the same for all GNU packages 41c582b7e3Smrg# and recognize all the CPU types, system types and aliases 42c582b7e3Smrg# that are meaningful with *any* GNU software. 43c582b7e3Smrg# Each package is responsible for reporting which valid configurations 44c582b7e3Smrg# it does not support. The user should be able to distinguish 45c582b7e3Smrg# a failure to support a valid configuration from a meaningless 46c582b7e3Smrg# configuration. 47c582b7e3Smrg 48c582b7e3Smrg# The goal of this file is to map all the various variations of a given 49c582b7e3Smrg# machine specification into a single specification in the form: 50c582b7e3Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51c582b7e3Smrg# or in some cases, the newer four-part form: 52c582b7e3Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53c582b7e3Smrg# It is wrong to echo any other type of specification. 54c582b7e3Smrg 558ce07328Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 568ce07328Smrg# about features and limitations of the classic Bourne shell that were 578ce07328Smrg# superseded or lifted in POSIX. However, this script identifies a wide 588ce07328Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 598ce07328Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 608ce07328Smrg# have a pre-POSIX /bin/sh. 618ce07328Smrg 62c582b7e3Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63c582b7e3Smrg 64c582b7e3Smrgusage="\ 658ce07328SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66c582b7e3Smrg 67c582b7e3SmrgCanonicalize a configuration name. 68c582b7e3Smrg 698ce07328SmrgOptions: 70c582b7e3Smrg -h, --help print this help, then exit 71c582b7e3Smrg -t, --time-stamp print date of last modification, then exit 72c582b7e3Smrg -v, --version print version number, then exit 73c582b7e3Smrg 74c582b7e3SmrgReport bugs and patches to <config-patches@gnu.org>." 75c582b7e3Smrg 76c582b7e3Smrgversion="\ 77c582b7e3SmrgGNU config.sub ($timestamp) 78c582b7e3Smrg 798ce07328SmrgCopyright 1992-2021 Free Software Foundation, Inc. 80c582b7e3Smrg 81c582b7e3SmrgThis is free software; see the source for copying conditions. There is NO 82c582b7e3Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83c582b7e3Smrg 84c582b7e3Smrghelp=" 85c582b7e3SmrgTry \`$me --help' for more information." 86c582b7e3Smrg 87c582b7e3Smrg# Parse command line 88c582b7e3Smrgwhile test $# -gt 0 ; do 89c582b7e3Smrg case $1 in 90c582b7e3Smrg --time-stamp | --time* | -t ) 91c582b7e3Smrg echo "$timestamp" ; exit ;; 92c582b7e3Smrg --version | -v ) 93c582b7e3Smrg echo "$version" ; exit ;; 94c582b7e3Smrg --help | --h* | -h ) 95c582b7e3Smrg echo "$usage"; exit ;; 96c582b7e3Smrg -- ) # Stop option processing 97c582b7e3Smrg shift; break ;; 98c582b7e3Smrg - ) # Use stdin as input. 99c582b7e3Smrg break ;; 100c582b7e3Smrg -* ) 1018ce07328Smrg echo "$me: invalid option $1$help" >&2 102c582b7e3Smrg exit 1 ;; 103c582b7e3Smrg 104c582b7e3Smrg *local*) 105c582b7e3Smrg # First pass through any local machine types. 1068ce07328Smrg echo "$1" 107c582b7e3Smrg exit ;; 108c582b7e3Smrg 109c582b7e3Smrg * ) 110c582b7e3Smrg break ;; 111c582b7e3Smrg esac 112c582b7e3Smrgdone 113c582b7e3Smrg 114c582b7e3Smrgcase $# in 115c582b7e3Smrg 0) echo "$me: missing argument$help" >&2 116c582b7e3Smrg exit 1;; 117c582b7e3Smrg 1) ;; 118c582b7e3Smrg *) echo "$me: too many arguments$help" >&2 119c582b7e3Smrg exit 1;; 120c582b7e3Smrgesac 121c582b7e3Smrg 1228ce07328Smrg# Split fields of configuration type 1238ce07328Smrg# shellcheck disable=SC2162 1248ce07328Smrgsaved_IFS=$IFS 1258ce07328SmrgIFS="-" read field1 field2 field3 field4 <<EOF 1268ce07328Smrg$1 1278ce07328SmrgEOF 1288ce07328SmrgIFS=$saved_IFS 129c582b7e3Smrg 1308ce07328Smrg# Separate into logical components for further validation 1318ce07328Smrgcase $1 in 1328ce07328Smrg *-*-*-*-*) 1338ce07328Smrg echo Invalid configuration \`"$1"\': more than four components >&2 1348ce07328Smrg exit 1 135c582b7e3Smrg ;; 1368ce07328Smrg *-*-*-*) 1378ce07328Smrg basic_machine=$field1-$field2 1388ce07328Smrg basic_os=$field3-$field4 139c582b7e3Smrg ;; 1408ce07328Smrg *-*-*) 1418ce07328Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1428ce07328Smrg # parts 1438ce07328Smrg maybe_os=$field2-$field3 1448ce07328Smrg case $maybe_os in 1458ce07328Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 1468ce07328Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1478ce07328Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1488ce07328Smrg | storm-chaos* | os2-emx* | rtmk-nova*) 1498ce07328Smrg basic_machine=$field1 1508ce07328Smrg basic_os=$maybe_os 1518ce07328Smrg ;; 1528ce07328Smrg android-linux) 1538ce07328Smrg basic_machine=$field1-unknown 1548ce07328Smrg basic_os=linux-android 1558ce07328Smrg ;; 1568ce07328Smrg *) 1578ce07328Smrg basic_machine=$field1-$field2 1588ce07328Smrg basic_os=$field3 1598ce07328Smrg ;; 1608ce07328Smrg esac 161c582b7e3Smrg ;; 1628ce07328Smrg *-*) 1638ce07328Smrg # A lone config we happen to match not fitting any pattern 1648ce07328Smrg case $field1-$field2 in 1658ce07328Smrg decstation-3100) 1668ce07328Smrg basic_machine=mips-dec 1678ce07328Smrg basic_os= 1688ce07328Smrg ;; 1698ce07328Smrg *-*) 1708ce07328Smrg # Second component is usually, but not always the OS 1718ce07328Smrg case $field2 in 1728ce07328Smrg # Prevent following clause from handling this valid os 1738ce07328Smrg sun*os*) 1748ce07328Smrg basic_machine=$field1 1758ce07328Smrg basic_os=$field2 1768ce07328Smrg ;; 1778ce07328Smrg zephyr*) 1788ce07328Smrg basic_machine=$field1-unknown 1798ce07328Smrg basic_os=$field2 1808ce07328Smrg ;; 1818ce07328Smrg # Manufacturers 1828ce07328Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1838ce07328Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1848ce07328Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1858ce07328Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1868ce07328Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1878ce07328Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1888ce07328Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1898ce07328Smrg | microblaze* | sim | cisco \ 1908ce07328Smrg | oki | wec | wrs | winbond) 1918ce07328Smrg basic_machine=$field1-$field2 1928ce07328Smrg basic_os= 1938ce07328Smrg ;; 1948ce07328Smrg *) 1958ce07328Smrg basic_machine=$field1 1968ce07328Smrg basic_os=$field2 1978ce07328Smrg ;; 1988ce07328Smrg esac 1998ce07328Smrg ;; 2008ce07328Smrg esac 201c582b7e3Smrg ;; 2028ce07328Smrg *) 2038ce07328Smrg # Convert single-component short-hands not valid as part of 2048ce07328Smrg # multi-component configurations. 2058ce07328Smrg case $field1 in 2068ce07328Smrg 386bsd) 2078ce07328Smrg basic_machine=i386-pc 2088ce07328Smrg basic_os=bsd 2098ce07328Smrg ;; 2108ce07328Smrg a29khif) 2118ce07328Smrg basic_machine=a29k-amd 2128ce07328Smrg basic_os=udi 2138ce07328Smrg ;; 2148ce07328Smrg adobe68k) 2158ce07328Smrg basic_machine=m68010-adobe 2168ce07328Smrg basic_os=scout 2178ce07328Smrg ;; 2188ce07328Smrg alliant) 2198ce07328Smrg basic_machine=fx80-alliant 2208ce07328Smrg basic_os= 2218ce07328Smrg ;; 2228ce07328Smrg altos | altos3068) 2238ce07328Smrg basic_machine=m68k-altos 2248ce07328Smrg basic_os= 2258ce07328Smrg ;; 2268ce07328Smrg am29k) 2278ce07328Smrg basic_machine=a29k-none 2288ce07328Smrg basic_os=bsd 2298ce07328Smrg ;; 2308ce07328Smrg amdahl) 2318ce07328Smrg basic_machine=580-amdahl 2328ce07328Smrg basic_os=sysv 2338ce07328Smrg ;; 2348ce07328Smrg amiga) 2358ce07328Smrg basic_machine=m68k-unknown 2368ce07328Smrg basic_os= 2378ce07328Smrg ;; 2388ce07328Smrg amigaos | amigados) 2398ce07328Smrg basic_machine=m68k-unknown 2408ce07328Smrg basic_os=amigaos 2418ce07328Smrg ;; 2428ce07328Smrg amigaunix | amix) 2438ce07328Smrg basic_machine=m68k-unknown 2448ce07328Smrg basic_os=sysv4 2458ce07328Smrg ;; 2468ce07328Smrg apollo68) 2478ce07328Smrg basic_machine=m68k-apollo 2488ce07328Smrg basic_os=sysv 2498ce07328Smrg ;; 2508ce07328Smrg apollo68bsd) 2518ce07328Smrg basic_machine=m68k-apollo 2528ce07328Smrg basic_os=bsd 2538ce07328Smrg ;; 2548ce07328Smrg aros) 2558ce07328Smrg basic_machine=i386-pc 2568ce07328Smrg basic_os=aros 2578ce07328Smrg ;; 2588ce07328Smrg aux) 2598ce07328Smrg basic_machine=m68k-apple 2608ce07328Smrg basic_os=aux 2618ce07328Smrg ;; 2628ce07328Smrg balance) 2638ce07328Smrg basic_machine=ns32k-sequent 2648ce07328Smrg basic_os=dynix 2658ce07328Smrg ;; 2668ce07328Smrg blackfin) 2678ce07328Smrg basic_machine=bfin-unknown 2688ce07328Smrg basic_os=linux 2698ce07328Smrg ;; 2708ce07328Smrg cegcc) 2718ce07328Smrg basic_machine=arm-unknown 2728ce07328Smrg basic_os=cegcc 2738ce07328Smrg ;; 2748ce07328Smrg convex-c1) 2758ce07328Smrg basic_machine=c1-convex 2768ce07328Smrg basic_os=bsd 2778ce07328Smrg ;; 2788ce07328Smrg convex-c2) 2798ce07328Smrg basic_machine=c2-convex 2808ce07328Smrg basic_os=bsd 2818ce07328Smrg ;; 2828ce07328Smrg convex-c32) 2838ce07328Smrg basic_machine=c32-convex 2848ce07328Smrg basic_os=bsd 2858ce07328Smrg ;; 2868ce07328Smrg convex-c34) 2878ce07328Smrg basic_machine=c34-convex 2888ce07328Smrg basic_os=bsd 2898ce07328Smrg ;; 2908ce07328Smrg convex-c38) 2918ce07328Smrg basic_machine=c38-convex 2928ce07328Smrg basic_os=bsd 2938ce07328Smrg ;; 2948ce07328Smrg cray) 2958ce07328Smrg basic_machine=j90-cray 2968ce07328Smrg basic_os=unicos 2978ce07328Smrg ;; 2988ce07328Smrg crds | unos) 2998ce07328Smrg basic_machine=m68k-crds 3008ce07328Smrg basic_os= 3018ce07328Smrg ;; 3028ce07328Smrg da30) 3038ce07328Smrg basic_machine=m68k-da30 3048ce07328Smrg basic_os= 3058ce07328Smrg ;; 3068ce07328Smrg decstation | pmax | pmin | dec3100 | decstatn) 3078ce07328Smrg basic_machine=mips-dec 3088ce07328Smrg basic_os= 3098ce07328Smrg ;; 3108ce07328Smrg delta88) 3118ce07328Smrg basic_machine=m88k-motorola 3128ce07328Smrg basic_os=sysv3 3138ce07328Smrg ;; 3148ce07328Smrg dicos) 3158ce07328Smrg basic_machine=i686-pc 3168ce07328Smrg basic_os=dicos 3178ce07328Smrg ;; 3188ce07328Smrg djgpp) 3198ce07328Smrg basic_machine=i586-pc 3208ce07328Smrg basic_os=msdosdjgpp 3218ce07328Smrg ;; 3228ce07328Smrg ebmon29k) 3238ce07328Smrg basic_machine=a29k-amd 3248ce07328Smrg basic_os=ebmon 3258ce07328Smrg ;; 3268ce07328Smrg es1800 | OSE68k | ose68k | ose | OSE) 3278ce07328Smrg basic_machine=m68k-ericsson 3288ce07328Smrg basic_os=ose 3298ce07328Smrg ;; 3308ce07328Smrg gmicro) 3318ce07328Smrg basic_machine=tron-gmicro 3328ce07328Smrg basic_os=sysv 3338ce07328Smrg ;; 3348ce07328Smrg go32) 3358ce07328Smrg basic_machine=i386-pc 3368ce07328Smrg basic_os=go32 3378ce07328Smrg ;; 3388ce07328Smrg h8300hms) 3398ce07328Smrg basic_machine=h8300-hitachi 3408ce07328Smrg basic_os=hms 3418ce07328Smrg ;; 3428ce07328Smrg h8300xray) 3438ce07328Smrg basic_machine=h8300-hitachi 3448ce07328Smrg basic_os=xray 3458ce07328Smrg ;; 3468ce07328Smrg h8500hms) 3478ce07328Smrg basic_machine=h8500-hitachi 3488ce07328Smrg basic_os=hms 3498ce07328Smrg ;; 3508ce07328Smrg harris) 3518ce07328Smrg basic_machine=m88k-harris 3528ce07328Smrg basic_os=sysv3 3538ce07328Smrg ;; 3548ce07328Smrg hp300 | hp300hpux) 3558ce07328Smrg basic_machine=m68k-hp 3568ce07328Smrg basic_os=hpux 3578ce07328Smrg ;; 3588ce07328Smrg hp300bsd) 3598ce07328Smrg basic_machine=m68k-hp 3608ce07328Smrg basic_os=bsd 3618ce07328Smrg ;; 3628ce07328Smrg hppaosf) 3638ce07328Smrg basic_machine=hppa1.1-hp 3648ce07328Smrg basic_os=osf 3658ce07328Smrg ;; 3668ce07328Smrg hppro) 3678ce07328Smrg basic_machine=hppa1.1-hp 3688ce07328Smrg basic_os=proelf 3698ce07328Smrg ;; 3708ce07328Smrg i386mach) 3718ce07328Smrg basic_machine=i386-mach 3728ce07328Smrg basic_os=mach 3738ce07328Smrg ;; 3748ce07328Smrg isi68 | isi) 3758ce07328Smrg basic_machine=m68k-isi 3768ce07328Smrg basic_os=sysv 3778ce07328Smrg ;; 3788ce07328Smrg m68knommu) 3798ce07328Smrg basic_machine=m68k-unknown 3808ce07328Smrg basic_os=linux 3818ce07328Smrg ;; 3828ce07328Smrg magnum | m3230) 3838ce07328Smrg basic_machine=mips-mips 3848ce07328Smrg basic_os=sysv 3858ce07328Smrg ;; 3868ce07328Smrg merlin) 3878ce07328Smrg basic_machine=ns32k-utek 3888ce07328Smrg basic_os=sysv 3898ce07328Smrg ;; 3908ce07328Smrg mingw64) 3918ce07328Smrg basic_machine=x86_64-pc 3928ce07328Smrg basic_os=mingw64 3938ce07328Smrg ;; 3948ce07328Smrg mingw32) 3958ce07328Smrg basic_machine=i686-pc 3968ce07328Smrg basic_os=mingw32 3978ce07328Smrg ;; 3988ce07328Smrg mingw32ce) 3998ce07328Smrg basic_machine=arm-unknown 4008ce07328Smrg basic_os=mingw32ce 4018ce07328Smrg ;; 4028ce07328Smrg monitor) 4038ce07328Smrg basic_machine=m68k-rom68k 4048ce07328Smrg basic_os=coff 4058ce07328Smrg ;; 4068ce07328Smrg morphos) 4078ce07328Smrg basic_machine=powerpc-unknown 4088ce07328Smrg basic_os=morphos 4098ce07328Smrg ;; 4108ce07328Smrg moxiebox) 4118ce07328Smrg basic_machine=moxie-unknown 4128ce07328Smrg basic_os=moxiebox 4138ce07328Smrg ;; 4148ce07328Smrg msdos) 4158ce07328Smrg basic_machine=i386-pc 4168ce07328Smrg basic_os=msdos 4178ce07328Smrg ;; 4188ce07328Smrg msys) 4198ce07328Smrg basic_machine=i686-pc 4208ce07328Smrg basic_os=msys 4218ce07328Smrg ;; 4228ce07328Smrg mvs) 4238ce07328Smrg basic_machine=i370-ibm 4248ce07328Smrg basic_os=mvs 4258ce07328Smrg ;; 4268ce07328Smrg nacl) 4278ce07328Smrg basic_machine=le32-unknown 4288ce07328Smrg basic_os=nacl 4298ce07328Smrg ;; 4308ce07328Smrg ncr3000) 4318ce07328Smrg basic_machine=i486-ncr 4328ce07328Smrg basic_os=sysv4 4338ce07328Smrg ;; 4348ce07328Smrg netbsd386) 4358ce07328Smrg basic_machine=i386-pc 4368ce07328Smrg basic_os=netbsd 4378ce07328Smrg ;; 4388ce07328Smrg netwinder) 4398ce07328Smrg basic_machine=armv4l-rebel 4408ce07328Smrg basic_os=linux 4418ce07328Smrg ;; 4428ce07328Smrg news | news700 | news800 | news900) 4438ce07328Smrg basic_machine=m68k-sony 4448ce07328Smrg basic_os=newsos 4458ce07328Smrg ;; 4468ce07328Smrg news1000) 4478ce07328Smrg basic_machine=m68030-sony 4488ce07328Smrg basic_os=newsos 4498ce07328Smrg ;; 4508ce07328Smrg necv70) 4518ce07328Smrg basic_machine=v70-nec 4528ce07328Smrg basic_os=sysv 4538ce07328Smrg ;; 4548ce07328Smrg nh3000) 4558ce07328Smrg basic_machine=m68k-harris 4568ce07328Smrg basic_os=cxux 4578ce07328Smrg ;; 4588ce07328Smrg nh[45]000) 4598ce07328Smrg basic_machine=m88k-harris 4608ce07328Smrg basic_os=cxux 4618ce07328Smrg ;; 4628ce07328Smrg nindy960) 4638ce07328Smrg basic_machine=i960-intel 4648ce07328Smrg basic_os=nindy 4658ce07328Smrg ;; 4668ce07328Smrg mon960) 4678ce07328Smrg basic_machine=i960-intel 4688ce07328Smrg basic_os=mon960 4698ce07328Smrg ;; 4708ce07328Smrg nonstopux) 4718ce07328Smrg basic_machine=mips-compaq 4728ce07328Smrg basic_os=nonstopux 4738ce07328Smrg ;; 4748ce07328Smrg os400) 4758ce07328Smrg basic_machine=powerpc-ibm 4768ce07328Smrg basic_os=os400 4778ce07328Smrg ;; 4788ce07328Smrg OSE68000 | ose68000) 4798ce07328Smrg basic_machine=m68000-ericsson 4808ce07328Smrg basic_os=ose 4818ce07328Smrg ;; 4828ce07328Smrg os68k) 4838ce07328Smrg basic_machine=m68k-none 4848ce07328Smrg basic_os=os68k 4858ce07328Smrg ;; 4868ce07328Smrg paragon) 4878ce07328Smrg basic_machine=i860-intel 4888ce07328Smrg basic_os=osf 4898ce07328Smrg ;; 4908ce07328Smrg parisc) 4918ce07328Smrg basic_machine=hppa-unknown 4928ce07328Smrg basic_os=linux 4938ce07328Smrg ;; 4948ce07328Smrg psp) 4958ce07328Smrg basic_machine=mipsallegrexel-sony 4968ce07328Smrg basic_os=psp 4978ce07328Smrg ;; 4988ce07328Smrg pw32) 4998ce07328Smrg basic_machine=i586-unknown 5008ce07328Smrg basic_os=pw32 5018ce07328Smrg ;; 5028ce07328Smrg rdos | rdos64) 5038ce07328Smrg basic_machine=x86_64-pc 5048ce07328Smrg basic_os=rdos 5058ce07328Smrg ;; 5068ce07328Smrg rdos32) 5078ce07328Smrg basic_machine=i386-pc 5088ce07328Smrg basic_os=rdos 5098ce07328Smrg ;; 5108ce07328Smrg rom68k) 5118ce07328Smrg basic_machine=m68k-rom68k 5128ce07328Smrg basic_os=coff 5138ce07328Smrg ;; 5148ce07328Smrg sa29200) 5158ce07328Smrg basic_machine=a29k-amd 5168ce07328Smrg basic_os=udi 5178ce07328Smrg ;; 5188ce07328Smrg sei) 5198ce07328Smrg basic_machine=mips-sei 5208ce07328Smrg basic_os=seiux 5218ce07328Smrg ;; 5228ce07328Smrg sequent) 5238ce07328Smrg basic_machine=i386-sequent 5248ce07328Smrg basic_os= 5258ce07328Smrg ;; 5268ce07328Smrg sps7) 5278ce07328Smrg basic_machine=m68k-bull 5288ce07328Smrg basic_os=sysv2 5298ce07328Smrg ;; 5308ce07328Smrg st2000) 5318ce07328Smrg basic_machine=m68k-tandem 5328ce07328Smrg basic_os= 5338ce07328Smrg ;; 5348ce07328Smrg stratus) 5358ce07328Smrg basic_machine=i860-stratus 5368ce07328Smrg basic_os=sysv4 5378ce07328Smrg ;; 5388ce07328Smrg sun2) 5398ce07328Smrg basic_machine=m68000-sun 5408ce07328Smrg basic_os= 5418ce07328Smrg ;; 5428ce07328Smrg sun2os3) 5438ce07328Smrg basic_machine=m68000-sun 5448ce07328Smrg basic_os=sunos3 5458ce07328Smrg ;; 5468ce07328Smrg sun2os4) 5478ce07328Smrg basic_machine=m68000-sun 5488ce07328Smrg basic_os=sunos4 5498ce07328Smrg ;; 5508ce07328Smrg sun3) 5518ce07328Smrg basic_machine=m68k-sun 5528ce07328Smrg basic_os= 5538ce07328Smrg ;; 5548ce07328Smrg sun3os3) 5558ce07328Smrg basic_machine=m68k-sun 5568ce07328Smrg basic_os=sunos3 5578ce07328Smrg ;; 5588ce07328Smrg sun3os4) 5598ce07328Smrg basic_machine=m68k-sun 5608ce07328Smrg basic_os=sunos4 5618ce07328Smrg ;; 5628ce07328Smrg sun4) 5638ce07328Smrg basic_machine=sparc-sun 5648ce07328Smrg basic_os= 5658ce07328Smrg ;; 5668ce07328Smrg sun4os3) 5678ce07328Smrg basic_machine=sparc-sun 5688ce07328Smrg basic_os=sunos3 5698ce07328Smrg ;; 5708ce07328Smrg sun4os4) 5718ce07328Smrg basic_machine=sparc-sun 5728ce07328Smrg basic_os=sunos4 5738ce07328Smrg ;; 5748ce07328Smrg sun4sol2) 5758ce07328Smrg basic_machine=sparc-sun 5768ce07328Smrg basic_os=solaris2 5778ce07328Smrg ;; 5788ce07328Smrg sun386 | sun386i | roadrunner) 5798ce07328Smrg basic_machine=i386-sun 5808ce07328Smrg basic_os= 5818ce07328Smrg ;; 5828ce07328Smrg sv1) 5838ce07328Smrg basic_machine=sv1-cray 5848ce07328Smrg basic_os=unicos 5858ce07328Smrg ;; 5868ce07328Smrg symmetry) 5878ce07328Smrg basic_machine=i386-sequent 5888ce07328Smrg basic_os=dynix 5898ce07328Smrg ;; 5908ce07328Smrg t3e) 5918ce07328Smrg basic_machine=alphaev5-cray 5928ce07328Smrg basic_os=unicos 5938ce07328Smrg ;; 5948ce07328Smrg t90) 5958ce07328Smrg basic_machine=t90-cray 5968ce07328Smrg basic_os=unicos 5978ce07328Smrg ;; 5988ce07328Smrg toad1) 5998ce07328Smrg basic_machine=pdp10-xkl 6008ce07328Smrg basic_os=tops20 6018ce07328Smrg ;; 6028ce07328Smrg tpf) 6038ce07328Smrg basic_machine=s390x-ibm 6048ce07328Smrg basic_os=tpf 6058ce07328Smrg ;; 6068ce07328Smrg udi29k) 6078ce07328Smrg basic_machine=a29k-amd 6088ce07328Smrg basic_os=udi 6098ce07328Smrg ;; 6108ce07328Smrg ultra3) 6118ce07328Smrg basic_machine=a29k-nyu 6128ce07328Smrg basic_os=sym1 6138ce07328Smrg ;; 6148ce07328Smrg v810 | necv810) 6158ce07328Smrg basic_machine=v810-nec 6168ce07328Smrg basic_os=none 6178ce07328Smrg ;; 6188ce07328Smrg vaxv) 6198ce07328Smrg basic_machine=vax-dec 6208ce07328Smrg basic_os=sysv 6218ce07328Smrg ;; 6228ce07328Smrg vms) 6238ce07328Smrg basic_machine=vax-dec 6248ce07328Smrg basic_os=vms 6258ce07328Smrg ;; 6268ce07328Smrg vsta) 6278ce07328Smrg basic_machine=i386-pc 6288ce07328Smrg basic_os=vsta 6298ce07328Smrg ;; 6308ce07328Smrg vxworks960) 6318ce07328Smrg basic_machine=i960-wrs 6328ce07328Smrg basic_os=vxworks 6338ce07328Smrg ;; 6348ce07328Smrg vxworks68) 6358ce07328Smrg basic_machine=m68k-wrs 6368ce07328Smrg basic_os=vxworks 6378ce07328Smrg ;; 6388ce07328Smrg vxworks29k) 6398ce07328Smrg basic_machine=a29k-wrs 6408ce07328Smrg basic_os=vxworks 6418ce07328Smrg ;; 6428ce07328Smrg xbox) 6438ce07328Smrg basic_machine=i686-pc 6448ce07328Smrg basic_os=mingw32 6458ce07328Smrg ;; 6468ce07328Smrg ymp) 6478ce07328Smrg basic_machine=ymp-cray 6488ce07328Smrg basic_os=unicos 6498ce07328Smrg ;; 6508ce07328Smrg *) 6518ce07328Smrg basic_machine=$1 6528ce07328Smrg basic_os= 6538ce07328Smrg ;; 6548ce07328Smrg esac 655c582b7e3Smrg ;; 656c582b7e3Smrgesac 657c582b7e3Smrg 6588ce07328Smrg# Decode 1-component or ad-hoc basic machines 659c582b7e3Smrgcase $basic_machine in 6608ce07328Smrg # Here we handle the default manufacturer of certain CPU types. It is in 6618ce07328Smrg # some cases the only manufacturer, in others, it is the most popular. 6628ce07328Smrg w89k) 6638ce07328Smrg cpu=hppa1.1 6648ce07328Smrg vendor=winbond 665a56d54acSmrg ;; 6668ce07328Smrg op50n) 6678ce07328Smrg cpu=hppa1.1 6688ce07328Smrg vendor=oki 669c582b7e3Smrg ;; 6708ce07328Smrg op60c) 6718ce07328Smrg cpu=hppa1.1 6728ce07328Smrg vendor=oki 673c582b7e3Smrg ;; 6748ce07328Smrg ibm*) 6758ce07328Smrg cpu=i370 6768ce07328Smrg vendor=ibm 677c582b7e3Smrg ;; 6788ce07328Smrg orion105) 6798ce07328Smrg cpu=clipper 6808ce07328Smrg vendor=highlevel 6810496e070Smrg ;; 6828ce07328Smrg mac | mpw | mac-mpw) 6838ce07328Smrg cpu=m68k 6848ce07328Smrg vendor=apple 68542a55b46Smrg ;; 6868ce07328Smrg pmac | pmac-mpw) 6878ce07328Smrg cpu=powerpc 6888ce07328Smrg vendor=apple 68942a55b46Smrg ;; 69042a55b46Smrg 691c582b7e3Smrg # Recognize the various machine names and aliases which stand 692c582b7e3Smrg # for a CPU type and a company and sometimes even an OS. 693c582b7e3Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6948ce07328Smrg cpu=m68000 6958ce07328Smrg vendor=att 696c582b7e3Smrg ;; 697c582b7e3Smrg 3b*) 6988ce07328Smrg cpu=we32k 6998ce07328Smrg vendor=att 70019019ffeSmrg ;; 70142a55b46Smrg bluegene*) 7028ce07328Smrg cpu=powerpc 7038ce07328Smrg vendor=ibm 7048ce07328Smrg basic_os=cnk 705c582b7e3Smrg ;; 706c582b7e3Smrg decsystem10* | dec10*) 7078ce07328Smrg cpu=pdp10 7088ce07328Smrg vendor=dec 7098ce07328Smrg basic_os=tops10 710c582b7e3Smrg ;; 711c582b7e3Smrg decsystem20* | dec20*) 7128ce07328Smrg cpu=pdp10 7138ce07328Smrg vendor=dec 7148ce07328Smrg basic_os=tops20 715c582b7e3Smrg ;; 716c582b7e3Smrg delta | 3300 | motorola-3300 | motorola-delta \ 717c582b7e3Smrg | 3300-motorola | delta-motorola) 7188ce07328Smrg cpu=m68k 7198ce07328Smrg vendor=motorola 720c582b7e3Smrg ;; 7218ce07328Smrg dpx2*) 7228ce07328Smrg cpu=m68k 7238ce07328Smrg vendor=bull 7248ce07328Smrg basic_os=sysv3 725c582b7e3Smrg ;; 726c582b7e3Smrg encore | umax | mmax) 7278ce07328Smrg cpu=ns32k 7288ce07328Smrg vendor=encore 729c582b7e3Smrg ;; 7308ce07328Smrg elxsi) 7318ce07328Smrg cpu=elxsi 7328ce07328Smrg vendor=elxsi 7338ce07328Smrg basic_os=${basic_os:-bsd} 734c582b7e3Smrg ;; 735c582b7e3Smrg fx2800) 7368ce07328Smrg cpu=i860 7378ce07328Smrg vendor=alliant 738c582b7e3Smrg ;; 739c582b7e3Smrg genix) 7408ce07328Smrg cpu=ns32k 7418ce07328Smrg vendor=ns 742c582b7e3Smrg ;; 743c582b7e3Smrg h3050r* | hiux*) 7448ce07328Smrg cpu=hppa1.1 7458ce07328Smrg vendor=hitachi 7468ce07328Smrg basic_os=hiuxwe2 747c582b7e3Smrg ;; 748c582b7e3Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7498ce07328Smrg cpu=hppa1.0 7508ce07328Smrg vendor=hp 751c582b7e3Smrg ;; 752c582b7e3Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7538ce07328Smrg cpu=m68000 7548ce07328Smrg vendor=hp 755c582b7e3Smrg ;; 756c582b7e3Smrg hp9k3[2-9][0-9]) 7578ce07328Smrg cpu=m68k 7588ce07328Smrg vendor=hp 759c582b7e3Smrg ;; 760c582b7e3Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7618ce07328Smrg cpu=hppa1.0 7628ce07328Smrg vendor=hp 763c582b7e3Smrg ;; 764c582b7e3Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7658ce07328Smrg cpu=hppa1.1 7668ce07328Smrg vendor=hp 767c582b7e3Smrg ;; 768c582b7e3Smrg hp9k78[0-9] | hp78[0-9]) 769c582b7e3Smrg # FIXME: really hppa2.0-hp 7708ce07328Smrg cpu=hppa1.1 7718ce07328Smrg vendor=hp 772c582b7e3Smrg ;; 773c582b7e3Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774c582b7e3Smrg # FIXME: really hppa2.0-hp 7758ce07328Smrg cpu=hppa1.1 7768ce07328Smrg vendor=hp 777c582b7e3Smrg ;; 778c582b7e3Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7798ce07328Smrg cpu=hppa1.1 7808ce07328Smrg vendor=hp 781c582b7e3Smrg ;; 782c582b7e3Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7838ce07328Smrg cpu=hppa1.0 7848ce07328Smrg vendor=hp 785c582b7e3Smrg ;; 786c582b7e3Smrg i*86v32) 7878ce07328Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7888ce07328Smrg vendor=pc 7898ce07328Smrg basic_os=sysv32 790c582b7e3Smrg ;; 791c582b7e3Smrg i*86v4*) 7928ce07328Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7938ce07328Smrg vendor=pc 7948ce07328Smrg basic_os=sysv4 795c582b7e3Smrg ;; 796c582b7e3Smrg i*86v) 7978ce07328Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7988ce07328Smrg vendor=pc 7998ce07328Smrg basic_os=sysv 800c582b7e3Smrg ;; 801c582b7e3Smrg i*86sol2) 8028ce07328Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8038ce07328Smrg vendor=pc 8048ce07328Smrg basic_os=solaris2 805c582b7e3Smrg ;; 8068ce07328Smrg j90 | j90-cray) 8078ce07328Smrg cpu=j90 8088ce07328Smrg vendor=cray 8098ce07328Smrg basic_os=${basic_os:-unicos} 810c582b7e3Smrg ;; 811c582b7e3Smrg iris | iris4d) 8128ce07328Smrg cpu=mips 8138ce07328Smrg vendor=sgi 8148ce07328Smrg case $basic_os in 8158ce07328Smrg irix*) 816c582b7e3Smrg ;; 817c582b7e3Smrg *) 8188ce07328Smrg basic_os=irix4 819c582b7e3Smrg ;; 820c582b7e3Smrg esac 821c582b7e3Smrg ;; 822c582b7e3Smrg miniframe) 8238ce07328Smrg cpu=m68000 8248ce07328Smrg vendor=convergent 82542a55b46Smrg ;; 8268ce07328Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8278ce07328Smrg cpu=m68k 8288ce07328Smrg vendor=atari 8298ce07328Smrg basic_os=mint 830c582b7e3Smrg ;; 831c582b7e3Smrg news-3600 | risc-news) 8328ce07328Smrg cpu=mips 8338ce07328Smrg vendor=sony 8348ce07328Smrg basic_os=newsos 8358ce07328Smrg ;; 8368ce07328Smrg next | m*-next) 8378ce07328Smrg cpu=m68k 8388ce07328Smrg vendor=next 8398ce07328Smrg case $basic_os in 8408ce07328Smrg openstep*) 8418ce07328Smrg ;; 8428ce07328Smrg nextstep*) 843c582b7e3Smrg ;; 8448ce07328Smrg ns2*) 8458ce07328Smrg basic_os=nextstep2 846c582b7e3Smrg ;; 847c582b7e3Smrg *) 8488ce07328Smrg basic_os=nextstep3 849c582b7e3Smrg ;; 850c582b7e3Smrg esac 851c582b7e3Smrg ;; 852c582b7e3Smrg np1) 8538ce07328Smrg cpu=np1 8548ce07328Smrg vendor=gould 855c582b7e3Smrg ;; 856c582b7e3Smrg op50n-* | op60c-*) 8578ce07328Smrg cpu=hppa1.1 8588ce07328Smrg vendor=oki 8598ce07328Smrg basic_os=proelf 860c582b7e3Smrg ;; 861c582b7e3Smrg pa-hitachi) 8628ce07328Smrg cpu=hppa1.1 8638ce07328Smrg vendor=hitachi 8648ce07328Smrg basic_os=hiuxwe2 86519019ffeSmrg ;; 866c582b7e3Smrg pbd) 8678ce07328Smrg cpu=sparc 8688ce07328Smrg vendor=tti 869c582b7e3Smrg ;; 870c582b7e3Smrg pbb) 8718ce07328Smrg cpu=m68k 8728ce07328Smrg vendor=tti 873c582b7e3Smrg ;; 8748ce07328Smrg pc532) 8758ce07328Smrg cpu=ns32k 8768ce07328Smrg vendor=pc532 877c582b7e3Smrg ;; 878c582b7e3Smrg pn) 8798ce07328Smrg cpu=pn 8808ce07328Smrg vendor=gould 881c582b7e3Smrg ;; 8828ce07328Smrg power) 8838ce07328Smrg cpu=power 8848ce07328Smrg vendor=ibm 885c582b7e3Smrg ;; 886c582b7e3Smrg ps2) 8878ce07328Smrg cpu=i386 8888ce07328Smrg vendor=ibm 889c582b7e3Smrg ;; 890c582b7e3Smrg rm[46]00) 8918ce07328Smrg cpu=mips 8928ce07328Smrg vendor=siemens 893c582b7e3Smrg ;; 894c582b7e3Smrg rtpc | rtpc-*) 8958ce07328Smrg cpu=romp 8968ce07328Smrg vendor=ibm 897c582b7e3Smrg ;; 8988ce07328Smrg sde) 8998ce07328Smrg cpu=mipsisa32 9008ce07328Smrg vendor=sde 9018ce07328Smrg basic_os=${basic_os:-elf} 902c582b7e3Smrg ;; 9038ce07328Smrg simso-wrs) 9048ce07328Smrg cpu=sparclite 9058ce07328Smrg vendor=wrs 9068ce07328Smrg basic_os=vxworks 907c582b7e3Smrg ;; 9088ce07328Smrg tower | tower-32) 9098ce07328Smrg cpu=m68k 9108ce07328Smrg vendor=ncr 911c582b7e3Smrg ;; 9128ce07328Smrg vpp*|vx|vx-*) 9138ce07328Smrg cpu=f301 9148ce07328Smrg vendor=fujitsu 915c582b7e3Smrg ;; 9168ce07328Smrg w65) 9178ce07328Smrg cpu=w65 9188ce07328Smrg vendor=wdc 919c582b7e3Smrg ;; 9208ce07328Smrg w89k-*) 9218ce07328Smrg cpu=hppa1.1 9228ce07328Smrg vendor=winbond 9238ce07328Smrg basic_os=proelf 924c582b7e3Smrg ;; 9258ce07328Smrg none) 9268ce07328Smrg cpu=none 9278ce07328Smrg vendor=none 928c582b7e3Smrg ;; 9298ce07328Smrg leon|leon[3-9]) 9308ce07328Smrg cpu=sparc 9318ce07328Smrg vendor=$basic_machine 932c582b7e3Smrg ;; 9338ce07328Smrg leon-*|leon[3-9]-*) 9348ce07328Smrg cpu=sparc 9358ce07328Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936c582b7e3Smrg ;; 9378ce07328Smrg 9388ce07328Smrg *-*) 9398ce07328Smrg # shellcheck disable=SC2162 9408ce07328Smrg saved_IFS=$IFS 9418ce07328Smrg IFS="-" read cpu vendor <<EOF 9428ce07328Smrg$basic_machine 9438ce07328SmrgEOF 9448ce07328Smrg IFS=$saved_IFS 945c582b7e3Smrg ;; 9468ce07328Smrg # We use `pc' rather than `unknown' 9478ce07328Smrg # because (1) that's what they normally are, and 9488ce07328Smrg # (2) the word "unknown" tends to confuse beginning users. 9498ce07328Smrg i*86 | x86_64) 9508ce07328Smrg cpu=$basic_machine 9518ce07328Smrg vendor=pc 952c582b7e3Smrg ;; 9538ce07328Smrg # These rules are duplicated from below for sake of the special case above; 9548ce07328Smrg # i.e. things that normalized to x86 arches should also default to "pc" 9558ce07328Smrg pc98) 9568ce07328Smrg cpu=i386 9578ce07328Smrg vendor=pc 958c582b7e3Smrg ;; 9598ce07328Smrg x64 | amd64) 9608ce07328Smrg cpu=x86_64 9618ce07328Smrg vendor=pc 962c582b7e3Smrg ;; 9638ce07328Smrg # Recognize the basic CPU types without company name. 9648ce07328Smrg *) 9658ce07328Smrg cpu=$basic_machine 9668ce07328Smrg vendor=unknown 96742a55b46Smrg ;; 9688ce07328Smrgesac 9698ce07328Smrg 9708ce07328Smrgunset -v basic_machine 9718ce07328Smrg 9728ce07328Smrg# Decode basic machines in the full and proper CPU-Company form. 9738ce07328Smrgcase $cpu-$vendor in 9748ce07328Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9758ce07328Smrg # some cases the only manufacturer, in others, it is the most popular. 9768ce07328Smrg craynv-unknown) 9778ce07328Smrg vendor=cray 9788ce07328Smrg basic_os=${basic_os:-unicosmp} 979c582b7e3Smrg ;; 9808ce07328Smrg c90-unknown | c90-cray) 9818ce07328Smrg vendor=cray 9828ce07328Smrg basic_os=${Basic_os:-unicos} 983c582b7e3Smrg ;; 9848ce07328Smrg fx80-unknown) 9858ce07328Smrg vendor=alliant 986c582b7e3Smrg ;; 9878ce07328Smrg romp-unknown) 9888ce07328Smrg vendor=ibm 989c582b7e3Smrg ;; 9908ce07328Smrg mmix-unknown) 9918ce07328Smrg vendor=knuth 992c582b7e3Smrg ;; 9938ce07328Smrg microblaze-unknown | microblazeel-unknown) 9948ce07328Smrg vendor=xilinx 995c582b7e3Smrg ;; 9968ce07328Smrg rs6000-unknown) 9978ce07328Smrg vendor=ibm 998c582b7e3Smrg ;; 9998ce07328Smrg vax-unknown) 10008ce07328Smrg vendor=dec 1001c582b7e3Smrg ;; 10028ce07328Smrg pdp11-unknown) 10038ce07328Smrg vendor=dec 1004c582b7e3Smrg ;; 10058ce07328Smrg we32k-unknown) 10068ce07328Smrg vendor=att 1007c582b7e3Smrg ;; 10088ce07328Smrg cydra-unknown) 10098ce07328Smrg vendor=cydrome 1010c582b7e3Smrg ;; 10118ce07328Smrg i370-ibm*) 10128ce07328Smrg vendor=ibm 1013c582b7e3Smrg ;; 10148ce07328Smrg orion-unknown) 10158ce07328Smrg vendor=highlevel 1016c582b7e3Smrg ;; 10178ce07328Smrg xps-unknown | xps100-unknown) 10188ce07328Smrg cpu=xps100 10198ce07328Smrg vendor=honeywell 1020c582b7e3Smrg ;; 10218ce07328Smrg 10228ce07328Smrg # Here we normalize CPU types with a missing or matching vendor 10238ce07328Smrg dpx20-unknown | dpx20-bull) 10248ce07328Smrg cpu=rs6000 10258ce07328Smrg vendor=bull 10268ce07328Smrg basic_os=${basic_os:-bosx} 1027c582b7e3Smrg ;; 10288ce07328Smrg 10298ce07328Smrg # Here we normalize CPU types irrespective of the vendor 10308ce07328Smrg amd64-*) 10318ce07328Smrg cpu=x86_64 103219019ffeSmrg ;; 10338ce07328Smrg blackfin-*) 10348ce07328Smrg cpu=bfin 10358ce07328Smrg basic_os=linux 1036c582b7e3Smrg ;; 10378ce07328Smrg c54x-*) 10388ce07328Smrg cpu=tic54x 1039c582b7e3Smrg ;; 10408ce07328Smrg c55x-*) 10418ce07328Smrg cpu=tic55x 1042c582b7e3Smrg ;; 10438ce07328Smrg c6x-*) 10448ce07328Smrg cpu=tic6x 1045c582b7e3Smrg ;; 10468ce07328Smrg e500v[12]-*) 10478ce07328Smrg cpu=powerpc 10488ce07328Smrg basic_os=${basic_os}"spe" 1049c582b7e3Smrg ;; 10508ce07328Smrg mips3*-*) 10518ce07328Smrg cpu=mips64 1052c582b7e3Smrg ;; 10538ce07328Smrg ms1-*) 10548ce07328Smrg cpu=mt 1055c582b7e3Smrg ;; 10568ce07328Smrg m68knommu-*) 10578ce07328Smrg cpu=m68k 10588ce07328Smrg basic_os=linux 1059c582b7e3Smrg ;; 10608ce07328Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10618ce07328Smrg cpu=s12z 1062c582b7e3Smrg ;; 10638ce07328Smrg openrisc-*) 10648ce07328Smrg cpu=or32 1065c582b7e3Smrg ;; 10668ce07328Smrg parisc-*) 10678ce07328Smrg cpu=hppa 10688ce07328Smrg basic_os=linux 1069c582b7e3Smrg ;; 10708ce07328Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10718ce07328Smrg cpu=i586 1072c582b7e3Smrg ;; 10738ce07328Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 10748ce07328Smrg cpu=i686 1075c582b7e3Smrg ;; 10768ce07328Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10778ce07328Smrg cpu=i686 1078c582b7e3Smrg ;; 10798ce07328Smrg pentium4-*) 10808ce07328Smrg cpu=i786 1081c582b7e3Smrg ;; 10828ce07328Smrg pc98-*) 10838ce07328Smrg cpu=i386 1084c582b7e3Smrg ;; 10858ce07328Smrg ppc-* | ppcbe-*) 10868ce07328Smrg cpu=powerpc 1087c582b7e3Smrg ;; 10888ce07328Smrg ppcle-* | powerpclittle-*) 10898ce07328Smrg cpu=powerpcle 1090c582b7e3Smrg ;; 10918ce07328Smrg ppc64-*) 10928ce07328Smrg cpu=powerpc64 109342a55b46Smrg ;; 10948ce07328Smrg ppc64le-* | powerpc64little-*) 10958ce07328Smrg cpu=powerpc64le 1096c582b7e3Smrg ;; 10978ce07328Smrg sb1-*) 10988ce07328Smrg cpu=mipsisa64sb1 1099c582b7e3Smrg ;; 11008ce07328Smrg sb1el-*) 11018ce07328Smrg cpu=mipsisa64sb1el 110242a55b46Smrg ;; 11038ce07328Smrg sh5e[lb]-*) 11048ce07328Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1105c582b7e3Smrg ;; 11068ce07328Smrg spur-*) 11078ce07328Smrg cpu=spur 1108c582b7e3Smrg ;; 11098ce07328Smrg strongarm-* | thumb-*) 11108ce07328Smrg cpu=arm 1111c582b7e3Smrg ;; 11128ce07328Smrg tx39-*) 11138ce07328Smrg cpu=mipstx39 1114c582b7e3Smrg ;; 11158ce07328Smrg tx39el-*) 11168ce07328Smrg cpu=mipstx39el 1117c582b7e3Smrg ;; 11188ce07328Smrg x64-*) 11198ce07328Smrg cpu=x86_64 1120c582b7e3Smrg ;; 11218ce07328Smrg xscale-* | xscalee[bl]-*) 11228ce07328Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1123c582b7e3Smrg ;; 11248ce07328Smrg arm64-*) 11258ce07328Smrg cpu=aarch64 1126c582b7e3Smrg ;; 11278ce07328Smrg 11288ce07328Smrg # Recognize the canonical CPU Types that limit and/or modify the 11298ce07328Smrg # company names they are paired with. 11308ce07328Smrg cr16-*) 11318ce07328Smrg basic_os=${basic_os:-elf} 1132c582b7e3Smrg ;; 11338ce07328Smrg crisv32-* | etraxfs*-*) 11348ce07328Smrg cpu=crisv32 11358ce07328Smrg vendor=axis 1136c582b7e3Smrg ;; 11378ce07328Smrg cris-* | etrax*-*) 11388ce07328Smrg cpu=cris 11398ce07328Smrg vendor=axis 1140c582b7e3Smrg ;; 11418ce07328Smrg crx-*) 11428ce07328Smrg basic_os=${basic_os:-elf} 1143c582b7e3Smrg ;; 11448ce07328Smrg neo-tandem) 11458ce07328Smrg cpu=neo 11468ce07328Smrg vendor=tandem 1147c582b7e3Smrg ;; 11488ce07328Smrg nse-tandem) 11498ce07328Smrg cpu=nse 11508ce07328Smrg vendor=tandem 1151c582b7e3Smrg ;; 11528ce07328Smrg nsr-tandem) 11538ce07328Smrg cpu=nsr 11548ce07328Smrg vendor=tandem 1155c582b7e3Smrg ;; 11568ce07328Smrg nsv-tandem) 11578ce07328Smrg cpu=nsv 11588ce07328Smrg vendor=tandem 1159c582b7e3Smrg ;; 11608ce07328Smrg nsx-tandem) 11618ce07328Smrg cpu=nsx 11628ce07328Smrg vendor=tandem 1163c582b7e3Smrg ;; 11648ce07328Smrg mipsallegrexel-sony) 11658ce07328Smrg cpu=mipsallegrexel 11668ce07328Smrg vendor=sony 1167c582b7e3Smrg ;; 11688ce07328Smrg tile*-*) 11698ce07328Smrg basic_os=${basic_os:-linux-gnu} 1170c582b7e3Smrg ;; 11718ce07328Smrg 1172c582b7e3Smrg *) 11738ce07328Smrg # Recognize the canonical CPU types that are allowed with any 11748ce07328Smrg # company name. 11758ce07328Smrg case $cpu in 11768ce07328Smrg 1750a | 580 \ 11778ce07328Smrg | a29k \ 11788ce07328Smrg | aarch64 | aarch64_be \ 11798ce07328Smrg | abacus \ 11808ce07328Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11818ce07328Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11828ce07328Smrg | alphapca5[67] | alpha64pca5[67] \ 11838ce07328Smrg | am33_2.0 \ 11848ce07328Smrg | amdgcn \ 11858ce07328Smrg | arc | arceb | arc32 | arc64 \ 11868ce07328Smrg | arm | arm[lb]e | arme[lb] | armv* \ 11878ce07328Smrg | avr | avr32 \ 11888ce07328Smrg | asmjs \ 11898ce07328Smrg | ba \ 11908ce07328Smrg | be32 | be64 \ 11918ce07328Smrg | bfin | bpf | bs2000 \ 11928ce07328Smrg | c[123]* | c30 | [cjt]90 | c4x \ 11938ce07328Smrg | c8051 | clipper | craynv | csky | cydra \ 11948ce07328Smrg | d10v | d30v | dlx | dsp16xx \ 11958ce07328Smrg | e2k | elxsi | epiphany \ 11968ce07328Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 11978ce07328Smrg | h8300 | h8500 \ 11988ce07328Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 11998ce07328Smrg | hexagon \ 12008ce07328Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12018ce07328Smrg | ip2k | iq2000 \ 12028ce07328Smrg | k1om \ 12038ce07328Smrg | le32 | le64 \ 12048ce07328Smrg | lm32 \ 12058ce07328Smrg | loongarch32 | loongarch64 | loongarchx32 \ 12068ce07328Smrg | m32c | m32r | m32rle \ 12078ce07328Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12088ce07328Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12098ce07328Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12108ce07328Smrg | microblaze | microblazeel \ 12118ce07328Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12128ce07328Smrg | mips16 \ 12138ce07328Smrg | mips64 | mips64eb | mips64el \ 12148ce07328Smrg | mips64octeon | mips64octeonel \ 12158ce07328Smrg | mips64orion | mips64orionel \ 12168ce07328Smrg | mips64r5900 | mips64r5900el \ 12178ce07328Smrg | mips64vr | mips64vrel \ 12188ce07328Smrg | mips64vr4100 | mips64vr4100el \ 12198ce07328Smrg | mips64vr4300 | mips64vr4300el \ 12208ce07328Smrg | mips64vr5000 | mips64vr5000el \ 12218ce07328Smrg | mips64vr5900 | mips64vr5900el \ 12228ce07328Smrg | mipsisa32 | mipsisa32el \ 12238ce07328Smrg | mipsisa32r2 | mipsisa32r2el \ 12248ce07328Smrg | mipsisa32r3 | mipsisa32r3el \ 12258ce07328Smrg | mipsisa32r5 | mipsisa32r5el \ 12268ce07328Smrg | mipsisa32r6 | mipsisa32r6el \ 12278ce07328Smrg | mipsisa64 | mipsisa64el \ 12288ce07328Smrg | mipsisa64r2 | mipsisa64r2el \ 12298ce07328Smrg | mipsisa64r3 | mipsisa64r3el \ 12308ce07328Smrg | mipsisa64r5 | mipsisa64r5el \ 12318ce07328Smrg | mipsisa64r6 | mipsisa64r6el \ 12328ce07328Smrg | mipsisa64sb1 | mipsisa64sb1el \ 12338ce07328Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 12348ce07328Smrg | mipsr5900 | mipsr5900el \ 12358ce07328Smrg | mipstx39 | mipstx39el \ 12368ce07328Smrg | mmix \ 12378ce07328Smrg | mn10200 | mn10300 \ 12388ce07328Smrg | moxie \ 12398ce07328Smrg | mt \ 12408ce07328Smrg | msp430 \ 12418ce07328Smrg | nds32 | nds32le | nds32be \ 12428ce07328Smrg | nfp \ 12438ce07328Smrg | nios | nios2 | nios2eb | nios2el \ 12448ce07328Smrg | none | np1 | ns16k | ns32k | nvptx \ 12458ce07328Smrg | open8 \ 12468ce07328Smrg | or1k* \ 12478ce07328Smrg | or32 \ 12488ce07328Smrg | orion \ 12498ce07328Smrg | picochip \ 12508ce07328Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12518ce07328Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12528ce07328Smrg | pru \ 12538ce07328Smrg | pyramid \ 12548ce07328Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12558ce07328Smrg | rl78 | romp | rs6000 | rx \ 12568ce07328Smrg | s390 | s390x \ 12578ce07328Smrg | score \ 12588ce07328Smrg | sh | shl \ 12598ce07328Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12608ce07328Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12618ce07328Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12628ce07328Smrg | sparclite \ 12638ce07328Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12648ce07328Smrg | spu \ 12658ce07328Smrg | tahoe \ 12668ce07328Smrg | thumbv7* \ 12678ce07328Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12688ce07328Smrg | tron \ 12698ce07328Smrg | ubicom32 \ 12708ce07328Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12718ce07328Smrg | vax \ 12728ce07328Smrg | visium \ 12738ce07328Smrg | w65 \ 12748ce07328Smrg | wasm32 | wasm64 \ 12758ce07328Smrg | we32k \ 12768ce07328Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12778ce07328Smrg | xstormy16 | xtensa* \ 12788ce07328Smrg | ymp \ 12798ce07328Smrg | z8k | z80) 12808ce07328Smrg ;; 12818ce07328Smrg 12828ce07328Smrg *) 12838ce07328Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12848ce07328Smrg exit 1 12858ce07328Smrg ;; 12868ce07328Smrg esac 1287c582b7e3Smrg ;; 1288c582b7e3Smrgesac 1289c582b7e3Smrg 1290c582b7e3Smrg# Here we canonicalize certain aliases for manufacturers. 12918ce07328Smrgcase $vendor in 12928ce07328Smrg digital*) 12938ce07328Smrg vendor=dec 1294c582b7e3Smrg ;; 12958ce07328Smrg commodore*) 12968ce07328Smrg vendor=cbm 1297c582b7e3Smrg ;; 1298c582b7e3Smrg *) 1299c582b7e3Smrg ;; 1300c582b7e3Smrgesac 1301c582b7e3Smrg 1302c582b7e3Smrg# Decode manufacturer-specific aliases for certain operating systems. 1303c582b7e3Smrg 13048ce07328Smrgif test x$basic_os != x 1305c582b7e3Smrgthen 13068ce07328Smrg 13078ce07328Smrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 13088ce07328Smrg# set os. 13098ce07328Smrgcase $basic_os in 13108ce07328Smrg gnu/linux*) 13118ce07328Smrg kernel=linux 13128ce07328Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13138ce07328Smrg ;; 13148ce07328Smrg os2-emx) 13158ce07328Smrg kernel=os2 13168ce07328Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13178ce07328Smrg ;; 13188ce07328Smrg nto-qnx*) 13198ce07328Smrg kernel=nto 13208ce07328Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13218ce07328Smrg ;; 13228ce07328Smrg *-*) 13238ce07328Smrg # shellcheck disable=SC2162 13248ce07328Smrg saved_IFS=$IFS 13258ce07328Smrg IFS="-" read kernel os <<EOF 13268ce07328Smrg$basic_os 13278ce07328SmrgEOF 13288ce07328Smrg IFS=$saved_IFS 13298ce07328Smrg ;; 13308ce07328Smrg # Default OS when just kernel was specified 13318ce07328Smrg nto*) 13328ce07328Smrg kernel=nto 13338ce07328Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13348ce07328Smrg ;; 13358ce07328Smrg linux*) 13368ce07328Smrg kernel=linux 13378ce07328Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13388ce07328Smrg ;; 13398ce07328Smrg *) 13408ce07328Smrg kernel= 13418ce07328Smrg os=$basic_os 13428ce07328Smrg ;; 13438ce07328Smrgesac 13448ce07328Smrg 13458ce07328Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13468ce07328Smrg# etc.) 1347c582b7e3Smrgcase $os in 13488ce07328Smrg # First match some system type aliases that might get confused 13498ce07328Smrg # with valid system types. 13508ce07328Smrg # solaris* is a basic system type, with this one exception. 13518ce07328Smrg auroraux) 13528ce07328Smrg os=auroraux 135342a55b46Smrg ;; 13548ce07328Smrg bluegene*) 13558ce07328Smrg os=cnk 1356c582b7e3Smrg ;; 13578ce07328Smrg solaris1 | solaris1.*) 13588ce07328Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1359c582b7e3Smrg ;; 13608ce07328Smrg solaris) 13618ce07328Smrg os=solaris2 1362c582b7e3Smrg ;; 13638ce07328Smrg unixware*) 13648ce07328Smrg os=sysv4.2uw 1365c582b7e3Smrg ;; 13668ce07328Smrg # es1800 is here to avoid being matched by es* (a different OS) 13678ce07328Smrg es1800*) 13688ce07328Smrg os=ose 1369c582b7e3Smrg ;; 13708ce07328Smrg # Some version numbers need modification 13718ce07328Smrg chorusos*) 13728ce07328Smrg os=chorusos 1373c582b7e3Smrg ;; 13748ce07328Smrg isc) 13758ce07328Smrg os=isc2.2 1376c582b7e3Smrg ;; 13778ce07328Smrg sco6) 13788ce07328Smrg os=sco5v6 1379c582b7e3Smrg ;; 13808ce07328Smrg sco5) 13818ce07328Smrg os=sco3.2v5 1382c582b7e3Smrg ;; 13838ce07328Smrg sco4) 13848ce07328Smrg os=sco3.2v4 1385c582b7e3Smrg ;; 13868ce07328Smrg sco3.2.[4-9]*) 13878ce07328Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1388c582b7e3Smrg ;; 13898ce07328Smrg sco*v* | scout) 13908ce07328Smrg # Don't match below 1391c582b7e3Smrg ;; 13928ce07328Smrg sco*) 13938ce07328Smrg os=sco3.2v2 1394c582b7e3Smrg ;; 13958ce07328Smrg psos*) 13968ce07328Smrg os=psos 1397c582b7e3Smrg ;; 13988ce07328Smrg qnx*) 13998ce07328Smrg os=qnx 1400c582b7e3Smrg ;; 14018ce07328Smrg hiux*) 14028ce07328Smrg os=hiuxwe2 1403c582b7e3Smrg ;; 14048ce07328Smrg lynx*178) 14058ce07328Smrg os=lynxos178 1406c582b7e3Smrg ;; 14078ce07328Smrg lynx*5) 14088ce07328Smrg os=lynxos5 1409c582b7e3Smrg ;; 14108ce07328Smrg lynxos*) 14118ce07328Smrg # don't get caught up in next wildcard 1412c582b7e3Smrg ;; 14138ce07328Smrg lynx*) 14148ce07328Smrg os=lynxos 1415c582b7e3Smrg ;; 14168ce07328Smrg mac[0-9]*) 14178ce07328Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1418c582b7e3Smrg ;; 14198ce07328Smrg opened*) 14208ce07328Smrg os=openedition 1421c582b7e3Smrg ;; 14228ce07328Smrg os400*) 14238ce07328Smrg os=os400 1424c582b7e3Smrg ;; 14258ce07328Smrg sunos5*) 14268ce07328Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1427c582b7e3Smrg ;; 14288ce07328Smrg sunos6*) 14298ce07328Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1430c582b7e3Smrg ;; 14318ce07328Smrg wince*) 14328ce07328Smrg os=wince 1433c582b7e3Smrg ;; 14348ce07328Smrg utek*) 14358ce07328Smrg os=bsd 1436c582b7e3Smrg ;; 14378ce07328Smrg dynix*) 14388ce07328Smrg os=bsd 1439c582b7e3Smrg ;; 14408ce07328Smrg acis*) 14418ce07328Smrg os=aos 1442c582b7e3Smrg ;; 14438ce07328Smrg atheos*) 14448ce07328Smrg os=atheos 1445c582b7e3Smrg ;; 14468ce07328Smrg syllable*) 14478ce07328Smrg os=syllable 1448c582b7e3Smrg ;; 14498ce07328Smrg 386bsd) 14508ce07328Smrg os=bsd 1451c582b7e3Smrg ;; 14528ce07328Smrg ctix* | uts*) 14538ce07328Smrg os=sysv 1454c582b7e3Smrg ;; 14558ce07328Smrg nova*) 14568ce07328Smrg os=rtmk-nova 1457c582b7e3Smrg ;; 14588ce07328Smrg ns2) 14598ce07328Smrg os=nextstep2 1460c582b7e3Smrg ;; 14618ce07328Smrg # Preserve the version number of sinix5. 14628ce07328Smrg sinix5.*) 14638ce07328Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1464c582b7e3Smrg ;; 14658ce07328Smrg sinix*) 14668ce07328Smrg os=sysv4 1467c582b7e3Smrg ;; 14688ce07328Smrg tpf*) 14698ce07328Smrg os=tpf 1470c582b7e3Smrg ;; 14718ce07328Smrg triton*) 14728ce07328Smrg os=sysv3 1473c582b7e3Smrg ;; 14748ce07328Smrg oss*) 14758ce07328Smrg os=sysv3 1476c582b7e3Smrg ;; 14778ce07328Smrg svr4*) 14788ce07328Smrg os=sysv4 1479c582b7e3Smrg ;; 14808ce07328Smrg svr3) 14818ce07328Smrg os=sysv3 1482c582b7e3Smrg ;; 14838ce07328Smrg sysvr4) 14848ce07328Smrg os=sysv4 1485c582b7e3Smrg ;; 14868ce07328Smrg ose*) 14878ce07328Smrg os=ose 1488c582b7e3Smrg ;; 14898ce07328Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14908ce07328Smrg os=mint 149142a55b46Smrg ;; 14928ce07328Smrg dicos*) 14938ce07328Smrg os=dicos 149442a55b46Smrg ;; 14958ce07328Smrg pikeos*) 14968ce07328Smrg # Until real need of OS specific support for 14978ce07328Smrg # particular features comes up, bare metal 14988ce07328Smrg # configurations are quite functional. 14998ce07328Smrg case $cpu in 15008ce07328Smrg arm*) 15018ce07328Smrg os=eabi 15028ce07328Smrg ;; 15038ce07328Smrg *) 15048ce07328Smrg os=elf 15058ce07328Smrg ;; 15068ce07328Smrg esac 1507c582b7e3Smrg ;; 1508c582b7e3Smrg *) 15098ce07328Smrg # No normalization, but not necessarily accepted, that comes below. 1510c582b7e3Smrg ;; 1511c582b7e3Smrgesac 15128ce07328Smrg 1513c582b7e3Smrgelse 1514c582b7e3Smrg 1515c582b7e3Smrg# Here we handle the default operating systems that come with various machines. 1516c582b7e3Smrg# The value should be what the vendor currently ships out the door with their 1517c582b7e3Smrg# machine or put another way, the most popular os provided with the machine. 1518c582b7e3Smrg 1519c582b7e3Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1520c582b7e3Smrg# "-sun"), then you have to tell the case statement up towards the top 1521c582b7e3Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1522c582b7e3Smrg# will signal an error saying that MANUFACTURER isn't an operating 1523c582b7e3Smrg# system, and we'll never get to this point. 1524c582b7e3Smrg 15258ce07328Smrgkernel= 15268ce07328Smrgcase $cpu-$vendor in 152742a55b46Smrg score-*) 15288ce07328Smrg os=elf 1529c582b7e3Smrg ;; 153042a55b46Smrg spu-*) 15318ce07328Smrg os=elf 1532c582b7e3Smrg ;; 1533c582b7e3Smrg *-acorn) 15348ce07328Smrg os=riscix1.2 1535c582b7e3Smrg ;; 1536c582b7e3Smrg arm*-rebel) 15378ce07328Smrg kernel=linux 15388ce07328Smrg os=gnu 1539c582b7e3Smrg ;; 1540c582b7e3Smrg arm*-semi) 15418ce07328Smrg os=aout 1542c582b7e3Smrg ;; 154342a55b46Smrg c4x-* | tic4x-*) 15448ce07328Smrg os=coff 154542a55b46Smrg ;; 1546e3d74329Smrg c8051-*) 15478ce07328Smrg os=elf 15488ce07328Smrg ;; 15498ce07328Smrg clipper-intergraph) 15508ce07328Smrg os=clix 1551e3d74329Smrg ;; 15520496e070Smrg hexagon-*) 15538ce07328Smrg os=elf 15540496e070Smrg ;; 155542a55b46Smrg tic54x-*) 15568ce07328Smrg os=coff 155742a55b46Smrg ;; 155842a55b46Smrg tic55x-*) 15598ce07328Smrg os=coff 156042a55b46Smrg ;; 156142a55b46Smrg tic6x-*) 15628ce07328Smrg os=coff 1563c582b7e3Smrg ;; 1564c582b7e3Smrg # This must come before the *-dec entry. 1565c582b7e3Smrg pdp10-*) 15668ce07328Smrg os=tops20 1567c582b7e3Smrg ;; 1568c582b7e3Smrg pdp11-*) 15698ce07328Smrg os=none 1570c582b7e3Smrg ;; 1571c582b7e3Smrg *-dec | vax-*) 15728ce07328Smrg os=ultrix4.2 1573c582b7e3Smrg ;; 1574c582b7e3Smrg m68*-apollo) 15758ce07328Smrg os=domain 1576c582b7e3Smrg ;; 1577c582b7e3Smrg i386-sun) 15788ce07328Smrg os=sunos4.0.2 1579c582b7e3Smrg ;; 1580c582b7e3Smrg m68000-sun) 15818ce07328Smrg os=sunos3 1582c582b7e3Smrg ;; 1583c582b7e3Smrg m68*-cisco) 15848ce07328Smrg os=aout 1585c582b7e3Smrg ;; 158642a55b46Smrg mep-*) 15878ce07328Smrg os=elf 1588c582b7e3Smrg ;; 1589c582b7e3Smrg mips*-cisco) 15908ce07328Smrg os=elf 1591c582b7e3Smrg ;; 1592c582b7e3Smrg mips*-*) 15938ce07328Smrg os=elf 1594c582b7e3Smrg ;; 1595c582b7e3Smrg or32-*) 15968ce07328Smrg os=coff 1597c582b7e3Smrg ;; 1598c582b7e3Smrg *-tti) # must be before sparc entry or we get the wrong os. 15998ce07328Smrg os=sysv3 1600c582b7e3Smrg ;; 1601c582b7e3Smrg sparc-* | *-sun) 16028ce07328Smrg os=sunos4.1.1 1603c582b7e3Smrg ;; 16048ce07328Smrg pru-*) 16058ce07328Smrg os=elf 1606c582b7e3Smrg ;; 16078ce07328Smrg *-be) 16088ce07328Smrg os=beos 1609c582b7e3Smrg ;; 1610c582b7e3Smrg *-ibm) 16118ce07328Smrg os=aix 1612c582b7e3Smrg ;; 161342a55b46Smrg *-knuth) 16148ce07328Smrg os=mmixware 1615c582b7e3Smrg ;; 1616c582b7e3Smrg *-wec) 16178ce07328Smrg os=proelf 1618c582b7e3Smrg ;; 1619c582b7e3Smrg *-winbond) 16208ce07328Smrg os=proelf 1621c582b7e3Smrg ;; 1622c582b7e3Smrg *-oki) 16238ce07328Smrg os=proelf 1624c582b7e3Smrg ;; 1625c582b7e3Smrg *-hp) 16268ce07328Smrg os=hpux 1627c582b7e3Smrg ;; 1628c582b7e3Smrg *-hitachi) 16298ce07328Smrg os=hiux 1630c582b7e3Smrg ;; 1631c582b7e3Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16328ce07328Smrg os=sysv 1633c582b7e3Smrg ;; 1634c582b7e3Smrg *-cbm) 16358ce07328Smrg os=amigaos 1636c582b7e3Smrg ;; 1637c582b7e3Smrg *-dg) 16388ce07328Smrg os=dgux 1639c582b7e3Smrg ;; 1640c582b7e3Smrg *-dolphin) 16418ce07328Smrg os=sysv3 1642c582b7e3Smrg ;; 1643c582b7e3Smrg m68k-ccur) 16448ce07328Smrg os=rtu 1645c582b7e3Smrg ;; 1646c582b7e3Smrg m88k-omron*) 16478ce07328Smrg os=luna 1648c582b7e3Smrg ;; 16498ce07328Smrg *-next) 16508ce07328Smrg os=nextstep 1651c582b7e3Smrg ;; 1652c582b7e3Smrg *-sequent) 16538ce07328Smrg os=ptx 1654c582b7e3Smrg ;; 1655c582b7e3Smrg *-crds) 16568ce07328Smrg os=unos 1657c582b7e3Smrg ;; 1658c582b7e3Smrg *-ns) 16598ce07328Smrg os=genix 1660c582b7e3Smrg ;; 1661c582b7e3Smrg i370-*) 16628ce07328Smrg os=mvs 1663c582b7e3Smrg ;; 1664c582b7e3Smrg *-gould) 16658ce07328Smrg os=sysv 1666c582b7e3Smrg ;; 1667c582b7e3Smrg *-highlevel) 16688ce07328Smrg os=bsd 1669c582b7e3Smrg ;; 1670c582b7e3Smrg *-encore) 16718ce07328Smrg os=bsd 1672c582b7e3Smrg ;; 1673c582b7e3Smrg *-sgi) 16748ce07328Smrg os=irix 1675c582b7e3Smrg ;; 1676c582b7e3Smrg *-siemens) 16778ce07328Smrg os=sysv4 1678c582b7e3Smrg ;; 1679c582b7e3Smrg *-masscomp) 16808ce07328Smrg os=rtu 1681c582b7e3Smrg ;; 1682c582b7e3Smrg f30[01]-fujitsu | f700-fujitsu) 16838ce07328Smrg os=uxpv 1684c582b7e3Smrg ;; 1685c582b7e3Smrg *-rom68k) 16868ce07328Smrg os=coff 1687c582b7e3Smrg ;; 1688c582b7e3Smrg *-*bug) 16898ce07328Smrg os=coff 1690c582b7e3Smrg ;; 1691c582b7e3Smrg *-apple) 16928ce07328Smrg os=macos 1693c582b7e3Smrg ;; 1694c582b7e3Smrg *-atari*) 16958ce07328Smrg os=mint 16968ce07328Smrg ;; 16978ce07328Smrg *-wrs) 16988ce07328Smrg os=vxworks 1699c582b7e3Smrg ;; 1700c582b7e3Smrg *) 17018ce07328Smrg os=none 1702c582b7e3Smrg ;; 1703c582b7e3Smrgesac 17048ce07328Smrg 1705c582b7e3Smrgfi 1706c582b7e3Smrg 17078ce07328Smrg# Now, validate our (potentially fixed-up) OS. 17088ce07328Smrgcase $os in 17098ce07328Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17108ce07328Smrg musl* | newlib* | relibc* | uclibc*) 17118ce07328Smrg ;; 17128ce07328Smrg # Likewise for "kernel-abi" 17138ce07328Smrg eabi* | gnueabi*) 17148ce07328Smrg ;; 17158ce07328Smrg # VxWorks passes extra cpu info in the 4th filed. 17168ce07328Smrg simlinux | simwindows | spe) 17178ce07328Smrg ;; 17188ce07328Smrg # Now accept the basic system types. 17198ce07328Smrg # The portable systems comes first. 17208ce07328Smrg # Each alternative MUST end in a * to match a version number. 17218ce07328Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17228ce07328Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17238ce07328Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17248ce07328Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17258ce07328Smrg | hiux* | abug | nacl* | netware* | windows* \ 17268ce07328Smrg | os9* | macos* | osx* | ios* \ 17278ce07328Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17288ce07328Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17298ce07328Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17308ce07328Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17318ce07328Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17328ce07328Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17338ce07328Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17348ce07328Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17358ce07328Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17368ce07328Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17378ce07328Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17388ce07328Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17398ce07328Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17408ce07328Smrg | midipix* | mingw32* | mingw64* | mint* \ 17418ce07328Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17428ce07328Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17438ce07328Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17448ce07328Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17458ce07328Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17468ce07328Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17478ce07328Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17488ce07328Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17498ce07328Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17508ce07328Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17518ce07328Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 17528ce07328Smrg ;; 17538ce07328Smrg # This one is extra strict with allowed versions 17548ce07328Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17558ce07328Smrg # Don't forget version if it is 3.2v4 or newer. 17568ce07328Smrg ;; 17578ce07328Smrg none) 17588ce07328Smrg ;; 17598ce07328Smrg *) 17608ce07328Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17618ce07328Smrg exit 1 17628ce07328Smrg ;; 17638ce07328Smrgesac 17648ce07328Smrg 17658ce07328Smrg# As a final step for OS-related things, validate the OS-kernel combination 17668ce07328Smrg# (given a valid OS), if there is a kernel. 17678ce07328Smrgcase $kernel-$os in 17688ce07328Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17698ce07328Smrg | linux-musl* | linux-relibc* | linux-uclibc* ) 17708ce07328Smrg ;; 17718ce07328Smrg uclinux-uclibc* ) 17728ce07328Smrg ;; 17738ce07328Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 17748ce07328Smrg # These are just libc implementations, not actual OSes, and thus 17758ce07328Smrg # require a kernel. 17768ce07328Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17778ce07328Smrg exit 1 17788ce07328Smrg ;; 17798ce07328Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 17808ce07328Smrg ;; 17818ce07328Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 17828ce07328Smrg ;; 17838ce07328Smrg nto-qnx*) 17848ce07328Smrg ;; 17858ce07328Smrg os2-emx) 17868ce07328Smrg ;; 17878ce07328Smrg *-eabi* | *-gnueabi*) 17888ce07328Smrg ;; 17898ce07328Smrg -*) 17908ce07328Smrg # Blank kernel with real OS is always fine. 17918ce07328Smrg ;; 17928ce07328Smrg *-*) 17938ce07328Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 17948ce07328Smrg exit 1 17958ce07328Smrg ;; 17968ce07328Smrgesac 17978ce07328Smrg 1798c582b7e3Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1799c582b7e3Smrg# manufacturer. We pick the logical manufacturer. 18008ce07328Smrgcase $vendor in 18018ce07328Smrg unknown) 18028ce07328Smrg case $cpu-$os in 18038ce07328Smrg *-riscix*) 1804c582b7e3Smrg vendor=acorn 1805c582b7e3Smrg ;; 18068ce07328Smrg *-sunos*) 1807c582b7e3Smrg vendor=sun 1808c582b7e3Smrg ;; 18098ce07328Smrg *-cnk* | *-aix*) 1810c582b7e3Smrg vendor=ibm 1811c582b7e3Smrg ;; 18128ce07328Smrg *-beos*) 1813c582b7e3Smrg vendor=be 1814c582b7e3Smrg ;; 18158ce07328Smrg *-hpux*) 1816c582b7e3Smrg vendor=hp 1817c582b7e3Smrg ;; 18188ce07328Smrg *-mpeix*) 1819c582b7e3Smrg vendor=hp 1820c582b7e3Smrg ;; 18218ce07328Smrg *-hiux*) 1822c582b7e3Smrg vendor=hitachi 1823c582b7e3Smrg ;; 18248ce07328Smrg *-unos*) 1825c582b7e3Smrg vendor=crds 1826c582b7e3Smrg ;; 18278ce07328Smrg *-dgux*) 1828c582b7e3Smrg vendor=dg 1829c582b7e3Smrg ;; 18308ce07328Smrg *-luna*) 1831c582b7e3Smrg vendor=omron 1832c582b7e3Smrg ;; 18338ce07328Smrg *-genix*) 1834c582b7e3Smrg vendor=ns 1835c582b7e3Smrg ;; 18368ce07328Smrg *-clix*) 18378ce07328Smrg vendor=intergraph 18388ce07328Smrg ;; 18398ce07328Smrg *-mvs* | *-opened*) 18408ce07328Smrg vendor=ibm 18418ce07328Smrg ;; 18428ce07328Smrg *-os400*) 1843c582b7e3Smrg vendor=ibm 1844c582b7e3Smrg ;; 18458ce07328Smrg s390-* | s390x-*) 1846c582b7e3Smrg vendor=ibm 1847c582b7e3Smrg ;; 18488ce07328Smrg *-ptx*) 1849c582b7e3Smrg vendor=sequent 1850c582b7e3Smrg ;; 18518ce07328Smrg *-tpf*) 1852c582b7e3Smrg vendor=ibm 1853c582b7e3Smrg ;; 18548ce07328Smrg *-vxsim* | *-vxworks* | *-windiss*) 1855c582b7e3Smrg vendor=wrs 1856c582b7e3Smrg ;; 18578ce07328Smrg *-aux*) 1858c582b7e3Smrg vendor=apple 1859c582b7e3Smrg ;; 18608ce07328Smrg *-hms*) 1861c582b7e3Smrg vendor=hitachi 1862c582b7e3Smrg ;; 18638ce07328Smrg *-mpw* | *-macos*) 1864c582b7e3Smrg vendor=apple 1865c582b7e3Smrg ;; 18668ce07328Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1867c582b7e3Smrg vendor=atari 1868c582b7e3Smrg ;; 18698ce07328Smrg *-vos*) 1870c582b7e3Smrg vendor=stratus 1871c582b7e3Smrg ;; 1872c582b7e3Smrg esac 1873c582b7e3Smrg ;; 1874c582b7e3Smrgesac 1875c582b7e3Smrg 18768ce07328Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1877c582b7e3Smrgexit 1878c582b7e3Smrg 1879c582b7e3Smrg# Local variables: 18808ce07328Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1881c582b7e3Smrg# time-stamp-start: "timestamp='" 1882c582b7e3Smrg# time-stamp-format: "%:y-%02m-%02d" 1883c582b7e3Smrg# time-stamp-end: "'" 1884c582b7e3Smrg# End: 1885