10ad07f78Smrg#! /bin/sh 20ad07f78Smrg# Configuration validation subroutine script. 36c19a6d3Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 40ad07f78Smrg 56c19a6d3Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 60ad07f78Smrg 76c19a6d3Smrgtimestamp='2023-01-21' 86c19a6d3Smrg 96c19a6d3Smrg# This file is free software; you can redistribute it and/or modify it 106c19a6d3Smrg# under the terms of the GNU General Public License as published by 116c19a6d3Smrg# the Free Software Foundation, either version 3 of the License, or 120ad07f78Smrg# (at your option) any later version. 130ad07f78Smrg# 146c19a6d3Smrg# This program is distributed in the hope that it will be useful, but 156c19a6d3Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 166c19a6d3Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 176c19a6d3Smrg# General Public License for more details. 180ad07f78Smrg# 190ad07f78Smrg# You should have received a copy of the GNU General Public License 206c19a6d3Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 210ad07f78Smrg# 220ad07f78Smrg# As a special exception to the GNU General Public License, if you 230ad07f78Smrg# distribute this file as part of a program that contains a 240ad07f78Smrg# configuration script generated by Autoconf, you may include it under 256c19a6d3Smrg# the same distribution terms that you use for the rest of that 266c19a6d3Smrg# program. This Exception is an additional permission under section 7 276c19a6d3Smrg# of the GNU General Public License, version 3 ("GPLv3"). 280ad07f78Smrg 290ad07f78Smrg 306c19a6d3Smrg# Please send patches to <config-patches@gnu.org>. 310ad07f78Smrg# 320ad07f78Smrg# Configuration subroutine to validate and canonicalize a configuration type. 330ad07f78Smrg# Supply the specified configuration type as an argument. 340ad07f78Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 350ad07f78Smrg# Otherwise, we print the canonical config type on stdout and succeed. 360ad07f78Smrg 374028d71eSmrg# You can get the latest version of this script from: 386c19a6d3Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 394028d71eSmrg 400ad07f78Smrg# This file is supposed to be the same for all GNU packages 410ad07f78Smrg# and recognize all the CPU types, system types and aliases 420ad07f78Smrg# that are meaningful with *any* GNU software. 430ad07f78Smrg# Each package is responsible for reporting which valid configurations 440ad07f78Smrg# it does not support. The user should be able to distinguish 450ad07f78Smrg# a failure to support a valid configuration from a meaningless 460ad07f78Smrg# configuration. 470ad07f78Smrg 480ad07f78Smrg# The goal of this file is to map all the various variations of a given 490ad07f78Smrg# machine specification into a single specification in the form: 500ad07f78Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 510ad07f78Smrg# or in some cases, the newer four-part form: 520ad07f78Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 530ad07f78Smrg# It is wrong to echo any other type of specification. 540ad07f78Smrg 556c19a6d3Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 566c19a6d3Smrg# about features and limitations of the classic Bourne shell that were 576c19a6d3Smrg# superseded or lifted in POSIX. However, this script identifies a wide 586c19a6d3Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 596c19a6d3Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 606c19a6d3Smrg# have a pre-POSIX /bin/sh. 616c19a6d3Smrg 620ad07f78Smrgme=`echo "$0" | sed -e 's,.*/,,'` 630ad07f78Smrg 640ad07f78Smrgusage="\ 656c19a6d3SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 660ad07f78Smrg 670ad07f78SmrgCanonicalize a configuration name. 680ad07f78Smrg 696c19a6d3SmrgOptions: 700ad07f78Smrg -h, --help print this help, then exit 710ad07f78Smrg -t, --time-stamp print date of last modification, then exit 720ad07f78Smrg -v, --version print version number, then exit 730ad07f78Smrg 740ad07f78SmrgReport bugs and patches to <config-patches@gnu.org>." 750ad07f78Smrg 760ad07f78Smrgversion="\ 770ad07f78SmrgGNU config.sub ($timestamp) 780ad07f78Smrg 796c19a6d3SmrgCopyright 1992-2023 Free Software Foundation, Inc. 800ad07f78Smrg 810ad07f78SmrgThis is free software; see the source for copying conditions. There is NO 820ad07f78Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 830ad07f78Smrg 840ad07f78Smrghelp=" 850ad07f78SmrgTry \`$me --help' for more information." 860ad07f78Smrg 870ad07f78Smrg# Parse command line 880ad07f78Smrgwhile test $# -gt 0 ; do 890ad07f78Smrg case $1 in 900ad07f78Smrg --time-stamp | --time* | -t ) 910ad07f78Smrg echo "$timestamp" ; exit ;; 920ad07f78Smrg --version | -v ) 930ad07f78Smrg echo "$version" ; exit ;; 940ad07f78Smrg --help | --h* | -h ) 950ad07f78Smrg echo "$usage"; exit ;; 960ad07f78Smrg -- ) # Stop option processing 970ad07f78Smrg shift; break ;; 980ad07f78Smrg - ) # Use stdin as input. 990ad07f78Smrg break ;; 1000ad07f78Smrg -* ) 1016c19a6d3Smrg echo "$me: invalid option $1$help" >&2 1020ad07f78Smrg exit 1 ;; 1030ad07f78Smrg 1040ad07f78Smrg *local*) 1050ad07f78Smrg # First pass through any local machine types. 1066c19a6d3Smrg echo "$1" 1070ad07f78Smrg exit ;; 1080ad07f78Smrg 1090ad07f78Smrg * ) 1100ad07f78Smrg break ;; 1110ad07f78Smrg esac 1120ad07f78Smrgdone 1130ad07f78Smrg 1140ad07f78Smrgcase $# in 1150ad07f78Smrg 0) echo "$me: missing argument$help" >&2 1160ad07f78Smrg exit 1;; 1170ad07f78Smrg 1) ;; 1180ad07f78Smrg *) echo "$me: too many arguments$help" >&2 1190ad07f78Smrg exit 1;; 1200ad07f78Smrgesac 1210ad07f78Smrg 1226c19a6d3Smrg# Split fields of configuration type 1236c19a6d3Smrg# shellcheck disable=SC2162 1246c19a6d3Smrgsaved_IFS=$IFS 1256c19a6d3SmrgIFS="-" read field1 field2 field3 field4 <<EOF 1266c19a6d3Smrg$1 1276c19a6d3SmrgEOF 1286c19a6d3SmrgIFS=$saved_IFS 1290ad07f78Smrg 1306c19a6d3Smrg# Separate into logical components for further validation 1316c19a6d3Smrgcase $1 in 1326c19a6d3Smrg *-*-*-*-*) 1336c19a6d3Smrg echo Invalid configuration \`"$1"\': more than four components >&2 1346c19a6d3Smrg exit 1 1350ad07f78Smrg ;; 1366c19a6d3Smrg *-*-*-*) 1376c19a6d3Smrg basic_machine=$field1-$field2 1386c19a6d3Smrg basic_os=$field3-$field4 1390ad07f78Smrg ;; 1406c19a6d3Smrg *-*-*) 1416c19a6d3Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1426c19a6d3Smrg # parts 1436c19a6d3Smrg maybe_os=$field2-$field3 1446c19a6d3Smrg case $maybe_os in 1456c19a6d3Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 1466c19a6d3Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1476c19a6d3Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1486c19a6d3Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 1496c19a6d3Smrg basic_machine=$field1 1506c19a6d3Smrg basic_os=$maybe_os 1516c19a6d3Smrg ;; 1526c19a6d3Smrg android-linux) 1536c19a6d3Smrg basic_machine=$field1-unknown 1546c19a6d3Smrg basic_os=linux-android 1556c19a6d3Smrg ;; 1566c19a6d3Smrg *) 1576c19a6d3Smrg basic_machine=$field1-$field2 1586c19a6d3Smrg basic_os=$field3 1596c19a6d3Smrg ;; 1606c19a6d3Smrg esac 1610ad07f78Smrg ;; 1626c19a6d3Smrg *-*) 1636c19a6d3Smrg # A lone config we happen to match not fitting any pattern 1646c19a6d3Smrg case $field1-$field2 in 1656c19a6d3Smrg decstation-3100) 1666c19a6d3Smrg basic_machine=mips-dec 1676c19a6d3Smrg basic_os= 1686c19a6d3Smrg ;; 1696c19a6d3Smrg *-*) 1706c19a6d3Smrg # Second component is usually, but not always the OS 1716c19a6d3Smrg case $field2 in 1726c19a6d3Smrg # Prevent following clause from handling this valid os 1736c19a6d3Smrg sun*os*) 1746c19a6d3Smrg basic_machine=$field1 1756c19a6d3Smrg basic_os=$field2 1766c19a6d3Smrg ;; 1776c19a6d3Smrg zephyr*) 1786c19a6d3Smrg basic_machine=$field1-unknown 1796c19a6d3Smrg basic_os=$field2 1806c19a6d3Smrg ;; 1816c19a6d3Smrg # Manufacturers 1826c19a6d3Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1836c19a6d3Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1846c19a6d3Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1856c19a6d3Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1866c19a6d3Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1876c19a6d3Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1886c19a6d3Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1896c19a6d3Smrg | microblaze* | sim | cisco \ 1906c19a6d3Smrg | oki | wec | wrs | winbond) 1916c19a6d3Smrg basic_machine=$field1-$field2 1926c19a6d3Smrg basic_os= 1936c19a6d3Smrg ;; 1946c19a6d3Smrg *) 1956c19a6d3Smrg basic_machine=$field1 1966c19a6d3Smrg basic_os=$field2 1976c19a6d3Smrg ;; 1986c19a6d3Smrg esac 1996c19a6d3Smrg ;; 2006c19a6d3Smrg esac 2010ad07f78Smrg ;; 2026c19a6d3Smrg *) 2036c19a6d3Smrg # Convert single-component short-hands not valid as part of 2046c19a6d3Smrg # multi-component configurations. 2056c19a6d3Smrg case $field1 in 2066c19a6d3Smrg 386bsd) 2076c19a6d3Smrg basic_machine=i386-pc 2086c19a6d3Smrg basic_os=bsd 2096c19a6d3Smrg ;; 2106c19a6d3Smrg a29khif) 2116c19a6d3Smrg basic_machine=a29k-amd 2126c19a6d3Smrg basic_os=udi 2136c19a6d3Smrg ;; 2146c19a6d3Smrg adobe68k) 2156c19a6d3Smrg basic_machine=m68010-adobe 2166c19a6d3Smrg basic_os=scout 2176c19a6d3Smrg ;; 2186c19a6d3Smrg alliant) 2196c19a6d3Smrg basic_machine=fx80-alliant 2206c19a6d3Smrg basic_os= 2216c19a6d3Smrg ;; 2226c19a6d3Smrg altos | altos3068) 2236c19a6d3Smrg basic_machine=m68k-altos 2246c19a6d3Smrg basic_os= 2256c19a6d3Smrg ;; 2266c19a6d3Smrg am29k) 2276c19a6d3Smrg basic_machine=a29k-none 2286c19a6d3Smrg basic_os=bsd 2296c19a6d3Smrg ;; 2306c19a6d3Smrg amdahl) 2316c19a6d3Smrg basic_machine=580-amdahl 2326c19a6d3Smrg basic_os=sysv 2336c19a6d3Smrg ;; 2346c19a6d3Smrg amiga) 2356c19a6d3Smrg basic_machine=m68k-unknown 2366c19a6d3Smrg basic_os= 2376c19a6d3Smrg ;; 2386c19a6d3Smrg amigaos | amigados) 2396c19a6d3Smrg basic_machine=m68k-unknown 2406c19a6d3Smrg basic_os=amigaos 2416c19a6d3Smrg ;; 2426c19a6d3Smrg amigaunix | amix) 2436c19a6d3Smrg basic_machine=m68k-unknown 2446c19a6d3Smrg basic_os=sysv4 2456c19a6d3Smrg ;; 2466c19a6d3Smrg apollo68) 2476c19a6d3Smrg basic_machine=m68k-apollo 2486c19a6d3Smrg basic_os=sysv 2496c19a6d3Smrg ;; 2506c19a6d3Smrg apollo68bsd) 2516c19a6d3Smrg basic_machine=m68k-apollo 2526c19a6d3Smrg basic_os=bsd 2536c19a6d3Smrg ;; 2546c19a6d3Smrg aros) 2556c19a6d3Smrg basic_machine=i386-pc 2566c19a6d3Smrg basic_os=aros 2576c19a6d3Smrg ;; 2586c19a6d3Smrg aux) 2596c19a6d3Smrg basic_machine=m68k-apple 2606c19a6d3Smrg basic_os=aux 2616c19a6d3Smrg ;; 2626c19a6d3Smrg balance) 2636c19a6d3Smrg basic_machine=ns32k-sequent 2646c19a6d3Smrg basic_os=dynix 2656c19a6d3Smrg ;; 2666c19a6d3Smrg blackfin) 2676c19a6d3Smrg basic_machine=bfin-unknown 2686c19a6d3Smrg basic_os=linux 2696c19a6d3Smrg ;; 2706c19a6d3Smrg cegcc) 2716c19a6d3Smrg basic_machine=arm-unknown 2726c19a6d3Smrg basic_os=cegcc 2736c19a6d3Smrg ;; 2746c19a6d3Smrg convex-c1) 2756c19a6d3Smrg basic_machine=c1-convex 2766c19a6d3Smrg basic_os=bsd 2776c19a6d3Smrg ;; 2786c19a6d3Smrg convex-c2) 2796c19a6d3Smrg basic_machine=c2-convex 2806c19a6d3Smrg basic_os=bsd 2816c19a6d3Smrg ;; 2826c19a6d3Smrg convex-c32) 2836c19a6d3Smrg basic_machine=c32-convex 2846c19a6d3Smrg basic_os=bsd 2856c19a6d3Smrg ;; 2866c19a6d3Smrg convex-c34) 2876c19a6d3Smrg basic_machine=c34-convex 2886c19a6d3Smrg basic_os=bsd 2896c19a6d3Smrg ;; 2906c19a6d3Smrg convex-c38) 2916c19a6d3Smrg basic_machine=c38-convex 2926c19a6d3Smrg basic_os=bsd 2936c19a6d3Smrg ;; 2946c19a6d3Smrg cray) 2956c19a6d3Smrg basic_machine=j90-cray 2966c19a6d3Smrg basic_os=unicos 2976c19a6d3Smrg ;; 2986c19a6d3Smrg crds | unos) 2996c19a6d3Smrg basic_machine=m68k-crds 3006c19a6d3Smrg basic_os= 3016c19a6d3Smrg ;; 3026c19a6d3Smrg da30) 3036c19a6d3Smrg basic_machine=m68k-da30 3046c19a6d3Smrg basic_os= 3056c19a6d3Smrg ;; 3066c19a6d3Smrg decstation | pmax | pmin | dec3100 | decstatn) 3076c19a6d3Smrg basic_machine=mips-dec 3086c19a6d3Smrg basic_os= 3096c19a6d3Smrg ;; 3106c19a6d3Smrg delta88) 3116c19a6d3Smrg basic_machine=m88k-motorola 3126c19a6d3Smrg basic_os=sysv3 3136c19a6d3Smrg ;; 3146c19a6d3Smrg dicos) 3156c19a6d3Smrg basic_machine=i686-pc 3166c19a6d3Smrg basic_os=dicos 3176c19a6d3Smrg ;; 3186c19a6d3Smrg djgpp) 3196c19a6d3Smrg basic_machine=i586-pc 3206c19a6d3Smrg basic_os=msdosdjgpp 3216c19a6d3Smrg ;; 3226c19a6d3Smrg ebmon29k) 3236c19a6d3Smrg basic_machine=a29k-amd 3246c19a6d3Smrg basic_os=ebmon 3256c19a6d3Smrg ;; 3266c19a6d3Smrg es1800 | OSE68k | ose68k | ose | OSE) 3276c19a6d3Smrg basic_machine=m68k-ericsson 3286c19a6d3Smrg basic_os=ose 3296c19a6d3Smrg ;; 3306c19a6d3Smrg gmicro) 3316c19a6d3Smrg basic_machine=tron-gmicro 3326c19a6d3Smrg basic_os=sysv 3336c19a6d3Smrg ;; 3346c19a6d3Smrg go32) 3356c19a6d3Smrg basic_machine=i386-pc 3366c19a6d3Smrg basic_os=go32 3376c19a6d3Smrg ;; 3386c19a6d3Smrg h8300hms) 3396c19a6d3Smrg basic_machine=h8300-hitachi 3406c19a6d3Smrg basic_os=hms 3416c19a6d3Smrg ;; 3426c19a6d3Smrg h8300xray) 3436c19a6d3Smrg basic_machine=h8300-hitachi 3446c19a6d3Smrg basic_os=xray 3456c19a6d3Smrg ;; 3466c19a6d3Smrg h8500hms) 3476c19a6d3Smrg basic_machine=h8500-hitachi 3486c19a6d3Smrg basic_os=hms 3496c19a6d3Smrg ;; 3506c19a6d3Smrg harris) 3516c19a6d3Smrg basic_machine=m88k-harris 3526c19a6d3Smrg basic_os=sysv3 3536c19a6d3Smrg ;; 3546c19a6d3Smrg hp300 | hp300hpux) 3556c19a6d3Smrg basic_machine=m68k-hp 3566c19a6d3Smrg basic_os=hpux 3576c19a6d3Smrg ;; 3586c19a6d3Smrg hp300bsd) 3596c19a6d3Smrg basic_machine=m68k-hp 3606c19a6d3Smrg basic_os=bsd 3616c19a6d3Smrg ;; 3626c19a6d3Smrg hppaosf) 3636c19a6d3Smrg basic_machine=hppa1.1-hp 3646c19a6d3Smrg basic_os=osf 3656c19a6d3Smrg ;; 3666c19a6d3Smrg hppro) 3676c19a6d3Smrg basic_machine=hppa1.1-hp 3686c19a6d3Smrg basic_os=proelf 3696c19a6d3Smrg ;; 3706c19a6d3Smrg i386mach) 3716c19a6d3Smrg basic_machine=i386-mach 3726c19a6d3Smrg basic_os=mach 3736c19a6d3Smrg ;; 3746c19a6d3Smrg isi68 | isi) 3756c19a6d3Smrg basic_machine=m68k-isi 3766c19a6d3Smrg basic_os=sysv 3776c19a6d3Smrg ;; 3786c19a6d3Smrg m68knommu) 3796c19a6d3Smrg basic_machine=m68k-unknown 3806c19a6d3Smrg basic_os=linux 3816c19a6d3Smrg ;; 3826c19a6d3Smrg magnum | m3230) 3836c19a6d3Smrg basic_machine=mips-mips 3846c19a6d3Smrg basic_os=sysv 3856c19a6d3Smrg ;; 3866c19a6d3Smrg merlin) 3876c19a6d3Smrg basic_machine=ns32k-utek 3886c19a6d3Smrg basic_os=sysv 3896c19a6d3Smrg ;; 3906c19a6d3Smrg mingw64) 3916c19a6d3Smrg basic_machine=x86_64-pc 3926c19a6d3Smrg basic_os=mingw64 3936c19a6d3Smrg ;; 3946c19a6d3Smrg mingw32) 3956c19a6d3Smrg basic_machine=i686-pc 3966c19a6d3Smrg basic_os=mingw32 3976c19a6d3Smrg ;; 3986c19a6d3Smrg mingw32ce) 3996c19a6d3Smrg basic_machine=arm-unknown 4006c19a6d3Smrg basic_os=mingw32ce 4016c19a6d3Smrg ;; 4026c19a6d3Smrg monitor) 4036c19a6d3Smrg basic_machine=m68k-rom68k 4046c19a6d3Smrg basic_os=coff 4056c19a6d3Smrg ;; 4066c19a6d3Smrg morphos) 4076c19a6d3Smrg basic_machine=powerpc-unknown 4086c19a6d3Smrg basic_os=morphos 4096c19a6d3Smrg ;; 4106c19a6d3Smrg moxiebox) 4116c19a6d3Smrg basic_machine=moxie-unknown 4126c19a6d3Smrg basic_os=moxiebox 4136c19a6d3Smrg ;; 4146c19a6d3Smrg msdos) 4156c19a6d3Smrg basic_machine=i386-pc 4166c19a6d3Smrg basic_os=msdos 4176c19a6d3Smrg ;; 4186c19a6d3Smrg msys) 4196c19a6d3Smrg basic_machine=i686-pc 4206c19a6d3Smrg basic_os=msys 4216c19a6d3Smrg ;; 4226c19a6d3Smrg mvs) 4236c19a6d3Smrg basic_machine=i370-ibm 4246c19a6d3Smrg basic_os=mvs 4256c19a6d3Smrg ;; 4266c19a6d3Smrg nacl) 4276c19a6d3Smrg basic_machine=le32-unknown 4286c19a6d3Smrg basic_os=nacl 4296c19a6d3Smrg ;; 4306c19a6d3Smrg ncr3000) 4316c19a6d3Smrg basic_machine=i486-ncr 4326c19a6d3Smrg basic_os=sysv4 4336c19a6d3Smrg ;; 4346c19a6d3Smrg netbsd386) 4356c19a6d3Smrg basic_machine=i386-pc 4366c19a6d3Smrg basic_os=netbsd 4376c19a6d3Smrg ;; 4386c19a6d3Smrg netwinder) 4396c19a6d3Smrg basic_machine=armv4l-rebel 4406c19a6d3Smrg basic_os=linux 4416c19a6d3Smrg ;; 4426c19a6d3Smrg news | news700 | news800 | news900) 4436c19a6d3Smrg basic_machine=m68k-sony 4446c19a6d3Smrg basic_os=newsos 4456c19a6d3Smrg ;; 4466c19a6d3Smrg news1000) 4476c19a6d3Smrg basic_machine=m68030-sony 4486c19a6d3Smrg basic_os=newsos 4496c19a6d3Smrg ;; 4506c19a6d3Smrg necv70) 4516c19a6d3Smrg basic_machine=v70-nec 4526c19a6d3Smrg basic_os=sysv 4536c19a6d3Smrg ;; 4546c19a6d3Smrg nh3000) 4556c19a6d3Smrg basic_machine=m68k-harris 4566c19a6d3Smrg basic_os=cxux 4576c19a6d3Smrg ;; 4586c19a6d3Smrg nh[45]000) 4596c19a6d3Smrg basic_machine=m88k-harris 4606c19a6d3Smrg basic_os=cxux 4616c19a6d3Smrg ;; 4626c19a6d3Smrg nindy960) 4636c19a6d3Smrg basic_machine=i960-intel 4646c19a6d3Smrg basic_os=nindy 4656c19a6d3Smrg ;; 4666c19a6d3Smrg mon960) 4676c19a6d3Smrg basic_machine=i960-intel 4686c19a6d3Smrg basic_os=mon960 4696c19a6d3Smrg ;; 4706c19a6d3Smrg nonstopux) 4716c19a6d3Smrg basic_machine=mips-compaq 4726c19a6d3Smrg basic_os=nonstopux 4736c19a6d3Smrg ;; 4746c19a6d3Smrg os400) 4756c19a6d3Smrg basic_machine=powerpc-ibm 4766c19a6d3Smrg basic_os=os400 4776c19a6d3Smrg ;; 4786c19a6d3Smrg OSE68000 | ose68000) 4796c19a6d3Smrg basic_machine=m68000-ericsson 4806c19a6d3Smrg basic_os=ose 4816c19a6d3Smrg ;; 4826c19a6d3Smrg os68k) 4836c19a6d3Smrg basic_machine=m68k-none 4846c19a6d3Smrg basic_os=os68k 4856c19a6d3Smrg ;; 4866c19a6d3Smrg paragon) 4876c19a6d3Smrg basic_machine=i860-intel 4886c19a6d3Smrg basic_os=osf 4896c19a6d3Smrg ;; 4906c19a6d3Smrg parisc) 4916c19a6d3Smrg basic_machine=hppa-unknown 4926c19a6d3Smrg basic_os=linux 4936c19a6d3Smrg ;; 4946c19a6d3Smrg psp) 4956c19a6d3Smrg basic_machine=mipsallegrexel-sony 4966c19a6d3Smrg basic_os=psp 4976c19a6d3Smrg ;; 4986c19a6d3Smrg pw32) 4996c19a6d3Smrg basic_machine=i586-unknown 5006c19a6d3Smrg basic_os=pw32 5016c19a6d3Smrg ;; 5026c19a6d3Smrg rdos | rdos64) 5036c19a6d3Smrg basic_machine=x86_64-pc 5046c19a6d3Smrg basic_os=rdos 5056c19a6d3Smrg ;; 5066c19a6d3Smrg rdos32) 5076c19a6d3Smrg basic_machine=i386-pc 5086c19a6d3Smrg basic_os=rdos 5096c19a6d3Smrg ;; 5106c19a6d3Smrg rom68k) 5116c19a6d3Smrg basic_machine=m68k-rom68k 5126c19a6d3Smrg basic_os=coff 5136c19a6d3Smrg ;; 5146c19a6d3Smrg sa29200) 5156c19a6d3Smrg basic_machine=a29k-amd 5166c19a6d3Smrg basic_os=udi 5176c19a6d3Smrg ;; 5186c19a6d3Smrg sei) 5196c19a6d3Smrg basic_machine=mips-sei 5206c19a6d3Smrg basic_os=seiux 5216c19a6d3Smrg ;; 5226c19a6d3Smrg sequent) 5236c19a6d3Smrg basic_machine=i386-sequent 5246c19a6d3Smrg basic_os= 5256c19a6d3Smrg ;; 5266c19a6d3Smrg sps7) 5276c19a6d3Smrg basic_machine=m68k-bull 5286c19a6d3Smrg basic_os=sysv2 5296c19a6d3Smrg ;; 5306c19a6d3Smrg st2000) 5316c19a6d3Smrg basic_machine=m68k-tandem 5326c19a6d3Smrg basic_os= 5336c19a6d3Smrg ;; 5346c19a6d3Smrg stratus) 5356c19a6d3Smrg basic_machine=i860-stratus 5366c19a6d3Smrg basic_os=sysv4 5376c19a6d3Smrg ;; 5386c19a6d3Smrg sun2) 5396c19a6d3Smrg basic_machine=m68000-sun 5406c19a6d3Smrg basic_os= 5416c19a6d3Smrg ;; 5426c19a6d3Smrg sun2os3) 5436c19a6d3Smrg basic_machine=m68000-sun 5446c19a6d3Smrg basic_os=sunos3 5456c19a6d3Smrg ;; 5466c19a6d3Smrg sun2os4) 5476c19a6d3Smrg basic_machine=m68000-sun 5486c19a6d3Smrg basic_os=sunos4 5496c19a6d3Smrg ;; 5506c19a6d3Smrg sun3) 5516c19a6d3Smrg basic_machine=m68k-sun 5526c19a6d3Smrg basic_os= 5536c19a6d3Smrg ;; 5546c19a6d3Smrg sun3os3) 5556c19a6d3Smrg basic_machine=m68k-sun 5566c19a6d3Smrg basic_os=sunos3 5576c19a6d3Smrg ;; 5586c19a6d3Smrg sun3os4) 5596c19a6d3Smrg basic_machine=m68k-sun 5606c19a6d3Smrg basic_os=sunos4 5616c19a6d3Smrg ;; 5626c19a6d3Smrg sun4) 5636c19a6d3Smrg basic_machine=sparc-sun 5646c19a6d3Smrg basic_os= 5656c19a6d3Smrg ;; 5666c19a6d3Smrg sun4os3) 5676c19a6d3Smrg basic_machine=sparc-sun 5686c19a6d3Smrg basic_os=sunos3 5696c19a6d3Smrg ;; 5706c19a6d3Smrg sun4os4) 5716c19a6d3Smrg basic_machine=sparc-sun 5726c19a6d3Smrg basic_os=sunos4 5736c19a6d3Smrg ;; 5746c19a6d3Smrg sun4sol2) 5756c19a6d3Smrg basic_machine=sparc-sun 5766c19a6d3Smrg basic_os=solaris2 5776c19a6d3Smrg ;; 5786c19a6d3Smrg sun386 | sun386i | roadrunner) 5796c19a6d3Smrg basic_machine=i386-sun 5806c19a6d3Smrg basic_os= 5816c19a6d3Smrg ;; 5826c19a6d3Smrg sv1) 5836c19a6d3Smrg basic_machine=sv1-cray 5846c19a6d3Smrg basic_os=unicos 5856c19a6d3Smrg ;; 5866c19a6d3Smrg symmetry) 5876c19a6d3Smrg basic_machine=i386-sequent 5886c19a6d3Smrg basic_os=dynix 5896c19a6d3Smrg ;; 5906c19a6d3Smrg t3e) 5916c19a6d3Smrg basic_machine=alphaev5-cray 5926c19a6d3Smrg basic_os=unicos 5936c19a6d3Smrg ;; 5946c19a6d3Smrg t90) 5956c19a6d3Smrg basic_machine=t90-cray 5966c19a6d3Smrg basic_os=unicos 5976c19a6d3Smrg ;; 5986c19a6d3Smrg toad1) 5996c19a6d3Smrg basic_machine=pdp10-xkl 6006c19a6d3Smrg basic_os=tops20 6016c19a6d3Smrg ;; 6026c19a6d3Smrg tpf) 6036c19a6d3Smrg basic_machine=s390x-ibm 6046c19a6d3Smrg basic_os=tpf 6056c19a6d3Smrg ;; 6066c19a6d3Smrg udi29k) 6076c19a6d3Smrg basic_machine=a29k-amd 6086c19a6d3Smrg basic_os=udi 6096c19a6d3Smrg ;; 6106c19a6d3Smrg ultra3) 6116c19a6d3Smrg basic_machine=a29k-nyu 6126c19a6d3Smrg basic_os=sym1 6136c19a6d3Smrg ;; 6146c19a6d3Smrg v810 | necv810) 6156c19a6d3Smrg basic_machine=v810-nec 6166c19a6d3Smrg basic_os=none 6176c19a6d3Smrg ;; 6186c19a6d3Smrg vaxv) 6196c19a6d3Smrg basic_machine=vax-dec 6206c19a6d3Smrg basic_os=sysv 6216c19a6d3Smrg ;; 6226c19a6d3Smrg vms) 6236c19a6d3Smrg basic_machine=vax-dec 6246c19a6d3Smrg basic_os=vms 6256c19a6d3Smrg ;; 6266c19a6d3Smrg vsta) 6276c19a6d3Smrg basic_machine=i386-pc 6286c19a6d3Smrg basic_os=vsta 6296c19a6d3Smrg ;; 6306c19a6d3Smrg vxworks960) 6316c19a6d3Smrg basic_machine=i960-wrs 6326c19a6d3Smrg basic_os=vxworks 6336c19a6d3Smrg ;; 6346c19a6d3Smrg vxworks68) 6356c19a6d3Smrg basic_machine=m68k-wrs 6366c19a6d3Smrg basic_os=vxworks 6376c19a6d3Smrg ;; 6386c19a6d3Smrg vxworks29k) 6396c19a6d3Smrg basic_machine=a29k-wrs 6406c19a6d3Smrg basic_os=vxworks 6416c19a6d3Smrg ;; 6426c19a6d3Smrg xbox) 6436c19a6d3Smrg basic_machine=i686-pc 6446c19a6d3Smrg basic_os=mingw32 6456c19a6d3Smrg ;; 6466c19a6d3Smrg ymp) 6476c19a6d3Smrg basic_machine=ymp-cray 6486c19a6d3Smrg basic_os=unicos 6496c19a6d3Smrg ;; 6506c19a6d3Smrg *) 6516c19a6d3Smrg basic_machine=$1 6526c19a6d3Smrg basic_os= 6536c19a6d3Smrg ;; 6546c19a6d3Smrg esac 6550ad07f78Smrg ;; 6566c19a6d3Smrgesac 6576c19a6d3Smrg 6586c19a6d3Smrg# Decode 1-component or ad-hoc basic machines 6596c19a6d3Smrgcase $basic_machine in 6606c19a6d3Smrg # Here we handle the default manufacturer of certain CPU types. It is in 6616c19a6d3Smrg # some cases the only manufacturer, in others, it is the most popular. 6626c19a6d3Smrg w89k) 6636c19a6d3Smrg cpu=hppa1.1 6646c19a6d3Smrg vendor=winbond 6650ad07f78Smrg ;; 6666c19a6d3Smrg op50n) 6676c19a6d3Smrg cpu=hppa1.1 6686c19a6d3Smrg vendor=oki 6690ad07f78Smrg ;; 6706c19a6d3Smrg op60c) 6716c19a6d3Smrg cpu=hppa1.1 6726c19a6d3Smrg vendor=oki 6730ad07f78Smrg ;; 6746c19a6d3Smrg ibm*) 6756c19a6d3Smrg cpu=i370 6766c19a6d3Smrg vendor=ibm 6770ad07f78Smrg ;; 6786c19a6d3Smrg orion105) 6796c19a6d3Smrg cpu=clipper 6806c19a6d3Smrg vendor=highlevel 6810ad07f78Smrg ;; 6826c19a6d3Smrg mac | mpw | mac-mpw) 6836c19a6d3Smrg cpu=m68k 6846c19a6d3Smrg vendor=apple 6850ad07f78Smrg ;; 6866c19a6d3Smrg pmac | pmac-mpw) 6876c19a6d3Smrg cpu=powerpc 6886c19a6d3Smrg vendor=apple 6890ad07f78Smrg ;; 6900ad07f78Smrg 6910ad07f78Smrg # Recognize the various machine names and aliases which stand 6920ad07f78Smrg # for a CPU type and a company and sometimes even an OS. 6930ad07f78Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6946c19a6d3Smrg cpu=m68000 6956c19a6d3Smrg vendor=att 6960ad07f78Smrg ;; 6970ad07f78Smrg 3b*) 6986c19a6d3Smrg cpu=we32k 6996c19a6d3Smrg vendor=att 7000ad07f78Smrg ;; 7014028d71eSmrg bluegene*) 7026c19a6d3Smrg cpu=powerpc 7036c19a6d3Smrg vendor=ibm 7046c19a6d3Smrg basic_os=cnk 7050ad07f78Smrg ;; 7060ad07f78Smrg decsystem10* | dec10*) 7076c19a6d3Smrg cpu=pdp10 7086c19a6d3Smrg vendor=dec 7096c19a6d3Smrg basic_os=tops10 7100ad07f78Smrg ;; 7110ad07f78Smrg decsystem20* | dec20*) 7126c19a6d3Smrg cpu=pdp10 7136c19a6d3Smrg vendor=dec 7146c19a6d3Smrg basic_os=tops20 7150ad07f78Smrg ;; 7160ad07f78Smrg delta | 3300 | motorola-3300 | motorola-delta \ 7170ad07f78Smrg | 3300-motorola | delta-motorola) 7186c19a6d3Smrg cpu=m68k 7196c19a6d3Smrg vendor=motorola 7200ad07f78Smrg ;; 7216c19a6d3Smrg dpx2*) 7226c19a6d3Smrg cpu=m68k 7236c19a6d3Smrg vendor=bull 7246c19a6d3Smrg basic_os=sysv3 7250ad07f78Smrg ;; 7260ad07f78Smrg encore | umax | mmax) 7276c19a6d3Smrg cpu=ns32k 7286c19a6d3Smrg vendor=encore 7290ad07f78Smrg ;; 7306c19a6d3Smrg elxsi) 7316c19a6d3Smrg cpu=elxsi 7326c19a6d3Smrg vendor=elxsi 7336c19a6d3Smrg basic_os=${basic_os:-bsd} 7340ad07f78Smrg ;; 7350ad07f78Smrg fx2800) 7366c19a6d3Smrg cpu=i860 7376c19a6d3Smrg vendor=alliant 7380ad07f78Smrg ;; 7390ad07f78Smrg genix) 7406c19a6d3Smrg cpu=ns32k 7416c19a6d3Smrg vendor=ns 7420ad07f78Smrg ;; 7430ad07f78Smrg h3050r* | hiux*) 7446c19a6d3Smrg cpu=hppa1.1 7456c19a6d3Smrg vendor=hitachi 7466c19a6d3Smrg basic_os=hiuxwe2 7470ad07f78Smrg ;; 7480ad07f78Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7496c19a6d3Smrg cpu=hppa1.0 7506c19a6d3Smrg vendor=hp 7510ad07f78Smrg ;; 7520ad07f78Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7536c19a6d3Smrg cpu=m68000 7546c19a6d3Smrg vendor=hp 7550ad07f78Smrg ;; 7560ad07f78Smrg hp9k3[2-9][0-9]) 7576c19a6d3Smrg cpu=m68k 7586c19a6d3Smrg vendor=hp 7590ad07f78Smrg ;; 7600ad07f78Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7616c19a6d3Smrg cpu=hppa1.0 7626c19a6d3Smrg vendor=hp 7630ad07f78Smrg ;; 7640ad07f78Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7656c19a6d3Smrg cpu=hppa1.1 7666c19a6d3Smrg vendor=hp 7670ad07f78Smrg ;; 7680ad07f78Smrg hp9k78[0-9] | hp78[0-9]) 7690ad07f78Smrg # FIXME: really hppa2.0-hp 7706c19a6d3Smrg cpu=hppa1.1 7716c19a6d3Smrg vendor=hp 7720ad07f78Smrg ;; 7730ad07f78Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7740ad07f78Smrg # FIXME: really hppa2.0-hp 7756c19a6d3Smrg cpu=hppa1.1 7766c19a6d3Smrg vendor=hp 7770ad07f78Smrg ;; 7780ad07f78Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7796c19a6d3Smrg cpu=hppa1.1 7806c19a6d3Smrg vendor=hp 7810ad07f78Smrg ;; 7820ad07f78Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7836c19a6d3Smrg cpu=hppa1.0 7846c19a6d3Smrg vendor=hp 7850ad07f78Smrg ;; 7860ad07f78Smrg i*86v32) 7876c19a6d3Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7886c19a6d3Smrg vendor=pc 7896c19a6d3Smrg basic_os=sysv32 7900ad07f78Smrg ;; 7910ad07f78Smrg i*86v4*) 7926c19a6d3Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7936c19a6d3Smrg vendor=pc 7946c19a6d3Smrg basic_os=sysv4 7950ad07f78Smrg ;; 7960ad07f78Smrg i*86v) 7976c19a6d3Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7986c19a6d3Smrg vendor=pc 7996c19a6d3Smrg basic_os=sysv 8000ad07f78Smrg ;; 8010ad07f78Smrg i*86sol2) 8026c19a6d3Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8036c19a6d3Smrg vendor=pc 8046c19a6d3Smrg basic_os=solaris2 8050ad07f78Smrg ;; 8066c19a6d3Smrg j90 | j90-cray) 8076c19a6d3Smrg cpu=j90 8086c19a6d3Smrg vendor=cray 8096c19a6d3Smrg basic_os=${basic_os:-unicos} 8100ad07f78Smrg ;; 8110ad07f78Smrg iris | iris4d) 8126c19a6d3Smrg cpu=mips 8136c19a6d3Smrg vendor=sgi 8146c19a6d3Smrg case $basic_os in 8156c19a6d3Smrg irix*) 8160ad07f78Smrg ;; 8170ad07f78Smrg *) 8186c19a6d3Smrg basic_os=irix4 8190ad07f78Smrg ;; 8200ad07f78Smrg esac 8210ad07f78Smrg ;; 8220ad07f78Smrg miniframe) 8236c19a6d3Smrg cpu=m68000 8246c19a6d3Smrg vendor=convergent 8250ad07f78Smrg ;; 8266c19a6d3Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8276c19a6d3Smrg cpu=m68k 8286c19a6d3Smrg vendor=atari 8296c19a6d3Smrg basic_os=mint 8300ad07f78Smrg ;; 8310ad07f78Smrg news-3600 | risc-news) 8326c19a6d3Smrg cpu=mips 8336c19a6d3Smrg vendor=sony 8346c19a6d3Smrg basic_os=newsos 8356c19a6d3Smrg ;; 8366c19a6d3Smrg next | m*-next) 8376c19a6d3Smrg cpu=m68k 8386c19a6d3Smrg vendor=next 8396c19a6d3Smrg case $basic_os in 8406c19a6d3Smrg openstep*) 8416c19a6d3Smrg ;; 8426c19a6d3Smrg nextstep*) 8430ad07f78Smrg ;; 8446c19a6d3Smrg ns2*) 8456c19a6d3Smrg basic_os=nextstep2 8460ad07f78Smrg ;; 8470ad07f78Smrg *) 8486c19a6d3Smrg basic_os=nextstep3 8490ad07f78Smrg ;; 8500ad07f78Smrg esac 8510ad07f78Smrg ;; 8520ad07f78Smrg np1) 8536c19a6d3Smrg cpu=np1 8546c19a6d3Smrg vendor=gould 8550ad07f78Smrg ;; 8560ad07f78Smrg op50n-* | op60c-*) 8576c19a6d3Smrg cpu=hppa1.1 8586c19a6d3Smrg vendor=oki 8596c19a6d3Smrg basic_os=proelf 8600ad07f78Smrg ;; 8610ad07f78Smrg pa-hitachi) 8626c19a6d3Smrg cpu=hppa1.1 8636c19a6d3Smrg vendor=hitachi 8646c19a6d3Smrg basic_os=hiuxwe2 8650ad07f78Smrg ;; 8660ad07f78Smrg pbd) 8676c19a6d3Smrg cpu=sparc 8686c19a6d3Smrg vendor=tti 8690ad07f78Smrg ;; 8700ad07f78Smrg pbb) 8716c19a6d3Smrg cpu=m68k 8726c19a6d3Smrg vendor=tti 8730ad07f78Smrg ;; 8746c19a6d3Smrg pc532) 8756c19a6d3Smrg cpu=ns32k 8766c19a6d3Smrg vendor=pc532 8770ad07f78Smrg ;; 8780ad07f78Smrg pn) 8796c19a6d3Smrg cpu=pn 8806c19a6d3Smrg vendor=gould 8810ad07f78Smrg ;; 8826c19a6d3Smrg power) 8836c19a6d3Smrg cpu=power 8846c19a6d3Smrg vendor=ibm 8850ad07f78Smrg ;; 8860ad07f78Smrg ps2) 8876c19a6d3Smrg cpu=i386 8886c19a6d3Smrg vendor=ibm 8890ad07f78Smrg ;; 8900ad07f78Smrg rm[46]00) 8916c19a6d3Smrg cpu=mips 8926c19a6d3Smrg vendor=siemens 8930ad07f78Smrg ;; 8940ad07f78Smrg rtpc | rtpc-*) 8956c19a6d3Smrg cpu=romp 8966c19a6d3Smrg vendor=ibm 8970ad07f78Smrg ;; 8986c19a6d3Smrg sde) 8996c19a6d3Smrg cpu=mipsisa32 9006c19a6d3Smrg vendor=sde 9016c19a6d3Smrg basic_os=${basic_os:-elf} 9020ad07f78Smrg ;; 9036c19a6d3Smrg simso-wrs) 9046c19a6d3Smrg cpu=sparclite 9056c19a6d3Smrg vendor=wrs 9066c19a6d3Smrg basic_os=vxworks 9070ad07f78Smrg ;; 9086c19a6d3Smrg tower | tower-32) 9096c19a6d3Smrg cpu=m68k 9106c19a6d3Smrg vendor=ncr 9110ad07f78Smrg ;; 9126c19a6d3Smrg vpp*|vx|vx-*) 9136c19a6d3Smrg cpu=f301 9146c19a6d3Smrg vendor=fujitsu 9150ad07f78Smrg ;; 9166c19a6d3Smrg w65) 9176c19a6d3Smrg cpu=w65 9186c19a6d3Smrg vendor=wdc 9190ad07f78Smrg ;; 9206c19a6d3Smrg w89k-*) 9216c19a6d3Smrg cpu=hppa1.1 9226c19a6d3Smrg vendor=winbond 9236c19a6d3Smrg basic_os=proelf 9240ad07f78Smrg ;; 9256c19a6d3Smrg none) 9266c19a6d3Smrg cpu=none 9276c19a6d3Smrg vendor=none 9280ad07f78Smrg ;; 9296c19a6d3Smrg leon|leon[3-9]) 9306c19a6d3Smrg cpu=sparc 9316c19a6d3Smrg vendor=$basic_machine 9320ad07f78Smrg ;; 9336c19a6d3Smrg leon-*|leon[3-9]-*) 9346c19a6d3Smrg cpu=sparc 9356c19a6d3Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9360ad07f78Smrg ;; 9376c19a6d3Smrg 9386c19a6d3Smrg *-*) 9396c19a6d3Smrg # shellcheck disable=SC2162 9406c19a6d3Smrg saved_IFS=$IFS 9416c19a6d3Smrg IFS="-" read cpu vendor <<EOF 9426c19a6d3Smrg$basic_machine 9436c19a6d3SmrgEOF 9446c19a6d3Smrg IFS=$saved_IFS 9450ad07f78Smrg ;; 9466c19a6d3Smrg # We use `pc' rather than `unknown' 9476c19a6d3Smrg # because (1) that's what they normally are, and 9486c19a6d3Smrg # (2) the word "unknown" tends to confuse beginning users. 9496c19a6d3Smrg i*86 | x86_64) 9506c19a6d3Smrg cpu=$basic_machine 9516c19a6d3Smrg vendor=pc 9520ad07f78Smrg ;; 9536c19a6d3Smrg # These rules are duplicated from below for sake of the special case above; 9546c19a6d3Smrg # i.e. things that normalized to x86 arches should also default to "pc" 9556c19a6d3Smrg pc98) 9566c19a6d3Smrg cpu=i386 9576c19a6d3Smrg vendor=pc 9580ad07f78Smrg ;; 9596c19a6d3Smrg x64 | amd64) 9606c19a6d3Smrg cpu=x86_64 9616c19a6d3Smrg vendor=pc 9620ad07f78Smrg ;; 9636c19a6d3Smrg # Recognize the basic CPU types without company name. 9646c19a6d3Smrg *) 9656c19a6d3Smrg cpu=$basic_machine 9666c19a6d3Smrg vendor=unknown 9670ad07f78Smrg ;; 9686c19a6d3Smrgesac 9696c19a6d3Smrg 9706c19a6d3Smrgunset -v basic_machine 9716c19a6d3Smrg 9726c19a6d3Smrg# Decode basic machines in the full and proper CPU-Company form. 9736c19a6d3Smrgcase $cpu-$vendor in 9746c19a6d3Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9756c19a6d3Smrg # some cases the only manufacturer, in others, it is the most popular. 9766c19a6d3Smrg craynv-unknown) 9776c19a6d3Smrg vendor=cray 9786c19a6d3Smrg basic_os=${basic_os:-unicosmp} 9790ad07f78Smrg ;; 9806c19a6d3Smrg c90-unknown | c90-cray) 9816c19a6d3Smrg vendor=cray 9826c19a6d3Smrg basic_os=${Basic_os:-unicos} 9830ad07f78Smrg ;; 9846c19a6d3Smrg fx80-unknown) 9856c19a6d3Smrg vendor=alliant 9860ad07f78Smrg ;; 9876c19a6d3Smrg romp-unknown) 9886c19a6d3Smrg vendor=ibm 9890ad07f78Smrg ;; 9906c19a6d3Smrg mmix-unknown) 9916c19a6d3Smrg vendor=knuth 9920ad07f78Smrg ;; 9936c19a6d3Smrg microblaze-unknown | microblazeel-unknown) 9946c19a6d3Smrg vendor=xilinx 9950ad07f78Smrg ;; 9966c19a6d3Smrg rs6000-unknown) 9976c19a6d3Smrg vendor=ibm 9980ad07f78Smrg ;; 9996c19a6d3Smrg vax-unknown) 10006c19a6d3Smrg vendor=dec 10010ad07f78Smrg ;; 10026c19a6d3Smrg pdp11-unknown) 10036c19a6d3Smrg vendor=dec 10040ad07f78Smrg ;; 10056c19a6d3Smrg we32k-unknown) 10066c19a6d3Smrg vendor=att 10070ad07f78Smrg ;; 10086c19a6d3Smrg cydra-unknown) 10096c19a6d3Smrg vendor=cydrome 10100ad07f78Smrg ;; 10116c19a6d3Smrg i370-ibm*) 10126c19a6d3Smrg vendor=ibm 10130ad07f78Smrg ;; 10146c19a6d3Smrg orion-unknown) 10156c19a6d3Smrg vendor=highlevel 10160ad07f78Smrg ;; 10176c19a6d3Smrg xps-unknown | xps100-unknown) 10186c19a6d3Smrg cpu=xps100 10196c19a6d3Smrg vendor=honeywell 10200ad07f78Smrg ;; 10216c19a6d3Smrg 10226c19a6d3Smrg # Here we normalize CPU types with a missing or matching vendor 10236c19a6d3Smrg armh-unknown | armh-alt) 10246c19a6d3Smrg cpu=armv7l 10256c19a6d3Smrg vendor=alt 10266c19a6d3Smrg basic_os=${basic_os:-linux-gnueabihf} 10270ad07f78Smrg ;; 10286c19a6d3Smrg dpx20-unknown | dpx20-bull) 10296c19a6d3Smrg cpu=rs6000 10306c19a6d3Smrg vendor=bull 10316c19a6d3Smrg basic_os=${basic_os:-bosx} 10320ad07f78Smrg ;; 10336c19a6d3Smrg 10346c19a6d3Smrg # Here we normalize CPU types irrespective of the vendor 10356c19a6d3Smrg amd64-*) 10366c19a6d3Smrg cpu=x86_64 10370ad07f78Smrg ;; 10386c19a6d3Smrg blackfin-*) 10396c19a6d3Smrg cpu=bfin 10406c19a6d3Smrg basic_os=linux 10410ad07f78Smrg ;; 10426c19a6d3Smrg c54x-*) 10436c19a6d3Smrg cpu=tic54x 10440ad07f78Smrg ;; 10456c19a6d3Smrg c55x-*) 10466c19a6d3Smrg cpu=tic55x 10470ad07f78Smrg ;; 10486c19a6d3Smrg c6x-*) 10496c19a6d3Smrg cpu=tic6x 10500ad07f78Smrg ;; 10516c19a6d3Smrg e500v[12]-*) 10526c19a6d3Smrg cpu=powerpc 10536c19a6d3Smrg basic_os=${basic_os}"spe" 10540ad07f78Smrg ;; 10556c19a6d3Smrg mips3*-*) 10566c19a6d3Smrg cpu=mips64 10570ad07f78Smrg ;; 10586c19a6d3Smrg ms1-*) 10596c19a6d3Smrg cpu=mt 10600ad07f78Smrg ;; 10616c19a6d3Smrg m68knommu-*) 10626c19a6d3Smrg cpu=m68k 10636c19a6d3Smrg basic_os=linux 10640ad07f78Smrg ;; 10656c19a6d3Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10666c19a6d3Smrg cpu=s12z 10670ad07f78Smrg ;; 10686c19a6d3Smrg openrisc-*) 10696c19a6d3Smrg cpu=or32 10700ad07f78Smrg ;; 10716c19a6d3Smrg parisc-*) 10726c19a6d3Smrg cpu=hppa 10736c19a6d3Smrg basic_os=linux 10740ad07f78Smrg ;; 10756c19a6d3Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10766c19a6d3Smrg cpu=i586 10770ad07f78Smrg ;; 10786c19a6d3Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 10796c19a6d3Smrg cpu=i686 10800ad07f78Smrg ;; 10816c19a6d3Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10826c19a6d3Smrg cpu=i686 10830ad07f78Smrg ;; 10846c19a6d3Smrg pentium4-*) 10856c19a6d3Smrg cpu=i786 10860ad07f78Smrg ;; 10876c19a6d3Smrg pc98-*) 10886c19a6d3Smrg cpu=i386 10890ad07f78Smrg ;; 10906c19a6d3Smrg ppc-* | ppcbe-*) 10916c19a6d3Smrg cpu=powerpc 10920ad07f78Smrg ;; 10936c19a6d3Smrg ppcle-* | powerpclittle-*) 10946c19a6d3Smrg cpu=powerpcle 10950ad07f78Smrg ;; 10966c19a6d3Smrg ppc64-*) 10976c19a6d3Smrg cpu=powerpc64 10980ad07f78Smrg ;; 10996c19a6d3Smrg ppc64le-* | powerpc64little-*) 11006c19a6d3Smrg cpu=powerpc64le 11010ad07f78Smrg ;; 11026c19a6d3Smrg sb1-*) 11036c19a6d3Smrg cpu=mipsisa64sb1 11040ad07f78Smrg ;; 11056c19a6d3Smrg sb1el-*) 11066c19a6d3Smrg cpu=mipsisa64sb1el 11070ad07f78Smrg ;; 11086c19a6d3Smrg sh5e[lb]-*) 11096c19a6d3Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11100ad07f78Smrg ;; 11116c19a6d3Smrg spur-*) 11126c19a6d3Smrg cpu=spur 11130ad07f78Smrg ;; 11146c19a6d3Smrg strongarm-* | thumb-*) 11156c19a6d3Smrg cpu=arm 11160ad07f78Smrg ;; 11176c19a6d3Smrg tx39-*) 11186c19a6d3Smrg cpu=mipstx39 11190ad07f78Smrg ;; 11206c19a6d3Smrg tx39el-*) 11216c19a6d3Smrg cpu=mipstx39el 11220ad07f78Smrg ;; 11236c19a6d3Smrg x64-*) 11246c19a6d3Smrg cpu=x86_64 11250ad07f78Smrg ;; 11266c19a6d3Smrg xscale-* | xscalee[bl]-*) 11276c19a6d3Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11280ad07f78Smrg ;; 11296c19a6d3Smrg arm64-* | aarch64le-*) 11306c19a6d3Smrg cpu=aarch64 11310ad07f78Smrg ;; 11326c19a6d3Smrg 11336c19a6d3Smrg # Recognize the canonical CPU Types that limit and/or modify the 11346c19a6d3Smrg # company names they are paired with. 11356c19a6d3Smrg cr16-*) 11366c19a6d3Smrg basic_os=${basic_os:-elf} 11370ad07f78Smrg ;; 11386c19a6d3Smrg crisv32-* | etraxfs*-*) 11396c19a6d3Smrg cpu=crisv32 11406c19a6d3Smrg vendor=axis 11410ad07f78Smrg ;; 11426c19a6d3Smrg cris-* | etrax*-*) 11436c19a6d3Smrg cpu=cris 11446c19a6d3Smrg vendor=axis 11450ad07f78Smrg ;; 11466c19a6d3Smrg crx-*) 11476c19a6d3Smrg basic_os=${basic_os:-elf} 11480ad07f78Smrg ;; 11496c19a6d3Smrg neo-tandem) 11506c19a6d3Smrg cpu=neo 11516c19a6d3Smrg vendor=tandem 11520ad07f78Smrg ;; 11536c19a6d3Smrg nse-tandem) 11546c19a6d3Smrg cpu=nse 11556c19a6d3Smrg vendor=tandem 11560ad07f78Smrg ;; 11576c19a6d3Smrg nsr-tandem) 11586c19a6d3Smrg cpu=nsr 11596c19a6d3Smrg vendor=tandem 11600ad07f78Smrg ;; 11616c19a6d3Smrg nsv-tandem) 11626c19a6d3Smrg cpu=nsv 11636c19a6d3Smrg vendor=tandem 11640ad07f78Smrg ;; 11656c19a6d3Smrg nsx-tandem) 11666c19a6d3Smrg cpu=nsx 11676c19a6d3Smrg vendor=tandem 11680ad07f78Smrg ;; 11696c19a6d3Smrg mipsallegrexel-sony) 11706c19a6d3Smrg cpu=mipsallegrexel 11716c19a6d3Smrg vendor=sony 11720ad07f78Smrg ;; 11736c19a6d3Smrg tile*-*) 11746c19a6d3Smrg basic_os=${basic_os:-linux-gnu} 11750ad07f78Smrg ;; 11766c19a6d3Smrg 11770ad07f78Smrg *) 11786c19a6d3Smrg # Recognize the canonical CPU types that are allowed with any 11796c19a6d3Smrg # company name. 11806c19a6d3Smrg case $cpu in 11816c19a6d3Smrg 1750a | 580 \ 11826c19a6d3Smrg | a29k \ 11836c19a6d3Smrg | aarch64 | aarch64_be \ 11846c19a6d3Smrg | abacus \ 11856c19a6d3Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11866c19a6d3Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11876c19a6d3Smrg | alphapca5[67] | alpha64pca5[67] \ 11886c19a6d3Smrg | am33_2.0 \ 11896c19a6d3Smrg | amdgcn \ 11906c19a6d3Smrg | arc | arceb | arc32 | arc64 \ 11916c19a6d3Smrg | arm | arm[lb]e | arme[lb] | armv* \ 11926c19a6d3Smrg | avr | avr32 \ 11936c19a6d3Smrg | asmjs \ 11946c19a6d3Smrg | ba \ 11956c19a6d3Smrg | be32 | be64 \ 11966c19a6d3Smrg | bfin | bpf | bs2000 \ 11976c19a6d3Smrg | c[123]* | c30 | [cjt]90 | c4x \ 11986c19a6d3Smrg | c8051 | clipper | craynv | csky | cydra \ 11996c19a6d3Smrg | d10v | d30v | dlx | dsp16xx \ 12006c19a6d3Smrg | e2k | elxsi | epiphany \ 12016c19a6d3Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 12026c19a6d3Smrg | h8300 | h8500 \ 12036c19a6d3Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 12046c19a6d3Smrg | hexagon \ 12056c19a6d3Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12066c19a6d3Smrg | ip2k | iq2000 \ 12076c19a6d3Smrg | k1om \ 12086c19a6d3Smrg | le32 | le64 \ 12096c19a6d3Smrg | lm32 \ 12106c19a6d3Smrg | loongarch32 | loongarch64 \ 12116c19a6d3Smrg | m32c | m32r | m32rle \ 12126c19a6d3Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12136c19a6d3Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12146c19a6d3Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12156c19a6d3Smrg | microblaze | microblazeel \ 12166c19a6d3Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12176c19a6d3Smrg | mips16 \ 12186c19a6d3Smrg | mips64 | mips64eb | mips64el \ 12196c19a6d3Smrg | mips64octeon | mips64octeonel \ 12206c19a6d3Smrg | mips64orion | mips64orionel \ 12216c19a6d3Smrg | mips64r5900 | mips64r5900el \ 12226c19a6d3Smrg | mips64vr | mips64vrel \ 12236c19a6d3Smrg | mips64vr4100 | mips64vr4100el \ 12246c19a6d3Smrg | mips64vr4300 | mips64vr4300el \ 12256c19a6d3Smrg | mips64vr5000 | mips64vr5000el \ 12266c19a6d3Smrg | mips64vr5900 | mips64vr5900el \ 12276c19a6d3Smrg | mipsisa32 | mipsisa32el \ 12286c19a6d3Smrg | mipsisa32r2 | mipsisa32r2el \ 12296c19a6d3Smrg | mipsisa32r3 | mipsisa32r3el \ 12306c19a6d3Smrg | mipsisa32r5 | mipsisa32r5el \ 12316c19a6d3Smrg | mipsisa32r6 | mipsisa32r6el \ 12326c19a6d3Smrg | mipsisa64 | mipsisa64el \ 12336c19a6d3Smrg | mipsisa64r2 | mipsisa64r2el \ 12346c19a6d3Smrg | mipsisa64r3 | mipsisa64r3el \ 12356c19a6d3Smrg | mipsisa64r5 | mipsisa64r5el \ 12366c19a6d3Smrg | mipsisa64r6 | mipsisa64r6el \ 12376c19a6d3Smrg | mipsisa64sb1 | mipsisa64sb1el \ 12386c19a6d3Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 12396c19a6d3Smrg | mipsr5900 | mipsr5900el \ 12406c19a6d3Smrg | mipstx39 | mipstx39el \ 12416c19a6d3Smrg | mmix \ 12426c19a6d3Smrg | mn10200 | mn10300 \ 12436c19a6d3Smrg | moxie \ 12446c19a6d3Smrg | mt \ 12456c19a6d3Smrg | msp430 \ 12466c19a6d3Smrg | nds32 | nds32le | nds32be \ 12476c19a6d3Smrg | nfp \ 12486c19a6d3Smrg | nios | nios2 | nios2eb | nios2el \ 12496c19a6d3Smrg | none | np1 | ns16k | ns32k | nvptx \ 12506c19a6d3Smrg | open8 \ 12516c19a6d3Smrg | or1k* \ 12526c19a6d3Smrg | or32 \ 12536c19a6d3Smrg | orion \ 12546c19a6d3Smrg | picochip \ 12556c19a6d3Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12566c19a6d3Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12576c19a6d3Smrg | pru \ 12586c19a6d3Smrg | pyramid \ 12596c19a6d3Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12606c19a6d3Smrg | rl78 | romp | rs6000 | rx \ 12616c19a6d3Smrg | s390 | s390x \ 12626c19a6d3Smrg | score \ 12636c19a6d3Smrg | sh | shl \ 12646c19a6d3Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12656c19a6d3Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12666c19a6d3Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12676c19a6d3Smrg | sparclite \ 12686c19a6d3Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12696c19a6d3Smrg | spu \ 12706c19a6d3Smrg | tahoe \ 12716c19a6d3Smrg | thumbv7* \ 12726c19a6d3Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12736c19a6d3Smrg | tron \ 12746c19a6d3Smrg | ubicom32 \ 12756c19a6d3Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12766c19a6d3Smrg | vax \ 12776c19a6d3Smrg | visium \ 12786c19a6d3Smrg | w65 \ 12796c19a6d3Smrg | wasm32 | wasm64 \ 12806c19a6d3Smrg | we32k \ 12816c19a6d3Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12826c19a6d3Smrg | xstormy16 | xtensa* \ 12836c19a6d3Smrg | ymp \ 12846c19a6d3Smrg | z8k | z80) 12856c19a6d3Smrg ;; 12866c19a6d3Smrg 12876c19a6d3Smrg *) 12886c19a6d3Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12896c19a6d3Smrg exit 1 12906c19a6d3Smrg ;; 12916c19a6d3Smrg esac 12920ad07f78Smrg ;; 12930ad07f78Smrgesac 12940ad07f78Smrg 12950ad07f78Smrg# Here we canonicalize certain aliases for manufacturers. 12966c19a6d3Smrgcase $vendor in 12976c19a6d3Smrg digital*) 12986c19a6d3Smrg vendor=dec 12990ad07f78Smrg ;; 13006c19a6d3Smrg commodore*) 13016c19a6d3Smrg vendor=cbm 13020ad07f78Smrg ;; 13030ad07f78Smrg *) 13040ad07f78Smrg ;; 13050ad07f78Smrgesac 13060ad07f78Smrg 13070ad07f78Smrg# Decode manufacturer-specific aliases for certain operating systems. 13080ad07f78Smrg 13096c19a6d3Smrgif test x$basic_os != x 13100ad07f78Smrgthen 13116c19a6d3Smrg 13126c19a6d3Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 13136c19a6d3Smrg# set os. 13146c19a6d3Smrgcase $basic_os in 13156c19a6d3Smrg gnu/linux*) 13166c19a6d3Smrg kernel=linux 13176c19a6d3Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13186c19a6d3Smrg ;; 13196c19a6d3Smrg os2-emx) 13206c19a6d3Smrg kernel=os2 13216c19a6d3Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13226c19a6d3Smrg ;; 13236c19a6d3Smrg nto-qnx*) 13246c19a6d3Smrg kernel=nto 13256c19a6d3Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13266c19a6d3Smrg ;; 13276c19a6d3Smrg *-*) 13286c19a6d3Smrg # shellcheck disable=SC2162 13296c19a6d3Smrg saved_IFS=$IFS 13306c19a6d3Smrg IFS="-" read kernel os <<EOF 13316c19a6d3Smrg$basic_os 13326c19a6d3SmrgEOF 13336c19a6d3Smrg IFS=$saved_IFS 13346c19a6d3Smrg ;; 13356c19a6d3Smrg # Default OS when just kernel was specified 13366c19a6d3Smrg nto*) 13376c19a6d3Smrg kernel=nto 13386c19a6d3Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13396c19a6d3Smrg ;; 13406c19a6d3Smrg linux*) 13416c19a6d3Smrg kernel=linux 13426c19a6d3Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13436c19a6d3Smrg ;; 13446c19a6d3Smrg managarm*) 13456c19a6d3Smrg kernel=managarm 13466c19a6d3Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 13476c19a6d3Smrg ;; 13486c19a6d3Smrg *) 13496c19a6d3Smrg kernel= 13506c19a6d3Smrg os=$basic_os 13516c19a6d3Smrg ;; 13526c19a6d3Smrgesac 13536c19a6d3Smrg 13546c19a6d3Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13556c19a6d3Smrg# etc.) 13560ad07f78Smrgcase $os in 13576c19a6d3Smrg # First match some system type aliases that might get confused 13586c19a6d3Smrg # with valid system types. 13596c19a6d3Smrg # solaris* is a basic system type, with this one exception. 13606c19a6d3Smrg auroraux) 13616c19a6d3Smrg os=auroraux 13624028d71eSmrg ;; 13636c19a6d3Smrg bluegene*) 13646c19a6d3Smrg os=cnk 13650ad07f78Smrg ;; 13666c19a6d3Smrg solaris1 | solaris1.*) 13676c19a6d3Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13680ad07f78Smrg ;; 13696c19a6d3Smrg solaris) 13706c19a6d3Smrg os=solaris2 13710ad07f78Smrg ;; 13726c19a6d3Smrg unixware*) 13736c19a6d3Smrg os=sysv4.2uw 13740ad07f78Smrg ;; 13756c19a6d3Smrg # es1800 is here to avoid being matched by es* (a different OS) 13766c19a6d3Smrg es1800*) 13776c19a6d3Smrg os=ose 13780ad07f78Smrg ;; 13796c19a6d3Smrg # Some version numbers need modification 13806c19a6d3Smrg chorusos*) 13816c19a6d3Smrg os=chorusos 13820ad07f78Smrg ;; 13836c19a6d3Smrg isc) 13846c19a6d3Smrg os=isc2.2 13850ad07f78Smrg ;; 13866c19a6d3Smrg sco6) 13876c19a6d3Smrg os=sco5v6 13880ad07f78Smrg ;; 13896c19a6d3Smrg sco5) 13906c19a6d3Smrg os=sco3.2v5 13910ad07f78Smrg ;; 13926c19a6d3Smrg sco4) 13936c19a6d3Smrg os=sco3.2v4 13940ad07f78Smrg ;; 13956c19a6d3Smrg sco3.2.[4-9]*) 13966c19a6d3Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13970ad07f78Smrg ;; 13986c19a6d3Smrg sco*v* | scout) 13996c19a6d3Smrg # Don't match below 14000ad07f78Smrg ;; 14016c19a6d3Smrg sco*) 14026c19a6d3Smrg os=sco3.2v2 14030ad07f78Smrg ;; 14046c19a6d3Smrg psos*) 14056c19a6d3Smrg os=psos 14060ad07f78Smrg ;; 14076c19a6d3Smrg qnx*) 14086c19a6d3Smrg os=qnx 14090ad07f78Smrg ;; 14106c19a6d3Smrg hiux*) 14116c19a6d3Smrg os=hiuxwe2 14120ad07f78Smrg ;; 14136c19a6d3Smrg lynx*178) 14146c19a6d3Smrg os=lynxos178 14150ad07f78Smrg ;; 14166c19a6d3Smrg lynx*5) 14176c19a6d3Smrg os=lynxos5 14180ad07f78Smrg ;; 14196c19a6d3Smrg lynxos*) 14206c19a6d3Smrg # don't get caught up in next wildcard 14210ad07f78Smrg ;; 14226c19a6d3Smrg lynx*) 14236c19a6d3Smrg os=lynxos 14240ad07f78Smrg ;; 14256c19a6d3Smrg mac[0-9]*) 14266c19a6d3Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 14270ad07f78Smrg ;; 14286c19a6d3Smrg opened*) 14296c19a6d3Smrg os=openedition 14300ad07f78Smrg ;; 14316c19a6d3Smrg os400*) 14326c19a6d3Smrg os=os400 14330ad07f78Smrg ;; 14346c19a6d3Smrg sunos5*) 14356c19a6d3Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14360ad07f78Smrg ;; 14376c19a6d3Smrg sunos6*) 14386c19a6d3Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14390ad07f78Smrg ;; 14406c19a6d3Smrg wince*) 14416c19a6d3Smrg os=wince 14420ad07f78Smrg ;; 14436c19a6d3Smrg utek*) 14446c19a6d3Smrg os=bsd 14450ad07f78Smrg ;; 14466c19a6d3Smrg dynix*) 14476c19a6d3Smrg os=bsd 14480ad07f78Smrg ;; 14496c19a6d3Smrg acis*) 14506c19a6d3Smrg os=aos 14510ad07f78Smrg ;; 14526c19a6d3Smrg atheos*) 14536c19a6d3Smrg os=atheos 14540ad07f78Smrg ;; 14556c19a6d3Smrg syllable*) 14566c19a6d3Smrg os=syllable 14570ad07f78Smrg ;; 14586c19a6d3Smrg 386bsd) 14596c19a6d3Smrg os=bsd 14600ad07f78Smrg ;; 14616c19a6d3Smrg ctix* | uts*) 14626c19a6d3Smrg os=sysv 14630ad07f78Smrg ;; 14646c19a6d3Smrg nova*) 14656c19a6d3Smrg os=rtmk-nova 14660ad07f78Smrg ;; 14676c19a6d3Smrg ns2) 14686c19a6d3Smrg os=nextstep2 14690ad07f78Smrg ;; 14706c19a6d3Smrg # Preserve the version number of sinix5. 14716c19a6d3Smrg sinix5.*) 14726c19a6d3Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14730ad07f78Smrg ;; 14746c19a6d3Smrg sinix*) 14756c19a6d3Smrg os=sysv4 14760ad07f78Smrg ;; 14776c19a6d3Smrg tpf*) 14786c19a6d3Smrg os=tpf 14790ad07f78Smrg ;; 14806c19a6d3Smrg triton*) 14816c19a6d3Smrg os=sysv3 14820ad07f78Smrg ;; 14836c19a6d3Smrg oss*) 14846c19a6d3Smrg os=sysv3 14850ad07f78Smrg ;; 14866c19a6d3Smrg svr4*) 14876c19a6d3Smrg os=sysv4 14880ad07f78Smrg ;; 14896c19a6d3Smrg svr3) 14906c19a6d3Smrg os=sysv3 14910ad07f78Smrg ;; 14926c19a6d3Smrg sysvr4) 14936c19a6d3Smrg os=sysv4 14940ad07f78Smrg ;; 14956c19a6d3Smrg ose*) 14966c19a6d3Smrg os=ose 14970ad07f78Smrg ;; 14986c19a6d3Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14996c19a6d3Smrg os=mint 15000ad07f78Smrg ;; 15016c19a6d3Smrg dicos*) 15026c19a6d3Smrg os=dicos 15030ad07f78Smrg ;; 15046c19a6d3Smrg pikeos*) 15056c19a6d3Smrg # Until real need of OS specific support for 15066c19a6d3Smrg # particular features comes up, bare metal 15076c19a6d3Smrg # configurations are quite functional. 15086c19a6d3Smrg case $cpu in 15096c19a6d3Smrg arm*) 15106c19a6d3Smrg os=eabi 15116c19a6d3Smrg ;; 15126c19a6d3Smrg *) 15136c19a6d3Smrg os=elf 15146c19a6d3Smrg ;; 15156c19a6d3Smrg esac 15160ad07f78Smrg ;; 15170ad07f78Smrg *) 15186c19a6d3Smrg # No normalization, but not necessarily accepted, that comes below. 15190ad07f78Smrg ;; 15200ad07f78Smrgesac 15216c19a6d3Smrg 15220ad07f78Smrgelse 15230ad07f78Smrg 15240ad07f78Smrg# Here we handle the default operating systems that come with various machines. 15250ad07f78Smrg# The value should be what the vendor currently ships out the door with their 15260ad07f78Smrg# machine or put another way, the most popular os provided with the machine. 15270ad07f78Smrg 15280ad07f78Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15290ad07f78Smrg# "-sun"), then you have to tell the case statement up towards the top 15300ad07f78Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15310ad07f78Smrg# will signal an error saying that MANUFACTURER isn't an operating 15320ad07f78Smrg# system, and we'll never get to this point. 15330ad07f78Smrg 15346c19a6d3Smrgkernel= 15356c19a6d3Smrgcase $cpu-$vendor in 15366c19a6d3Smrg score-*) 15376c19a6d3Smrg os=elf 15380ad07f78Smrg ;; 15396c19a6d3Smrg spu-*) 15406c19a6d3Smrg os=elf 15410ad07f78Smrg ;; 15420ad07f78Smrg *-acorn) 15436c19a6d3Smrg os=riscix1.2 15440ad07f78Smrg ;; 15450ad07f78Smrg arm*-rebel) 15466c19a6d3Smrg kernel=linux 15476c19a6d3Smrg os=gnu 15480ad07f78Smrg ;; 15490ad07f78Smrg arm*-semi) 15506c19a6d3Smrg os=aout 15516c19a6d3Smrg ;; 15526c19a6d3Smrg c4x-* | tic4x-*) 15536c19a6d3Smrg os=coff 15546c19a6d3Smrg ;; 15556c19a6d3Smrg c8051-*) 15566c19a6d3Smrg os=elf 15576c19a6d3Smrg ;; 15586c19a6d3Smrg clipper-intergraph) 15596c19a6d3Smrg os=clix 15600ad07f78Smrg ;; 15616c19a6d3Smrg hexagon-*) 15626c19a6d3Smrg os=elf 15630ad07f78Smrg ;; 15644028d71eSmrg tic54x-*) 15656c19a6d3Smrg os=coff 15664028d71eSmrg ;; 15674028d71eSmrg tic55x-*) 15686c19a6d3Smrg os=coff 15694028d71eSmrg ;; 15704028d71eSmrg tic6x-*) 15716c19a6d3Smrg os=coff 15724028d71eSmrg ;; 15730ad07f78Smrg # This must come before the *-dec entry. 15740ad07f78Smrg pdp10-*) 15756c19a6d3Smrg os=tops20 15760ad07f78Smrg ;; 15770ad07f78Smrg pdp11-*) 15786c19a6d3Smrg os=none 15790ad07f78Smrg ;; 15800ad07f78Smrg *-dec | vax-*) 15816c19a6d3Smrg os=ultrix4.2 15820ad07f78Smrg ;; 15830ad07f78Smrg m68*-apollo) 15846c19a6d3Smrg os=domain 15850ad07f78Smrg ;; 15860ad07f78Smrg i386-sun) 15876c19a6d3Smrg os=sunos4.0.2 15880ad07f78Smrg ;; 15890ad07f78Smrg m68000-sun) 15906c19a6d3Smrg os=sunos3 15910ad07f78Smrg ;; 15920ad07f78Smrg m68*-cisco) 15936c19a6d3Smrg os=aout 15940ad07f78Smrg ;; 15956c19a6d3Smrg mep-*) 15966c19a6d3Smrg os=elf 15970ad07f78Smrg ;; 15980ad07f78Smrg mips*-cisco) 15996c19a6d3Smrg os=elf 16000ad07f78Smrg ;; 16010ad07f78Smrg mips*-*) 16026c19a6d3Smrg os=elf 16030ad07f78Smrg ;; 16040ad07f78Smrg or32-*) 16056c19a6d3Smrg os=coff 16060ad07f78Smrg ;; 16070ad07f78Smrg *-tti) # must be before sparc entry or we get the wrong os. 16086c19a6d3Smrg os=sysv3 16090ad07f78Smrg ;; 16100ad07f78Smrg sparc-* | *-sun) 16116c19a6d3Smrg os=sunos4.1.1 16120ad07f78Smrg ;; 16136c19a6d3Smrg pru-*) 16146c19a6d3Smrg os=elf 16150ad07f78Smrg ;; 16166c19a6d3Smrg *-be) 16176c19a6d3Smrg os=beos 16180ad07f78Smrg ;; 16190ad07f78Smrg *-ibm) 16206c19a6d3Smrg os=aix 16210ad07f78Smrg ;; 16226c19a6d3Smrg *-knuth) 16236c19a6d3Smrg os=mmixware 16240ad07f78Smrg ;; 16250ad07f78Smrg *-wec) 16266c19a6d3Smrg os=proelf 16270ad07f78Smrg ;; 16280ad07f78Smrg *-winbond) 16296c19a6d3Smrg os=proelf 16300ad07f78Smrg ;; 16310ad07f78Smrg *-oki) 16326c19a6d3Smrg os=proelf 16330ad07f78Smrg ;; 16340ad07f78Smrg *-hp) 16356c19a6d3Smrg os=hpux 16360ad07f78Smrg ;; 16370ad07f78Smrg *-hitachi) 16386c19a6d3Smrg os=hiux 16390ad07f78Smrg ;; 16400ad07f78Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16416c19a6d3Smrg os=sysv 16420ad07f78Smrg ;; 16430ad07f78Smrg *-cbm) 16446c19a6d3Smrg os=amigaos 16450ad07f78Smrg ;; 16460ad07f78Smrg *-dg) 16476c19a6d3Smrg os=dgux 16480ad07f78Smrg ;; 16490ad07f78Smrg *-dolphin) 16506c19a6d3Smrg os=sysv3 16510ad07f78Smrg ;; 16520ad07f78Smrg m68k-ccur) 16536c19a6d3Smrg os=rtu 16540ad07f78Smrg ;; 16550ad07f78Smrg m88k-omron*) 16566c19a6d3Smrg os=luna 16570ad07f78Smrg ;; 16586c19a6d3Smrg *-next) 16596c19a6d3Smrg os=nextstep 16600ad07f78Smrg ;; 16610ad07f78Smrg *-sequent) 16626c19a6d3Smrg os=ptx 16630ad07f78Smrg ;; 16640ad07f78Smrg *-crds) 16656c19a6d3Smrg os=unos 16660ad07f78Smrg ;; 16670ad07f78Smrg *-ns) 16686c19a6d3Smrg os=genix 16690ad07f78Smrg ;; 16700ad07f78Smrg i370-*) 16716c19a6d3Smrg os=mvs 16720ad07f78Smrg ;; 16730ad07f78Smrg *-gould) 16746c19a6d3Smrg os=sysv 16750ad07f78Smrg ;; 16760ad07f78Smrg *-highlevel) 16776c19a6d3Smrg os=bsd 16780ad07f78Smrg ;; 16790ad07f78Smrg *-encore) 16806c19a6d3Smrg os=bsd 16810ad07f78Smrg ;; 16820ad07f78Smrg *-sgi) 16836c19a6d3Smrg os=irix 16840ad07f78Smrg ;; 16850ad07f78Smrg *-siemens) 16866c19a6d3Smrg os=sysv4 16870ad07f78Smrg ;; 16880ad07f78Smrg *-masscomp) 16896c19a6d3Smrg os=rtu 16900ad07f78Smrg ;; 16910ad07f78Smrg f30[01]-fujitsu | f700-fujitsu) 16926c19a6d3Smrg os=uxpv 16930ad07f78Smrg ;; 16940ad07f78Smrg *-rom68k) 16956c19a6d3Smrg os=coff 16960ad07f78Smrg ;; 16970ad07f78Smrg *-*bug) 16986c19a6d3Smrg os=coff 16990ad07f78Smrg ;; 17000ad07f78Smrg *-apple) 17016c19a6d3Smrg os=macos 17020ad07f78Smrg ;; 17030ad07f78Smrg *-atari*) 17046c19a6d3Smrg os=mint 17056c19a6d3Smrg ;; 17066c19a6d3Smrg *-wrs) 17076c19a6d3Smrg os=vxworks 17080ad07f78Smrg ;; 17090ad07f78Smrg *) 17106c19a6d3Smrg os=none 17110ad07f78Smrg ;; 17120ad07f78Smrgesac 17136c19a6d3Smrg 17140ad07f78Smrgfi 17150ad07f78Smrg 17166c19a6d3Smrg# Now, validate our (potentially fixed-up) OS. 17176c19a6d3Smrgcase $os in 17186c19a6d3Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17196c19a6d3Smrg musl* | newlib* | relibc* | uclibc*) 17206c19a6d3Smrg ;; 17216c19a6d3Smrg # Likewise for "kernel-abi" 17226c19a6d3Smrg eabi* | gnueabi*) 17236c19a6d3Smrg ;; 17246c19a6d3Smrg # VxWorks passes extra cpu info in the 4th filed. 17256c19a6d3Smrg simlinux | simwindows | spe) 17266c19a6d3Smrg ;; 17276c19a6d3Smrg # Now accept the basic system types. 17286c19a6d3Smrg # The portable systems comes first. 17296c19a6d3Smrg # Each alternative MUST end in a * to match a version number. 17306c19a6d3Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17316c19a6d3Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17326c19a6d3Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17336c19a6d3Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17346c19a6d3Smrg | hiux* | abug | nacl* | netware* | windows* \ 17356c19a6d3Smrg | os9* | macos* | osx* | ios* \ 17366c19a6d3Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17376c19a6d3Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17386c19a6d3Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17396c19a6d3Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17406c19a6d3Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17416c19a6d3Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17426c19a6d3Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17436c19a6d3Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17446c19a6d3Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17456c19a6d3Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17466c19a6d3Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17476c19a6d3Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17486c19a6d3Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17496c19a6d3Smrg | midipix* | mingw32* | mingw64* | mint* \ 17506c19a6d3Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17516c19a6d3Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17526c19a6d3Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17536c19a6d3Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17546c19a6d3Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17556c19a6d3Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17566c19a6d3Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17576c19a6d3Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17586c19a6d3Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17596c19a6d3Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17606c19a6d3Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 17616c19a6d3Smrg | fiwix* | mlibc* ) 17626c19a6d3Smrg ;; 17636c19a6d3Smrg # This one is extra strict with allowed versions 17646c19a6d3Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17656c19a6d3Smrg # Don't forget version if it is 3.2v4 or newer. 17666c19a6d3Smrg ;; 17676c19a6d3Smrg none) 17686c19a6d3Smrg ;; 17696c19a6d3Smrg kernel* ) 17706c19a6d3Smrg # Restricted further below 17716c19a6d3Smrg ;; 17726c19a6d3Smrg *) 17736c19a6d3Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17746c19a6d3Smrg exit 1 17756c19a6d3Smrg ;; 17766c19a6d3Smrgesac 17776c19a6d3Smrg 17786c19a6d3Smrg# As a final step for OS-related things, validate the OS-kernel combination 17796c19a6d3Smrg# (given a valid OS), if there is a kernel. 17806c19a6d3Smrgcase $kernel-$os in 17816c19a6d3Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17826c19a6d3Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 17836c19a6d3Smrg ;; 17846c19a6d3Smrg uclinux-uclibc* ) 17856c19a6d3Smrg ;; 17866c19a6d3Smrg managarm-mlibc* | managarm-kernel* ) 17876c19a6d3Smrg ;; 17886c19a6d3Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 17896c19a6d3Smrg # These are just libc implementations, not actual OSes, and thus 17906c19a6d3Smrg # require a kernel. 17916c19a6d3Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17926c19a6d3Smrg exit 1 17936c19a6d3Smrg ;; 17946c19a6d3Smrg -kernel* ) 17956c19a6d3Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 17966c19a6d3Smrg exit 1 17976c19a6d3Smrg ;; 17986c19a6d3Smrg *-kernel* ) 17996c19a6d3Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 18006c19a6d3Smrg exit 1 18016c19a6d3Smrg ;; 18026c19a6d3Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 18036c19a6d3Smrg ;; 18046c19a6d3Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 18056c19a6d3Smrg ;; 18066c19a6d3Smrg nto-qnx*) 18076c19a6d3Smrg ;; 18086c19a6d3Smrg os2-emx) 18096c19a6d3Smrg ;; 18106c19a6d3Smrg *-eabi* | *-gnueabi*) 18116c19a6d3Smrg ;; 18126c19a6d3Smrg -*) 18136c19a6d3Smrg # Blank kernel with real OS is always fine. 18146c19a6d3Smrg ;; 18156c19a6d3Smrg *-*) 18166c19a6d3Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 18176c19a6d3Smrg exit 1 18186c19a6d3Smrg ;; 18196c19a6d3Smrgesac 18206c19a6d3Smrg 18210ad07f78Smrg# Here we handle the case where we know the os, and the CPU type, but not the 18220ad07f78Smrg# manufacturer. We pick the logical manufacturer. 18236c19a6d3Smrgcase $vendor in 18246c19a6d3Smrg unknown) 18256c19a6d3Smrg case $cpu-$os in 18266c19a6d3Smrg *-riscix*) 18270ad07f78Smrg vendor=acorn 18280ad07f78Smrg ;; 18296c19a6d3Smrg *-sunos*) 18300ad07f78Smrg vendor=sun 18310ad07f78Smrg ;; 18326c19a6d3Smrg *-cnk* | *-aix*) 18330ad07f78Smrg vendor=ibm 18340ad07f78Smrg ;; 18356c19a6d3Smrg *-beos*) 18360ad07f78Smrg vendor=be 18370ad07f78Smrg ;; 18386c19a6d3Smrg *-hpux*) 18390ad07f78Smrg vendor=hp 18400ad07f78Smrg ;; 18416c19a6d3Smrg *-mpeix*) 18420ad07f78Smrg vendor=hp 18430ad07f78Smrg ;; 18446c19a6d3Smrg *-hiux*) 18450ad07f78Smrg vendor=hitachi 18460ad07f78Smrg ;; 18476c19a6d3Smrg *-unos*) 18480ad07f78Smrg vendor=crds 18490ad07f78Smrg ;; 18506c19a6d3Smrg *-dgux*) 18510ad07f78Smrg vendor=dg 18520ad07f78Smrg ;; 18536c19a6d3Smrg *-luna*) 18540ad07f78Smrg vendor=omron 18550ad07f78Smrg ;; 18566c19a6d3Smrg *-genix*) 18570ad07f78Smrg vendor=ns 18580ad07f78Smrg ;; 18596c19a6d3Smrg *-clix*) 18606c19a6d3Smrg vendor=intergraph 18616c19a6d3Smrg ;; 18626c19a6d3Smrg *-mvs* | *-opened*) 18636c19a6d3Smrg vendor=ibm 18646c19a6d3Smrg ;; 18656c19a6d3Smrg *-os400*) 18660ad07f78Smrg vendor=ibm 18670ad07f78Smrg ;; 18686c19a6d3Smrg s390-* | s390x-*) 18690ad07f78Smrg vendor=ibm 18700ad07f78Smrg ;; 18716c19a6d3Smrg *-ptx*) 18720ad07f78Smrg vendor=sequent 18730ad07f78Smrg ;; 18746c19a6d3Smrg *-tpf*) 18750ad07f78Smrg vendor=ibm 18760ad07f78Smrg ;; 18776c19a6d3Smrg *-vxsim* | *-vxworks* | *-windiss*) 18780ad07f78Smrg vendor=wrs 18790ad07f78Smrg ;; 18806c19a6d3Smrg *-aux*) 18810ad07f78Smrg vendor=apple 18820ad07f78Smrg ;; 18836c19a6d3Smrg *-hms*) 18840ad07f78Smrg vendor=hitachi 18850ad07f78Smrg ;; 18866c19a6d3Smrg *-mpw* | *-macos*) 18870ad07f78Smrg vendor=apple 18880ad07f78Smrg ;; 18896c19a6d3Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18900ad07f78Smrg vendor=atari 18910ad07f78Smrg ;; 18926c19a6d3Smrg *-vos*) 18930ad07f78Smrg vendor=stratus 18940ad07f78Smrg ;; 18950ad07f78Smrg esac 18960ad07f78Smrg ;; 18970ad07f78Smrgesac 18980ad07f78Smrg 18996c19a6d3Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 19000ad07f78Smrgexit 19010ad07f78Smrg 19020ad07f78Smrg# Local variables: 19036c19a6d3Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 19040ad07f78Smrg# time-stamp-start: "timestamp='" 19050ad07f78Smrg# time-stamp-format: "%:y-%02m-%02d" 19060ad07f78Smrg# time-stamp-end: "'" 19070ad07f78Smrg# End: 1908