1f33d31a3Smrg#! /bin/sh 2f33d31a3Smrg# Configuration validation subroutine script. 38b5ec993Smrg# Copyright 1992-2024 Free Software Foundation, Inc. 4f33d31a3Smrg 59f1d9476Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 69f1d9476Smrg 78b5ec993Smrgtimestamp='2024-01-01' 8f33d31a3Smrg 9f33d31a3Smrg# This file is free software; you can redistribute it and/or modify it 10f33d31a3Smrg# under the terms of the GNU General Public License as published by 118b5ec993Smrg# the Free Software Foundation, either version 3 of the License, or 12f33d31a3Smrg# (at your option) any later version. 13f33d31a3Smrg# 14f33d31a3Smrg# This program is distributed in the hope that it will be useful, but 15f33d31a3Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16f33d31a3Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17f33d31a3Smrg# General Public License for more details. 18f33d31a3Smrg# 19f33d31a3Smrg# You should have received a copy of the GNU General Public License 20f33d31a3Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21f33d31a3Smrg# 22f33d31a3Smrg# As a special exception to the GNU General Public License, if you 23f33d31a3Smrg# distribute this file as part of a program that contains a 24f33d31a3Smrg# configuration script generated by Autoconf, you may include it under 25f33d31a3Smrg# the same distribution terms that you use for the rest of that 26f33d31a3Smrg# program. This Exception is an additional permission under section 7 27f33d31a3Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28f33d31a3Smrg 29f33d31a3Smrg 30f33d31a3Smrg# Please send patches to <config-patches@gnu.org>. 31f33d31a3Smrg# 32f33d31a3Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33f33d31a3Smrg# Supply the specified configuration type as an argument. 34f33d31a3Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35f33d31a3Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36f33d31a3Smrg 37f33d31a3Smrg# You can get the latest version of this script from: 389f1d9476Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39f33d31a3Smrg 40f33d31a3Smrg# This file is supposed to be the same for all GNU packages 41f33d31a3Smrg# and recognize all the CPU types, system types and aliases 42f33d31a3Smrg# that are meaningful with *any* GNU software. 43f33d31a3Smrg# Each package is responsible for reporting which valid configurations 44f33d31a3Smrg# it does not support. The user should be able to distinguish 45f33d31a3Smrg# a failure to support a valid configuration from a meaningless 46f33d31a3Smrg# configuration. 47f33d31a3Smrg 48f33d31a3Smrg# The goal of this file is to map all the various variations of a given 49f33d31a3Smrg# machine specification into a single specification in the form: 50f33d31a3Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51f33d31a3Smrg# or in some cases, the newer four-part form: 52f33d31a3Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53f33d31a3Smrg# It is wrong to echo any other type of specification. 54f33d31a3Smrg 559f1d9476Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 569f1d9476Smrg# about features and limitations of the classic Bourne shell that were 579f1d9476Smrg# superseded or lifted in POSIX. However, this script identifies a wide 589f1d9476Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 599f1d9476Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 609f1d9476Smrg# have a pre-POSIX /bin/sh. 619f1d9476Smrg 62f33d31a3Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63f33d31a3Smrg 64f33d31a3Smrgusage="\ 65f33d31a3SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66f33d31a3Smrg 67f33d31a3SmrgCanonicalize a configuration name. 68f33d31a3Smrg 69f33d31a3SmrgOptions: 70f33d31a3Smrg -h, --help print this help, then exit 71f33d31a3Smrg -t, --time-stamp print date of last modification, then exit 72f33d31a3Smrg -v, --version print version number, then exit 73f33d31a3Smrg 74f33d31a3SmrgReport bugs and patches to <config-patches@gnu.org>." 75f33d31a3Smrg 76f33d31a3Smrgversion="\ 77f33d31a3SmrgGNU config.sub ($timestamp) 78f33d31a3Smrg 798b5ec993SmrgCopyright 1992-2024 Free Software Foundation, Inc. 80f33d31a3Smrg 81f33d31a3SmrgThis is free software; see the source for copying conditions. There is NO 82f33d31a3Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83f33d31a3Smrg 84f33d31a3Smrghelp=" 858b5ec993SmrgTry '$me --help' for more information." 86f33d31a3Smrg 87f33d31a3Smrg# Parse command line 88f33d31a3Smrgwhile test $# -gt 0 ; do 89f33d31a3Smrg case $1 in 90f33d31a3Smrg --time-stamp | --time* | -t ) 91f33d31a3Smrg echo "$timestamp" ; exit ;; 92f33d31a3Smrg --version | -v ) 93f33d31a3Smrg echo "$version" ; exit ;; 94f33d31a3Smrg --help | --h* | -h ) 95f33d31a3Smrg echo "$usage"; exit ;; 96f33d31a3Smrg -- ) # Stop option processing 97f33d31a3Smrg shift; break ;; 98f33d31a3Smrg - ) # Use stdin as input. 99f33d31a3Smrg break ;; 100f33d31a3Smrg -* ) 1019f1d9476Smrg echo "$me: invalid option $1$help" >&2 102f33d31a3Smrg exit 1 ;; 103f33d31a3Smrg 104f33d31a3Smrg *local*) 105f33d31a3Smrg # First pass through any local machine types. 106f33d31a3Smrg echo "$1" 107f33d31a3Smrg exit ;; 108f33d31a3Smrg 109f33d31a3Smrg * ) 110f33d31a3Smrg break ;; 111f33d31a3Smrg esac 112f33d31a3Smrgdone 113f33d31a3Smrg 114f33d31a3Smrgcase $# in 115f33d31a3Smrg 0) echo "$me: missing argument$help" >&2 116f33d31a3Smrg exit 1;; 117f33d31a3Smrg 1) ;; 118f33d31a3Smrg *) echo "$me: too many arguments$help" >&2 119f33d31a3Smrg exit 1;; 120f33d31a3Smrgesac 121f33d31a3Smrg 1229f1d9476Smrg# Split fields of configuration type 1239f1d9476Smrg# shellcheck disable=SC2162 1249f1d9476Smrgsaved_IFS=$IFS 1259f1d9476SmrgIFS="-" read field1 field2 field3 field4 <<EOF 1269f1d9476Smrg$1 1279f1d9476SmrgEOF 1289f1d9476SmrgIFS=$saved_IFS 129f33d31a3Smrg 1309f1d9476Smrg# Separate into logical components for further validation 1319f1d9476Smrgcase $1 in 1329f1d9476Smrg *-*-*-*-*) 1338b5ec993Smrg echo "Invalid configuration '$1': more than four components" >&2 1349f1d9476Smrg exit 1 135f33d31a3Smrg ;; 1369f1d9476Smrg *-*-*-*) 1379f1d9476Smrg basic_machine=$field1-$field2 1389f1d9476Smrg basic_os=$field3-$field4 139f33d31a3Smrg ;; 1409f1d9476Smrg *-*-*) 1419f1d9476Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1429f1d9476Smrg # parts 1439f1d9476Smrg maybe_os=$field2-$field3 1449f1d9476Smrg case $maybe_os in 1459f1d9476Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 1469f1d9476Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1479f1d9476Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1488b5ec993Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ 1498b5ec993Smrg | windows-* ) 1509f1d9476Smrg basic_machine=$field1 1519f1d9476Smrg basic_os=$maybe_os 1529f1d9476Smrg ;; 1539f1d9476Smrg android-linux) 1549f1d9476Smrg basic_machine=$field1-unknown 1559f1d9476Smrg basic_os=linux-android 1569f1d9476Smrg ;; 1579f1d9476Smrg *) 1589f1d9476Smrg basic_machine=$field1-$field2 1599f1d9476Smrg basic_os=$field3 1609f1d9476Smrg ;; 1619f1d9476Smrg esac 162f33d31a3Smrg ;; 1639f1d9476Smrg *-*) 1649f1d9476Smrg # A lone config we happen to match not fitting any pattern 1659f1d9476Smrg case $field1-$field2 in 1669f1d9476Smrg decstation-3100) 1679f1d9476Smrg basic_machine=mips-dec 1689f1d9476Smrg basic_os= 1699f1d9476Smrg ;; 1709f1d9476Smrg *-*) 1719f1d9476Smrg # Second component is usually, but not always the OS 1729f1d9476Smrg case $field2 in 1739f1d9476Smrg # Prevent following clause from handling this valid os 1749f1d9476Smrg sun*os*) 1759f1d9476Smrg basic_machine=$field1 1769f1d9476Smrg basic_os=$field2 1779f1d9476Smrg ;; 1789f1d9476Smrg zephyr*) 1799f1d9476Smrg basic_machine=$field1-unknown 1809f1d9476Smrg basic_os=$field2 1819f1d9476Smrg ;; 1829f1d9476Smrg # Manufacturers 1839f1d9476Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1849f1d9476Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1859f1d9476Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1869f1d9476Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1879f1d9476Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1889f1d9476Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1899f1d9476Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1909f1d9476Smrg | microblaze* | sim | cisco \ 1919f1d9476Smrg | oki | wec | wrs | winbond) 1929f1d9476Smrg basic_machine=$field1-$field2 1939f1d9476Smrg basic_os= 1949f1d9476Smrg ;; 1959f1d9476Smrg *) 1969f1d9476Smrg basic_machine=$field1 1979f1d9476Smrg basic_os=$field2 1989f1d9476Smrg ;; 1999f1d9476Smrg esac 2009f1d9476Smrg ;; 2019f1d9476Smrg esac 202f33d31a3Smrg ;; 2039f1d9476Smrg *) 2049f1d9476Smrg # Convert single-component short-hands not valid as part of 2059f1d9476Smrg # multi-component configurations. 2069f1d9476Smrg case $field1 in 2079f1d9476Smrg 386bsd) 2089f1d9476Smrg basic_machine=i386-pc 2099f1d9476Smrg basic_os=bsd 2109f1d9476Smrg ;; 2119f1d9476Smrg a29khif) 2129f1d9476Smrg basic_machine=a29k-amd 2139f1d9476Smrg basic_os=udi 2149f1d9476Smrg ;; 2159f1d9476Smrg adobe68k) 2169f1d9476Smrg basic_machine=m68010-adobe 2179f1d9476Smrg basic_os=scout 2189f1d9476Smrg ;; 2199f1d9476Smrg alliant) 2209f1d9476Smrg basic_machine=fx80-alliant 2219f1d9476Smrg basic_os= 2229f1d9476Smrg ;; 2239f1d9476Smrg altos | altos3068) 2249f1d9476Smrg basic_machine=m68k-altos 2259f1d9476Smrg basic_os= 2269f1d9476Smrg ;; 2279f1d9476Smrg am29k) 2289f1d9476Smrg basic_machine=a29k-none 2299f1d9476Smrg basic_os=bsd 2309f1d9476Smrg ;; 2319f1d9476Smrg amdahl) 2329f1d9476Smrg basic_machine=580-amdahl 2339f1d9476Smrg basic_os=sysv 2349f1d9476Smrg ;; 2359f1d9476Smrg amiga) 2369f1d9476Smrg basic_machine=m68k-unknown 2379f1d9476Smrg basic_os= 2389f1d9476Smrg ;; 2399f1d9476Smrg amigaos | amigados) 2409f1d9476Smrg basic_machine=m68k-unknown 2419f1d9476Smrg basic_os=amigaos 2429f1d9476Smrg ;; 2439f1d9476Smrg amigaunix | amix) 2449f1d9476Smrg basic_machine=m68k-unknown 2459f1d9476Smrg basic_os=sysv4 2469f1d9476Smrg ;; 2479f1d9476Smrg apollo68) 2489f1d9476Smrg basic_machine=m68k-apollo 2499f1d9476Smrg basic_os=sysv 2509f1d9476Smrg ;; 2519f1d9476Smrg apollo68bsd) 2529f1d9476Smrg basic_machine=m68k-apollo 2539f1d9476Smrg basic_os=bsd 2549f1d9476Smrg ;; 2559f1d9476Smrg aros) 2569f1d9476Smrg basic_machine=i386-pc 2579f1d9476Smrg basic_os=aros 2589f1d9476Smrg ;; 2599f1d9476Smrg aux) 2609f1d9476Smrg basic_machine=m68k-apple 2619f1d9476Smrg basic_os=aux 2629f1d9476Smrg ;; 2639f1d9476Smrg balance) 2649f1d9476Smrg basic_machine=ns32k-sequent 2659f1d9476Smrg basic_os=dynix 2669f1d9476Smrg ;; 2679f1d9476Smrg blackfin) 2689f1d9476Smrg basic_machine=bfin-unknown 2699f1d9476Smrg basic_os=linux 2709f1d9476Smrg ;; 2719f1d9476Smrg cegcc) 2729f1d9476Smrg basic_machine=arm-unknown 2739f1d9476Smrg basic_os=cegcc 2749f1d9476Smrg ;; 2759f1d9476Smrg convex-c1) 2769f1d9476Smrg basic_machine=c1-convex 2779f1d9476Smrg basic_os=bsd 2789f1d9476Smrg ;; 2799f1d9476Smrg convex-c2) 2809f1d9476Smrg basic_machine=c2-convex 2819f1d9476Smrg basic_os=bsd 2829f1d9476Smrg ;; 2839f1d9476Smrg convex-c32) 2849f1d9476Smrg basic_machine=c32-convex 2859f1d9476Smrg basic_os=bsd 2869f1d9476Smrg ;; 2879f1d9476Smrg convex-c34) 2889f1d9476Smrg basic_machine=c34-convex 2899f1d9476Smrg basic_os=bsd 2909f1d9476Smrg ;; 2919f1d9476Smrg convex-c38) 2929f1d9476Smrg basic_machine=c38-convex 2939f1d9476Smrg basic_os=bsd 2949f1d9476Smrg ;; 2959f1d9476Smrg cray) 2969f1d9476Smrg basic_machine=j90-cray 2979f1d9476Smrg basic_os=unicos 2989f1d9476Smrg ;; 2999f1d9476Smrg crds | unos) 3009f1d9476Smrg basic_machine=m68k-crds 3019f1d9476Smrg basic_os= 3029f1d9476Smrg ;; 3039f1d9476Smrg da30) 3049f1d9476Smrg basic_machine=m68k-da30 3059f1d9476Smrg basic_os= 3069f1d9476Smrg ;; 3079f1d9476Smrg decstation | pmax | pmin | dec3100 | decstatn) 3089f1d9476Smrg basic_machine=mips-dec 3099f1d9476Smrg basic_os= 3109f1d9476Smrg ;; 3119f1d9476Smrg delta88) 3129f1d9476Smrg basic_machine=m88k-motorola 3139f1d9476Smrg basic_os=sysv3 3149f1d9476Smrg ;; 3159f1d9476Smrg dicos) 3169f1d9476Smrg basic_machine=i686-pc 3179f1d9476Smrg basic_os=dicos 3189f1d9476Smrg ;; 3199f1d9476Smrg djgpp) 3209f1d9476Smrg basic_machine=i586-pc 3219f1d9476Smrg basic_os=msdosdjgpp 3229f1d9476Smrg ;; 3239f1d9476Smrg ebmon29k) 3249f1d9476Smrg basic_machine=a29k-amd 3259f1d9476Smrg basic_os=ebmon 3269f1d9476Smrg ;; 3279f1d9476Smrg es1800 | OSE68k | ose68k | ose | OSE) 3289f1d9476Smrg basic_machine=m68k-ericsson 3299f1d9476Smrg basic_os=ose 3309f1d9476Smrg ;; 3319f1d9476Smrg gmicro) 3329f1d9476Smrg basic_machine=tron-gmicro 3339f1d9476Smrg basic_os=sysv 3349f1d9476Smrg ;; 3359f1d9476Smrg go32) 3369f1d9476Smrg basic_machine=i386-pc 3379f1d9476Smrg basic_os=go32 3389f1d9476Smrg ;; 3399f1d9476Smrg h8300hms) 3409f1d9476Smrg basic_machine=h8300-hitachi 3419f1d9476Smrg basic_os=hms 3429f1d9476Smrg ;; 3439f1d9476Smrg h8300xray) 3449f1d9476Smrg basic_machine=h8300-hitachi 3459f1d9476Smrg basic_os=xray 3469f1d9476Smrg ;; 3479f1d9476Smrg h8500hms) 3489f1d9476Smrg basic_machine=h8500-hitachi 3499f1d9476Smrg basic_os=hms 3509f1d9476Smrg ;; 3519f1d9476Smrg harris) 3529f1d9476Smrg basic_machine=m88k-harris 3539f1d9476Smrg basic_os=sysv3 3549f1d9476Smrg ;; 3559f1d9476Smrg hp300 | hp300hpux) 3569f1d9476Smrg basic_machine=m68k-hp 3579f1d9476Smrg basic_os=hpux 3589f1d9476Smrg ;; 3599f1d9476Smrg hp300bsd) 3609f1d9476Smrg basic_machine=m68k-hp 3619f1d9476Smrg basic_os=bsd 3629f1d9476Smrg ;; 3639f1d9476Smrg hppaosf) 3649f1d9476Smrg basic_machine=hppa1.1-hp 3659f1d9476Smrg basic_os=osf 3669f1d9476Smrg ;; 3679f1d9476Smrg hppro) 3689f1d9476Smrg basic_machine=hppa1.1-hp 3699f1d9476Smrg basic_os=proelf 3709f1d9476Smrg ;; 3719f1d9476Smrg i386mach) 3729f1d9476Smrg basic_machine=i386-mach 3739f1d9476Smrg basic_os=mach 3749f1d9476Smrg ;; 3759f1d9476Smrg isi68 | isi) 3769f1d9476Smrg basic_machine=m68k-isi 3779f1d9476Smrg basic_os=sysv 3789f1d9476Smrg ;; 3799f1d9476Smrg m68knommu) 3809f1d9476Smrg basic_machine=m68k-unknown 3819f1d9476Smrg basic_os=linux 3829f1d9476Smrg ;; 3839f1d9476Smrg magnum | m3230) 3849f1d9476Smrg basic_machine=mips-mips 3859f1d9476Smrg basic_os=sysv 3869f1d9476Smrg ;; 3879f1d9476Smrg merlin) 3889f1d9476Smrg basic_machine=ns32k-utek 3899f1d9476Smrg basic_os=sysv 3909f1d9476Smrg ;; 3919f1d9476Smrg mingw64) 3929f1d9476Smrg basic_machine=x86_64-pc 3939f1d9476Smrg basic_os=mingw64 3949f1d9476Smrg ;; 3959f1d9476Smrg mingw32) 3969f1d9476Smrg basic_machine=i686-pc 3979f1d9476Smrg basic_os=mingw32 3989f1d9476Smrg ;; 3999f1d9476Smrg mingw32ce) 4009f1d9476Smrg basic_machine=arm-unknown 4019f1d9476Smrg basic_os=mingw32ce 4029f1d9476Smrg ;; 4039f1d9476Smrg monitor) 4049f1d9476Smrg basic_machine=m68k-rom68k 4059f1d9476Smrg basic_os=coff 4069f1d9476Smrg ;; 4079f1d9476Smrg morphos) 4089f1d9476Smrg basic_machine=powerpc-unknown 4099f1d9476Smrg basic_os=morphos 4109f1d9476Smrg ;; 4119f1d9476Smrg moxiebox) 4129f1d9476Smrg basic_machine=moxie-unknown 4139f1d9476Smrg basic_os=moxiebox 4149f1d9476Smrg ;; 4159f1d9476Smrg msdos) 4169f1d9476Smrg basic_machine=i386-pc 4179f1d9476Smrg basic_os=msdos 4189f1d9476Smrg ;; 4199f1d9476Smrg msys) 4209f1d9476Smrg basic_machine=i686-pc 4219f1d9476Smrg basic_os=msys 4229f1d9476Smrg ;; 4239f1d9476Smrg mvs) 4249f1d9476Smrg basic_machine=i370-ibm 4259f1d9476Smrg basic_os=mvs 4269f1d9476Smrg ;; 4279f1d9476Smrg nacl) 4289f1d9476Smrg basic_machine=le32-unknown 4299f1d9476Smrg basic_os=nacl 4309f1d9476Smrg ;; 4319f1d9476Smrg ncr3000) 4329f1d9476Smrg basic_machine=i486-ncr 4339f1d9476Smrg basic_os=sysv4 4349f1d9476Smrg ;; 4359f1d9476Smrg netbsd386) 4369f1d9476Smrg basic_machine=i386-pc 4379f1d9476Smrg basic_os=netbsd 4389f1d9476Smrg ;; 4399f1d9476Smrg netwinder) 4409f1d9476Smrg basic_machine=armv4l-rebel 4419f1d9476Smrg basic_os=linux 4429f1d9476Smrg ;; 4439f1d9476Smrg news | news700 | news800 | news900) 4449f1d9476Smrg basic_machine=m68k-sony 4459f1d9476Smrg basic_os=newsos 4469f1d9476Smrg ;; 4479f1d9476Smrg news1000) 4489f1d9476Smrg basic_machine=m68030-sony 4499f1d9476Smrg basic_os=newsos 4509f1d9476Smrg ;; 4519f1d9476Smrg necv70) 4529f1d9476Smrg basic_machine=v70-nec 4539f1d9476Smrg basic_os=sysv 4549f1d9476Smrg ;; 4559f1d9476Smrg nh3000) 4569f1d9476Smrg basic_machine=m68k-harris 4579f1d9476Smrg basic_os=cxux 4589f1d9476Smrg ;; 4599f1d9476Smrg nh[45]000) 4609f1d9476Smrg basic_machine=m88k-harris 4619f1d9476Smrg basic_os=cxux 4629f1d9476Smrg ;; 4639f1d9476Smrg nindy960) 4649f1d9476Smrg basic_machine=i960-intel 4659f1d9476Smrg basic_os=nindy 4669f1d9476Smrg ;; 4679f1d9476Smrg mon960) 4689f1d9476Smrg basic_machine=i960-intel 4699f1d9476Smrg basic_os=mon960 4709f1d9476Smrg ;; 4719f1d9476Smrg nonstopux) 4729f1d9476Smrg basic_machine=mips-compaq 4739f1d9476Smrg basic_os=nonstopux 4749f1d9476Smrg ;; 4759f1d9476Smrg os400) 4769f1d9476Smrg basic_machine=powerpc-ibm 4779f1d9476Smrg basic_os=os400 4789f1d9476Smrg ;; 4799f1d9476Smrg OSE68000 | ose68000) 4809f1d9476Smrg basic_machine=m68000-ericsson 4819f1d9476Smrg basic_os=ose 4829f1d9476Smrg ;; 4839f1d9476Smrg os68k) 4849f1d9476Smrg basic_machine=m68k-none 4859f1d9476Smrg basic_os=os68k 4869f1d9476Smrg ;; 4879f1d9476Smrg paragon) 4889f1d9476Smrg basic_machine=i860-intel 4899f1d9476Smrg basic_os=osf 4909f1d9476Smrg ;; 4919f1d9476Smrg parisc) 4929f1d9476Smrg basic_machine=hppa-unknown 4939f1d9476Smrg basic_os=linux 4949f1d9476Smrg ;; 4959f1d9476Smrg psp) 4969f1d9476Smrg basic_machine=mipsallegrexel-sony 4979f1d9476Smrg basic_os=psp 4989f1d9476Smrg ;; 4999f1d9476Smrg pw32) 5009f1d9476Smrg basic_machine=i586-unknown 5019f1d9476Smrg basic_os=pw32 5029f1d9476Smrg ;; 5039f1d9476Smrg rdos | rdos64) 5049f1d9476Smrg basic_machine=x86_64-pc 5059f1d9476Smrg basic_os=rdos 5069f1d9476Smrg ;; 5079f1d9476Smrg rdos32) 5089f1d9476Smrg basic_machine=i386-pc 5099f1d9476Smrg basic_os=rdos 5109f1d9476Smrg ;; 5119f1d9476Smrg rom68k) 5129f1d9476Smrg basic_machine=m68k-rom68k 5139f1d9476Smrg basic_os=coff 5149f1d9476Smrg ;; 5159f1d9476Smrg sa29200) 5169f1d9476Smrg basic_machine=a29k-amd 5179f1d9476Smrg basic_os=udi 5189f1d9476Smrg ;; 5199f1d9476Smrg sei) 5209f1d9476Smrg basic_machine=mips-sei 5219f1d9476Smrg basic_os=seiux 5229f1d9476Smrg ;; 5239f1d9476Smrg sequent) 5249f1d9476Smrg basic_machine=i386-sequent 5259f1d9476Smrg basic_os= 5269f1d9476Smrg ;; 5279f1d9476Smrg sps7) 5289f1d9476Smrg basic_machine=m68k-bull 5299f1d9476Smrg basic_os=sysv2 5309f1d9476Smrg ;; 5319f1d9476Smrg st2000) 5329f1d9476Smrg basic_machine=m68k-tandem 5339f1d9476Smrg basic_os= 5349f1d9476Smrg ;; 5359f1d9476Smrg stratus) 5369f1d9476Smrg basic_machine=i860-stratus 5379f1d9476Smrg basic_os=sysv4 5389f1d9476Smrg ;; 5399f1d9476Smrg sun2) 5409f1d9476Smrg basic_machine=m68000-sun 5419f1d9476Smrg basic_os= 5429f1d9476Smrg ;; 5439f1d9476Smrg sun2os3) 5449f1d9476Smrg basic_machine=m68000-sun 5459f1d9476Smrg basic_os=sunos3 5469f1d9476Smrg ;; 5479f1d9476Smrg sun2os4) 5489f1d9476Smrg basic_machine=m68000-sun 5499f1d9476Smrg basic_os=sunos4 5509f1d9476Smrg ;; 5519f1d9476Smrg sun3) 5529f1d9476Smrg basic_machine=m68k-sun 5539f1d9476Smrg basic_os= 5549f1d9476Smrg ;; 5559f1d9476Smrg sun3os3) 5569f1d9476Smrg basic_machine=m68k-sun 5579f1d9476Smrg basic_os=sunos3 5589f1d9476Smrg ;; 5599f1d9476Smrg sun3os4) 5609f1d9476Smrg basic_machine=m68k-sun 5619f1d9476Smrg basic_os=sunos4 5629f1d9476Smrg ;; 5639f1d9476Smrg sun4) 5649f1d9476Smrg basic_machine=sparc-sun 5659f1d9476Smrg basic_os= 5669f1d9476Smrg ;; 5679f1d9476Smrg sun4os3) 5689f1d9476Smrg basic_machine=sparc-sun 5699f1d9476Smrg basic_os=sunos3 5709f1d9476Smrg ;; 5719f1d9476Smrg sun4os4) 5729f1d9476Smrg basic_machine=sparc-sun 5739f1d9476Smrg basic_os=sunos4 5749f1d9476Smrg ;; 5759f1d9476Smrg sun4sol2) 5769f1d9476Smrg basic_machine=sparc-sun 5779f1d9476Smrg basic_os=solaris2 5789f1d9476Smrg ;; 5799f1d9476Smrg sun386 | sun386i | roadrunner) 5809f1d9476Smrg basic_machine=i386-sun 5819f1d9476Smrg basic_os= 5829f1d9476Smrg ;; 5839f1d9476Smrg sv1) 5849f1d9476Smrg basic_machine=sv1-cray 5859f1d9476Smrg basic_os=unicos 5869f1d9476Smrg ;; 5879f1d9476Smrg symmetry) 5889f1d9476Smrg basic_machine=i386-sequent 5899f1d9476Smrg basic_os=dynix 5909f1d9476Smrg ;; 5919f1d9476Smrg t3e) 5929f1d9476Smrg basic_machine=alphaev5-cray 5939f1d9476Smrg basic_os=unicos 5949f1d9476Smrg ;; 5959f1d9476Smrg t90) 5969f1d9476Smrg basic_machine=t90-cray 5979f1d9476Smrg basic_os=unicos 5989f1d9476Smrg ;; 5999f1d9476Smrg toad1) 6009f1d9476Smrg basic_machine=pdp10-xkl 6019f1d9476Smrg basic_os=tops20 6029f1d9476Smrg ;; 6039f1d9476Smrg tpf) 6049f1d9476Smrg basic_machine=s390x-ibm 6059f1d9476Smrg basic_os=tpf 6069f1d9476Smrg ;; 6079f1d9476Smrg udi29k) 6089f1d9476Smrg basic_machine=a29k-amd 6099f1d9476Smrg basic_os=udi 6109f1d9476Smrg ;; 6119f1d9476Smrg ultra3) 6129f1d9476Smrg basic_machine=a29k-nyu 6139f1d9476Smrg basic_os=sym1 6149f1d9476Smrg ;; 6159f1d9476Smrg v810 | necv810) 6169f1d9476Smrg basic_machine=v810-nec 6179f1d9476Smrg basic_os=none 6189f1d9476Smrg ;; 6199f1d9476Smrg vaxv) 6209f1d9476Smrg basic_machine=vax-dec 6219f1d9476Smrg basic_os=sysv 6229f1d9476Smrg ;; 6239f1d9476Smrg vms) 6249f1d9476Smrg basic_machine=vax-dec 6259f1d9476Smrg basic_os=vms 6269f1d9476Smrg ;; 6279f1d9476Smrg vsta) 6289f1d9476Smrg basic_machine=i386-pc 6299f1d9476Smrg basic_os=vsta 6309f1d9476Smrg ;; 6319f1d9476Smrg vxworks960) 6329f1d9476Smrg basic_machine=i960-wrs 6339f1d9476Smrg basic_os=vxworks 6349f1d9476Smrg ;; 6359f1d9476Smrg vxworks68) 6369f1d9476Smrg basic_machine=m68k-wrs 6379f1d9476Smrg basic_os=vxworks 6389f1d9476Smrg ;; 6399f1d9476Smrg vxworks29k) 6409f1d9476Smrg basic_machine=a29k-wrs 6419f1d9476Smrg basic_os=vxworks 6429f1d9476Smrg ;; 6439f1d9476Smrg xbox) 6449f1d9476Smrg basic_machine=i686-pc 6459f1d9476Smrg basic_os=mingw32 6469f1d9476Smrg ;; 6479f1d9476Smrg ymp) 6489f1d9476Smrg basic_machine=ymp-cray 6499f1d9476Smrg basic_os=unicos 6509f1d9476Smrg ;; 6519f1d9476Smrg *) 6529f1d9476Smrg basic_machine=$1 6539f1d9476Smrg basic_os= 6549f1d9476Smrg ;; 6559f1d9476Smrg esac 656f33d31a3Smrg ;; 657f33d31a3Smrgesac 658f33d31a3Smrg 6599f1d9476Smrg# Decode 1-component or ad-hoc basic machines 660f33d31a3Smrgcase $basic_machine in 6619f1d9476Smrg # Here we handle the default manufacturer of certain CPU types. It is in 6629f1d9476Smrg # some cases the only manufacturer, in others, it is the most popular. 6639f1d9476Smrg w89k) 6649f1d9476Smrg cpu=hppa1.1 6659f1d9476Smrg vendor=winbond 666f33d31a3Smrg ;; 6679f1d9476Smrg op50n) 6689f1d9476Smrg cpu=hppa1.1 6699f1d9476Smrg vendor=oki 670f33d31a3Smrg ;; 6719f1d9476Smrg op60c) 6729f1d9476Smrg cpu=hppa1.1 6739f1d9476Smrg vendor=oki 674f33d31a3Smrg ;; 6759f1d9476Smrg ibm*) 6769f1d9476Smrg cpu=i370 6779f1d9476Smrg vendor=ibm 678f33d31a3Smrg ;; 6799f1d9476Smrg orion105) 6809f1d9476Smrg cpu=clipper 6819f1d9476Smrg vendor=highlevel 682f33d31a3Smrg ;; 6839f1d9476Smrg mac | mpw | mac-mpw) 6849f1d9476Smrg cpu=m68k 6859f1d9476Smrg vendor=apple 686f33d31a3Smrg ;; 6879f1d9476Smrg pmac | pmac-mpw) 6889f1d9476Smrg cpu=powerpc 6899f1d9476Smrg vendor=apple 690f33d31a3Smrg ;; 691f33d31a3Smrg 692f33d31a3Smrg # Recognize the various machine names and aliases which stand 693f33d31a3Smrg # for a CPU type and a company and sometimes even an OS. 694f33d31a3Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6959f1d9476Smrg cpu=m68000 6969f1d9476Smrg vendor=att 697f33d31a3Smrg ;; 698f33d31a3Smrg 3b*) 6999f1d9476Smrg cpu=we32k 7009f1d9476Smrg vendor=att 701f33d31a3Smrg ;; 702f33d31a3Smrg bluegene*) 7039f1d9476Smrg cpu=powerpc 7049f1d9476Smrg vendor=ibm 7059f1d9476Smrg basic_os=cnk 706f33d31a3Smrg ;; 707f33d31a3Smrg decsystem10* | dec10*) 7089f1d9476Smrg cpu=pdp10 7099f1d9476Smrg vendor=dec 7109f1d9476Smrg basic_os=tops10 711f33d31a3Smrg ;; 712f33d31a3Smrg decsystem20* | dec20*) 7139f1d9476Smrg cpu=pdp10 7149f1d9476Smrg vendor=dec 7159f1d9476Smrg basic_os=tops20 716f33d31a3Smrg ;; 717f33d31a3Smrg delta | 3300 | motorola-3300 | motorola-delta \ 718f33d31a3Smrg | 3300-motorola | delta-motorola) 7199f1d9476Smrg cpu=m68k 7209f1d9476Smrg vendor=motorola 721f33d31a3Smrg ;; 722f33d31a3Smrg dpx2*) 7239f1d9476Smrg cpu=m68k 7249f1d9476Smrg vendor=bull 7259f1d9476Smrg basic_os=sysv3 726f33d31a3Smrg ;; 727f33d31a3Smrg encore | umax | mmax) 7289f1d9476Smrg cpu=ns32k 7299f1d9476Smrg vendor=encore 730f33d31a3Smrg ;; 7319f1d9476Smrg elxsi) 7329f1d9476Smrg cpu=elxsi 7339f1d9476Smrg vendor=elxsi 7349f1d9476Smrg basic_os=${basic_os:-bsd} 735f33d31a3Smrg ;; 736f33d31a3Smrg fx2800) 7379f1d9476Smrg cpu=i860 7389f1d9476Smrg vendor=alliant 739f33d31a3Smrg ;; 740f33d31a3Smrg genix) 7419f1d9476Smrg cpu=ns32k 7429f1d9476Smrg vendor=ns 743f33d31a3Smrg ;; 744f33d31a3Smrg h3050r* | hiux*) 7459f1d9476Smrg cpu=hppa1.1 7469f1d9476Smrg vendor=hitachi 7479f1d9476Smrg basic_os=hiuxwe2 748f33d31a3Smrg ;; 749f33d31a3Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7509f1d9476Smrg cpu=hppa1.0 7519f1d9476Smrg vendor=hp 752f33d31a3Smrg ;; 753f33d31a3Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7549f1d9476Smrg cpu=m68000 7559f1d9476Smrg vendor=hp 756f33d31a3Smrg ;; 757f33d31a3Smrg hp9k3[2-9][0-9]) 7589f1d9476Smrg cpu=m68k 7599f1d9476Smrg vendor=hp 760f33d31a3Smrg ;; 761f33d31a3Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7629f1d9476Smrg cpu=hppa1.0 7639f1d9476Smrg vendor=hp 764f33d31a3Smrg ;; 765f33d31a3Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7669f1d9476Smrg cpu=hppa1.1 7679f1d9476Smrg vendor=hp 768f33d31a3Smrg ;; 769f33d31a3Smrg hp9k78[0-9] | hp78[0-9]) 770f33d31a3Smrg # FIXME: really hppa2.0-hp 7719f1d9476Smrg cpu=hppa1.1 7729f1d9476Smrg vendor=hp 773f33d31a3Smrg ;; 774f33d31a3Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 775f33d31a3Smrg # FIXME: really hppa2.0-hp 7769f1d9476Smrg cpu=hppa1.1 7779f1d9476Smrg vendor=hp 778f33d31a3Smrg ;; 779f33d31a3Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7809f1d9476Smrg cpu=hppa1.1 7819f1d9476Smrg vendor=hp 782f33d31a3Smrg ;; 783f33d31a3Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7849f1d9476Smrg cpu=hppa1.0 7859f1d9476Smrg vendor=hp 786f33d31a3Smrg ;; 787f33d31a3Smrg i*86v32) 7889f1d9476Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7899f1d9476Smrg vendor=pc 7909f1d9476Smrg basic_os=sysv32 791f33d31a3Smrg ;; 792f33d31a3Smrg i*86v4*) 7939f1d9476Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7949f1d9476Smrg vendor=pc 7959f1d9476Smrg basic_os=sysv4 796f33d31a3Smrg ;; 797f33d31a3Smrg i*86v) 7989f1d9476Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7999f1d9476Smrg vendor=pc 8009f1d9476Smrg basic_os=sysv 801f33d31a3Smrg ;; 802f33d31a3Smrg i*86sol2) 8039f1d9476Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8049f1d9476Smrg vendor=pc 8059f1d9476Smrg basic_os=solaris2 806f33d31a3Smrg ;; 8079f1d9476Smrg j90 | j90-cray) 8089f1d9476Smrg cpu=j90 8099f1d9476Smrg vendor=cray 8109f1d9476Smrg basic_os=${basic_os:-unicos} 811f33d31a3Smrg ;; 812f33d31a3Smrg iris | iris4d) 8139f1d9476Smrg cpu=mips 8149f1d9476Smrg vendor=sgi 8159f1d9476Smrg case $basic_os in 8169f1d9476Smrg irix*) 817f33d31a3Smrg ;; 818f33d31a3Smrg *) 8199f1d9476Smrg basic_os=irix4 820f33d31a3Smrg ;; 821f33d31a3Smrg esac 822f33d31a3Smrg ;; 823f33d31a3Smrg miniframe) 8249f1d9476Smrg cpu=m68000 8259f1d9476Smrg vendor=convergent 826f33d31a3Smrg ;; 8279f1d9476Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8289f1d9476Smrg cpu=m68k 8299f1d9476Smrg vendor=atari 8309f1d9476Smrg basic_os=mint 831f33d31a3Smrg ;; 832f33d31a3Smrg news-3600 | risc-news) 8339f1d9476Smrg cpu=mips 8349f1d9476Smrg vendor=sony 8359f1d9476Smrg basic_os=newsos 836f33d31a3Smrg ;; 837f33d31a3Smrg next | m*-next) 8389f1d9476Smrg cpu=m68k 8399f1d9476Smrg vendor=next 8409f1d9476Smrg case $basic_os in 8419f1d9476Smrg openstep*) 8429f1d9476Smrg ;; 8439f1d9476Smrg nextstep*) 844f33d31a3Smrg ;; 8459f1d9476Smrg ns2*) 8469f1d9476Smrg basic_os=nextstep2 847f33d31a3Smrg ;; 848f33d31a3Smrg *) 8499f1d9476Smrg basic_os=nextstep3 850f33d31a3Smrg ;; 851f33d31a3Smrg esac 852f33d31a3Smrg ;; 853f33d31a3Smrg np1) 8549f1d9476Smrg cpu=np1 8559f1d9476Smrg vendor=gould 856f33d31a3Smrg ;; 857f33d31a3Smrg op50n-* | op60c-*) 8589f1d9476Smrg cpu=hppa1.1 8599f1d9476Smrg vendor=oki 8609f1d9476Smrg basic_os=proelf 861f33d31a3Smrg ;; 862f33d31a3Smrg pa-hitachi) 8639f1d9476Smrg cpu=hppa1.1 8649f1d9476Smrg vendor=hitachi 8659f1d9476Smrg basic_os=hiuxwe2 866f33d31a3Smrg ;; 867f33d31a3Smrg pbd) 8689f1d9476Smrg cpu=sparc 8699f1d9476Smrg vendor=tti 870f33d31a3Smrg ;; 871f33d31a3Smrg pbb) 8729f1d9476Smrg cpu=m68k 8739f1d9476Smrg vendor=tti 874f33d31a3Smrg ;; 8759f1d9476Smrg pc532) 8769f1d9476Smrg cpu=ns32k 8779f1d9476Smrg vendor=pc532 878f33d31a3Smrg ;; 879f33d31a3Smrg pn) 8809f1d9476Smrg cpu=pn 8819f1d9476Smrg vendor=gould 882f33d31a3Smrg ;; 8839f1d9476Smrg power) 8849f1d9476Smrg cpu=power 8859f1d9476Smrg vendor=ibm 886f33d31a3Smrg ;; 8879f1d9476Smrg ps2) 8889f1d9476Smrg cpu=i386 8899f1d9476Smrg vendor=ibm 890f33d31a3Smrg ;; 8919f1d9476Smrg rm[46]00) 8929f1d9476Smrg cpu=mips 8939f1d9476Smrg vendor=siemens 894f33d31a3Smrg ;; 8959f1d9476Smrg rtpc | rtpc-*) 8969f1d9476Smrg cpu=romp 8979f1d9476Smrg vendor=ibm 898f33d31a3Smrg ;; 8999f1d9476Smrg sde) 9009f1d9476Smrg cpu=mipsisa32 9019f1d9476Smrg vendor=sde 9029f1d9476Smrg basic_os=${basic_os:-elf} 903f33d31a3Smrg ;; 9049f1d9476Smrg simso-wrs) 9059f1d9476Smrg cpu=sparclite 9069f1d9476Smrg vendor=wrs 9079f1d9476Smrg basic_os=vxworks 908f33d31a3Smrg ;; 9099f1d9476Smrg tower | tower-32) 9109f1d9476Smrg cpu=m68k 9119f1d9476Smrg vendor=ncr 912f33d31a3Smrg ;; 9139f1d9476Smrg vpp*|vx|vx-*) 9149f1d9476Smrg cpu=f301 9159f1d9476Smrg vendor=fujitsu 916f33d31a3Smrg ;; 9179f1d9476Smrg w65) 9189f1d9476Smrg cpu=w65 9199f1d9476Smrg vendor=wdc 920f33d31a3Smrg ;; 9219f1d9476Smrg w89k-*) 9229f1d9476Smrg cpu=hppa1.1 9239f1d9476Smrg vendor=winbond 9249f1d9476Smrg basic_os=proelf 925f33d31a3Smrg ;; 9269f1d9476Smrg none) 9279f1d9476Smrg cpu=none 9289f1d9476Smrg vendor=none 929f33d31a3Smrg ;; 9309f1d9476Smrg leon|leon[3-9]) 9319f1d9476Smrg cpu=sparc 9329f1d9476Smrg vendor=$basic_machine 933f33d31a3Smrg ;; 9349f1d9476Smrg leon-*|leon[3-9]-*) 9359f1d9476Smrg cpu=sparc 9369f1d9476Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 937f33d31a3Smrg ;; 9389f1d9476Smrg 9399f1d9476Smrg *-*) 9409f1d9476Smrg # shellcheck disable=SC2162 9419f1d9476Smrg saved_IFS=$IFS 9429f1d9476Smrg IFS="-" read cpu vendor <<EOF 9439f1d9476Smrg$basic_machine 9449f1d9476SmrgEOF 9459f1d9476Smrg IFS=$saved_IFS 946f33d31a3Smrg ;; 9478b5ec993Smrg # We use 'pc' rather than 'unknown' 9489f1d9476Smrg # because (1) that's what they normally are, and 9499f1d9476Smrg # (2) the word "unknown" tends to confuse beginning users. 9509f1d9476Smrg i*86 | x86_64) 9519f1d9476Smrg cpu=$basic_machine 9529f1d9476Smrg vendor=pc 953f33d31a3Smrg ;; 9549f1d9476Smrg # These rules are duplicated from below for sake of the special case above; 9559f1d9476Smrg # i.e. things that normalized to x86 arches should also default to "pc" 9569f1d9476Smrg pc98) 9579f1d9476Smrg cpu=i386 9589f1d9476Smrg vendor=pc 959f33d31a3Smrg ;; 9609f1d9476Smrg x64 | amd64) 9619f1d9476Smrg cpu=x86_64 9629f1d9476Smrg vendor=pc 963f33d31a3Smrg ;; 9649f1d9476Smrg # Recognize the basic CPU types without company name. 9659f1d9476Smrg *) 9669f1d9476Smrg cpu=$basic_machine 9679f1d9476Smrg vendor=unknown 968f33d31a3Smrg ;; 9699f1d9476Smrgesac 9709f1d9476Smrg 9719f1d9476Smrgunset -v basic_machine 9729f1d9476Smrg 9739f1d9476Smrg# Decode basic machines in the full and proper CPU-Company form. 9749f1d9476Smrgcase $cpu-$vendor in 9759f1d9476Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9769f1d9476Smrg # some cases the only manufacturer, in others, it is the most popular. 9779f1d9476Smrg craynv-unknown) 9789f1d9476Smrg vendor=cray 9799f1d9476Smrg basic_os=${basic_os:-unicosmp} 980f33d31a3Smrg ;; 9819f1d9476Smrg c90-unknown | c90-cray) 9829f1d9476Smrg vendor=cray 9839f1d9476Smrg basic_os=${Basic_os:-unicos} 984f33d31a3Smrg ;; 9859f1d9476Smrg fx80-unknown) 9869f1d9476Smrg vendor=alliant 987f33d31a3Smrg ;; 9889f1d9476Smrg romp-unknown) 9899f1d9476Smrg vendor=ibm 990f33d31a3Smrg ;; 9919f1d9476Smrg mmix-unknown) 9929f1d9476Smrg vendor=knuth 993f33d31a3Smrg ;; 9949f1d9476Smrg microblaze-unknown | microblazeel-unknown) 9959f1d9476Smrg vendor=xilinx 996f33d31a3Smrg ;; 9979f1d9476Smrg rs6000-unknown) 9989f1d9476Smrg vendor=ibm 999f33d31a3Smrg ;; 10009f1d9476Smrg vax-unknown) 10019f1d9476Smrg vendor=dec 1002f33d31a3Smrg ;; 10039f1d9476Smrg pdp11-unknown) 10049f1d9476Smrg vendor=dec 1005f33d31a3Smrg ;; 10069f1d9476Smrg we32k-unknown) 10079f1d9476Smrg vendor=att 1008f33d31a3Smrg ;; 10099f1d9476Smrg cydra-unknown) 10109f1d9476Smrg vendor=cydrome 1011f33d31a3Smrg ;; 10129f1d9476Smrg i370-ibm*) 10139f1d9476Smrg vendor=ibm 1014f33d31a3Smrg ;; 10159f1d9476Smrg orion-unknown) 10169f1d9476Smrg vendor=highlevel 1017f33d31a3Smrg ;; 10189f1d9476Smrg xps-unknown | xps100-unknown) 10199f1d9476Smrg cpu=xps100 10209f1d9476Smrg vendor=honeywell 1021f33d31a3Smrg ;; 10229f1d9476Smrg 10239f1d9476Smrg # Here we normalize CPU types with a missing or matching vendor 10248b5ec993Smrg armh-unknown | armh-alt) 10258b5ec993Smrg cpu=armv7l 10268b5ec993Smrg vendor=alt 10278b5ec993Smrg basic_os=${basic_os:-linux-gnueabihf} 10288b5ec993Smrg ;; 10299f1d9476Smrg dpx20-unknown | dpx20-bull) 10309f1d9476Smrg cpu=rs6000 10319f1d9476Smrg vendor=bull 10329f1d9476Smrg basic_os=${basic_os:-bosx} 1033f33d31a3Smrg ;; 10349f1d9476Smrg 10359f1d9476Smrg # Here we normalize CPU types irrespective of the vendor 10369f1d9476Smrg amd64-*) 10379f1d9476Smrg cpu=x86_64 1038f33d31a3Smrg ;; 10399f1d9476Smrg blackfin-*) 10409f1d9476Smrg cpu=bfin 10419f1d9476Smrg basic_os=linux 1042f33d31a3Smrg ;; 10439f1d9476Smrg c54x-*) 10449f1d9476Smrg cpu=tic54x 1045f33d31a3Smrg ;; 10469f1d9476Smrg c55x-*) 10479f1d9476Smrg cpu=tic55x 1048f33d31a3Smrg ;; 10499f1d9476Smrg c6x-*) 10509f1d9476Smrg cpu=tic6x 1051f33d31a3Smrg ;; 10529f1d9476Smrg e500v[12]-*) 10539f1d9476Smrg cpu=powerpc 10549f1d9476Smrg basic_os=${basic_os}"spe" 1055f33d31a3Smrg ;; 10569f1d9476Smrg mips3*-*) 10579f1d9476Smrg cpu=mips64 1058f33d31a3Smrg ;; 10599f1d9476Smrg ms1-*) 10609f1d9476Smrg cpu=mt 1061f33d31a3Smrg ;; 10629f1d9476Smrg m68knommu-*) 10639f1d9476Smrg cpu=m68k 10649f1d9476Smrg basic_os=linux 1065f33d31a3Smrg ;; 10669f1d9476Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10679f1d9476Smrg cpu=s12z 1068f33d31a3Smrg ;; 10699f1d9476Smrg openrisc-*) 10709f1d9476Smrg cpu=or32 1071f33d31a3Smrg ;; 10729f1d9476Smrg parisc-*) 10739f1d9476Smrg cpu=hppa 10749f1d9476Smrg basic_os=linux 1075f33d31a3Smrg ;; 10769f1d9476Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10779f1d9476Smrg cpu=i586 1078f33d31a3Smrg ;; 10798b5ec993Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 10809f1d9476Smrg cpu=i686 1081f33d31a3Smrg ;; 10829f1d9476Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10839f1d9476Smrg cpu=i686 1084f33d31a3Smrg ;; 10859f1d9476Smrg pentium4-*) 10869f1d9476Smrg cpu=i786 1087f33d31a3Smrg ;; 10889f1d9476Smrg pc98-*) 10899f1d9476Smrg cpu=i386 1090f33d31a3Smrg ;; 10919f1d9476Smrg ppc-* | ppcbe-*) 10929f1d9476Smrg cpu=powerpc 1093f33d31a3Smrg ;; 10949f1d9476Smrg ppcle-* | powerpclittle-*) 10959f1d9476Smrg cpu=powerpcle 1096f33d31a3Smrg ;; 10979f1d9476Smrg ppc64-*) 10989f1d9476Smrg cpu=powerpc64 1099f33d31a3Smrg ;; 11009f1d9476Smrg ppc64le-* | powerpc64little-*) 11019f1d9476Smrg cpu=powerpc64le 1102f33d31a3Smrg ;; 11039f1d9476Smrg sb1-*) 11049f1d9476Smrg cpu=mipsisa64sb1 1105f33d31a3Smrg ;; 11069f1d9476Smrg sb1el-*) 11079f1d9476Smrg cpu=mipsisa64sb1el 1108f33d31a3Smrg ;; 11099f1d9476Smrg sh5e[lb]-*) 11109f1d9476Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1111f33d31a3Smrg ;; 11129f1d9476Smrg spur-*) 11139f1d9476Smrg cpu=spur 1114f33d31a3Smrg ;; 11159f1d9476Smrg strongarm-* | thumb-*) 11169f1d9476Smrg cpu=arm 1117f33d31a3Smrg ;; 11189f1d9476Smrg tx39-*) 11199f1d9476Smrg cpu=mipstx39 1120f33d31a3Smrg ;; 11219f1d9476Smrg tx39el-*) 11229f1d9476Smrg cpu=mipstx39el 1123f33d31a3Smrg ;; 11249f1d9476Smrg x64-*) 11259f1d9476Smrg cpu=x86_64 1126f33d31a3Smrg ;; 1127f33d31a3Smrg xscale-* | xscalee[bl]-*) 11289f1d9476Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1129f33d31a3Smrg ;; 11308b5ec993Smrg arm64-* | aarch64le-*) 11319f1d9476Smrg cpu=aarch64 1132f33d31a3Smrg ;; 1133f33d31a3Smrg 11349f1d9476Smrg # Recognize the canonical CPU Types that limit and/or modify the 11359f1d9476Smrg # company names they are paired with. 11369f1d9476Smrg cr16-*) 11379f1d9476Smrg basic_os=${basic_os:-elf} 1138f33d31a3Smrg ;; 11399f1d9476Smrg crisv32-* | etraxfs*-*) 11409f1d9476Smrg cpu=crisv32 11419f1d9476Smrg vendor=axis 1142f33d31a3Smrg ;; 11439f1d9476Smrg cris-* | etrax*-*) 11449f1d9476Smrg cpu=cris 11459f1d9476Smrg vendor=axis 1146f33d31a3Smrg ;; 11479f1d9476Smrg crx-*) 11489f1d9476Smrg basic_os=${basic_os:-elf} 1149f33d31a3Smrg ;; 11509f1d9476Smrg neo-tandem) 11519f1d9476Smrg cpu=neo 11529f1d9476Smrg vendor=tandem 1153f33d31a3Smrg ;; 11549f1d9476Smrg nse-tandem) 11559f1d9476Smrg cpu=nse 11569f1d9476Smrg vendor=tandem 1157f33d31a3Smrg ;; 11589f1d9476Smrg nsr-tandem) 11599f1d9476Smrg cpu=nsr 11609f1d9476Smrg vendor=tandem 1161f33d31a3Smrg ;; 11629f1d9476Smrg nsv-tandem) 11639f1d9476Smrg cpu=nsv 11649f1d9476Smrg vendor=tandem 1165f33d31a3Smrg ;; 11669f1d9476Smrg nsx-tandem) 11679f1d9476Smrg cpu=nsx 11689f1d9476Smrg vendor=tandem 1169f33d31a3Smrg ;; 11709f1d9476Smrg mipsallegrexel-sony) 11719f1d9476Smrg cpu=mipsallegrexel 11729f1d9476Smrg vendor=sony 1173f33d31a3Smrg ;; 11749f1d9476Smrg tile*-*) 11759f1d9476Smrg basic_os=${basic_os:-linux-gnu} 1176f33d31a3Smrg ;; 11779f1d9476Smrg 1178f33d31a3Smrg *) 11799f1d9476Smrg # Recognize the canonical CPU types that are allowed with any 11809f1d9476Smrg # company name. 11819f1d9476Smrg case $cpu in 11829f1d9476Smrg 1750a | 580 \ 11839f1d9476Smrg | a29k \ 11848b5ec993Smrg | aarch64 | aarch64_be | aarch64c | arm64ec \ 11859f1d9476Smrg | abacus \ 11869f1d9476Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11879f1d9476Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11889f1d9476Smrg | alphapca5[67] | alpha64pca5[67] \ 11899f1d9476Smrg | am33_2.0 \ 11909f1d9476Smrg | amdgcn \ 11919f1d9476Smrg | arc | arceb | arc32 | arc64 \ 11929f1d9476Smrg | arm | arm[lb]e | arme[lb] | armv* \ 11939f1d9476Smrg | avr | avr32 \ 11949f1d9476Smrg | asmjs \ 11959f1d9476Smrg | ba \ 11969f1d9476Smrg | be32 | be64 \ 11979f1d9476Smrg | bfin | bpf | bs2000 \ 11989f1d9476Smrg | c[123]* | c30 | [cjt]90 | c4x \ 11999f1d9476Smrg | c8051 | clipper | craynv | csky | cydra \ 12009f1d9476Smrg | d10v | d30v | dlx | dsp16xx \ 12019f1d9476Smrg | e2k | elxsi | epiphany \ 12029f1d9476Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 12038b5ec993Smrg | javascript \ 12049f1d9476Smrg | h8300 | h8500 \ 12059f1d9476Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 12069f1d9476Smrg | hexagon \ 12079f1d9476Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12089f1d9476Smrg | ip2k | iq2000 \ 12099f1d9476Smrg | k1om \ 12108b5ec993Smrg | kvx \ 12119f1d9476Smrg | le32 | le64 \ 12129f1d9476Smrg | lm32 \ 12138b5ec993Smrg | loongarch32 | loongarch64 \ 12149f1d9476Smrg | m32c | m32r | m32rle \ 12159f1d9476Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12169f1d9476Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12179f1d9476Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12189f1d9476Smrg | microblaze | microblazeel \ 12198b5ec993Smrg | mips* \ 12209f1d9476Smrg | mmix \ 12219f1d9476Smrg | mn10200 | mn10300 \ 12229f1d9476Smrg | moxie \ 12239f1d9476Smrg | mt \ 12249f1d9476Smrg | msp430 \ 12258b5ec993Smrg | nanomips* \ 12269f1d9476Smrg | nds32 | nds32le | nds32be \ 12279f1d9476Smrg | nfp \ 12289f1d9476Smrg | nios | nios2 | nios2eb | nios2el \ 12299f1d9476Smrg | none | np1 | ns16k | ns32k | nvptx \ 12309f1d9476Smrg | open8 \ 12319f1d9476Smrg | or1k* \ 12329f1d9476Smrg | or32 \ 12339f1d9476Smrg | orion \ 12349f1d9476Smrg | picochip \ 12359f1d9476Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12369f1d9476Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12379f1d9476Smrg | pru \ 12389f1d9476Smrg | pyramid \ 12399f1d9476Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12409f1d9476Smrg | rl78 | romp | rs6000 | rx \ 12419f1d9476Smrg | s390 | s390x \ 12429f1d9476Smrg | score \ 12439f1d9476Smrg | sh | shl \ 12449f1d9476Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12459f1d9476Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12469f1d9476Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12479f1d9476Smrg | sparclite \ 12489f1d9476Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12499f1d9476Smrg | spu \ 12509f1d9476Smrg | tahoe \ 12519f1d9476Smrg | thumbv7* \ 12529f1d9476Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12539f1d9476Smrg | tron \ 12549f1d9476Smrg | ubicom32 \ 12559f1d9476Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12569f1d9476Smrg | vax \ 12578b5ec993Smrg | vc4 \ 12589f1d9476Smrg | visium \ 12599f1d9476Smrg | w65 \ 12609f1d9476Smrg | wasm32 | wasm64 \ 12619f1d9476Smrg | we32k \ 12629f1d9476Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12639f1d9476Smrg | xstormy16 | xtensa* \ 12649f1d9476Smrg | ymp \ 12659f1d9476Smrg | z8k | z80) 12669f1d9476Smrg ;; 12679f1d9476Smrg 12689f1d9476Smrg *) 12698b5ec993Smrg echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 12709f1d9476Smrg exit 1 12719f1d9476Smrg ;; 12729f1d9476Smrg esac 1273f33d31a3Smrg ;; 1274f33d31a3Smrgesac 1275f33d31a3Smrg 1276f33d31a3Smrg# Here we canonicalize certain aliases for manufacturers. 12779f1d9476Smrgcase $vendor in 12789f1d9476Smrg digital*) 12799f1d9476Smrg vendor=dec 1280f33d31a3Smrg ;; 12819f1d9476Smrg commodore*) 12829f1d9476Smrg vendor=cbm 1283f33d31a3Smrg ;; 1284f33d31a3Smrg *) 1285f33d31a3Smrg ;; 1286f33d31a3Smrgesac 1287f33d31a3Smrg 1288f33d31a3Smrg# Decode manufacturer-specific aliases for certain operating systems. 1289f33d31a3Smrg 12908b5ec993Smrgif test x"$basic_os" != x 1291f33d31a3Smrgthen 12929f1d9476Smrg 12938b5ec993Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 12949f1d9476Smrg# set os. 12958b5ec993Smrgobj= 12969f1d9476Smrgcase $basic_os in 12979f1d9476Smrg gnu/linux*) 12989f1d9476Smrg kernel=linux 12999f1d9476Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13009f1d9476Smrg ;; 13019f1d9476Smrg os2-emx) 13029f1d9476Smrg kernel=os2 13039f1d9476Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13049f1d9476Smrg ;; 13059f1d9476Smrg nto-qnx*) 13069f1d9476Smrg kernel=nto 13079f1d9476Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13089f1d9476Smrg ;; 13099f1d9476Smrg *-*) 13109f1d9476Smrg # shellcheck disable=SC2162 13119f1d9476Smrg saved_IFS=$IFS 13129f1d9476Smrg IFS="-" read kernel os <<EOF 13139f1d9476Smrg$basic_os 13149f1d9476SmrgEOF 13159f1d9476Smrg IFS=$saved_IFS 13169f1d9476Smrg ;; 13179f1d9476Smrg # Default OS when just kernel was specified 13189f1d9476Smrg nto*) 13199f1d9476Smrg kernel=nto 13209f1d9476Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13219f1d9476Smrg ;; 13229f1d9476Smrg linux*) 13239f1d9476Smrg kernel=linux 13249f1d9476Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13259f1d9476Smrg ;; 13268b5ec993Smrg managarm*) 13278b5ec993Smrg kernel=managarm 13288b5ec993Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 13298b5ec993Smrg ;; 13309f1d9476Smrg *) 13319f1d9476Smrg kernel= 13329f1d9476Smrg os=$basic_os 13339f1d9476Smrg ;; 13349f1d9476Smrgesac 13359f1d9476Smrg 13369f1d9476Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13379f1d9476Smrg# etc.) 1338f33d31a3Smrgcase $os in 1339f33d31a3Smrg # First match some system type aliases that might get confused 1340f33d31a3Smrg # with valid system types. 13419f1d9476Smrg # solaris* is a basic system type, with this one exception. 13429f1d9476Smrg auroraux) 13439f1d9476Smrg os=auroraux 1344f33d31a3Smrg ;; 13459f1d9476Smrg bluegene*) 13469f1d9476Smrg os=cnk 1347f33d31a3Smrg ;; 13489f1d9476Smrg solaris1 | solaris1.*) 13499f1d9476Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1350f33d31a3Smrg ;; 13519f1d9476Smrg solaris) 13529f1d9476Smrg os=solaris2 1353f33d31a3Smrg ;; 13549f1d9476Smrg unixware*) 13559f1d9476Smrg os=sysv4.2uw 1356f33d31a3Smrg ;; 1357f33d31a3Smrg # es1800 is here to avoid being matched by es* (a different OS) 13589f1d9476Smrg es1800*) 13599f1d9476Smrg os=ose 1360f33d31a3Smrg ;; 13619f1d9476Smrg # Some version numbers need modification 13629f1d9476Smrg chorusos*) 13639f1d9476Smrg os=chorusos 1364f33d31a3Smrg ;; 13659f1d9476Smrg isc) 13669f1d9476Smrg os=isc2.2 1367f33d31a3Smrg ;; 13689f1d9476Smrg sco6) 13699f1d9476Smrg os=sco5v6 1370f33d31a3Smrg ;; 13719f1d9476Smrg sco5) 13729f1d9476Smrg os=sco3.2v5 1373f33d31a3Smrg ;; 13749f1d9476Smrg sco4) 13759f1d9476Smrg os=sco3.2v4 1376f33d31a3Smrg ;; 13779f1d9476Smrg sco3.2.[4-9]*) 13789f1d9476Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1379f33d31a3Smrg ;; 13809f1d9476Smrg sco*v* | scout) 13819f1d9476Smrg # Don't match below 1382f33d31a3Smrg ;; 13839f1d9476Smrg sco*) 13849f1d9476Smrg os=sco3.2v2 1385f33d31a3Smrg ;; 13869f1d9476Smrg psos*) 13879f1d9476Smrg os=psos 1388f33d31a3Smrg ;; 13899f1d9476Smrg qnx*) 13909f1d9476Smrg os=qnx 1391f33d31a3Smrg ;; 13929f1d9476Smrg hiux*) 13939f1d9476Smrg os=hiuxwe2 1394f33d31a3Smrg ;; 13959f1d9476Smrg lynx*178) 13969f1d9476Smrg os=lynxos178 1397f33d31a3Smrg ;; 13989f1d9476Smrg lynx*5) 13999f1d9476Smrg os=lynxos5 1400f33d31a3Smrg ;; 14019f1d9476Smrg lynxos*) 14029f1d9476Smrg # don't get caught up in next wildcard 1403f33d31a3Smrg ;; 14049f1d9476Smrg lynx*) 14059f1d9476Smrg os=lynxos 1406f33d31a3Smrg ;; 14079f1d9476Smrg mac[0-9]*) 14089f1d9476Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1409f33d31a3Smrg ;; 14109f1d9476Smrg opened*) 14119f1d9476Smrg os=openedition 1412f33d31a3Smrg ;; 14139f1d9476Smrg os400*) 14149f1d9476Smrg os=os400 1415f33d31a3Smrg ;; 14169f1d9476Smrg sunos5*) 14179f1d9476Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1418f33d31a3Smrg ;; 14199f1d9476Smrg sunos6*) 14209f1d9476Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1421f33d31a3Smrg ;; 14229f1d9476Smrg wince*) 14239f1d9476Smrg os=wince 1424f33d31a3Smrg ;; 14259f1d9476Smrg utek*) 14269f1d9476Smrg os=bsd 1427f33d31a3Smrg ;; 14289f1d9476Smrg dynix*) 14299f1d9476Smrg os=bsd 1430f33d31a3Smrg ;; 14319f1d9476Smrg acis*) 14329f1d9476Smrg os=aos 1433f33d31a3Smrg ;; 14349f1d9476Smrg atheos*) 14359f1d9476Smrg os=atheos 1436f33d31a3Smrg ;; 14379f1d9476Smrg syllable*) 14389f1d9476Smrg os=syllable 14399f1d9476Smrg ;; 14409f1d9476Smrg 386bsd) 14419f1d9476Smrg os=bsd 14429f1d9476Smrg ;; 14439f1d9476Smrg ctix* | uts*) 14449f1d9476Smrg os=sysv 14459f1d9476Smrg ;; 14469f1d9476Smrg nova*) 14479f1d9476Smrg os=rtmk-nova 14489f1d9476Smrg ;; 14499f1d9476Smrg ns2) 14509f1d9476Smrg os=nextstep2 14519f1d9476Smrg ;; 14529f1d9476Smrg # Preserve the version number of sinix5. 14539f1d9476Smrg sinix5.*) 14549f1d9476Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1455f33d31a3Smrg ;; 14569f1d9476Smrg sinix*) 14579f1d9476Smrg os=sysv4 1458f33d31a3Smrg ;; 14599f1d9476Smrg tpf*) 14609f1d9476Smrg os=tpf 1461f33d31a3Smrg ;; 14629f1d9476Smrg triton*) 14639f1d9476Smrg os=sysv3 1464f33d31a3Smrg ;; 14659f1d9476Smrg oss*) 14669f1d9476Smrg os=sysv3 1467f33d31a3Smrg ;; 14689f1d9476Smrg svr4*) 14699f1d9476Smrg os=sysv4 1470f33d31a3Smrg ;; 14719f1d9476Smrg svr3) 14729f1d9476Smrg os=sysv3 1473f33d31a3Smrg ;; 14749f1d9476Smrg sysvr4) 14759f1d9476Smrg os=sysv4 1476f33d31a3Smrg ;; 14779f1d9476Smrg ose*) 14789f1d9476Smrg os=ose 1479f33d31a3Smrg ;; 14809f1d9476Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14819f1d9476Smrg os=mint 1482f33d31a3Smrg ;; 14839f1d9476Smrg dicos*) 14849f1d9476Smrg os=dicos 14859f1d9476Smrg ;; 14869f1d9476Smrg pikeos*) 1487f33d31a3Smrg # Until real need of OS specific support for 1488f33d31a3Smrg # particular features comes up, bare metal 1489f33d31a3Smrg # configurations are quite functional. 14909f1d9476Smrg case $cpu in 1491f33d31a3Smrg arm*) 14929f1d9476Smrg os=eabi 1493f33d31a3Smrg ;; 1494f33d31a3Smrg *) 14958b5ec993Smrg os= 14968b5ec993Smrg obj=elf 1497f33d31a3Smrg ;; 1498f33d31a3Smrg esac 1499f33d31a3Smrg ;; 15008b5ec993Smrg aout* | coff* | elf* | pe*) 15018b5ec993Smrg # These are machine code file formats, not OSes 15028b5ec993Smrg obj=$os 15038b5ec993Smrg os= 15048b5ec993Smrg ;; 1505f33d31a3Smrg *) 15069f1d9476Smrg # No normalization, but not necessarily accepted, that comes below. 1507f33d31a3Smrg ;; 1508f33d31a3Smrgesac 15099f1d9476Smrg 1510f33d31a3Smrgelse 1511f33d31a3Smrg 1512f33d31a3Smrg# Here we handle the default operating systems that come with various machines. 1513f33d31a3Smrg# The value should be what the vendor currently ships out the door with their 1514f33d31a3Smrg# machine or put another way, the most popular os provided with the machine. 1515f33d31a3Smrg 1516f33d31a3Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1517f33d31a3Smrg# "-sun"), then you have to tell the case statement up towards the top 1518f33d31a3Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1519f33d31a3Smrg# will signal an error saying that MANUFACTURER isn't an operating 1520f33d31a3Smrg# system, and we'll never get to this point. 1521f33d31a3Smrg 15229f1d9476Smrgkernel= 15238b5ec993Smrgobj= 15249f1d9476Smrgcase $cpu-$vendor in 1525f33d31a3Smrg score-*) 15268b5ec993Smrg os= 15278b5ec993Smrg obj=elf 1528f33d31a3Smrg ;; 1529f33d31a3Smrg spu-*) 15308b5ec993Smrg os= 15318b5ec993Smrg obj=elf 1532f33d31a3Smrg ;; 1533f33d31a3Smrg *-acorn) 15349f1d9476Smrg os=riscix1.2 1535f33d31a3Smrg ;; 1536f33d31a3Smrg arm*-rebel) 15379f1d9476Smrg kernel=linux 15389f1d9476Smrg os=gnu 1539f33d31a3Smrg ;; 1540f33d31a3Smrg arm*-semi) 15418b5ec993Smrg os= 15428b5ec993Smrg obj=aout 1543f33d31a3Smrg ;; 1544f33d31a3Smrg c4x-* | tic4x-*) 15458b5ec993Smrg os= 15468b5ec993Smrg obj=coff 1547f33d31a3Smrg ;; 1548f33d31a3Smrg c8051-*) 15498b5ec993Smrg os= 15508b5ec993Smrg obj=elf 15519f1d9476Smrg ;; 15529f1d9476Smrg clipper-intergraph) 15539f1d9476Smrg os=clix 1554f33d31a3Smrg ;; 1555f33d31a3Smrg hexagon-*) 15568b5ec993Smrg os= 15578b5ec993Smrg obj=elf 1558f33d31a3Smrg ;; 1559f33d31a3Smrg tic54x-*) 15608b5ec993Smrg os= 15618b5ec993Smrg obj=coff 1562f33d31a3Smrg ;; 1563f33d31a3Smrg tic55x-*) 15648b5ec993Smrg os= 15658b5ec993Smrg obj=coff 1566f33d31a3Smrg ;; 1567f33d31a3Smrg tic6x-*) 15688b5ec993Smrg os= 15698b5ec993Smrg obj=coff 1570f33d31a3Smrg ;; 1571f33d31a3Smrg # This must come before the *-dec entry. 1572f33d31a3Smrg pdp10-*) 15739f1d9476Smrg os=tops20 1574f33d31a3Smrg ;; 1575f33d31a3Smrg pdp11-*) 15769f1d9476Smrg os=none 1577f33d31a3Smrg ;; 1578f33d31a3Smrg *-dec | vax-*) 15799f1d9476Smrg os=ultrix4.2 1580f33d31a3Smrg ;; 1581f33d31a3Smrg m68*-apollo) 15829f1d9476Smrg os=domain 1583f33d31a3Smrg ;; 1584f33d31a3Smrg i386-sun) 15859f1d9476Smrg os=sunos4.0.2 1586f33d31a3Smrg ;; 1587f33d31a3Smrg m68000-sun) 15889f1d9476Smrg os=sunos3 1589f33d31a3Smrg ;; 1590f33d31a3Smrg m68*-cisco) 15918b5ec993Smrg os= 15928b5ec993Smrg obj=aout 1593f33d31a3Smrg ;; 1594f33d31a3Smrg mep-*) 15958b5ec993Smrg os= 15968b5ec993Smrg obj=elf 1597f33d31a3Smrg ;; 1598f33d31a3Smrg mips*-cisco) 15998b5ec993Smrg os= 16008b5ec993Smrg obj=elf 1601f33d31a3Smrg ;; 16028b5ec993Smrg mips*-*|nanomips*-*) 16038b5ec993Smrg os= 16048b5ec993Smrg obj=elf 1605f33d31a3Smrg ;; 1606f33d31a3Smrg or32-*) 16078b5ec993Smrg os= 16088b5ec993Smrg obj=coff 1609f33d31a3Smrg ;; 1610f33d31a3Smrg *-tti) # must be before sparc entry or we get the wrong os. 16119f1d9476Smrg os=sysv3 1612f33d31a3Smrg ;; 1613f33d31a3Smrg sparc-* | *-sun) 16149f1d9476Smrg os=sunos4.1.1 1615f33d31a3Smrg ;; 1616f33d31a3Smrg pru-*) 16178b5ec993Smrg os= 16188b5ec993Smrg obj=elf 1619f33d31a3Smrg ;; 1620f33d31a3Smrg *-be) 16219f1d9476Smrg os=beos 1622f33d31a3Smrg ;; 1623f33d31a3Smrg *-ibm) 16249f1d9476Smrg os=aix 1625f33d31a3Smrg ;; 1626f33d31a3Smrg *-knuth) 16279f1d9476Smrg os=mmixware 1628f33d31a3Smrg ;; 1629f33d31a3Smrg *-wec) 16309f1d9476Smrg os=proelf 1631f33d31a3Smrg ;; 1632f33d31a3Smrg *-winbond) 16339f1d9476Smrg os=proelf 1634f33d31a3Smrg ;; 1635f33d31a3Smrg *-oki) 16369f1d9476Smrg os=proelf 1637f33d31a3Smrg ;; 1638f33d31a3Smrg *-hp) 16399f1d9476Smrg os=hpux 1640f33d31a3Smrg ;; 1641f33d31a3Smrg *-hitachi) 16429f1d9476Smrg os=hiux 1643f33d31a3Smrg ;; 1644f33d31a3Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16459f1d9476Smrg os=sysv 1646f33d31a3Smrg ;; 1647f33d31a3Smrg *-cbm) 16489f1d9476Smrg os=amigaos 1649f33d31a3Smrg ;; 1650f33d31a3Smrg *-dg) 16519f1d9476Smrg os=dgux 1652f33d31a3Smrg ;; 1653f33d31a3Smrg *-dolphin) 16549f1d9476Smrg os=sysv3 1655f33d31a3Smrg ;; 1656f33d31a3Smrg m68k-ccur) 16579f1d9476Smrg os=rtu 1658f33d31a3Smrg ;; 1659f33d31a3Smrg m88k-omron*) 16609f1d9476Smrg os=luna 1661f33d31a3Smrg ;; 1662f33d31a3Smrg *-next) 16639f1d9476Smrg os=nextstep 1664f33d31a3Smrg ;; 1665f33d31a3Smrg *-sequent) 16669f1d9476Smrg os=ptx 1667f33d31a3Smrg ;; 1668f33d31a3Smrg *-crds) 16699f1d9476Smrg os=unos 1670f33d31a3Smrg ;; 1671f33d31a3Smrg *-ns) 16729f1d9476Smrg os=genix 1673f33d31a3Smrg ;; 1674f33d31a3Smrg i370-*) 16759f1d9476Smrg os=mvs 1676f33d31a3Smrg ;; 1677f33d31a3Smrg *-gould) 16789f1d9476Smrg os=sysv 1679f33d31a3Smrg ;; 1680f33d31a3Smrg *-highlevel) 16819f1d9476Smrg os=bsd 1682f33d31a3Smrg ;; 1683f33d31a3Smrg *-encore) 16849f1d9476Smrg os=bsd 1685f33d31a3Smrg ;; 1686f33d31a3Smrg *-sgi) 16879f1d9476Smrg os=irix 1688f33d31a3Smrg ;; 1689f33d31a3Smrg *-siemens) 16909f1d9476Smrg os=sysv4 1691f33d31a3Smrg ;; 1692f33d31a3Smrg *-masscomp) 16939f1d9476Smrg os=rtu 1694f33d31a3Smrg ;; 1695f33d31a3Smrg f30[01]-fujitsu | f700-fujitsu) 16969f1d9476Smrg os=uxpv 1697f33d31a3Smrg ;; 1698f33d31a3Smrg *-rom68k) 16998b5ec993Smrg os= 17008b5ec993Smrg obj=coff 1701f33d31a3Smrg ;; 1702f33d31a3Smrg *-*bug) 17038b5ec993Smrg os= 17048b5ec993Smrg obj=coff 1705f33d31a3Smrg ;; 1706f33d31a3Smrg *-apple) 17079f1d9476Smrg os=macos 1708f33d31a3Smrg ;; 1709f33d31a3Smrg *-atari*) 17109f1d9476Smrg os=mint 17119f1d9476Smrg ;; 17129f1d9476Smrg *-wrs) 17139f1d9476Smrg os=vxworks 1714f33d31a3Smrg ;; 1715f33d31a3Smrg *) 17169f1d9476Smrg os=none 1717f33d31a3Smrg ;; 1718f33d31a3Smrgesac 17199f1d9476Smrg 1720f33d31a3Smrgfi 1721f33d31a3Smrg 17228b5ec993Smrg# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ). 17238b5ec993Smrg 17249f1d9476Smrgcase $os in 17259f1d9476Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17268b5ec993Smrg llvm* | musl* | newlib* | relibc* | uclibc*) 17279f1d9476Smrg ;; 17289f1d9476Smrg # Likewise for "kernel-abi" 17299f1d9476Smrg eabi* | gnueabi*) 17309f1d9476Smrg ;; 17319f1d9476Smrg # VxWorks passes extra cpu info in the 4th filed. 17329f1d9476Smrg simlinux | simwindows | spe) 17339f1d9476Smrg ;; 17348b5ec993Smrg # See `case $cpu-$os` validation below 17358b5ec993Smrg ghcjs) 17368b5ec993Smrg ;; 17379f1d9476Smrg # Now accept the basic system types. 17389f1d9476Smrg # The portable systems comes first. 17399f1d9476Smrg # Each alternative MUST end in a * to match a version number. 17409f1d9476Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17419f1d9476Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17429f1d9476Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17439f1d9476Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17449f1d9476Smrg | hiux* | abug | nacl* | netware* | windows* \ 17458b5ec993Smrg | os9* | macos* | osx* | ios* | tvos* | watchos* \ 17469f1d9476Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17479f1d9476Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17489f1d9476Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17499f1d9476Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17509f1d9476Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17519f1d9476Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17529f1d9476Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17539f1d9476Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17548b5ec993Smrg | bosx* | nextstep* | cxux* | oabi* \ 17558b5ec993Smrg | ptx* | ecoff* | winnt* | domain* | vsta* \ 17569f1d9476Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17579f1d9476Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17588b5ec993Smrg | cygwin* | msys* | moss* | proelf* | rtems* \ 17599f1d9476Smrg | midipix* | mingw32* | mingw64* | mint* \ 17609f1d9476Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17619f1d9476Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17629f1d9476Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17639f1d9476Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17649f1d9476Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17659f1d9476Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17669f1d9476Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17679f1d9476Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17689f1d9476Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17699f1d9476Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17708b5ec993Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 17718b5ec993Smrg | fiwix* | mlibc* | cos* | mbr* | ironclad* ) 17729f1d9476Smrg ;; 17739f1d9476Smrg # This one is extra strict with allowed versions 17749f1d9476Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17759f1d9476Smrg # Don't forget version if it is 3.2v4 or newer. 17769f1d9476Smrg ;; 17778b5ec993Smrg # This refers to builds using the UEFI calling convention 17788b5ec993Smrg # (which depends on the architecture) and PE file format. 17798b5ec993Smrg # Note that this is both a different calling convention and 17808b5ec993Smrg # different file format than that of GNU-EFI 17818b5ec993Smrg # (x86_64-w64-mingw32). 17828b5ec993Smrg uefi) 17838b5ec993Smrg ;; 17849f1d9476Smrg none) 17859f1d9476Smrg ;; 17868b5ec993Smrg kernel* | msvc* ) 17878b5ec993Smrg # Restricted further below 17888b5ec993Smrg ;; 17898b5ec993Smrg '') 17908b5ec993Smrg if test x"$obj" = x 17918b5ec993Smrg then 17928b5ec993Smrg echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2 17938b5ec993Smrg fi 17948b5ec993Smrg ;; 17959f1d9476Smrg *) 17968b5ec993Smrg echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 17978b5ec993Smrg exit 1 17988b5ec993Smrg ;; 17998b5ec993Smrgesac 18008b5ec993Smrg 18018b5ec993Smrgcase $obj in 18028b5ec993Smrg aout* | coff* | elf* | pe*) 18038b5ec993Smrg ;; 18048b5ec993Smrg '') 18058b5ec993Smrg # empty is fine 18068b5ec993Smrg ;; 18078b5ec993Smrg *) 18088b5ec993Smrg echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 18098b5ec993Smrg exit 1 18108b5ec993Smrg ;; 18118b5ec993Smrgesac 18128b5ec993Smrg 18138b5ec993Smrg# Here we handle the constraint that a (synthetic) cpu and os are 18148b5ec993Smrg# valid only in combination with each other and nowhere else. 18158b5ec993Smrgcase $cpu-$os in 18168b5ec993Smrg # The "javascript-unknown-ghcjs" triple is used by GHC; we 18178b5ec993Smrg # accept it here in order to tolerate that, but reject any 18188b5ec993Smrg # variations. 18198b5ec993Smrg javascript-ghcjs) 18208b5ec993Smrg ;; 18218b5ec993Smrg javascript-* | *-ghcjs) 18228b5ec993Smrg echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 18239f1d9476Smrg exit 1 18249f1d9476Smrg ;; 18259f1d9476Smrgesac 18269f1d9476Smrg 18279f1d9476Smrg# As a final step for OS-related things, validate the OS-kernel combination 18289f1d9476Smrg# (given a valid OS), if there is a kernel. 18298b5ec993Smrgcase $kernel-$os-$obj in 18308b5ec993Smrg linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ 18318b5ec993Smrg | linux-mlibc*- | linux-musl*- | linux-newlib*- \ 18328b5ec993Smrg | linux-relibc*- | linux-uclibc*- ) 18338b5ec993Smrg ;; 18348b5ec993Smrg uclinux-uclibc*- ) 18358b5ec993Smrg ;; 18368b5ec993Smrg managarm-mlibc*- | managarm-kernel*- ) 18379f1d9476Smrg ;; 18388b5ec993Smrg windows*-msvc*-) 18399f1d9476Smrg ;; 18408b5ec993Smrg -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ 18418b5ec993Smrg | -uclibc*- ) 18429f1d9476Smrg # These are just libc implementations, not actual OSes, and thus 18439f1d9476Smrg # require a kernel. 18448b5ec993Smrg echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 18459f1d9476Smrg exit 1 18469f1d9476Smrg ;; 18478b5ec993Smrg -kernel*- ) 18488b5ec993Smrg echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 18498b5ec993Smrg exit 1 18509f1d9476Smrg ;; 18518b5ec993Smrg *-kernel*- ) 18528b5ec993Smrg echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 18538b5ec993Smrg exit 1 18549f1d9476Smrg ;; 18558b5ec993Smrg *-msvc*- ) 18568b5ec993Smrg echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 18578b5ec993Smrg exit 1 18589f1d9476Smrg ;; 18598b5ec993Smrg kfreebsd*-gnu*- | kopensolaris*-gnu*-) 18608b5ec993Smrg ;; 18618b5ec993Smrg vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) 18628b5ec993Smrg ;; 18638b5ec993Smrg nto-qnx*-) 18648b5ec993Smrg ;; 18658b5ec993Smrg os2-emx-) 18669f1d9476Smrg ;; 18678b5ec993Smrg *-eabi*- | *-gnueabi*-) 18689f1d9476Smrg ;; 18698b5ec993Smrg none--*) 18708b5ec993Smrg # None (no kernel, i.e. freestanding / bare metal), 18718b5ec993Smrg # can be paired with an machine code file format 18728b5ec993Smrg ;; 18738b5ec993Smrg -*-) 18749f1d9476Smrg # Blank kernel with real OS is always fine. 18759f1d9476Smrg ;; 18768b5ec993Smrg --*) 18778b5ec993Smrg # Blank kernel and OS with real machine code file format is always fine. 18788b5ec993Smrg ;; 18798b5ec993Smrg *-*-*) 18808b5ec993Smrg echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 18819f1d9476Smrg exit 1 18829f1d9476Smrg ;; 18839f1d9476Smrgesac 18849f1d9476Smrg 1885f33d31a3Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1886f33d31a3Smrg# manufacturer. We pick the logical manufacturer. 18879f1d9476Smrgcase $vendor in 18889f1d9476Smrg unknown) 18899f1d9476Smrg case $cpu-$os in 18909f1d9476Smrg *-riscix*) 1891f33d31a3Smrg vendor=acorn 1892f33d31a3Smrg ;; 18939f1d9476Smrg *-sunos*) 1894f33d31a3Smrg vendor=sun 1895f33d31a3Smrg ;; 18969f1d9476Smrg *-cnk* | *-aix*) 1897f33d31a3Smrg vendor=ibm 1898f33d31a3Smrg ;; 18999f1d9476Smrg *-beos*) 1900f33d31a3Smrg vendor=be 1901f33d31a3Smrg ;; 19029f1d9476Smrg *-hpux*) 1903f33d31a3Smrg vendor=hp 1904f33d31a3Smrg ;; 19059f1d9476Smrg *-mpeix*) 1906f33d31a3Smrg vendor=hp 1907f33d31a3Smrg ;; 19089f1d9476Smrg *-hiux*) 1909f33d31a3Smrg vendor=hitachi 1910f33d31a3Smrg ;; 19119f1d9476Smrg *-unos*) 1912f33d31a3Smrg vendor=crds 1913f33d31a3Smrg ;; 19149f1d9476Smrg *-dgux*) 1915f33d31a3Smrg vendor=dg 1916f33d31a3Smrg ;; 19179f1d9476Smrg *-luna*) 1918f33d31a3Smrg vendor=omron 1919f33d31a3Smrg ;; 19209f1d9476Smrg *-genix*) 1921f33d31a3Smrg vendor=ns 1922f33d31a3Smrg ;; 19239f1d9476Smrg *-clix*) 19249f1d9476Smrg vendor=intergraph 19259f1d9476Smrg ;; 19269f1d9476Smrg *-mvs* | *-opened*) 19279f1d9476Smrg vendor=ibm 19289f1d9476Smrg ;; 19299f1d9476Smrg *-os400*) 1930f33d31a3Smrg vendor=ibm 1931f33d31a3Smrg ;; 19329f1d9476Smrg s390-* | s390x-*) 1933f33d31a3Smrg vendor=ibm 1934f33d31a3Smrg ;; 19359f1d9476Smrg *-ptx*) 1936f33d31a3Smrg vendor=sequent 1937f33d31a3Smrg ;; 19389f1d9476Smrg *-tpf*) 1939f33d31a3Smrg vendor=ibm 1940f33d31a3Smrg ;; 19419f1d9476Smrg *-vxsim* | *-vxworks* | *-windiss*) 1942f33d31a3Smrg vendor=wrs 1943f33d31a3Smrg ;; 19449f1d9476Smrg *-aux*) 1945f33d31a3Smrg vendor=apple 1946f33d31a3Smrg ;; 19479f1d9476Smrg *-hms*) 1948f33d31a3Smrg vendor=hitachi 1949f33d31a3Smrg ;; 19509f1d9476Smrg *-mpw* | *-macos*) 1951f33d31a3Smrg vendor=apple 1952f33d31a3Smrg ;; 19539f1d9476Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1954f33d31a3Smrg vendor=atari 1955f33d31a3Smrg ;; 19569f1d9476Smrg *-vos*) 1957f33d31a3Smrg vendor=stratus 1958f33d31a3Smrg ;; 1959f33d31a3Smrg esac 1960f33d31a3Smrg ;; 1961f33d31a3Smrgesac 1962f33d31a3Smrg 19638b5ec993Smrgecho "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" 1964f33d31a3Smrgexit 1965f33d31a3Smrg 1966f33d31a3Smrg# Local variables: 19679f1d9476Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1968f33d31a3Smrg# time-stamp-start: "timestamp='" 1969f33d31a3Smrg# time-stamp-format: "%:y-%02m-%02d" 1970f33d31a3Smrg# time-stamp-end: "'" 1971f33d31a3Smrg# End: 1972