1a1d141d5Smrg#! /bin/sh 2a1d141d5Smrg# Configuration validation subroutine script. 33bee1c92Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 4a1d141d5Smrg 526df5c7cSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 626df5c7cSmrg 73bee1c92Smrgtimestamp='2023-01-21' 8a1d141d5Smrg 9054b3d00Smrg# This file is free software; you can redistribute it and/or modify it 10054b3d00Smrg# under the terms of the GNU General Public License as published by 113bee1c92Smrg# the Free Software Foundation, either version 3 of the License, or 12a1d141d5Smrg# (at your option) any later version. 13a1d141d5Smrg# 14054b3d00Smrg# This program is distributed in the hope that it will be useful, but 15054b3d00Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16054b3d00Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17054b3d00Smrg# General Public License for more details. 18a1d141d5Smrg# 19a1d141d5Smrg# You should have received a copy of the GNU General Public License 20054b3d00Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 212ddb6cf1Smrg# 22a1d141d5Smrg# As a special exception to the GNU General Public License, if you 23a1d141d5Smrg# distribute this file as part of a program that contains a 24a1d141d5Smrg# configuration script generated by Autoconf, you may include it under 25054b3d00Smrg# the same distribution terms that you use for the rest of that 26054b3d00Smrg# program. This Exception is an additional permission under section 7 27054b3d00Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28a1d141d5Smrg 292ddb6cf1Smrg 30054b3d00Smrg# Please send patches to <config-patches@gnu.org>. 31a1d141d5Smrg# 32a1d141d5Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33a1d141d5Smrg# Supply the specified configuration type as an argument. 34a1d141d5Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35a1d141d5Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36a1d141d5Smrg 372ddb6cf1Smrg# You can get the latest version of this script from: 3826df5c7cSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 392ddb6cf1Smrg 40a1d141d5Smrg# This file is supposed to be the same for all GNU packages 41a1d141d5Smrg# and recognize all the CPU types, system types and aliases 42a1d141d5Smrg# that are meaningful with *any* GNU software. 43a1d141d5Smrg# Each package is responsible for reporting which valid configurations 44a1d141d5Smrg# it does not support. The user should be able to distinguish 45a1d141d5Smrg# a failure to support a valid configuration from a meaningless 46a1d141d5Smrg# configuration. 47a1d141d5Smrg 48a1d141d5Smrg# The goal of this file is to map all the various variations of a given 49a1d141d5Smrg# machine specification into a single specification in the form: 50a1d141d5Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51a1d141d5Smrg# or in some cases, the newer four-part form: 52a1d141d5Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53a1d141d5Smrg# It is wrong to echo any other type of specification. 54a1d141d5Smrg 5526df5c7cSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 5626df5c7cSmrg# about features and limitations of the classic Bourne shell that were 5726df5c7cSmrg# superseded or lifted in POSIX. However, this script identifies a wide 5826df5c7cSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5926df5c7cSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6026df5c7cSmrg# have a pre-POSIX /bin/sh. 6126df5c7cSmrg 62a1d141d5Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63a1d141d5Smrg 64a1d141d5Smrgusage="\ 65054b3d00SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66a1d141d5Smrg 67a1d141d5SmrgCanonicalize a configuration name. 68a1d141d5Smrg 69054b3d00SmrgOptions: 70a1d141d5Smrg -h, --help print this help, then exit 71a1d141d5Smrg -t, --time-stamp print date of last modification, then exit 72a1d141d5Smrg -v, --version print version number, then exit 73a1d141d5Smrg 74a1d141d5SmrgReport bugs and patches to <config-patches@gnu.org>." 75a1d141d5Smrg 76a1d141d5Smrgversion="\ 77a1d141d5SmrgGNU config.sub ($timestamp) 78a1d141d5Smrg 793bee1c92SmrgCopyright 1992-2023 Free Software Foundation, Inc. 80a1d141d5Smrg 81a1d141d5SmrgThis is free software; see the source for copying conditions. There is NO 82a1d141d5Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83a1d141d5Smrg 84a1d141d5Smrghelp=" 85a1d141d5SmrgTry \`$me --help' for more information." 86a1d141d5Smrg 87a1d141d5Smrg# Parse command line 88a1d141d5Smrgwhile test $# -gt 0 ; do 89a1d141d5Smrg case $1 in 90a1d141d5Smrg --time-stamp | --time* | -t ) 912ddb6cf1Smrg echo "$timestamp" ; exit ;; 92a1d141d5Smrg --version | -v ) 932ddb6cf1Smrg echo "$version" ; exit ;; 94a1d141d5Smrg --help | --h* | -h ) 952ddb6cf1Smrg echo "$usage"; exit ;; 96a1d141d5Smrg -- ) # Stop option processing 97a1d141d5Smrg shift; break ;; 98a1d141d5Smrg - ) # Use stdin as input. 99a1d141d5Smrg break ;; 100a1d141d5Smrg -* ) 10126df5c7cSmrg echo "$me: invalid option $1$help" >&2 102a1d141d5Smrg exit 1 ;; 103a1d141d5Smrg 104a1d141d5Smrg *local*) 105a1d141d5Smrg # First pass through any local machine types. 106054b3d00Smrg echo "$1" 1072ddb6cf1Smrg exit ;; 108a1d141d5Smrg 109a1d141d5Smrg * ) 110a1d141d5Smrg break ;; 111a1d141d5Smrg esac 112a1d141d5Smrgdone 113a1d141d5Smrg 114a1d141d5Smrgcase $# in 115a1d141d5Smrg 0) echo "$me: missing argument$help" >&2 116a1d141d5Smrg exit 1;; 117a1d141d5Smrg 1) ;; 118a1d141d5Smrg *) echo "$me: too many arguments$help" >&2 119a1d141d5Smrg exit 1;; 120a1d141d5Smrgesac 121a1d141d5Smrg 12226df5c7cSmrg# Split fields of configuration type 12326df5c7cSmrg# shellcheck disable=SC2162 1243bee1c92Smrgsaved_IFS=$IFS 12526df5c7cSmrgIFS="-" read field1 field2 field3 field4 <<EOF 12626df5c7cSmrg$1 12726df5c7cSmrgEOF 1283bee1c92SmrgIFS=$saved_IFS 129a1d141d5Smrg 13026df5c7cSmrg# Separate into logical components for further validation 13126df5c7cSmrgcase $1 in 13226df5c7cSmrg *-*-*-*-*) 13326df5c7cSmrg echo Invalid configuration \`"$1"\': more than four components >&2 13426df5c7cSmrg exit 1 135a1d141d5Smrg ;; 13626df5c7cSmrg *-*-*-*) 13726df5c7cSmrg basic_machine=$field1-$field2 13826df5c7cSmrg basic_os=$field3-$field4 139a1d141d5Smrg ;; 14026df5c7cSmrg *-*-*) 14126df5c7cSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14226df5c7cSmrg # parts 14326df5c7cSmrg maybe_os=$field2-$field3 14426df5c7cSmrg case $maybe_os in 14526df5c7cSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 14626df5c7cSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14726df5c7cSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1483bee1c92Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 14926df5c7cSmrg basic_machine=$field1 15026df5c7cSmrg basic_os=$maybe_os 15126df5c7cSmrg ;; 15226df5c7cSmrg android-linux) 15326df5c7cSmrg basic_machine=$field1-unknown 15426df5c7cSmrg basic_os=linux-android 15526df5c7cSmrg ;; 15626df5c7cSmrg *) 15726df5c7cSmrg basic_machine=$field1-$field2 15826df5c7cSmrg basic_os=$field3 15926df5c7cSmrg ;; 16026df5c7cSmrg esac 161a1d141d5Smrg ;; 16226df5c7cSmrg *-*) 16326df5c7cSmrg # A lone config we happen to match not fitting any pattern 16426df5c7cSmrg case $field1-$field2 in 16526df5c7cSmrg decstation-3100) 16626df5c7cSmrg basic_machine=mips-dec 16726df5c7cSmrg basic_os= 16826df5c7cSmrg ;; 16926df5c7cSmrg *-*) 17026df5c7cSmrg # Second component is usually, but not always the OS 17126df5c7cSmrg case $field2 in 17226df5c7cSmrg # Prevent following clause from handling this valid os 17326df5c7cSmrg sun*os*) 17426df5c7cSmrg basic_machine=$field1 17526df5c7cSmrg basic_os=$field2 17626df5c7cSmrg ;; 1773bee1c92Smrg zephyr*) 1783bee1c92Smrg basic_machine=$field1-unknown 1793bee1c92Smrg basic_os=$field2 1803bee1c92Smrg ;; 18126df5c7cSmrg # Manufacturers 18226df5c7cSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18326df5c7cSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18426df5c7cSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18526df5c7cSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18626df5c7cSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18726df5c7cSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18826df5c7cSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18926df5c7cSmrg | microblaze* | sim | cisco \ 19026df5c7cSmrg | oki | wec | wrs | winbond) 19126df5c7cSmrg basic_machine=$field1-$field2 19226df5c7cSmrg basic_os= 19326df5c7cSmrg ;; 19426df5c7cSmrg *) 19526df5c7cSmrg basic_machine=$field1 19626df5c7cSmrg basic_os=$field2 19726df5c7cSmrg ;; 19826df5c7cSmrg esac 19926df5c7cSmrg ;; 20026df5c7cSmrg esac 201a1d141d5Smrg ;; 20226df5c7cSmrg *) 20326df5c7cSmrg # Convert single-component short-hands not valid as part of 20426df5c7cSmrg # multi-component configurations. 20526df5c7cSmrg case $field1 in 20626df5c7cSmrg 386bsd) 20726df5c7cSmrg basic_machine=i386-pc 20826df5c7cSmrg basic_os=bsd 20926df5c7cSmrg ;; 21026df5c7cSmrg a29khif) 21126df5c7cSmrg basic_machine=a29k-amd 21226df5c7cSmrg basic_os=udi 21326df5c7cSmrg ;; 21426df5c7cSmrg adobe68k) 21526df5c7cSmrg basic_machine=m68010-adobe 21626df5c7cSmrg basic_os=scout 21726df5c7cSmrg ;; 21826df5c7cSmrg alliant) 21926df5c7cSmrg basic_machine=fx80-alliant 22026df5c7cSmrg basic_os= 22126df5c7cSmrg ;; 22226df5c7cSmrg altos | altos3068) 22326df5c7cSmrg basic_machine=m68k-altos 22426df5c7cSmrg basic_os= 22526df5c7cSmrg ;; 22626df5c7cSmrg am29k) 22726df5c7cSmrg basic_machine=a29k-none 22826df5c7cSmrg basic_os=bsd 22926df5c7cSmrg ;; 23026df5c7cSmrg amdahl) 23126df5c7cSmrg basic_machine=580-amdahl 23226df5c7cSmrg basic_os=sysv 23326df5c7cSmrg ;; 23426df5c7cSmrg amiga) 23526df5c7cSmrg basic_machine=m68k-unknown 23626df5c7cSmrg basic_os= 23726df5c7cSmrg ;; 23826df5c7cSmrg amigaos | amigados) 23926df5c7cSmrg basic_machine=m68k-unknown 24026df5c7cSmrg basic_os=amigaos 24126df5c7cSmrg ;; 24226df5c7cSmrg amigaunix | amix) 24326df5c7cSmrg basic_machine=m68k-unknown 24426df5c7cSmrg basic_os=sysv4 24526df5c7cSmrg ;; 24626df5c7cSmrg apollo68) 24726df5c7cSmrg basic_machine=m68k-apollo 24826df5c7cSmrg basic_os=sysv 24926df5c7cSmrg ;; 25026df5c7cSmrg apollo68bsd) 25126df5c7cSmrg basic_machine=m68k-apollo 25226df5c7cSmrg basic_os=bsd 25326df5c7cSmrg ;; 25426df5c7cSmrg aros) 25526df5c7cSmrg basic_machine=i386-pc 25626df5c7cSmrg basic_os=aros 25726df5c7cSmrg ;; 25826df5c7cSmrg aux) 25926df5c7cSmrg basic_machine=m68k-apple 26026df5c7cSmrg basic_os=aux 26126df5c7cSmrg ;; 26226df5c7cSmrg balance) 26326df5c7cSmrg basic_machine=ns32k-sequent 26426df5c7cSmrg basic_os=dynix 26526df5c7cSmrg ;; 26626df5c7cSmrg blackfin) 26726df5c7cSmrg basic_machine=bfin-unknown 26826df5c7cSmrg basic_os=linux 26926df5c7cSmrg ;; 27026df5c7cSmrg cegcc) 27126df5c7cSmrg basic_machine=arm-unknown 27226df5c7cSmrg basic_os=cegcc 27326df5c7cSmrg ;; 27426df5c7cSmrg convex-c1) 27526df5c7cSmrg basic_machine=c1-convex 27626df5c7cSmrg basic_os=bsd 27726df5c7cSmrg ;; 27826df5c7cSmrg convex-c2) 27926df5c7cSmrg basic_machine=c2-convex 28026df5c7cSmrg basic_os=bsd 28126df5c7cSmrg ;; 28226df5c7cSmrg convex-c32) 28326df5c7cSmrg basic_machine=c32-convex 28426df5c7cSmrg basic_os=bsd 28526df5c7cSmrg ;; 28626df5c7cSmrg convex-c34) 28726df5c7cSmrg basic_machine=c34-convex 28826df5c7cSmrg basic_os=bsd 28926df5c7cSmrg ;; 29026df5c7cSmrg convex-c38) 29126df5c7cSmrg basic_machine=c38-convex 29226df5c7cSmrg basic_os=bsd 29326df5c7cSmrg ;; 29426df5c7cSmrg cray) 29526df5c7cSmrg basic_machine=j90-cray 29626df5c7cSmrg basic_os=unicos 29726df5c7cSmrg ;; 29826df5c7cSmrg crds | unos) 29926df5c7cSmrg basic_machine=m68k-crds 30026df5c7cSmrg basic_os= 30126df5c7cSmrg ;; 30226df5c7cSmrg da30) 30326df5c7cSmrg basic_machine=m68k-da30 30426df5c7cSmrg basic_os= 30526df5c7cSmrg ;; 30626df5c7cSmrg decstation | pmax | pmin | dec3100 | decstatn) 30726df5c7cSmrg basic_machine=mips-dec 30826df5c7cSmrg basic_os= 30926df5c7cSmrg ;; 31026df5c7cSmrg delta88) 31126df5c7cSmrg basic_machine=m88k-motorola 31226df5c7cSmrg basic_os=sysv3 31326df5c7cSmrg ;; 31426df5c7cSmrg dicos) 31526df5c7cSmrg basic_machine=i686-pc 31626df5c7cSmrg basic_os=dicos 31726df5c7cSmrg ;; 31826df5c7cSmrg djgpp) 31926df5c7cSmrg basic_machine=i586-pc 32026df5c7cSmrg basic_os=msdosdjgpp 32126df5c7cSmrg ;; 32226df5c7cSmrg ebmon29k) 32326df5c7cSmrg basic_machine=a29k-amd 32426df5c7cSmrg basic_os=ebmon 32526df5c7cSmrg ;; 32626df5c7cSmrg es1800 | OSE68k | ose68k | ose | OSE) 32726df5c7cSmrg basic_machine=m68k-ericsson 32826df5c7cSmrg basic_os=ose 32926df5c7cSmrg ;; 33026df5c7cSmrg gmicro) 33126df5c7cSmrg basic_machine=tron-gmicro 33226df5c7cSmrg basic_os=sysv 33326df5c7cSmrg ;; 33426df5c7cSmrg go32) 33526df5c7cSmrg basic_machine=i386-pc 33626df5c7cSmrg basic_os=go32 33726df5c7cSmrg ;; 33826df5c7cSmrg h8300hms) 33926df5c7cSmrg basic_machine=h8300-hitachi 34026df5c7cSmrg basic_os=hms 34126df5c7cSmrg ;; 34226df5c7cSmrg h8300xray) 34326df5c7cSmrg basic_machine=h8300-hitachi 34426df5c7cSmrg basic_os=xray 34526df5c7cSmrg ;; 34626df5c7cSmrg h8500hms) 34726df5c7cSmrg basic_machine=h8500-hitachi 34826df5c7cSmrg basic_os=hms 34926df5c7cSmrg ;; 35026df5c7cSmrg harris) 35126df5c7cSmrg basic_machine=m88k-harris 35226df5c7cSmrg basic_os=sysv3 35326df5c7cSmrg ;; 35426df5c7cSmrg hp300 | hp300hpux) 35526df5c7cSmrg basic_machine=m68k-hp 35626df5c7cSmrg basic_os=hpux 35726df5c7cSmrg ;; 35826df5c7cSmrg hp300bsd) 35926df5c7cSmrg basic_machine=m68k-hp 36026df5c7cSmrg basic_os=bsd 36126df5c7cSmrg ;; 36226df5c7cSmrg hppaosf) 36326df5c7cSmrg basic_machine=hppa1.1-hp 36426df5c7cSmrg basic_os=osf 36526df5c7cSmrg ;; 36626df5c7cSmrg hppro) 36726df5c7cSmrg basic_machine=hppa1.1-hp 36826df5c7cSmrg basic_os=proelf 36926df5c7cSmrg ;; 37026df5c7cSmrg i386mach) 37126df5c7cSmrg basic_machine=i386-mach 37226df5c7cSmrg basic_os=mach 37326df5c7cSmrg ;; 37426df5c7cSmrg isi68 | isi) 37526df5c7cSmrg basic_machine=m68k-isi 37626df5c7cSmrg basic_os=sysv 37726df5c7cSmrg ;; 37826df5c7cSmrg m68knommu) 37926df5c7cSmrg basic_machine=m68k-unknown 38026df5c7cSmrg basic_os=linux 38126df5c7cSmrg ;; 38226df5c7cSmrg magnum | m3230) 38326df5c7cSmrg basic_machine=mips-mips 38426df5c7cSmrg basic_os=sysv 38526df5c7cSmrg ;; 38626df5c7cSmrg merlin) 38726df5c7cSmrg basic_machine=ns32k-utek 38826df5c7cSmrg basic_os=sysv 38926df5c7cSmrg ;; 39026df5c7cSmrg mingw64) 39126df5c7cSmrg basic_machine=x86_64-pc 39226df5c7cSmrg basic_os=mingw64 39326df5c7cSmrg ;; 39426df5c7cSmrg mingw32) 39526df5c7cSmrg basic_machine=i686-pc 39626df5c7cSmrg basic_os=mingw32 39726df5c7cSmrg ;; 39826df5c7cSmrg mingw32ce) 39926df5c7cSmrg basic_machine=arm-unknown 40026df5c7cSmrg basic_os=mingw32ce 40126df5c7cSmrg ;; 40226df5c7cSmrg monitor) 40326df5c7cSmrg basic_machine=m68k-rom68k 40426df5c7cSmrg basic_os=coff 40526df5c7cSmrg ;; 40626df5c7cSmrg morphos) 40726df5c7cSmrg basic_machine=powerpc-unknown 40826df5c7cSmrg basic_os=morphos 40926df5c7cSmrg ;; 41026df5c7cSmrg moxiebox) 41126df5c7cSmrg basic_machine=moxie-unknown 41226df5c7cSmrg basic_os=moxiebox 41326df5c7cSmrg ;; 41426df5c7cSmrg msdos) 41526df5c7cSmrg basic_machine=i386-pc 41626df5c7cSmrg basic_os=msdos 41726df5c7cSmrg ;; 41826df5c7cSmrg msys) 41926df5c7cSmrg basic_machine=i686-pc 42026df5c7cSmrg basic_os=msys 42126df5c7cSmrg ;; 42226df5c7cSmrg mvs) 42326df5c7cSmrg basic_machine=i370-ibm 42426df5c7cSmrg basic_os=mvs 42526df5c7cSmrg ;; 42626df5c7cSmrg nacl) 42726df5c7cSmrg basic_machine=le32-unknown 42826df5c7cSmrg basic_os=nacl 42926df5c7cSmrg ;; 43026df5c7cSmrg ncr3000) 43126df5c7cSmrg basic_machine=i486-ncr 43226df5c7cSmrg basic_os=sysv4 43326df5c7cSmrg ;; 43426df5c7cSmrg netbsd386) 43526df5c7cSmrg basic_machine=i386-pc 43626df5c7cSmrg basic_os=netbsd 43726df5c7cSmrg ;; 43826df5c7cSmrg netwinder) 43926df5c7cSmrg basic_machine=armv4l-rebel 44026df5c7cSmrg basic_os=linux 44126df5c7cSmrg ;; 44226df5c7cSmrg news | news700 | news800 | news900) 44326df5c7cSmrg basic_machine=m68k-sony 44426df5c7cSmrg basic_os=newsos 44526df5c7cSmrg ;; 44626df5c7cSmrg news1000) 44726df5c7cSmrg basic_machine=m68030-sony 44826df5c7cSmrg basic_os=newsos 44926df5c7cSmrg ;; 45026df5c7cSmrg necv70) 45126df5c7cSmrg basic_machine=v70-nec 45226df5c7cSmrg basic_os=sysv 45326df5c7cSmrg ;; 45426df5c7cSmrg nh3000) 45526df5c7cSmrg basic_machine=m68k-harris 45626df5c7cSmrg basic_os=cxux 45726df5c7cSmrg ;; 45826df5c7cSmrg nh[45]000) 45926df5c7cSmrg basic_machine=m88k-harris 46026df5c7cSmrg basic_os=cxux 46126df5c7cSmrg ;; 46226df5c7cSmrg nindy960) 46326df5c7cSmrg basic_machine=i960-intel 46426df5c7cSmrg basic_os=nindy 46526df5c7cSmrg ;; 46626df5c7cSmrg mon960) 46726df5c7cSmrg basic_machine=i960-intel 46826df5c7cSmrg basic_os=mon960 46926df5c7cSmrg ;; 47026df5c7cSmrg nonstopux) 47126df5c7cSmrg basic_machine=mips-compaq 47226df5c7cSmrg basic_os=nonstopux 47326df5c7cSmrg ;; 47426df5c7cSmrg os400) 47526df5c7cSmrg basic_machine=powerpc-ibm 47626df5c7cSmrg basic_os=os400 47726df5c7cSmrg ;; 47826df5c7cSmrg OSE68000 | ose68000) 47926df5c7cSmrg basic_machine=m68000-ericsson 48026df5c7cSmrg basic_os=ose 48126df5c7cSmrg ;; 48226df5c7cSmrg os68k) 48326df5c7cSmrg basic_machine=m68k-none 48426df5c7cSmrg basic_os=os68k 48526df5c7cSmrg ;; 48626df5c7cSmrg paragon) 48726df5c7cSmrg basic_machine=i860-intel 48826df5c7cSmrg basic_os=osf 48926df5c7cSmrg ;; 49026df5c7cSmrg parisc) 49126df5c7cSmrg basic_machine=hppa-unknown 49226df5c7cSmrg basic_os=linux 49326df5c7cSmrg ;; 49426df5c7cSmrg psp) 49526df5c7cSmrg basic_machine=mipsallegrexel-sony 49626df5c7cSmrg basic_os=psp 49726df5c7cSmrg ;; 49826df5c7cSmrg pw32) 49926df5c7cSmrg basic_machine=i586-unknown 50026df5c7cSmrg basic_os=pw32 50126df5c7cSmrg ;; 50226df5c7cSmrg rdos | rdos64) 50326df5c7cSmrg basic_machine=x86_64-pc 50426df5c7cSmrg basic_os=rdos 50526df5c7cSmrg ;; 50626df5c7cSmrg rdos32) 50726df5c7cSmrg basic_machine=i386-pc 50826df5c7cSmrg basic_os=rdos 50926df5c7cSmrg ;; 51026df5c7cSmrg rom68k) 51126df5c7cSmrg basic_machine=m68k-rom68k 51226df5c7cSmrg basic_os=coff 51326df5c7cSmrg ;; 51426df5c7cSmrg sa29200) 51526df5c7cSmrg basic_machine=a29k-amd 51626df5c7cSmrg basic_os=udi 51726df5c7cSmrg ;; 51826df5c7cSmrg sei) 51926df5c7cSmrg basic_machine=mips-sei 52026df5c7cSmrg basic_os=seiux 52126df5c7cSmrg ;; 52226df5c7cSmrg sequent) 52326df5c7cSmrg basic_machine=i386-sequent 52426df5c7cSmrg basic_os= 52526df5c7cSmrg ;; 52626df5c7cSmrg sps7) 52726df5c7cSmrg basic_machine=m68k-bull 52826df5c7cSmrg basic_os=sysv2 52926df5c7cSmrg ;; 53026df5c7cSmrg st2000) 53126df5c7cSmrg basic_machine=m68k-tandem 53226df5c7cSmrg basic_os= 53326df5c7cSmrg ;; 53426df5c7cSmrg stratus) 53526df5c7cSmrg basic_machine=i860-stratus 53626df5c7cSmrg basic_os=sysv4 53726df5c7cSmrg ;; 53826df5c7cSmrg sun2) 53926df5c7cSmrg basic_machine=m68000-sun 54026df5c7cSmrg basic_os= 54126df5c7cSmrg ;; 54226df5c7cSmrg sun2os3) 54326df5c7cSmrg basic_machine=m68000-sun 54426df5c7cSmrg basic_os=sunos3 54526df5c7cSmrg ;; 54626df5c7cSmrg sun2os4) 54726df5c7cSmrg basic_machine=m68000-sun 54826df5c7cSmrg basic_os=sunos4 54926df5c7cSmrg ;; 55026df5c7cSmrg sun3) 55126df5c7cSmrg basic_machine=m68k-sun 55226df5c7cSmrg basic_os= 55326df5c7cSmrg ;; 55426df5c7cSmrg sun3os3) 55526df5c7cSmrg basic_machine=m68k-sun 55626df5c7cSmrg basic_os=sunos3 55726df5c7cSmrg ;; 55826df5c7cSmrg sun3os4) 55926df5c7cSmrg basic_machine=m68k-sun 56026df5c7cSmrg basic_os=sunos4 56126df5c7cSmrg ;; 56226df5c7cSmrg sun4) 56326df5c7cSmrg basic_machine=sparc-sun 56426df5c7cSmrg basic_os= 56526df5c7cSmrg ;; 56626df5c7cSmrg sun4os3) 56726df5c7cSmrg basic_machine=sparc-sun 56826df5c7cSmrg basic_os=sunos3 56926df5c7cSmrg ;; 57026df5c7cSmrg sun4os4) 57126df5c7cSmrg basic_machine=sparc-sun 57226df5c7cSmrg basic_os=sunos4 57326df5c7cSmrg ;; 57426df5c7cSmrg sun4sol2) 57526df5c7cSmrg basic_machine=sparc-sun 57626df5c7cSmrg basic_os=solaris2 57726df5c7cSmrg ;; 57826df5c7cSmrg sun386 | sun386i | roadrunner) 57926df5c7cSmrg basic_machine=i386-sun 58026df5c7cSmrg basic_os= 58126df5c7cSmrg ;; 58226df5c7cSmrg sv1) 58326df5c7cSmrg basic_machine=sv1-cray 58426df5c7cSmrg basic_os=unicos 58526df5c7cSmrg ;; 58626df5c7cSmrg symmetry) 58726df5c7cSmrg basic_machine=i386-sequent 58826df5c7cSmrg basic_os=dynix 58926df5c7cSmrg ;; 59026df5c7cSmrg t3e) 59126df5c7cSmrg basic_machine=alphaev5-cray 59226df5c7cSmrg basic_os=unicos 59326df5c7cSmrg ;; 59426df5c7cSmrg t90) 59526df5c7cSmrg basic_machine=t90-cray 59626df5c7cSmrg basic_os=unicos 59726df5c7cSmrg ;; 59826df5c7cSmrg toad1) 59926df5c7cSmrg basic_machine=pdp10-xkl 60026df5c7cSmrg basic_os=tops20 60126df5c7cSmrg ;; 60226df5c7cSmrg tpf) 60326df5c7cSmrg basic_machine=s390x-ibm 60426df5c7cSmrg basic_os=tpf 60526df5c7cSmrg ;; 60626df5c7cSmrg udi29k) 60726df5c7cSmrg basic_machine=a29k-amd 60826df5c7cSmrg basic_os=udi 60926df5c7cSmrg ;; 61026df5c7cSmrg ultra3) 61126df5c7cSmrg basic_machine=a29k-nyu 61226df5c7cSmrg basic_os=sym1 61326df5c7cSmrg ;; 61426df5c7cSmrg v810 | necv810) 61526df5c7cSmrg basic_machine=v810-nec 61626df5c7cSmrg basic_os=none 61726df5c7cSmrg ;; 61826df5c7cSmrg vaxv) 61926df5c7cSmrg basic_machine=vax-dec 62026df5c7cSmrg basic_os=sysv 62126df5c7cSmrg ;; 62226df5c7cSmrg vms) 62326df5c7cSmrg basic_machine=vax-dec 62426df5c7cSmrg basic_os=vms 62526df5c7cSmrg ;; 62626df5c7cSmrg vsta) 62726df5c7cSmrg basic_machine=i386-pc 62826df5c7cSmrg basic_os=vsta 62926df5c7cSmrg ;; 63026df5c7cSmrg vxworks960) 63126df5c7cSmrg basic_machine=i960-wrs 63226df5c7cSmrg basic_os=vxworks 63326df5c7cSmrg ;; 63426df5c7cSmrg vxworks68) 63526df5c7cSmrg basic_machine=m68k-wrs 63626df5c7cSmrg basic_os=vxworks 63726df5c7cSmrg ;; 63826df5c7cSmrg vxworks29k) 63926df5c7cSmrg basic_machine=a29k-wrs 64026df5c7cSmrg basic_os=vxworks 64126df5c7cSmrg ;; 64226df5c7cSmrg xbox) 64326df5c7cSmrg basic_machine=i686-pc 64426df5c7cSmrg basic_os=mingw32 64526df5c7cSmrg ;; 64626df5c7cSmrg ymp) 64726df5c7cSmrg basic_machine=ymp-cray 64826df5c7cSmrg basic_os=unicos 64926df5c7cSmrg ;; 65026df5c7cSmrg *) 65126df5c7cSmrg basic_machine=$1 65226df5c7cSmrg basic_os= 65326df5c7cSmrg ;; 65426df5c7cSmrg esac 655a1d141d5Smrg ;; 656a1d141d5Smrgesac 657a1d141d5Smrg 65826df5c7cSmrg# Decode 1-component or ad-hoc basic machines 659a1d141d5Smrgcase $basic_machine in 66026df5c7cSmrg # Here we handle the default manufacturer of certain CPU types. It is in 66126df5c7cSmrg # some cases the only manufacturer, in others, it is the most popular. 66226df5c7cSmrg w89k) 66326df5c7cSmrg cpu=hppa1.1 66426df5c7cSmrg vendor=winbond 665054b3d00Smrg ;; 66626df5c7cSmrg op50n) 66726df5c7cSmrg cpu=hppa1.1 66826df5c7cSmrg vendor=oki 669a1d141d5Smrg ;; 67026df5c7cSmrg op60c) 67126df5c7cSmrg cpu=hppa1.1 67226df5c7cSmrg vendor=oki 673a1d141d5Smrg ;; 67426df5c7cSmrg ibm*) 67526df5c7cSmrg cpu=i370 67626df5c7cSmrg vendor=ibm 6772ddb6cf1Smrg ;; 67826df5c7cSmrg orion105) 67926df5c7cSmrg cpu=clipper 68026df5c7cSmrg vendor=highlevel 681054b3d00Smrg ;; 68226df5c7cSmrg mac | mpw | mac-mpw) 68326df5c7cSmrg cpu=m68k 68426df5c7cSmrg vendor=apple 685054b3d00Smrg ;; 68626df5c7cSmrg pmac | pmac-mpw) 68726df5c7cSmrg cpu=powerpc 68826df5c7cSmrg vendor=apple 689054b3d00Smrg ;; 690054b3d00Smrg 691a1d141d5Smrg # Recognize the various machine names and aliases which stand 692a1d141d5Smrg # for a CPU type and a company and sometimes even an OS. 693a1d141d5Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69426df5c7cSmrg cpu=m68000 69526df5c7cSmrg vendor=att 696a1d141d5Smrg ;; 697a1d141d5Smrg 3b*) 69826df5c7cSmrg cpu=we32k 69926df5c7cSmrg vendor=att 7002ddb6cf1Smrg ;; 7012ddb6cf1Smrg bluegene*) 70226df5c7cSmrg cpu=powerpc 70326df5c7cSmrg vendor=ibm 70426df5c7cSmrg basic_os=cnk 705a1d141d5Smrg ;; 706a1d141d5Smrg decsystem10* | dec10*) 70726df5c7cSmrg cpu=pdp10 70826df5c7cSmrg vendor=dec 70926df5c7cSmrg basic_os=tops10 710a1d141d5Smrg ;; 711a1d141d5Smrg decsystem20* | dec20*) 71226df5c7cSmrg cpu=pdp10 71326df5c7cSmrg vendor=dec 71426df5c7cSmrg basic_os=tops20 715a1d141d5Smrg ;; 716a1d141d5Smrg delta | 3300 | motorola-3300 | motorola-delta \ 717a1d141d5Smrg | 3300-motorola | delta-motorola) 71826df5c7cSmrg cpu=m68k 71926df5c7cSmrg vendor=motorola 720a1d141d5Smrg ;; 721054b3d00Smrg dpx2*) 72226df5c7cSmrg cpu=m68k 72326df5c7cSmrg vendor=bull 72426df5c7cSmrg basic_os=sysv3 725a1d141d5Smrg ;; 726a1d141d5Smrg encore | umax | mmax) 72726df5c7cSmrg cpu=ns32k 72826df5c7cSmrg vendor=encore 729a1d141d5Smrg ;; 73026df5c7cSmrg elxsi) 73126df5c7cSmrg cpu=elxsi 73226df5c7cSmrg vendor=elxsi 73326df5c7cSmrg basic_os=${basic_os:-bsd} 734a1d141d5Smrg ;; 735a1d141d5Smrg fx2800) 73626df5c7cSmrg cpu=i860 73726df5c7cSmrg vendor=alliant 738a1d141d5Smrg ;; 739a1d141d5Smrg genix) 74026df5c7cSmrg cpu=ns32k 74126df5c7cSmrg vendor=ns 742a1d141d5Smrg ;; 743a1d141d5Smrg h3050r* | hiux*) 74426df5c7cSmrg cpu=hppa1.1 74526df5c7cSmrg vendor=hitachi 74626df5c7cSmrg basic_os=hiuxwe2 747a1d141d5Smrg ;; 748a1d141d5Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74926df5c7cSmrg cpu=hppa1.0 75026df5c7cSmrg vendor=hp 751a1d141d5Smrg ;; 752a1d141d5Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 75326df5c7cSmrg cpu=m68000 75426df5c7cSmrg vendor=hp 755a1d141d5Smrg ;; 756a1d141d5Smrg hp9k3[2-9][0-9]) 75726df5c7cSmrg cpu=m68k 75826df5c7cSmrg vendor=hp 759a1d141d5Smrg ;; 760a1d141d5Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76126df5c7cSmrg cpu=hppa1.0 76226df5c7cSmrg vendor=hp 763a1d141d5Smrg ;; 764a1d141d5Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76526df5c7cSmrg cpu=hppa1.1 76626df5c7cSmrg vendor=hp 767a1d141d5Smrg ;; 768a1d141d5Smrg hp9k78[0-9] | hp78[0-9]) 769a1d141d5Smrg # FIXME: really hppa2.0-hp 77026df5c7cSmrg cpu=hppa1.1 77126df5c7cSmrg vendor=hp 772a1d141d5Smrg ;; 773a1d141d5Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774a1d141d5Smrg # FIXME: really hppa2.0-hp 77526df5c7cSmrg cpu=hppa1.1 77626df5c7cSmrg vendor=hp 777a1d141d5Smrg ;; 778a1d141d5Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 77926df5c7cSmrg cpu=hppa1.1 78026df5c7cSmrg vendor=hp 781a1d141d5Smrg ;; 782a1d141d5Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78326df5c7cSmrg cpu=hppa1.0 78426df5c7cSmrg vendor=hp 785a1d141d5Smrg ;; 786a1d141d5Smrg i*86v32) 78726df5c7cSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78826df5c7cSmrg vendor=pc 78926df5c7cSmrg basic_os=sysv32 790a1d141d5Smrg ;; 791a1d141d5Smrg i*86v4*) 79226df5c7cSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79326df5c7cSmrg vendor=pc 79426df5c7cSmrg basic_os=sysv4 795a1d141d5Smrg ;; 796a1d141d5Smrg i*86v) 79726df5c7cSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79826df5c7cSmrg vendor=pc 79926df5c7cSmrg basic_os=sysv 800a1d141d5Smrg ;; 801a1d141d5Smrg i*86sol2) 80226df5c7cSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80326df5c7cSmrg vendor=pc 80426df5c7cSmrg basic_os=solaris2 805a1d141d5Smrg ;; 80626df5c7cSmrg j90 | j90-cray) 80726df5c7cSmrg cpu=j90 80826df5c7cSmrg vendor=cray 80926df5c7cSmrg basic_os=${basic_os:-unicos} 810a1d141d5Smrg ;; 811a1d141d5Smrg iris | iris4d) 81226df5c7cSmrg cpu=mips 81326df5c7cSmrg vendor=sgi 81426df5c7cSmrg case $basic_os in 81526df5c7cSmrg irix*) 816a1d141d5Smrg ;; 817a1d141d5Smrg *) 81826df5c7cSmrg basic_os=irix4 819a1d141d5Smrg ;; 820a1d141d5Smrg esac 821a1d141d5Smrg ;; 822a1d141d5Smrg miniframe) 82326df5c7cSmrg cpu=m68000 82426df5c7cSmrg vendor=convergent 825a1d141d5Smrg ;; 82626df5c7cSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82726df5c7cSmrg cpu=m68k 82826df5c7cSmrg vendor=atari 82926df5c7cSmrg basic_os=mint 830a1d141d5Smrg ;; 831a1d141d5Smrg news-3600 | risc-news) 83226df5c7cSmrg cpu=mips 83326df5c7cSmrg vendor=sony 83426df5c7cSmrg basic_os=newsos 835a1d141d5Smrg ;; 836054b3d00Smrg next | m*-next) 83726df5c7cSmrg cpu=m68k 83826df5c7cSmrg vendor=next 83926df5c7cSmrg case $basic_os in 84026df5c7cSmrg openstep*) 84126df5c7cSmrg ;; 84226df5c7cSmrg nextstep*) 843a1d141d5Smrg ;; 84426df5c7cSmrg ns2*) 84526df5c7cSmrg basic_os=nextstep2 846a1d141d5Smrg ;; 847a1d141d5Smrg *) 84826df5c7cSmrg basic_os=nextstep3 849a1d141d5Smrg ;; 850a1d141d5Smrg esac 851a1d141d5Smrg ;; 852a1d141d5Smrg np1) 85326df5c7cSmrg cpu=np1 85426df5c7cSmrg vendor=gould 855054b3d00Smrg ;; 856a1d141d5Smrg op50n-* | op60c-*) 85726df5c7cSmrg cpu=hppa1.1 85826df5c7cSmrg vendor=oki 85926df5c7cSmrg basic_os=proelf 860a1d141d5Smrg ;; 861a1d141d5Smrg pa-hitachi) 86226df5c7cSmrg cpu=hppa1.1 86326df5c7cSmrg vendor=hitachi 86426df5c7cSmrg basic_os=hiuxwe2 8652ddb6cf1Smrg ;; 866a1d141d5Smrg pbd) 86726df5c7cSmrg cpu=sparc 86826df5c7cSmrg vendor=tti 869a1d141d5Smrg ;; 870a1d141d5Smrg pbb) 87126df5c7cSmrg cpu=m68k 87226df5c7cSmrg vendor=tti 8732ddb6cf1Smrg ;; 87426df5c7cSmrg pc532) 87526df5c7cSmrg cpu=ns32k 87626df5c7cSmrg vendor=pc532 877a1d141d5Smrg ;; 878a1d141d5Smrg pn) 87926df5c7cSmrg cpu=pn 88026df5c7cSmrg vendor=gould 881a1d141d5Smrg ;; 88226df5c7cSmrg power) 88326df5c7cSmrg cpu=power 88426df5c7cSmrg vendor=ibm 885a1d141d5Smrg ;; 88626df5c7cSmrg ps2) 88726df5c7cSmrg cpu=i386 88826df5c7cSmrg vendor=ibm 889a1d141d5Smrg ;; 89026df5c7cSmrg rm[46]00) 89126df5c7cSmrg cpu=mips 89226df5c7cSmrg vendor=siemens 893a1d141d5Smrg ;; 89426df5c7cSmrg rtpc | rtpc-*) 89526df5c7cSmrg cpu=romp 89626df5c7cSmrg vendor=ibm 897a1d141d5Smrg ;; 89826df5c7cSmrg sde) 89926df5c7cSmrg cpu=mipsisa32 90026df5c7cSmrg vendor=sde 90126df5c7cSmrg basic_os=${basic_os:-elf} 902a1d141d5Smrg ;; 90326df5c7cSmrg simso-wrs) 90426df5c7cSmrg cpu=sparclite 90526df5c7cSmrg vendor=wrs 90626df5c7cSmrg basic_os=vxworks 907a1d141d5Smrg ;; 90826df5c7cSmrg tower | tower-32) 90926df5c7cSmrg cpu=m68k 91026df5c7cSmrg vendor=ncr 911a1d141d5Smrg ;; 91226df5c7cSmrg vpp*|vx|vx-*) 91326df5c7cSmrg cpu=f301 91426df5c7cSmrg vendor=fujitsu 915054b3d00Smrg ;; 91626df5c7cSmrg w65) 91726df5c7cSmrg cpu=w65 91826df5c7cSmrg vendor=wdc 9192ddb6cf1Smrg ;; 92026df5c7cSmrg w89k-*) 92126df5c7cSmrg cpu=hppa1.1 92226df5c7cSmrg vendor=winbond 92326df5c7cSmrg basic_os=proelf 924a1d141d5Smrg ;; 92526df5c7cSmrg none) 92626df5c7cSmrg cpu=none 92726df5c7cSmrg vendor=none 928a1d141d5Smrg ;; 92926df5c7cSmrg leon|leon[3-9]) 93026df5c7cSmrg cpu=sparc 93126df5c7cSmrg vendor=$basic_machine 932a1d141d5Smrg ;; 93326df5c7cSmrg leon-*|leon[3-9]-*) 93426df5c7cSmrg cpu=sparc 93526df5c7cSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9362ddb6cf1Smrg ;; 93726df5c7cSmrg 93826df5c7cSmrg *-*) 93926df5c7cSmrg # shellcheck disable=SC2162 9403bee1c92Smrg saved_IFS=$IFS 94126df5c7cSmrg IFS="-" read cpu vendor <<EOF 94226df5c7cSmrg$basic_machine 94326df5c7cSmrgEOF 9443bee1c92Smrg IFS=$saved_IFS 9452ddb6cf1Smrg ;; 94626df5c7cSmrg # We use `pc' rather than `unknown' 94726df5c7cSmrg # because (1) that's what they normally are, and 94826df5c7cSmrg # (2) the word "unknown" tends to confuse beginning users. 94926df5c7cSmrg i*86 | x86_64) 95026df5c7cSmrg cpu=$basic_machine 95126df5c7cSmrg vendor=pc 952a1d141d5Smrg ;; 95326df5c7cSmrg # These rules are duplicated from below for sake of the special case above; 95426df5c7cSmrg # i.e. things that normalized to x86 arches should also default to "pc" 95526df5c7cSmrg pc98) 95626df5c7cSmrg cpu=i386 95726df5c7cSmrg vendor=pc 958a1d141d5Smrg ;; 95926df5c7cSmrg x64 | amd64) 96026df5c7cSmrg cpu=x86_64 96126df5c7cSmrg vendor=pc 962a1d141d5Smrg ;; 96326df5c7cSmrg # Recognize the basic CPU types without company name. 96426df5c7cSmrg *) 96526df5c7cSmrg cpu=$basic_machine 96626df5c7cSmrg vendor=unknown 9672ddb6cf1Smrg ;; 96826df5c7cSmrgesac 96926df5c7cSmrg 97026df5c7cSmrgunset -v basic_machine 97126df5c7cSmrg 97226df5c7cSmrg# Decode basic machines in the full and proper CPU-Company form. 97326df5c7cSmrgcase $cpu-$vendor in 97426df5c7cSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97526df5c7cSmrg # some cases the only manufacturer, in others, it is the most popular. 97626df5c7cSmrg craynv-unknown) 97726df5c7cSmrg vendor=cray 97826df5c7cSmrg basic_os=${basic_os:-unicosmp} 979a1d141d5Smrg ;; 98026df5c7cSmrg c90-unknown | c90-cray) 98126df5c7cSmrg vendor=cray 98226df5c7cSmrg basic_os=${Basic_os:-unicos} 983a1d141d5Smrg ;; 98426df5c7cSmrg fx80-unknown) 98526df5c7cSmrg vendor=alliant 9862ddb6cf1Smrg ;; 98726df5c7cSmrg romp-unknown) 98826df5c7cSmrg vendor=ibm 989a1d141d5Smrg ;; 99026df5c7cSmrg mmix-unknown) 99126df5c7cSmrg vendor=knuth 992a1d141d5Smrg ;; 99326df5c7cSmrg microblaze-unknown | microblazeel-unknown) 99426df5c7cSmrg vendor=xilinx 995a1d141d5Smrg ;; 99626df5c7cSmrg rs6000-unknown) 99726df5c7cSmrg vendor=ibm 998a1d141d5Smrg ;; 99926df5c7cSmrg vax-unknown) 100026df5c7cSmrg vendor=dec 1001a1d141d5Smrg ;; 100226df5c7cSmrg pdp11-unknown) 100326df5c7cSmrg vendor=dec 1004054b3d00Smrg ;; 100526df5c7cSmrg we32k-unknown) 100626df5c7cSmrg vendor=att 1007a1d141d5Smrg ;; 100826df5c7cSmrg cydra-unknown) 100926df5c7cSmrg vendor=cydrome 1010a1d141d5Smrg ;; 101126df5c7cSmrg i370-ibm*) 101226df5c7cSmrg vendor=ibm 1013a1d141d5Smrg ;; 101426df5c7cSmrg orion-unknown) 101526df5c7cSmrg vendor=highlevel 1016a1d141d5Smrg ;; 101726df5c7cSmrg xps-unknown | xps100-unknown) 101826df5c7cSmrg cpu=xps100 101926df5c7cSmrg vendor=honeywell 1020a1d141d5Smrg ;; 102126df5c7cSmrg 102226df5c7cSmrg # Here we normalize CPU types with a missing or matching vendor 10233bee1c92Smrg armh-unknown | armh-alt) 10243bee1c92Smrg cpu=armv7l 10253bee1c92Smrg vendor=alt 10263bee1c92Smrg basic_os=${basic_os:-linux-gnueabihf} 10273bee1c92Smrg ;; 102826df5c7cSmrg dpx20-unknown | dpx20-bull) 102926df5c7cSmrg cpu=rs6000 103026df5c7cSmrg vendor=bull 103126df5c7cSmrg basic_os=${basic_os:-bosx} 1032a1d141d5Smrg ;; 103326df5c7cSmrg 103426df5c7cSmrg # Here we normalize CPU types irrespective of the vendor 103526df5c7cSmrg amd64-*) 103626df5c7cSmrg cpu=x86_64 1037a1d141d5Smrg ;; 103826df5c7cSmrg blackfin-*) 103926df5c7cSmrg cpu=bfin 104026df5c7cSmrg basic_os=linux 1041a1d141d5Smrg ;; 104226df5c7cSmrg c54x-*) 104326df5c7cSmrg cpu=tic54x 1044a1d141d5Smrg ;; 104526df5c7cSmrg c55x-*) 104626df5c7cSmrg cpu=tic55x 1047a1d141d5Smrg ;; 104826df5c7cSmrg c6x-*) 104926df5c7cSmrg cpu=tic6x 1050a1d141d5Smrg ;; 105126df5c7cSmrg e500v[12]-*) 105226df5c7cSmrg cpu=powerpc 105326df5c7cSmrg basic_os=${basic_os}"spe" 1054a1d141d5Smrg ;; 105526df5c7cSmrg mips3*-*) 105626df5c7cSmrg cpu=mips64 1057a1d141d5Smrg ;; 105826df5c7cSmrg ms1-*) 105926df5c7cSmrg cpu=mt 1060a1d141d5Smrg ;; 106126df5c7cSmrg m68knommu-*) 106226df5c7cSmrg cpu=m68k 106326df5c7cSmrg basic_os=linux 1064a1d141d5Smrg ;; 106526df5c7cSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106626df5c7cSmrg cpu=s12z 10672ddb6cf1Smrg ;; 106826df5c7cSmrg openrisc-*) 106926df5c7cSmrg cpu=or32 1070a1d141d5Smrg ;; 107126df5c7cSmrg parisc-*) 107226df5c7cSmrg cpu=hppa 107326df5c7cSmrg basic_os=linux 1074a1d141d5Smrg ;; 107526df5c7cSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107626df5c7cSmrg cpu=i586 1077a1d141d5Smrg ;; 10783bee1c92Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 107926df5c7cSmrg cpu=i686 1080a1d141d5Smrg ;; 108126df5c7cSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 108226df5c7cSmrg cpu=i686 10832ddb6cf1Smrg ;; 108426df5c7cSmrg pentium4-*) 108526df5c7cSmrg cpu=i786 1086a1d141d5Smrg ;; 108726df5c7cSmrg pc98-*) 108826df5c7cSmrg cpu=i386 1089a1d141d5Smrg ;; 109026df5c7cSmrg ppc-* | ppcbe-*) 109126df5c7cSmrg cpu=powerpc 1092a1d141d5Smrg ;; 109326df5c7cSmrg ppcle-* | powerpclittle-*) 109426df5c7cSmrg cpu=powerpcle 1095a1d141d5Smrg ;; 109626df5c7cSmrg ppc64-*) 109726df5c7cSmrg cpu=powerpc64 1098a1d141d5Smrg ;; 109926df5c7cSmrg ppc64le-* | powerpc64little-*) 110026df5c7cSmrg cpu=powerpc64le 1101a1d141d5Smrg ;; 110226df5c7cSmrg sb1-*) 110326df5c7cSmrg cpu=mipsisa64sb1 1104a1d141d5Smrg ;; 110526df5c7cSmrg sb1el-*) 110626df5c7cSmrg cpu=mipsisa64sb1el 1107a1d141d5Smrg ;; 110826df5c7cSmrg sh5e[lb]-*) 110926df5c7cSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1110a1d141d5Smrg ;; 111126df5c7cSmrg spur-*) 111226df5c7cSmrg cpu=spur 1113a1d141d5Smrg ;; 111426df5c7cSmrg strongarm-* | thumb-*) 111526df5c7cSmrg cpu=arm 1116a1d141d5Smrg ;; 111726df5c7cSmrg tx39-*) 111826df5c7cSmrg cpu=mipstx39 1119054b3d00Smrg ;; 112026df5c7cSmrg tx39el-*) 112126df5c7cSmrg cpu=mipstx39el 11222ddb6cf1Smrg ;; 112326df5c7cSmrg x64-*) 112426df5c7cSmrg cpu=x86_64 1125a1d141d5Smrg ;; 1126054b3d00Smrg xscale-* | xscalee[bl]-*) 112726df5c7cSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1128054b3d00Smrg ;; 11293bee1c92Smrg arm64-* | aarch64le-*) 113026df5c7cSmrg cpu=aarch64 1131a1d141d5Smrg ;; 1132a1d141d5Smrg 113326df5c7cSmrg # Recognize the canonical CPU Types that limit and/or modify the 113426df5c7cSmrg # company names they are paired with. 113526df5c7cSmrg cr16-*) 113626df5c7cSmrg basic_os=${basic_os:-elf} 1137a1d141d5Smrg ;; 113826df5c7cSmrg crisv32-* | etraxfs*-*) 113926df5c7cSmrg cpu=crisv32 114026df5c7cSmrg vendor=axis 11412ddb6cf1Smrg ;; 114226df5c7cSmrg cris-* | etrax*-*) 114326df5c7cSmrg cpu=cris 114426df5c7cSmrg vendor=axis 1145a1d141d5Smrg ;; 114626df5c7cSmrg crx-*) 114726df5c7cSmrg basic_os=${basic_os:-elf} 1148a1d141d5Smrg ;; 114926df5c7cSmrg neo-tandem) 115026df5c7cSmrg cpu=neo 115126df5c7cSmrg vendor=tandem 1152a1d141d5Smrg ;; 115326df5c7cSmrg nse-tandem) 115426df5c7cSmrg cpu=nse 115526df5c7cSmrg vendor=tandem 1156a1d141d5Smrg ;; 115726df5c7cSmrg nsr-tandem) 115826df5c7cSmrg cpu=nsr 115926df5c7cSmrg vendor=tandem 1160a1d141d5Smrg ;; 116126df5c7cSmrg nsv-tandem) 116226df5c7cSmrg cpu=nsv 116326df5c7cSmrg vendor=tandem 1164a1d141d5Smrg ;; 116526df5c7cSmrg nsx-tandem) 116626df5c7cSmrg cpu=nsx 116726df5c7cSmrg vendor=tandem 1168a1d141d5Smrg ;; 116926df5c7cSmrg mipsallegrexel-sony) 117026df5c7cSmrg cpu=mipsallegrexel 117126df5c7cSmrg vendor=sony 1172a1d141d5Smrg ;; 117326df5c7cSmrg tile*-*) 117426df5c7cSmrg basic_os=${basic_os:-linux-gnu} 1175a1d141d5Smrg ;; 117626df5c7cSmrg 1177a1d141d5Smrg *) 117826df5c7cSmrg # Recognize the canonical CPU types that are allowed with any 117926df5c7cSmrg # company name. 118026df5c7cSmrg case $cpu in 118126df5c7cSmrg 1750a | 580 \ 118226df5c7cSmrg | a29k \ 118326df5c7cSmrg | aarch64 | aarch64_be \ 118426df5c7cSmrg | abacus \ 118526df5c7cSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118626df5c7cSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118726df5c7cSmrg | alphapca5[67] | alpha64pca5[67] \ 118826df5c7cSmrg | am33_2.0 \ 118926df5c7cSmrg | amdgcn \ 119026df5c7cSmrg | arc | arceb | arc32 | arc64 \ 119126df5c7cSmrg | arm | arm[lb]e | arme[lb] | armv* \ 119226df5c7cSmrg | avr | avr32 \ 119326df5c7cSmrg | asmjs \ 119426df5c7cSmrg | ba \ 119526df5c7cSmrg | be32 | be64 \ 119626df5c7cSmrg | bfin | bpf | bs2000 \ 119726df5c7cSmrg | c[123]* | c30 | [cjt]90 | c4x \ 119826df5c7cSmrg | c8051 | clipper | craynv | csky | cydra \ 119926df5c7cSmrg | d10v | d30v | dlx | dsp16xx \ 120026df5c7cSmrg | e2k | elxsi | epiphany \ 120126df5c7cSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 120226df5c7cSmrg | h8300 | h8500 \ 120326df5c7cSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 120426df5c7cSmrg | hexagon \ 120526df5c7cSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120626df5c7cSmrg | ip2k | iq2000 \ 120726df5c7cSmrg | k1om \ 120826df5c7cSmrg | le32 | le64 \ 120926df5c7cSmrg | lm32 \ 12103bee1c92Smrg | loongarch32 | loongarch64 \ 121126df5c7cSmrg | m32c | m32r | m32rle \ 121226df5c7cSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 121326df5c7cSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 121426df5c7cSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121526df5c7cSmrg | microblaze | microblazeel \ 121626df5c7cSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121726df5c7cSmrg | mips16 \ 121826df5c7cSmrg | mips64 | mips64eb | mips64el \ 121926df5c7cSmrg | mips64octeon | mips64octeonel \ 122026df5c7cSmrg | mips64orion | mips64orionel \ 122126df5c7cSmrg | mips64r5900 | mips64r5900el \ 122226df5c7cSmrg | mips64vr | mips64vrel \ 122326df5c7cSmrg | mips64vr4100 | mips64vr4100el \ 122426df5c7cSmrg | mips64vr4300 | mips64vr4300el \ 122526df5c7cSmrg | mips64vr5000 | mips64vr5000el \ 122626df5c7cSmrg | mips64vr5900 | mips64vr5900el \ 122726df5c7cSmrg | mipsisa32 | mipsisa32el \ 122826df5c7cSmrg | mipsisa32r2 | mipsisa32r2el \ 122926df5c7cSmrg | mipsisa32r3 | mipsisa32r3el \ 123026df5c7cSmrg | mipsisa32r5 | mipsisa32r5el \ 123126df5c7cSmrg | mipsisa32r6 | mipsisa32r6el \ 123226df5c7cSmrg | mipsisa64 | mipsisa64el \ 123326df5c7cSmrg | mipsisa64r2 | mipsisa64r2el \ 123426df5c7cSmrg | mipsisa64r3 | mipsisa64r3el \ 123526df5c7cSmrg | mipsisa64r5 | mipsisa64r5el \ 123626df5c7cSmrg | mipsisa64r6 | mipsisa64r6el \ 123726df5c7cSmrg | mipsisa64sb1 | mipsisa64sb1el \ 123826df5c7cSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 123926df5c7cSmrg | mipsr5900 | mipsr5900el \ 124026df5c7cSmrg | mipstx39 | mipstx39el \ 124126df5c7cSmrg | mmix \ 124226df5c7cSmrg | mn10200 | mn10300 \ 124326df5c7cSmrg | moxie \ 124426df5c7cSmrg | mt \ 124526df5c7cSmrg | msp430 \ 124626df5c7cSmrg | nds32 | nds32le | nds32be \ 124726df5c7cSmrg | nfp \ 124826df5c7cSmrg | nios | nios2 | nios2eb | nios2el \ 124926df5c7cSmrg | none | np1 | ns16k | ns32k | nvptx \ 125026df5c7cSmrg | open8 \ 125126df5c7cSmrg | or1k* \ 125226df5c7cSmrg | or32 \ 125326df5c7cSmrg | orion \ 125426df5c7cSmrg | picochip \ 125526df5c7cSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125626df5c7cSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125726df5c7cSmrg | pru \ 125826df5c7cSmrg | pyramid \ 125926df5c7cSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 126026df5c7cSmrg | rl78 | romp | rs6000 | rx \ 126126df5c7cSmrg | s390 | s390x \ 126226df5c7cSmrg | score \ 126326df5c7cSmrg | sh | shl \ 126426df5c7cSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126526df5c7cSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126626df5c7cSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126726df5c7cSmrg | sparclite \ 126826df5c7cSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126926df5c7cSmrg | spu \ 127026df5c7cSmrg | tahoe \ 127126df5c7cSmrg | thumbv7* \ 127226df5c7cSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 127326df5c7cSmrg | tron \ 127426df5c7cSmrg | ubicom32 \ 127526df5c7cSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127626df5c7cSmrg | vax \ 127726df5c7cSmrg | visium \ 127826df5c7cSmrg | w65 \ 127926df5c7cSmrg | wasm32 | wasm64 \ 128026df5c7cSmrg | we32k \ 128126df5c7cSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 128226df5c7cSmrg | xstormy16 | xtensa* \ 128326df5c7cSmrg | ymp \ 128426df5c7cSmrg | z8k | z80) 128526df5c7cSmrg ;; 128626df5c7cSmrg 128726df5c7cSmrg *) 128826df5c7cSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128926df5c7cSmrg exit 1 129026df5c7cSmrg ;; 129126df5c7cSmrg esac 1292a1d141d5Smrg ;; 1293a1d141d5Smrgesac 1294a1d141d5Smrg 1295a1d141d5Smrg# Here we canonicalize certain aliases for manufacturers. 129626df5c7cSmrgcase $vendor in 129726df5c7cSmrg digital*) 129826df5c7cSmrg vendor=dec 1299a1d141d5Smrg ;; 130026df5c7cSmrg commodore*) 130126df5c7cSmrg vendor=cbm 1302a1d141d5Smrg ;; 1303a1d141d5Smrg *) 1304a1d141d5Smrg ;; 1305a1d141d5Smrgesac 1306a1d141d5Smrg 1307a1d141d5Smrg# Decode manufacturer-specific aliases for certain operating systems. 1308a1d141d5Smrg 130926df5c7cSmrgif test x$basic_os != x 1310a1d141d5Smrgthen 131126df5c7cSmrg 13123bee1c92Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 131326df5c7cSmrg# set os. 131426df5c7cSmrgcase $basic_os in 131526df5c7cSmrg gnu/linux*) 131626df5c7cSmrg kernel=linux 131726df5c7cSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131826df5c7cSmrg ;; 131926df5c7cSmrg os2-emx) 132026df5c7cSmrg kernel=os2 132126df5c7cSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 132226df5c7cSmrg ;; 132326df5c7cSmrg nto-qnx*) 132426df5c7cSmrg kernel=nto 132526df5c7cSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132626df5c7cSmrg ;; 132726df5c7cSmrg *-*) 132826df5c7cSmrg # shellcheck disable=SC2162 13293bee1c92Smrg saved_IFS=$IFS 133026df5c7cSmrg IFS="-" read kernel os <<EOF 133126df5c7cSmrg$basic_os 133226df5c7cSmrgEOF 13333bee1c92Smrg IFS=$saved_IFS 133426df5c7cSmrg ;; 133526df5c7cSmrg # Default OS when just kernel was specified 133626df5c7cSmrg nto*) 133726df5c7cSmrg kernel=nto 133826df5c7cSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133926df5c7cSmrg ;; 134026df5c7cSmrg linux*) 134126df5c7cSmrg kernel=linux 134226df5c7cSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 134326df5c7cSmrg ;; 13443bee1c92Smrg managarm*) 13453bee1c92Smrg kernel=managarm 13463bee1c92Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 13473bee1c92Smrg ;; 134826df5c7cSmrg *) 134926df5c7cSmrg kernel= 135026df5c7cSmrg os=$basic_os 135126df5c7cSmrg ;; 135226df5c7cSmrgesac 135326df5c7cSmrg 135426df5c7cSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 135526df5c7cSmrg# etc.) 1356a1d141d5Smrgcase $os in 1357054b3d00Smrg # First match some system type aliases that might get confused 1358054b3d00Smrg # with valid system types. 135926df5c7cSmrg # solaris* is a basic system type, with this one exception. 136026df5c7cSmrg auroraux) 136126df5c7cSmrg os=auroraux 136255074dd0Smrg ;; 136326df5c7cSmrg bluegene*) 136426df5c7cSmrg os=cnk 1365a1d141d5Smrg ;; 136626df5c7cSmrg solaris1 | solaris1.*) 136726df5c7cSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1368a1d141d5Smrg ;; 136926df5c7cSmrg solaris) 137026df5c7cSmrg os=solaris2 1371a1d141d5Smrg ;; 137226df5c7cSmrg unixware*) 137326df5c7cSmrg os=sysv4.2uw 1374a1d141d5Smrg ;; 1375054b3d00Smrg # es1800 is here to avoid being matched by es* (a different OS) 137626df5c7cSmrg es1800*) 137726df5c7cSmrg os=ose 1378054b3d00Smrg ;; 137926df5c7cSmrg # Some version numbers need modification 138026df5c7cSmrg chorusos*) 138126df5c7cSmrg os=chorusos 1382a1d141d5Smrg ;; 138326df5c7cSmrg isc) 138426df5c7cSmrg os=isc2.2 1385a1d141d5Smrg ;; 138626df5c7cSmrg sco6) 138726df5c7cSmrg os=sco5v6 1388a1d141d5Smrg ;; 138926df5c7cSmrg sco5) 139026df5c7cSmrg os=sco3.2v5 1391a1d141d5Smrg ;; 139226df5c7cSmrg sco4) 139326df5c7cSmrg os=sco3.2v4 1394a1d141d5Smrg ;; 139526df5c7cSmrg sco3.2.[4-9]*) 139626df5c7cSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13972ddb6cf1Smrg ;; 139826df5c7cSmrg sco*v* | scout) 139926df5c7cSmrg # Don't match below 1400a1d141d5Smrg ;; 140126df5c7cSmrg sco*) 140226df5c7cSmrg os=sco3.2v2 1403a1d141d5Smrg ;; 140426df5c7cSmrg psos*) 140526df5c7cSmrg os=psos 1406a1d141d5Smrg ;; 140726df5c7cSmrg qnx*) 140826df5c7cSmrg os=qnx 1409a1d141d5Smrg ;; 141026df5c7cSmrg hiux*) 141126df5c7cSmrg os=hiuxwe2 14122ddb6cf1Smrg ;; 141326df5c7cSmrg lynx*178) 141426df5c7cSmrg os=lynxos178 1415a1d141d5Smrg ;; 141626df5c7cSmrg lynx*5) 141726df5c7cSmrg os=lynxos5 1418a1d141d5Smrg ;; 141926df5c7cSmrg lynxos*) 142026df5c7cSmrg # don't get caught up in next wildcard 1421a1d141d5Smrg ;; 142226df5c7cSmrg lynx*) 142326df5c7cSmrg os=lynxos 1424a1d141d5Smrg ;; 142526df5c7cSmrg mac[0-9]*) 142626df5c7cSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 1427a1d141d5Smrg ;; 142826df5c7cSmrg opened*) 142926df5c7cSmrg os=openedition 14302ddb6cf1Smrg ;; 143126df5c7cSmrg os400*) 143226df5c7cSmrg os=os400 1433a1d141d5Smrg ;; 143426df5c7cSmrg sunos5*) 143526df5c7cSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1436a1d141d5Smrg ;; 143726df5c7cSmrg sunos6*) 143826df5c7cSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1439a1d141d5Smrg ;; 144026df5c7cSmrg wince*) 144126df5c7cSmrg os=wince 1442a1d141d5Smrg ;; 144326df5c7cSmrg utek*) 144426df5c7cSmrg os=bsd 1445a1d141d5Smrg ;; 144626df5c7cSmrg dynix*) 144726df5c7cSmrg os=bsd 1448a1d141d5Smrg ;; 144926df5c7cSmrg acis*) 145026df5c7cSmrg os=aos 1451a1d141d5Smrg ;; 145226df5c7cSmrg atheos*) 145326df5c7cSmrg os=atheos 14542ddb6cf1Smrg ;; 145526df5c7cSmrg syllable*) 145626df5c7cSmrg os=syllable 1457a1d141d5Smrg ;; 145826df5c7cSmrg 386bsd) 145926df5c7cSmrg os=bsd 1460a1d141d5Smrg ;; 146126df5c7cSmrg ctix* | uts*) 146226df5c7cSmrg os=sysv 1463a1d141d5Smrg ;; 146426df5c7cSmrg nova*) 146526df5c7cSmrg os=rtmk-nova 1466a1d141d5Smrg ;; 146726df5c7cSmrg ns2) 146826df5c7cSmrg os=nextstep2 1469a1d141d5Smrg ;; 147026df5c7cSmrg # Preserve the version number of sinix5. 147126df5c7cSmrg sinix5.*) 147226df5c7cSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1473a1d141d5Smrg ;; 147426df5c7cSmrg sinix*) 147526df5c7cSmrg os=sysv4 1476a1d141d5Smrg ;; 147726df5c7cSmrg tpf*) 147826df5c7cSmrg os=tpf 1479a1d141d5Smrg ;; 148026df5c7cSmrg triton*) 148126df5c7cSmrg os=sysv3 14822ddb6cf1Smrg ;; 148326df5c7cSmrg oss*) 148426df5c7cSmrg os=sysv3 14852ddb6cf1Smrg ;; 148626df5c7cSmrg svr4*) 148726df5c7cSmrg os=sysv4 148826df5c7cSmrg ;; 148926df5c7cSmrg svr3) 149026df5c7cSmrg os=sysv3 149126df5c7cSmrg ;; 149226df5c7cSmrg sysvr4) 149326df5c7cSmrg os=sysv4 149426df5c7cSmrg ;; 149526df5c7cSmrg ose*) 149626df5c7cSmrg os=ose 149726df5c7cSmrg ;; 149826df5c7cSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149926df5c7cSmrg os=mint 150026df5c7cSmrg ;; 150126df5c7cSmrg dicos*) 150226df5c7cSmrg os=dicos 150326df5c7cSmrg ;; 150426df5c7cSmrg pikeos*) 1505054b3d00Smrg # Until real need of OS specific support for 1506054b3d00Smrg # particular features comes up, bare metal 1507054b3d00Smrg # configurations are quite functional. 150826df5c7cSmrg case $cpu in 1509054b3d00Smrg arm*) 151026df5c7cSmrg os=eabi 1511054b3d00Smrg ;; 1512054b3d00Smrg *) 151326df5c7cSmrg os=elf 1514054b3d00Smrg ;; 1515054b3d00Smrg esac 1516054b3d00Smrg ;; 1517a1d141d5Smrg *) 151826df5c7cSmrg # No normalization, but not necessarily accepted, that comes below. 1519a1d141d5Smrg ;; 1520a1d141d5Smrgesac 152126df5c7cSmrg 1522a1d141d5Smrgelse 1523a1d141d5Smrg 1524a1d141d5Smrg# Here we handle the default operating systems that come with various machines. 1525a1d141d5Smrg# The value should be what the vendor currently ships out the door with their 1526a1d141d5Smrg# machine or put another way, the most popular os provided with the machine. 1527a1d141d5Smrg 1528a1d141d5Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1529a1d141d5Smrg# "-sun"), then you have to tell the case statement up towards the top 1530a1d141d5Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1531a1d141d5Smrg# will signal an error saying that MANUFACTURER isn't an operating 1532a1d141d5Smrg# system, and we'll never get to this point. 1533a1d141d5Smrg 153426df5c7cSmrgkernel= 153526df5c7cSmrgcase $cpu-$vendor in 1536054b3d00Smrg score-*) 153726df5c7cSmrg os=elf 15382ddb6cf1Smrg ;; 1539054b3d00Smrg spu-*) 154026df5c7cSmrg os=elf 15412ddb6cf1Smrg ;; 1542a1d141d5Smrg *-acorn) 154326df5c7cSmrg os=riscix1.2 1544a1d141d5Smrg ;; 1545a1d141d5Smrg arm*-rebel) 154626df5c7cSmrg kernel=linux 154726df5c7cSmrg os=gnu 1548a1d141d5Smrg ;; 1549a1d141d5Smrg arm*-semi) 155026df5c7cSmrg os=aout 1551a1d141d5Smrg ;; 1552054b3d00Smrg c4x-* | tic4x-*) 155326df5c7cSmrg os=coff 1554054b3d00Smrg ;; 1555054b3d00Smrg c8051-*) 155626df5c7cSmrg os=elf 155726df5c7cSmrg ;; 155826df5c7cSmrg clipper-intergraph) 155926df5c7cSmrg os=clix 1560054b3d00Smrg ;; 1561054b3d00Smrg hexagon-*) 156226df5c7cSmrg os=elf 1563a1d141d5Smrg ;; 156455074dd0Smrg tic54x-*) 156526df5c7cSmrg os=coff 156655074dd0Smrg ;; 156755074dd0Smrg tic55x-*) 156826df5c7cSmrg os=coff 156955074dd0Smrg ;; 157055074dd0Smrg tic6x-*) 157126df5c7cSmrg os=coff 157255074dd0Smrg ;; 1573a1d141d5Smrg # This must come before the *-dec entry. 1574a1d141d5Smrg pdp10-*) 157526df5c7cSmrg os=tops20 1576a1d141d5Smrg ;; 1577a1d141d5Smrg pdp11-*) 157826df5c7cSmrg os=none 1579a1d141d5Smrg ;; 1580a1d141d5Smrg *-dec | vax-*) 158126df5c7cSmrg os=ultrix4.2 1582a1d141d5Smrg ;; 1583a1d141d5Smrg m68*-apollo) 158426df5c7cSmrg os=domain 1585a1d141d5Smrg ;; 1586a1d141d5Smrg i386-sun) 158726df5c7cSmrg os=sunos4.0.2 1588a1d141d5Smrg ;; 1589a1d141d5Smrg m68000-sun) 159026df5c7cSmrg os=sunos3 1591a1d141d5Smrg ;; 1592a1d141d5Smrg m68*-cisco) 159326df5c7cSmrg os=aout 1594a1d141d5Smrg ;; 1595054b3d00Smrg mep-*) 159626df5c7cSmrg os=elf 15972ddb6cf1Smrg ;; 1598a1d141d5Smrg mips*-cisco) 159926df5c7cSmrg os=elf 1600a1d141d5Smrg ;; 1601a1d141d5Smrg mips*-*) 160226df5c7cSmrg os=elf 1603a1d141d5Smrg ;; 1604a1d141d5Smrg or32-*) 160526df5c7cSmrg os=coff 1606a1d141d5Smrg ;; 1607a1d141d5Smrg *-tti) # must be before sparc entry or we get the wrong os. 160826df5c7cSmrg os=sysv3 1609a1d141d5Smrg ;; 1610a1d141d5Smrg sparc-* | *-sun) 161126df5c7cSmrg os=sunos4.1.1 1612a1d141d5Smrg ;; 1613054b3d00Smrg pru-*) 161426df5c7cSmrg os=elf 1615054b3d00Smrg ;; 1616a1d141d5Smrg *-be) 161726df5c7cSmrg os=beos 1618a1d141d5Smrg ;; 1619a1d141d5Smrg *-ibm) 162026df5c7cSmrg os=aix 1621a1d141d5Smrg ;; 1622054b3d00Smrg *-knuth) 162326df5c7cSmrg os=mmixware 16242ddb6cf1Smrg ;; 1625a1d141d5Smrg *-wec) 162626df5c7cSmrg os=proelf 1627a1d141d5Smrg ;; 1628a1d141d5Smrg *-winbond) 162926df5c7cSmrg os=proelf 1630a1d141d5Smrg ;; 1631a1d141d5Smrg *-oki) 163226df5c7cSmrg os=proelf 1633a1d141d5Smrg ;; 1634a1d141d5Smrg *-hp) 163526df5c7cSmrg os=hpux 1636a1d141d5Smrg ;; 1637a1d141d5Smrg *-hitachi) 163826df5c7cSmrg os=hiux 1639a1d141d5Smrg ;; 1640a1d141d5Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 164126df5c7cSmrg os=sysv 1642a1d141d5Smrg ;; 1643a1d141d5Smrg *-cbm) 164426df5c7cSmrg os=amigaos 1645a1d141d5Smrg ;; 1646a1d141d5Smrg *-dg) 164726df5c7cSmrg os=dgux 1648a1d141d5Smrg ;; 1649a1d141d5Smrg *-dolphin) 165026df5c7cSmrg os=sysv3 1651a1d141d5Smrg ;; 1652a1d141d5Smrg m68k-ccur) 165326df5c7cSmrg os=rtu 1654a1d141d5Smrg ;; 1655a1d141d5Smrg m88k-omron*) 165626df5c7cSmrg os=luna 1657a1d141d5Smrg ;; 1658054b3d00Smrg *-next) 165926df5c7cSmrg os=nextstep 1660a1d141d5Smrg ;; 1661a1d141d5Smrg *-sequent) 166226df5c7cSmrg os=ptx 1663a1d141d5Smrg ;; 1664a1d141d5Smrg *-crds) 166526df5c7cSmrg os=unos 1666a1d141d5Smrg ;; 1667a1d141d5Smrg *-ns) 166826df5c7cSmrg os=genix 1669a1d141d5Smrg ;; 1670a1d141d5Smrg i370-*) 167126df5c7cSmrg os=mvs 1672a1d141d5Smrg ;; 1673a1d141d5Smrg *-gould) 167426df5c7cSmrg os=sysv 1675a1d141d5Smrg ;; 1676a1d141d5Smrg *-highlevel) 167726df5c7cSmrg os=bsd 1678a1d141d5Smrg ;; 1679a1d141d5Smrg *-encore) 168026df5c7cSmrg os=bsd 1681a1d141d5Smrg ;; 1682a1d141d5Smrg *-sgi) 168326df5c7cSmrg os=irix 1684a1d141d5Smrg ;; 1685a1d141d5Smrg *-siemens) 168626df5c7cSmrg os=sysv4 1687a1d141d5Smrg ;; 1688a1d141d5Smrg *-masscomp) 168926df5c7cSmrg os=rtu 1690a1d141d5Smrg ;; 1691a1d141d5Smrg f30[01]-fujitsu | f700-fujitsu) 169226df5c7cSmrg os=uxpv 1693a1d141d5Smrg ;; 1694a1d141d5Smrg *-rom68k) 169526df5c7cSmrg os=coff 1696a1d141d5Smrg ;; 1697a1d141d5Smrg *-*bug) 169826df5c7cSmrg os=coff 1699a1d141d5Smrg ;; 1700a1d141d5Smrg *-apple) 170126df5c7cSmrg os=macos 1702a1d141d5Smrg ;; 1703a1d141d5Smrg *-atari*) 170426df5c7cSmrg os=mint 170526df5c7cSmrg ;; 170626df5c7cSmrg *-wrs) 170726df5c7cSmrg os=vxworks 1708a1d141d5Smrg ;; 1709a1d141d5Smrg *) 171026df5c7cSmrg os=none 1711a1d141d5Smrg ;; 1712a1d141d5Smrgesac 171326df5c7cSmrg 1714a1d141d5Smrgfi 1715a1d141d5Smrg 171626df5c7cSmrg# Now, validate our (potentially fixed-up) OS. 171726df5c7cSmrgcase $os in 171826df5c7cSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17193bee1c92Smrg musl* | newlib* | relibc* | uclibc*) 172026df5c7cSmrg ;; 172126df5c7cSmrg # Likewise for "kernel-abi" 172226df5c7cSmrg eabi* | gnueabi*) 172326df5c7cSmrg ;; 172426df5c7cSmrg # VxWorks passes extra cpu info in the 4th filed. 172526df5c7cSmrg simlinux | simwindows | spe) 172626df5c7cSmrg ;; 172726df5c7cSmrg # Now accept the basic system types. 172826df5c7cSmrg # The portable systems comes first. 172926df5c7cSmrg # Each alternative MUST end in a * to match a version number. 173026df5c7cSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 173126df5c7cSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 173226df5c7cSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 173326df5c7cSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 173426df5c7cSmrg | hiux* | abug | nacl* | netware* | windows* \ 173526df5c7cSmrg | os9* | macos* | osx* | ios* \ 173626df5c7cSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 173726df5c7cSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 173826df5c7cSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173926df5c7cSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 174026df5c7cSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 174126df5c7cSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 174226df5c7cSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 174326df5c7cSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 174426df5c7cSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 174526df5c7cSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 174626df5c7cSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 174726df5c7cSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 174826df5c7cSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174926df5c7cSmrg | midipix* | mingw32* | mingw64* | mint* \ 175026df5c7cSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 175126df5c7cSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 175226df5c7cSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 175326df5c7cSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 175426df5c7cSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 175526df5c7cSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 175626df5c7cSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 175726df5c7cSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 175826df5c7cSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175926df5c7cSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17603bee1c92Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 17613bee1c92Smrg | fiwix* | mlibc* ) 176226df5c7cSmrg ;; 176326df5c7cSmrg # This one is extra strict with allowed versions 176426df5c7cSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 176526df5c7cSmrg # Don't forget version if it is 3.2v4 or newer. 176626df5c7cSmrg ;; 176726df5c7cSmrg none) 176826df5c7cSmrg ;; 17693bee1c92Smrg kernel* ) 17703bee1c92Smrg # Restricted further below 17713bee1c92Smrg ;; 177226df5c7cSmrg *) 177326df5c7cSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 177426df5c7cSmrg exit 1 177526df5c7cSmrg ;; 177626df5c7cSmrgesac 177726df5c7cSmrg 177826df5c7cSmrg# As a final step for OS-related things, validate the OS-kernel combination 177926df5c7cSmrg# (given a valid OS), if there is a kernel. 178026df5c7cSmrgcase $kernel-$os in 17813bee1c92Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17823bee1c92Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 178326df5c7cSmrg ;; 178426df5c7cSmrg uclinux-uclibc* ) 178526df5c7cSmrg ;; 17863bee1c92Smrg managarm-mlibc* | managarm-kernel* ) 17873bee1c92Smrg ;; 17883bee1c92Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 178926df5c7cSmrg # These are just libc implementations, not actual OSes, and thus 179026df5c7cSmrg # require a kernel. 179126df5c7cSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 179226df5c7cSmrg exit 1 179326df5c7cSmrg ;; 17943bee1c92Smrg -kernel* ) 17953bee1c92Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 17963bee1c92Smrg exit 1 17973bee1c92Smrg ;; 17983bee1c92Smrg *-kernel* ) 17993bee1c92Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 18003bee1c92Smrg exit 1 18013bee1c92Smrg ;; 180226df5c7cSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 180326df5c7cSmrg ;; 180426df5c7cSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 180526df5c7cSmrg ;; 180626df5c7cSmrg nto-qnx*) 180726df5c7cSmrg ;; 180826df5c7cSmrg os2-emx) 180926df5c7cSmrg ;; 181026df5c7cSmrg *-eabi* | *-gnueabi*) 181126df5c7cSmrg ;; 181226df5c7cSmrg -*) 181326df5c7cSmrg # Blank kernel with real OS is always fine. 181426df5c7cSmrg ;; 181526df5c7cSmrg *-*) 181626df5c7cSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 181726df5c7cSmrg exit 1 181826df5c7cSmrg ;; 181926df5c7cSmrgesac 182026df5c7cSmrg 1821a1d141d5Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1822a1d141d5Smrg# manufacturer. We pick the logical manufacturer. 182326df5c7cSmrgcase $vendor in 182426df5c7cSmrg unknown) 182526df5c7cSmrg case $cpu-$os in 182626df5c7cSmrg *-riscix*) 1827a1d141d5Smrg vendor=acorn 1828a1d141d5Smrg ;; 182926df5c7cSmrg *-sunos*) 1830a1d141d5Smrg vendor=sun 1831a1d141d5Smrg ;; 183226df5c7cSmrg *-cnk* | *-aix*) 1833a1d141d5Smrg vendor=ibm 1834a1d141d5Smrg ;; 183526df5c7cSmrg *-beos*) 1836a1d141d5Smrg vendor=be 1837a1d141d5Smrg ;; 183826df5c7cSmrg *-hpux*) 1839a1d141d5Smrg vendor=hp 1840a1d141d5Smrg ;; 184126df5c7cSmrg *-mpeix*) 1842a1d141d5Smrg vendor=hp 1843a1d141d5Smrg ;; 184426df5c7cSmrg *-hiux*) 1845a1d141d5Smrg vendor=hitachi 1846a1d141d5Smrg ;; 184726df5c7cSmrg *-unos*) 1848a1d141d5Smrg vendor=crds 1849a1d141d5Smrg ;; 185026df5c7cSmrg *-dgux*) 1851a1d141d5Smrg vendor=dg 1852a1d141d5Smrg ;; 185326df5c7cSmrg *-luna*) 1854a1d141d5Smrg vendor=omron 1855a1d141d5Smrg ;; 185626df5c7cSmrg *-genix*) 1857a1d141d5Smrg vendor=ns 1858a1d141d5Smrg ;; 185926df5c7cSmrg *-clix*) 186026df5c7cSmrg vendor=intergraph 186126df5c7cSmrg ;; 186226df5c7cSmrg *-mvs* | *-opened*) 186326df5c7cSmrg vendor=ibm 186426df5c7cSmrg ;; 186526df5c7cSmrg *-os400*) 1866a1d141d5Smrg vendor=ibm 1867a1d141d5Smrg ;; 186826df5c7cSmrg s390-* | s390x-*) 18692ddb6cf1Smrg vendor=ibm 18702ddb6cf1Smrg ;; 187126df5c7cSmrg *-ptx*) 1872a1d141d5Smrg vendor=sequent 1873a1d141d5Smrg ;; 187426df5c7cSmrg *-tpf*) 18752ddb6cf1Smrg vendor=ibm 18762ddb6cf1Smrg ;; 187726df5c7cSmrg *-vxsim* | *-vxworks* | *-windiss*) 1878a1d141d5Smrg vendor=wrs 1879a1d141d5Smrg ;; 188026df5c7cSmrg *-aux*) 1881a1d141d5Smrg vendor=apple 1882a1d141d5Smrg ;; 188326df5c7cSmrg *-hms*) 1884a1d141d5Smrg vendor=hitachi 1885a1d141d5Smrg ;; 188626df5c7cSmrg *-mpw* | *-macos*) 1887a1d141d5Smrg vendor=apple 1888a1d141d5Smrg ;; 188926df5c7cSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1890a1d141d5Smrg vendor=atari 1891a1d141d5Smrg ;; 189226df5c7cSmrg *-vos*) 1893a1d141d5Smrg vendor=stratus 1894a1d141d5Smrg ;; 1895a1d141d5Smrg esac 1896a1d141d5Smrg ;; 1897a1d141d5Smrgesac 1898a1d141d5Smrg 189926df5c7cSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 19002ddb6cf1Smrgexit 1901a1d141d5Smrg 1902a1d141d5Smrg# Local variables: 190326df5c7cSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 1904a1d141d5Smrg# time-stamp-start: "timestamp='" 1905a1d141d5Smrg# time-stamp-format: "%:y-%02m-%02d" 1906a1d141d5Smrg# time-stamp-end: "'" 1907a1d141d5Smrg# End: 1908