172b4363aSmrg#! /bin/sh 272b4363aSmrg# Configuration validation subroutine script. 37ed541caSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 472b4363aSmrg 57ed541caSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 67ed541caSmrg 77ed541caSmrgtimestamp='2021-08-14' 872b4363aSmrg 933dddc75Smrg# This file is free software; you can redistribute it and/or modify it 1033dddc75Smrg# under the terms of the GNU General Public License as published by 1133dddc75Smrg# the Free Software Foundation; either version 3 of the License, or 1272b4363aSmrg# (at your option) any later version. 1372b4363aSmrg# 1433dddc75Smrg# This program is distributed in the hope that it will be useful, but 1533dddc75Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1633dddc75Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1733dddc75Smrg# General Public License for more details. 1872b4363aSmrg# 1972b4363aSmrg# You should have received a copy of the GNU General Public License 207ed541caSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 2172b4363aSmrg# 2272b4363aSmrg# As a special exception to the GNU General Public License, if you 2372b4363aSmrg# distribute this file as part of a program that contains a 2472b4363aSmrg# configuration script generated by Autoconf, you may include it under 2533dddc75Smrg# the same distribution terms that you use for the rest of that 2633dddc75Smrg# program. This Exception is an additional permission under section 7 2733dddc75Smrg# of the GNU General Public License, version 3 ("GPLv3"). 2872b4363aSmrg 2972b4363aSmrg 3033dddc75Smrg# Please send patches to <config-patches@gnu.org>. 3172b4363aSmrg# 3272b4363aSmrg# Configuration subroutine to validate and canonicalize a configuration type. 3372b4363aSmrg# Supply the specified configuration type as an argument. 3472b4363aSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 3572b4363aSmrg# Otherwise, we print the canonical config type on stdout and succeed. 3672b4363aSmrg 3708e312fdSmrg# You can get the latest version of this script from: 387ed541caSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 3908e312fdSmrg 4072b4363aSmrg# This file is supposed to be the same for all GNU packages 4172b4363aSmrg# and recognize all the CPU types, system types and aliases 4272b4363aSmrg# that are meaningful with *any* GNU software. 4372b4363aSmrg# Each package is responsible for reporting which valid configurations 4472b4363aSmrg# it does not support. The user should be able to distinguish 4572b4363aSmrg# a failure to support a valid configuration from a meaningless 4672b4363aSmrg# configuration. 4772b4363aSmrg 4872b4363aSmrg# The goal of this file is to map all the various variations of a given 4972b4363aSmrg# machine specification into a single specification in the form: 5072b4363aSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5172b4363aSmrg# or in some cases, the newer four-part form: 5272b4363aSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5372b4363aSmrg# It is wrong to echo any other type of specification. 5472b4363aSmrg 557ed541caSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 567ed541caSmrg# about features and limitations of the classic Bourne shell that were 577ed541caSmrg# superseded or lifted in POSIX. However, this script identifies a wide 587ed541caSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 597ed541caSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 607ed541caSmrg# have a pre-POSIX /bin/sh. 617ed541caSmrg 6272b4363aSmrgme=`echo "$0" | sed -e 's,.*/,,'` 6372b4363aSmrg 6472b4363aSmrgusage="\ 657ed541caSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6672b4363aSmrg 6772b4363aSmrgCanonicalize a configuration name. 6872b4363aSmrg 697ed541caSmrgOptions: 7072b4363aSmrg -h, --help print this help, then exit 7172b4363aSmrg -t, --time-stamp print date of last modification, then exit 7272b4363aSmrg -v, --version print version number, then exit 7372b4363aSmrg 7472b4363aSmrgReport bugs and patches to <config-patches@gnu.org>." 7572b4363aSmrg 7672b4363aSmrgversion="\ 7772b4363aSmrgGNU config.sub ($timestamp) 7872b4363aSmrg 797ed541caSmrgCopyright 1992-2021 Free Software Foundation, Inc. 8072b4363aSmrg 8172b4363aSmrgThis is free software; see the source for copying conditions. There is NO 8272b4363aSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8372b4363aSmrg 8472b4363aSmrghelp=" 8572b4363aSmrgTry \`$me --help' for more information." 8672b4363aSmrg 8772b4363aSmrg# Parse command line 8872b4363aSmrgwhile test $# -gt 0 ; do 8972b4363aSmrg case $1 in 9072b4363aSmrg --time-stamp | --time* | -t ) 9172b4363aSmrg echo "$timestamp" ; exit ;; 9272b4363aSmrg --version | -v ) 9372b4363aSmrg echo "$version" ; exit ;; 9472b4363aSmrg --help | --h* | -h ) 9572b4363aSmrg echo "$usage"; exit ;; 9672b4363aSmrg -- ) # Stop option processing 9772b4363aSmrg shift; break ;; 9872b4363aSmrg - ) # Use stdin as input. 9972b4363aSmrg break ;; 10072b4363aSmrg -* ) 1017ed541caSmrg echo "$me: invalid option $1$help" >&2 10272b4363aSmrg exit 1 ;; 10372b4363aSmrg 10472b4363aSmrg *local*) 10572b4363aSmrg # First pass through any local machine types. 1067ed541caSmrg echo "$1" 10772b4363aSmrg exit ;; 10872b4363aSmrg 10972b4363aSmrg * ) 11072b4363aSmrg break ;; 11172b4363aSmrg esac 11272b4363aSmrgdone 11372b4363aSmrg 11472b4363aSmrgcase $# in 11572b4363aSmrg 0) echo "$me: missing argument$help" >&2 11672b4363aSmrg exit 1;; 11772b4363aSmrg 1) ;; 11872b4363aSmrg *) echo "$me: too many arguments$help" >&2 11972b4363aSmrg exit 1;; 12072b4363aSmrgesac 12172b4363aSmrg 1227ed541caSmrg# Split fields of configuration type 1237ed541caSmrg# shellcheck disable=SC2162 1247ed541caSmrgsaved_IFS=$IFS 1257ed541caSmrgIFS="-" read field1 field2 field3 field4 <<EOF 1267ed541caSmrg$1 1277ed541caSmrgEOF 1287ed541caSmrgIFS=$saved_IFS 12972b4363aSmrg 1307ed541caSmrg# Separate into logical components for further validation 1317ed541caSmrgcase $1 in 1327ed541caSmrg *-*-*-*-*) 1337ed541caSmrg echo Invalid configuration \`"$1"\': more than four components >&2 1347ed541caSmrg exit 1 13572b4363aSmrg ;; 1367ed541caSmrg *-*-*-*) 1377ed541caSmrg basic_machine=$field1-$field2 1387ed541caSmrg basic_os=$field3-$field4 13972b4363aSmrg ;; 1407ed541caSmrg *-*-*) 1417ed541caSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1427ed541caSmrg # parts 1437ed541caSmrg maybe_os=$field2-$field3 1447ed541caSmrg case $maybe_os in 1457ed541caSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 1467ed541caSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1477ed541caSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1487ed541caSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 1497ed541caSmrg basic_machine=$field1 1507ed541caSmrg basic_os=$maybe_os 1517ed541caSmrg ;; 1527ed541caSmrg android-linux) 1537ed541caSmrg basic_machine=$field1-unknown 1547ed541caSmrg basic_os=linux-android 1557ed541caSmrg ;; 1567ed541caSmrg *) 1577ed541caSmrg basic_machine=$field1-$field2 1587ed541caSmrg basic_os=$field3 1597ed541caSmrg ;; 1607ed541caSmrg esac 16172b4363aSmrg ;; 1627ed541caSmrg *-*) 1637ed541caSmrg # A lone config we happen to match not fitting any pattern 1647ed541caSmrg case $field1-$field2 in 1657ed541caSmrg decstation-3100) 1667ed541caSmrg basic_machine=mips-dec 1677ed541caSmrg basic_os= 1687ed541caSmrg ;; 1697ed541caSmrg *-*) 1707ed541caSmrg # Second component is usually, but not always the OS 1717ed541caSmrg case $field2 in 1727ed541caSmrg # Prevent following clause from handling this valid os 1737ed541caSmrg sun*os*) 1747ed541caSmrg basic_machine=$field1 1757ed541caSmrg basic_os=$field2 1767ed541caSmrg ;; 1777ed541caSmrg zephyr*) 1787ed541caSmrg basic_machine=$field1-unknown 1797ed541caSmrg basic_os=$field2 1807ed541caSmrg ;; 1817ed541caSmrg # Manufacturers 1827ed541caSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1837ed541caSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1847ed541caSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1857ed541caSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1867ed541caSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1877ed541caSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1887ed541caSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1897ed541caSmrg | microblaze* | sim | cisco \ 1907ed541caSmrg | oki | wec | wrs | winbond) 1917ed541caSmrg basic_machine=$field1-$field2 1927ed541caSmrg basic_os= 1937ed541caSmrg ;; 1947ed541caSmrg *) 1957ed541caSmrg basic_machine=$field1 1967ed541caSmrg basic_os=$field2 1977ed541caSmrg ;; 1987ed541caSmrg esac 1997ed541caSmrg ;; 2007ed541caSmrg esac 20172b4363aSmrg ;; 2027ed541caSmrg *) 2037ed541caSmrg # Convert single-component short-hands not valid as part of 2047ed541caSmrg # multi-component configurations. 2057ed541caSmrg case $field1 in 2067ed541caSmrg 386bsd) 2077ed541caSmrg basic_machine=i386-pc 2087ed541caSmrg basic_os=bsd 2097ed541caSmrg ;; 2107ed541caSmrg a29khif) 2117ed541caSmrg basic_machine=a29k-amd 2127ed541caSmrg basic_os=udi 2137ed541caSmrg ;; 2147ed541caSmrg adobe68k) 2157ed541caSmrg basic_machine=m68010-adobe 2167ed541caSmrg basic_os=scout 2177ed541caSmrg ;; 2187ed541caSmrg alliant) 2197ed541caSmrg basic_machine=fx80-alliant 2207ed541caSmrg basic_os= 2217ed541caSmrg ;; 2227ed541caSmrg altos | altos3068) 2237ed541caSmrg basic_machine=m68k-altos 2247ed541caSmrg basic_os= 2257ed541caSmrg ;; 2267ed541caSmrg am29k) 2277ed541caSmrg basic_machine=a29k-none 2287ed541caSmrg basic_os=bsd 2297ed541caSmrg ;; 2307ed541caSmrg amdahl) 2317ed541caSmrg basic_machine=580-amdahl 2327ed541caSmrg basic_os=sysv 2337ed541caSmrg ;; 2347ed541caSmrg amiga) 2357ed541caSmrg basic_machine=m68k-unknown 2367ed541caSmrg basic_os= 2377ed541caSmrg ;; 2387ed541caSmrg amigaos | amigados) 2397ed541caSmrg basic_machine=m68k-unknown 2407ed541caSmrg basic_os=amigaos 2417ed541caSmrg ;; 2427ed541caSmrg amigaunix | amix) 2437ed541caSmrg basic_machine=m68k-unknown 2447ed541caSmrg basic_os=sysv4 2457ed541caSmrg ;; 2467ed541caSmrg apollo68) 2477ed541caSmrg basic_machine=m68k-apollo 2487ed541caSmrg basic_os=sysv 2497ed541caSmrg ;; 2507ed541caSmrg apollo68bsd) 2517ed541caSmrg basic_machine=m68k-apollo 2527ed541caSmrg basic_os=bsd 2537ed541caSmrg ;; 2547ed541caSmrg aros) 2557ed541caSmrg basic_machine=i386-pc 2567ed541caSmrg basic_os=aros 2577ed541caSmrg ;; 2587ed541caSmrg aux) 2597ed541caSmrg basic_machine=m68k-apple 2607ed541caSmrg basic_os=aux 2617ed541caSmrg ;; 2627ed541caSmrg balance) 2637ed541caSmrg basic_machine=ns32k-sequent 2647ed541caSmrg basic_os=dynix 2657ed541caSmrg ;; 2667ed541caSmrg blackfin) 2677ed541caSmrg basic_machine=bfin-unknown 2687ed541caSmrg basic_os=linux 2697ed541caSmrg ;; 2707ed541caSmrg cegcc) 2717ed541caSmrg basic_machine=arm-unknown 2727ed541caSmrg basic_os=cegcc 2737ed541caSmrg ;; 2747ed541caSmrg convex-c1) 2757ed541caSmrg basic_machine=c1-convex 2767ed541caSmrg basic_os=bsd 2777ed541caSmrg ;; 2787ed541caSmrg convex-c2) 2797ed541caSmrg basic_machine=c2-convex 2807ed541caSmrg basic_os=bsd 2817ed541caSmrg ;; 2827ed541caSmrg convex-c32) 2837ed541caSmrg basic_machine=c32-convex 2847ed541caSmrg basic_os=bsd 2857ed541caSmrg ;; 2867ed541caSmrg convex-c34) 2877ed541caSmrg basic_machine=c34-convex 2887ed541caSmrg basic_os=bsd 2897ed541caSmrg ;; 2907ed541caSmrg convex-c38) 2917ed541caSmrg basic_machine=c38-convex 2927ed541caSmrg basic_os=bsd 2937ed541caSmrg ;; 2947ed541caSmrg cray) 2957ed541caSmrg basic_machine=j90-cray 2967ed541caSmrg basic_os=unicos 2977ed541caSmrg ;; 2987ed541caSmrg crds | unos) 2997ed541caSmrg basic_machine=m68k-crds 3007ed541caSmrg basic_os= 3017ed541caSmrg ;; 3027ed541caSmrg da30) 3037ed541caSmrg basic_machine=m68k-da30 3047ed541caSmrg basic_os= 3057ed541caSmrg ;; 3067ed541caSmrg decstation | pmax | pmin | dec3100 | decstatn) 3077ed541caSmrg basic_machine=mips-dec 3087ed541caSmrg basic_os= 3097ed541caSmrg ;; 3107ed541caSmrg delta88) 3117ed541caSmrg basic_machine=m88k-motorola 3127ed541caSmrg basic_os=sysv3 3137ed541caSmrg ;; 3147ed541caSmrg dicos) 3157ed541caSmrg basic_machine=i686-pc 3167ed541caSmrg basic_os=dicos 3177ed541caSmrg ;; 3187ed541caSmrg djgpp) 3197ed541caSmrg basic_machine=i586-pc 3207ed541caSmrg basic_os=msdosdjgpp 3217ed541caSmrg ;; 3227ed541caSmrg ebmon29k) 3237ed541caSmrg basic_machine=a29k-amd 3247ed541caSmrg basic_os=ebmon 3257ed541caSmrg ;; 3267ed541caSmrg es1800 | OSE68k | ose68k | ose | OSE) 3277ed541caSmrg basic_machine=m68k-ericsson 3287ed541caSmrg basic_os=ose 3297ed541caSmrg ;; 3307ed541caSmrg gmicro) 3317ed541caSmrg basic_machine=tron-gmicro 3327ed541caSmrg basic_os=sysv 3337ed541caSmrg ;; 3347ed541caSmrg go32) 3357ed541caSmrg basic_machine=i386-pc 3367ed541caSmrg basic_os=go32 3377ed541caSmrg ;; 3387ed541caSmrg h8300hms) 3397ed541caSmrg basic_machine=h8300-hitachi 3407ed541caSmrg basic_os=hms 3417ed541caSmrg ;; 3427ed541caSmrg h8300xray) 3437ed541caSmrg basic_machine=h8300-hitachi 3447ed541caSmrg basic_os=xray 3457ed541caSmrg ;; 3467ed541caSmrg h8500hms) 3477ed541caSmrg basic_machine=h8500-hitachi 3487ed541caSmrg basic_os=hms 3497ed541caSmrg ;; 3507ed541caSmrg harris) 3517ed541caSmrg basic_machine=m88k-harris 3527ed541caSmrg basic_os=sysv3 3537ed541caSmrg ;; 3547ed541caSmrg hp300 | hp300hpux) 3557ed541caSmrg basic_machine=m68k-hp 3567ed541caSmrg basic_os=hpux 3577ed541caSmrg ;; 3587ed541caSmrg hp300bsd) 3597ed541caSmrg basic_machine=m68k-hp 3607ed541caSmrg basic_os=bsd 3617ed541caSmrg ;; 3627ed541caSmrg hppaosf) 3637ed541caSmrg basic_machine=hppa1.1-hp 3647ed541caSmrg basic_os=osf 3657ed541caSmrg ;; 3667ed541caSmrg hppro) 3677ed541caSmrg basic_machine=hppa1.1-hp 3687ed541caSmrg basic_os=proelf 3697ed541caSmrg ;; 3707ed541caSmrg i386mach) 3717ed541caSmrg basic_machine=i386-mach 3727ed541caSmrg basic_os=mach 3737ed541caSmrg ;; 3747ed541caSmrg isi68 | isi) 3757ed541caSmrg basic_machine=m68k-isi 3767ed541caSmrg basic_os=sysv 3777ed541caSmrg ;; 3787ed541caSmrg m68knommu) 3797ed541caSmrg basic_machine=m68k-unknown 3807ed541caSmrg basic_os=linux 3817ed541caSmrg ;; 3827ed541caSmrg magnum | m3230) 3837ed541caSmrg basic_machine=mips-mips 3847ed541caSmrg basic_os=sysv 3857ed541caSmrg ;; 3867ed541caSmrg merlin) 3877ed541caSmrg basic_machine=ns32k-utek 3887ed541caSmrg basic_os=sysv 3897ed541caSmrg ;; 3907ed541caSmrg mingw64) 3917ed541caSmrg basic_machine=x86_64-pc 3927ed541caSmrg basic_os=mingw64 3937ed541caSmrg ;; 3947ed541caSmrg mingw32) 3957ed541caSmrg basic_machine=i686-pc 3967ed541caSmrg basic_os=mingw32 3977ed541caSmrg ;; 3987ed541caSmrg mingw32ce) 3997ed541caSmrg basic_machine=arm-unknown 4007ed541caSmrg basic_os=mingw32ce 4017ed541caSmrg ;; 4027ed541caSmrg monitor) 4037ed541caSmrg basic_machine=m68k-rom68k 4047ed541caSmrg basic_os=coff 4057ed541caSmrg ;; 4067ed541caSmrg morphos) 4077ed541caSmrg basic_machine=powerpc-unknown 4087ed541caSmrg basic_os=morphos 4097ed541caSmrg ;; 4107ed541caSmrg moxiebox) 4117ed541caSmrg basic_machine=moxie-unknown 4127ed541caSmrg basic_os=moxiebox 4137ed541caSmrg ;; 4147ed541caSmrg msdos) 4157ed541caSmrg basic_machine=i386-pc 4167ed541caSmrg basic_os=msdos 4177ed541caSmrg ;; 4187ed541caSmrg msys) 4197ed541caSmrg basic_machine=i686-pc 4207ed541caSmrg basic_os=msys 4217ed541caSmrg ;; 4227ed541caSmrg mvs) 4237ed541caSmrg basic_machine=i370-ibm 4247ed541caSmrg basic_os=mvs 4257ed541caSmrg ;; 4267ed541caSmrg nacl) 4277ed541caSmrg basic_machine=le32-unknown 4287ed541caSmrg basic_os=nacl 4297ed541caSmrg ;; 4307ed541caSmrg ncr3000) 4317ed541caSmrg basic_machine=i486-ncr 4327ed541caSmrg basic_os=sysv4 4337ed541caSmrg ;; 4347ed541caSmrg netbsd386) 4357ed541caSmrg basic_machine=i386-pc 4367ed541caSmrg basic_os=netbsd 4377ed541caSmrg ;; 4387ed541caSmrg netwinder) 4397ed541caSmrg basic_machine=armv4l-rebel 4407ed541caSmrg basic_os=linux 4417ed541caSmrg ;; 4427ed541caSmrg news | news700 | news800 | news900) 4437ed541caSmrg basic_machine=m68k-sony 4447ed541caSmrg basic_os=newsos 4457ed541caSmrg ;; 4467ed541caSmrg news1000) 4477ed541caSmrg basic_machine=m68030-sony 4487ed541caSmrg basic_os=newsos 4497ed541caSmrg ;; 4507ed541caSmrg necv70) 4517ed541caSmrg basic_machine=v70-nec 4527ed541caSmrg basic_os=sysv 4537ed541caSmrg ;; 4547ed541caSmrg nh3000) 4557ed541caSmrg basic_machine=m68k-harris 4567ed541caSmrg basic_os=cxux 4577ed541caSmrg ;; 4587ed541caSmrg nh[45]000) 4597ed541caSmrg basic_machine=m88k-harris 4607ed541caSmrg basic_os=cxux 4617ed541caSmrg ;; 4627ed541caSmrg nindy960) 4637ed541caSmrg basic_machine=i960-intel 4647ed541caSmrg basic_os=nindy 4657ed541caSmrg ;; 4667ed541caSmrg mon960) 4677ed541caSmrg basic_machine=i960-intel 4687ed541caSmrg basic_os=mon960 4697ed541caSmrg ;; 4707ed541caSmrg nonstopux) 4717ed541caSmrg basic_machine=mips-compaq 4727ed541caSmrg basic_os=nonstopux 4737ed541caSmrg ;; 4747ed541caSmrg os400) 4757ed541caSmrg basic_machine=powerpc-ibm 4767ed541caSmrg basic_os=os400 4777ed541caSmrg ;; 4787ed541caSmrg OSE68000 | ose68000) 4797ed541caSmrg basic_machine=m68000-ericsson 4807ed541caSmrg basic_os=ose 4817ed541caSmrg ;; 4827ed541caSmrg os68k) 4837ed541caSmrg basic_machine=m68k-none 4847ed541caSmrg basic_os=os68k 4857ed541caSmrg ;; 4867ed541caSmrg paragon) 4877ed541caSmrg basic_machine=i860-intel 4887ed541caSmrg basic_os=osf 4897ed541caSmrg ;; 4907ed541caSmrg parisc) 4917ed541caSmrg basic_machine=hppa-unknown 4927ed541caSmrg basic_os=linux 4937ed541caSmrg ;; 4947ed541caSmrg psp) 4957ed541caSmrg basic_machine=mipsallegrexel-sony 4967ed541caSmrg basic_os=psp 4977ed541caSmrg ;; 4987ed541caSmrg pw32) 4997ed541caSmrg basic_machine=i586-unknown 5007ed541caSmrg basic_os=pw32 5017ed541caSmrg ;; 5027ed541caSmrg rdos | rdos64) 5037ed541caSmrg basic_machine=x86_64-pc 5047ed541caSmrg basic_os=rdos 5057ed541caSmrg ;; 5067ed541caSmrg rdos32) 5077ed541caSmrg basic_machine=i386-pc 5087ed541caSmrg basic_os=rdos 5097ed541caSmrg ;; 5107ed541caSmrg rom68k) 5117ed541caSmrg basic_machine=m68k-rom68k 5127ed541caSmrg basic_os=coff 5137ed541caSmrg ;; 5147ed541caSmrg sa29200) 5157ed541caSmrg basic_machine=a29k-amd 5167ed541caSmrg basic_os=udi 5177ed541caSmrg ;; 5187ed541caSmrg sei) 5197ed541caSmrg basic_machine=mips-sei 5207ed541caSmrg basic_os=seiux 5217ed541caSmrg ;; 5227ed541caSmrg sequent) 5237ed541caSmrg basic_machine=i386-sequent 5247ed541caSmrg basic_os= 5257ed541caSmrg ;; 5267ed541caSmrg sps7) 5277ed541caSmrg basic_machine=m68k-bull 5287ed541caSmrg basic_os=sysv2 5297ed541caSmrg ;; 5307ed541caSmrg st2000) 5317ed541caSmrg basic_machine=m68k-tandem 5327ed541caSmrg basic_os= 5337ed541caSmrg ;; 5347ed541caSmrg stratus) 5357ed541caSmrg basic_machine=i860-stratus 5367ed541caSmrg basic_os=sysv4 5377ed541caSmrg ;; 5387ed541caSmrg sun2) 5397ed541caSmrg basic_machine=m68000-sun 5407ed541caSmrg basic_os= 5417ed541caSmrg ;; 5427ed541caSmrg sun2os3) 5437ed541caSmrg basic_machine=m68000-sun 5447ed541caSmrg basic_os=sunos3 5457ed541caSmrg ;; 5467ed541caSmrg sun2os4) 5477ed541caSmrg basic_machine=m68000-sun 5487ed541caSmrg basic_os=sunos4 5497ed541caSmrg ;; 5507ed541caSmrg sun3) 5517ed541caSmrg basic_machine=m68k-sun 5527ed541caSmrg basic_os= 5537ed541caSmrg ;; 5547ed541caSmrg sun3os3) 5557ed541caSmrg basic_machine=m68k-sun 5567ed541caSmrg basic_os=sunos3 5577ed541caSmrg ;; 5587ed541caSmrg sun3os4) 5597ed541caSmrg basic_machine=m68k-sun 5607ed541caSmrg basic_os=sunos4 5617ed541caSmrg ;; 5627ed541caSmrg sun4) 5637ed541caSmrg basic_machine=sparc-sun 5647ed541caSmrg basic_os= 5657ed541caSmrg ;; 5667ed541caSmrg sun4os3) 5677ed541caSmrg basic_machine=sparc-sun 5687ed541caSmrg basic_os=sunos3 5697ed541caSmrg ;; 5707ed541caSmrg sun4os4) 5717ed541caSmrg basic_machine=sparc-sun 5727ed541caSmrg basic_os=sunos4 5737ed541caSmrg ;; 5747ed541caSmrg sun4sol2) 5757ed541caSmrg basic_machine=sparc-sun 5767ed541caSmrg basic_os=solaris2 5777ed541caSmrg ;; 5787ed541caSmrg sun386 | sun386i | roadrunner) 5797ed541caSmrg basic_machine=i386-sun 5807ed541caSmrg basic_os= 5817ed541caSmrg ;; 5827ed541caSmrg sv1) 5837ed541caSmrg basic_machine=sv1-cray 5847ed541caSmrg basic_os=unicos 5857ed541caSmrg ;; 5867ed541caSmrg symmetry) 5877ed541caSmrg basic_machine=i386-sequent 5887ed541caSmrg basic_os=dynix 5897ed541caSmrg ;; 5907ed541caSmrg t3e) 5917ed541caSmrg basic_machine=alphaev5-cray 5927ed541caSmrg basic_os=unicos 5937ed541caSmrg ;; 5947ed541caSmrg t90) 5957ed541caSmrg basic_machine=t90-cray 5967ed541caSmrg basic_os=unicos 5977ed541caSmrg ;; 5987ed541caSmrg toad1) 5997ed541caSmrg basic_machine=pdp10-xkl 6007ed541caSmrg basic_os=tops20 6017ed541caSmrg ;; 6027ed541caSmrg tpf) 6037ed541caSmrg basic_machine=s390x-ibm 6047ed541caSmrg basic_os=tpf 6057ed541caSmrg ;; 6067ed541caSmrg udi29k) 6077ed541caSmrg basic_machine=a29k-amd 6087ed541caSmrg basic_os=udi 6097ed541caSmrg ;; 6107ed541caSmrg ultra3) 6117ed541caSmrg basic_machine=a29k-nyu 6127ed541caSmrg basic_os=sym1 6137ed541caSmrg ;; 6147ed541caSmrg v810 | necv810) 6157ed541caSmrg basic_machine=v810-nec 6167ed541caSmrg basic_os=none 6177ed541caSmrg ;; 6187ed541caSmrg vaxv) 6197ed541caSmrg basic_machine=vax-dec 6207ed541caSmrg basic_os=sysv 6217ed541caSmrg ;; 6227ed541caSmrg vms) 6237ed541caSmrg basic_machine=vax-dec 6247ed541caSmrg basic_os=vms 6257ed541caSmrg ;; 6267ed541caSmrg vsta) 6277ed541caSmrg basic_machine=i386-pc 6287ed541caSmrg basic_os=vsta 6297ed541caSmrg ;; 6307ed541caSmrg vxworks960) 6317ed541caSmrg basic_machine=i960-wrs 6327ed541caSmrg basic_os=vxworks 6337ed541caSmrg ;; 6347ed541caSmrg vxworks68) 6357ed541caSmrg basic_machine=m68k-wrs 6367ed541caSmrg basic_os=vxworks 6377ed541caSmrg ;; 6387ed541caSmrg vxworks29k) 6397ed541caSmrg basic_machine=a29k-wrs 6407ed541caSmrg basic_os=vxworks 6417ed541caSmrg ;; 6427ed541caSmrg xbox) 6437ed541caSmrg basic_machine=i686-pc 6447ed541caSmrg basic_os=mingw32 6457ed541caSmrg ;; 6467ed541caSmrg ymp) 6477ed541caSmrg basic_machine=ymp-cray 6487ed541caSmrg basic_os=unicos 6497ed541caSmrg ;; 6507ed541caSmrg *) 6517ed541caSmrg basic_machine=$1 6527ed541caSmrg basic_os= 6537ed541caSmrg ;; 6547ed541caSmrg esac 65572b4363aSmrg ;; 65672b4363aSmrgesac 65772b4363aSmrg 6587ed541caSmrg# Decode 1-component or ad-hoc basic machines 65972b4363aSmrgcase $basic_machine in 6607ed541caSmrg # Here we handle the default manufacturer of certain CPU types. It is in 6617ed541caSmrg # some cases the only manufacturer, in others, it is the most popular. 6627ed541caSmrg w89k) 6637ed541caSmrg cpu=hppa1.1 6647ed541caSmrg vendor=winbond 66533dddc75Smrg ;; 6667ed541caSmrg op50n) 6677ed541caSmrg cpu=hppa1.1 6687ed541caSmrg vendor=oki 66972b4363aSmrg ;; 6707ed541caSmrg op60c) 6717ed541caSmrg cpu=hppa1.1 6727ed541caSmrg vendor=oki 67372b4363aSmrg ;; 6747ed541caSmrg ibm*) 6757ed541caSmrg cpu=i370 6767ed541caSmrg vendor=ibm 67772b4363aSmrg ;; 6787ed541caSmrg orion105) 6797ed541caSmrg cpu=clipper 6807ed541caSmrg vendor=highlevel 68133dddc75Smrg ;; 6827ed541caSmrg mac | mpw | mac-mpw) 6837ed541caSmrg cpu=m68k 6847ed541caSmrg vendor=apple 68533dddc75Smrg ;; 6867ed541caSmrg pmac | pmac-mpw) 6877ed541caSmrg cpu=powerpc 6887ed541caSmrg vendor=apple 68933dddc75Smrg ;; 69033dddc75Smrg 69172b4363aSmrg # Recognize the various machine names and aliases which stand 69272b4363aSmrg # for a CPU type and a company and sometimes even an OS. 69372b4363aSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6947ed541caSmrg cpu=m68000 6957ed541caSmrg vendor=att 69672b4363aSmrg ;; 69772b4363aSmrg 3b*) 6987ed541caSmrg cpu=we32k 6997ed541caSmrg vendor=att 700dd77ae96Smrg ;; 70108e312fdSmrg bluegene*) 7027ed541caSmrg cpu=powerpc 7037ed541caSmrg vendor=ibm 7047ed541caSmrg basic_os=cnk 70572b4363aSmrg ;; 70672b4363aSmrg decsystem10* | dec10*) 7077ed541caSmrg cpu=pdp10 7087ed541caSmrg vendor=dec 7097ed541caSmrg basic_os=tops10 71072b4363aSmrg ;; 71172b4363aSmrg decsystem20* | dec20*) 7127ed541caSmrg cpu=pdp10 7137ed541caSmrg vendor=dec 7147ed541caSmrg basic_os=tops20 71572b4363aSmrg ;; 71672b4363aSmrg delta | 3300 | motorola-3300 | motorola-delta \ 71772b4363aSmrg | 3300-motorola | delta-motorola) 7187ed541caSmrg cpu=m68k 7197ed541caSmrg vendor=motorola 72072b4363aSmrg ;; 7217ed541caSmrg dpx2*) 7227ed541caSmrg cpu=m68k 7237ed541caSmrg vendor=bull 7247ed541caSmrg basic_os=sysv3 72572b4363aSmrg ;; 72672b4363aSmrg encore | umax | mmax) 7277ed541caSmrg cpu=ns32k 7287ed541caSmrg vendor=encore 72972b4363aSmrg ;; 7307ed541caSmrg elxsi) 7317ed541caSmrg cpu=elxsi 7327ed541caSmrg vendor=elxsi 7337ed541caSmrg basic_os=${basic_os:-bsd} 73472b4363aSmrg ;; 73572b4363aSmrg fx2800) 7367ed541caSmrg cpu=i860 7377ed541caSmrg vendor=alliant 73872b4363aSmrg ;; 73972b4363aSmrg genix) 7407ed541caSmrg cpu=ns32k 7417ed541caSmrg vendor=ns 74272b4363aSmrg ;; 74372b4363aSmrg h3050r* | hiux*) 7447ed541caSmrg cpu=hppa1.1 7457ed541caSmrg vendor=hitachi 7467ed541caSmrg basic_os=hiuxwe2 74772b4363aSmrg ;; 74872b4363aSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7497ed541caSmrg cpu=hppa1.0 7507ed541caSmrg vendor=hp 75172b4363aSmrg ;; 75272b4363aSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7537ed541caSmrg cpu=m68000 7547ed541caSmrg vendor=hp 75572b4363aSmrg ;; 75672b4363aSmrg hp9k3[2-9][0-9]) 7577ed541caSmrg cpu=m68k 7587ed541caSmrg vendor=hp 75972b4363aSmrg ;; 76072b4363aSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7617ed541caSmrg cpu=hppa1.0 7627ed541caSmrg vendor=hp 76372b4363aSmrg ;; 76472b4363aSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7657ed541caSmrg cpu=hppa1.1 7667ed541caSmrg vendor=hp 76772b4363aSmrg ;; 76872b4363aSmrg hp9k78[0-9] | hp78[0-9]) 76972b4363aSmrg # FIXME: really hppa2.0-hp 7707ed541caSmrg cpu=hppa1.1 7717ed541caSmrg vendor=hp 77272b4363aSmrg ;; 77372b4363aSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77472b4363aSmrg # FIXME: really hppa2.0-hp 7757ed541caSmrg cpu=hppa1.1 7767ed541caSmrg vendor=hp 77772b4363aSmrg ;; 77872b4363aSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7797ed541caSmrg cpu=hppa1.1 7807ed541caSmrg vendor=hp 78172b4363aSmrg ;; 78272b4363aSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7837ed541caSmrg cpu=hppa1.0 7847ed541caSmrg vendor=hp 78572b4363aSmrg ;; 78672b4363aSmrg i*86v32) 7877ed541caSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7887ed541caSmrg vendor=pc 7897ed541caSmrg basic_os=sysv32 79072b4363aSmrg ;; 79172b4363aSmrg i*86v4*) 7927ed541caSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7937ed541caSmrg vendor=pc 7947ed541caSmrg basic_os=sysv4 79572b4363aSmrg ;; 79672b4363aSmrg i*86v) 7977ed541caSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7987ed541caSmrg vendor=pc 7997ed541caSmrg basic_os=sysv 80072b4363aSmrg ;; 80172b4363aSmrg i*86sol2) 8027ed541caSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8037ed541caSmrg vendor=pc 8047ed541caSmrg basic_os=solaris2 80572b4363aSmrg ;; 8067ed541caSmrg j90 | j90-cray) 8077ed541caSmrg cpu=j90 8087ed541caSmrg vendor=cray 8097ed541caSmrg basic_os=${basic_os:-unicos} 81072b4363aSmrg ;; 81172b4363aSmrg iris | iris4d) 8127ed541caSmrg cpu=mips 8137ed541caSmrg vendor=sgi 8147ed541caSmrg case $basic_os in 8157ed541caSmrg irix*) 81672b4363aSmrg ;; 81772b4363aSmrg *) 8187ed541caSmrg basic_os=irix4 81972b4363aSmrg ;; 82072b4363aSmrg esac 82172b4363aSmrg ;; 82272b4363aSmrg miniframe) 8237ed541caSmrg cpu=m68000 8247ed541caSmrg vendor=convergent 82533dddc75Smrg ;; 8267ed541caSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8277ed541caSmrg cpu=m68k 8287ed541caSmrg vendor=atari 8297ed541caSmrg basic_os=mint 83072b4363aSmrg ;; 83172b4363aSmrg news-3600 | risc-news) 8327ed541caSmrg cpu=mips 8337ed541caSmrg vendor=sony 8347ed541caSmrg basic_os=newsos 8357ed541caSmrg ;; 8367ed541caSmrg next | m*-next) 8377ed541caSmrg cpu=m68k 8387ed541caSmrg vendor=next 8397ed541caSmrg case $basic_os in 8407ed541caSmrg openstep*) 8417ed541caSmrg ;; 8427ed541caSmrg nextstep*) 84372b4363aSmrg ;; 8447ed541caSmrg ns2*) 8457ed541caSmrg basic_os=nextstep2 84672b4363aSmrg ;; 84772b4363aSmrg *) 8487ed541caSmrg basic_os=nextstep3 84972b4363aSmrg ;; 85072b4363aSmrg esac 85172b4363aSmrg ;; 85272b4363aSmrg np1) 8537ed541caSmrg cpu=np1 8547ed541caSmrg vendor=gould 85572b4363aSmrg ;; 85672b4363aSmrg op50n-* | op60c-*) 8577ed541caSmrg cpu=hppa1.1 8587ed541caSmrg vendor=oki 8597ed541caSmrg basic_os=proelf 86072b4363aSmrg ;; 86172b4363aSmrg pa-hitachi) 8627ed541caSmrg cpu=hppa1.1 8637ed541caSmrg vendor=hitachi 8647ed541caSmrg basic_os=hiuxwe2 865dd77ae96Smrg ;; 86672b4363aSmrg pbd) 8677ed541caSmrg cpu=sparc 8687ed541caSmrg vendor=tti 86972b4363aSmrg ;; 87072b4363aSmrg pbb) 8717ed541caSmrg cpu=m68k 8727ed541caSmrg vendor=tti 87372b4363aSmrg ;; 8747ed541caSmrg pc532) 8757ed541caSmrg cpu=ns32k 8767ed541caSmrg vendor=pc532 87772b4363aSmrg ;; 87872b4363aSmrg pn) 8797ed541caSmrg cpu=pn 8807ed541caSmrg vendor=gould 88172b4363aSmrg ;; 8827ed541caSmrg power) 8837ed541caSmrg cpu=power 8847ed541caSmrg vendor=ibm 88572b4363aSmrg ;; 88672b4363aSmrg ps2) 8877ed541caSmrg cpu=i386 8887ed541caSmrg vendor=ibm 88972b4363aSmrg ;; 89072b4363aSmrg rm[46]00) 8917ed541caSmrg cpu=mips 8927ed541caSmrg vendor=siemens 89372b4363aSmrg ;; 89472b4363aSmrg rtpc | rtpc-*) 8957ed541caSmrg cpu=romp 8967ed541caSmrg vendor=ibm 89772b4363aSmrg ;; 8987ed541caSmrg sde) 8997ed541caSmrg cpu=mipsisa32 9007ed541caSmrg vendor=sde 9017ed541caSmrg basic_os=${basic_os:-elf} 90272b4363aSmrg ;; 9037ed541caSmrg simso-wrs) 9047ed541caSmrg cpu=sparclite 9057ed541caSmrg vendor=wrs 9067ed541caSmrg basic_os=vxworks 90772b4363aSmrg ;; 9087ed541caSmrg tower | tower-32) 9097ed541caSmrg cpu=m68k 9107ed541caSmrg vendor=ncr 91172b4363aSmrg ;; 9127ed541caSmrg vpp*|vx|vx-*) 9137ed541caSmrg cpu=f301 9147ed541caSmrg vendor=fujitsu 91572b4363aSmrg ;; 9167ed541caSmrg w65) 9177ed541caSmrg cpu=w65 9187ed541caSmrg vendor=wdc 91972b4363aSmrg ;; 9207ed541caSmrg w89k-*) 9217ed541caSmrg cpu=hppa1.1 9227ed541caSmrg vendor=winbond 9237ed541caSmrg basic_os=proelf 92472b4363aSmrg ;; 9257ed541caSmrg none) 9267ed541caSmrg cpu=none 9277ed541caSmrg vendor=none 928dd77ae96Smrg ;; 9297ed541caSmrg leon|leon[3-9]) 9307ed541caSmrg cpu=sparc 9317ed541caSmrg vendor=$basic_machine 93272b4363aSmrg ;; 9337ed541caSmrg leon-*|leon[3-9]-*) 9347ed541caSmrg cpu=sparc 9357ed541caSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 93672b4363aSmrg ;; 9377ed541caSmrg 9387ed541caSmrg *-*) 9397ed541caSmrg # shellcheck disable=SC2162 9407ed541caSmrg saved_IFS=$IFS 9417ed541caSmrg IFS="-" read cpu vendor <<EOF 9427ed541caSmrg$basic_machine 9437ed541caSmrgEOF 9447ed541caSmrg IFS=$saved_IFS 94572b4363aSmrg ;; 9467ed541caSmrg # We use `pc' rather than `unknown' 9477ed541caSmrg # because (1) that's what they normally are, and 9487ed541caSmrg # (2) the word "unknown" tends to confuse beginning users. 9497ed541caSmrg i*86 | x86_64) 9507ed541caSmrg cpu=$basic_machine 9517ed541caSmrg vendor=pc 95272b4363aSmrg ;; 9537ed541caSmrg # These rules are duplicated from below for sake of the special case above; 9547ed541caSmrg # i.e. things that normalized to x86 arches should also default to "pc" 9557ed541caSmrg pc98) 9567ed541caSmrg cpu=i386 9577ed541caSmrg vendor=pc 95872b4363aSmrg ;; 9597ed541caSmrg x64 | amd64) 9607ed541caSmrg cpu=x86_64 9617ed541caSmrg vendor=pc 96272b4363aSmrg ;; 9637ed541caSmrg # Recognize the basic CPU types without company name. 9647ed541caSmrg *) 9657ed541caSmrg cpu=$basic_machine 9667ed541caSmrg vendor=unknown 96733dddc75Smrg ;; 9687ed541caSmrgesac 9697ed541caSmrg 9707ed541caSmrgunset -v basic_machine 9717ed541caSmrg 9727ed541caSmrg# Decode basic machines in the full and proper CPU-Company form. 9737ed541caSmrgcase $cpu-$vendor in 9747ed541caSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9757ed541caSmrg # some cases the only manufacturer, in others, it is the most popular. 9767ed541caSmrg craynv-unknown) 9777ed541caSmrg vendor=cray 9787ed541caSmrg basic_os=${basic_os:-unicosmp} 97972b4363aSmrg ;; 9807ed541caSmrg c90-unknown | c90-cray) 9817ed541caSmrg vendor=cray 9827ed541caSmrg basic_os=${Basic_os:-unicos} 98372b4363aSmrg ;; 9847ed541caSmrg fx80-unknown) 9857ed541caSmrg vendor=alliant 98672b4363aSmrg ;; 9877ed541caSmrg romp-unknown) 9887ed541caSmrg vendor=ibm 98972b4363aSmrg ;; 9907ed541caSmrg mmix-unknown) 9917ed541caSmrg vendor=knuth 99272b4363aSmrg ;; 9937ed541caSmrg microblaze-unknown | microblazeel-unknown) 9947ed541caSmrg vendor=xilinx 99572b4363aSmrg ;; 9967ed541caSmrg rs6000-unknown) 9977ed541caSmrg vendor=ibm 99872b4363aSmrg ;; 9997ed541caSmrg vax-unknown) 10007ed541caSmrg vendor=dec 100172b4363aSmrg ;; 10027ed541caSmrg pdp11-unknown) 10037ed541caSmrg vendor=dec 100472b4363aSmrg ;; 10057ed541caSmrg we32k-unknown) 10067ed541caSmrg vendor=att 100772b4363aSmrg ;; 10087ed541caSmrg cydra-unknown) 10097ed541caSmrg vendor=cydrome 101072b4363aSmrg ;; 10117ed541caSmrg i370-ibm*) 10127ed541caSmrg vendor=ibm 101372b4363aSmrg ;; 10147ed541caSmrg orion-unknown) 10157ed541caSmrg vendor=highlevel 101672b4363aSmrg ;; 10177ed541caSmrg xps-unknown | xps100-unknown) 10187ed541caSmrg cpu=xps100 10197ed541caSmrg vendor=honeywell 102072b4363aSmrg ;; 10217ed541caSmrg 10227ed541caSmrg # Here we normalize CPU types with a missing or matching vendor 10237ed541caSmrg dpx20-unknown | dpx20-bull) 10247ed541caSmrg cpu=rs6000 10257ed541caSmrg vendor=bull 10267ed541caSmrg basic_os=${basic_os:-bosx} 102772b4363aSmrg ;; 10287ed541caSmrg 10297ed541caSmrg # Here we normalize CPU types irrespective of the vendor 10307ed541caSmrg amd64-*) 10317ed541caSmrg cpu=x86_64 1032dd77ae96Smrg ;; 10337ed541caSmrg blackfin-*) 10347ed541caSmrg cpu=bfin 10357ed541caSmrg basic_os=linux 103672b4363aSmrg ;; 10377ed541caSmrg c54x-*) 10387ed541caSmrg cpu=tic54x 103972b4363aSmrg ;; 10407ed541caSmrg c55x-*) 10417ed541caSmrg cpu=tic55x 104272b4363aSmrg ;; 10437ed541caSmrg c6x-*) 10447ed541caSmrg cpu=tic6x 104572b4363aSmrg ;; 10467ed541caSmrg e500v[12]-*) 10477ed541caSmrg cpu=powerpc 10487ed541caSmrg basic_os=${basic_os}"spe" 104972b4363aSmrg ;; 10507ed541caSmrg mips3*-*) 10517ed541caSmrg cpu=mips64 105272b4363aSmrg ;; 10537ed541caSmrg ms1-*) 10547ed541caSmrg cpu=mt 105572b4363aSmrg ;; 10567ed541caSmrg m68knommu-*) 10577ed541caSmrg cpu=m68k 10587ed541caSmrg basic_os=linux 105972b4363aSmrg ;; 10607ed541caSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10617ed541caSmrg cpu=s12z 106272b4363aSmrg ;; 10637ed541caSmrg openrisc-*) 10647ed541caSmrg cpu=or32 106572b4363aSmrg ;; 10667ed541caSmrg parisc-*) 10677ed541caSmrg cpu=hppa 10687ed541caSmrg basic_os=linux 106972b4363aSmrg ;; 10707ed541caSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10717ed541caSmrg cpu=i586 107272b4363aSmrg ;; 10737ed541caSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 10747ed541caSmrg cpu=i686 107572b4363aSmrg ;; 10767ed541caSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10777ed541caSmrg cpu=i686 107872b4363aSmrg ;; 10797ed541caSmrg pentium4-*) 10807ed541caSmrg cpu=i786 108172b4363aSmrg ;; 10827ed541caSmrg pc98-*) 10837ed541caSmrg cpu=i386 108472b4363aSmrg ;; 10857ed541caSmrg ppc-* | ppcbe-*) 10867ed541caSmrg cpu=powerpc 108772b4363aSmrg ;; 10887ed541caSmrg ppcle-* | powerpclittle-*) 10897ed541caSmrg cpu=powerpcle 109072b4363aSmrg ;; 10917ed541caSmrg ppc64-*) 10927ed541caSmrg cpu=powerpc64 109333dddc75Smrg ;; 10947ed541caSmrg ppc64le-* | powerpc64little-*) 10957ed541caSmrg cpu=powerpc64le 109672b4363aSmrg ;; 10977ed541caSmrg sb1-*) 10987ed541caSmrg cpu=mipsisa64sb1 109972b4363aSmrg ;; 11007ed541caSmrg sb1el-*) 11017ed541caSmrg cpu=mipsisa64sb1el 1102dd77ae96Smrg ;; 11037ed541caSmrg sh5e[lb]-*) 11047ed541caSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 110572b4363aSmrg ;; 11067ed541caSmrg spur-*) 11077ed541caSmrg cpu=spur 110872b4363aSmrg ;; 11097ed541caSmrg strongarm-* | thumb-*) 11107ed541caSmrg cpu=arm 111172b4363aSmrg ;; 11127ed541caSmrg tx39-*) 11137ed541caSmrg cpu=mipstx39 111472b4363aSmrg ;; 11157ed541caSmrg tx39el-*) 11167ed541caSmrg cpu=mipstx39el 111772b4363aSmrg ;; 11187ed541caSmrg x64-*) 11197ed541caSmrg cpu=x86_64 112072b4363aSmrg ;; 11217ed541caSmrg xscale-* | xscalee[bl]-*) 11227ed541caSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112372b4363aSmrg ;; 11247ed541caSmrg arm64-*) 11257ed541caSmrg cpu=aarch64 112672b4363aSmrg ;; 11277ed541caSmrg 11287ed541caSmrg # Recognize the canonical CPU Types that limit and/or modify the 11297ed541caSmrg # company names they are paired with. 11307ed541caSmrg cr16-*) 11317ed541caSmrg basic_os=${basic_os:-elf} 113272b4363aSmrg ;; 11337ed541caSmrg crisv32-* | etraxfs*-*) 11347ed541caSmrg cpu=crisv32 11357ed541caSmrg vendor=axis 113672b4363aSmrg ;; 11377ed541caSmrg cris-* | etrax*-*) 11387ed541caSmrg cpu=cris 11397ed541caSmrg vendor=axis 114072b4363aSmrg ;; 11417ed541caSmrg crx-*) 11427ed541caSmrg basic_os=${basic_os:-elf} 114372b4363aSmrg ;; 11447ed541caSmrg neo-tandem) 11457ed541caSmrg cpu=neo 11467ed541caSmrg vendor=tandem 114772b4363aSmrg ;; 11487ed541caSmrg nse-tandem) 11497ed541caSmrg cpu=nse 11507ed541caSmrg vendor=tandem 115172b4363aSmrg ;; 11527ed541caSmrg nsr-tandem) 11537ed541caSmrg cpu=nsr 11547ed541caSmrg vendor=tandem 115572b4363aSmrg ;; 11567ed541caSmrg nsv-tandem) 11577ed541caSmrg cpu=nsv 11587ed541caSmrg vendor=tandem 115972b4363aSmrg ;; 11607ed541caSmrg nsx-tandem) 11617ed541caSmrg cpu=nsx 11627ed541caSmrg vendor=tandem 116372b4363aSmrg ;; 11647ed541caSmrg mipsallegrexel-sony) 11657ed541caSmrg cpu=mipsallegrexel 11667ed541caSmrg vendor=sony 116772b4363aSmrg ;; 11687ed541caSmrg tile*-*) 11697ed541caSmrg basic_os=${basic_os:-linux-gnu} 117072b4363aSmrg ;; 11717ed541caSmrg 117272b4363aSmrg *) 11737ed541caSmrg # Recognize the canonical CPU types that are allowed with any 11747ed541caSmrg # company name. 11757ed541caSmrg case $cpu in 11767ed541caSmrg 1750a | 580 \ 11777ed541caSmrg | a29k \ 11787ed541caSmrg | aarch64 | aarch64_be \ 11797ed541caSmrg | abacus \ 11807ed541caSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11817ed541caSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11827ed541caSmrg | alphapca5[67] | alpha64pca5[67] \ 11837ed541caSmrg | am33_2.0 \ 11847ed541caSmrg | amdgcn \ 11857ed541caSmrg | arc | arceb | arc32 | arc64 \ 11867ed541caSmrg | arm | arm[lb]e | arme[lb] | armv* \ 11877ed541caSmrg | avr | avr32 \ 11887ed541caSmrg | asmjs \ 11897ed541caSmrg | ba \ 11907ed541caSmrg | be32 | be64 \ 11917ed541caSmrg | bfin | bpf | bs2000 \ 11927ed541caSmrg | c[123]* | c30 | [cjt]90 | c4x \ 11937ed541caSmrg | c8051 | clipper | craynv | csky | cydra \ 11947ed541caSmrg | d10v | d30v | dlx | dsp16xx \ 11957ed541caSmrg | e2k | elxsi | epiphany \ 11967ed541caSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 11977ed541caSmrg | h8300 | h8500 \ 11987ed541caSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 11997ed541caSmrg | hexagon \ 12007ed541caSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12017ed541caSmrg | ip2k | iq2000 \ 12027ed541caSmrg | k1om \ 12037ed541caSmrg | le32 | le64 \ 12047ed541caSmrg | lm32 \ 12057ed541caSmrg | loongarch32 | loongarch64 | loongarchx32 \ 12067ed541caSmrg | m32c | m32r | m32rle \ 12077ed541caSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12087ed541caSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12097ed541caSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12107ed541caSmrg | microblaze | microblazeel \ 12117ed541caSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12127ed541caSmrg | mips16 \ 12137ed541caSmrg | mips64 | mips64eb | mips64el \ 12147ed541caSmrg | mips64octeon | mips64octeonel \ 12157ed541caSmrg | mips64orion | mips64orionel \ 12167ed541caSmrg | mips64r5900 | mips64r5900el \ 12177ed541caSmrg | mips64vr | mips64vrel \ 12187ed541caSmrg | mips64vr4100 | mips64vr4100el \ 12197ed541caSmrg | mips64vr4300 | mips64vr4300el \ 12207ed541caSmrg | mips64vr5000 | mips64vr5000el \ 12217ed541caSmrg | mips64vr5900 | mips64vr5900el \ 12227ed541caSmrg | mipsisa32 | mipsisa32el \ 12237ed541caSmrg | mipsisa32r2 | mipsisa32r2el \ 12247ed541caSmrg | mipsisa32r3 | mipsisa32r3el \ 12257ed541caSmrg | mipsisa32r5 | mipsisa32r5el \ 12267ed541caSmrg | mipsisa32r6 | mipsisa32r6el \ 12277ed541caSmrg | mipsisa64 | mipsisa64el \ 12287ed541caSmrg | mipsisa64r2 | mipsisa64r2el \ 12297ed541caSmrg | mipsisa64r3 | mipsisa64r3el \ 12307ed541caSmrg | mipsisa64r5 | mipsisa64r5el \ 12317ed541caSmrg | mipsisa64r6 | mipsisa64r6el \ 12327ed541caSmrg | mipsisa64sb1 | mipsisa64sb1el \ 12337ed541caSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 12347ed541caSmrg | mipsr5900 | mipsr5900el \ 12357ed541caSmrg | mipstx39 | mipstx39el \ 12367ed541caSmrg | mmix \ 12377ed541caSmrg | mn10200 | mn10300 \ 12387ed541caSmrg | moxie \ 12397ed541caSmrg | mt \ 12407ed541caSmrg | msp430 \ 12417ed541caSmrg | nds32 | nds32le | nds32be \ 12427ed541caSmrg | nfp \ 12437ed541caSmrg | nios | nios2 | nios2eb | nios2el \ 12447ed541caSmrg | none | np1 | ns16k | ns32k | nvptx \ 12457ed541caSmrg | open8 \ 12467ed541caSmrg | or1k* \ 12477ed541caSmrg | or32 \ 12487ed541caSmrg | orion \ 12497ed541caSmrg | picochip \ 12507ed541caSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12517ed541caSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12527ed541caSmrg | pru \ 12537ed541caSmrg | pyramid \ 12547ed541caSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12557ed541caSmrg | rl78 | romp | rs6000 | rx \ 12567ed541caSmrg | s390 | s390x \ 12577ed541caSmrg | score \ 12587ed541caSmrg | sh | shl \ 12597ed541caSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12607ed541caSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12617ed541caSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12627ed541caSmrg | sparclite \ 12637ed541caSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12647ed541caSmrg | spu \ 12657ed541caSmrg | tahoe \ 12667ed541caSmrg | thumbv7* \ 12677ed541caSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12687ed541caSmrg | tron \ 12697ed541caSmrg | ubicom32 \ 12707ed541caSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12717ed541caSmrg | vax \ 12727ed541caSmrg | visium \ 12737ed541caSmrg | w65 \ 12747ed541caSmrg | wasm32 | wasm64 \ 12757ed541caSmrg | we32k \ 12767ed541caSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12777ed541caSmrg | xstormy16 | xtensa* \ 12787ed541caSmrg | ymp \ 12797ed541caSmrg | z8k | z80) 12807ed541caSmrg ;; 12817ed541caSmrg 12827ed541caSmrg *) 12837ed541caSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12847ed541caSmrg exit 1 12857ed541caSmrg ;; 12867ed541caSmrg esac 128772b4363aSmrg ;; 128872b4363aSmrgesac 128972b4363aSmrg 129072b4363aSmrg# Here we canonicalize certain aliases for manufacturers. 12917ed541caSmrgcase $vendor in 12927ed541caSmrg digital*) 12937ed541caSmrg vendor=dec 129472b4363aSmrg ;; 12957ed541caSmrg commodore*) 12967ed541caSmrg vendor=cbm 129772b4363aSmrg ;; 129872b4363aSmrg *) 129972b4363aSmrg ;; 130072b4363aSmrgesac 130172b4363aSmrg 130272b4363aSmrg# Decode manufacturer-specific aliases for certain operating systems. 130372b4363aSmrg 13047ed541caSmrgif test x$basic_os != x 130572b4363aSmrgthen 13067ed541caSmrg 13077ed541caSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 13087ed541caSmrg# set os. 13097ed541caSmrgcase $basic_os in 13107ed541caSmrg gnu/linux*) 13117ed541caSmrg kernel=linux 13127ed541caSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13137ed541caSmrg ;; 13147ed541caSmrg os2-emx) 13157ed541caSmrg kernel=os2 13167ed541caSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13177ed541caSmrg ;; 13187ed541caSmrg nto-qnx*) 13197ed541caSmrg kernel=nto 13207ed541caSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13217ed541caSmrg ;; 13227ed541caSmrg *-*) 13237ed541caSmrg # shellcheck disable=SC2162 13247ed541caSmrg saved_IFS=$IFS 13257ed541caSmrg IFS="-" read kernel os <<EOF 13267ed541caSmrg$basic_os 13277ed541caSmrgEOF 13287ed541caSmrg IFS=$saved_IFS 13297ed541caSmrg ;; 13307ed541caSmrg # Default OS when just kernel was specified 13317ed541caSmrg nto*) 13327ed541caSmrg kernel=nto 13337ed541caSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13347ed541caSmrg ;; 13357ed541caSmrg linux*) 13367ed541caSmrg kernel=linux 13377ed541caSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13387ed541caSmrg ;; 13397ed541caSmrg *) 13407ed541caSmrg kernel= 13417ed541caSmrg os=$basic_os 13427ed541caSmrg ;; 13437ed541caSmrgesac 13447ed541caSmrg 13457ed541caSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13467ed541caSmrg# etc.) 134772b4363aSmrgcase $os in 13487ed541caSmrg # First match some system type aliases that might get confused 13497ed541caSmrg # with valid system types. 13507ed541caSmrg # solaris* is a basic system type, with this one exception. 13517ed541caSmrg auroraux) 13527ed541caSmrg os=auroraux 135308e312fdSmrg ;; 13547ed541caSmrg bluegene*) 13557ed541caSmrg os=cnk 135672b4363aSmrg ;; 13577ed541caSmrg solaris1 | solaris1.*) 13587ed541caSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 135972b4363aSmrg ;; 13607ed541caSmrg solaris) 13617ed541caSmrg os=solaris2 136272b4363aSmrg ;; 13637ed541caSmrg unixware*) 13647ed541caSmrg os=sysv4.2uw 136572b4363aSmrg ;; 13667ed541caSmrg # es1800 is here to avoid being matched by es* (a different OS) 13677ed541caSmrg es1800*) 13687ed541caSmrg os=ose 136972b4363aSmrg ;; 13707ed541caSmrg # Some version numbers need modification 13717ed541caSmrg chorusos*) 13727ed541caSmrg os=chorusos 137372b4363aSmrg ;; 13747ed541caSmrg isc) 13757ed541caSmrg os=isc2.2 137672b4363aSmrg ;; 13777ed541caSmrg sco6) 13787ed541caSmrg os=sco5v6 137972b4363aSmrg ;; 13807ed541caSmrg sco5) 13817ed541caSmrg os=sco3.2v5 138272b4363aSmrg ;; 13837ed541caSmrg sco4) 13847ed541caSmrg os=sco3.2v4 138572b4363aSmrg ;; 13867ed541caSmrg sco3.2.[4-9]*) 13877ed541caSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 138872b4363aSmrg ;; 13897ed541caSmrg sco*v* | scout) 13907ed541caSmrg # Don't match below 139172b4363aSmrg ;; 13927ed541caSmrg sco*) 13937ed541caSmrg os=sco3.2v2 139472b4363aSmrg ;; 13957ed541caSmrg psos*) 13967ed541caSmrg os=psos 139772b4363aSmrg ;; 13987ed541caSmrg qnx*) 13997ed541caSmrg os=qnx 140072b4363aSmrg ;; 14017ed541caSmrg hiux*) 14027ed541caSmrg os=hiuxwe2 140372b4363aSmrg ;; 14047ed541caSmrg lynx*178) 14057ed541caSmrg os=lynxos178 140672b4363aSmrg ;; 14077ed541caSmrg lynx*5) 14087ed541caSmrg os=lynxos5 140972b4363aSmrg ;; 14107ed541caSmrg lynxos*) 14117ed541caSmrg # don't get caught up in next wildcard 141272b4363aSmrg ;; 14137ed541caSmrg lynx*) 14147ed541caSmrg os=lynxos 141572b4363aSmrg ;; 14167ed541caSmrg mac[0-9]*) 14177ed541caSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 141872b4363aSmrg ;; 14197ed541caSmrg opened*) 14207ed541caSmrg os=openedition 142172b4363aSmrg ;; 14227ed541caSmrg os400*) 14237ed541caSmrg os=os400 142472b4363aSmrg ;; 14257ed541caSmrg sunos5*) 14267ed541caSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 142772b4363aSmrg ;; 14287ed541caSmrg sunos6*) 14297ed541caSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 143072b4363aSmrg ;; 14317ed541caSmrg wince*) 14327ed541caSmrg os=wince 143372b4363aSmrg ;; 14347ed541caSmrg utek*) 14357ed541caSmrg os=bsd 143672b4363aSmrg ;; 14377ed541caSmrg dynix*) 14387ed541caSmrg os=bsd 143972b4363aSmrg ;; 14407ed541caSmrg acis*) 14417ed541caSmrg os=aos 144272b4363aSmrg ;; 14437ed541caSmrg atheos*) 14447ed541caSmrg os=atheos 144572b4363aSmrg ;; 14467ed541caSmrg syllable*) 14477ed541caSmrg os=syllable 144872b4363aSmrg ;; 14497ed541caSmrg 386bsd) 14507ed541caSmrg os=bsd 145172b4363aSmrg ;; 14527ed541caSmrg ctix* | uts*) 14537ed541caSmrg os=sysv 145472b4363aSmrg ;; 14557ed541caSmrg nova*) 14567ed541caSmrg os=rtmk-nova 145772b4363aSmrg ;; 14587ed541caSmrg ns2) 14597ed541caSmrg os=nextstep2 146072b4363aSmrg ;; 14617ed541caSmrg # Preserve the version number of sinix5. 14627ed541caSmrg sinix5.*) 14637ed541caSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 146472b4363aSmrg ;; 14657ed541caSmrg sinix*) 14667ed541caSmrg os=sysv4 146772b4363aSmrg ;; 14687ed541caSmrg tpf*) 14697ed541caSmrg os=tpf 147072b4363aSmrg ;; 14717ed541caSmrg triton*) 14727ed541caSmrg os=sysv3 147372b4363aSmrg ;; 14747ed541caSmrg oss*) 14757ed541caSmrg os=sysv3 147672b4363aSmrg ;; 14777ed541caSmrg svr4*) 14787ed541caSmrg os=sysv4 147972b4363aSmrg ;; 14807ed541caSmrg svr3) 14817ed541caSmrg os=sysv3 148272b4363aSmrg ;; 14837ed541caSmrg sysvr4) 14847ed541caSmrg os=sysv4 148572b4363aSmrg ;; 14867ed541caSmrg ose*) 14877ed541caSmrg os=ose 148872b4363aSmrg ;; 14897ed541caSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14907ed541caSmrg os=mint 1491dd77ae96Smrg ;; 14927ed541caSmrg dicos*) 14937ed541caSmrg os=dicos 149433dddc75Smrg ;; 14957ed541caSmrg pikeos*) 14967ed541caSmrg # Until real need of OS specific support for 14977ed541caSmrg # particular features comes up, bare metal 14987ed541caSmrg # configurations are quite functional. 14997ed541caSmrg case $cpu in 15007ed541caSmrg arm*) 15017ed541caSmrg os=eabi 15027ed541caSmrg ;; 15037ed541caSmrg *) 15047ed541caSmrg os=elf 15057ed541caSmrg ;; 15067ed541caSmrg esac 150772b4363aSmrg ;; 150872b4363aSmrg *) 15097ed541caSmrg # No normalization, but not necessarily accepted, that comes below. 151072b4363aSmrg ;; 151172b4363aSmrgesac 15127ed541caSmrg 151372b4363aSmrgelse 151472b4363aSmrg 151572b4363aSmrg# Here we handle the default operating systems that come with various machines. 151672b4363aSmrg# The value should be what the vendor currently ships out the door with their 151772b4363aSmrg# machine or put another way, the most popular os provided with the machine. 151872b4363aSmrg 151972b4363aSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 152072b4363aSmrg# "-sun"), then you have to tell the case statement up towards the top 152172b4363aSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 152272b4363aSmrg# will signal an error saying that MANUFACTURER isn't an operating 152372b4363aSmrg# system, and we'll never get to this point. 152472b4363aSmrg 15257ed541caSmrgkernel= 15267ed541caSmrgcase $cpu-$vendor in 152733dddc75Smrg score-*) 15287ed541caSmrg os=elf 152972b4363aSmrg ;; 153033dddc75Smrg spu-*) 15317ed541caSmrg os=elf 153272b4363aSmrg ;; 153372b4363aSmrg *-acorn) 15347ed541caSmrg os=riscix1.2 153572b4363aSmrg ;; 153672b4363aSmrg arm*-rebel) 15377ed541caSmrg kernel=linux 15387ed541caSmrg os=gnu 153972b4363aSmrg ;; 154072b4363aSmrg arm*-semi) 15417ed541caSmrg os=aout 154272b4363aSmrg ;; 154333dddc75Smrg c4x-* | tic4x-*) 15447ed541caSmrg os=coff 154533dddc75Smrg ;; 154633dddc75Smrg c8051-*) 15477ed541caSmrg os=elf 15487ed541caSmrg ;; 15497ed541caSmrg clipper-intergraph) 15507ed541caSmrg os=clix 155133dddc75Smrg ;; 155233dddc75Smrg hexagon-*) 15537ed541caSmrg os=elf 155472b4363aSmrg ;; 155508e312fdSmrg tic54x-*) 15567ed541caSmrg os=coff 155708e312fdSmrg ;; 155808e312fdSmrg tic55x-*) 15597ed541caSmrg os=coff 156008e312fdSmrg ;; 156108e312fdSmrg tic6x-*) 15627ed541caSmrg os=coff 156308e312fdSmrg ;; 156472b4363aSmrg # This must come before the *-dec entry. 156572b4363aSmrg pdp10-*) 15667ed541caSmrg os=tops20 156772b4363aSmrg ;; 156872b4363aSmrg pdp11-*) 15697ed541caSmrg os=none 157072b4363aSmrg ;; 157172b4363aSmrg *-dec | vax-*) 15727ed541caSmrg os=ultrix4.2 157372b4363aSmrg ;; 157472b4363aSmrg m68*-apollo) 15757ed541caSmrg os=domain 157672b4363aSmrg ;; 157772b4363aSmrg i386-sun) 15787ed541caSmrg os=sunos4.0.2 157972b4363aSmrg ;; 158072b4363aSmrg m68000-sun) 15817ed541caSmrg os=sunos3 158272b4363aSmrg ;; 158372b4363aSmrg m68*-cisco) 15847ed541caSmrg os=aout 158572b4363aSmrg ;; 158633dddc75Smrg mep-*) 15877ed541caSmrg os=elf 1588dd77ae96Smrg ;; 158972b4363aSmrg mips*-cisco) 15907ed541caSmrg os=elf 159172b4363aSmrg ;; 159272b4363aSmrg mips*-*) 15937ed541caSmrg os=elf 159472b4363aSmrg ;; 159572b4363aSmrg or32-*) 15967ed541caSmrg os=coff 159772b4363aSmrg ;; 159872b4363aSmrg *-tti) # must be before sparc entry or we get the wrong os. 15997ed541caSmrg os=sysv3 160072b4363aSmrg ;; 160172b4363aSmrg sparc-* | *-sun) 16027ed541caSmrg os=sunos4.1.1 160372b4363aSmrg ;; 16047ed541caSmrg pru-*) 16057ed541caSmrg os=elf 160672b4363aSmrg ;; 16077ed541caSmrg *-be) 16087ed541caSmrg os=beos 160972b4363aSmrg ;; 161072b4363aSmrg *-ibm) 16117ed541caSmrg os=aix 161272b4363aSmrg ;; 161333dddc75Smrg *-knuth) 16147ed541caSmrg os=mmixware 161572b4363aSmrg ;; 161672b4363aSmrg *-wec) 16177ed541caSmrg os=proelf 161872b4363aSmrg ;; 161972b4363aSmrg *-winbond) 16207ed541caSmrg os=proelf 162172b4363aSmrg ;; 162272b4363aSmrg *-oki) 16237ed541caSmrg os=proelf 162472b4363aSmrg ;; 162572b4363aSmrg *-hp) 16267ed541caSmrg os=hpux 162772b4363aSmrg ;; 162872b4363aSmrg *-hitachi) 16297ed541caSmrg os=hiux 163072b4363aSmrg ;; 163172b4363aSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16327ed541caSmrg os=sysv 163372b4363aSmrg ;; 163472b4363aSmrg *-cbm) 16357ed541caSmrg os=amigaos 163672b4363aSmrg ;; 163772b4363aSmrg *-dg) 16387ed541caSmrg os=dgux 163972b4363aSmrg ;; 164072b4363aSmrg *-dolphin) 16417ed541caSmrg os=sysv3 164272b4363aSmrg ;; 164372b4363aSmrg m68k-ccur) 16447ed541caSmrg os=rtu 164572b4363aSmrg ;; 164672b4363aSmrg m88k-omron*) 16477ed541caSmrg os=luna 164872b4363aSmrg ;; 16497ed541caSmrg *-next) 16507ed541caSmrg os=nextstep 165172b4363aSmrg ;; 165272b4363aSmrg *-sequent) 16537ed541caSmrg os=ptx 165472b4363aSmrg ;; 165572b4363aSmrg *-crds) 16567ed541caSmrg os=unos 165772b4363aSmrg ;; 165872b4363aSmrg *-ns) 16597ed541caSmrg os=genix 166072b4363aSmrg ;; 166172b4363aSmrg i370-*) 16627ed541caSmrg os=mvs 166372b4363aSmrg ;; 166472b4363aSmrg *-gould) 16657ed541caSmrg os=sysv 166672b4363aSmrg ;; 166772b4363aSmrg *-highlevel) 16687ed541caSmrg os=bsd 166972b4363aSmrg ;; 167072b4363aSmrg *-encore) 16717ed541caSmrg os=bsd 167272b4363aSmrg ;; 167372b4363aSmrg *-sgi) 16747ed541caSmrg os=irix 167572b4363aSmrg ;; 167672b4363aSmrg *-siemens) 16777ed541caSmrg os=sysv4 167872b4363aSmrg ;; 167972b4363aSmrg *-masscomp) 16807ed541caSmrg os=rtu 168172b4363aSmrg ;; 168272b4363aSmrg f30[01]-fujitsu | f700-fujitsu) 16837ed541caSmrg os=uxpv 168472b4363aSmrg ;; 168572b4363aSmrg *-rom68k) 16867ed541caSmrg os=coff 168772b4363aSmrg ;; 168872b4363aSmrg *-*bug) 16897ed541caSmrg os=coff 169072b4363aSmrg ;; 169172b4363aSmrg *-apple) 16927ed541caSmrg os=macos 169372b4363aSmrg ;; 169472b4363aSmrg *-atari*) 16957ed541caSmrg os=mint 16967ed541caSmrg ;; 16977ed541caSmrg *-wrs) 16987ed541caSmrg os=vxworks 169972b4363aSmrg ;; 170072b4363aSmrg *) 17017ed541caSmrg os=none 170272b4363aSmrg ;; 170372b4363aSmrgesac 17047ed541caSmrg 170572b4363aSmrgfi 170672b4363aSmrg 17077ed541caSmrg# Now, validate our (potentially fixed-up) OS. 17087ed541caSmrgcase $os in 17097ed541caSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17107ed541caSmrg musl* | newlib* | relibc* | uclibc*) 17117ed541caSmrg ;; 17127ed541caSmrg # Likewise for "kernel-abi" 17137ed541caSmrg eabi* | gnueabi*) 17147ed541caSmrg ;; 17157ed541caSmrg # VxWorks passes extra cpu info in the 4th filed. 17167ed541caSmrg simlinux | simwindows | spe) 17177ed541caSmrg ;; 17187ed541caSmrg # Now accept the basic system types. 17197ed541caSmrg # The portable systems comes first. 17207ed541caSmrg # Each alternative MUST end in a * to match a version number. 17217ed541caSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17227ed541caSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17237ed541caSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17247ed541caSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17257ed541caSmrg | hiux* | abug | nacl* | netware* | windows* \ 17267ed541caSmrg | os9* | macos* | osx* | ios* \ 17277ed541caSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17287ed541caSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17297ed541caSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17307ed541caSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17317ed541caSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17327ed541caSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17337ed541caSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17347ed541caSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17357ed541caSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17367ed541caSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17377ed541caSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17387ed541caSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17397ed541caSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17407ed541caSmrg | midipix* | mingw32* | mingw64* | mint* \ 17417ed541caSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17427ed541caSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17437ed541caSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17447ed541caSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17457ed541caSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17467ed541caSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17477ed541caSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17487ed541caSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17497ed541caSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17507ed541caSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17517ed541caSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 17527ed541caSmrg ;; 17537ed541caSmrg # This one is extra strict with allowed versions 17547ed541caSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17557ed541caSmrg # Don't forget version if it is 3.2v4 or newer. 17567ed541caSmrg ;; 17577ed541caSmrg none) 17587ed541caSmrg ;; 17597ed541caSmrg *) 17607ed541caSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17617ed541caSmrg exit 1 17627ed541caSmrg ;; 17637ed541caSmrgesac 17647ed541caSmrg 17657ed541caSmrg# As a final step for OS-related things, validate the OS-kernel combination 17667ed541caSmrg# (given a valid OS), if there is a kernel. 17677ed541caSmrgcase $kernel-$os in 17687ed541caSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17697ed541caSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 17707ed541caSmrg ;; 17717ed541caSmrg uclinux-uclibc* ) 17727ed541caSmrg ;; 17737ed541caSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 17747ed541caSmrg # These are just libc implementations, not actual OSes, and thus 17757ed541caSmrg # require a kernel. 17767ed541caSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17777ed541caSmrg exit 1 17787ed541caSmrg ;; 17797ed541caSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 17807ed541caSmrg ;; 17817ed541caSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 17827ed541caSmrg ;; 17837ed541caSmrg nto-qnx*) 17847ed541caSmrg ;; 17857ed541caSmrg os2-emx) 17867ed541caSmrg ;; 17877ed541caSmrg *-eabi* | *-gnueabi*) 17887ed541caSmrg ;; 17897ed541caSmrg -*) 17907ed541caSmrg # Blank kernel with real OS is always fine. 17917ed541caSmrg ;; 17927ed541caSmrg *-*) 17937ed541caSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 17947ed541caSmrg exit 1 17957ed541caSmrg ;; 17967ed541caSmrgesac 17977ed541caSmrg 179872b4363aSmrg# Here we handle the case where we know the os, and the CPU type, but not the 179972b4363aSmrg# manufacturer. We pick the logical manufacturer. 18007ed541caSmrgcase $vendor in 18017ed541caSmrg unknown) 18027ed541caSmrg case $cpu-$os in 18037ed541caSmrg *-riscix*) 180472b4363aSmrg vendor=acorn 180572b4363aSmrg ;; 18067ed541caSmrg *-sunos*) 180772b4363aSmrg vendor=sun 180872b4363aSmrg ;; 18097ed541caSmrg *-cnk* | *-aix*) 181072b4363aSmrg vendor=ibm 181172b4363aSmrg ;; 18127ed541caSmrg *-beos*) 181372b4363aSmrg vendor=be 181472b4363aSmrg ;; 18157ed541caSmrg *-hpux*) 181672b4363aSmrg vendor=hp 181772b4363aSmrg ;; 18187ed541caSmrg *-mpeix*) 181972b4363aSmrg vendor=hp 182072b4363aSmrg ;; 18217ed541caSmrg *-hiux*) 182272b4363aSmrg vendor=hitachi 182372b4363aSmrg ;; 18247ed541caSmrg *-unos*) 182572b4363aSmrg vendor=crds 182672b4363aSmrg ;; 18277ed541caSmrg *-dgux*) 182872b4363aSmrg vendor=dg 182972b4363aSmrg ;; 18307ed541caSmrg *-luna*) 183172b4363aSmrg vendor=omron 183272b4363aSmrg ;; 18337ed541caSmrg *-genix*) 183472b4363aSmrg vendor=ns 183572b4363aSmrg ;; 18367ed541caSmrg *-clix*) 18377ed541caSmrg vendor=intergraph 18387ed541caSmrg ;; 18397ed541caSmrg *-mvs* | *-opened*) 18407ed541caSmrg vendor=ibm 18417ed541caSmrg ;; 18427ed541caSmrg *-os400*) 184372b4363aSmrg vendor=ibm 184472b4363aSmrg ;; 18457ed541caSmrg s390-* | s390x-*) 184672b4363aSmrg vendor=ibm 184772b4363aSmrg ;; 18487ed541caSmrg *-ptx*) 184972b4363aSmrg vendor=sequent 185072b4363aSmrg ;; 18517ed541caSmrg *-tpf*) 185272b4363aSmrg vendor=ibm 185372b4363aSmrg ;; 18547ed541caSmrg *-vxsim* | *-vxworks* | *-windiss*) 185572b4363aSmrg vendor=wrs 185672b4363aSmrg ;; 18577ed541caSmrg *-aux*) 185872b4363aSmrg vendor=apple 185972b4363aSmrg ;; 18607ed541caSmrg *-hms*) 186172b4363aSmrg vendor=hitachi 186272b4363aSmrg ;; 18637ed541caSmrg *-mpw* | *-macos*) 186472b4363aSmrg vendor=apple 186572b4363aSmrg ;; 18667ed541caSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 186772b4363aSmrg vendor=atari 186872b4363aSmrg ;; 18697ed541caSmrg *-vos*) 187072b4363aSmrg vendor=stratus 187172b4363aSmrg ;; 187272b4363aSmrg esac 187372b4363aSmrg ;; 187472b4363aSmrgesac 187572b4363aSmrg 18767ed541caSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 187772b4363aSmrgexit 187872b4363aSmrg 187972b4363aSmrg# Local variables: 18807ed541caSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 188172b4363aSmrg# time-stamp-start: "timestamp='" 188272b4363aSmrg# time-stamp-format: "%:y-%02m-%02d" 188372b4363aSmrg# time-stamp-end: "'" 188472b4363aSmrg# End: 1885