1f4959950Smrg#! /bin/sh 2f4959950Smrg# Configuration validation subroutine script. 30cfee914Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 4f4959950Smrg 50cfee914Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6f4959950Smrg 70cfee914Smrgtimestamp='2023-01-21' 80cfee914Smrg 90cfee914Smrg# This file is free software; you can redistribute it and/or modify it 100cfee914Smrg# under the terms of the GNU General Public License as published by 110cfee914Smrg# the Free Software Foundation, either version 3 of the License, or 12f4959950Smrg# (at your option) any later version. 13f4959950Smrg# 140cfee914Smrg# This program is distributed in the hope that it will be useful, but 150cfee914Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 160cfee914Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 170cfee914Smrg# General Public License for more details. 18f4959950Smrg# 19f4959950Smrg# You should have received a copy of the GNU General Public License 200cfee914Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21f4959950Smrg# 22f4959950Smrg# As a special exception to the GNU General Public License, if you 23f4959950Smrg# distribute this file as part of a program that contains a 24f4959950Smrg# configuration script generated by Autoconf, you may include it under 250cfee914Smrg# the same distribution terms that you use for the rest of that 260cfee914Smrg# program. This Exception is an additional permission under section 7 270cfee914Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28f4959950Smrg 29f4959950Smrg 300cfee914Smrg# Please send patches to <config-patches@gnu.org>. 31f4959950Smrg# 32f4959950Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33f4959950Smrg# Supply the specified configuration type as an argument. 34f4959950Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35f4959950Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36f4959950Smrg 37cf8f59bfSmrg# You can get the latest version of this script from: 380cfee914Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39cf8f59bfSmrg 40f4959950Smrg# This file is supposed to be the same for all GNU packages 41f4959950Smrg# and recognize all the CPU types, system types and aliases 42f4959950Smrg# that are meaningful with *any* GNU software. 43f4959950Smrg# Each package is responsible for reporting which valid configurations 44f4959950Smrg# it does not support. The user should be able to distinguish 45f4959950Smrg# a failure to support a valid configuration from a meaningless 46f4959950Smrg# configuration. 47f4959950Smrg 48f4959950Smrg# The goal of this file is to map all the various variations of a given 49f4959950Smrg# machine specification into a single specification in the form: 50f4959950Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51f4959950Smrg# or in some cases, the newer four-part form: 52f4959950Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53f4959950Smrg# It is wrong to echo any other type of specification. 54f4959950Smrg 550cfee914Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 560cfee914Smrg# about features and limitations of the classic Bourne shell that were 570cfee914Smrg# superseded or lifted in POSIX. However, this script identifies a wide 580cfee914Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 590cfee914Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 600cfee914Smrg# have a pre-POSIX /bin/sh. 610cfee914Smrg 62f4959950Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63f4959950Smrg 64f4959950Smrgusage="\ 650cfee914SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66f4959950Smrg 67f4959950SmrgCanonicalize a configuration name. 68f4959950Smrg 690cfee914SmrgOptions: 70f4959950Smrg -h, --help print this help, then exit 71f4959950Smrg -t, --time-stamp print date of last modification, then exit 72f4959950Smrg -v, --version print version number, then exit 73f4959950Smrg 74f4959950SmrgReport bugs and patches to <config-patches@gnu.org>." 75f4959950Smrg 76f4959950Smrgversion="\ 77f4959950SmrgGNU config.sub ($timestamp) 78f4959950Smrg 790cfee914SmrgCopyright 1992-2023 Free Software Foundation, Inc. 80f4959950Smrg 81f4959950SmrgThis is free software; see the source for copying conditions. There is NO 82f4959950Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83f4959950Smrg 84f4959950Smrghelp=" 85f4959950SmrgTry \`$me --help' for more information." 86f4959950Smrg 87f4959950Smrg# Parse command line 88f4959950Smrgwhile test $# -gt 0 ; do 89f4959950Smrg case $1 in 90f4959950Smrg --time-stamp | --time* | -t ) 91f4959950Smrg echo "$timestamp" ; exit ;; 92f4959950Smrg --version | -v ) 93f4959950Smrg echo "$version" ; exit ;; 94f4959950Smrg --help | --h* | -h ) 95f4959950Smrg echo "$usage"; exit ;; 96f4959950Smrg -- ) # Stop option processing 97f4959950Smrg shift; break ;; 98f4959950Smrg - ) # Use stdin as input. 99f4959950Smrg break ;; 100f4959950Smrg -* ) 1010cfee914Smrg echo "$me: invalid option $1$help" >&2 102f4959950Smrg exit 1 ;; 103f4959950Smrg 104f4959950Smrg *local*) 105f4959950Smrg # First pass through any local machine types. 1060cfee914Smrg echo "$1" 107f4959950Smrg exit ;; 108f4959950Smrg 109f4959950Smrg * ) 110f4959950Smrg break ;; 111f4959950Smrg esac 112f4959950Smrgdone 113f4959950Smrg 114f4959950Smrgcase $# in 115f4959950Smrg 0) echo "$me: missing argument$help" >&2 116f4959950Smrg exit 1;; 117f4959950Smrg 1) ;; 118f4959950Smrg *) echo "$me: too many arguments$help" >&2 119f4959950Smrg exit 1;; 120f4959950Smrgesac 121f4959950Smrg 1220cfee914Smrg# Split fields of configuration type 1230cfee914Smrg# shellcheck disable=SC2162 1240cfee914Smrgsaved_IFS=$IFS 1250cfee914SmrgIFS="-" read field1 field2 field3 field4 <<EOF 1260cfee914Smrg$1 1270cfee914SmrgEOF 1280cfee914SmrgIFS=$saved_IFS 129f4959950Smrg 1300cfee914Smrg# Separate into logical components for further validation 1310cfee914Smrgcase $1 in 1320cfee914Smrg *-*-*-*-*) 1330cfee914Smrg echo Invalid configuration \`"$1"\': more than four components >&2 1340cfee914Smrg exit 1 135f4959950Smrg ;; 1360cfee914Smrg *-*-*-*) 1370cfee914Smrg basic_machine=$field1-$field2 1380cfee914Smrg basic_os=$field3-$field4 139f4959950Smrg ;; 1400cfee914Smrg *-*-*) 1410cfee914Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1420cfee914Smrg # parts 1430cfee914Smrg maybe_os=$field2-$field3 1440cfee914Smrg case $maybe_os in 1450cfee914Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 1460cfee914Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1470cfee914Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1480cfee914Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 1490cfee914Smrg basic_machine=$field1 1500cfee914Smrg basic_os=$maybe_os 1510cfee914Smrg ;; 1520cfee914Smrg android-linux) 1530cfee914Smrg basic_machine=$field1-unknown 1540cfee914Smrg basic_os=linux-android 1550cfee914Smrg ;; 1560cfee914Smrg *) 1570cfee914Smrg basic_machine=$field1-$field2 1580cfee914Smrg basic_os=$field3 1590cfee914Smrg ;; 1600cfee914Smrg esac 161f4959950Smrg ;; 1620cfee914Smrg *-*) 1630cfee914Smrg # A lone config we happen to match not fitting any pattern 1640cfee914Smrg case $field1-$field2 in 1650cfee914Smrg decstation-3100) 1660cfee914Smrg basic_machine=mips-dec 1670cfee914Smrg basic_os= 1680cfee914Smrg ;; 1690cfee914Smrg *-*) 1700cfee914Smrg # Second component is usually, but not always the OS 1710cfee914Smrg case $field2 in 1720cfee914Smrg # Prevent following clause from handling this valid os 1730cfee914Smrg sun*os*) 1740cfee914Smrg basic_machine=$field1 1750cfee914Smrg basic_os=$field2 1760cfee914Smrg ;; 1770cfee914Smrg zephyr*) 1780cfee914Smrg basic_machine=$field1-unknown 1790cfee914Smrg basic_os=$field2 1800cfee914Smrg ;; 1810cfee914Smrg # Manufacturers 1820cfee914Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1830cfee914Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1840cfee914Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1850cfee914Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1860cfee914Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1870cfee914Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1880cfee914Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1890cfee914Smrg | microblaze* | sim | cisco \ 1900cfee914Smrg | oki | wec | wrs | winbond) 1910cfee914Smrg basic_machine=$field1-$field2 1920cfee914Smrg basic_os= 1930cfee914Smrg ;; 1940cfee914Smrg *) 1950cfee914Smrg basic_machine=$field1 1960cfee914Smrg basic_os=$field2 1970cfee914Smrg ;; 1980cfee914Smrg esac 1990cfee914Smrg ;; 2000cfee914Smrg esac 201f4959950Smrg ;; 2020cfee914Smrg *) 2030cfee914Smrg # Convert single-component short-hands not valid as part of 2040cfee914Smrg # multi-component configurations. 2050cfee914Smrg case $field1 in 2060cfee914Smrg 386bsd) 2070cfee914Smrg basic_machine=i386-pc 2080cfee914Smrg basic_os=bsd 2090cfee914Smrg ;; 2100cfee914Smrg a29khif) 2110cfee914Smrg basic_machine=a29k-amd 2120cfee914Smrg basic_os=udi 2130cfee914Smrg ;; 2140cfee914Smrg adobe68k) 2150cfee914Smrg basic_machine=m68010-adobe 2160cfee914Smrg basic_os=scout 2170cfee914Smrg ;; 2180cfee914Smrg alliant) 2190cfee914Smrg basic_machine=fx80-alliant 2200cfee914Smrg basic_os= 2210cfee914Smrg ;; 2220cfee914Smrg altos | altos3068) 2230cfee914Smrg basic_machine=m68k-altos 2240cfee914Smrg basic_os= 2250cfee914Smrg ;; 2260cfee914Smrg am29k) 2270cfee914Smrg basic_machine=a29k-none 2280cfee914Smrg basic_os=bsd 2290cfee914Smrg ;; 2300cfee914Smrg amdahl) 2310cfee914Smrg basic_machine=580-amdahl 2320cfee914Smrg basic_os=sysv 2330cfee914Smrg ;; 2340cfee914Smrg amiga) 2350cfee914Smrg basic_machine=m68k-unknown 2360cfee914Smrg basic_os= 2370cfee914Smrg ;; 2380cfee914Smrg amigaos | amigados) 2390cfee914Smrg basic_machine=m68k-unknown 2400cfee914Smrg basic_os=amigaos 2410cfee914Smrg ;; 2420cfee914Smrg amigaunix | amix) 2430cfee914Smrg basic_machine=m68k-unknown 2440cfee914Smrg basic_os=sysv4 2450cfee914Smrg ;; 2460cfee914Smrg apollo68) 2470cfee914Smrg basic_machine=m68k-apollo 2480cfee914Smrg basic_os=sysv 2490cfee914Smrg ;; 2500cfee914Smrg apollo68bsd) 2510cfee914Smrg basic_machine=m68k-apollo 2520cfee914Smrg basic_os=bsd 2530cfee914Smrg ;; 2540cfee914Smrg aros) 2550cfee914Smrg basic_machine=i386-pc 2560cfee914Smrg basic_os=aros 2570cfee914Smrg ;; 2580cfee914Smrg aux) 2590cfee914Smrg basic_machine=m68k-apple 2600cfee914Smrg basic_os=aux 2610cfee914Smrg ;; 2620cfee914Smrg balance) 2630cfee914Smrg basic_machine=ns32k-sequent 2640cfee914Smrg basic_os=dynix 2650cfee914Smrg ;; 2660cfee914Smrg blackfin) 2670cfee914Smrg basic_machine=bfin-unknown 2680cfee914Smrg basic_os=linux 2690cfee914Smrg ;; 2700cfee914Smrg cegcc) 2710cfee914Smrg basic_machine=arm-unknown 2720cfee914Smrg basic_os=cegcc 2730cfee914Smrg ;; 2740cfee914Smrg convex-c1) 2750cfee914Smrg basic_machine=c1-convex 2760cfee914Smrg basic_os=bsd 2770cfee914Smrg ;; 2780cfee914Smrg convex-c2) 2790cfee914Smrg basic_machine=c2-convex 2800cfee914Smrg basic_os=bsd 2810cfee914Smrg ;; 2820cfee914Smrg convex-c32) 2830cfee914Smrg basic_machine=c32-convex 2840cfee914Smrg basic_os=bsd 2850cfee914Smrg ;; 2860cfee914Smrg convex-c34) 2870cfee914Smrg basic_machine=c34-convex 2880cfee914Smrg basic_os=bsd 2890cfee914Smrg ;; 2900cfee914Smrg convex-c38) 2910cfee914Smrg basic_machine=c38-convex 2920cfee914Smrg basic_os=bsd 2930cfee914Smrg ;; 2940cfee914Smrg cray) 2950cfee914Smrg basic_machine=j90-cray 2960cfee914Smrg basic_os=unicos 2970cfee914Smrg ;; 2980cfee914Smrg crds | unos) 2990cfee914Smrg basic_machine=m68k-crds 3000cfee914Smrg basic_os= 3010cfee914Smrg ;; 3020cfee914Smrg da30) 3030cfee914Smrg basic_machine=m68k-da30 3040cfee914Smrg basic_os= 3050cfee914Smrg ;; 3060cfee914Smrg decstation | pmax | pmin | dec3100 | decstatn) 3070cfee914Smrg basic_machine=mips-dec 3080cfee914Smrg basic_os= 3090cfee914Smrg ;; 3100cfee914Smrg delta88) 3110cfee914Smrg basic_machine=m88k-motorola 3120cfee914Smrg basic_os=sysv3 3130cfee914Smrg ;; 3140cfee914Smrg dicos) 3150cfee914Smrg basic_machine=i686-pc 3160cfee914Smrg basic_os=dicos 3170cfee914Smrg ;; 3180cfee914Smrg djgpp) 3190cfee914Smrg basic_machine=i586-pc 3200cfee914Smrg basic_os=msdosdjgpp 3210cfee914Smrg ;; 3220cfee914Smrg ebmon29k) 3230cfee914Smrg basic_machine=a29k-amd 3240cfee914Smrg basic_os=ebmon 3250cfee914Smrg ;; 3260cfee914Smrg es1800 | OSE68k | ose68k | ose | OSE) 3270cfee914Smrg basic_machine=m68k-ericsson 3280cfee914Smrg basic_os=ose 3290cfee914Smrg ;; 3300cfee914Smrg gmicro) 3310cfee914Smrg basic_machine=tron-gmicro 3320cfee914Smrg basic_os=sysv 3330cfee914Smrg ;; 3340cfee914Smrg go32) 3350cfee914Smrg basic_machine=i386-pc 3360cfee914Smrg basic_os=go32 3370cfee914Smrg ;; 3380cfee914Smrg h8300hms) 3390cfee914Smrg basic_machine=h8300-hitachi 3400cfee914Smrg basic_os=hms 3410cfee914Smrg ;; 3420cfee914Smrg h8300xray) 3430cfee914Smrg basic_machine=h8300-hitachi 3440cfee914Smrg basic_os=xray 3450cfee914Smrg ;; 3460cfee914Smrg h8500hms) 3470cfee914Smrg basic_machine=h8500-hitachi 3480cfee914Smrg basic_os=hms 3490cfee914Smrg ;; 3500cfee914Smrg harris) 3510cfee914Smrg basic_machine=m88k-harris 3520cfee914Smrg basic_os=sysv3 3530cfee914Smrg ;; 3540cfee914Smrg hp300 | hp300hpux) 3550cfee914Smrg basic_machine=m68k-hp 3560cfee914Smrg basic_os=hpux 3570cfee914Smrg ;; 3580cfee914Smrg hp300bsd) 3590cfee914Smrg basic_machine=m68k-hp 3600cfee914Smrg basic_os=bsd 3610cfee914Smrg ;; 3620cfee914Smrg hppaosf) 3630cfee914Smrg basic_machine=hppa1.1-hp 3640cfee914Smrg basic_os=osf 3650cfee914Smrg ;; 3660cfee914Smrg hppro) 3670cfee914Smrg basic_machine=hppa1.1-hp 3680cfee914Smrg basic_os=proelf 3690cfee914Smrg ;; 3700cfee914Smrg i386mach) 3710cfee914Smrg basic_machine=i386-mach 3720cfee914Smrg basic_os=mach 3730cfee914Smrg ;; 3740cfee914Smrg isi68 | isi) 3750cfee914Smrg basic_machine=m68k-isi 3760cfee914Smrg basic_os=sysv 3770cfee914Smrg ;; 3780cfee914Smrg m68knommu) 3790cfee914Smrg basic_machine=m68k-unknown 3800cfee914Smrg basic_os=linux 3810cfee914Smrg ;; 3820cfee914Smrg magnum | m3230) 3830cfee914Smrg basic_machine=mips-mips 3840cfee914Smrg basic_os=sysv 3850cfee914Smrg ;; 3860cfee914Smrg merlin) 3870cfee914Smrg basic_machine=ns32k-utek 3880cfee914Smrg basic_os=sysv 3890cfee914Smrg ;; 3900cfee914Smrg mingw64) 3910cfee914Smrg basic_machine=x86_64-pc 3920cfee914Smrg basic_os=mingw64 3930cfee914Smrg ;; 3940cfee914Smrg mingw32) 3950cfee914Smrg basic_machine=i686-pc 3960cfee914Smrg basic_os=mingw32 3970cfee914Smrg ;; 3980cfee914Smrg mingw32ce) 3990cfee914Smrg basic_machine=arm-unknown 4000cfee914Smrg basic_os=mingw32ce 4010cfee914Smrg ;; 4020cfee914Smrg monitor) 4030cfee914Smrg basic_machine=m68k-rom68k 4040cfee914Smrg basic_os=coff 4050cfee914Smrg ;; 4060cfee914Smrg morphos) 4070cfee914Smrg basic_machine=powerpc-unknown 4080cfee914Smrg basic_os=morphos 4090cfee914Smrg ;; 4100cfee914Smrg moxiebox) 4110cfee914Smrg basic_machine=moxie-unknown 4120cfee914Smrg basic_os=moxiebox 4130cfee914Smrg ;; 4140cfee914Smrg msdos) 4150cfee914Smrg basic_machine=i386-pc 4160cfee914Smrg basic_os=msdos 4170cfee914Smrg ;; 4180cfee914Smrg msys) 4190cfee914Smrg basic_machine=i686-pc 4200cfee914Smrg basic_os=msys 4210cfee914Smrg ;; 4220cfee914Smrg mvs) 4230cfee914Smrg basic_machine=i370-ibm 4240cfee914Smrg basic_os=mvs 4250cfee914Smrg ;; 4260cfee914Smrg nacl) 4270cfee914Smrg basic_machine=le32-unknown 4280cfee914Smrg basic_os=nacl 4290cfee914Smrg ;; 4300cfee914Smrg ncr3000) 4310cfee914Smrg basic_machine=i486-ncr 4320cfee914Smrg basic_os=sysv4 4330cfee914Smrg ;; 4340cfee914Smrg netbsd386) 4350cfee914Smrg basic_machine=i386-pc 4360cfee914Smrg basic_os=netbsd 4370cfee914Smrg ;; 4380cfee914Smrg netwinder) 4390cfee914Smrg basic_machine=armv4l-rebel 4400cfee914Smrg basic_os=linux 4410cfee914Smrg ;; 4420cfee914Smrg news | news700 | news800 | news900) 4430cfee914Smrg basic_machine=m68k-sony 4440cfee914Smrg basic_os=newsos 4450cfee914Smrg ;; 4460cfee914Smrg news1000) 4470cfee914Smrg basic_machine=m68030-sony 4480cfee914Smrg basic_os=newsos 4490cfee914Smrg ;; 4500cfee914Smrg necv70) 4510cfee914Smrg basic_machine=v70-nec 4520cfee914Smrg basic_os=sysv 4530cfee914Smrg ;; 4540cfee914Smrg nh3000) 4550cfee914Smrg basic_machine=m68k-harris 4560cfee914Smrg basic_os=cxux 4570cfee914Smrg ;; 4580cfee914Smrg nh[45]000) 4590cfee914Smrg basic_machine=m88k-harris 4600cfee914Smrg basic_os=cxux 4610cfee914Smrg ;; 4620cfee914Smrg nindy960) 4630cfee914Smrg basic_machine=i960-intel 4640cfee914Smrg basic_os=nindy 4650cfee914Smrg ;; 4660cfee914Smrg mon960) 4670cfee914Smrg basic_machine=i960-intel 4680cfee914Smrg basic_os=mon960 4690cfee914Smrg ;; 4700cfee914Smrg nonstopux) 4710cfee914Smrg basic_machine=mips-compaq 4720cfee914Smrg basic_os=nonstopux 4730cfee914Smrg ;; 4740cfee914Smrg os400) 4750cfee914Smrg basic_machine=powerpc-ibm 4760cfee914Smrg basic_os=os400 4770cfee914Smrg ;; 4780cfee914Smrg OSE68000 | ose68000) 4790cfee914Smrg basic_machine=m68000-ericsson 4800cfee914Smrg basic_os=ose 4810cfee914Smrg ;; 4820cfee914Smrg os68k) 4830cfee914Smrg basic_machine=m68k-none 4840cfee914Smrg basic_os=os68k 4850cfee914Smrg ;; 4860cfee914Smrg paragon) 4870cfee914Smrg basic_machine=i860-intel 4880cfee914Smrg basic_os=osf 4890cfee914Smrg ;; 4900cfee914Smrg parisc) 4910cfee914Smrg basic_machine=hppa-unknown 4920cfee914Smrg basic_os=linux 4930cfee914Smrg ;; 4940cfee914Smrg psp) 4950cfee914Smrg basic_machine=mipsallegrexel-sony 4960cfee914Smrg basic_os=psp 4970cfee914Smrg ;; 4980cfee914Smrg pw32) 4990cfee914Smrg basic_machine=i586-unknown 5000cfee914Smrg basic_os=pw32 5010cfee914Smrg ;; 5020cfee914Smrg rdos | rdos64) 5030cfee914Smrg basic_machine=x86_64-pc 5040cfee914Smrg basic_os=rdos 5050cfee914Smrg ;; 5060cfee914Smrg rdos32) 5070cfee914Smrg basic_machine=i386-pc 5080cfee914Smrg basic_os=rdos 5090cfee914Smrg ;; 5100cfee914Smrg rom68k) 5110cfee914Smrg basic_machine=m68k-rom68k 5120cfee914Smrg basic_os=coff 5130cfee914Smrg ;; 5140cfee914Smrg sa29200) 5150cfee914Smrg basic_machine=a29k-amd 5160cfee914Smrg basic_os=udi 5170cfee914Smrg ;; 5180cfee914Smrg sei) 5190cfee914Smrg basic_machine=mips-sei 5200cfee914Smrg basic_os=seiux 5210cfee914Smrg ;; 5220cfee914Smrg sequent) 5230cfee914Smrg basic_machine=i386-sequent 5240cfee914Smrg basic_os= 5250cfee914Smrg ;; 5260cfee914Smrg sps7) 5270cfee914Smrg basic_machine=m68k-bull 5280cfee914Smrg basic_os=sysv2 5290cfee914Smrg ;; 5300cfee914Smrg st2000) 5310cfee914Smrg basic_machine=m68k-tandem 5320cfee914Smrg basic_os= 5330cfee914Smrg ;; 5340cfee914Smrg stratus) 5350cfee914Smrg basic_machine=i860-stratus 5360cfee914Smrg basic_os=sysv4 5370cfee914Smrg ;; 5380cfee914Smrg sun2) 5390cfee914Smrg basic_machine=m68000-sun 5400cfee914Smrg basic_os= 5410cfee914Smrg ;; 5420cfee914Smrg sun2os3) 5430cfee914Smrg basic_machine=m68000-sun 5440cfee914Smrg basic_os=sunos3 5450cfee914Smrg ;; 5460cfee914Smrg sun2os4) 5470cfee914Smrg basic_machine=m68000-sun 5480cfee914Smrg basic_os=sunos4 5490cfee914Smrg ;; 5500cfee914Smrg sun3) 5510cfee914Smrg basic_machine=m68k-sun 5520cfee914Smrg basic_os= 5530cfee914Smrg ;; 5540cfee914Smrg sun3os3) 5550cfee914Smrg basic_machine=m68k-sun 5560cfee914Smrg basic_os=sunos3 5570cfee914Smrg ;; 5580cfee914Smrg sun3os4) 5590cfee914Smrg basic_machine=m68k-sun 5600cfee914Smrg basic_os=sunos4 5610cfee914Smrg ;; 5620cfee914Smrg sun4) 5630cfee914Smrg basic_machine=sparc-sun 5640cfee914Smrg basic_os= 5650cfee914Smrg ;; 5660cfee914Smrg sun4os3) 5670cfee914Smrg basic_machine=sparc-sun 5680cfee914Smrg basic_os=sunos3 5690cfee914Smrg ;; 5700cfee914Smrg sun4os4) 5710cfee914Smrg basic_machine=sparc-sun 5720cfee914Smrg basic_os=sunos4 5730cfee914Smrg ;; 5740cfee914Smrg sun4sol2) 5750cfee914Smrg basic_machine=sparc-sun 5760cfee914Smrg basic_os=solaris2 5770cfee914Smrg ;; 5780cfee914Smrg sun386 | sun386i | roadrunner) 5790cfee914Smrg basic_machine=i386-sun 5800cfee914Smrg basic_os= 5810cfee914Smrg ;; 5820cfee914Smrg sv1) 5830cfee914Smrg basic_machine=sv1-cray 5840cfee914Smrg basic_os=unicos 5850cfee914Smrg ;; 5860cfee914Smrg symmetry) 5870cfee914Smrg basic_machine=i386-sequent 5880cfee914Smrg basic_os=dynix 5890cfee914Smrg ;; 5900cfee914Smrg t3e) 5910cfee914Smrg basic_machine=alphaev5-cray 5920cfee914Smrg basic_os=unicos 5930cfee914Smrg ;; 5940cfee914Smrg t90) 5950cfee914Smrg basic_machine=t90-cray 5960cfee914Smrg basic_os=unicos 5970cfee914Smrg ;; 5980cfee914Smrg toad1) 5990cfee914Smrg basic_machine=pdp10-xkl 6000cfee914Smrg basic_os=tops20 6010cfee914Smrg ;; 6020cfee914Smrg tpf) 6030cfee914Smrg basic_machine=s390x-ibm 6040cfee914Smrg basic_os=tpf 6050cfee914Smrg ;; 6060cfee914Smrg udi29k) 6070cfee914Smrg basic_machine=a29k-amd 6080cfee914Smrg basic_os=udi 6090cfee914Smrg ;; 6100cfee914Smrg ultra3) 6110cfee914Smrg basic_machine=a29k-nyu 6120cfee914Smrg basic_os=sym1 6130cfee914Smrg ;; 6140cfee914Smrg v810 | necv810) 6150cfee914Smrg basic_machine=v810-nec 6160cfee914Smrg basic_os=none 6170cfee914Smrg ;; 6180cfee914Smrg vaxv) 6190cfee914Smrg basic_machine=vax-dec 6200cfee914Smrg basic_os=sysv 6210cfee914Smrg ;; 6220cfee914Smrg vms) 6230cfee914Smrg basic_machine=vax-dec 6240cfee914Smrg basic_os=vms 6250cfee914Smrg ;; 6260cfee914Smrg vsta) 6270cfee914Smrg basic_machine=i386-pc 6280cfee914Smrg basic_os=vsta 6290cfee914Smrg ;; 6300cfee914Smrg vxworks960) 6310cfee914Smrg basic_machine=i960-wrs 6320cfee914Smrg basic_os=vxworks 6330cfee914Smrg ;; 6340cfee914Smrg vxworks68) 6350cfee914Smrg basic_machine=m68k-wrs 6360cfee914Smrg basic_os=vxworks 6370cfee914Smrg ;; 6380cfee914Smrg vxworks29k) 6390cfee914Smrg basic_machine=a29k-wrs 6400cfee914Smrg basic_os=vxworks 6410cfee914Smrg ;; 6420cfee914Smrg xbox) 6430cfee914Smrg basic_machine=i686-pc 6440cfee914Smrg basic_os=mingw32 6450cfee914Smrg ;; 6460cfee914Smrg ymp) 6470cfee914Smrg basic_machine=ymp-cray 6480cfee914Smrg basic_os=unicos 6490cfee914Smrg ;; 6500cfee914Smrg *) 6510cfee914Smrg basic_machine=$1 6520cfee914Smrg basic_os= 6530cfee914Smrg ;; 6540cfee914Smrg esac 655f4959950Smrg ;; 6560cfee914Smrgesac 6570cfee914Smrg 6580cfee914Smrg# Decode 1-component or ad-hoc basic machines 6590cfee914Smrgcase $basic_machine in 6600cfee914Smrg # Here we handle the default manufacturer of certain CPU types. It is in 6610cfee914Smrg # some cases the only manufacturer, in others, it is the most popular. 6620cfee914Smrg w89k) 6630cfee914Smrg cpu=hppa1.1 6640cfee914Smrg vendor=winbond 665f4959950Smrg ;; 6660cfee914Smrg op50n) 6670cfee914Smrg cpu=hppa1.1 6680cfee914Smrg vendor=oki 669f4959950Smrg ;; 6700cfee914Smrg op60c) 6710cfee914Smrg cpu=hppa1.1 6720cfee914Smrg vendor=oki 673f4959950Smrg ;; 6740cfee914Smrg ibm*) 6750cfee914Smrg cpu=i370 6760cfee914Smrg vendor=ibm 677f4959950Smrg ;; 6780cfee914Smrg orion105) 6790cfee914Smrg cpu=clipper 6800cfee914Smrg vendor=highlevel 681f4959950Smrg ;; 6820cfee914Smrg mac | mpw | mac-mpw) 6830cfee914Smrg cpu=m68k 6840cfee914Smrg vendor=apple 685f4959950Smrg ;; 6860cfee914Smrg pmac | pmac-mpw) 6870cfee914Smrg cpu=powerpc 6880cfee914Smrg vendor=apple 689f4959950Smrg ;; 690f4959950Smrg 691f4959950Smrg # Recognize the various machine names and aliases which stand 692f4959950Smrg # for a CPU type and a company and sometimes even an OS. 693f4959950Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6940cfee914Smrg cpu=m68000 6950cfee914Smrg vendor=att 696f4959950Smrg ;; 697f4959950Smrg 3b*) 6980cfee914Smrg cpu=we32k 6990cfee914Smrg vendor=att 700f4959950Smrg ;; 701cf8f59bfSmrg bluegene*) 7020cfee914Smrg cpu=powerpc 7030cfee914Smrg vendor=ibm 7040cfee914Smrg basic_os=cnk 705f4959950Smrg ;; 706f4959950Smrg decsystem10* | dec10*) 7070cfee914Smrg cpu=pdp10 7080cfee914Smrg vendor=dec 7090cfee914Smrg basic_os=tops10 710f4959950Smrg ;; 711f4959950Smrg decsystem20* | dec20*) 7120cfee914Smrg cpu=pdp10 7130cfee914Smrg vendor=dec 7140cfee914Smrg basic_os=tops20 715f4959950Smrg ;; 716f4959950Smrg delta | 3300 | motorola-3300 | motorola-delta \ 717f4959950Smrg | 3300-motorola | delta-motorola) 7180cfee914Smrg cpu=m68k 7190cfee914Smrg vendor=motorola 720f4959950Smrg ;; 7210cfee914Smrg dpx2*) 7220cfee914Smrg cpu=m68k 7230cfee914Smrg vendor=bull 7240cfee914Smrg basic_os=sysv3 725f4959950Smrg ;; 726f4959950Smrg encore | umax | mmax) 7270cfee914Smrg cpu=ns32k 7280cfee914Smrg vendor=encore 729f4959950Smrg ;; 7300cfee914Smrg elxsi) 7310cfee914Smrg cpu=elxsi 7320cfee914Smrg vendor=elxsi 7330cfee914Smrg basic_os=${basic_os:-bsd} 734f4959950Smrg ;; 735f4959950Smrg fx2800) 7360cfee914Smrg cpu=i860 7370cfee914Smrg vendor=alliant 738f4959950Smrg ;; 739f4959950Smrg genix) 7400cfee914Smrg cpu=ns32k 7410cfee914Smrg vendor=ns 742f4959950Smrg ;; 743f4959950Smrg h3050r* | hiux*) 7440cfee914Smrg cpu=hppa1.1 7450cfee914Smrg vendor=hitachi 7460cfee914Smrg basic_os=hiuxwe2 747f4959950Smrg ;; 748f4959950Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7490cfee914Smrg cpu=hppa1.0 7500cfee914Smrg vendor=hp 751f4959950Smrg ;; 752f4959950Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7530cfee914Smrg cpu=m68000 7540cfee914Smrg vendor=hp 755f4959950Smrg ;; 756f4959950Smrg hp9k3[2-9][0-9]) 7570cfee914Smrg cpu=m68k 7580cfee914Smrg vendor=hp 759f4959950Smrg ;; 760f4959950Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7610cfee914Smrg cpu=hppa1.0 7620cfee914Smrg vendor=hp 763f4959950Smrg ;; 764f4959950Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7650cfee914Smrg cpu=hppa1.1 7660cfee914Smrg vendor=hp 767f4959950Smrg ;; 768f4959950Smrg hp9k78[0-9] | hp78[0-9]) 769f4959950Smrg # FIXME: really hppa2.0-hp 7700cfee914Smrg cpu=hppa1.1 7710cfee914Smrg vendor=hp 772f4959950Smrg ;; 773f4959950Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774f4959950Smrg # FIXME: really hppa2.0-hp 7750cfee914Smrg cpu=hppa1.1 7760cfee914Smrg vendor=hp 777f4959950Smrg ;; 778f4959950Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7790cfee914Smrg cpu=hppa1.1 7800cfee914Smrg vendor=hp 781f4959950Smrg ;; 782f4959950Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7830cfee914Smrg cpu=hppa1.0 7840cfee914Smrg vendor=hp 785f4959950Smrg ;; 786f4959950Smrg i*86v32) 7870cfee914Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7880cfee914Smrg vendor=pc 7890cfee914Smrg basic_os=sysv32 790f4959950Smrg ;; 791f4959950Smrg i*86v4*) 7920cfee914Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7930cfee914Smrg vendor=pc 7940cfee914Smrg basic_os=sysv4 795f4959950Smrg ;; 796f4959950Smrg i*86v) 7970cfee914Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7980cfee914Smrg vendor=pc 7990cfee914Smrg basic_os=sysv 800f4959950Smrg ;; 801f4959950Smrg i*86sol2) 8020cfee914Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8030cfee914Smrg vendor=pc 8040cfee914Smrg basic_os=solaris2 805f4959950Smrg ;; 8060cfee914Smrg j90 | j90-cray) 8070cfee914Smrg cpu=j90 8080cfee914Smrg vendor=cray 8090cfee914Smrg basic_os=${basic_os:-unicos} 810f4959950Smrg ;; 811f4959950Smrg iris | iris4d) 8120cfee914Smrg cpu=mips 8130cfee914Smrg vendor=sgi 8140cfee914Smrg case $basic_os in 8150cfee914Smrg irix*) 816f4959950Smrg ;; 817f4959950Smrg *) 8180cfee914Smrg basic_os=irix4 819f4959950Smrg ;; 820f4959950Smrg esac 821f4959950Smrg ;; 822f4959950Smrg miniframe) 8230cfee914Smrg cpu=m68000 8240cfee914Smrg vendor=convergent 825f4959950Smrg ;; 8260cfee914Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8270cfee914Smrg cpu=m68k 8280cfee914Smrg vendor=atari 8290cfee914Smrg basic_os=mint 830f4959950Smrg ;; 831f4959950Smrg news-3600 | risc-news) 8320cfee914Smrg cpu=mips 8330cfee914Smrg vendor=sony 8340cfee914Smrg basic_os=newsos 8350cfee914Smrg ;; 8360cfee914Smrg next | m*-next) 8370cfee914Smrg cpu=m68k 8380cfee914Smrg vendor=next 8390cfee914Smrg case $basic_os in 8400cfee914Smrg openstep*) 8410cfee914Smrg ;; 8420cfee914Smrg nextstep*) 843f4959950Smrg ;; 8440cfee914Smrg ns2*) 8450cfee914Smrg basic_os=nextstep2 846f4959950Smrg ;; 847f4959950Smrg *) 8480cfee914Smrg basic_os=nextstep3 849f4959950Smrg ;; 850f4959950Smrg esac 851f4959950Smrg ;; 852f4959950Smrg np1) 8530cfee914Smrg cpu=np1 8540cfee914Smrg vendor=gould 855f4959950Smrg ;; 856f4959950Smrg op50n-* | op60c-*) 8570cfee914Smrg cpu=hppa1.1 8580cfee914Smrg vendor=oki 8590cfee914Smrg basic_os=proelf 860f4959950Smrg ;; 861f4959950Smrg pa-hitachi) 8620cfee914Smrg cpu=hppa1.1 8630cfee914Smrg vendor=hitachi 8640cfee914Smrg basic_os=hiuxwe2 865f4959950Smrg ;; 866f4959950Smrg pbd) 8670cfee914Smrg cpu=sparc 8680cfee914Smrg vendor=tti 869f4959950Smrg ;; 870f4959950Smrg pbb) 8710cfee914Smrg cpu=m68k 8720cfee914Smrg vendor=tti 873f4959950Smrg ;; 8740cfee914Smrg pc532) 8750cfee914Smrg cpu=ns32k 8760cfee914Smrg vendor=pc532 877f4959950Smrg ;; 878f4959950Smrg pn) 8790cfee914Smrg cpu=pn 8800cfee914Smrg vendor=gould 881f4959950Smrg ;; 8820cfee914Smrg power) 8830cfee914Smrg cpu=power 8840cfee914Smrg vendor=ibm 885f4959950Smrg ;; 886f4959950Smrg ps2) 8870cfee914Smrg cpu=i386 8880cfee914Smrg vendor=ibm 889f4959950Smrg ;; 890f4959950Smrg rm[46]00) 8910cfee914Smrg cpu=mips 8920cfee914Smrg vendor=siemens 893f4959950Smrg ;; 894f4959950Smrg rtpc | rtpc-*) 8950cfee914Smrg cpu=romp 8960cfee914Smrg vendor=ibm 897f4959950Smrg ;; 8980cfee914Smrg sde) 8990cfee914Smrg cpu=mipsisa32 9000cfee914Smrg vendor=sde 9010cfee914Smrg basic_os=${basic_os:-elf} 902f4959950Smrg ;; 9030cfee914Smrg simso-wrs) 9040cfee914Smrg cpu=sparclite 9050cfee914Smrg vendor=wrs 9060cfee914Smrg basic_os=vxworks 907f4959950Smrg ;; 9080cfee914Smrg tower | tower-32) 9090cfee914Smrg cpu=m68k 9100cfee914Smrg vendor=ncr 911f4959950Smrg ;; 9120cfee914Smrg vpp*|vx|vx-*) 9130cfee914Smrg cpu=f301 9140cfee914Smrg vendor=fujitsu 915f4959950Smrg ;; 9160cfee914Smrg w65) 9170cfee914Smrg cpu=w65 9180cfee914Smrg vendor=wdc 919f4959950Smrg ;; 9200cfee914Smrg w89k-*) 9210cfee914Smrg cpu=hppa1.1 9220cfee914Smrg vendor=winbond 9230cfee914Smrg basic_os=proelf 924f4959950Smrg ;; 9250cfee914Smrg none) 9260cfee914Smrg cpu=none 9270cfee914Smrg vendor=none 928f4959950Smrg ;; 9290cfee914Smrg leon|leon[3-9]) 9300cfee914Smrg cpu=sparc 9310cfee914Smrg vendor=$basic_machine 932f4959950Smrg ;; 9330cfee914Smrg leon-*|leon[3-9]-*) 9340cfee914Smrg cpu=sparc 9350cfee914Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936f4959950Smrg ;; 9370cfee914Smrg 9380cfee914Smrg *-*) 9390cfee914Smrg # shellcheck disable=SC2162 9400cfee914Smrg saved_IFS=$IFS 9410cfee914Smrg IFS="-" read cpu vendor <<EOF 9420cfee914Smrg$basic_machine 9430cfee914SmrgEOF 9440cfee914Smrg IFS=$saved_IFS 945f4959950Smrg ;; 9460cfee914Smrg # We use `pc' rather than `unknown' 9470cfee914Smrg # because (1) that's what they normally are, and 9480cfee914Smrg # (2) the word "unknown" tends to confuse beginning users. 9490cfee914Smrg i*86 | x86_64) 9500cfee914Smrg cpu=$basic_machine 9510cfee914Smrg vendor=pc 952f4959950Smrg ;; 9530cfee914Smrg # These rules are duplicated from below for sake of the special case above; 9540cfee914Smrg # i.e. things that normalized to x86 arches should also default to "pc" 9550cfee914Smrg pc98) 9560cfee914Smrg cpu=i386 9570cfee914Smrg vendor=pc 958f4959950Smrg ;; 9590cfee914Smrg x64 | amd64) 9600cfee914Smrg cpu=x86_64 9610cfee914Smrg vendor=pc 962f4959950Smrg ;; 9630cfee914Smrg # Recognize the basic CPU types without company name. 9640cfee914Smrg *) 9650cfee914Smrg cpu=$basic_machine 9660cfee914Smrg vendor=unknown 967f4959950Smrg ;; 9680cfee914Smrgesac 9690cfee914Smrg 9700cfee914Smrgunset -v basic_machine 9710cfee914Smrg 9720cfee914Smrg# Decode basic machines in the full and proper CPU-Company form. 9730cfee914Smrgcase $cpu-$vendor in 9740cfee914Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9750cfee914Smrg # some cases the only manufacturer, in others, it is the most popular. 9760cfee914Smrg craynv-unknown) 9770cfee914Smrg vendor=cray 9780cfee914Smrg basic_os=${basic_os:-unicosmp} 979f4959950Smrg ;; 9800cfee914Smrg c90-unknown | c90-cray) 9810cfee914Smrg vendor=cray 9820cfee914Smrg basic_os=${Basic_os:-unicos} 983f4959950Smrg ;; 9840cfee914Smrg fx80-unknown) 9850cfee914Smrg vendor=alliant 986f4959950Smrg ;; 9870cfee914Smrg romp-unknown) 9880cfee914Smrg vendor=ibm 989f4959950Smrg ;; 9900cfee914Smrg mmix-unknown) 9910cfee914Smrg vendor=knuth 992f4959950Smrg ;; 9930cfee914Smrg microblaze-unknown | microblazeel-unknown) 9940cfee914Smrg vendor=xilinx 995f4959950Smrg ;; 9960cfee914Smrg rs6000-unknown) 9970cfee914Smrg vendor=ibm 998f4959950Smrg ;; 9990cfee914Smrg vax-unknown) 10000cfee914Smrg vendor=dec 1001f4959950Smrg ;; 10020cfee914Smrg pdp11-unknown) 10030cfee914Smrg vendor=dec 1004f4959950Smrg ;; 10050cfee914Smrg we32k-unknown) 10060cfee914Smrg vendor=att 1007f4959950Smrg ;; 10080cfee914Smrg cydra-unknown) 10090cfee914Smrg vendor=cydrome 1010f4959950Smrg ;; 10110cfee914Smrg i370-ibm*) 10120cfee914Smrg vendor=ibm 1013f4959950Smrg ;; 10140cfee914Smrg orion-unknown) 10150cfee914Smrg vendor=highlevel 1016f4959950Smrg ;; 10170cfee914Smrg xps-unknown | xps100-unknown) 10180cfee914Smrg cpu=xps100 10190cfee914Smrg vendor=honeywell 1020f4959950Smrg ;; 10210cfee914Smrg 10220cfee914Smrg # Here we normalize CPU types with a missing or matching vendor 10230cfee914Smrg armh-unknown | armh-alt) 10240cfee914Smrg cpu=armv7l 10250cfee914Smrg vendor=alt 10260cfee914Smrg basic_os=${basic_os:-linux-gnueabihf} 1027f4959950Smrg ;; 10280cfee914Smrg dpx20-unknown | dpx20-bull) 10290cfee914Smrg cpu=rs6000 10300cfee914Smrg vendor=bull 10310cfee914Smrg basic_os=${basic_os:-bosx} 1032f4959950Smrg ;; 10330cfee914Smrg 10340cfee914Smrg # Here we normalize CPU types irrespective of the vendor 10350cfee914Smrg amd64-*) 10360cfee914Smrg cpu=x86_64 1037f4959950Smrg ;; 10380cfee914Smrg blackfin-*) 10390cfee914Smrg cpu=bfin 10400cfee914Smrg basic_os=linux 1041f4959950Smrg ;; 10420cfee914Smrg c54x-*) 10430cfee914Smrg cpu=tic54x 1044f4959950Smrg ;; 10450cfee914Smrg c55x-*) 10460cfee914Smrg cpu=tic55x 1047f4959950Smrg ;; 10480cfee914Smrg c6x-*) 10490cfee914Smrg cpu=tic6x 1050f4959950Smrg ;; 10510cfee914Smrg e500v[12]-*) 10520cfee914Smrg cpu=powerpc 10530cfee914Smrg basic_os=${basic_os}"spe" 1054f4959950Smrg ;; 10550cfee914Smrg mips3*-*) 10560cfee914Smrg cpu=mips64 1057f4959950Smrg ;; 10580cfee914Smrg ms1-*) 10590cfee914Smrg cpu=mt 1060f4959950Smrg ;; 10610cfee914Smrg m68knommu-*) 10620cfee914Smrg cpu=m68k 10630cfee914Smrg basic_os=linux 1064f4959950Smrg ;; 10650cfee914Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10660cfee914Smrg cpu=s12z 1067f4959950Smrg ;; 10680cfee914Smrg openrisc-*) 10690cfee914Smrg cpu=or32 1070f4959950Smrg ;; 10710cfee914Smrg parisc-*) 10720cfee914Smrg cpu=hppa 10730cfee914Smrg basic_os=linux 1074f4959950Smrg ;; 10750cfee914Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10760cfee914Smrg cpu=i586 1077f4959950Smrg ;; 10780cfee914Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 10790cfee914Smrg cpu=i686 1080f4959950Smrg ;; 10810cfee914Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10820cfee914Smrg cpu=i686 1083f4959950Smrg ;; 10840cfee914Smrg pentium4-*) 10850cfee914Smrg cpu=i786 1086f4959950Smrg ;; 10870cfee914Smrg pc98-*) 10880cfee914Smrg cpu=i386 1089f4959950Smrg ;; 10900cfee914Smrg ppc-* | ppcbe-*) 10910cfee914Smrg cpu=powerpc 1092f4959950Smrg ;; 10930cfee914Smrg ppcle-* | powerpclittle-*) 10940cfee914Smrg cpu=powerpcle 1095f4959950Smrg ;; 10960cfee914Smrg ppc64-*) 10970cfee914Smrg cpu=powerpc64 1098f4959950Smrg ;; 10990cfee914Smrg ppc64le-* | powerpc64little-*) 11000cfee914Smrg cpu=powerpc64le 1101f4959950Smrg ;; 11020cfee914Smrg sb1-*) 11030cfee914Smrg cpu=mipsisa64sb1 1104f4959950Smrg ;; 11050cfee914Smrg sb1el-*) 11060cfee914Smrg cpu=mipsisa64sb1el 1107f4959950Smrg ;; 11080cfee914Smrg sh5e[lb]-*) 11090cfee914Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1110f4959950Smrg ;; 11110cfee914Smrg spur-*) 11120cfee914Smrg cpu=spur 1113f4959950Smrg ;; 11140cfee914Smrg strongarm-* | thumb-*) 11150cfee914Smrg cpu=arm 1116f4959950Smrg ;; 11170cfee914Smrg tx39-*) 11180cfee914Smrg cpu=mipstx39 1119f4959950Smrg ;; 11200cfee914Smrg tx39el-*) 11210cfee914Smrg cpu=mipstx39el 1122f4959950Smrg ;; 11230cfee914Smrg x64-*) 11240cfee914Smrg cpu=x86_64 1125f4959950Smrg ;; 11260cfee914Smrg xscale-* | xscalee[bl]-*) 11270cfee914Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1128f4959950Smrg ;; 11290cfee914Smrg arm64-* | aarch64le-*) 11300cfee914Smrg cpu=aarch64 1131f4959950Smrg ;; 11320cfee914Smrg 11330cfee914Smrg # Recognize the canonical CPU Types that limit and/or modify the 11340cfee914Smrg # company names they are paired with. 11350cfee914Smrg cr16-*) 11360cfee914Smrg basic_os=${basic_os:-elf} 1137f4959950Smrg ;; 11380cfee914Smrg crisv32-* | etraxfs*-*) 11390cfee914Smrg cpu=crisv32 11400cfee914Smrg vendor=axis 1141f4959950Smrg ;; 11420cfee914Smrg cris-* | etrax*-*) 11430cfee914Smrg cpu=cris 11440cfee914Smrg vendor=axis 1145f4959950Smrg ;; 11460cfee914Smrg crx-*) 11470cfee914Smrg basic_os=${basic_os:-elf} 1148f4959950Smrg ;; 11490cfee914Smrg neo-tandem) 11500cfee914Smrg cpu=neo 11510cfee914Smrg vendor=tandem 1152f4959950Smrg ;; 11530cfee914Smrg nse-tandem) 11540cfee914Smrg cpu=nse 11550cfee914Smrg vendor=tandem 1156f4959950Smrg ;; 11570cfee914Smrg nsr-tandem) 11580cfee914Smrg cpu=nsr 11590cfee914Smrg vendor=tandem 1160f4959950Smrg ;; 11610cfee914Smrg nsv-tandem) 11620cfee914Smrg cpu=nsv 11630cfee914Smrg vendor=tandem 1164f4959950Smrg ;; 11650cfee914Smrg nsx-tandem) 11660cfee914Smrg cpu=nsx 11670cfee914Smrg vendor=tandem 1168f4959950Smrg ;; 11690cfee914Smrg mipsallegrexel-sony) 11700cfee914Smrg cpu=mipsallegrexel 11710cfee914Smrg vendor=sony 1172f4959950Smrg ;; 11730cfee914Smrg tile*-*) 11740cfee914Smrg basic_os=${basic_os:-linux-gnu} 1175f4959950Smrg ;; 11760cfee914Smrg 1177f4959950Smrg *) 11780cfee914Smrg # Recognize the canonical CPU types that are allowed with any 11790cfee914Smrg # company name. 11800cfee914Smrg case $cpu in 11810cfee914Smrg 1750a | 580 \ 11820cfee914Smrg | a29k \ 11830cfee914Smrg | aarch64 | aarch64_be \ 11840cfee914Smrg | abacus \ 11850cfee914Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11860cfee914Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11870cfee914Smrg | alphapca5[67] | alpha64pca5[67] \ 11880cfee914Smrg | am33_2.0 \ 11890cfee914Smrg | amdgcn \ 11900cfee914Smrg | arc | arceb | arc32 | arc64 \ 11910cfee914Smrg | arm | arm[lb]e | arme[lb] | armv* \ 11920cfee914Smrg | avr | avr32 \ 11930cfee914Smrg | asmjs \ 11940cfee914Smrg | ba \ 11950cfee914Smrg | be32 | be64 \ 11960cfee914Smrg | bfin | bpf | bs2000 \ 11970cfee914Smrg | c[123]* | c30 | [cjt]90 | c4x \ 11980cfee914Smrg | c8051 | clipper | craynv | csky | cydra \ 11990cfee914Smrg | d10v | d30v | dlx | dsp16xx \ 12000cfee914Smrg | e2k | elxsi | epiphany \ 12010cfee914Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 12020cfee914Smrg | h8300 | h8500 \ 12030cfee914Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 12040cfee914Smrg | hexagon \ 12050cfee914Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12060cfee914Smrg | ip2k | iq2000 \ 12070cfee914Smrg | k1om \ 12080cfee914Smrg | le32 | le64 \ 12090cfee914Smrg | lm32 \ 12100cfee914Smrg | loongarch32 | loongarch64 \ 12110cfee914Smrg | m32c | m32r | m32rle \ 12120cfee914Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12130cfee914Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12140cfee914Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12150cfee914Smrg | microblaze | microblazeel \ 12160cfee914Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12170cfee914Smrg | mips16 \ 12180cfee914Smrg | mips64 | mips64eb | mips64el \ 12190cfee914Smrg | mips64octeon | mips64octeonel \ 12200cfee914Smrg | mips64orion | mips64orionel \ 12210cfee914Smrg | mips64r5900 | mips64r5900el \ 12220cfee914Smrg | mips64vr | mips64vrel \ 12230cfee914Smrg | mips64vr4100 | mips64vr4100el \ 12240cfee914Smrg | mips64vr4300 | mips64vr4300el \ 12250cfee914Smrg | mips64vr5000 | mips64vr5000el \ 12260cfee914Smrg | mips64vr5900 | mips64vr5900el \ 12270cfee914Smrg | mipsisa32 | mipsisa32el \ 12280cfee914Smrg | mipsisa32r2 | mipsisa32r2el \ 12290cfee914Smrg | mipsisa32r3 | mipsisa32r3el \ 12300cfee914Smrg | mipsisa32r5 | mipsisa32r5el \ 12310cfee914Smrg | mipsisa32r6 | mipsisa32r6el \ 12320cfee914Smrg | mipsisa64 | mipsisa64el \ 12330cfee914Smrg | mipsisa64r2 | mipsisa64r2el \ 12340cfee914Smrg | mipsisa64r3 | mipsisa64r3el \ 12350cfee914Smrg | mipsisa64r5 | mipsisa64r5el \ 12360cfee914Smrg | mipsisa64r6 | mipsisa64r6el \ 12370cfee914Smrg | mipsisa64sb1 | mipsisa64sb1el \ 12380cfee914Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 12390cfee914Smrg | mipsr5900 | mipsr5900el \ 12400cfee914Smrg | mipstx39 | mipstx39el \ 12410cfee914Smrg | mmix \ 12420cfee914Smrg | mn10200 | mn10300 \ 12430cfee914Smrg | moxie \ 12440cfee914Smrg | mt \ 12450cfee914Smrg | msp430 \ 12460cfee914Smrg | nds32 | nds32le | nds32be \ 12470cfee914Smrg | nfp \ 12480cfee914Smrg | nios | nios2 | nios2eb | nios2el \ 12490cfee914Smrg | none | np1 | ns16k | ns32k | nvptx \ 12500cfee914Smrg | open8 \ 12510cfee914Smrg | or1k* \ 12520cfee914Smrg | or32 \ 12530cfee914Smrg | orion \ 12540cfee914Smrg | picochip \ 12550cfee914Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12560cfee914Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12570cfee914Smrg | pru \ 12580cfee914Smrg | pyramid \ 12590cfee914Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12600cfee914Smrg | rl78 | romp | rs6000 | rx \ 12610cfee914Smrg | s390 | s390x \ 12620cfee914Smrg | score \ 12630cfee914Smrg | sh | shl \ 12640cfee914Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12650cfee914Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12660cfee914Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12670cfee914Smrg | sparclite \ 12680cfee914Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12690cfee914Smrg | spu \ 12700cfee914Smrg | tahoe \ 12710cfee914Smrg | thumbv7* \ 12720cfee914Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12730cfee914Smrg | tron \ 12740cfee914Smrg | ubicom32 \ 12750cfee914Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12760cfee914Smrg | vax \ 12770cfee914Smrg | visium \ 12780cfee914Smrg | w65 \ 12790cfee914Smrg | wasm32 | wasm64 \ 12800cfee914Smrg | we32k \ 12810cfee914Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12820cfee914Smrg | xstormy16 | xtensa* \ 12830cfee914Smrg | ymp \ 12840cfee914Smrg | z8k | z80) 12850cfee914Smrg ;; 12860cfee914Smrg 12870cfee914Smrg *) 12880cfee914Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12890cfee914Smrg exit 1 12900cfee914Smrg ;; 12910cfee914Smrg esac 1292f4959950Smrg ;; 1293f4959950Smrgesac 1294f4959950Smrg 1295f4959950Smrg# Here we canonicalize certain aliases for manufacturers. 12960cfee914Smrgcase $vendor in 12970cfee914Smrg digital*) 12980cfee914Smrg vendor=dec 1299f4959950Smrg ;; 13000cfee914Smrg commodore*) 13010cfee914Smrg vendor=cbm 1302f4959950Smrg ;; 1303f4959950Smrg *) 1304f4959950Smrg ;; 1305f4959950Smrgesac 1306f4959950Smrg 1307f4959950Smrg# Decode manufacturer-specific aliases for certain operating systems. 1308f4959950Smrg 13090cfee914Smrgif test x$basic_os != x 1310f4959950Smrgthen 13110cfee914Smrg 13120cfee914Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 13130cfee914Smrg# set os. 13140cfee914Smrgcase $basic_os in 13150cfee914Smrg gnu/linux*) 13160cfee914Smrg kernel=linux 13170cfee914Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13180cfee914Smrg ;; 13190cfee914Smrg os2-emx) 13200cfee914Smrg kernel=os2 13210cfee914Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13220cfee914Smrg ;; 13230cfee914Smrg nto-qnx*) 13240cfee914Smrg kernel=nto 13250cfee914Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13260cfee914Smrg ;; 13270cfee914Smrg *-*) 13280cfee914Smrg # shellcheck disable=SC2162 13290cfee914Smrg saved_IFS=$IFS 13300cfee914Smrg IFS="-" read kernel os <<EOF 13310cfee914Smrg$basic_os 13320cfee914SmrgEOF 13330cfee914Smrg IFS=$saved_IFS 13340cfee914Smrg ;; 13350cfee914Smrg # Default OS when just kernel was specified 13360cfee914Smrg nto*) 13370cfee914Smrg kernel=nto 13380cfee914Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13390cfee914Smrg ;; 13400cfee914Smrg linux*) 13410cfee914Smrg kernel=linux 13420cfee914Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13430cfee914Smrg ;; 13440cfee914Smrg managarm*) 13450cfee914Smrg kernel=managarm 13460cfee914Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 13470cfee914Smrg ;; 13480cfee914Smrg *) 13490cfee914Smrg kernel= 13500cfee914Smrg os=$basic_os 13510cfee914Smrg ;; 13520cfee914Smrgesac 13530cfee914Smrg 13540cfee914Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13550cfee914Smrg# etc.) 1356f4959950Smrgcase $os in 13570cfee914Smrg # First match some system type aliases that might get confused 13580cfee914Smrg # with valid system types. 13590cfee914Smrg # solaris* is a basic system type, with this one exception. 13600cfee914Smrg auroraux) 13610cfee914Smrg os=auroraux 1362cf8f59bfSmrg ;; 13630cfee914Smrg bluegene*) 13640cfee914Smrg os=cnk 1365f4959950Smrg ;; 13660cfee914Smrg solaris1 | solaris1.*) 13670cfee914Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1368f4959950Smrg ;; 13690cfee914Smrg solaris) 13700cfee914Smrg os=solaris2 1371f4959950Smrg ;; 13720cfee914Smrg unixware*) 13730cfee914Smrg os=sysv4.2uw 1374f4959950Smrg ;; 13750cfee914Smrg # es1800 is here to avoid being matched by es* (a different OS) 13760cfee914Smrg es1800*) 13770cfee914Smrg os=ose 1378f4959950Smrg ;; 13790cfee914Smrg # Some version numbers need modification 13800cfee914Smrg chorusos*) 13810cfee914Smrg os=chorusos 1382f4959950Smrg ;; 13830cfee914Smrg isc) 13840cfee914Smrg os=isc2.2 1385f4959950Smrg ;; 13860cfee914Smrg sco6) 13870cfee914Smrg os=sco5v6 1388f4959950Smrg ;; 13890cfee914Smrg sco5) 13900cfee914Smrg os=sco3.2v5 1391f4959950Smrg ;; 13920cfee914Smrg sco4) 13930cfee914Smrg os=sco3.2v4 1394f4959950Smrg ;; 13950cfee914Smrg sco3.2.[4-9]*) 13960cfee914Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1397f4959950Smrg ;; 13980cfee914Smrg sco*v* | scout) 13990cfee914Smrg # Don't match below 1400f4959950Smrg ;; 14010cfee914Smrg sco*) 14020cfee914Smrg os=sco3.2v2 1403f4959950Smrg ;; 14040cfee914Smrg psos*) 14050cfee914Smrg os=psos 1406f4959950Smrg ;; 14070cfee914Smrg qnx*) 14080cfee914Smrg os=qnx 1409f4959950Smrg ;; 14100cfee914Smrg hiux*) 14110cfee914Smrg os=hiuxwe2 1412f4959950Smrg ;; 14130cfee914Smrg lynx*178) 14140cfee914Smrg os=lynxos178 1415f4959950Smrg ;; 14160cfee914Smrg lynx*5) 14170cfee914Smrg os=lynxos5 1418f4959950Smrg ;; 14190cfee914Smrg lynxos*) 14200cfee914Smrg # don't get caught up in next wildcard 1421f4959950Smrg ;; 14220cfee914Smrg lynx*) 14230cfee914Smrg os=lynxos 1424f4959950Smrg ;; 14250cfee914Smrg mac[0-9]*) 14260cfee914Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1427f4959950Smrg ;; 14280cfee914Smrg opened*) 14290cfee914Smrg os=openedition 1430f4959950Smrg ;; 14310cfee914Smrg os400*) 14320cfee914Smrg os=os400 1433f4959950Smrg ;; 14340cfee914Smrg sunos5*) 14350cfee914Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1436f4959950Smrg ;; 14370cfee914Smrg sunos6*) 14380cfee914Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1439f4959950Smrg ;; 14400cfee914Smrg wince*) 14410cfee914Smrg os=wince 1442f4959950Smrg ;; 14430cfee914Smrg utek*) 14440cfee914Smrg os=bsd 1445f4959950Smrg ;; 14460cfee914Smrg dynix*) 14470cfee914Smrg os=bsd 1448f4959950Smrg ;; 14490cfee914Smrg acis*) 14500cfee914Smrg os=aos 1451f4959950Smrg ;; 14520cfee914Smrg atheos*) 14530cfee914Smrg os=atheos 1454f4959950Smrg ;; 14550cfee914Smrg syllable*) 14560cfee914Smrg os=syllable 1457f4959950Smrg ;; 14580cfee914Smrg 386bsd) 14590cfee914Smrg os=bsd 1460f4959950Smrg ;; 14610cfee914Smrg ctix* | uts*) 14620cfee914Smrg os=sysv 1463f4959950Smrg ;; 14640cfee914Smrg nova*) 14650cfee914Smrg os=rtmk-nova 1466f4959950Smrg ;; 14670cfee914Smrg ns2) 14680cfee914Smrg os=nextstep2 1469f4959950Smrg ;; 14700cfee914Smrg # Preserve the version number of sinix5. 14710cfee914Smrg sinix5.*) 14720cfee914Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1473f4959950Smrg ;; 14740cfee914Smrg sinix*) 14750cfee914Smrg os=sysv4 1476f4959950Smrg ;; 14770cfee914Smrg tpf*) 14780cfee914Smrg os=tpf 1479f4959950Smrg ;; 14800cfee914Smrg triton*) 14810cfee914Smrg os=sysv3 1482f4959950Smrg ;; 14830cfee914Smrg oss*) 14840cfee914Smrg os=sysv3 1485f4959950Smrg ;; 14860cfee914Smrg svr4*) 14870cfee914Smrg os=sysv4 1488f4959950Smrg ;; 14890cfee914Smrg svr3) 14900cfee914Smrg os=sysv3 1491f4959950Smrg ;; 14920cfee914Smrg sysvr4) 14930cfee914Smrg os=sysv4 1494f4959950Smrg ;; 14950cfee914Smrg ose*) 14960cfee914Smrg os=ose 1497f4959950Smrg ;; 14980cfee914Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14990cfee914Smrg os=mint 1500f4959950Smrg ;; 15010cfee914Smrg dicos*) 15020cfee914Smrg os=dicos 1503f4959950Smrg ;; 15040cfee914Smrg pikeos*) 15050cfee914Smrg # Until real need of OS specific support for 15060cfee914Smrg # particular features comes up, bare metal 15070cfee914Smrg # configurations are quite functional. 15080cfee914Smrg case $cpu in 15090cfee914Smrg arm*) 15100cfee914Smrg os=eabi 15110cfee914Smrg ;; 15120cfee914Smrg *) 15130cfee914Smrg os=elf 15140cfee914Smrg ;; 15150cfee914Smrg esac 1516f4959950Smrg ;; 1517f4959950Smrg *) 15180cfee914Smrg # No normalization, but not necessarily accepted, that comes below. 1519f4959950Smrg ;; 1520f4959950Smrgesac 15210cfee914Smrg 1522f4959950Smrgelse 1523f4959950Smrg 1524f4959950Smrg# Here we handle the default operating systems that come with various machines. 1525f4959950Smrg# The value should be what the vendor currently ships out the door with their 1526f4959950Smrg# machine or put another way, the most popular os provided with the machine. 1527f4959950Smrg 1528f4959950Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1529f4959950Smrg# "-sun"), then you have to tell the case statement up towards the top 1530f4959950Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1531f4959950Smrg# will signal an error saying that MANUFACTURER isn't an operating 1532f4959950Smrg# system, and we'll never get to this point. 1533f4959950Smrg 15340cfee914Smrgkernel= 15350cfee914Smrgcase $cpu-$vendor in 15360cfee914Smrg score-*) 15370cfee914Smrg os=elf 1538f4959950Smrg ;; 15390cfee914Smrg spu-*) 15400cfee914Smrg os=elf 1541f4959950Smrg ;; 1542f4959950Smrg *-acorn) 15430cfee914Smrg os=riscix1.2 1544f4959950Smrg ;; 1545f4959950Smrg arm*-rebel) 15460cfee914Smrg kernel=linux 15470cfee914Smrg os=gnu 1548f4959950Smrg ;; 1549f4959950Smrg arm*-semi) 15500cfee914Smrg os=aout 15510cfee914Smrg ;; 15520cfee914Smrg c4x-* | tic4x-*) 15530cfee914Smrg os=coff 15540cfee914Smrg ;; 15550cfee914Smrg c8051-*) 15560cfee914Smrg os=elf 15570cfee914Smrg ;; 15580cfee914Smrg clipper-intergraph) 15590cfee914Smrg os=clix 1560f4959950Smrg ;; 15610cfee914Smrg hexagon-*) 15620cfee914Smrg os=elf 1563f4959950Smrg ;; 1564cf8f59bfSmrg tic54x-*) 15650cfee914Smrg os=coff 1566cf8f59bfSmrg ;; 1567cf8f59bfSmrg tic55x-*) 15680cfee914Smrg os=coff 1569cf8f59bfSmrg ;; 1570cf8f59bfSmrg tic6x-*) 15710cfee914Smrg os=coff 1572cf8f59bfSmrg ;; 1573f4959950Smrg # This must come before the *-dec entry. 1574f4959950Smrg pdp10-*) 15750cfee914Smrg os=tops20 1576f4959950Smrg ;; 1577f4959950Smrg pdp11-*) 15780cfee914Smrg os=none 1579f4959950Smrg ;; 1580f4959950Smrg *-dec | vax-*) 15810cfee914Smrg os=ultrix4.2 1582f4959950Smrg ;; 1583f4959950Smrg m68*-apollo) 15840cfee914Smrg os=domain 1585f4959950Smrg ;; 1586f4959950Smrg i386-sun) 15870cfee914Smrg os=sunos4.0.2 1588f4959950Smrg ;; 1589f4959950Smrg m68000-sun) 15900cfee914Smrg os=sunos3 1591f4959950Smrg ;; 1592f4959950Smrg m68*-cisco) 15930cfee914Smrg os=aout 1594f4959950Smrg ;; 15950cfee914Smrg mep-*) 15960cfee914Smrg os=elf 1597f4959950Smrg ;; 1598f4959950Smrg mips*-cisco) 15990cfee914Smrg os=elf 1600f4959950Smrg ;; 1601f4959950Smrg mips*-*) 16020cfee914Smrg os=elf 1603f4959950Smrg ;; 1604f4959950Smrg or32-*) 16050cfee914Smrg os=coff 1606f4959950Smrg ;; 1607f4959950Smrg *-tti) # must be before sparc entry or we get the wrong os. 16080cfee914Smrg os=sysv3 1609f4959950Smrg ;; 1610f4959950Smrg sparc-* | *-sun) 16110cfee914Smrg os=sunos4.1.1 1612f4959950Smrg ;; 16130cfee914Smrg pru-*) 16140cfee914Smrg os=elf 1615f4959950Smrg ;; 16160cfee914Smrg *-be) 16170cfee914Smrg os=beos 1618f4959950Smrg ;; 1619f4959950Smrg *-ibm) 16200cfee914Smrg os=aix 1621f4959950Smrg ;; 16220cfee914Smrg *-knuth) 16230cfee914Smrg os=mmixware 1624f4959950Smrg ;; 1625f4959950Smrg *-wec) 16260cfee914Smrg os=proelf 1627f4959950Smrg ;; 1628f4959950Smrg *-winbond) 16290cfee914Smrg os=proelf 1630f4959950Smrg ;; 1631f4959950Smrg *-oki) 16320cfee914Smrg os=proelf 1633f4959950Smrg ;; 1634f4959950Smrg *-hp) 16350cfee914Smrg os=hpux 1636f4959950Smrg ;; 1637f4959950Smrg *-hitachi) 16380cfee914Smrg os=hiux 1639f4959950Smrg ;; 1640f4959950Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16410cfee914Smrg os=sysv 1642f4959950Smrg ;; 1643f4959950Smrg *-cbm) 16440cfee914Smrg os=amigaos 1645f4959950Smrg ;; 1646f4959950Smrg *-dg) 16470cfee914Smrg os=dgux 1648f4959950Smrg ;; 1649f4959950Smrg *-dolphin) 16500cfee914Smrg os=sysv3 1651f4959950Smrg ;; 1652f4959950Smrg m68k-ccur) 16530cfee914Smrg os=rtu 1654f4959950Smrg ;; 1655f4959950Smrg m88k-omron*) 16560cfee914Smrg os=luna 1657f4959950Smrg ;; 16580cfee914Smrg *-next) 16590cfee914Smrg os=nextstep 1660f4959950Smrg ;; 1661f4959950Smrg *-sequent) 16620cfee914Smrg os=ptx 1663f4959950Smrg ;; 1664f4959950Smrg *-crds) 16650cfee914Smrg os=unos 1666f4959950Smrg ;; 1667f4959950Smrg *-ns) 16680cfee914Smrg os=genix 1669f4959950Smrg ;; 1670f4959950Smrg i370-*) 16710cfee914Smrg os=mvs 1672f4959950Smrg ;; 1673f4959950Smrg *-gould) 16740cfee914Smrg os=sysv 1675f4959950Smrg ;; 1676f4959950Smrg *-highlevel) 16770cfee914Smrg os=bsd 1678f4959950Smrg ;; 1679f4959950Smrg *-encore) 16800cfee914Smrg os=bsd 1681f4959950Smrg ;; 1682f4959950Smrg *-sgi) 16830cfee914Smrg os=irix 1684f4959950Smrg ;; 1685f4959950Smrg *-siemens) 16860cfee914Smrg os=sysv4 1687f4959950Smrg ;; 1688f4959950Smrg *-masscomp) 16890cfee914Smrg os=rtu 1690f4959950Smrg ;; 1691f4959950Smrg f30[01]-fujitsu | f700-fujitsu) 16920cfee914Smrg os=uxpv 1693f4959950Smrg ;; 1694f4959950Smrg *-rom68k) 16950cfee914Smrg os=coff 1696f4959950Smrg ;; 1697f4959950Smrg *-*bug) 16980cfee914Smrg os=coff 1699f4959950Smrg ;; 1700f4959950Smrg *-apple) 17010cfee914Smrg os=macos 1702f4959950Smrg ;; 1703f4959950Smrg *-atari*) 17040cfee914Smrg os=mint 17050cfee914Smrg ;; 17060cfee914Smrg *-wrs) 17070cfee914Smrg os=vxworks 1708f4959950Smrg ;; 1709f4959950Smrg *) 17100cfee914Smrg os=none 1711f4959950Smrg ;; 1712f4959950Smrgesac 17130cfee914Smrg 1714f4959950Smrgfi 1715f4959950Smrg 17160cfee914Smrg# Now, validate our (potentially fixed-up) OS. 17170cfee914Smrgcase $os in 17180cfee914Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17190cfee914Smrg musl* | newlib* | relibc* | uclibc*) 17200cfee914Smrg ;; 17210cfee914Smrg # Likewise for "kernel-abi" 17220cfee914Smrg eabi* | gnueabi*) 17230cfee914Smrg ;; 17240cfee914Smrg # VxWorks passes extra cpu info in the 4th filed. 17250cfee914Smrg simlinux | simwindows | spe) 17260cfee914Smrg ;; 17270cfee914Smrg # Now accept the basic system types. 17280cfee914Smrg # The portable systems comes first. 17290cfee914Smrg # Each alternative MUST end in a * to match a version number. 17300cfee914Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17310cfee914Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17320cfee914Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17330cfee914Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17340cfee914Smrg | hiux* | abug | nacl* | netware* | windows* \ 17350cfee914Smrg | os9* | macos* | osx* | ios* \ 17360cfee914Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17370cfee914Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17380cfee914Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17390cfee914Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17400cfee914Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17410cfee914Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17420cfee914Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17430cfee914Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17440cfee914Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17450cfee914Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17460cfee914Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17470cfee914Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17480cfee914Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17490cfee914Smrg | midipix* | mingw32* | mingw64* | mint* \ 17500cfee914Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17510cfee914Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17520cfee914Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17530cfee914Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17540cfee914Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17550cfee914Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17560cfee914Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17570cfee914Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17580cfee914Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17590cfee914Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17600cfee914Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 17610cfee914Smrg | fiwix* | mlibc* ) 17620cfee914Smrg ;; 17630cfee914Smrg # This one is extra strict with allowed versions 17640cfee914Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17650cfee914Smrg # Don't forget version if it is 3.2v4 or newer. 17660cfee914Smrg ;; 17670cfee914Smrg none) 17680cfee914Smrg ;; 17690cfee914Smrg kernel* ) 17700cfee914Smrg # Restricted further below 17710cfee914Smrg ;; 17720cfee914Smrg *) 17730cfee914Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17740cfee914Smrg exit 1 17750cfee914Smrg ;; 17760cfee914Smrgesac 17770cfee914Smrg 17780cfee914Smrg# As a final step for OS-related things, validate the OS-kernel combination 17790cfee914Smrg# (given a valid OS), if there is a kernel. 17800cfee914Smrgcase $kernel-$os in 17810cfee914Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17820cfee914Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 17830cfee914Smrg ;; 17840cfee914Smrg uclinux-uclibc* ) 17850cfee914Smrg ;; 17860cfee914Smrg managarm-mlibc* | managarm-kernel* ) 17870cfee914Smrg ;; 17880cfee914Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 17890cfee914Smrg # These are just libc implementations, not actual OSes, and thus 17900cfee914Smrg # require a kernel. 17910cfee914Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17920cfee914Smrg exit 1 17930cfee914Smrg ;; 17940cfee914Smrg -kernel* ) 17950cfee914Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 17960cfee914Smrg exit 1 17970cfee914Smrg ;; 17980cfee914Smrg *-kernel* ) 17990cfee914Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 18000cfee914Smrg exit 1 18010cfee914Smrg ;; 18020cfee914Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 18030cfee914Smrg ;; 18040cfee914Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 18050cfee914Smrg ;; 18060cfee914Smrg nto-qnx*) 18070cfee914Smrg ;; 18080cfee914Smrg os2-emx) 18090cfee914Smrg ;; 18100cfee914Smrg *-eabi* | *-gnueabi*) 18110cfee914Smrg ;; 18120cfee914Smrg -*) 18130cfee914Smrg # Blank kernel with real OS is always fine. 18140cfee914Smrg ;; 18150cfee914Smrg *-*) 18160cfee914Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 18170cfee914Smrg exit 1 18180cfee914Smrg ;; 18190cfee914Smrgesac 18200cfee914Smrg 1821f4959950Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1822f4959950Smrg# manufacturer. We pick the logical manufacturer. 18230cfee914Smrgcase $vendor in 18240cfee914Smrg unknown) 18250cfee914Smrg case $cpu-$os in 18260cfee914Smrg *-riscix*) 1827f4959950Smrg vendor=acorn 1828f4959950Smrg ;; 18290cfee914Smrg *-sunos*) 1830f4959950Smrg vendor=sun 1831f4959950Smrg ;; 18320cfee914Smrg *-cnk* | *-aix*) 1833f4959950Smrg vendor=ibm 1834f4959950Smrg ;; 18350cfee914Smrg *-beos*) 1836f4959950Smrg vendor=be 1837f4959950Smrg ;; 18380cfee914Smrg *-hpux*) 1839f4959950Smrg vendor=hp 1840f4959950Smrg ;; 18410cfee914Smrg *-mpeix*) 1842f4959950Smrg vendor=hp 1843f4959950Smrg ;; 18440cfee914Smrg *-hiux*) 1845f4959950Smrg vendor=hitachi 1846f4959950Smrg ;; 18470cfee914Smrg *-unos*) 1848f4959950Smrg vendor=crds 1849f4959950Smrg ;; 18500cfee914Smrg *-dgux*) 1851f4959950Smrg vendor=dg 1852f4959950Smrg ;; 18530cfee914Smrg *-luna*) 1854f4959950Smrg vendor=omron 1855f4959950Smrg ;; 18560cfee914Smrg *-genix*) 1857f4959950Smrg vendor=ns 1858f4959950Smrg ;; 18590cfee914Smrg *-clix*) 18600cfee914Smrg vendor=intergraph 18610cfee914Smrg ;; 18620cfee914Smrg *-mvs* | *-opened*) 18630cfee914Smrg vendor=ibm 18640cfee914Smrg ;; 18650cfee914Smrg *-os400*) 1866f4959950Smrg vendor=ibm 1867f4959950Smrg ;; 18680cfee914Smrg s390-* | s390x-*) 1869f4959950Smrg vendor=ibm 1870f4959950Smrg ;; 18710cfee914Smrg *-ptx*) 1872f4959950Smrg vendor=sequent 1873f4959950Smrg ;; 18740cfee914Smrg *-tpf*) 1875f4959950Smrg vendor=ibm 1876f4959950Smrg ;; 18770cfee914Smrg *-vxsim* | *-vxworks* | *-windiss*) 1878f4959950Smrg vendor=wrs 1879f4959950Smrg ;; 18800cfee914Smrg *-aux*) 1881f4959950Smrg vendor=apple 1882f4959950Smrg ;; 18830cfee914Smrg *-hms*) 1884f4959950Smrg vendor=hitachi 1885f4959950Smrg ;; 18860cfee914Smrg *-mpw* | *-macos*) 1887f4959950Smrg vendor=apple 1888f4959950Smrg ;; 18890cfee914Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1890f4959950Smrg vendor=atari 1891f4959950Smrg ;; 18920cfee914Smrg *-vos*) 1893f4959950Smrg vendor=stratus 1894f4959950Smrg ;; 1895f4959950Smrg esac 1896f4959950Smrg ;; 1897f4959950Smrgesac 1898f4959950Smrg 18990cfee914Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1900f4959950Smrgexit 1901f4959950Smrg 1902f4959950Smrg# Local variables: 19030cfee914Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1904f4959950Smrg# time-stamp-start: "timestamp='" 1905f4959950Smrg# time-stamp-format: "%:y-%02m-%02d" 1906f4959950Smrg# time-stamp-end: "'" 1907f4959950Smrg# End: 1908