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