12d62a77cSmrg#! /bin/sh 22d62a77cSmrg# Configuration validation subroutine script. 30c1e1135Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 42d62a77cSmrg 50c1e1135Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 60c1e1135Smrg 70c1e1135Smrgtimestamp='2023-01-21' 82d62a77cSmrg 918b08247Smrg# This file is free software; you can redistribute it and/or modify it 1018b08247Smrg# under the terms of the GNU General Public License as published by 110c1e1135Smrg# the Free Software Foundation, either version 3 of the License, or 122d62a77cSmrg# (at your option) any later version. 132d62a77cSmrg# 1418b08247Smrg# This program is distributed in the hope that it will be useful, but 1518b08247Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1618b08247Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1718b08247Smrg# General Public License for more details. 182d62a77cSmrg# 192d62a77cSmrg# You should have received a copy of the GNU General Public License 2018b08247Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 212d62a77cSmrg# 222d62a77cSmrg# As a special exception to the GNU General Public License, if you 232d62a77cSmrg# distribute this file as part of a program that contains a 242d62a77cSmrg# configuration script generated by Autoconf, you may include it under 2518b08247Smrg# the same distribution terms that you use for the rest of that 2618b08247Smrg# program. This Exception is an additional permission under section 7 2718b08247Smrg# of the GNU General Public License, version 3 ("GPLv3"). 282d62a77cSmrg 292d62a77cSmrg 3018b08247Smrg# Please send patches to <config-patches@gnu.org>. 312d62a77cSmrg# 322d62a77cSmrg# Configuration subroutine to validate and canonicalize a configuration type. 332d62a77cSmrg# Supply the specified configuration type as an argument. 342d62a77cSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 352d62a77cSmrg# Otherwise, we print the canonical config type on stdout and succeed. 362d62a77cSmrg 376d325d25Smrg# You can get the latest version of this script from: 380c1e1135Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 396d325d25Smrg 402d62a77cSmrg# This file is supposed to be the same for all GNU packages 412d62a77cSmrg# and recognize all the CPU types, system types and aliases 422d62a77cSmrg# that are meaningful with *any* GNU software. 432d62a77cSmrg# Each package is responsible for reporting which valid configurations 442d62a77cSmrg# it does not support. The user should be able to distinguish 452d62a77cSmrg# a failure to support a valid configuration from a meaningless 462d62a77cSmrg# configuration. 472d62a77cSmrg 482d62a77cSmrg# The goal of this file is to map all the various variations of a given 492d62a77cSmrg# machine specification into a single specification in the form: 502d62a77cSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 512d62a77cSmrg# or in some cases, the newer four-part form: 522d62a77cSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 532d62a77cSmrg# It is wrong to echo any other type of specification. 542d62a77cSmrg 550c1e1135Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 560c1e1135Smrg# about features and limitations of the classic Bourne shell that were 570c1e1135Smrg# superseded or lifted in POSIX. However, this script identifies a wide 580c1e1135Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 590c1e1135Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 600c1e1135Smrg# have a pre-POSIX /bin/sh. 610c1e1135Smrg 622d62a77cSmrgme=`echo "$0" | sed -e 's,.*/,,'` 632d62a77cSmrg 642d62a77cSmrgusage="\ 6518b08247SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 662d62a77cSmrg 672d62a77cSmrgCanonicalize a configuration name. 682d62a77cSmrg 6918b08247SmrgOptions: 702d62a77cSmrg -h, --help print this help, then exit 712d62a77cSmrg -t, --time-stamp print date of last modification, then exit 722d62a77cSmrg -v, --version print version number, then exit 732d62a77cSmrg 742d62a77cSmrgReport bugs and patches to <config-patches@gnu.org>." 752d62a77cSmrg 762d62a77cSmrgversion="\ 772d62a77cSmrgGNU config.sub ($timestamp) 782d62a77cSmrg 790c1e1135SmrgCopyright 1992-2023 Free Software Foundation, Inc. 802d62a77cSmrg 812d62a77cSmrgThis is free software; see the source for copying conditions. There is NO 822d62a77cSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 832d62a77cSmrg 842d62a77cSmrghelp=" 852d62a77cSmrgTry \`$me --help' for more information." 862d62a77cSmrg 872d62a77cSmrg# Parse command line 882d62a77cSmrgwhile test $# -gt 0 ; do 892d62a77cSmrg case $1 in 902d62a77cSmrg --time-stamp | --time* | -t ) 912d62a77cSmrg echo "$timestamp" ; exit ;; 922d62a77cSmrg --version | -v ) 932d62a77cSmrg echo "$version" ; exit ;; 942d62a77cSmrg --help | --h* | -h ) 952d62a77cSmrg echo "$usage"; exit ;; 962d62a77cSmrg -- ) # Stop option processing 972d62a77cSmrg shift; break ;; 982d62a77cSmrg - ) # Use stdin as input. 992d62a77cSmrg break ;; 1002d62a77cSmrg -* ) 1010c1e1135Smrg echo "$me: invalid option $1$help" >&2 1022d62a77cSmrg exit 1 ;; 1032d62a77cSmrg 1042d62a77cSmrg *local*) 1052d62a77cSmrg # First pass through any local machine types. 10618b08247Smrg echo "$1" 1072d62a77cSmrg exit ;; 1082d62a77cSmrg 1092d62a77cSmrg * ) 1102d62a77cSmrg break ;; 1112d62a77cSmrg esac 1122d62a77cSmrgdone 1132d62a77cSmrg 1142d62a77cSmrgcase $# in 1152d62a77cSmrg 0) echo "$me: missing argument$help" >&2 1162d62a77cSmrg exit 1;; 1172d62a77cSmrg 1) ;; 1182d62a77cSmrg *) echo "$me: too many arguments$help" >&2 1192d62a77cSmrg exit 1;; 1202d62a77cSmrgesac 1212d62a77cSmrg 1220c1e1135Smrg# Split fields of configuration type 1230c1e1135Smrg# shellcheck disable=SC2162 1240c1e1135Smrgsaved_IFS=$IFS 1250c1e1135SmrgIFS="-" read field1 field2 field3 field4 <<EOF 1260c1e1135Smrg$1 1270c1e1135SmrgEOF 1280c1e1135SmrgIFS=$saved_IFS 1292d62a77cSmrg 1300c1e1135Smrg# Separate into logical components for further validation 1310c1e1135Smrgcase $1 in 1320c1e1135Smrg *-*-*-*-*) 1330c1e1135Smrg echo Invalid configuration \`"$1"\': more than four components >&2 1340c1e1135Smrg exit 1 1352d62a77cSmrg ;; 1360c1e1135Smrg *-*-*-*) 1370c1e1135Smrg basic_machine=$field1-$field2 1380c1e1135Smrg basic_os=$field3-$field4 1392d62a77cSmrg ;; 1400c1e1135Smrg *-*-*) 1410c1e1135Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1420c1e1135Smrg # parts 1430c1e1135Smrg maybe_os=$field2-$field3 1440c1e1135Smrg case $maybe_os in 1450c1e1135Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 1460c1e1135Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1470c1e1135Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1480c1e1135Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 1490c1e1135Smrg basic_machine=$field1 1500c1e1135Smrg basic_os=$maybe_os 1510c1e1135Smrg ;; 1520c1e1135Smrg android-linux) 1530c1e1135Smrg basic_machine=$field1-unknown 1540c1e1135Smrg basic_os=linux-android 1550c1e1135Smrg ;; 1560c1e1135Smrg *) 1570c1e1135Smrg basic_machine=$field1-$field2 1580c1e1135Smrg basic_os=$field3 1590c1e1135Smrg ;; 1600c1e1135Smrg esac 1612d62a77cSmrg ;; 1620c1e1135Smrg *-*) 1630c1e1135Smrg # A lone config we happen to match not fitting any pattern 1640c1e1135Smrg case $field1-$field2 in 1650c1e1135Smrg decstation-3100) 1660c1e1135Smrg basic_machine=mips-dec 1670c1e1135Smrg basic_os= 1680c1e1135Smrg ;; 1690c1e1135Smrg *-*) 1700c1e1135Smrg # Second component is usually, but not always the OS 1710c1e1135Smrg case $field2 in 1720c1e1135Smrg # Prevent following clause from handling this valid os 1730c1e1135Smrg sun*os*) 1740c1e1135Smrg basic_machine=$field1 1750c1e1135Smrg basic_os=$field2 1760c1e1135Smrg ;; 1770c1e1135Smrg zephyr*) 1780c1e1135Smrg basic_machine=$field1-unknown 1790c1e1135Smrg basic_os=$field2 1800c1e1135Smrg ;; 1810c1e1135Smrg # Manufacturers 1820c1e1135Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1830c1e1135Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1840c1e1135Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1850c1e1135Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1860c1e1135Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1870c1e1135Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1880c1e1135Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1890c1e1135Smrg | microblaze* | sim | cisco \ 1900c1e1135Smrg | oki | wec | wrs | winbond) 1910c1e1135Smrg basic_machine=$field1-$field2 1920c1e1135Smrg basic_os= 1930c1e1135Smrg ;; 1940c1e1135Smrg *) 1950c1e1135Smrg basic_machine=$field1 1960c1e1135Smrg basic_os=$field2 1970c1e1135Smrg ;; 1980c1e1135Smrg esac 1990c1e1135Smrg ;; 2000c1e1135Smrg esac 2012d62a77cSmrg ;; 2020c1e1135Smrg *) 2030c1e1135Smrg # Convert single-component short-hands not valid as part of 2040c1e1135Smrg # multi-component configurations. 2050c1e1135Smrg case $field1 in 2060c1e1135Smrg 386bsd) 2070c1e1135Smrg basic_machine=i386-pc 2080c1e1135Smrg basic_os=bsd 2090c1e1135Smrg ;; 2100c1e1135Smrg a29khif) 2110c1e1135Smrg basic_machine=a29k-amd 2120c1e1135Smrg basic_os=udi 2130c1e1135Smrg ;; 2140c1e1135Smrg adobe68k) 2150c1e1135Smrg basic_machine=m68010-adobe 2160c1e1135Smrg basic_os=scout 2170c1e1135Smrg ;; 2180c1e1135Smrg alliant) 2190c1e1135Smrg basic_machine=fx80-alliant 2200c1e1135Smrg basic_os= 2210c1e1135Smrg ;; 2220c1e1135Smrg altos | altos3068) 2230c1e1135Smrg basic_machine=m68k-altos 2240c1e1135Smrg basic_os= 2250c1e1135Smrg ;; 2260c1e1135Smrg am29k) 2270c1e1135Smrg basic_machine=a29k-none 2280c1e1135Smrg basic_os=bsd 2290c1e1135Smrg ;; 2300c1e1135Smrg amdahl) 2310c1e1135Smrg basic_machine=580-amdahl 2320c1e1135Smrg basic_os=sysv 2330c1e1135Smrg ;; 2340c1e1135Smrg amiga) 2350c1e1135Smrg basic_machine=m68k-unknown 2360c1e1135Smrg basic_os= 2370c1e1135Smrg ;; 2380c1e1135Smrg amigaos | amigados) 2390c1e1135Smrg basic_machine=m68k-unknown 2400c1e1135Smrg basic_os=amigaos 2410c1e1135Smrg ;; 2420c1e1135Smrg amigaunix | amix) 2430c1e1135Smrg basic_machine=m68k-unknown 2440c1e1135Smrg basic_os=sysv4 2450c1e1135Smrg ;; 2460c1e1135Smrg apollo68) 2470c1e1135Smrg basic_machine=m68k-apollo 2480c1e1135Smrg basic_os=sysv 2490c1e1135Smrg ;; 2500c1e1135Smrg apollo68bsd) 2510c1e1135Smrg basic_machine=m68k-apollo 2520c1e1135Smrg basic_os=bsd 2530c1e1135Smrg ;; 2540c1e1135Smrg aros) 2550c1e1135Smrg basic_machine=i386-pc 2560c1e1135Smrg basic_os=aros 2570c1e1135Smrg ;; 2580c1e1135Smrg aux) 2590c1e1135Smrg basic_machine=m68k-apple 2600c1e1135Smrg basic_os=aux 2610c1e1135Smrg ;; 2620c1e1135Smrg balance) 2630c1e1135Smrg basic_machine=ns32k-sequent 2640c1e1135Smrg basic_os=dynix 2650c1e1135Smrg ;; 2660c1e1135Smrg blackfin) 2670c1e1135Smrg basic_machine=bfin-unknown 2680c1e1135Smrg basic_os=linux 2690c1e1135Smrg ;; 2700c1e1135Smrg cegcc) 2710c1e1135Smrg basic_machine=arm-unknown 2720c1e1135Smrg basic_os=cegcc 2730c1e1135Smrg ;; 2740c1e1135Smrg convex-c1) 2750c1e1135Smrg basic_machine=c1-convex 2760c1e1135Smrg basic_os=bsd 2770c1e1135Smrg ;; 2780c1e1135Smrg convex-c2) 2790c1e1135Smrg basic_machine=c2-convex 2800c1e1135Smrg basic_os=bsd 2810c1e1135Smrg ;; 2820c1e1135Smrg convex-c32) 2830c1e1135Smrg basic_machine=c32-convex 2840c1e1135Smrg basic_os=bsd 2850c1e1135Smrg ;; 2860c1e1135Smrg convex-c34) 2870c1e1135Smrg basic_machine=c34-convex 2880c1e1135Smrg basic_os=bsd 2890c1e1135Smrg ;; 2900c1e1135Smrg convex-c38) 2910c1e1135Smrg basic_machine=c38-convex 2920c1e1135Smrg basic_os=bsd 2930c1e1135Smrg ;; 2940c1e1135Smrg cray) 2950c1e1135Smrg basic_machine=j90-cray 2960c1e1135Smrg basic_os=unicos 2970c1e1135Smrg ;; 2980c1e1135Smrg crds | unos) 2990c1e1135Smrg basic_machine=m68k-crds 3000c1e1135Smrg basic_os= 3010c1e1135Smrg ;; 3020c1e1135Smrg da30) 3030c1e1135Smrg basic_machine=m68k-da30 3040c1e1135Smrg basic_os= 3050c1e1135Smrg ;; 3060c1e1135Smrg decstation | pmax | pmin | dec3100 | decstatn) 3070c1e1135Smrg basic_machine=mips-dec 3080c1e1135Smrg basic_os= 3090c1e1135Smrg ;; 3100c1e1135Smrg delta88) 3110c1e1135Smrg basic_machine=m88k-motorola 3120c1e1135Smrg basic_os=sysv3 3130c1e1135Smrg ;; 3140c1e1135Smrg dicos) 3150c1e1135Smrg basic_machine=i686-pc 3160c1e1135Smrg basic_os=dicos 3170c1e1135Smrg ;; 3180c1e1135Smrg djgpp) 3190c1e1135Smrg basic_machine=i586-pc 3200c1e1135Smrg basic_os=msdosdjgpp 3210c1e1135Smrg ;; 3220c1e1135Smrg ebmon29k) 3230c1e1135Smrg basic_machine=a29k-amd 3240c1e1135Smrg basic_os=ebmon 3250c1e1135Smrg ;; 3260c1e1135Smrg es1800 | OSE68k | ose68k | ose | OSE) 3270c1e1135Smrg basic_machine=m68k-ericsson 3280c1e1135Smrg basic_os=ose 3290c1e1135Smrg ;; 3300c1e1135Smrg gmicro) 3310c1e1135Smrg basic_machine=tron-gmicro 3320c1e1135Smrg basic_os=sysv 3330c1e1135Smrg ;; 3340c1e1135Smrg go32) 3350c1e1135Smrg basic_machine=i386-pc 3360c1e1135Smrg basic_os=go32 3370c1e1135Smrg ;; 3380c1e1135Smrg h8300hms) 3390c1e1135Smrg basic_machine=h8300-hitachi 3400c1e1135Smrg basic_os=hms 3410c1e1135Smrg ;; 3420c1e1135Smrg h8300xray) 3430c1e1135Smrg basic_machine=h8300-hitachi 3440c1e1135Smrg basic_os=xray 3450c1e1135Smrg ;; 3460c1e1135Smrg h8500hms) 3470c1e1135Smrg basic_machine=h8500-hitachi 3480c1e1135Smrg basic_os=hms 3490c1e1135Smrg ;; 3500c1e1135Smrg harris) 3510c1e1135Smrg basic_machine=m88k-harris 3520c1e1135Smrg basic_os=sysv3 3530c1e1135Smrg ;; 3540c1e1135Smrg hp300 | hp300hpux) 3550c1e1135Smrg basic_machine=m68k-hp 3560c1e1135Smrg basic_os=hpux 3570c1e1135Smrg ;; 3580c1e1135Smrg hp300bsd) 3590c1e1135Smrg basic_machine=m68k-hp 3600c1e1135Smrg basic_os=bsd 3610c1e1135Smrg ;; 3620c1e1135Smrg hppaosf) 3630c1e1135Smrg basic_machine=hppa1.1-hp 3640c1e1135Smrg basic_os=osf 3650c1e1135Smrg ;; 3660c1e1135Smrg hppro) 3670c1e1135Smrg basic_machine=hppa1.1-hp 3680c1e1135Smrg basic_os=proelf 3690c1e1135Smrg ;; 3700c1e1135Smrg i386mach) 3710c1e1135Smrg basic_machine=i386-mach 3720c1e1135Smrg basic_os=mach 3730c1e1135Smrg ;; 3740c1e1135Smrg isi68 | isi) 3750c1e1135Smrg basic_machine=m68k-isi 3760c1e1135Smrg basic_os=sysv 3770c1e1135Smrg ;; 3780c1e1135Smrg m68knommu) 3790c1e1135Smrg basic_machine=m68k-unknown 3800c1e1135Smrg basic_os=linux 3810c1e1135Smrg ;; 3820c1e1135Smrg magnum | m3230) 3830c1e1135Smrg basic_machine=mips-mips 3840c1e1135Smrg basic_os=sysv 3850c1e1135Smrg ;; 3860c1e1135Smrg merlin) 3870c1e1135Smrg basic_machine=ns32k-utek 3880c1e1135Smrg basic_os=sysv 3890c1e1135Smrg ;; 3900c1e1135Smrg mingw64) 3910c1e1135Smrg basic_machine=x86_64-pc 3920c1e1135Smrg basic_os=mingw64 3930c1e1135Smrg ;; 3940c1e1135Smrg mingw32) 3950c1e1135Smrg basic_machine=i686-pc 3960c1e1135Smrg basic_os=mingw32 3970c1e1135Smrg ;; 3980c1e1135Smrg mingw32ce) 3990c1e1135Smrg basic_machine=arm-unknown 4000c1e1135Smrg basic_os=mingw32ce 4010c1e1135Smrg ;; 4020c1e1135Smrg monitor) 4030c1e1135Smrg basic_machine=m68k-rom68k 4040c1e1135Smrg basic_os=coff 4050c1e1135Smrg ;; 4060c1e1135Smrg morphos) 4070c1e1135Smrg basic_machine=powerpc-unknown 4080c1e1135Smrg basic_os=morphos 4090c1e1135Smrg ;; 4100c1e1135Smrg moxiebox) 4110c1e1135Smrg basic_machine=moxie-unknown 4120c1e1135Smrg basic_os=moxiebox 4130c1e1135Smrg ;; 4140c1e1135Smrg msdos) 4150c1e1135Smrg basic_machine=i386-pc 4160c1e1135Smrg basic_os=msdos 4170c1e1135Smrg ;; 4180c1e1135Smrg msys) 4190c1e1135Smrg basic_machine=i686-pc 4200c1e1135Smrg basic_os=msys 4210c1e1135Smrg ;; 4220c1e1135Smrg mvs) 4230c1e1135Smrg basic_machine=i370-ibm 4240c1e1135Smrg basic_os=mvs 4250c1e1135Smrg ;; 4260c1e1135Smrg nacl) 4270c1e1135Smrg basic_machine=le32-unknown 4280c1e1135Smrg basic_os=nacl 4290c1e1135Smrg ;; 4300c1e1135Smrg ncr3000) 4310c1e1135Smrg basic_machine=i486-ncr 4320c1e1135Smrg basic_os=sysv4 4330c1e1135Smrg ;; 4340c1e1135Smrg netbsd386) 4350c1e1135Smrg basic_machine=i386-pc 4360c1e1135Smrg basic_os=netbsd 4370c1e1135Smrg ;; 4380c1e1135Smrg netwinder) 4390c1e1135Smrg basic_machine=armv4l-rebel 4400c1e1135Smrg basic_os=linux 4410c1e1135Smrg ;; 4420c1e1135Smrg news | news700 | news800 | news900) 4430c1e1135Smrg basic_machine=m68k-sony 4440c1e1135Smrg basic_os=newsos 4450c1e1135Smrg ;; 4460c1e1135Smrg news1000) 4470c1e1135Smrg basic_machine=m68030-sony 4480c1e1135Smrg basic_os=newsos 4490c1e1135Smrg ;; 4500c1e1135Smrg necv70) 4510c1e1135Smrg basic_machine=v70-nec 4520c1e1135Smrg basic_os=sysv 4530c1e1135Smrg ;; 4540c1e1135Smrg nh3000) 4550c1e1135Smrg basic_machine=m68k-harris 4560c1e1135Smrg basic_os=cxux 4570c1e1135Smrg ;; 4580c1e1135Smrg nh[45]000) 4590c1e1135Smrg basic_machine=m88k-harris 4600c1e1135Smrg basic_os=cxux 4610c1e1135Smrg ;; 4620c1e1135Smrg nindy960) 4630c1e1135Smrg basic_machine=i960-intel 4640c1e1135Smrg basic_os=nindy 4650c1e1135Smrg ;; 4660c1e1135Smrg mon960) 4670c1e1135Smrg basic_machine=i960-intel 4680c1e1135Smrg basic_os=mon960 4690c1e1135Smrg ;; 4700c1e1135Smrg nonstopux) 4710c1e1135Smrg basic_machine=mips-compaq 4720c1e1135Smrg basic_os=nonstopux 4730c1e1135Smrg ;; 4740c1e1135Smrg os400) 4750c1e1135Smrg basic_machine=powerpc-ibm 4760c1e1135Smrg basic_os=os400 4770c1e1135Smrg ;; 4780c1e1135Smrg OSE68000 | ose68000) 4790c1e1135Smrg basic_machine=m68000-ericsson 4800c1e1135Smrg basic_os=ose 4810c1e1135Smrg ;; 4820c1e1135Smrg os68k) 4830c1e1135Smrg basic_machine=m68k-none 4840c1e1135Smrg basic_os=os68k 4850c1e1135Smrg ;; 4860c1e1135Smrg paragon) 4870c1e1135Smrg basic_machine=i860-intel 4880c1e1135Smrg basic_os=osf 4890c1e1135Smrg ;; 4900c1e1135Smrg parisc) 4910c1e1135Smrg basic_machine=hppa-unknown 4920c1e1135Smrg basic_os=linux 4930c1e1135Smrg ;; 4940c1e1135Smrg psp) 4950c1e1135Smrg basic_machine=mipsallegrexel-sony 4960c1e1135Smrg basic_os=psp 4970c1e1135Smrg ;; 4980c1e1135Smrg pw32) 4990c1e1135Smrg basic_machine=i586-unknown 5000c1e1135Smrg basic_os=pw32 5010c1e1135Smrg ;; 5020c1e1135Smrg rdos | rdos64) 5030c1e1135Smrg basic_machine=x86_64-pc 5040c1e1135Smrg basic_os=rdos 5050c1e1135Smrg ;; 5060c1e1135Smrg rdos32) 5070c1e1135Smrg basic_machine=i386-pc 5080c1e1135Smrg basic_os=rdos 5090c1e1135Smrg ;; 5100c1e1135Smrg rom68k) 5110c1e1135Smrg basic_machine=m68k-rom68k 5120c1e1135Smrg basic_os=coff 5130c1e1135Smrg ;; 5140c1e1135Smrg sa29200) 5150c1e1135Smrg basic_machine=a29k-amd 5160c1e1135Smrg basic_os=udi 5170c1e1135Smrg ;; 5180c1e1135Smrg sei) 5190c1e1135Smrg basic_machine=mips-sei 5200c1e1135Smrg basic_os=seiux 5210c1e1135Smrg ;; 5220c1e1135Smrg sequent) 5230c1e1135Smrg basic_machine=i386-sequent 5240c1e1135Smrg basic_os= 5250c1e1135Smrg ;; 5260c1e1135Smrg sps7) 5270c1e1135Smrg basic_machine=m68k-bull 5280c1e1135Smrg basic_os=sysv2 5290c1e1135Smrg ;; 5300c1e1135Smrg st2000) 5310c1e1135Smrg basic_machine=m68k-tandem 5320c1e1135Smrg basic_os= 5330c1e1135Smrg ;; 5340c1e1135Smrg stratus) 5350c1e1135Smrg basic_machine=i860-stratus 5360c1e1135Smrg basic_os=sysv4 5370c1e1135Smrg ;; 5380c1e1135Smrg sun2) 5390c1e1135Smrg basic_machine=m68000-sun 5400c1e1135Smrg basic_os= 5410c1e1135Smrg ;; 5420c1e1135Smrg sun2os3) 5430c1e1135Smrg basic_machine=m68000-sun 5440c1e1135Smrg basic_os=sunos3 5450c1e1135Smrg ;; 5460c1e1135Smrg sun2os4) 5470c1e1135Smrg basic_machine=m68000-sun 5480c1e1135Smrg basic_os=sunos4 5490c1e1135Smrg ;; 5500c1e1135Smrg sun3) 5510c1e1135Smrg basic_machine=m68k-sun 5520c1e1135Smrg basic_os= 5530c1e1135Smrg ;; 5540c1e1135Smrg sun3os3) 5550c1e1135Smrg basic_machine=m68k-sun 5560c1e1135Smrg basic_os=sunos3 5570c1e1135Smrg ;; 5580c1e1135Smrg sun3os4) 5590c1e1135Smrg basic_machine=m68k-sun 5600c1e1135Smrg basic_os=sunos4 5610c1e1135Smrg ;; 5620c1e1135Smrg sun4) 5630c1e1135Smrg basic_machine=sparc-sun 5640c1e1135Smrg basic_os= 5650c1e1135Smrg ;; 5660c1e1135Smrg sun4os3) 5670c1e1135Smrg basic_machine=sparc-sun 5680c1e1135Smrg basic_os=sunos3 5690c1e1135Smrg ;; 5700c1e1135Smrg sun4os4) 5710c1e1135Smrg basic_machine=sparc-sun 5720c1e1135Smrg basic_os=sunos4 5730c1e1135Smrg ;; 5740c1e1135Smrg sun4sol2) 5750c1e1135Smrg basic_machine=sparc-sun 5760c1e1135Smrg basic_os=solaris2 5770c1e1135Smrg ;; 5780c1e1135Smrg sun386 | sun386i | roadrunner) 5790c1e1135Smrg basic_machine=i386-sun 5800c1e1135Smrg basic_os= 5810c1e1135Smrg ;; 5820c1e1135Smrg sv1) 5830c1e1135Smrg basic_machine=sv1-cray 5840c1e1135Smrg basic_os=unicos 5850c1e1135Smrg ;; 5860c1e1135Smrg symmetry) 5870c1e1135Smrg basic_machine=i386-sequent 5880c1e1135Smrg basic_os=dynix 5890c1e1135Smrg ;; 5900c1e1135Smrg t3e) 5910c1e1135Smrg basic_machine=alphaev5-cray 5920c1e1135Smrg basic_os=unicos 5930c1e1135Smrg ;; 5940c1e1135Smrg t90) 5950c1e1135Smrg basic_machine=t90-cray 5960c1e1135Smrg basic_os=unicos 5970c1e1135Smrg ;; 5980c1e1135Smrg toad1) 5990c1e1135Smrg basic_machine=pdp10-xkl 6000c1e1135Smrg basic_os=tops20 6010c1e1135Smrg ;; 6020c1e1135Smrg tpf) 6030c1e1135Smrg basic_machine=s390x-ibm 6040c1e1135Smrg basic_os=tpf 6050c1e1135Smrg ;; 6060c1e1135Smrg udi29k) 6070c1e1135Smrg basic_machine=a29k-amd 6080c1e1135Smrg basic_os=udi 6090c1e1135Smrg ;; 6100c1e1135Smrg ultra3) 6110c1e1135Smrg basic_machine=a29k-nyu 6120c1e1135Smrg basic_os=sym1 6130c1e1135Smrg ;; 6140c1e1135Smrg v810 | necv810) 6150c1e1135Smrg basic_machine=v810-nec 6160c1e1135Smrg basic_os=none 6170c1e1135Smrg ;; 6180c1e1135Smrg vaxv) 6190c1e1135Smrg basic_machine=vax-dec 6200c1e1135Smrg basic_os=sysv 6210c1e1135Smrg ;; 6220c1e1135Smrg vms) 6230c1e1135Smrg basic_machine=vax-dec 6240c1e1135Smrg basic_os=vms 6250c1e1135Smrg ;; 6260c1e1135Smrg vsta) 6270c1e1135Smrg basic_machine=i386-pc 6280c1e1135Smrg basic_os=vsta 6290c1e1135Smrg ;; 6300c1e1135Smrg vxworks960) 6310c1e1135Smrg basic_machine=i960-wrs 6320c1e1135Smrg basic_os=vxworks 6330c1e1135Smrg ;; 6340c1e1135Smrg vxworks68) 6350c1e1135Smrg basic_machine=m68k-wrs 6360c1e1135Smrg basic_os=vxworks 6370c1e1135Smrg ;; 6380c1e1135Smrg vxworks29k) 6390c1e1135Smrg basic_machine=a29k-wrs 6400c1e1135Smrg basic_os=vxworks 6410c1e1135Smrg ;; 6420c1e1135Smrg xbox) 6430c1e1135Smrg basic_machine=i686-pc 6440c1e1135Smrg basic_os=mingw32 6450c1e1135Smrg ;; 6460c1e1135Smrg ymp) 6470c1e1135Smrg basic_machine=ymp-cray 6480c1e1135Smrg basic_os=unicos 6490c1e1135Smrg ;; 6500c1e1135Smrg *) 6510c1e1135Smrg basic_machine=$1 6520c1e1135Smrg basic_os= 6530c1e1135Smrg ;; 6540c1e1135Smrg esac 6552d62a77cSmrg ;; 6562d62a77cSmrgesac 6572d62a77cSmrg 6580c1e1135Smrg# Decode 1-component or ad-hoc basic machines 6592d62a77cSmrgcase $basic_machine in 6600c1e1135Smrg # Here we handle the default manufacturer of certain CPU types. It is in 6610c1e1135Smrg # some cases the only manufacturer, in others, it is the most popular. 6620c1e1135Smrg w89k) 6630c1e1135Smrg cpu=hppa1.1 6640c1e1135Smrg vendor=winbond 6652d62a77cSmrg ;; 6660c1e1135Smrg op50n) 6670c1e1135Smrg cpu=hppa1.1 6680c1e1135Smrg vendor=oki 6692d62a77cSmrg ;; 6700c1e1135Smrg op60c) 6710c1e1135Smrg cpu=hppa1.1 6720c1e1135Smrg vendor=oki 6732d62a77cSmrg ;; 6740c1e1135Smrg ibm*) 6750c1e1135Smrg cpu=i370 6760c1e1135Smrg vendor=ibm 67718b08247Smrg ;; 6780c1e1135Smrg orion105) 6790c1e1135Smrg cpu=clipper 6800c1e1135Smrg vendor=highlevel 68118b08247Smrg ;; 6820c1e1135Smrg mac | mpw | mac-mpw) 6830c1e1135Smrg cpu=m68k 6840c1e1135Smrg vendor=apple 68518b08247Smrg ;; 6860c1e1135Smrg pmac | pmac-mpw) 6870c1e1135Smrg cpu=powerpc 6880c1e1135Smrg vendor=apple 68918b08247Smrg ;; 69018b08247Smrg 6912d62a77cSmrg # Recognize the various machine names and aliases which stand 6922d62a77cSmrg # for a CPU type and a company and sometimes even an OS. 6932d62a77cSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6940c1e1135Smrg cpu=m68000 6950c1e1135Smrg vendor=att 6962d62a77cSmrg ;; 6972d62a77cSmrg 3b*) 6980c1e1135Smrg cpu=we32k 6990c1e1135Smrg vendor=att 7002d62a77cSmrg ;; 7016d325d25Smrg bluegene*) 7020c1e1135Smrg cpu=powerpc 7030c1e1135Smrg vendor=ibm 7040c1e1135Smrg basic_os=cnk 7052d62a77cSmrg ;; 7062d62a77cSmrg decsystem10* | dec10*) 7070c1e1135Smrg cpu=pdp10 7080c1e1135Smrg vendor=dec 7090c1e1135Smrg basic_os=tops10 7102d62a77cSmrg ;; 7112d62a77cSmrg decsystem20* | dec20*) 7120c1e1135Smrg cpu=pdp10 7130c1e1135Smrg vendor=dec 7140c1e1135Smrg basic_os=tops20 7152d62a77cSmrg ;; 7162d62a77cSmrg delta | 3300 | motorola-3300 | motorola-delta \ 7172d62a77cSmrg | 3300-motorola | delta-motorola) 7180c1e1135Smrg cpu=m68k 7190c1e1135Smrg vendor=motorola 7202d62a77cSmrg ;; 72118b08247Smrg dpx2*) 7220c1e1135Smrg cpu=m68k 7230c1e1135Smrg vendor=bull 7240c1e1135Smrg basic_os=sysv3 7252d62a77cSmrg ;; 7262d62a77cSmrg encore | umax | mmax) 7270c1e1135Smrg cpu=ns32k 7280c1e1135Smrg vendor=encore 7292d62a77cSmrg ;; 7300c1e1135Smrg elxsi) 7310c1e1135Smrg cpu=elxsi 7320c1e1135Smrg vendor=elxsi 7330c1e1135Smrg basic_os=${basic_os:-bsd} 7342d62a77cSmrg ;; 7352d62a77cSmrg fx2800) 7360c1e1135Smrg cpu=i860 7370c1e1135Smrg vendor=alliant 7382d62a77cSmrg ;; 7392d62a77cSmrg genix) 7400c1e1135Smrg cpu=ns32k 7410c1e1135Smrg vendor=ns 7422d62a77cSmrg ;; 7432d62a77cSmrg h3050r* | hiux*) 7440c1e1135Smrg cpu=hppa1.1 7450c1e1135Smrg vendor=hitachi 7460c1e1135Smrg basic_os=hiuxwe2 7472d62a77cSmrg ;; 7482d62a77cSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7490c1e1135Smrg cpu=hppa1.0 7500c1e1135Smrg vendor=hp 7512d62a77cSmrg ;; 7522d62a77cSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7530c1e1135Smrg cpu=m68000 7540c1e1135Smrg vendor=hp 7552d62a77cSmrg ;; 7562d62a77cSmrg hp9k3[2-9][0-9]) 7570c1e1135Smrg cpu=m68k 7580c1e1135Smrg vendor=hp 7592d62a77cSmrg ;; 7602d62a77cSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7610c1e1135Smrg cpu=hppa1.0 7620c1e1135Smrg vendor=hp 7632d62a77cSmrg ;; 7642d62a77cSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7650c1e1135Smrg cpu=hppa1.1 7660c1e1135Smrg vendor=hp 7672d62a77cSmrg ;; 7682d62a77cSmrg hp9k78[0-9] | hp78[0-9]) 7692d62a77cSmrg # FIXME: really hppa2.0-hp 7700c1e1135Smrg cpu=hppa1.1 7710c1e1135Smrg vendor=hp 7722d62a77cSmrg ;; 7732d62a77cSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7742d62a77cSmrg # FIXME: really hppa2.0-hp 7750c1e1135Smrg cpu=hppa1.1 7760c1e1135Smrg vendor=hp 7772d62a77cSmrg ;; 7782d62a77cSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7790c1e1135Smrg cpu=hppa1.1 7800c1e1135Smrg vendor=hp 7812d62a77cSmrg ;; 7822d62a77cSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7830c1e1135Smrg cpu=hppa1.0 7840c1e1135Smrg vendor=hp 7852d62a77cSmrg ;; 7862d62a77cSmrg i*86v32) 7870c1e1135Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7880c1e1135Smrg vendor=pc 7890c1e1135Smrg basic_os=sysv32 7902d62a77cSmrg ;; 7912d62a77cSmrg i*86v4*) 7920c1e1135Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7930c1e1135Smrg vendor=pc 7940c1e1135Smrg basic_os=sysv4 7952d62a77cSmrg ;; 7962d62a77cSmrg i*86v) 7970c1e1135Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7980c1e1135Smrg vendor=pc 7990c1e1135Smrg basic_os=sysv 8002d62a77cSmrg ;; 8012d62a77cSmrg i*86sol2) 8020c1e1135Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8030c1e1135Smrg vendor=pc 8040c1e1135Smrg basic_os=solaris2 8052d62a77cSmrg ;; 8060c1e1135Smrg j90 | j90-cray) 8070c1e1135Smrg cpu=j90 8080c1e1135Smrg vendor=cray 8090c1e1135Smrg basic_os=${basic_os:-unicos} 8102d62a77cSmrg ;; 8112d62a77cSmrg iris | iris4d) 8120c1e1135Smrg cpu=mips 8130c1e1135Smrg vendor=sgi 8140c1e1135Smrg case $basic_os in 8150c1e1135Smrg irix*) 8162d62a77cSmrg ;; 8172d62a77cSmrg *) 8180c1e1135Smrg basic_os=irix4 8192d62a77cSmrg ;; 8202d62a77cSmrg esac 8212d62a77cSmrg ;; 8222d62a77cSmrg miniframe) 8230c1e1135Smrg cpu=m68000 8240c1e1135Smrg vendor=convergent 8252d62a77cSmrg ;; 8260c1e1135Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8270c1e1135Smrg cpu=m68k 8280c1e1135Smrg vendor=atari 8290c1e1135Smrg basic_os=mint 8302d62a77cSmrg ;; 8312d62a77cSmrg news-3600 | risc-news) 8320c1e1135Smrg cpu=mips 8330c1e1135Smrg vendor=sony 8340c1e1135Smrg basic_os=newsos 8352d62a77cSmrg ;; 83618b08247Smrg next | m*-next) 8370c1e1135Smrg cpu=m68k 8380c1e1135Smrg vendor=next 8390c1e1135Smrg case $basic_os in 8400c1e1135Smrg openstep*) 8410c1e1135Smrg ;; 8420c1e1135Smrg nextstep*) 8432d62a77cSmrg ;; 8440c1e1135Smrg ns2*) 8450c1e1135Smrg basic_os=nextstep2 8462d62a77cSmrg ;; 8472d62a77cSmrg *) 8480c1e1135Smrg basic_os=nextstep3 8492d62a77cSmrg ;; 8502d62a77cSmrg esac 8512d62a77cSmrg ;; 8522d62a77cSmrg np1) 8530c1e1135Smrg cpu=np1 8540c1e1135Smrg vendor=gould 85518b08247Smrg ;; 8562d62a77cSmrg op50n-* | op60c-*) 8570c1e1135Smrg cpu=hppa1.1 8580c1e1135Smrg vendor=oki 8590c1e1135Smrg basic_os=proelf 8602d62a77cSmrg ;; 8612d62a77cSmrg pa-hitachi) 8620c1e1135Smrg cpu=hppa1.1 8630c1e1135Smrg vendor=hitachi 8640c1e1135Smrg basic_os=hiuxwe2 8652d62a77cSmrg ;; 8662d62a77cSmrg pbd) 8670c1e1135Smrg cpu=sparc 8680c1e1135Smrg vendor=tti 8692d62a77cSmrg ;; 8702d62a77cSmrg pbb) 8710c1e1135Smrg cpu=m68k 8720c1e1135Smrg vendor=tti 8732d62a77cSmrg ;; 8740c1e1135Smrg pc532) 8750c1e1135Smrg cpu=ns32k 8760c1e1135Smrg vendor=pc532 8772d62a77cSmrg ;; 8782d62a77cSmrg pn) 8790c1e1135Smrg cpu=pn 8800c1e1135Smrg vendor=gould 8812d62a77cSmrg ;; 8820c1e1135Smrg power) 8830c1e1135Smrg cpu=power 8840c1e1135Smrg vendor=ibm 8852d62a77cSmrg ;; 8860c1e1135Smrg ps2) 8870c1e1135Smrg cpu=i386 8880c1e1135Smrg vendor=ibm 8892d62a77cSmrg ;; 8900c1e1135Smrg rm[46]00) 8910c1e1135Smrg cpu=mips 8920c1e1135Smrg vendor=siemens 8932d62a77cSmrg ;; 8940c1e1135Smrg rtpc | rtpc-*) 8950c1e1135Smrg cpu=romp 8960c1e1135Smrg vendor=ibm 8972d62a77cSmrg ;; 8980c1e1135Smrg sde) 8990c1e1135Smrg cpu=mipsisa32 9000c1e1135Smrg vendor=sde 9010c1e1135Smrg basic_os=${basic_os:-elf} 9022d62a77cSmrg ;; 9030c1e1135Smrg simso-wrs) 9040c1e1135Smrg cpu=sparclite 9050c1e1135Smrg vendor=wrs 9060c1e1135Smrg basic_os=vxworks 9072d62a77cSmrg ;; 9080c1e1135Smrg tower | tower-32) 9090c1e1135Smrg cpu=m68k 9100c1e1135Smrg vendor=ncr 9112d62a77cSmrg ;; 9120c1e1135Smrg vpp*|vx|vx-*) 9130c1e1135Smrg cpu=f301 9140c1e1135Smrg vendor=fujitsu 9152d62a77cSmrg ;; 9160c1e1135Smrg w65) 9170c1e1135Smrg cpu=w65 9180c1e1135Smrg vendor=wdc 91918b08247Smrg ;; 9200c1e1135Smrg w89k-*) 9210c1e1135Smrg cpu=hppa1.1 9220c1e1135Smrg vendor=winbond 9230c1e1135Smrg basic_os=proelf 9242d62a77cSmrg ;; 9250c1e1135Smrg none) 9260c1e1135Smrg cpu=none 9270c1e1135Smrg vendor=none 9282d62a77cSmrg ;; 9290c1e1135Smrg leon|leon[3-9]) 9300c1e1135Smrg cpu=sparc 9310c1e1135Smrg vendor=$basic_machine 9322d62a77cSmrg ;; 9330c1e1135Smrg leon-*|leon[3-9]-*) 9340c1e1135Smrg cpu=sparc 9350c1e1135Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9362d62a77cSmrg ;; 9370c1e1135Smrg 9380c1e1135Smrg *-*) 9390c1e1135Smrg # shellcheck disable=SC2162 9400c1e1135Smrg saved_IFS=$IFS 9410c1e1135Smrg IFS="-" read cpu vendor <<EOF 9420c1e1135Smrg$basic_machine 9430c1e1135SmrgEOF 9440c1e1135Smrg IFS=$saved_IFS 9452d62a77cSmrg ;; 9460c1e1135Smrg # We use `pc' rather than `unknown' 9470c1e1135Smrg # because (1) that's what they normally are, and 9480c1e1135Smrg # (2) the word "unknown" tends to confuse beginning users. 9490c1e1135Smrg i*86 | x86_64) 9500c1e1135Smrg cpu=$basic_machine 9510c1e1135Smrg vendor=pc 9522d62a77cSmrg ;; 9530c1e1135Smrg # These rules are duplicated from below for sake of the special case above; 9540c1e1135Smrg # i.e. things that normalized to x86 arches should also default to "pc" 9550c1e1135Smrg pc98) 9560c1e1135Smrg cpu=i386 9570c1e1135Smrg vendor=pc 9582d62a77cSmrg ;; 9590c1e1135Smrg x64 | amd64) 9600c1e1135Smrg cpu=x86_64 9610c1e1135Smrg vendor=pc 9622d62a77cSmrg ;; 9630c1e1135Smrg # Recognize the basic CPU types without company name. 9640c1e1135Smrg *) 9650c1e1135Smrg cpu=$basic_machine 9660c1e1135Smrg vendor=unknown 9672d62a77cSmrg ;; 9680c1e1135Smrgesac 9690c1e1135Smrg 9700c1e1135Smrgunset -v basic_machine 9710c1e1135Smrg 9720c1e1135Smrg# Decode basic machines in the full and proper CPU-Company form. 9730c1e1135Smrgcase $cpu-$vendor in 9740c1e1135Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9750c1e1135Smrg # some cases the only manufacturer, in others, it is the most popular. 9760c1e1135Smrg craynv-unknown) 9770c1e1135Smrg vendor=cray 9780c1e1135Smrg basic_os=${basic_os:-unicosmp} 9792d62a77cSmrg ;; 9800c1e1135Smrg c90-unknown | c90-cray) 9810c1e1135Smrg vendor=cray 9820c1e1135Smrg basic_os=${Basic_os:-unicos} 9832d62a77cSmrg ;; 9840c1e1135Smrg fx80-unknown) 9850c1e1135Smrg vendor=alliant 9862d62a77cSmrg ;; 9870c1e1135Smrg romp-unknown) 9880c1e1135Smrg vendor=ibm 9892d62a77cSmrg ;; 9900c1e1135Smrg mmix-unknown) 9910c1e1135Smrg vendor=knuth 9922d62a77cSmrg ;; 9930c1e1135Smrg microblaze-unknown | microblazeel-unknown) 9940c1e1135Smrg vendor=xilinx 9952d62a77cSmrg ;; 9960c1e1135Smrg rs6000-unknown) 9970c1e1135Smrg vendor=ibm 9982d62a77cSmrg ;; 9990c1e1135Smrg vax-unknown) 10000c1e1135Smrg vendor=dec 10012d62a77cSmrg ;; 10020c1e1135Smrg pdp11-unknown) 10030c1e1135Smrg vendor=dec 10042d62a77cSmrg ;; 10050c1e1135Smrg we32k-unknown) 10060c1e1135Smrg vendor=att 100718b08247Smrg ;; 10080c1e1135Smrg cydra-unknown) 10090c1e1135Smrg vendor=cydrome 10102d62a77cSmrg ;; 10110c1e1135Smrg i370-ibm*) 10120c1e1135Smrg vendor=ibm 10132d62a77cSmrg ;; 10140c1e1135Smrg orion-unknown) 10150c1e1135Smrg vendor=highlevel 10162d62a77cSmrg ;; 10170c1e1135Smrg xps-unknown | xps100-unknown) 10180c1e1135Smrg cpu=xps100 10190c1e1135Smrg vendor=honeywell 10202d62a77cSmrg ;; 10210c1e1135Smrg 10220c1e1135Smrg # Here we normalize CPU types with a missing or matching vendor 10230c1e1135Smrg armh-unknown | armh-alt) 10240c1e1135Smrg cpu=armv7l 10250c1e1135Smrg vendor=alt 10260c1e1135Smrg basic_os=${basic_os:-linux-gnueabihf} 10272d62a77cSmrg ;; 10280c1e1135Smrg dpx20-unknown | dpx20-bull) 10290c1e1135Smrg cpu=rs6000 10300c1e1135Smrg vendor=bull 10310c1e1135Smrg basic_os=${basic_os:-bosx} 10322d62a77cSmrg ;; 10330c1e1135Smrg 10340c1e1135Smrg # Here we normalize CPU types irrespective of the vendor 10350c1e1135Smrg amd64-*) 10360c1e1135Smrg cpu=x86_64 10372d62a77cSmrg ;; 10380c1e1135Smrg blackfin-*) 10390c1e1135Smrg cpu=bfin 10400c1e1135Smrg basic_os=linux 10412d62a77cSmrg ;; 10420c1e1135Smrg c54x-*) 10430c1e1135Smrg cpu=tic54x 10442d62a77cSmrg ;; 10450c1e1135Smrg c55x-*) 10460c1e1135Smrg cpu=tic55x 10472d62a77cSmrg ;; 10480c1e1135Smrg c6x-*) 10490c1e1135Smrg cpu=tic6x 10502d62a77cSmrg ;; 10510c1e1135Smrg e500v[12]-*) 10520c1e1135Smrg cpu=powerpc 10530c1e1135Smrg basic_os=${basic_os}"spe" 10542d62a77cSmrg ;; 10550c1e1135Smrg mips3*-*) 10560c1e1135Smrg cpu=mips64 10572d62a77cSmrg ;; 10580c1e1135Smrg ms1-*) 10590c1e1135Smrg cpu=mt 10602d62a77cSmrg ;; 10610c1e1135Smrg m68knommu-*) 10620c1e1135Smrg cpu=m68k 10630c1e1135Smrg basic_os=linux 10642d62a77cSmrg ;; 10650c1e1135Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10660c1e1135Smrg cpu=s12z 10672d62a77cSmrg ;; 10680c1e1135Smrg openrisc-*) 10690c1e1135Smrg cpu=or32 10702d62a77cSmrg ;; 10710c1e1135Smrg parisc-*) 10720c1e1135Smrg cpu=hppa 10730c1e1135Smrg basic_os=linux 10742d62a77cSmrg ;; 10750c1e1135Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10760c1e1135Smrg cpu=i586 10772d62a77cSmrg ;; 10780c1e1135Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 10790c1e1135Smrg cpu=i686 10802d62a77cSmrg ;; 10810c1e1135Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10820c1e1135Smrg cpu=i686 10832d62a77cSmrg ;; 10840c1e1135Smrg pentium4-*) 10850c1e1135Smrg cpu=i786 10862d62a77cSmrg ;; 10870c1e1135Smrg pc98-*) 10880c1e1135Smrg cpu=i386 10892d62a77cSmrg ;; 10900c1e1135Smrg ppc-* | ppcbe-*) 10910c1e1135Smrg cpu=powerpc 10922d62a77cSmrg ;; 10930c1e1135Smrg ppcle-* | powerpclittle-*) 10940c1e1135Smrg cpu=powerpcle 10952d62a77cSmrg ;; 10960c1e1135Smrg ppc64-*) 10970c1e1135Smrg cpu=powerpc64 10982d62a77cSmrg ;; 10990c1e1135Smrg ppc64le-* | powerpc64little-*) 11000c1e1135Smrg cpu=powerpc64le 11012d62a77cSmrg ;; 11020c1e1135Smrg sb1-*) 11030c1e1135Smrg cpu=mipsisa64sb1 11042d62a77cSmrg ;; 11050c1e1135Smrg sb1el-*) 11060c1e1135Smrg cpu=mipsisa64sb1el 11072d62a77cSmrg ;; 11080c1e1135Smrg sh5e[lb]-*) 11090c1e1135Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11102d62a77cSmrg ;; 11110c1e1135Smrg spur-*) 11120c1e1135Smrg cpu=spur 11132d62a77cSmrg ;; 11140c1e1135Smrg strongarm-* | thumb-*) 11150c1e1135Smrg cpu=arm 11162d62a77cSmrg ;; 11170c1e1135Smrg tx39-*) 11180c1e1135Smrg cpu=mipstx39 111918b08247Smrg ;; 11200c1e1135Smrg tx39el-*) 11210c1e1135Smrg cpu=mipstx39el 11222d62a77cSmrg ;; 11230c1e1135Smrg x64-*) 11240c1e1135Smrg cpu=x86_64 11252d62a77cSmrg ;; 112618b08247Smrg xscale-* | xscalee[bl]-*) 11270c1e1135Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11282d62a77cSmrg ;; 11290c1e1135Smrg arm64-* | aarch64le-*) 11300c1e1135Smrg cpu=aarch64 11312d62a77cSmrg ;; 11322d62a77cSmrg 11330c1e1135Smrg # Recognize the canonical CPU Types that limit and/or modify the 11340c1e1135Smrg # company names they are paired with. 11350c1e1135Smrg cr16-*) 11360c1e1135Smrg basic_os=${basic_os:-elf} 11372d62a77cSmrg ;; 11380c1e1135Smrg crisv32-* | etraxfs*-*) 11390c1e1135Smrg cpu=crisv32 11400c1e1135Smrg vendor=axis 11412d62a77cSmrg ;; 11420c1e1135Smrg cris-* | etrax*-*) 11430c1e1135Smrg cpu=cris 11440c1e1135Smrg vendor=axis 11452d62a77cSmrg ;; 11460c1e1135Smrg crx-*) 11470c1e1135Smrg basic_os=${basic_os:-elf} 11482d62a77cSmrg ;; 11490c1e1135Smrg neo-tandem) 11500c1e1135Smrg cpu=neo 11510c1e1135Smrg vendor=tandem 11522d62a77cSmrg ;; 11530c1e1135Smrg nse-tandem) 11540c1e1135Smrg cpu=nse 11550c1e1135Smrg vendor=tandem 11562d62a77cSmrg ;; 11570c1e1135Smrg nsr-tandem) 11580c1e1135Smrg cpu=nsr 11590c1e1135Smrg vendor=tandem 11602d62a77cSmrg ;; 11610c1e1135Smrg nsv-tandem) 11620c1e1135Smrg cpu=nsv 11630c1e1135Smrg vendor=tandem 11642d62a77cSmrg ;; 11650c1e1135Smrg nsx-tandem) 11660c1e1135Smrg cpu=nsx 11670c1e1135Smrg vendor=tandem 11682d62a77cSmrg ;; 11690c1e1135Smrg mipsallegrexel-sony) 11700c1e1135Smrg cpu=mipsallegrexel 11710c1e1135Smrg vendor=sony 11722d62a77cSmrg ;; 11730c1e1135Smrg tile*-*) 11740c1e1135Smrg basic_os=${basic_os:-linux-gnu} 11752d62a77cSmrg ;; 11760c1e1135Smrg 11772d62a77cSmrg *) 11780c1e1135Smrg # Recognize the canonical CPU types that are allowed with any 11790c1e1135Smrg # company name. 11800c1e1135Smrg case $cpu in 11810c1e1135Smrg 1750a | 580 \ 11820c1e1135Smrg | a29k \ 11830c1e1135Smrg | aarch64 | aarch64_be \ 11840c1e1135Smrg | abacus \ 11850c1e1135Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11860c1e1135Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11870c1e1135Smrg | alphapca5[67] | alpha64pca5[67] \ 11880c1e1135Smrg | am33_2.0 \ 11890c1e1135Smrg | amdgcn \ 11900c1e1135Smrg | arc | arceb | arc32 | arc64 \ 11910c1e1135Smrg | arm | arm[lb]e | arme[lb] | armv* \ 11920c1e1135Smrg | avr | avr32 \ 11930c1e1135Smrg | asmjs \ 11940c1e1135Smrg | ba \ 11950c1e1135Smrg | be32 | be64 \ 11960c1e1135Smrg | bfin | bpf | bs2000 \ 11970c1e1135Smrg | c[123]* | c30 | [cjt]90 | c4x \ 11980c1e1135Smrg | c8051 | clipper | craynv | csky | cydra \ 11990c1e1135Smrg | d10v | d30v | dlx | dsp16xx \ 12000c1e1135Smrg | e2k | elxsi | epiphany \ 12010c1e1135Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 12020c1e1135Smrg | h8300 | h8500 \ 12030c1e1135Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 12040c1e1135Smrg | hexagon \ 12050c1e1135Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12060c1e1135Smrg | ip2k | iq2000 \ 12070c1e1135Smrg | k1om \ 12080c1e1135Smrg | le32 | le64 \ 12090c1e1135Smrg | lm32 \ 12100c1e1135Smrg | loongarch32 | loongarch64 \ 12110c1e1135Smrg | m32c | m32r | m32rle \ 12120c1e1135Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12130c1e1135Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12140c1e1135Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12150c1e1135Smrg | microblaze | microblazeel \ 12160c1e1135Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12170c1e1135Smrg | mips16 \ 12180c1e1135Smrg | mips64 | mips64eb | mips64el \ 12190c1e1135Smrg | mips64octeon | mips64octeonel \ 12200c1e1135Smrg | mips64orion | mips64orionel \ 12210c1e1135Smrg | mips64r5900 | mips64r5900el \ 12220c1e1135Smrg | mips64vr | mips64vrel \ 12230c1e1135Smrg | mips64vr4100 | mips64vr4100el \ 12240c1e1135Smrg | mips64vr4300 | mips64vr4300el \ 12250c1e1135Smrg | mips64vr5000 | mips64vr5000el \ 12260c1e1135Smrg | mips64vr5900 | mips64vr5900el \ 12270c1e1135Smrg | mipsisa32 | mipsisa32el \ 12280c1e1135Smrg | mipsisa32r2 | mipsisa32r2el \ 12290c1e1135Smrg | mipsisa32r3 | mipsisa32r3el \ 12300c1e1135Smrg | mipsisa32r5 | mipsisa32r5el \ 12310c1e1135Smrg | mipsisa32r6 | mipsisa32r6el \ 12320c1e1135Smrg | mipsisa64 | mipsisa64el \ 12330c1e1135Smrg | mipsisa64r2 | mipsisa64r2el \ 12340c1e1135Smrg | mipsisa64r3 | mipsisa64r3el \ 12350c1e1135Smrg | mipsisa64r5 | mipsisa64r5el \ 12360c1e1135Smrg | mipsisa64r6 | mipsisa64r6el \ 12370c1e1135Smrg | mipsisa64sb1 | mipsisa64sb1el \ 12380c1e1135Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 12390c1e1135Smrg | mipsr5900 | mipsr5900el \ 12400c1e1135Smrg | mipstx39 | mipstx39el \ 12410c1e1135Smrg | mmix \ 12420c1e1135Smrg | mn10200 | mn10300 \ 12430c1e1135Smrg | moxie \ 12440c1e1135Smrg | mt \ 12450c1e1135Smrg | msp430 \ 12460c1e1135Smrg | nds32 | nds32le | nds32be \ 12470c1e1135Smrg | nfp \ 12480c1e1135Smrg | nios | nios2 | nios2eb | nios2el \ 12490c1e1135Smrg | none | np1 | ns16k | ns32k | nvptx \ 12500c1e1135Smrg | open8 \ 12510c1e1135Smrg | or1k* \ 12520c1e1135Smrg | or32 \ 12530c1e1135Smrg | orion \ 12540c1e1135Smrg | picochip \ 12550c1e1135Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12560c1e1135Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12570c1e1135Smrg | pru \ 12580c1e1135Smrg | pyramid \ 12590c1e1135Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12600c1e1135Smrg | rl78 | romp | rs6000 | rx \ 12610c1e1135Smrg | s390 | s390x \ 12620c1e1135Smrg | score \ 12630c1e1135Smrg | sh | shl \ 12640c1e1135Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12650c1e1135Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12660c1e1135Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12670c1e1135Smrg | sparclite \ 12680c1e1135Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12690c1e1135Smrg | spu \ 12700c1e1135Smrg | tahoe \ 12710c1e1135Smrg | thumbv7* \ 12720c1e1135Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12730c1e1135Smrg | tron \ 12740c1e1135Smrg | ubicom32 \ 12750c1e1135Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12760c1e1135Smrg | vax \ 12770c1e1135Smrg | visium \ 12780c1e1135Smrg | w65 \ 12790c1e1135Smrg | wasm32 | wasm64 \ 12800c1e1135Smrg | we32k \ 12810c1e1135Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12820c1e1135Smrg | xstormy16 | xtensa* \ 12830c1e1135Smrg | ymp \ 12840c1e1135Smrg | z8k | z80) 12850c1e1135Smrg ;; 12860c1e1135Smrg 12870c1e1135Smrg *) 12880c1e1135Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12890c1e1135Smrg exit 1 12900c1e1135Smrg ;; 12910c1e1135Smrg esac 12922d62a77cSmrg ;; 12932d62a77cSmrgesac 12942d62a77cSmrg 12952d62a77cSmrg# Here we canonicalize certain aliases for manufacturers. 12960c1e1135Smrgcase $vendor in 12970c1e1135Smrg digital*) 12980c1e1135Smrg vendor=dec 12992d62a77cSmrg ;; 13000c1e1135Smrg commodore*) 13010c1e1135Smrg vendor=cbm 13022d62a77cSmrg ;; 13032d62a77cSmrg *) 13042d62a77cSmrg ;; 13052d62a77cSmrgesac 13062d62a77cSmrg 13072d62a77cSmrg# Decode manufacturer-specific aliases for certain operating systems. 13082d62a77cSmrg 13090c1e1135Smrgif test x$basic_os != x 13102d62a77cSmrgthen 13110c1e1135Smrg 13120c1e1135Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 13130c1e1135Smrg# set os. 13140c1e1135Smrgcase $basic_os in 13150c1e1135Smrg gnu/linux*) 13160c1e1135Smrg kernel=linux 13170c1e1135Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13180c1e1135Smrg ;; 13190c1e1135Smrg os2-emx) 13200c1e1135Smrg kernel=os2 13210c1e1135Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13220c1e1135Smrg ;; 13230c1e1135Smrg nto-qnx*) 13240c1e1135Smrg kernel=nto 13250c1e1135Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13260c1e1135Smrg ;; 13270c1e1135Smrg *-*) 13280c1e1135Smrg # shellcheck disable=SC2162 13290c1e1135Smrg saved_IFS=$IFS 13300c1e1135Smrg IFS="-" read kernel os <<EOF 13310c1e1135Smrg$basic_os 13320c1e1135SmrgEOF 13330c1e1135Smrg IFS=$saved_IFS 13340c1e1135Smrg ;; 13350c1e1135Smrg # Default OS when just kernel was specified 13360c1e1135Smrg nto*) 13370c1e1135Smrg kernel=nto 13380c1e1135Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13390c1e1135Smrg ;; 13400c1e1135Smrg linux*) 13410c1e1135Smrg kernel=linux 13420c1e1135Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13430c1e1135Smrg ;; 13440c1e1135Smrg managarm*) 13450c1e1135Smrg kernel=managarm 13460c1e1135Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 13470c1e1135Smrg ;; 13480c1e1135Smrg *) 13490c1e1135Smrg kernel= 13500c1e1135Smrg os=$basic_os 13510c1e1135Smrg ;; 13520c1e1135Smrgesac 13530c1e1135Smrg 13540c1e1135Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13550c1e1135Smrg# etc.) 13562d62a77cSmrgcase $os in 135718b08247Smrg # First match some system type aliases that might get confused 135818b08247Smrg # with valid system types. 13590c1e1135Smrg # solaris* is a basic system type, with this one exception. 13600c1e1135Smrg auroraux) 13610c1e1135Smrg os=auroraux 13626d325d25Smrg ;; 13630c1e1135Smrg bluegene*) 13640c1e1135Smrg os=cnk 13652d62a77cSmrg ;; 13660c1e1135Smrg solaris1 | solaris1.*) 13670c1e1135Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13682d62a77cSmrg ;; 13690c1e1135Smrg solaris) 13700c1e1135Smrg os=solaris2 13712d62a77cSmrg ;; 13720c1e1135Smrg unixware*) 13730c1e1135Smrg os=sysv4.2uw 13742d62a77cSmrg ;; 137518b08247Smrg # es1800 is here to avoid being matched by es* (a different OS) 13760c1e1135Smrg es1800*) 13770c1e1135Smrg os=ose 137818b08247Smrg ;; 13790c1e1135Smrg # Some version numbers need modification 13800c1e1135Smrg chorusos*) 13810c1e1135Smrg os=chorusos 13822d62a77cSmrg ;; 13830c1e1135Smrg isc) 13840c1e1135Smrg os=isc2.2 13852d62a77cSmrg ;; 13860c1e1135Smrg sco6) 13870c1e1135Smrg os=sco5v6 13882d62a77cSmrg ;; 13890c1e1135Smrg sco5) 13900c1e1135Smrg os=sco3.2v5 13912d62a77cSmrg ;; 13920c1e1135Smrg sco4) 13930c1e1135Smrg os=sco3.2v4 13942d62a77cSmrg ;; 13950c1e1135Smrg sco3.2.[4-9]*) 13960c1e1135Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13972d62a77cSmrg ;; 13980c1e1135Smrg sco*v* | scout) 13990c1e1135Smrg # Don't match below 14002d62a77cSmrg ;; 14010c1e1135Smrg sco*) 14020c1e1135Smrg os=sco3.2v2 14032d62a77cSmrg ;; 14040c1e1135Smrg psos*) 14050c1e1135Smrg os=psos 14062d62a77cSmrg ;; 14070c1e1135Smrg qnx*) 14080c1e1135Smrg os=qnx 14092d62a77cSmrg ;; 14100c1e1135Smrg hiux*) 14110c1e1135Smrg os=hiuxwe2 14122d62a77cSmrg ;; 14130c1e1135Smrg lynx*178) 14140c1e1135Smrg os=lynxos178 14152d62a77cSmrg ;; 14160c1e1135Smrg lynx*5) 14170c1e1135Smrg os=lynxos5 14182d62a77cSmrg ;; 14190c1e1135Smrg lynxos*) 14200c1e1135Smrg # don't get caught up in next wildcard 14212d62a77cSmrg ;; 14220c1e1135Smrg lynx*) 14230c1e1135Smrg os=lynxos 14242d62a77cSmrg ;; 14250c1e1135Smrg mac[0-9]*) 14260c1e1135Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 14272d62a77cSmrg ;; 14280c1e1135Smrg opened*) 14290c1e1135Smrg os=openedition 14302d62a77cSmrg ;; 14310c1e1135Smrg os400*) 14320c1e1135Smrg os=os400 14332d62a77cSmrg ;; 14340c1e1135Smrg sunos5*) 14350c1e1135Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14362d62a77cSmrg ;; 14370c1e1135Smrg sunos6*) 14380c1e1135Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14392d62a77cSmrg ;; 14400c1e1135Smrg wince*) 14410c1e1135Smrg os=wince 14422d62a77cSmrg ;; 14430c1e1135Smrg utek*) 14440c1e1135Smrg os=bsd 14452d62a77cSmrg ;; 14460c1e1135Smrg dynix*) 14470c1e1135Smrg os=bsd 14480c1e1135Smrg ;; 14490c1e1135Smrg acis*) 14500c1e1135Smrg os=aos 14510c1e1135Smrg ;; 14520c1e1135Smrg atheos*) 14530c1e1135Smrg os=atheos 14540c1e1135Smrg ;; 14550c1e1135Smrg syllable*) 14560c1e1135Smrg os=syllable 14572d62a77cSmrg ;; 14580c1e1135Smrg 386bsd) 14590c1e1135Smrg os=bsd 14600c1e1135Smrg ;; 14610c1e1135Smrg ctix* | uts*) 14620c1e1135Smrg os=sysv 14632d62a77cSmrg ;; 14640c1e1135Smrg nova*) 14650c1e1135Smrg os=rtmk-nova 14662d62a77cSmrg ;; 14670c1e1135Smrg ns2) 14680c1e1135Smrg os=nextstep2 14690c1e1135Smrg ;; 14700c1e1135Smrg # Preserve the version number of sinix5. 14710c1e1135Smrg sinix5.*) 14720c1e1135Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14732d62a77cSmrg ;; 14740c1e1135Smrg sinix*) 14750c1e1135Smrg os=sysv4 14762d62a77cSmrg ;; 14770c1e1135Smrg tpf*) 14780c1e1135Smrg os=tpf 14792d62a77cSmrg ;; 14800c1e1135Smrg triton*) 14810c1e1135Smrg os=sysv3 14822d62a77cSmrg ;; 14830c1e1135Smrg oss*) 14840c1e1135Smrg os=sysv3 14852d62a77cSmrg ;; 14860c1e1135Smrg svr4*) 14870c1e1135Smrg os=sysv4 14882d62a77cSmrg ;; 14890c1e1135Smrg svr3) 14900c1e1135Smrg os=sysv3 14912d62a77cSmrg ;; 14920c1e1135Smrg sysvr4) 14930c1e1135Smrg os=sysv4 14942d62a77cSmrg ;; 14950c1e1135Smrg ose*) 14960c1e1135Smrg os=ose 14972d62a77cSmrg ;; 14980c1e1135Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14990c1e1135Smrg os=mint 15002d62a77cSmrg ;; 15010c1e1135Smrg dicos*) 15020c1e1135Smrg os=dicos 15030c1e1135Smrg ;; 15040c1e1135Smrg pikeos*) 150518b08247Smrg # Until real need of OS specific support for 150618b08247Smrg # particular features comes up, bare metal 150718b08247Smrg # configurations are quite functional. 15080c1e1135Smrg case $cpu in 150918b08247Smrg arm*) 15100c1e1135Smrg os=eabi 151118b08247Smrg ;; 151218b08247Smrg *) 15130c1e1135Smrg os=elf 151418b08247Smrg ;; 151518b08247Smrg esac 151618b08247Smrg ;; 15172d62a77cSmrg *) 15180c1e1135Smrg # No normalization, but not necessarily accepted, that comes below. 15192d62a77cSmrg ;; 15202d62a77cSmrgesac 15210c1e1135Smrg 15222d62a77cSmrgelse 15232d62a77cSmrg 15242d62a77cSmrg# Here we handle the default operating systems that come with various machines. 15252d62a77cSmrg# The value should be what the vendor currently ships out the door with their 15262d62a77cSmrg# machine or put another way, the most popular os provided with the machine. 15272d62a77cSmrg 15282d62a77cSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15292d62a77cSmrg# "-sun"), then you have to tell the case statement up towards the top 15302d62a77cSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15312d62a77cSmrg# will signal an error saying that MANUFACTURER isn't an operating 15322d62a77cSmrg# system, and we'll never get to this point. 15332d62a77cSmrg 15340c1e1135Smrgkernel= 15350c1e1135Smrgcase $cpu-$vendor in 153618b08247Smrg score-*) 15370c1e1135Smrg os=elf 15382d62a77cSmrg ;; 153918b08247Smrg spu-*) 15400c1e1135Smrg os=elf 15412d62a77cSmrg ;; 15422d62a77cSmrg *-acorn) 15430c1e1135Smrg os=riscix1.2 15442d62a77cSmrg ;; 15452d62a77cSmrg arm*-rebel) 15460c1e1135Smrg kernel=linux 15470c1e1135Smrg os=gnu 15482d62a77cSmrg ;; 15492d62a77cSmrg arm*-semi) 15500c1e1135Smrg os=aout 15512d62a77cSmrg ;; 155218b08247Smrg c4x-* | tic4x-*) 15530c1e1135Smrg os=coff 155418b08247Smrg ;; 155518b08247Smrg c8051-*) 15560c1e1135Smrg os=elf 15570c1e1135Smrg ;; 15580c1e1135Smrg clipper-intergraph) 15590c1e1135Smrg os=clix 156018b08247Smrg ;; 156118b08247Smrg hexagon-*) 15620c1e1135Smrg os=elf 15632d62a77cSmrg ;; 15646d325d25Smrg tic54x-*) 15650c1e1135Smrg os=coff 15666d325d25Smrg ;; 15676d325d25Smrg tic55x-*) 15680c1e1135Smrg os=coff 15696d325d25Smrg ;; 15706d325d25Smrg tic6x-*) 15710c1e1135Smrg os=coff 15726d325d25Smrg ;; 15732d62a77cSmrg # This must come before the *-dec entry. 15742d62a77cSmrg pdp10-*) 15750c1e1135Smrg os=tops20 15762d62a77cSmrg ;; 15772d62a77cSmrg pdp11-*) 15780c1e1135Smrg os=none 15792d62a77cSmrg ;; 15802d62a77cSmrg *-dec | vax-*) 15810c1e1135Smrg os=ultrix4.2 15822d62a77cSmrg ;; 15832d62a77cSmrg m68*-apollo) 15840c1e1135Smrg os=domain 15852d62a77cSmrg ;; 15862d62a77cSmrg i386-sun) 15870c1e1135Smrg os=sunos4.0.2 15882d62a77cSmrg ;; 15892d62a77cSmrg m68000-sun) 15900c1e1135Smrg os=sunos3 15912d62a77cSmrg ;; 15922d62a77cSmrg m68*-cisco) 15930c1e1135Smrg os=aout 15942d62a77cSmrg ;; 159518b08247Smrg mep-*) 15960c1e1135Smrg os=elf 15972d62a77cSmrg ;; 15982d62a77cSmrg mips*-cisco) 15990c1e1135Smrg os=elf 16002d62a77cSmrg ;; 16012d62a77cSmrg mips*-*) 16020c1e1135Smrg os=elf 16032d62a77cSmrg ;; 16042d62a77cSmrg or32-*) 16050c1e1135Smrg os=coff 16062d62a77cSmrg ;; 16072d62a77cSmrg *-tti) # must be before sparc entry or we get the wrong os. 16080c1e1135Smrg os=sysv3 16092d62a77cSmrg ;; 16102d62a77cSmrg sparc-* | *-sun) 16110c1e1135Smrg os=sunos4.1.1 16122d62a77cSmrg ;; 161318b08247Smrg pru-*) 16140c1e1135Smrg os=elf 161518b08247Smrg ;; 16162d62a77cSmrg *-be) 16170c1e1135Smrg os=beos 16182d62a77cSmrg ;; 16192d62a77cSmrg *-ibm) 16200c1e1135Smrg os=aix 16212d62a77cSmrg ;; 162218b08247Smrg *-knuth) 16230c1e1135Smrg os=mmixware 16242d62a77cSmrg ;; 16252d62a77cSmrg *-wec) 16260c1e1135Smrg os=proelf 16272d62a77cSmrg ;; 16282d62a77cSmrg *-winbond) 16290c1e1135Smrg os=proelf 16302d62a77cSmrg ;; 16312d62a77cSmrg *-oki) 16320c1e1135Smrg os=proelf 16332d62a77cSmrg ;; 16342d62a77cSmrg *-hp) 16350c1e1135Smrg os=hpux 16362d62a77cSmrg ;; 16372d62a77cSmrg *-hitachi) 16380c1e1135Smrg os=hiux 16392d62a77cSmrg ;; 16402d62a77cSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16410c1e1135Smrg os=sysv 16422d62a77cSmrg ;; 16432d62a77cSmrg *-cbm) 16440c1e1135Smrg os=amigaos 16452d62a77cSmrg ;; 16462d62a77cSmrg *-dg) 16470c1e1135Smrg os=dgux 16482d62a77cSmrg ;; 16492d62a77cSmrg *-dolphin) 16500c1e1135Smrg os=sysv3 16512d62a77cSmrg ;; 16522d62a77cSmrg m68k-ccur) 16530c1e1135Smrg os=rtu 16542d62a77cSmrg ;; 16552d62a77cSmrg m88k-omron*) 16560c1e1135Smrg os=luna 16572d62a77cSmrg ;; 165818b08247Smrg *-next) 16590c1e1135Smrg os=nextstep 16602d62a77cSmrg ;; 16612d62a77cSmrg *-sequent) 16620c1e1135Smrg os=ptx 16632d62a77cSmrg ;; 16642d62a77cSmrg *-crds) 16650c1e1135Smrg os=unos 16662d62a77cSmrg ;; 16672d62a77cSmrg *-ns) 16680c1e1135Smrg os=genix 16692d62a77cSmrg ;; 16702d62a77cSmrg i370-*) 16710c1e1135Smrg os=mvs 16722d62a77cSmrg ;; 16732d62a77cSmrg *-gould) 16740c1e1135Smrg os=sysv 16752d62a77cSmrg ;; 16762d62a77cSmrg *-highlevel) 16770c1e1135Smrg os=bsd 16782d62a77cSmrg ;; 16792d62a77cSmrg *-encore) 16800c1e1135Smrg os=bsd 16812d62a77cSmrg ;; 16822d62a77cSmrg *-sgi) 16830c1e1135Smrg os=irix 16842d62a77cSmrg ;; 16852d62a77cSmrg *-siemens) 16860c1e1135Smrg os=sysv4 16872d62a77cSmrg ;; 16882d62a77cSmrg *-masscomp) 16890c1e1135Smrg os=rtu 16902d62a77cSmrg ;; 16912d62a77cSmrg f30[01]-fujitsu | f700-fujitsu) 16920c1e1135Smrg os=uxpv 16932d62a77cSmrg ;; 16942d62a77cSmrg *-rom68k) 16950c1e1135Smrg os=coff 16962d62a77cSmrg ;; 16972d62a77cSmrg *-*bug) 16980c1e1135Smrg os=coff 16992d62a77cSmrg ;; 17002d62a77cSmrg *-apple) 17010c1e1135Smrg os=macos 17022d62a77cSmrg ;; 17032d62a77cSmrg *-atari*) 17040c1e1135Smrg os=mint 17050c1e1135Smrg ;; 17060c1e1135Smrg *-wrs) 17070c1e1135Smrg os=vxworks 17082d62a77cSmrg ;; 17092d62a77cSmrg *) 17100c1e1135Smrg os=none 17112d62a77cSmrg ;; 17122d62a77cSmrgesac 17130c1e1135Smrg 17142d62a77cSmrgfi 17152d62a77cSmrg 17160c1e1135Smrg# Now, validate our (potentially fixed-up) OS. 17170c1e1135Smrgcase $os in 17180c1e1135Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17190c1e1135Smrg musl* | newlib* | relibc* | uclibc*) 17200c1e1135Smrg ;; 17210c1e1135Smrg # Likewise for "kernel-abi" 17220c1e1135Smrg eabi* | gnueabi*) 17230c1e1135Smrg ;; 17240c1e1135Smrg # VxWorks passes extra cpu info in the 4th filed. 17250c1e1135Smrg simlinux | simwindows | spe) 17260c1e1135Smrg ;; 17270c1e1135Smrg # Now accept the basic system types. 17280c1e1135Smrg # The portable systems comes first. 17290c1e1135Smrg # Each alternative MUST end in a * to match a version number. 17300c1e1135Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17310c1e1135Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17320c1e1135Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17330c1e1135Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17340c1e1135Smrg | hiux* | abug | nacl* | netware* | windows* \ 17350c1e1135Smrg | os9* | macos* | osx* | ios* \ 17360c1e1135Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17370c1e1135Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17380c1e1135Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17390c1e1135Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17400c1e1135Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17410c1e1135Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17420c1e1135Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17430c1e1135Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17440c1e1135Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17450c1e1135Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17460c1e1135Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17470c1e1135Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17480c1e1135Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17490c1e1135Smrg | midipix* | mingw32* | mingw64* | mint* \ 17500c1e1135Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17510c1e1135Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17520c1e1135Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17530c1e1135Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17540c1e1135Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17550c1e1135Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17560c1e1135Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17570c1e1135Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17580c1e1135Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17590c1e1135Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17600c1e1135Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 17610c1e1135Smrg | fiwix* | mlibc* ) 17620c1e1135Smrg ;; 17630c1e1135Smrg # This one is extra strict with allowed versions 17640c1e1135Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17650c1e1135Smrg # Don't forget version if it is 3.2v4 or newer. 17660c1e1135Smrg ;; 17670c1e1135Smrg none) 17680c1e1135Smrg ;; 17690c1e1135Smrg kernel* ) 17700c1e1135Smrg # Restricted further below 17710c1e1135Smrg ;; 17720c1e1135Smrg *) 17730c1e1135Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17740c1e1135Smrg exit 1 17750c1e1135Smrg ;; 17760c1e1135Smrgesac 17770c1e1135Smrg 17780c1e1135Smrg# As a final step for OS-related things, validate the OS-kernel combination 17790c1e1135Smrg# (given a valid OS), if there is a kernel. 17800c1e1135Smrgcase $kernel-$os in 17810c1e1135Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17820c1e1135Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 17830c1e1135Smrg ;; 17840c1e1135Smrg uclinux-uclibc* ) 17850c1e1135Smrg ;; 17860c1e1135Smrg managarm-mlibc* | managarm-kernel* ) 17870c1e1135Smrg ;; 17880c1e1135Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 17890c1e1135Smrg # These are just libc implementations, not actual OSes, and thus 17900c1e1135Smrg # require a kernel. 17910c1e1135Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17920c1e1135Smrg exit 1 17930c1e1135Smrg ;; 17940c1e1135Smrg -kernel* ) 17950c1e1135Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 17960c1e1135Smrg exit 1 17970c1e1135Smrg ;; 17980c1e1135Smrg *-kernel* ) 17990c1e1135Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 18000c1e1135Smrg exit 1 18010c1e1135Smrg ;; 18020c1e1135Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 18030c1e1135Smrg ;; 18040c1e1135Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 18050c1e1135Smrg ;; 18060c1e1135Smrg nto-qnx*) 18070c1e1135Smrg ;; 18080c1e1135Smrg os2-emx) 18090c1e1135Smrg ;; 18100c1e1135Smrg *-eabi* | *-gnueabi*) 18110c1e1135Smrg ;; 18120c1e1135Smrg -*) 18130c1e1135Smrg # Blank kernel with real OS is always fine. 18140c1e1135Smrg ;; 18150c1e1135Smrg *-*) 18160c1e1135Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 18170c1e1135Smrg exit 1 18180c1e1135Smrg ;; 18190c1e1135Smrgesac 18200c1e1135Smrg 18212d62a77cSmrg# Here we handle the case where we know the os, and the CPU type, but not the 18222d62a77cSmrg# manufacturer. We pick the logical manufacturer. 18230c1e1135Smrgcase $vendor in 18240c1e1135Smrg unknown) 18250c1e1135Smrg case $cpu-$os in 18260c1e1135Smrg *-riscix*) 18272d62a77cSmrg vendor=acorn 18282d62a77cSmrg ;; 18290c1e1135Smrg *-sunos*) 18302d62a77cSmrg vendor=sun 18312d62a77cSmrg ;; 18320c1e1135Smrg *-cnk* | *-aix*) 18332d62a77cSmrg vendor=ibm 18342d62a77cSmrg ;; 18350c1e1135Smrg *-beos*) 18362d62a77cSmrg vendor=be 18372d62a77cSmrg ;; 18380c1e1135Smrg *-hpux*) 18392d62a77cSmrg vendor=hp 18402d62a77cSmrg ;; 18410c1e1135Smrg *-mpeix*) 18422d62a77cSmrg vendor=hp 18432d62a77cSmrg ;; 18440c1e1135Smrg *-hiux*) 18452d62a77cSmrg vendor=hitachi 18462d62a77cSmrg ;; 18470c1e1135Smrg *-unos*) 18482d62a77cSmrg vendor=crds 18492d62a77cSmrg ;; 18500c1e1135Smrg *-dgux*) 18512d62a77cSmrg vendor=dg 18522d62a77cSmrg ;; 18530c1e1135Smrg *-luna*) 18542d62a77cSmrg vendor=omron 18552d62a77cSmrg ;; 18560c1e1135Smrg *-genix*) 18572d62a77cSmrg vendor=ns 18582d62a77cSmrg ;; 18590c1e1135Smrg *-clix*) 18600c1e1135Smrg vendor=intergraph 18610c1e1135Smrg ;; 18620c1e1135Smrg *-mvs* | *-opened*) 18630c1e1135Smrg vendor=ibm 18640c1e1135Smrg ;; 18650c1e1135Smrg *-os400*) 18662d62a77cSmrg vendor=ibm 18672d62a77cSmrg ;; 18680c1e1135Smrg s390-* | s390x-*) 18692d62a77cSmrg vendor=ibm 18702d62a77cSmrg ;; 18710c1e1135Smrg *-ptx*) 18722d62a77cSmrg vendor=sequent 18732d62a77cSmrg ;; 18740c1e1135Smrg *-tpf*) 18752d62a77cSmrg vendor=ibm 18762d62a77cSmrg ;; 18770c1e1135Smrg *-vxsim* | *-vxworks* | *-windiss*) 18782d62a77cSmrg vendor=wrs 18792d62a77cSmrg ;; 18800c1e1135Smrg *-aux*) 18812d62a77cSmrg vendor=apple 18822d62a77cSmrg ;; 18830c1e1135Smrg *-hms*) 18842d62a77cSmrg vendor=hitachi 18852d62a77cSmrg ;; 18860c1e1135Smrg *-mpw* | *-macos*) 18872d62a77cSmrg vendor=apple 18882d62a77cSmrg ;; 18890c1e1135Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18902d62a77cSmrg vendor=atari 18912d62a77cSmrg ;; 18920c1e1135Smrg *-vos*) 18932d62a77cSmrg vendor=stratus 18942d62a77cSmrg ;; 18952d62a77cSmrg esac 18962d62a77cSmrg ;; 18972d62a77cSmrgesac 18982d62a77cSmrg 18990c1e1135Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 19002d62a77cSmrgexit 19012d62a77cSmrg 19022d62a77cSmrg# Local variables: 19030c1e1135Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 19042d62a77cSmrg# time-stamp-start: "timestamp='" 19052d62a77cSmrg# time-stamp-format: "%:y-%02m-%02d" 19062d62a77cSmrg# time-stamp-end: "'" 19072d62a77cSmrg# End: 1908