config.sub revision 3d05230f
1ed6f5d66Smrg#! /bin/sh 2ed6f5d66Smrg# Configuration validation subroutine script. 33d05230fSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 4ed6f5d66Smrg 53d05230fSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 63d05230fSmrg 73d05230fSmrgtimestamp='2021-08-14' 8ed6f5d66Smrg 9ed6f5d66Smrg# This file is free software; you can redistribute it and/or modify it 10ed6f5d66Smrg# under the terms of the GNU General Public License as published by 11ed6f5d66Smrg# the Free Software Foundation; either version 3 of the License, or 12ed6f5d66Smrg# (at your option) any later version. 13ed6f5d66Smrg# 14ed6f5d66Smrg# This program is distributed in the hope that it will be useful, but 15ed6f5d66Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16ed6f5d66Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17ed6f5d66Smrg# General Public License for more details. 18ed6f5d66Smrg# 19ed6f5d66Smrg# You should have received a copy of the GNU General Public License 203d05230fSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21ed6f5d66Smrg# 22ed6f5d66Smrg# As a special exception to the GNU General Public License, if you 23ed6f5d66Smrg# distribute this file as part of a program that contains a 24ed6f5d66Smrg# configuration script generated by Autoconf, you may include it under 25ed6f5d66Smrg# the same distribution terms that you use for the rest of that 26ed6f5d66Smrg# program. This Exception is an additional permission under section 7 27ed6f5d66Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28ed6f5d66Smrg 29ed6f5d66Smrg 30fbc03982Smrg# Please send patches to <config-patches@gnu.org>. 31ed6f5d66Smrg# 32ed6f5d66Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33ed6f5d66Smrg# Supply the specified configuration type as an argument. 34ed6f5d66Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35ed6f5d66Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36ed6f5d66Smrg 37ed6f5d66Smrg# You can get the latest version of this script from: 383d05230fSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39ed6f5d66Smrg 40ed6f5d66Smrg# This file is supposed to be the same for all GNU packages 41ed6f5d66Smrg# and recognize all the CPU types, system types and aliases 42ed6f5d66Smrg# that are meaningful with *any* GNU software. 43ed6f5d66Smrg# Each package is responsible for reporting which valid configurations 44ed6f5d66Smrg# it does not support. The user should be able to distinguish 45ed6f5d66Smrg# a failure to support a valid configuration from a meaningless 46ed6f5d66Smrg# configuration. 47ed6f5d66Smrg 48ed6f5d66Smrg# The goal of this file is to map all the various variations of a given 49ed6f5d66Smrg# machine specification into a single specification in the form: 50ed6f5d66Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51ed6f5d66Smrg# or in some cases, the newer four-part form: 52ed6f5d66Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53ed6f5d66Smrg# It is wrong to echo any other type of specification. 54ed6f5d66Smrg 553d05230fSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 563d05230fSmrg# about features and limitations of the classic Bourne shell that were 573d05230fSmrg# superseded or lifted in POSIX. However, this script identifies a wide 583d05230fSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 593d05230fSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 603d05230fSmrg# have a pre-POSIX /bin/sh. 613d05230fSmrg 62ed6f5d66Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63ed6f5d66Smrg 64ed6f5d66Smrgusage="\ 65fbc03982SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66ed6f5d66Smrg 67ed6f5d66SmrgCanonicalize a configuration name. 68ed6f5d66Smrg 693d05230fSmrgOptions: 70ed6f5d66Smrg -h, --help print this help, then exit 71ed6f5d66Smrg -t, --time-stamp print date of last modification, then exit 72ed6f5d66Smrg -v, --version print version number, then exit 73ed6f5d66Smrg 74ed6f5d66SmrgReport bugs and patches to <config-patches@gnu.org>." 75ed6f5d66Smrg 76ed6f5d66Smrgversion="\ 77ed6f5d66SmrgGNU config.sub ($timestamp) 78ed6f5d66Smrg 793d05230fSmrgCopyright 1992-2021 Free Software Foundation, Inc. 80ed6f5d66Smrg 81ed6f5d66SmrgThis is free software; see the source for copying conditions. There is NO 82ed6f5d66Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83ed6f5d66Smrg 84ed6f5d66Smrghelp=" 85ed6f5d66SmrgTry \`$me --help' for more information." 86ed6f5d66Smrg 87ed6f5d66Smrg# Parse command line 88ed6f5d66Smrgwhile test $# -gt 0 ; do 89ed6f5d66Smrg case $1 in 90ed6f5d66Smrg --time-stamp | --time* | -t ) 91ed6f5d66Smrg echo "$timestamp" ; exit ;; 92ed6f5d66Smrg --version | -v ) 93ed6f5d66Smrg echo "$version" ; exit ;; 94ed6f5d66Smrg --help | --h* | -h ) 95ed6f5d66Smrg echo "$usage"; exit ;; 96ed6f5d66Smrg -- ) # Stop option processing 97ed6f5d66Smrg shift; break ;; 98ed6f5d66Smrg - ) # Use stdin as input. 99ed6f5d66Smrg break ;; 100ed6f5d66Smrg -* ) 1013d05230fSmrg echo "$me: invalid option $1$help" >&2 102ed6f5d66Smrg exit 1 ;; 103ed6f5d66Smrg 104ed6f5d66Smrg *local*) 105ed6f5d66Smrg # First pass through any local machine types. 1063d05230fSmrg echo "$1" 107ed6f5d66Smrg exit ;; 108ed6f5d66Smrg 109ed6f5d66Smrg * ) 110ed6f5d66Smrg break ;; 111ed6f5d66Smrg esac 112ed6f5d66Smrgdone 113ed6f5d66Smrg 114ed6f5d66Smrgcase $# in 115ed6f5d66Smrg 0) echo "$me: missing argument$help" >&2 116ed6f5d66Smrg exit 1;; 117ed6f5d66Smrg 1) ;; 118ed6f5d66Smrg *) echo "$me: too many arguments$help" >&2 119ed6f5d66Smrg exit 1;; 120ed6f5d66Smrgesac 121ed6f5d66Smrg 1223d05230fSmrg# Split fields of configuration type 1233d05230fSmrg# shellcheck disable=SC2162 1243d05230fSmrgsaved_IFS=$IFS 1253d05230fSmrgIFS="-" read field1 field2 field3 field4 <<EOF 1263d05230fSmrg$1 1273d05230fSmrgEOF 1283d05230fSmrgIFS=$saved_IFS 129ed6f5d66Smrg 1303d05230fSmrg# Separate into logical components for further validation 1313d05230fSmrgcase $1 in 1323d05230fSmrg *-*-*-*-*) 1333d05230fSmrg echo Invalid configuration \`"$1"\': more than four components >&2 1343d05230fSmrg exit 1 135ed6f5d66Smrg ;; 1363d05230fSmrg *-*-*-*) 1373d05230fSmrg basic_machine=$field1-$field2 1383d05230fSmrg basic_os=$field3-$field4 139ed6f5d66Smrg ;; 1403d05230fSmrg *-*-*) 1413d05230fSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1423d05230fSmrg # parts 1433d05230fSmrg maybe_os=$field2-$field3 1443d05230fSmrg case $maybe_os in 1453d05230fSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 1463d05230fSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1473d05230fSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1483d05230fSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 1493d05230fSmrg basic_machine=$field1 1503d05230fSmrg basic_os=$maybe_os 1513d05230fSmrg ;; 1523d05230fSmrg android-linux) 1533d05230fSmrg basic_machine=$field1-unknown 1543d05230fSmrg basic_os=linux-android 1553d05230fSmrg ;; 1563d05230fSmrg *) 1573d05230fSmrg basic_machine=$field1-$field2 1583d05230fSmrg basic_os=$field3 1593d05230fSmrg ;; 1603d05230fSmrg esac 161ed6f5d66Smrg ;; 1623d05230fSmrg *-*) 1633d05230fSmrg # A lone config we happen to match not fitting any pattern 1643d05230fSmrg case $field1-$field2 in 1653d05230fSmrg decstation-3100) 1663d05230fSmrg basic_machine=mips-dec 1673d05230fSmrg basic_os= 1683d05230fSmrg ;; 1693d05230fSmrg *-*) 1703d05230fSmrg # Second component is usually, but not always the OS 1713d05230fSmrg case $field2 in 1723d05230fSmrg # Prevent following clause from handling this valid os 1733d05230fSmrg sun*os*) 1743d05230fSmrg basic_machine=$field1 1753d05230fSmrg basic_os=$field2 1763d05230fSmrg ;; 1773d05230fSmrg zephyr*) 1783d05230fSmrg basic_machine=$field1-unknown 1793d05230fSmrg basic_os=$field2 1803d05230fSmrg ;; 1813d05230fSmrg # Manufacturers 1823d05230fSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1833d05230fSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1843d05230fSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1853d05230fSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1863d05230fSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1873d05230fSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1883d05230fSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1893d05230fSmrg | microblaze* | sim | cisco \ 1903d05230fSmrg | oki | wec | wrs | winbond) 1913d05230fSmrg basic_machine=$field1-$field2 1923d05230fSmrg basic_os= 1933d05230fSmrg ;; 1943d05230fSmrg *) 1953d05230fSmrg basic_machine=$field1 1963d05230fSmrg basic_os=$field2 1973d05230fSmrg ;; 1983d05230fSmrg esac 1993d05230fSmrg ;; 2003d05230fSmrg esac 201ed6f5d66Smrg ;; 2023d05230fSmrg *) 2033d05230fSmrg # Convert single-component short-hands not valid as part of 2043d05230fSmrg # multi-component configurations. 2053d05230fSmrg case $field1 in 2063d05230fSmrg 386bsd) 2073d05230fSmrg basic_machine=i386-pc 2083d05230fSmrg basic_os=bsd 2093d05230fSmrg ;; 2103d05230fSmrg a29khif) 2113d05230fSmrg basic_machine=a29k-amd 2123d05230fSmrg basic_os=udi 2133d05230fSmrg ;; 2143d05230fSmrg adobe68k) 2153d05230fSmrg basic_machine=m68010-adobe 2163d05230fSmrg basic_os=scout 2173d05230fSmrg ;; 2183d05230fSmrg alliant) 2193d05230fSmrg basic_machine=fx80-alliant 2203d05230fSmrg basic_os= 2213d05230fSmrg ;; 2223d05230fSmrg altos | altos3068) 2233d05230fSmrg basic_machine=m68k-altos 2243d05230fSmrg basic_os= 2253d05230fSmrg ;; 2263d05230fSmrg am29k) 2273d05230fSmrg basic_machine=a29k-none 2283d05230fSmrg basic_os=bsd 2293d05230fSmrg ;; 2303d05230fSmrg amdahl) 2313d05230fSmrg basic_machine=580-amdahl 2323d05230fSmrg basic_os=sysv 2333d05230fSmrg ;; 2343d05230fSmrg amiga) 2353d05230fSmrg basic_machine=m68k-unknown 2363d05230fSmrg basic_os= 2373d05230fSmrg ;; 2383d05230fSmrg amigaos | amigados) 2393d05230fSmrg basic_machine=m68k-unknown 2403d05230fSmrg basic_os=amigaos 2413d05230fSmrg ;; 2423d05230fSmrg amigaunix | amix) 2433d05230fSmrg basic_machine=m68k-unknown 2443d05230fSmrg basic_os=sysv4 2453d05230fSmrg ;; 2463d05230fSmrg apollo68) 2473d05230fSmrg basic_machine=m68k-apollo 2483d05230fSmrg basic_os=sysv 2493d05230fSmrg ;; 2503d05230fSmrg apollo68bsd) 2513d05230fSmrg basic_machine=m68k-apollo 2523d05230fSmrg basic_os=bsd 2533d05230fSmrg ;; 2543d05230fSmrg aros) 2553d05230fSmrg basic_machine=i386-pc 2563d05230fSmrg basic_os=aros 2573d05230fSmrg ;; 2583d05230fSmrg aux) 2593d05230fSmrg basic_machine=m68k-apple 2603d05230fSmrg basic_os=aux 2613d05230fSmrg ;; 2623d05230fSmrg balance) 2633d05230fSmrg basic_machine=ns32k-sequent 2643d05230fSmrg basic_os=dynix 2653d05230fSmrg ;; 2663d05230fSmrg blackfin) 2673d05230fSmrg basic_machine=bfin-unknown 2683d05230fSmrg basic_os=linux 2693d05230fSmrg ;; 2703d05230fSmrg cegcc) 2713d05230fSmrg basic_machine=arm-unknown 2723d05230fSmrg basic_os=cegcc 2733d05230fSmrg ;; 2743d05230fSmrg convex-c1) 2753d05230fSmrg basic_machine=c1-convex 2763d05230fSmrg basic_os=bsd 2773d05230fSmrg ;; 2783d05230fSmrg convex-c2) 2793d05230fSmrg basic_machine=c2-convex 2803d05230fSmrg basic_os=bsd 2813d05230fSmrg ;; 2823d05230fSmrg convex-c32) 2833d05230fSmrg basic_machine=c32-convex 2843d05230fSmrg basic_os=bsd 2853d05230fSmrg ;; 2863d05230fSmrg convex-c34) 2873d05230fSmrg basic_machine=c34-convex 2883d05230fSmrg basic_os=bsd 2893d05230fSmrg ;; 2903d05230fSmrg convex-c38) 2913d05230fSmrg basic_machine=c38-convex 2923d05230fSmrg basic_os=bsd 2933d05230fSmrg ;; 2943d05230fSmrg cray) 2953d05230fSmrg basic_machine=j90-cray 2963d05230fSmrg basic_os=unicos 2973d05230fSmrg ;; 2983d05230fSmrg crds | unos) 2993d05230fSmrg basic_machine=m68k-crds 3003d05230fSmrg basic_os= 3013d05230fSmrg ;; 3023d05230fSmrg da30) 3033d05230fSmrg basic_machine=m68k-da30 3043d05230fSmrg basic_os= 3053d05230fSmrg ;; 3063d05230fSmrg decstation | pmax | pmin | dec3100 | decstatn) 3073d05230fSmrg basic_machine=mips-dec 3083d05230fSmrg basic_os= 3093d05230fSmrg ;; 3103d05230fSmrg delta88) 3113d05230fSmrg basic_machine=m88k-motorola 3123d05230fSmrg basic_os=sysv3 3133d05230fSmrg ;; 3143d05230fSmrg dicos) 3153d05230fSmrg basic_machine=i686-pc 3163d05230fSmrg basic_os=dicos 3173d05230fSmrg ;; 3183d05230fSmrg djgpp) 3193d05230fSmrg basic_machine=i586-pc 3203d05230fSmrg basic_os=msdosdjgpp 3213d05230fSmrg ;; 3223d05230fSmrg ebmon29k) 3233d05230fSmrg basic_machine=a29k-amd 3243d05230fSmrg basic_os=ebmon 3253d05230fSmrg ;; 3263d05230fSmrg es1800 | OSE68k | ose68k | ose | OSE) 3273d05230fSmrg basic_machine=m68k-ericsson 3283d05230fSmrg basic_os=ose 3293d05230fSmrg ;; 3303d05230fSmrg gmicro) 3313d05230fSmrg basic_machine=tron-gmicro 3323d05230fSmrg basic_os=sysv 3333d05230fSmrg ;; 3343d05230fSmrg go32) 3353d05230fSmrg basic_machine=i386-pc 3363d05230fSmrg basic_os=go32 3373d05230fSmrg ;; 3383d05230fSmrg h8300hms) 3393d05230fSmrg basic_machine=h8300-hitachi 3403d05230fSmrg basic_os=hms 3413d05230fSmrg ;; 3423d05230fSmrg h8300xray) 3433d05230fSmrg basic_machine=h8300-hitachi 3443d05230fSmrg basic_os=xray 3453d05230fSmrg ;; 3463d05230fSmrg h8500hms) 3473d05230fSmrg basic_machine=h8500-hitachi 3483d05230fSmrg basic_os=hms 3493d05230fSmrg ;; 3503d05230fSmrg harris) 3513d05230fSmrg basic_machine=m88k-harris 3523d05230fSmrg basic_os=sysv3 3533d05230fSmrg ;; 3543d05230fSmrg hp300 | hp300hpux) 3553d05230fSmrg basic_machine=m68k-hp 3563d05230fSmrg basic_os=hpux 3573d05230fSmrg ;; 3583d05230fSmrg hp300bsd) 3593d05230fSmrg basic_machine=m68k-hp 3603d05230fSmrg basic_os=bsd 3613d05230fSmrg ;; 3623d05230fSmrg hppaosf) 3633d05230fSmrg basic_machine=hppa1.1-hp 3643d05230fSmrg basic_os=osf 3653d05230fSmrg ;; 3663d05230fSmrg hppro) 3673d05230fSmrg basic_machine=hppa1.1-hp 3683d05230fSmrg basic_os=proelf 3693d05230fSmrg ;; 3703d05230fSmrg i386mach) 3713d05230fSmrg basic_machine=i386-mach 3723d05230fSmrg basic_os=mach 3733d05230fSmrg ;; 3743d05230fSmrg isi68 | isi) 3753d05230fSmrg basic_machine=m68k-isi 3763d05230fSmrg basic_os=sysv 3773d05230fSmrg ;; 3783d05230fSmrg m68knommu) 3793d05230fSmrg basic_machine=m68k-unknown 3803d05230fSmrg basic_os=linux 3813d05230fSmrg ;; 3823d05230fSmrg magnum | m3230) 3833d05230fSmrg basic_machine=mips-mips 3843d05230fSmrg basic_os=sysv 3853d05230fSmrg ;; 3863d05230fSmrg merlin) 3873d05230fSmrg basic_machine=ns32k-utek 3883d05230fSmrg basic_os=sysv 3893d05230fSmrg ;; 3903d05230fSmrg mingw64) 3913d05230fSmrg basic_machine=x86_64-pc 3923d05230fSmrg basic_os=mingw64 3933d05230fSmrg ;; 3943d05230fSmrg mingw32) 3953d05230fSmrg basic_machine=i686-pc 3963d05230fSmrg basic_os=mingw32 3973d05230fSmrg ;; 3983d05230fSmrg mingw32ce) 3993d05230fSmrg basic_machine=arm-unknown 4003d05230fSmrg basic_os=mingw32ce 4013d05230fSmrg ;; 4023d05230fSmrg monitor) 4033d05230fSmrg basic_machine=m68k-rom68k 4043d05230fSmrg basic_os=coff 4053d05230fSmrg ;; 4063d05230fSmrg morphos) 4073d05230fSmrg basic_machine=powerpc-unknown 4083d05230fSmrg basic_os=morphos 4093d05230fSmrg ;; 4103d05230fSmrg moxiebox) 4113d05230fSmrg basic_machine=moxie-unknown 4123d05230fSmrg basic_os=moxiebox 4133d05230fSmrg ;; 4143d05230fSmrg msdos) 4153d05230fSmrg basic_machine=i386-pc 4163d05230fSmrg basic_os=msdos 4173d05230fSmrg ;; 4183d05230fSmrg msys) 4193d05230fSmrg basic_machine=i686-pc 4203d05230fSmrg basic_os=msys 4213d05230fSmrg ;; 4223d05230fSmrg mvs) 4233d05230fSmrg basic_machine=i370-ibm 4243d05230fSmrg basic_os=mvs 4253d05230fSmrg ;; 4263d05230fSmrg nacl) 4273d05230fSmrg basic_machine=le32-unknown 4283d05230fSmrg basic_os=nacl 4293d05230fSmrg ;; 4303d05230fSmrg ncr3000) 4313d05230fSmrg basic_machine=i486-ncr 4323d05230fSmrg basic_os=sysv4 4333d05230fSmrg ;; 4343d05230fSmrg netbsd386) 4353d05230fSmrg basic_machine=i386-pc 4363d05230fSmrg basic_os=netbsd 4373d05230fSmrg ;; 4383d05230fSmrg netwinder) 4393d05230fSmrg basic_machine=armv4l-rebel 4403d05230fSmrg basic_os=linux 4413d05230fSmrg ;; 4423d05230fSmrg news | news700 | news800 | news900) 4433d05230fSmrg basic_machine=m68k-sony 4443d05230fSmrg basic_os=newsos 4453d05230fSmrg ;; 4463d05230fSmrg news1000) 4473d05230fSmrg basic_machine=m68030-sony 4483d05230fSmrg basic_os=newsos 4493d05230fSmrg ;; 4503d05230fSmrg necv70) 4513d05230fSmrg basic_machine=v70-nec 4523d05230fSmrg basic_os=sysv 4533d05230fSmrg ;; 4543d05230fSmrg nh3000) 4553d05230fSmrg basic_machine=m68k-harris 4563d05230fSmrg basic_os=cxux 4573d05230fSmrg ;; 4583d05230fSmrg nh[45]000) 4593d05230fSmrg basic_machine=m88k-harris 4603d05230fSmrg basic_os=cxux 4613d05230fSmrg ;; 4623d05230fSmrg nindy960) 4633d05230fSmrg basic_machine=i960-intel 4643d05230fSmrg basic_os=nindy 4653d05230fSmrg ;; 4663d05230fSmrg mon960) 4673d05230fSmrg basic_machine=i960-intel 4683d05230fSmrg basic_os=mon960 4693d05230fSmrg ;; 4703d05230fSmrg nonstopux) 4713d05230fSmrg basic_machine=mips-compaq 4723d05230fSmrg basic_os=nonstopux 4733d05230fSmrg ;; 4743d05230fSmrg os400) 4753d05230fSmrg basic_machine=powerpc-ibm 4763d05230fSmrg basic_os=os400 4773d05230fSmrg ;; 4783d05230fSmrg OSE68000 | ose68000) 4793d05230fSmrg basic_machine=m68000-ericsson 4803d05230fSmrg basic_os=ose 4813d05230fSmrg ;; 4823d05230fSmrg os68k) 4833d05230fSmrg basic_machine=m68k-none 4843d05230fSmrg basic_os=os68k 4853d05230fSmrg ;; 4863d05230fSmrg paragon) 4873d05230fSmrg basic_machine=i860-intel 4883d05230fSmrg basic_os=osf 4893d05230fSmrg ;; 4903d05230fSmrg parisc) 4913d05230fSmrg basic_machine=hppa-unknown 4923d05230fSmrg basic_os=linux 4933d05230fSmrg ;; 4943d05230fSmrg psp) 4953d05230fSmrg basic_machine=mipsallegrexel-sony 4963d05230fSmrg basic_os=psp 4973d05230fSmrg ;; 4983d05230fSmrg pw32) 4993d05230fSmrg basic_machine=i586-unknown 5003d05230fSmrg basic_os=pw32 5013d05230fSmrg ;; 5023d05230fSmrg rdos | rdos64) 5033d05230fSmrg basic_machine=x86_64-pc 5043d05230fSmrg basic_os=rdos 5053d05230fSmrg ;; 5063d05230fSmrg rdos32) 5073d05230fSmrg basic_machine=i386-pc 5083d05230fSmrg basic_os=rdos 5093d05230fSmrg ;; 5103d05230fSmrg rom68k) 5113d05230fSmrg basic_machine=m68k-rom68k 5123d05230fSmrg basic_os=coff 5133d05230fSmrg ;; 5143d05230fSmrg sa29200) 5153d05230fSmrg basic_machine=a29k-amd 5163d05230fSmrg basic_os=udi 5173d05230fSmrg ;; 5183d05230fSmrg sei) 5193d05230fSmrg basic_machine=mips-sei 5203d05230fSmrg basic_os=seiux 5213d05230fSmrg ;; 5223d05230fSmrg sequent) 5233d05230fSmrg basic_machine=i386-sequent 5243d05230fSmrg basic_os= 5253d05230fSmrg ;; 5263d05230fSmrg sps7) 5273d05230fSmrg basic_machine=m68k-bull 5283d05230fSmrg basic_os=sysv2 5293d05230fSmrg ;; 5303d05230fSmrg st2000) 5313d05230fSmrg basic_machine=m68k-tandem 5323d05230fSmrg basic_os= 5333d05230fSmrg ;; 5343d05230fSmrg stratus) 5353d05230fSmrg basic_machine=i860-stratus 5363d05230fSmrg basic_os=sysv4 5373d05230fSmrg ;; 5383d05230fSmrg sun2) 5393d05230fSmrg basic_machine=m68000-sun 5403d05230fSmrg basic_os= 5413d05230fSmrg ;; 5423d05230fSmrg sun2os3) 5433d05230fSmrg basic_machine=m68000-sun 5443d05230fSmrg basic_os=sunos3 5453d05230fSmrg ;; 5463d05230fSmrg sun2os4) 5473d05230fSmrg basic_machine=m68000-sun 5483d05230fSmrg basic_os=sunos4 5493d05230fSmrg ;; 5503d05230fSmrg sun3) 5513d05230fSmrg basic_machine=m68k-sun 5523d05230fSmrg basic_os= 5533d05230fSmrg ;; 5543d05230fSmrg sun3os3) 5553d05230fSmrg basic_machine=m68k-sun 5563d05230fSmrg basic_os=sunos3 5573d05230fSmrg ;; 5583d05230fSmrg sun3os4) 5593d05230fSmrg basic_machine=m68k-sun 5603d05230fSmrg basic_os=sunos4 5613d05230fSmrg ;; 5623d05230fSmrg sun4) 5633d05230fSmrg basic_machine=sparc-sun 5643d05230fSmrg basic_os= 5653d05230fSmrg ;; 5663d05230fSmrg sun4os3) 5673d05230fSmrg basic_machine=sparc-sun 5683d05230fSmrg basic_os=sunos3 5693d05230fSmrg ;; 5703d05230fSmrg sun4os4) 5713d05230fSmrg basic_machine=sparc-sun 5723d05230fSmrg basic_os=sunos4 5733d05230fSmrg ;; 5743d05230fSmrg sun4sol2) 5753d05230fSmrg basic_machine=sparc-sun 5763d05230fSmrg basic_os=solaris2 5773d05230fSmrg ;; 5783d05230fSmrg sun386 | sun386i | roadrunner) 5793d05230fSmrg basic_machine=i386-sun 5803d05230fSmrg basic_os= 5813d05230fSmrg ;; 5823d05230fSmrg sv1) 5833d05230fSmrg basic_machine=sv1-cray 5843d05230fSmrg basic_os=unicos 5853d05230fSmrg ;; 5863d05230fSmrg symmetry) 5873d05230fSmrg basic_machine=i386-sequent 5883d05230fSmrg basic_os=dynix 5893d05230fSmrg ;; 5903d05230fSmrg t3e) 5913d05230fSmrg basic_machine=alphaev5-cray 5923d05230fSmrg basic_os=unicos 5933d05230fSmrg ;; 5943d05230fSmrg t90) 5953d05230fSmrg basic_machine=t90-cray 5963d05230fSmrg basic_os=unicos 5973d05230fSmrg ;; 5983d05230fSmrg toad1) 5993d05230fSmrg basic_machine=pdp10-xkl 6003d05230fSmrg basic_os=tops20 6013d05230fSmrg ;; 6023d05230fSmrg tpf) 6033d05230fSmrg basic_machine=s390x-ibm 6043d05230fSmrg basic_os=tpf 6053d05230fSmrg ;; 6063d05230fSmrg udi29k) 6073d05230fSmrg basic_machine=a29k-amd 6083d05230fSmrg basic_os=udi 6093d05230fSmrg ;; 6103d05230fSmrg ultra3) 6113d05230fSmrg basic_machine=a29k-nyu 6123d05230fSmrg basic_os=sym1 6133d05230fSmrg ;; 6143d05230fSmrg v810 | necv810) 6153d05230fSmrg basic_machine=v810-nec 6163d05230fSmrg basic_os=none 6173d05230fSmrg ;; 6183d05230fSmrg vaxv) 6193d05230fSmrg basic_machine=vax-dec 6203d05230fSmrg basic_os=sysv 6213d05230fSmrg ;; 6223d05230fSmrg vms) 6233d05230fSmrg basic_machine=vax-dec 6243d05230fSmrg basic_os=vms 6253d05230fSmrg ;; 6263d05230fSmrg vsta) 6273d05230fSmrg basic_machine=i386-pc 6283d05230fSmrg basic_os=vsta 6293d05230fSmrg ;; 6303d05230fSmrg vxworks960) 6313d05230fSmrg basic_machine=i960-wrs 6323d05230fSmrg basic_os=vxworks 6333d05230fSmrg ;; 6343d05230fSmrg vxworks68) 6353d05230fSmrg basic_machine=m68k-wrs 6363d05230fSmrg basic_os=vxworks 6373d05230fSmrg ;; 6383d05230fSmrg vxworks29k) 6393d05230fSmrg basic_machine=a29k-wrs 6403d05230fSmrg basic_os=vxworks 6413d05230fSmrg ;; 6423d05230fSmrg xbox) 6433d05230fSmrg basic_machine=i686-pc 6443d05230fSmrg basic_os=mingw32 6453d05230fSmrg ;; 6463d05230fSmrg ymp) 6473d05230fSmrg basic_machine=ymp-cray 6483d05230fSmrg basic_os=unicos 6493d05230fSmrg ;; 6503d05230fSmrg *) 6513d05230fSmrg basic_machine=$1 6523d05230fSmrg basic_os= 6533d05230fSmrg ;; 6543d05230fSmrg esac 655ed6f5d66Smrg ;; 656ed6f5d66Smrgesac 657ed6f5d66Smrg 6583d05230fSmrg# Decode 1-component or ad-hoc basic machines 659ed6f5d66Smrgcase $basic_machine in 6603d05230fSmrg # Here we handle the default manufacturer of certain CPU types. It is in 6613d05230fSmrg # some cases the only manufacturer, in others, it is the most popular. 6623d05230fSmrg w89k) 6633d05230fSmrg cpu=hppa1.1 6643d05230fSmrg vendor=winbond 665ed6f5d66Smrg ;; 6663d05230fSmrg op50n) 6673d05230fSmrg cpu=hppa1.1 6683d05230fSmrg vendor=oki 669ed6f5d66Smrg ;; 6703d05230fSmrg op60c) 6713d05230fSmrg cpu=hppa1.1 6723d05230fSmrg vendor=oki 673ed6f5d66Smrg ;; 6743d05230fSmrg ibm*) 6753d05230fSmrg cpu=i370 6763d05230fSmrg vendor=ibm 677ed6f5d66Smrg ;; 6783d05230fSmrg orion105) 6793d05230fSmrg cpu=clipper 6803d05230fSmrg vendor=highlevel 681ed6f5d66Smrg ;; 6823d05230fSmrg mac | mpw | mac-mpw) 6833d05230fSmrg cpu=m68k 6843d05230fSmrg vendor=apple 685ed6f5d66Smrg ;; 6863d05230fSmrg pmac | pmac-mpw) 6873d05230fSmrg cpu=powerpc 6883d05230fSmrg vendor=apple 689ed6f5d66Smrg ;; 690ed6f5d66Smrg 691ed6f5d66Smrg # Recognize the various machine names and aliases which stand 692ed6f5d66Smrg # for a CPU type and a company and sometimes even an OS. 693ed6f5d66Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6943d05230fSmrg cpu=m68000 6953d05230fSmrg vendor=att 696ed6f5d66Smrg ;; 697ed6f5d66Smrg 3b*) 6983d05230fSmrg cpu=we32k 6993d05230fSmrg vendor=att 700ed6f5d66Smrg ;; 701ed6f5d66Smrg bluegene*) 7023d05230fSmrg cpu=powerpc 7033d05230fSmrg vendor=ibm 7043d05230fSmrg basic_os=cnk 705ed6f5d66Smrg ;; 706ed6f5d66Smrg decsystem10* | dec10*) 7073d05230fSmrg cpu=pdp10 7083d05230fSmrg vendor=dec 7093d05230fSmrg basic_os=tops10 710ed6f5d66Smrg ;; 711ed6f5d66Smrg decsystem20* | dec20*) 7123d05230fSmrg cpu=pdp10 7133d05230fSmrg vendor=dec 7143d05230fSmrg basic_os=tops20 715ed6f5d66Smrg ;; 716ed6f5d66Smrg delta | 3300 | motorola-3300 | motorola-delta \ 717ed6f5d66Smrg | 3300-motorola | delta-motorola) 7183d05230fSmrg cpu=m68k 7193d05230fSmrg vendor=motorola 720ed6f5d66Smrg ;; 7213d05230fSmrg dpx2*) 7223d05230fSmrg cpu=m68k 7233d05230fSmrg vendor=bull 7243d05230fSmrg basic_os=sysv3 725ed6f5d66Smrg ;; 726ed6f5d66Smrg encore | umax | mmax) 7273d05230fSmrg cpu=ns32k 7283d05230fSmrg vendor=encore 729ed6f5d66Smrg ;; 7303d05230fSmrg elxsi) 7313d05230fSmrg cpu=elxsi 7323d05230fSmrg vendor=elxsi 7333d05230fSmrg basic_os=${basic_os:-bsd} 734ed6f5d66Smrg ;; 735ed6f5d66Smrg fx2800) 7363d05230fSmrg cpu=i860 7373d05230fSmrg vendor=alliant 738ed6f5d66Smrg ;; 739ed6f5d66Smrg genix) 7403d05230fSmrg cpu=ns32k 7413d05230fSmrg vendor=ns 742ed6f5d66Smrg ;; 743ed6f5d66Smrg h3050r* | hiux*) 7443d05230fSmrg cpu=hppa1.1 7453d05230fSmrg vendor=hitachi 7463d05230fSmrg basic_os=hiuxwe2 747ed6f5d66Smrg ;; 748ed6f5d66Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7493d05230fSmrg cpu=hppa1.0 7503d05230fSmrg vendor=hp 751ed6f5d66Smrg ;; 752ed6f5d66Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7533d05230fSmrg cpu=m68000 7543d05230fSmrg vendor=hp 755ed6f5d66Smrg ;; 756ed6f5d66Smrg hp9k3[2-9][0-9]) 7573d05230fSmrg cpu=m68k 7583d05230fSmrg vendor=hp 759ed6f5d66Smrg ;; 760ed6f5d66Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7613d05230fSmrg cpu=hppa1.0 7623d05230fSmrg vendor=hp 763ed6f5d66Smrg ;; 764ed6f5d66Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7653d05230fSmrg cpu=hppa1.1 7663d05230fSmrg vendor=hp 767ed6f5d66Smrg ;; 768ed6f5d66Smrg hp9k78[0-9] | hp78[0-9]) 769ed6f5d66Smrg # FIXME: really hppa2.0-hp 7703d05230fSmrg cpu=hppa1.1 7713d05230fSmrg vendor=hp 772ed6f5d66Smrg ;; 773ed6f5d66Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774ed6f5d66Smrg # FIXME: really hppa2.0-hp 7753d05230fSmrg cpu=hppa1.1 7763d05230fSmrg vendor=hp 777ed6f5d66Smrg ;; 778ed6f5d66Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7793d05230fSmrg cpu=hppa1.1 7803d05230fSmrg vendor=hp 781ed6f5d66Smrg ;; 782ed6f5d66Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7833d05230fSmrg cpu=hppa1.0 7843d05230fSmrg vendor=hp 785ed6f5d66Smrg ;; 786ed6f5d66Smrg i*86v32) 7873d05230fSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7883d05230fSmrg vendor=pc 7893d05230fSmrg basic_os=sysv32 790ed6f5d66Smrg ;; 791ed6f5d66Smrg i*86v4*) 7923d05230fSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7933d05230fSmrg vendor=pc 7943d05230fSmrg basic_os=sysv4 795ed6f5d66Smrg ;; 796ed6f5d66Smrg i*86v) 7973d05230fSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7983d05230fSmrg vendor=pc 7993d05230fSmrg basic_os=sysv 800ed6f5d66Smrg ;; 801ed6f5d66Smrg i*86sol2) 8023d05230fSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8033d05230fSmrg vendor=pc 8043d05230fSmrg basic_os=solaris2 805ed6f5d66Smrg ;; 8063d05230fSmrg j90 | j90-cray) 8073d05230fSmrg cpu=j90 8083d05230fSmrg vendor=cray 8093d05230fSmrg basic_os=${basic_os:-unicos} 810ed6f5d66Smrg ;; 811ed6f5d66Smrg iris | iris4d) 8123d05230fSmrg cpu=mips 8133d05230fSmrg vendor=sgi 8143d05230fSmrg case $basic_os in 8153d05230fSmrg irix*) 816ed6f5d66Smrg ;; 817ed6f5d66Smrg *) 8183d05230fSmrg basic_os=irix4 819ed6f5d66Smrg ;; 820ed6f5d66Smrg esac 821ed6f5d66Smrg ;; 822ed6f5d66Smrg miniframe) 8233d05230fSmrg cpu=m68000 8243d05230fSmrg vendor=convergent 825ed6f5d66Smrg ;; 8263d05230fSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8273d05230fSmrg cpu=m68k 8283d05230fSmrg vendor=atari 8293d05230fSmrg basic_os=mint 830ed6f5d66Smrg ;; 831ed6f5d66Smrg news-3600 | risc-news) 8323d05230fSmrg cpu=mips 8333d05230fSmrg vendor=sony 8343d05230fSmrg basic_os=newsos 8353d05230fSmrg ;; 8363d05230fSmrg next | m*-next) 8373d05230fSmrg cpu=m68k 8383d05230fSmrg vendor=next 8393d05230fSmrg case $basic_os in 8403d05230fSmrg openstep*) 8413d05230fSmrg ;; 8423d05230fSmrg nextstep*) 843ed6f5d66Smrg ;; 8443d05230fSmrg ns2*) 8453d05230fSmrg basic_os=nextstep2 846ed6f5d66Smrg ;; 847ed6f5d66Smrg *) 8483d05230fSmrg basic_os=nextstep3 849ed6f5d66Smrg ;; 850ed6f5d66Smrg esac 851ed6f5d66Smrg ;; 852ed6f5d66Smrg np1) 8533d05230fSmrg cpu=np1 8543d05230fSmrg vendor=gould 855ed6f5d66Smrg ;; 856ed6f5d66Smrg op50n-* | op60c-*) 8573d05230fSmrg cpu=hppa1.1 8583d05230fSmrg vendor=oki 8593d05230fSmrg basic_os=proelf 860ed6f5d66Smrg ;; 861ed6f5d66Smrg pa-hitachi) 8623d05230fSmrg cpu=hppa1.1 8633d05230fSmrg vendor=hitachi 8643d05230fSmrg basic_os=hiuxwe2 865ed6f5d66Smrg ;; 866ed6f5d66Smrg pbd) 8673d05230fSmrg cpu=sparc 8683d05230fSmrg vendor=tti 869ed6f5d66Smrg ;; 870ed6f5d66Smrg pbb) 8713d05230fSmrg cpu=m68k 8723d05230fSmrg vendor=tti 873ed6f5d66Smrg ;; 8743d05230fSmrg pc532) 8753d05230fSmrg cpu=ns32k 8763d05230fSmrg vendor=pc532 877ed6f5d66Smrg ;; 878ed6f5d66Smrg pn) 8793d05230fSmrg cpu=pn 8803d05230fSmrg vendor=gould 881ed6f5d66Smrg ;; 8823d05230fSmrg power) 8833d05230fSmrg cpu=power 8843d05230fSmrg vendor=ibm 885ed6f5d66Smrg ;; 886ed6f5d66Smrg ps2) 8873d05230fSmrg cpu=i386 8883d05230fSmrg vendor=ibm 889ed6f5d66Smrg ;; 890ed6f5d66Smrg rm[46]00) 8913d05230fSmrg cpu=mips 8923d05230fSmrg vendor=siemens 893ed6f5d66Smrg ;; 894ed6f5d66Smrg rtpc | rtpc-*) 8953d05230fSmrg cpu=romp 8963d05230fSmrg vendor=ibm 897ed6f5d66Smrg ;; 8983d05230fSmrg sde) 8993d05230fSmrg cpu=mipsisa32 9003d05230fSmrg vendor=sde 9013d05230fSmrg basic_os=${basic_os:-elf} 902ed6f5d66Smrg ;; 9033d05230fSmrg simso-wrs) 9043d05230fSmrg cpu=sparclite 9053d05230fSmrg vendor=wrs 9063d05230fSmrg basic_os=vxworks 907ed6f5d66Smrg ;; 9083d05230fSmrg tower | tower-32) 9093d05230fSmrg cpu=m68k 9103d05230fSmrg vendor=ncr 911ed6f5d66Smrg ;; 9123d05230fSmrg vpp*|vx|vx-*) 9133d05230fSmrg cpu=f301 9143d05230fSmrg vendor=fujitsu 915ed6f5d66Smrg ;; 9163d05230fSmrg w65) 9173d05230fSmrg cpu=w65 9183d05230fSmrg vendor=wdc 919ed6f5d66Smrg ;; 9203d05230fSmrg w89k-*) 9213d05230fSmrg cpu=hppa1.1 9223d05230fSmrg vendor=winbond 9233d05230fSmrg basic_os=proelf 924ed6f5d66Smrg ;; 9253d05230fSmrg none) 9263d05230fSmrg cpu=none 9273d05230fSmrg vendor=none 928ed6f5d66Smrg ;; 9293d05230fSmrg leon|leon[3-9]) 9303d05230fSmrg cpu=sparc 9313d05230fSmrg vendor=$basic_machine 932ed6f5d66Smrg ;; 9333d05230fSmrg leon-*|leon[3-9]-*) 9343d05230fSmrg cpu=sparc 9353d05230fSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936ed6f5d66Smrg ;; 9373d05230fSmrg 9383d05230fSmrg *-*) 9393d05230fSmrg # shellcheck disable=SC2162 9403d05230fSmrg saved_IFS=$IFS 9413d05230fSmrg IFS="-" read cpu vendor <<EOF 9423d05230fSmrg$basic_machine 9433d05230fSmrgEOF 9443d05230fSmrg IFS=$saved_IFS 945ed6f5d66Smrg ;; 9463d05230fSmrg # We use `pc' rather than `unknown' 9473d05230fSmrg # because (1) that's what they normally are, and 9483d05230fSmrg # (2) the word "unknown" tends to confuse beginning users. 9493d05230fSmrg i*86 | x86_64) 9503d05230fSmrg cpu=$basic_machine 9513d05230fSmrg vendor=pc 952ed6f5d66Smrg ;; 9533d05230fSmrg # These rules are duplicated from below for sake of the special case above; 9543d05230fSmrg # i.e. things that normalized to x86 arches should also default to "pc" 9553d05230fSmrg pc98) 9563d05230fSmrg cpu=i386 9573d05230fSmrg vendor=pc 958ed6f5d66Smrg ;; 9593d05230fSmrg x64 | amd64) 9603d05230fSmrg cpu=x86_64 9613d05230fSmrg vendor=pc 962ed6f5d66Smrg ;; 9633d05230fSmrg # Recognize the basic CPU types without company name. 9643d05230fSmrg *) 9653d05230fSmrg cpu=$basic_machine 9663d05230fSmrg vendor=unknown 967ed6f5d66Smrg ;; 9683d05230fSmrgesac 9693d05230fSmrg 9703d05230fSmrgunset -v basic_machine 9713d05230fSmrg 9723d05230fSmrg# Decode basic machines in the full and proper CPU-Company form. 9733d05230fSmrgcase $cpu-$vendor in 9743d05230fSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9753d05230fSmrg # some cases the only manufacturer, in others, it is the most popular. 9763d05230fSmrg craynv-unknown) 9773d05230fSmrg vendor=cray 9783d05230fSmrg basic_os=${basic_os:-unicosmp} 979ed6f5d66Smrg ;; 9803d05230fSmrg c90-unknown | c90-cray) 9813d05230fSmrg vendor=cray 9823d05230fSmrg basic_os=${Basic_os:-unicos} 983ed6f5d66Smrg ;; 9843d05230fSmrg fx80-unknown) 9853d05230fSmrg vendor=alliant 986ed6f5d66Smrg ;; 9873d05230fSmrg romp-unknown) 9883d05230fSmrg vendor=ibm 989ed6f5d66Smrg ;; 9903d05230fSmrg mmix-unknown) 9913d05230fSmrg vendor=knuth 992ed6f5d66Smrg ;; 9933d05230fSmrg microblaze-unknown | microblazeel-unknown) 9943d05230fSmrg vendor=xilinx 995ed6f5d66Smrg ;; 9963d05230fSmrg rs6000-unknown) 9973d05230fSmrg vendor=ibm 998ed6f5d66Smrg ;; 9993d05230fSmrg vax-unknown) 10003d05230fSmrg vendor=dec 1001ed6f5d66Smrg ;; 10023d05230fSmrg pdp11-unknown) 10033d05230fSmrg vendor=dec 1004ed6f5d66Smrg ;; 10053d05230fSmrg we32k-unknown) 10063d05230fSmrg vendor=att 1007ed6f5d66Smrg ;; 10083d05230fSmrg cydra-unknown) 10093d05230fSmrg vendor=cydrome 1010ed6f5d66Smrg ;; 10113d05230fSmrg i370-ibm*) 10123d05230fSmrg vendor=ibm 1013ed6f5d66Smrg ;; 10143d05230fSmrg orion-unknown) 10153d05230fSmrg vendor=highlevel 1016ed6f5d66Smrg ;; 10173d05230fSmrg xps-unknown | xps100-unknown) 10183d05230fSmrg cpu=xps100 10193d05230fSmrg vendor=honeywell 1020ed6f5d66Smrg ;; 10213d05230fSmrg 10223d05230fSmrg # Here we normalize CPU types with a missing or matching vendor 10233d05230fSmrg dpx20-unknown | dpx20-bull) 10243d05230fSmrg cpu=rs6000 10253d05230fSmrg vendor=bull 10263d05230fSmrg basic_os=${basic_os:-bosx} 1027ed6f5d66Smrg ;; 10283d05230fSmrg 10293d05230fSmrg # Here we normalize CPU types irrespective of the vendor 10303d05230fSmrg amd64-*) 10313d05230fSmrg cpu=x86_64 1032ed6f5d66Smrg ;; 10333d05230fSmrg blackfin-*) 10343d05230fSmrg cpu=bfin 10353d05230fSmrg basic_os=linux 1036ed6f5d66Smrg ;; 10373d05230fSmrg c54x-*) 10383d05230fSmrg cpu=tic54x 1039ed6f5d66Smrg ;; 10403d05230fSmrg c55x-*) 10413d05230fSmrg cpu=tic55x 1042ed6f5d66Smrg ;; 10433d05230fSmrg c6x-*) 10443d05230fSmrg cpu=tic6x 1045ed6f5d66Smrg ;; 10463d05230fSmrg e500v[12]-*) 10473d05230fSmrg cpu=powerpc 10483d05230fSmrg basic_os=${basic_os}"spe" 1049ed6f5d66Smrg ;; 10503d05230fSmrg mips3*-*) 10513d05230fSmrg cpu=mips64 1052ed6f5d66Smrg ;; 10533d05230fSmrg ms1-*) 10543d05230fSmrg cpu=mt 1055ed6f5d66Smrg ;; 10563d05230fSmrg m68knommu-*) 10573d05230fSmrg cpu=m68k 10583d05230fSmrg basic_os=linux 1059ed6f5d66Smrg ;; 10603d05230fSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10613d05230fSmrg cpu=s12z 1062ed6f5d66Smrg ;; 10633d05230fSmrg openrisc-*) 10643d05230fSmrg cpu=or32 1065ed6f5d66Smrg ;; 10663d05230fSmrg parisc-*) 10673d05230fSmrg cpu=hppa 10683d05230fSmrg basic_os=linux 1069ed6f5d66Smrg ;; 10703d05230fSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10713d05230fSmrg cpu=i586 1072ed6f5d66Smrg ;; 10733d05230fSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 10743d05230fSmrg cpu=i686 1075ed6f5d66Smrg ;; 10763d05230fSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10773d05230fSmrg cpu=i686 1078ed6f5d66Smrg ;; 10793d05230fSmrg pentium4-*) 10803d05230fSmrg cpu=i786 1081ed6f5d66Smrg ;; 10823d05230fSmrg pc98-*) 10833d05230fSmrg cpu=i386 1084ed6f5d66Smrg ;; 10853d05230fSmrg ppc-* | ppcbe-*) 10863d05230fSmrg cpu=powerpc 1087ed6f5d66Smrg ;; 10883d05230fSmrg ppcle-* | powerpclittle-*) 10893d05230fSmrg cpu=powerpcle 1090ed6f5d66Smrg ;; 10913d05230fSmrg ppc64-*) 10923d05230fSmrg cpu=powerpc64 1093ed6f5d66Smrg ;; 10943d05230fSmrg ppc64le-* | powerpc64little-*) 10953d05230fSmrg cpu=powerpc64le 1096ed6f5d66Smrg ;; 10973d05230fSmrg sb1-*) 10983d05230fSmrg cpu=mipsisa64sb1 1099ed6f5d66Smrg ;; 11003d05230fSmrg sb1el-*) 11013d05230fSmrg cpu=mipsisa64sb1el 1102ed6f5d66Smrg ;; 11033d05230fSmrg sh5e[lb]-*) 11043d05230fSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1105ed6f5d66Smrg ;; 11063d05230fSmrg spur-*) 11073d05230fSmrg cpu=spur 1108ed6f5d66Smrg ;; 11093d05230fSmrg strongarm-* | thumb-*) 11103d05230fSmrg cpu=arm 1111ed6f5d66Smrg ;; 11123d05230fSmrg tx39-*) 11133d05230fSmrg cpu=mipstx39 1114ed6f5d66Smrg ;; 11153d05230fSmrg tx39el-*) 11163d05230fSmrg cpu=mipstx39el 1117ed6f5d66Smrg ;; 11183d05230fSmrg x64-*) 11193d05230fSmrg cpu=x86_64 1120ed6f5d66Smrg ;; 11213d05230fSmrg xscale-* | xscalee[bl]-*) 11223d05230fSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1123ed6f5d66Smrg ;; 11243d05230fSmrg arm64-*) 11253d05230fSmrg cpu=aarch64 1126ed6f5d66Smrg ;; 11273d05230fSmrg 11283d05230fSmrg # Recognize the canonical CPU Types that limit and/or modify the 11293d05230fSmrg # company names they are paired with. 11303d05230fSmrg cr16-*) 11313d05230fSmrg basic_os=${basic_os:-elf} 1132ed6f5d66Smrg ;; 11333d05230fSmrg crisv32-* | etraxfs*-*) 11343d05230fSmrg cpu=crisv32 11353d05230fSmrg vendor=axis 1136ed6f5d66Smrg ;; 11373d05230fSmrg cris-* | etrax*-*) 11383d05230fSmrg cpu=cris 11393d05230fSmrg vendor=axis 1140ed6f5d66Smrg ;; 11413d05230fSmrg crx-*) 11423d05230fSmrg basic_os=${basic_os:-elf} 1143ed6f5d66Smrg ;; 11443d05230fSmrg neo-tandem) 11453d05230fSmrg cpu=neo 11463d05230fSmrg vendor=tandem 1147ed6f5d66Smrg ;; 11483d05230fSmrg nse-tandem) 11493d05230fSmrg cpu=nse 11503d05230fSmrg vendor=tandem 1151ed6f5d66Smrg ;; 11523d05230fSmrg nsr-tandem) 11533d05230fSmrg cpu=nsr 11543d05230fSmrg vendor=tandem 1155ed6f5d66Smrg ;; 11563d05230fSmrg nsv-tandem) 11573d05230fSmrg cpu=nsv 11583d05230fSmrg vendor=tandem 1159ed6f5d66Smrg ;; 11603d05230fSmrg nsx-tandem) 11613d05230fSmrg cpu=nsx 11623d05230fSmrg vendor=tandem 1163ed6f5d66Smrg ;; 11643d05230fSmrg mipsallegrexel-sony) 11653d05230fSmrg cpu=mipsallegrexel 11663d05230fSmrg vendor=sony 1167ed6f5d66Smrg ;; 11683d05230fSmrg tile*-*) 11693d05230fSmrg basic_os=${basic_os:-linux-gnu} 1170ed6f5d66Smrg ;; 11713d05230fSmrg 1172ed6f5d66Smrg *) 11733d05230fSmrg # Recognize the canonical CPU types that are allowed with any 11743d05230fSmrg # company name. 11753d05230fSmrg case $cpu in 11763d05230fSmrg 1750a | 580 \ 11773d05230fSmrg | a29k \ 11783d05230fSmrg | aarch64 | aarch64_be \ 11793d05230fSmrg | abacus \ 11803d05230fSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11813d05230fSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11823d05230fSmrg | alphapca5[67] | alpha64pca5[67] \ 11833d05230fSmrg | am33_2.0 \ 11843d05230fSmrg | amdgcn \ 11853d05230fSmrg | arc | arceb | arc32 | arc64 \ 11863d05230fSmrg | arm | arm[lb]e | arme[lb] | armv* \ 11873d05230fSmrg | avr | avr32 \ 11883d05230fSmrg | asmjs \ 11893d05230fSmrg | ba \ 11903d05230fSmrg | be32 | be64 \ 11913d05230fSmrg | bfin | bpf | bs2000 \ 11923d05230fSmrg | c[123]* | c30 | [cjt]90 | c4x \ 11933d05230fSmrg | c8051 | clipper | craynv | csky | cydra \ 11943d05230fSmrg | d10v | d30v | dlx | dsp16xx \ 11953d05230fSmrg | e2k | elxsi | epiphany \ 11963d05230fSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 11973d05230fSmrg | h8300 | h8500 \ 11983d05230fSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 11993d05230fSmrg | hexagon \ 12003d05230fSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12013d05230fSmrg | ip2k | iq2000 \ 12023d05230fSmrg | k1om \ 12033d05230fSmrg | le32 | le64 \ 12043d05230fSmrg | lm32 \ 12053d05230fSmrg | loongarch32 | loongarch64 | loongarchx32 \ 12063d05230fSmrg | m32c | m32r | m32rle \ 12073d05230fSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12083d05230fSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12093d05230fSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12103d05230fSmrg | microblaze | microblazeel \ 12113d05230fSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12123d05230fSmrg | mips16 \ 12133d05230fSmrg | mips64 | mips64eb | mips64el \ 12143d05230fSmrg | mips64octeon | mips64octeonel \ 12153d05230fSmrg | mips64orion | mips64orionel \ 12163d05230fSmrg | mips64r5900 | mips64r5900el \ 12173d05230fSmrg | mips64vr | mips64vrel \ 12183d05230fSmrg | mips64vr4100 | mips64vr4100el \ 12193d05230fSmrg | mips64vr4300 | mips64vr4300el \ 12203d05230fSmrg | mips64vr5000 | mips64vr5000el \ 12213d05230fSmrg | mips64vr5900 | mips64vr5900el \ 12223d05230fSmrg | mipsisa32 | mipsisa32el \ 12233d05230fSmrg | mipsisa32r2 | mipsisa32r2el \ 12243d05230fSmrg | mipsisa32r3 | mipsisa32r3el \ 12253d05230fSmrg | mipsisa32r5 | mipsisa32r5el \ 12263d05230fSmrg | mipsisa32r6 | mipsisa32r6el \ 12273d05230fSmrg | mipsisa64 | mipsisa64el \ 12283d05230fSmrg | mipsisa64r2 | mipsisa64r2el \ 12293d05230fSmrg | mipsisa64r3 | mipsisa64r3el \ 12303d05230fSmrg | mipsisa64r5 | mipsisa64r5el \ 12313d05230fSmrg | mipsisa64r6 | mipsisa64r6el \ 12323d05230fSmrg | mipsisa64sb1 | mipsisa64sb1el \ 12333d05230fSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 12343d05230fSmrg | mipsr5900 | mipsr5900el \ 12353d05230fSmrg | mipstx39 | mipstx39el \ 12363d05230fSmrg | mmix \ 12373d05230fSmrg | mn10200 | mn10300 \ 12383d05230fSmrg | moxie \ 12393d05230fSmrg | mt \ 12403d05230fSmrg | msp430 \ 12413d05230fSmrg | nds32 | nds32le | nds32be \ 12423d05230fSmrg | nfp \ 12433d05230fSmrg | nios | nios2 | nios2eb | nios2el \ 12443d05230fSmrg | none | np1 | ns16k | ns32k | nvptx \ 12453d05230fSmrg | open8 \ 12463d05230fSmrg | or1k* \ 12473d05230fSmrg | or32 \ 12483d05230fSmrg | orion \ 12493d05230fSmrg | picochip \ 12503d05230fSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12513d05230fSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12523d05230fSmrg | pru \ 12533d05230fSmrg | pyramid \ 12543d05230fSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12553d05230fSmrg | rl78 | romp | rs6000 | rx \ 12563d05230fSmrg | s390 | s390x \ 12573d05230fSmrg | score \ 12583d05230fSmrg | sh | shl \ 12593d05230fSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12603d05230fSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12613d05230fSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12623d05230fSmrg | sparclite \ 12633d05230fSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12643d05230fSmrg | spu \ 12653d05230fSmrg | tahoe \ 12663d05230fSmrg | thumbv7* \ 12673d05230fSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12683d05230fSmrg | tron \ 12693d05230fSmrg | ubicom32 \ 12703d05230fSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12713d05230fSmrg | vax \ 12723d05230fSmrg | visium \ 12733d05230fSmrg | w65 \ 12743d05230fSmrg | wasm32 | wasm64 \ 12753d05230fSmrg | we32k \ 12763d05230fSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12773d05230fSmrg | xstormy16 | xtensa* \ 12783d05230fSmrg | ymp \ 12793d05230fSmrg | z8k | z80) 12803d05230fSmrg ;; 12813d05230fSmrg 12823d05230fSmrg *) 12833d05230fSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12843d05230fSmrg exit 1 12853d05230fSmrg ;; 12863d05230fSmrg esac 1287ed6f5d66Smrg ;; 1288ed6f5d66Smrgesac 1289ed6f5d66Smrg 1290ed6f5d66Smrg# Here we canonicalize certain aliases for manufacturers. 12913d05230fSmrgcase $vendor in 12923d05230fSmrg digital*) 12933d05230fSmrg vendor=dec 1294ed6f5d66Smrg ;; 12953d05230fSmrg commodore*) 12963d05230fSmrg vendor=cbm 1297ed6f5d66Smrg ;; 1298ed6f5d66Smrg *) 1299ed6f5d66Smrg ;; 1300ed6f5d66Smrgesac 1301ed6f5d66Smrg 1302ed6f5d66Smrg# Decode manufacturer-specific aliases for certain operating systems. 1303ed6f5d66Smrg 13043d05230fSmrgif test x$basic_os != x 1305ed6f5d66Smrgthen 13063d05230fSmrg 13073d05230fSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 13083d05230fSmrg# set os. 13093d05230fSmrgcase $basic_os in 13103d05230fSmrg gnu/linux*) 13113d05230fSmrg kernel=linux 13123d05230fSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13133d05230fSmrg ;; 13143d05230fSmrg os2-emx) 13153d05230fSmrg kernel=os2 13163d05230fSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13173d05230fSmrg ;; 13183d05230fSmrg nto-qnx*) 13193d05230fSmrg kernel=nto 13203d05230fSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13213d05230fSmrg ;; 13223d05230fSmrg *-*) 13233d05230fSmrg # shellcheck disable=SC2162 13243d05230fSmrg saved_IFS=$IFS 13253d05230fSmrg IFS="-" read kernel os <<EOF 13263d05230fSmrg$basic_os 13273d05230fSmrgEOF 13283d05230fSmrg IFS=$saved_IFS 13293d05230fSmrg ;; 13303d05230fSmrg # Default OS when just kernel was specified 13313d05230fSmrg nto*) 13323d05230fSmrg kernel=nto 13333d05230fSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13343d05230fSmrg ;; 13353d05230fSmrg linux*) 13363d05230fSmrg kernel=linux 13373d05230fSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13383d05230fSmrg ;; 13393d05230fSmrg *) 13403d05230fSmrg kernel= 13413d05230fSmrg os=$basic_os 1342ed6f5d66Smrg ;; 13433d05230fSmrgesac 13443d05230fSmrg 13453d05230fSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13463d05230fSmrg# etc.) 13473d05230fSmrgcase $os in 13483d05230fSmrg # First match some system type aliases that might get confused 13493d05230fSmrg # with valid system types. 13503d05230fSmrg # solaris* is a basic system type, with this one exception. 13513d05230fSmrg auroraux) 13523d05230fSmrg os=auroraux 1353ed6f5d66Smrg ;; 13543d05230fSmrg bluegene*) 13553d05230fSmrg os=cnk 1356ed6f5d66Smrg ;; 13573d05230fSmrg solaris1 | solaris1.*) 13583d05230fSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1359ed6f5d66Smrg ;; 13603d05230fSmrg solaris) 13613d05230fSmrg os=solaris2 1362ed6f5d66Smrg ;; 13633d05230fSmrg unixware*) 13643d05230fSmrg os=sysv4.2uw 1365ed6f5d66Smrg ;; 13663d05230fSmrg # es1800 is here to avoid being matched by es* (a different OS) 13673d05230fSmrg es1800*) 13683d05230fSmrg os=ose 1369ed6f5d66Smrg ;; 13703d05230fSmrg # Some version numbers need modification 13713d05230fSmrg chorusos*) 13723d05230fSmrg os=chorusos 1373ed6f5d66Smrg ;; 13743d05230fSmrg isc) 13753d05230fSmrg os=isc2.2 1376ed6f5d66Smrg ;; 13773d05230fSmrg sco6) 13783d05230fSmrg os=sco5v6 1379ed6f5d66Smrg ;; 13803d05230fSmrg sco5) 13813d05230fSmrg os=sco3.2v5 1382ed6f5d66Smrg ;; 13833d05230fSmrg sco4) 13843d05230fSmrg os=sco3.2v4 1385ed6f5d66Smrg ;; 13863d05230fSmrg sco3.2.[4-9]*) 13873d05230fSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1388ed6f5d66Smrg ;; 13893d05230fSmrg sco*v* | scout) 13903d05230fSmrg # Don't match below 1391ed6f5d66Smrg ;; 13923d05230fSmrg sco*) 13933d05230fSmrg os=sco3.2v2 1394ed6f5d66Smrg ;; 13953d05230fSmrg psos*) 13963d05230fSmrg os=psos 1397ed6f5d66Smrg ;; 13983d05230fSmrg qnx*) 13993d05230fSmrg os=qnx 1400ed6f5d66Smrg ;; 14013d05230fSmrg hiux*) 14023d05230fSmrg os=hiuxwe2 1403ed6f5d66Smrg ;; 14043d05230fSmrg lynx*178) 14053d05230fSmrg os=lynxos178 1406ed6f5d66Smrg ;; 14073d05230fSmrg lynx*5) 14083d05230fSmrg os=lynxos5 1409ed6f5d66Smrg ;; 14103d05230fSmrg lynxos*) 14113d05230fSmrg # don't get caught up in next wildcard 1412ed6f5d66Smrg ;; 14133d05230fSmrg lynx*) 14143d05230fSmrg os=lynxos 1415ed6f5d66Smrg ;; 14163d05230fSmrg mac[0-9]*) 14173d05230fSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 1418ed6f5d66Smrg ;; 14193d05230fSmrg opened*) 14203d05230fSmrg os=openedition 1421ed6f5d66Smrg ;; 14223d05230fSmrg os400*) 14233d05230fSmrg os=os400 1424ed6f5d66Smrg ;; 14253d05230fSmrg sunos5*) 14263d05230fSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1427ed6f5d66Smrg ;; 14283d05230fSmrg sunos6*) 14293d05230fSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1430ed6f5d66Smrg ;; 14313d05230fSmrg wince*) 14323d05230fSmrg os=wince 1433ed6f5d66Smrg ;; 14343d05230fSmrg utek*) 14353d05230fSmrg os=bsd 1436ed6f5d66Smrg ;; 14373d05230fSmrg dynix*) 14383d05230fSmrg os=bsd 1439ed6f5d66Smrg ;; 14403d05230fSmrg acis*) 14413d05230fSmrg os=aos 1442ed6f5d66Smrg ;; 14433d05230fSmrg atheos*) 14443d05230fSmrg os=atheos 1445ed6f5d66Smrg ;; 14463d05230fSmrg syllable*) 14473d05230fSmrg os=syllable 1448ed6f5d66Smrg ;; 14493d05230fSmrg 386bsd) 14503d05230fSmrg os=bsd 1451ed6f5d66Smrg ;; 14523d05230fSmrg ctix* | uts*) 14533d05230fSmrg os=sysv 1454ed6f5d66Smrg ;; 14553d05230fSmrg nova*) 14563d05230fSmrg os=rtmk-nova 1457ed6f5d66Smrg ;; 14583d05230fSmrg ns2) 14593d05230fSmrg os=nextstep2 1460ed6f5d66Smrg ;; 14613d05230fSmrg # Preserve the version number of sinix5. 14623d05230fSmrg sinix5.*) 14633d05230fSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1464ed6f5d66Smrg ;; 14653d05230fSmrg sinix*) 14663d05230fSmrg os=sysv4 1467ed6f5d66Smrg ;; 14683d05230fSmrg tpf*) 14693d05230fSmrg os=tpf 1470ed6f5d66Smrg ;; 14713d05230fSmrg triton*) 14723d05230fSmrg os=sysv3 1473ed6f5d66Smrg ;; 14743d05230fSmrg oss*) 14753d05230fSmrg os=sysv3 1476ed6f5d66Smrg ;; 14773d05230fSmrg svr4*) 14783d05230fSmrg os=sysv4 1479ed6f5d66Smrg ;; 14803d05230fSmrg svr3) 14813d05230fSmrg os=sysv3 1482ed6f5d66Smrg ;; 14833d05230fSmrg sysvr4) 14843d05230fSmrg os=sysv4 1485ed6f5d66Smrg ;; 14863d05230fSmrg ose*) 14873d05230fSmrg os=ose 1488ed6f5d66Smrg ;; 14893d05230fSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14903d05230fSmrg os=mint 1491ed6f5d66Smrg ;; 14923d05230fSmrg dicos*) 14933d05230fSmrg os=dicos 1494fbc03982Smrg ;; 14953d05230fSmrg pikeos*) 14963d05230fSmrg # Until real need of OS specific support for 14973d05230fSmrg # particular features comes up, bare metal 14983d05230fSmrg # configurations are quite functional. 14993d05230fSmrg case $cpu in 15003d05230fSmrg arm*) 15013d05230fSmrg os=eabi 15023d05230fSmrg ;; 15033d05230fSmrg *) 15043d05230fSmrg os=elf 15053d05230fSmrg ;; 15063d05230fSmrg esac 1507ed6f5d66Smrg ;; 1508ed6f5d66Smrg *) 15093d05230fSmrg # No normalization, but not necessarily accepted, that comes below. 1510ed6f5d66Smrg ;; 1511ed6f5d66Smrgesac 15123d05230fSmrg 1513ed6f5d66Smrgelse 1514ed6f5d66Smrg 1515ed6f5d66Smrg# Here we handle the default operating systems that come with various machines. 1516ed6f5d66Smrg# The value should be what the vendor currently ships out the door with their 1517ed6f5d66Smrg# machine or put another way, the most popular os provided with the machine. 1518ed6f5d66Smrg 1519ed6f5d66Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1520ed6f5d66Smrg# "-sun"), then you have to tell the case statement up towards the top 1521ed6f5d66Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1522ed6f5d66Smrg# will signal an error saying that MANUFACTURER isn't an operating 1523ed6f5d66Smrg# system, and we'll never get to this point. 1524ed6f5d66Smrg 15253d05230fSmrgkernel= 15263d05230fSmrgcase $cpu-$vendor in 1527ed6f5d66Smrg score-*) 15283d05230fSmrg os=elf 1529ed6f5d66Smrg ;; 1530ed6f5d66Smrg spu-*) 15313d05230fSmrg os=elf 1532ed6f5d66Smrg ;; 1533ed6f5d66Smrg *-acorn) 15343d05230fSmrg os=riscix1.2 1535ed6f5d66Smrg ;; 1536ed6f5d66Smrg arm*-rebel) 15373d05230fSmrg kernel=linux 15383d05230fSmrg os=gnu 1539ed6f5d66Smrg ;; 1540ed6f5d66Smrg arm*-semi) 15413d05230fSmrg os=aout 1542ed6f5d66Smrg ;; 1543ed6f5d66Smrg c4x-* | tic4x-*) 15443d05230fSmrg os=coff 1545ed6f5d66Smrg ;; 1546ed6f5d66Smrg c8051-*) 15473d05230fSmrg os=elf 15483d05230fSmrg ;; 15493d05230fSmrg clipper-intergraph) 15503d05230fSmrg os=clix 1551ed6f5d66Smrg ;; 1552ed6f5d66Smrg hexagon-*) 15533d05230fSmrg os=elf 1554ed6f5d66Smrg ;; 1555ed6f5d66Smrg tic54x-*) 15563d05230fSmrg os=coff 1557ed6f5d66Smrg ;; 1558ed6f5d66Smrg tic55x-*) 15593d05230fSmrg os=coff 1560ed6f5d66Smrg ;; 1561ed6f5d66Smrg tic6x-*) 15623d05230fSmrg os=coff 1563ed6f5d66Smrg ;; 1564ed6f5d66Smrg # This must come before the *-dec entry. 1565ed6f5d66Smrg pdp10-*) 15663d05230fSmrg os=tops20 1567ed6f5d66Smrg ;; 1568ed6f5d66Smrg pdp11-*) 15693d05230fSmrg os=none 1570ed6f5d66Smrg ;; 1571ed6f5d66Smrg *-dec | vax-*) 15723d05230fSmrg os=ultrix4.2 1573ed6f5d66Smrg ;; 1574ed6f5d66Smrg m68*-apollo) 15753d05230fSmrg os=domain 1576ed6f5d66Smrg ;; 1577ed6f5d66Smrg i386-sun) 15783d05230fSmrg os=sunos4.0.2 1579ed6f5d66Smrg ;; 1580ed6f5d66Smrg m68000-sun) 15813d05230fSmrg os=sunos3 1582ed6f5d66Smrg ;; 1583ed6f5d66Smrg m68*-cisco) 15843d05230fSmrg os=aout 1585ed6f5d66Smrg ;; 1586ed6f5d66Smrg mep-*) 15873d05230fSmrg os=elf 1588ed6f5d66Smrg ;; 1589ed6f5d66Smrg mips*-cisco) 15903d05230fSmrg os=elf 1591ed6f5d66Smrg ;; 1592ed6f5d66Smrg mips*-*) 15933d05230fSmrg os=elf 1594ed6f5d66Smrg ;; 1595ed6f5d66Smrg or32-*) 15963d05230fSmrg os=coff 1597ed6f5d66Smrg ;; 1598ed6f5d66Smrg *-tti) # must be before sparc entry or we get the wrong os. 15993d05230fSmrg os=sysv3 1600ed6f5d66Smrg ;; 1601ed6f5d66Smrg sparc-* | *-sun) 16023d05230fSmrg os=sunos4.1.1 1603ed6f5d66Smrg ;; 1604fbc03982Smrg pru-*) 16053d05230fSmrg os=elf 1606fbc03982Smrg ;; 1607ed6f5d66Smrg *-be) 16083d05230fSmrg os=beos 1609ed6f5d66Smrg ;; 1610ed6f5d66Smrg *-ibm) 16113d05230fSmrg os=aix 1612ed6f5d66Smrg ;; 1613ed6f5d66Smrg *-knuth) 16143d05230fSmrg os=mmixware 1615ed6f5d66Smrg ;; 1616ed6f5d66Smrg *-wec) 16173d05230fSmrg os=proelf 1618ed6f5d66Smrg ;; 1619ed6f5d66Smrg *-winbond) 16203d05230fSmrg os=proelf 1621ed6f5d66Smrg ;; 1622ed6f5d66Smrg *-oki) 16233d05230fSmrg os=proelf 1624ed6f5d66Smrg ;; 1625ed6f5d66Smrg *-hp) 16263d05230fSmrg os=hpux 1627ed6f5d66Smrg ;; 1628ed6f5d66Smrg *-hitachi) 16293d05230fSmrg os=hiux 1630ed6f5d66Smrg ;; 1631ed6f5d66Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16323d05230fSmrg os=sysv 1633ed6f5d66Smrg ;; 1634ed6f5d66Smrg *-cbm) 16353d05230fSmrg os=amigaos 1636ed6f5d66Smrg ;; 1637ed6f5d66Smrg *-dg) 16383d05230fSmrg os=dgux 1639ed6f5d66Smrg ;; 1640ed6f5d66Smrg *-dolphin) 16413d05230fSmrg os=sysv3 1642ed6f5d66Smrg ;; 1643ed6f5d66Smrg m68k-ccur) 16443d05230fSmrg os=rtu 1645ed6f5d66Smrg ;; 1646ed6f5d66Smrg m88k-omron*) 16473d05230fSmrg os=luna 1648ed6f5d66Smrg ;; 16493d05230fSmrg *-next) 16503d05230fSmrg os=nextstep 1651ed6f5d66Smrg ;; 1652ed6f5d66Smrg *-sequent) 16533d05230fSmrg os=ptx 1654ed6f5d66Smrg ;; 1655ed6f5d66Smrg *-crds) 16563d05230fSmrg os=unos 1657ed6f5d66Smrg ;; 1658ed6f5d66Smrg *-ns) 16593d05230fSmrg os=genix 1660ed6f5d66Smrg ;; 1661ed6f5d66Smrg i370-*) 16623d05230fSmrg os=mvs 1663ed6f5d66Smrg ;; 1664ed6f5d66Smrg *-gould) 16653d05230fSmrg os=sysv 1666ed6f5d66Smrg ;; 1667ed6f5d66Smrg *-highlevel) 16683d05230fSmrg os=bsd 1669ed6f5d66Smrg ;; 1670ed6f5d66Smrg *-encore) 16713d05230fSmrg os=bsd 1672ed6f5d66Smrg ;; 1673ed6f5d66Smrg *-sgi) 16743d05230fSmrg os=irix 1675ed6f5d66Smrg ;; 1676ed6f5d66Smrg *-siemens) 16773d05230fSmrg os=sysv4 1678ed6f5d66Smrg ;; 1679ed6f5d66Smrg *-masscomp) 16803d05230fSmrg os=rtu 1681ed6f5d66Smrg ;; 1682ed6f5d66Smrg f30[01]-fujitsu | f700-fujitsu) 16833d05230fSmrg os=uxpv 1684ed6f5d66Smrg ;; 1685ed6f5d66Smrg *-rom68k) 16863d05230fSmrg os=coff 1687ed6f5d66Smrg ;; 1688ed6f5d66Smrg *-*bug) 16893d05230fSmrg os=coff 1690ed6f5d66Smrg ;; 1691ed6f5d66Smrg *-apple) 16923d05230fSmrg os=macos 1693ed6f5d66Smrg ;; 1694ed6f5d66Smrg *-atari*) 16953d05230fSmrg os=mint 16963d05230fSmrg ;; 16973d05230fSmrg *-wrs) 16983d05230fSmrg os=vxworks 1699ed6f5d66Smrg ;; 1700ed6f5d66Smrg *) 17013d05230fSmrg os=none 1702ed6f5d66Smrg ;; 1703ed6f5d66Smrgesac 17043d05230fSmrg 1705ed6f5d66Smrgfi 1706ed6f5d66Smrg 17073d05230fSmrg# Now, validate our (potentially fixed-up) OS. 17083d05230fSmrgcase $os in 17093d05230fSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17103d05230fSmrg musl* | newlib* | relibc* | uclibc*) 17113d05230fSmrg ;; 17123d05230fSmrg # Likewise for "kernel-abi" 17133d05230fSmrg eabi* | gnueabi*) 17143d05230fSmrg ;; 17153d05230fSmrg # VxWorks passes extra cpu info in the 4th filed. 17163d05230fSmrg simlinux | simwindows | spe) 17173d05230fSmrg ;; 17183d05230fSmrg # Now accept the basic system types. 17193d05230fSmrg # The portable systems comes first. 17203d05230fSmrg # Each alternative MUST end in a * to match a version number. 17213d05230fSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17223d05230fSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17233d05230fSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17243d05230fSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17253d05230fSmrg | hiux* | abug | nacl* | netware* | windows* \ 17263d05230fSmrg | os9* | macos* | osx* | ios* \ 17273d05230fSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17283d05230fSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17293d05230fSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17303d05230fSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17313d05230fSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17323d05230fSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17333d05230fSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17343d05230fSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17353d05230fSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17363d05230fSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17373d05230fSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17383d05230fSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17393d05230fSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17403d05230fSmrg | midipix* | mingw32* | mingw64* | mint* \ 17413d05230fSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17423d05230fSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17433d05230fSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17443d05230fSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17453d05230fSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17463d05230fSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17473d05230fSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17483d05230fSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17493d05230fSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17503d05230fSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17513d05230fSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 17523d05230fSmrg ;; 17533d05230fSmrg # This one is extra strict with allowed versions 17543d05230fSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17553d05230fSmrg # Don't forget version if it is 3.2v4 or newer. 17563d05230fSmrg ;; 17573d05230fSmrg none) 17583d05230fSmrg ;; 17593d05230fSmrg *) 17603d05230fSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17613d05230fSmrg exit 1 17623d05230fSmrg ;; 17633d05230fSmrgesac 17643d05230fSmrg 17653d05230fSmrg# As a final step for OS-related things, validate the OS-kernel combination 17663d05230fSmrg# (given a valid OS), if there is a kernel. 17673d05230fSmrgcase $kernel-$os in 17683d05230fSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17693d05230fSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 17703d05230fSmrg ;; 17713d05230fSmrg uclinux-uclibc* ) 17723d05230fSmrg ;; 17733d05230fSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 17743d05230fSmrg # These are just libc implementations, not actual OSes, and thus 17753d05230fSmrg # require a kernel. 17763d05230fSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17773d05230fSmrg exit 1 17783d05230fSmrg ;; 17793d05230fSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 17803d05230fSmrg ;; 17813d05230fSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 17823d05230fSmrg ;; 17833d05230fSmrg nto-qnx*) 17843d05230fSmrg ;; 17853d05230fSmrg os2-emx) 17863d05230fSmrg ;; 17873d05230fSmrg *-eabi* | *-gnueabi*) 17883d05230fSmrg ;; 17893d05230fSmrg -*) 17903d05230fSmrg # Blank kernel with real OS is always fine. 17913d05230fSmrg ;; 17923d05230fSmrg *-*) 17933d05230fSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 17943d05230fSmrg exit 1 17953d05230fSmrg ;; 17963d05230fSmrgesac 17973d05230fSmrg 1798ed6f5d66Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1799ed6f5d66Smrg# manufacturer. We pick the logical manufacturer. 18003d05230fSmrgcase $vendor in 18013d05230fSmrg unknown) 18023d05230fSmrg case $cpu-$os in 18033d05230fSmrg *-riscix*) 1804ed6f5d66Smrg vendor=acorn 1805ed6f5d66Smrg ;; 18063d05230fSmrg *-sunos*) 1807ed6f5d66Smrg vendor=sun 1808ed6f5d66Smrg ;; 18093d05230fSmrg *-cnk* | *-aix*) 1810ed6f5d66Smrg vendor=ibm 1811ed6f5d66Smrg ;; 18123d05230fSmrg *-beos*) 1813ed6f5d66Smrg vendor=be 1814ed6f5d66Smrg ;; 18153d05230fSmrg *-hpux*) 1816ed6f5d66Smrg vendor=hp 1817ed6f5d66Smrg ;; 18183d05230fSmrg *-mpeix*) 1819ed6f5d66Smrg vendor=hp 1820ed6f5d66Smrg ;; 18213d05230fSmrg *-hiux*) 1822ed6f5d66Smrg vendor=hitachi 1823ed6f5d66Smrg ;; 18243d05230fSmrg *-unos*) 1825ed6f5d66Smrg vendor=crds 1826ed6f5d66Smrg ;; 18273d05230fSmrg *-dgux*) 1828ed6f5d66Smrg vendor=dg 1829ed6f5d66Smrg ;; 18303d05230fSmrg *-luna*) 1831ed6f5d66Smrg vendor=omron 1832ed6f5d66Smrg ;; 18333d05230fSmrg *-genix*) 1834ed6f5d66Smrg vendor=ns 1835ed6f5d66Smrg ;; 18363d05230fSmrg *-clix*) 18373d05230fSmrg vendor=intergraph 18383d05230fSmrg ;; 18393d05230fSmrg *-mvs* | *-opened*) 18403d05230fSmrg vendor=ibm 18413d05230fSmrg ;; 18423d05230fSmrg *-os400*) 1843ed6f5d66Smrg vendor=ibm 1844ed6f5d66Smrg ;; 18453d05230fSmrg s390-* | s390x-*) 1846ed6f5d66Smrg vendor=ibm 1847ed6f5d66Smrg ;; 18483d05230fSmrg *-ptx*) 1849ed6f5d66Smrg vendor=sequent 1850ed6f5d66Smrg ;; 18513d05230fSmrg *-tpf*) 1852ed6f5d66Smrg vendor=ibm 1853ed6f5d66Smrg ;; 18543d05230fSmrg *-vxsim* | *-vxworks* | *-windiss*) 1855ed6f5d66Smrg vendor=wrs 1856ed6f5d66Smrg ;; 18573d05230fSmrg *-aux*) 1858ed6f5d66Smrg vendor=apple 1859ed6f5d66Smrg ;; 18603d05230fSmrg *-hms*) 1861ed6f5d66Smrg vendor=hitachi 1862ed6f5d66Smrg ;; 18633d05230fSmrg *-mpw* | *-macos*) 1864ed6f5d66Smrg vendor=apple 1865ed6f5d66Smrg ;; 18663d05230fSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1867ed6f5d66Smrg vendor=atari 1868ed6f5d66Smrg ;; 18693d05230fSmrg *-vos*) 1870ed6f5d66Smrg vendor=stratus 1871ed6f5d66Smrg ;; 1872ed6f5d66Smrg esac 1873ed6f5d66Smrg ;; 1874ed6f5d66Smrgesac 1875ed6f5d66Smrg 18763d05230fSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1877ed6f5d66Smrgexit 1878ed6f5d66Smrg 1879ed6f5d66Smrg# Local variables: 18803d05230fSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 1881ed6f5d66Smrg# time-stamp-start: "timestamp='" 1882ed6f5d66Smrg# time-stamp-format: "%:y-%02m-%02d" 1883ed6f5d66Smrg# time-stamp-end: "'" 1884ed6f5d66Smrg# End: 1885