19027f4a0Smrg#! /bin/sh 29027f4a0Smrg# Configuration validation subroutine script. 3224bc9c7Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 49027f4a0Smrg 50d6f290aSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 60d6f290aSmrg 7224bc9c7Smrgtimestamp='2023-01-21' 89027f4a0Smrg 9fe2ac8d7Smrg# This file is free software; you can redistribute it and/or modify it 10fe2ac8d7Smrg# under the terms of the GNU General Public License as published by 11224bc9c7Smrg# the Free Software Foundation, either version 3 of the License, or 129027f4a0Smrg# (at your option) any later version. 139027f4a0Smrg# 14fe2ac8d7Smrg# This program is distributed in the hope that it will be useful, but 15fe2ac8d7Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16fe2ac8d7Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17fe2ac8d7Smrg# General Public License for more details. 189027f4a0Smrg# 199027f4a0Smrg# You should have received a copy of the GNU General Public License 20376c9fa8Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 219027f4a0Smrg# 229027f4a0Smrg# As a special exception to the GNU General Public License, if you 239027f4a0Smrg# distribute this file as part of a program that contains a 249027f4a0Smrg# configuration script generated by Autoconf, you may include it under 25fe2ac8d7Smrg# the same distribution terms that you use for the rest of that 26fe2ac8d7Smrg# program. This Exception is an additional permission under section 7 27fe2ac8d7Smrg# of the GNU General Public License, version 3 ("GPLv3"). 289027f4a0Smrg 299027f4a0Smrg 30376c9fa8Smrg# Please send patches to <config-patches@gnu.org>. 319027f4a0Smrg# 329027f4a0Smrg# Configuration subroutine to validate and canonicalize a configuration type. 339027f4a0Smrg# Supply the specified configuration type as an argument. 349027f4a0Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 359027f4a0Smrg# Otherwise, we print the canonical config type on stdout and succeed. 369027f4a0Smrg 373a72f200Smrg# You can get the latest version of this script from: 380d6f290aSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 393a72f200Smrg 409027f4a0Smrg# This file is supposed to be the same for all GNU packages 419027f4a0Smrg# and recognize all the CPU types, system types and aliases 429027f4a0Smrg# that are meaningful with *any* GNU software. 439027f4a0Smrg# Each package is responsible for reporting which valid configurations 449027f4a0Smrg# it does not support. The user should be able to distinguish 459027f4a0Smrg# a failure to support a valid configuration from a meaningless 469027f4a0Smrg# configuration. 479027f4a0Smrg 489027f4a0Smrg# The goal of this file is to map all the various variations of a given 499027f4a0Smrg# machine specification into a single specification in the form: 509027f4a0Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 519027f4a0Smrg# or in some cases, the newer four-part form: 529027f4a0Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 539027f4a0Smrg# It is wrong to echo any other type of specification. 549027f4a0Smrg 550d6f290aSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 560d6f290aSmrg# about features and limitations of the classic Bourne shell that were 570d6f290aSmrg# superseded or lifted in POSIX. However, this script identifies a wide 580d6f290aSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 590d6f290aSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 600d6f290aSmrg# have a pre-POSIX /bin/sh. 610d6f290aSmrg 629027f4a0Smrgme=`echo "$0" | sed -e 's,.*/,,'` 639027f4a0Smrg 649027f4a0Smrgusage="\ 65376c9fa8SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 669027f4a0Smrg 679027f4a0SmrgCanonicalize a configuration name. 689027f4a0Smrg 69376c9fa8SmrgOptions: 709027f4a0Smrg -h, --help print this help, then exit 719027f4a0Smrg -t, --time-stamp print date of last modification, then exit 729027f4a0Smrg -v, --version print version number, then exit 739027f4a0Smrg 749027f4a0SmrgReport bugs and patches to <config-patches@gnu.org>." 759027f4a0Smrg 769027f4a0Smrgversion="\ 779027f4a0SmrgGNU config.sub ($timestamp) 789027f4a0Smrg 79224bc9c7SmrgCopyright 1992-2023 Free Software Foundation, Inc. 809027f4a0Smrg 819027f4a0SmrgThis is free software; see the source for copying conditions. There is NO 829027f4a0Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 839027f4a0Smrg 849027f4a0Smrghelp=" 859027f4a0SmrgTry \`$me --help' for more information." 869027f4a0Smrg 879027f4a0Smrg# Parse command line 889027f4a0Smrgwhile test $# -gt 0 ; do 899027f4a0Smrg case $1 in 909027f4a0Smrg --time-stamp | --time* | -t ) 919027f4a0Smrg echo "$timestamp" ; exit ;; 929027f4a0Smrg --version | -v ) 939027f4a0Smrg echo "$version" ; exit ;; 949027f4a0Smrg --help | --h* | -h ) 959027f4a0Smrg echo "$usage"; exit ;; 969027f4a0Smrg -- ) # Stop option processing 979027f4a0Smrg shift; break ;; 989027f4a0Smrg - ) # Use stdin as input. 999027f4a0Smrg break ;; 1009027f4a0Smrg -* ) 1010d6f290aSmrg echo "$me: invalid option $1$help" >&2 1029027f4a0Smrg exit 1 ;; 1039027f4a0Smrg 1049027f4a0Smrg *local*) 1059027f4a0Smrg # First pass through any local machine types. 106376c9fa8Smrg echo "$1" 1079027f4a0Smrg exit ;; 1089027f4a0Smrg 1099027f4a0Smrg * ) 1109027f4a0Smrg break ;; 1119027f4a0Smrg esac 1129027f4a0Smrgdone 1139027f4a0Smrg 1149027f4a0Smrgcase $# in 1159027f4a0Smrg 0) echo "$me: missing argument$help" >&2 1169027f4a0Smrg exit 1;; 1179027f4a0Smrg 1) ;; 1189027f4a0Smrg *) echo "$me: too many arguments$help" >&2 1199027f4a0Smrg exit 1;; 1209027f4a0Smrgesac 1219027f4a0Smrg 1220d6f290aSmrg# Split fields of configuration type 1230d6f290aSmrg# shellcheck disable=SC2162 1240d6f290aSmrgsaved_IFS=$IFS 1250d6f290aSmrgIFS="-" read field1 field2 field3 field4 <<EOF 1260d6f290aSmrg$1 1270d6f290aSmrgEOF 1280d6f290aSmrgIFS=$saved_IFS 1299027f4a0Smrg 1300d6f290aSmrg# Separate into logical components for further validation 1310d6f290aSmrgcase $1 in 1320d6f290aSmrg *-*-*-*-*) 1330d6f290aSmrg echo Invalid configuration \`"$1"\': more than four components >&2 1340d6f290aSmrg exit 1 135fe2ac8d7Smrg ;; 1360d6f290aSmrg *-*-*-*) 1370d6f290aSmrg basic_machine=$field1-$field2 1380d6f290aSmrg basic_os=$field3-$field4 1399027f4a0Smrg ;; 1400d6f290aSmrg *-*-*) 1410d6f290aSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1420d6f290aSmrg # parts 1430d6f290aSmrg maybe_os=$field2-$field3 1440d6f290aSmrg case $maybe_os in 1450d6f290aSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 1460d6f290aSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1470d6f290aSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148224bc9c7Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 1490d6f290aSmrg basic_machine=$field1 1500d6f290aSmrg basic_os=$maybe_os 1510d6f290aSmrg ;; 1520d6f290aSmrg android-linux) 1530d6f290aSmrg basic_machine=$field1-unknown 1540d6f290aSmrg basic_os=linux-android 1550d6f290aSmrg ;; 1560d6f290aSmrg *) 1570d6f290aSmrg basic_machine=$field1-$field2 1580d6f290aSmrg basic_os=$field3 1590d6f290aSmrg ;; 1600d6f290aSmrg esac 1619027f4a0Smrg ;; 1620d6f290aSmrg *-*) 1630d6f290aSmrg # A lone config we happen to match not fitting any pattern 1640d6f290aSmrg case $field1-$field2 in 1650d6f290aSmrg decstation-3100) 1660d6f290aSmrg basic_machine=mips-dec 1670d6f290aSmrg basic_os= 1680d6f290aSmrg ;; 1690d6f290aSmrg *-*) 1700d6f290aSmrg # Second component is usually, but not always the OS 1710d6f290aSmrg case $field2 in 1720d6f290aSmrg # Prevent following clause from handling this valid os 1730d6f290aSmrg sun*os*) 1740d6f290aSmrg basic_machine=$field1 1750d6f290aSmrg basic_os=$field2 1760d6f290aSmrg ;; 1770d6f290aSmrg zephyr*) 1780d6f290aSmrg basic_machine=$field1-unknown 1790d6f290aSmrg basic_os=$field2 1800d6f290aSmrg ;; 1810d6f290aSmrg # Manufacturers 1820d6f290aSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1830d6f290aSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1840d6f290aSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1850d6f290aSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1860d6f290aSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1870d6f290aSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1880d6f290aSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1890d6f290aSmrg | microblaze* | sim | cisco \ 1900d6f290aSmrg | oki | wec | wrs | winbond) 1910d6f290aSmrg basic_machine=$field1-$field2 1920d6f290aSmrg basic_os= 1930d6f290aSmrg ;; 1940d6f290aSmrg *) 1950d6f290aSmrg basic_machine=$field1 1960d6f290aSmrg basic_os=$field2 1970d6f290aSmrg ;; 1980d6f290aSmrg esac 1990d6f290aSmrg ;; 2000d6f290aSmrg esac 2019027f4a0Smrg ;; 2020d6f290aSmrg *) 2030d6f290aSmrg # Convert single-component short-hands not valid as part of 2040d6f290aSmrg # multi-component configurations. 2050d6f290aSmrg case $field1 in 2060d6f290aSmrg 386bsd) 2070d6f290aSmrg basic_machine=i386-pc 2080d6f290aSmrg basic_os=bsd 2090d6f290aSmrg ;; 2100d6f290aSmrg a29khif) 2110d6f290aSmrg basic_machine=a29k-amd 2120d6f290aSmrg basic_os=udi 2130d6f290aSmrg ;; 2140d6f290aSmrg adobe68k) 2150d6f290aSmrg basic_machine=m68010-adobe 2160d6f290aSmrg basic_os=scout 2170d6f290aSmrg ;; 2180d6f290aSmrg alliant) 2190d6f290aSmrg basic_machine=fx80-alliant 2200d6f290aSmrg basic_os= 2210d6f290aSmrg ;; 2220d6f290aSmrg altos | altos3068) 2230d6f290aSmrg basic_machine=m68k-altos 2240d6f290aSmrg basic_os= 2250d6f290aSmrg ;; 2260d6f290aSmrg am29k) 2270d6f290aSmrg basic_machine=a29k-none 2280d6f290aSmrg basic_os=bsd 2290d6f290aSmrg ;; 2300d6f290aSmrg amdahl) 2310d6f290aSmrg basic_machine=580-amdahl 2320d6f290aSmrg basic_os=sysv 2330d6f290aSmrg ;; 2340d6f290aSmrg amiga) 2350d6f290aSmrg basic_machine=m68k-unknown 2360d6f290aSmrg basic_os= 2370d6f290aSmrg ;; 2380d6f290aSmrg amigaos | amigados) 2390d6f290aSmrg basic_machine=m68k-unknown 2400d6f290aSmrg basic_os=amigaos 2410d6f290aSmrg ;; 2420d6f290aSmrg amigaunix | amix) 2430d6f290aSmrg basic_machine=m68k-unknown 2440d6f290aSmrg basic_os=sysv4 2450d6f290aSmrg ;; 2460d6f290aSmrg apollo68) 2470d6f290aSmrg basic_machine=m68k-apollo 2480d6f290aSmrg basic_os=sysv 2490d6f290aSmrg ;; 2500d6f290aSmrg apollo68bsd) 2510d6f290aSmrg basic_machine=m68k-apollo 2520d6f290aSmrg basic_os=bsd 2530d6f290aSmrg ;; 2540d6f290aSmrg aros) 2550d6f290aSmrg basic_machine=i386-pc 2560d6f290aSmrg basic_os=aros 2570d6f290aSmrg ;; 2580d6f290aSmrg aux) 2590d6f290aSmrg basic_machine=m68k-apple 2600d6f290aSmrg basic_os=aux 2610d6f290aSmrg ;; 2620d6f290aSmrg balance) 2630d6f290aSmrg basic_machine=ns32k-sequent 2640d6f290aSmrg basic_os=dynix 2650d6f290aSmrg ;; 2660d6f290aSmrg blackfin) 2670d6f290aSmrg basic_machine=bfin-unknown 2680d6f290aSmrg basic_os=linux 2690d6f290aSmrg ;; 2700d6f290aSmrg cegcc) 2710d6f290aSmrg basic_machine=arm-unknown 2720d6f290aSmrg basic_os=cegcc 2730d6f290aSmrg ;; 2740d6f290aSmrg convex-c1) 2750d6f290aSmrg basic_machine=c1-convex 2760d6f290aSmrg basic_os=bsd 2770d6f290aSmrg ;; 2780d6f290aSmrg convex-c2) 2790d6f290aSmrg basic_machine=c2-convex 2800d6f290aSmrg basic_os=bsd 2810d6f290aSmrg ;; 2820d6f290aSmrg convex-c32) 2830d6f290aSmrg basic_machine=c32-convex 2840d6f290aSmrg basic_os=bsd 2850d6f290aSmrg ;; 2860d6f290aSmrg convex-c34) 2870d6f290aSmrg basic_machine=c34-convex 2880d6f290aSmrg basic_os=bsd 2890d6f290aSmrg ;; 2900d6f290aSmrg convex-c38) 2910d6f290aSmrg basic_machine=c38-convex 2920d6f290aSmrg basic_os=bsd 2930d6f290aSmrg ;; 2940d6f290aSmrg cray) 2950d6f290aSmrg basic_machine=j90-cray 2960d6f290aSmrg basic_os=unicos 2970d6f290aSmrg ;; 2980d6f290aSmrg crds | unos) 2990d6f290aSmrg basic_machine=m68k-crds 3000d6f290aSmrg basic_os= 3010d6f290aSmrg ;; 3020d6f290aSmrg da30) 3030d6f290aSmrg basic_machine=m68k-da30 3040d6f290aSmrg basic_os= 3050d6f290aSmrg ;; 3060d6f290aSmrg decstation | pmax | pmin | dec3100 | decstatn) 3070d6f290aSmrg basic_machine=mips-dec 3080d6f290aSmrg basic_os= 3090d6f290aSmrg ;; 3100d6f290aSmrg delta88) 3110d6f290aSmrg basic_machine=m88k-motorola 3120d6f290aSmrg basic_os=sysv3 3130d6f290aSmrg ;; 3140d6f290aSmrg dicos) 3150d6f290aSmrg basic_machine=i686-pc 3160d6f290aSmrg basic_os=dicos 3170d6f290aSmrg ;; 3180d6f290aSmrg djgpp) 3190d6f290aSmrg basic_machine=i586-pc 3200d6f290aSmrg basic_os=msdosdjgpp 3210d6f290aSmrg ;; 3220d6f290aSmrg ebmon29k) 3230d6f290aSmrg basic_machine=a29k-amd 3240d6f290aSmrg basic_os=ebmon 3250d6f290aSmrg ;; 3260d6f290aSmrg es1800 | OSE68k | ose68k | ose | OSE) 3270d6f290aSmrg basic_machine=m68k-ericsson 3280d6f290aSmrg basic_os=ose 3290d6f290aSmrg ;; 3300d6f290aSmrg gmicro) 3310d6f290aSmrg basic_machine=tron-gmicro 3320d6f290aSmrg basic_os=sysv 3330d6f290aSmrg ;; 3340d6f290aSmrg go32) 3350d6f290aSmrg basic_machine=i386-pc 3360d6f290aSmrg basic_os=go32 3370d6f290aSmrg ;; 3380d6f290aSmrg h8300hms) 3390d6f290aSmrg basic_machine=h8300-hitachi 3400d6f290aSmrg basic_os=hms 3410d6f290aSmrg ;; 3420d6f290aSmrg h8300xray) 3430d6f290aSmrg basic_machine=h8300-hitachi 3440d6f290aSmrg basic_os=xray 3450d6f290aSmrg ;; 3460d6f290aSmrg h8500hms) 3470d6f290aSmrg basic_machine=h8500-hitachi 3480d6f290aSmrg basic_os=hms 3490d6f290aSmrg ;; 3500d6f290aSmrg harris) 3510d6f290aSmrg basic_machine=m88k-harris 3520d6f290aSmrg basic_os=sysv3 3530d6f290aSmrg ;; 3540d6f290aSmrg hp300 | hp300hpux) 3550d6f290aSmrg basic_machine=m68k-hp 3560d6f290aSmrg basic_os=hpux 3570d6f290aSmrg ;; 3580d6f290aSmrg hp300bsd) 3590d6f290aSmrg basic_machine=m68k-hp 3600d6f290aSmrg basic_os=bsd 3610d6f290aSmrg ;; 3620d6f290aSmrg hppaosf) 3630d6f290aSmrg basic_machine=hppa1.1-hp 3640d6f290aSmrg basic_os=osf 3650d6f290aSmrg ;; 3660d6f290aSmrg hppro) 3670d6f290aSmrg basic_machine=hppa1.1-hp 3680d6f290aSmrg basic_os=proelf 3690d6f290aSmrg ;; 3700d6f290aSmrg i386mach) 3710d6f290aSmrg basic_machine=i386-mach 3720d6f290aSmrg basic_os=mach 3730d6f290aSmrg ;; 3740d6f290aSmrg isi68 | isi) 3750d6f290aSmrg basic_machine=m68k-isi 3760d6f290aSmrg basic_os=sysv 3770d6f290aSmrg ;; 3780d6f290aSmrg m68knommu) 3790d6f290aSmrg basic_machine=m68k-unknown 3800d6f290aSmrg basic_os=linux 3810d6f290aSmrg ;; 3820d6f290aSmrg magnum | m3230) 3830d6f290aSmrg basic_machine=mips-mips 3840d6f290aSmrg basic_os=sysv 3850d6f290aSmrg ;; 3860d6f290aSmrg merlin) 3870d6f290aSmrg basic_machine=ns32k-utek 3880d6f290aSmrg basic_os=sysv 3890d6f290aSmrg ;; 3900d6f290aSmrg mingw64) 3910d6f290aSmrg basic_machine=x86_64-pc 3920d6f290aSmrg basic_os=mingw64 3930d6f290aSmrg ;; 3940d6f290aSmrg mingw32) 3950d6f290aSmrg basic_machine=i686-pc 3960d6f290aSmrg basic_os=mingw32 3970d6f290aSmrg ;; 3980d6f290aSmrg mingw32ce) 3990d6f290aSmrg basic_machine=arm-unknown 4000d6f290aSmrg basic_os=mingw32ce 4010d6f290aSmrg ;; 4020d6f290aSmrg monitor) 4030d6f290aSmrg basic_machine=m68k-rom68k 4040d6f290aSmrg basic_os=coff 4050d6f290aSmrg ;; 4060d6f290aSmrg morphos) 4070d6f290aSmrg basic_machine=powerpc-unknown 4080d6f290aSmrg basic_os=morphos 4090d6f290aSmrg ;; 4100d6f290aSmrg moxiebox) 4110d6f290aSmrg basic_machine=moxie-unknown 4120d6f290aSmrg basic_os=moxiebox 4130d6f290aSmrg ;; 4140d6f290aSmrg msdos) 4150d6f290aSmrg basic_machine=i386-pc 4160d6f290aSmrg basic_os=msdos 4170d6f290aSmrg ;; 4180d6f290aSmrg msys) 4190d6f290aSmrg basic_machine=i686-pc 4200d6f290aSmrg basic_os=msys 4210d6f290aSmrg ;; 4220d6f290aSmrg mvs) 4230d6f290aSmrg basic_machine=i370-ibm 4240d6f290aSmrg basic_os=mvs 4250d6f290aSmrg ;; 4260d6f290aSmrg nacl) 4270d6f290aSmrg basic_machine=le32-unknown 4280d6f290aSmrg basic_os=nacl 4290d6f290aSmrg ;; 4300d6f290aSmrg ncr3000) 4310d6f290aSmrg basic_machine=i486-ncr 4320d6f290aSmrg basic_os=sysv4 4330d6f290aSmrg ;; 4340d6f290aSmrg netbsd386) 4350d6f290aSmrg basic_machine=i386-pc 4360d6f290aSmrg basic_os=netbsd 4370d6f290aSmrg ;; 4380d6f290aSmrg netwinder) 4390d6f290aSmrg basic_machine=armv4l-rebel 4400d6f290aSmrg basic_os=linux 4410d6f290aSmrg ;; 4420d6f290aSmrg news | news700 | news800 | news900) 4430d6f290aSmrg basic_machine=m68k-sony 4440d6f290aSmrg basic_os=newsos 4450d6f290aSmrg ;; 4460d6f290aSmrg news1000) 4470d6f290aSmrg basic_machine=m68030-sony 4480d6f290aSmrg basic_os=newsos 4490d6f290aSmrg ;; 4500d6f290aSmrg necv70) 4510d6f290aSmrg basic_machine=v70-nec 4520d6f290aSmrg basic_os=sysv 4530d6f290aSmrg ;; 4540d6f290aSmrg nh3000) 4550d6f290aSmrg basic_machine=m68k-harris 4560d6f290aSmrg basic_os=cxux 4570d6f290aSmrg ;; 4580d6f290aSmrg nh[45]000) 4590d6f290aSmrg basic_machine=m88k-harris 4600d6f290aSmrg basic_os=cxux 4610d6f290aSmrg ;; 4620d6f290aSmrg nindy960) 4630d6f290aSmrg basic_machine=i960-intel 4640d6f290aSmrg basic_os=nindy 4650d6f290aSmrg ;; 4660d6f290aSmrg mon960) 4670d6f290aSmrg basic_machine=i960-intel 4680d6f290aSmrg basic_os=mon960 4690d6f290aSmrg ;; 4700d6f290aSmrg nonstopux) 4710d6f290aSmrg basic_machine=mips-compaq 4720d6f290aSmrg basic_os=nonstopux 4730d6f290aSmrg ;; 4740d6f290aSmrg os400) 4750d6f290aSmrg basic_machine=powerpc-ibm 4760d6f290aSmrg basic_os=os400 4770d6f290aSmrg ;; 4780d6f290aSmrg OSE68000 | ose68000) 4790d6f290aSmrg basic_machine=m68000-ericsson 4800d6f290aSmrg basic_os=ose 4810d6f290aSmrg ;; 4820d6f290aSmrg os68k) 4830d6f290aSmrg basic_machine=m68k-none 4840d6f290aSmrg basic_os=os68k 4850d6f290aSmrg ;; 4860d6f290aSmrg paragon) 4870d6f290aSmrg basic_machine=i860-intel 4880d6f290aSmrg basic_os=osf 4890d6f290aSmrg ;; 4900d6f290aSmrg parisc) 4910d6f290aSmrg basic_machine=hppa-unknown 4920d6f290aSmrg basic_os=linux 4930d6f290aSmrg ;; 4940d6f290aSmrg psp) 4950d6f290aSmrg basic_machine=mipsallegrexel-sony 4960d6f290aSmrg basic_os=psp 4970d6f290aSmrg ;; 4980d6f290aSmrg pw32) 4990d6f290aSmrg basic_machine=i586-unknown 5000d6f290aSmrg basic_os=pw32 5010d6f290aSmrg ;; 5020d6f290aSmrg rdos | rdos64) 5030d6f290aSmrg basic_machine=x86_64-pc 5040d6f290aSmrg basic_os=rdos 5050d6f290aSmrg ;; 5060d6f290aSmrg rdos32) 5070d6f290aSmrg basic_machine=i386-pc 5080d6f290aSmrg basic_os=rdos 5090d6f290aSmrg ;; 5100d6f290aSmrg rom68k) 5110d6f290aSmrg basic_machine=m68k-rom68k 5120d6f290aSmrg basic_os=coff 5130d6f290aSmrg ;; 5140d6f290aSmrg sa29200) 5150d6f290aSmrg basic_machine=a29k-amd 5160d6f290aSmrg basic_os=udi 5170d6f290aSmrg ;; 5180d6f290aSmrg sei) 5190d6f290aSmrg basic_machine=mips-sei 5200d6f290aSmrg basic_os=seiux 5210d6f290aSmrg ;; 5220d6f290aSmrg sequent) 5230d6f290aSmrg basic_machine=i386-sequent 5240d6f290aSmrg basic_os= 5250d6f290aSmrg ;; 5260d6f290aSmrg sps7) 5270d6f290aSmrg basic_machine=m68k-bull 5280d6f290aSmrg basic_os=sysv2 5290d6f290aSmrg ;; 5300d6f290aSmrg st2000) 5310d6f290aSmrg basic_machine=m68k-tandem 5320d6f290aSmrg basic_os= 5330d6f290aSmrg ;; 5340d6f290aSmrg stratus) 5350d6f290aSmrg basic_machine=i860-stratus 5360d6f290aSmrg basic_os=sysv4 5370d6f290aSmrg ;; 5380d6f290aSmrg sun2) 5390d6f290aSmrg basic_machine=m68000-sun 5400d6f290aSmrg basic_os= 5410d6f290aSmrg ;; 5420d6f290aSmrg sun2os3) 5430d6f290aSmrg basic_machine=m68000-sun 5440d6f290aSmrg basic_os=sunos3 5450d6f290aSmrg ;; 5460d6f290aSmrg sun2os4) 5470d6f290aSmrg basic_machine=m68000-sun 5480d6f290aSmrg basic_os=sunos4 5490d6f290aSmrg ;; 5500d6f290aSmrg sun3) 5510d6f290aSmrg basic_machine=m68k-sun 5520d6f290aSmrg basic_os= 5530d6f290aSmrg ;; 5540d6f290aSmrg sun3os3) 5550d6f290aSmrg basic_machine=m68k-sun 5560d6f290aSmrg basic_os=sunos3 5570d6f290aSmrg ;; 5580d6f290aSmrg sun3os4) 5590d6f290aSmrg basic_machine=m68k-sun 5600d6f290aSmrg basic_os=sunos4 5610d6f290aSmrg ;; 5620d6f290aSmrg sun4) 5630d6f290aSmrg basic_machine=sparc-sun 5640d6f290aSmrg basic_os= 5650d6f290aSmrg ;; 5660d6f290aSmrg sun4os3) 5670d6f290aSmrg basic_machine=sparc-sun 5680d6f290aSmrg basic_os=sunos3 5690d6f290aSmrg ;; 5700d6f290aSmrg sun4os4) 5710d6f290aSmrg basic_machine=sparc-sun 5720d6f290aSmrg basic_os=sunos4 5730d6f290aSmrg ;; 5740d6f290aSmrg sun4sol2) 5750d6f290aSmrg basic_machine=sparc-sun 5760d6f290aSmrg basic_os=solaris2 5770d6f290aSmrg ;; 5780d6f290aSmrg sun386 | sun386i | roadrunner) 5790d6f290aSmrg basic_machine=i386-sun 5800d6f290aSmrg basic_os= 5810d6f290aSmrg ;; 5820d6f290aSmrg sv1) 5830d6f290aSmrg basic_machine=sv1-cray 5840d6f290aSmrg basic_os=unicos 5850d6f290aSmrg ;; 5860d6f290aSmrg symmetry) 5870d6f290aSmrg basic_machine=i386-sequent 5880d6f290aSmrg basic_os=dynix 5890d6f290aSmrg ;; 5900d6f290aSmrg t3e) 5910d6f290aSmrg basic_machine=alphaev5-cray 5920d6f290aSmrg basic_os=unicos 5930d6f290aSmrg ;; 5940d6f290aSmrg t90) 5950d6f290aSmrg basic_machine=t90-cray 5960d6f290aSmrg basic_os=unicos 5970d6f290aSmrg ;; 5980d6f290aSmrg toad1) 5990d6f290aSmrg basic_machine=pdp10-xkl 6000d6f290aSmrg basic_os=tops20 6010d6f290aSmrg ;; 6020d6f290aSmrg tpf) 6030d6f290aSmrg basic_machine=s390x-ibm 6040d6f290aSmrg basic_os=tpf 6050d6f290aSmrg ;; 6060d6f290aSmrg udi29k) 6070d6f290aSmrg basic_machine=a29k-amd 6080d6f290aSmrg basic_os=udi 6090d6f290aSmrg ;; 6100d6f290aSmrg ultra3) 6110d6f290aSmrg basic_machine=a29k-nyu 6120d6f290aSmrg basic_os=sym1 6130d6f290aSmrg ;; 6140d6f290aSmrg v810 | necv810) 6150d6f290aSmrg basic_machine=v810-nec 6160d6f290aSmrg basic_os=none 6170d6f290aSmrg ;; 6180d6f290aSmrg vaxv) 6190d6f290aSmrg basic_machine=vax-dec 6200d6f290aSmrg basic_os=sysv 6210d6f290aSmrg ;; 6220d6f290aSmrg vms) 6230d6f290aSmrg basic_machine=vax-dec 6240d6f290aSmrg basic_os=vms 6250d6f290aSmrg ;; 6260d6f290aSmrg vsta) 6270d6f290aSmrg basic_machine=i386-pc 6280d6f290aSmrg basic_os=vsta 6290d6f290aSmrg ;; 6300d6f290aSmrg vxworks960) 6310d6f290aSmrg basic_machine=i960-wrs 6320d6f290aSmrg basic_os=vxworks 6330d6f290aSmrg ;; 6340d6f290aSmrg vxworks68) 6350d6f290aSmrg basic_machine=m68k-wrs 6360d6f290aSmrg basic_os=vxworks 6370d6f290aSmrg ;; 6380d6f290aSmrg vxworks29k) 6390d6f290aSmrg basic_machine=a29k-wrs 6400d6f290aSmrg basic_os=vxworks 6410d6f290aSmrg ;; 6420d6f290aSmrg xbox) 6430d6f290aSmrg basic_machine=i686-pc 6440d6f290aSmrg basic_os=mingw32 6450d6f290aSmrg ;; 6460d6f290aSmrg ymp) 6470d6f290aSmrg basic_machine=ymp-cray 6480d6f290aSmrg basic_os=unicos 6490d6f290aSmrg ;; 6500d6f290aSmrg *) 6510d6f290aSmrg basic_machine=$1 6520d6f290aSmrg basic_os= 6530d6f290aSmrg ;; 6540d6f290aSmrg esac 6559027f4a0Smrg ;; 6569027f4a0Smrgesac 6579027f4a0Smrg 6580d6f290aSmrg# Decode 1-component or ad-hoc basic machines 6599027f4a0Smrgcase $basic_machine in 6600d6f290aSmrg # Here we handle the default manufacturer of certain CPU types. It is in 6610d6f290aSmrg # some cases the only manufacturer, in others, it is the most popular. 6620d6f290aSmrg w89k) 6630d6f290aSmrg cpu=hppa1.1 6640d6f290aSmrg vendor=winbond 665376c9fa8Smrg ;; 6660d6f290aSmrg op50n) 6670d6f290aSmrg cpu=hppa1.1 6680d6f290aSmrg vendor=oki 6699027f4a0Smrg ;; 6700d6f290aSmrg op60c) 6710d6f290aSmrg cpu=hppa1.1 6720d6f290aSmrg vendor=oki 6739027f4a0Smrg ;; 6740d6f290aSmrg ibm*) 6750d6f290aSmrg cpu=i370 6760d6f290aSmrg vendor=ibm 6779027f4a0Smrg ;; 6780d6f290aSmrg orion105) 6790d6f290aSmrg cpu=clipper 6800d6f290aSmrg vendor=highlevel 681fe2ac8d7Smrg ;; 6820d6f290aSmrg mac | mpw | mac-mpw) 6830d6f290aSmrg cpu=m68k 6840d6f290aSmrg vendor=apple 685fe2ac8d7Smrg ;; 6860d6f290aSmrg pmac | pmac-mpw) 6870d6f290aSmrg cpu=powerpc 6880d6f290aSmrg vendor=apple 689fe2ac8d7Smrg ;; 690fe2ac8d7Smrg 6919027f4a0Smrg # Recognize the various machine names and aliases which stand 6929027f4a0Smrg # for a CPU type and a company and sometimes even an OS. 6939027f4a0Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6940d6f290aSmrg cpu=m68000 6950d6f290aSmrg vendor=att 6969027f4a0Smrg ;; 6979027f4a0Smrg 3b*) 6980d6f290aSmrg cpu=we32k 6990d6f290aSmrg vendor=att 7003a72f200Smrg ;; 7013a72f200Smrg bluegene*) 7020d6f290aSmrg cpu=powerpc 7030d6f290aSmrg vendor=ibm 7040d6f290aSmrg basic_os=cnk 7059027f4a0Smrg ;; 7069027f4a0Smrg decsystem10* | dec10*) 7070d6f290aSmrg cpu=pdp10 7080d6f290aSmrg vendor=dec 7090d6f290aSmrg basic_os=tops10 7109027f4a0Smrg ;; 7119027f4a0Smrg decsystem20* | dec20*) 7120d6f290aSmrg cpu=pdp10 7130d6f290aSmrg vendor=dec 7140d6f290aSmrg basic_os=tops20 7159027f4a0Smrg ;; 7169027f4a0Smrg delta | 3300 | motorola-3300 | motorola-delta \ 7179027f4a0Smrg | 3300-motorola | delta-motorola) 7180d6f290aSmrg cpu=m68k 7190d6f290aSmrg vendor=motorola 7209027f4a0Smrg ;; 721376c9fa8Smrg dpx2*) 7220d6f290aSmrg cpu=m68k 7230d6f290aSmrg vendor=bull 7240d6f290aSmrg basic_os=sysv3 7259027f4a0Smrg ;; 7269027f4a0Smrg encore | umax | mmax) 7270d6f290aSmrg cpu=ns32k 7280d6f290aSmrg vendor=encore 7299027f4a0Smrg ;; 7300d6f290aSmrg elxsi) 7310d6f290aSmrg cpu=elxsi 7320d6f290aSmrg vendor=elxsi 7330d6f290aSmrg basic_os=${basic_os:-bsd} 7349027f4a0Smrg ;; 7359027f4a0Smrg fx2800) 7360d6f290aSmrg cpu=i860 7370d6f290aSmrg vendor=alliant 7389027f4a0Smrg ;; 7399027f4a0Smrg genix) 7400d6f290aSmrg cpu=ns32k 7410d6f290aSmrg vendor=ns 7429027f4a0Smrg ;; 7439027f4a0Smrg h3050r* | hiux*) 7440d6f290aSmrg cpu=hppa1.1 7450d6f290aSmrg vendor=hitachi 7460d6f290aSmrg basic_os=hiuxwe2 7479027f4a0Smrg ;; 7489027f4a0Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7490d6f290aSmrg cpu=hppa1.0 7500d6f290aSmrg vendor=hp 7519027f4a0Smrg ;; 7529027f4a0Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7530d6f290aSmrg cpu=m68000 7540d6f290aSmrg vendor=hp 7559027f4a0Smrg ;; 7569027f4a0Smrg hp9k3[2-9][0-9]) 7570d6f290aSmrg cpu=m68k 7580d6f290aSmrg vendor=hp 7599027f4a0Smrg ;; 7609027f4a0Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7610d6f290aSmrg cpu=hppa1.0 7620d6f290aSmrg vendor=hp 7639027f4a0Smrg ;; 7649027f4a0Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7650d6f290aSmrg cpu=hppa1.1 7660d6f290aSmrg vendor=hp 7679027f4a0Smrg ;; 7689027f4a0Smrg hp9k78[0-9] | hp78[0-9]) 7699027f4a0Smrg # FIXME: really hppa2.0-hp 7700d6f290aSmrg cpu=hppa1.1 7710d6f290aSmrg vendor=hp 7729027f4a0Smrg ;; 7739027f4a0Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7749027f4a0Smrg # FIXME: really hppa2.0-hp 7750d6f290aSmrg cpu=hppa1.1 7760d6f290aSmrg vendor=hp 7779027f4a0Smrg ;; 7789027f4a0Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7790d6f290aSmrg cpu=hppa1.1 7800d6f290aSmrg vendor=hp 7819027f4a0Smrg ;; 7829027f4a0Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7830d6f290aSmrg cpu=hppa1.0 7840d6f290aSmrg vendor=hp 7859027f4a0Smrg ;; 7869027f4a0Smrg i*86v32) 7870d6f290aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7880d6f290aSmrg vendor=pc 7890d6f290aSmrg basic_os=sysv32 7909027f4a0Smrg ;; 7919027f4a0Smrg i*86v4*) 7920d6f290aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7930d6f290aSmrg vendor=pc 7940d6f290aSmrg basic_os=sysv4 7959027f4a0Smrg ;; 7969027f4a0Smrg i*86v) 7970d6f290aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7980d6f290aSmrg vendor=pc 7990d6f290aSmrg basic_os=sysv 8009027f4a0Smrg ;; 8019027f4a0Smrg i*86sol2) 8020d6f290aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8030d6f290aSmrg vendor=pc 8040d6f290aSmrg basic_os=solaris2 8059027f4a0Smrg ;; 8060d6f290aSmrg j90 | j90-cray) 8070d6f290aSmrg cpu=j90 8080d6f290aSmrg vendor=cray 8090d6f290aSmrg basic_os=${basic_os:-unicos} 8109027f4a0Smrg ;; 8119027f4a0Smrg iris | iris4d) 8120d6f290aSmrg cpu=mips 8130d6f290aSmrg vendor=sgi 8140d6f290aSmrg case $basic_os in 8150d6f290aSmrg irix*) 8169027f4a0Smrg ;; 8179027f4a0Smrg *) 8180d6f290aSmrg basic_os=irix4 8199027f4a0Smrg ;; 8209027f4a0Smrg esac 8219027f4a0Smrg ;; 8229027f4a0Smrg miniframe) 8230d6f290aSmrg cpu=m68000 8240d6f290aSmrg vendor=convergent 8259027f4a0Smrg ;; 8260d6f290aSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8270d6f290aSmrg cpu=m68k 8280d6f290aSmrg vendor=atari 8290d6f290aSmrg basic_os=mint 8309027f4a0Smrg ;; 8319027f4a0Smrg news-3600 | risc-news) 8320d6f290aSmrg cpu=mips 8330d6f290aSmrg vendor=sony 8340d6f290aSmrg basic_os=newsos 8359027f4a0Smrg ;; 836376c9fa8Smrg next | m*-next) 8370d6f290aSmrg cpu=m68k 8380d6f290aSmrg vendor=next 8390d6f290aSmrg case $basic_os in 8400d6f290aSmrg openstep*) 8410d6f290aSmrg ;; 8420d6f290aSmrg nextstep*) 8439027f4a0Smrg ;; 8440d6f290aSmrg ns2*) 8450d6f290aSmrg basic_os=nextstep2 8469027f4a0Smrg ;; 8479027f4a0Smrg *) 8480d6f290aSmrg basic_os=nextstep3 8499027f4a0Smrg ;; 8509027f4a0Smrg esac 8519027f4a0Smrg ;; 8529027f4a0Smrg np1) 8530d6f290aSmrg cpu=np1 8540d6f290aSmrg vendor=gould 855376c9fa8Smrg ;; 8569027f4a0Smrg op50n-* | op60c-*) 8570d6f290aSmrg cpu=hppa1.1 8580d6f290aSmrg vendor=oki 8590d6f290aSmrg basic_os=proelf 8609027f4a0Smrg ;; 8619027f4a0Smrg pa-hitachi) 8620d6f290aSmrg cpu=hppa1.1 8630d6f290aSmrg vendor=hitachi 8640d6f290aSmrg basic_os=hiuxwe2 8653a72f200Smrg ;; 8669027f4a0Smrg pbd) 8670d6f290aSmrg cpu=sparc 8680d6f290aSmrg vendor=tti 8699027f4a0Smrg ;; 8709027f4a0Smrg pbb) 8710d6f290aSmrg cpu=m68k 8720d6f290aSmrg vendor=tti 8739027f4a0Smrg ;; 8740d6f290aSmrg pc532) 8750d6f290aSmrg cpu=ns32k 8760d6f290aSmrg vendor=pc532 8779027f4a0Smrg ;; 8789027f4a0Smrg pn) 8790d6f290aSmrg cpu=pn 8800d6f290aSmrg vendor=gould 8819027f4a0Smrg ;; 8820d6f290aSmrg power) 8830d6f290aSmrg cpu=power 8840d6f290aSmrg vendor=ibm 8859027f4a0Smrg ;; 8860d6f290aSmrg ps2) 8870d6f290aSmrg cpu=i386 8880d6f290aSmrg vendor=ibm 8899027f4a0Smrg ;; 8900d6f290aSmrg rm[46]00) 8910d6f290aSmrg cpu=mips 8920d6f290aSmrg vendor=siemens 8939027f4a0Smrg ;; 8940d6f290aSmrg rtpc | rtpc-*) 8950d6f290aSmrg cpu=romp 8960d6f290aSmrg vendor=ibm 8979027f4a0Smrg ;; 8980d6f290aSmrg sde) 8990d6f290aSmrg cpu=mipsisa32 9000d6f290aSmrg vendor=sde 9010d6f290aSmrg basic_os=${basic_os:-elf} 9029027f4a0Smrg ;; 9030d6f290aSmrg simso-wrs) 9040d6f290aSmrg cpu=sparclite 9050d6f290aSmrg vendor=wrs 9060d6f290aSmrg basic_os=vxworks 9079027f4a0Smrg ;; 9080d6f290aSmrg tower | tower-32) 9090d6f290aSmrg cpu=m68k 9100d6f290aSmrg vendor=ncr 9119027f4a0Smrg ;; 9120d6f290aSmrg vpp*|vx|vx-*) 9130d6f290aSmrg cpu=f301 9140d6f290aSmrg vendor=fujitsu 915fe2ac8d7Smrg ;; 9160d6f290aSmrg w65) 9170d6f290aSmrg cpu=w65 9180d6f290aSmrg vendor=wdc 9199027f4a0Smrg ;; 9200d6f290aSmrg w89k-*) 9210d6f290aSmrg cpu=hppa1.1 9220d6f290aSmrg vendor=winbond 9230d6f290aSmrg basic_os=proelf 9249027f4a0Smrg ;; 9250d6f290aSmrg none) 9260d6f290aSmrg cpu=none 9270d6f290aSmrg vendor=none 9289027f4a0Smrg ;; 9290d6f290aSmrg leon|leon[3-9]) 9300d6f290aSmrg cpu=sparc 9310d6f290aSmrg vendor=$basic_machine 9329027f4a0Smrg ;; 9330d6f290aSmrg leon-*|leon[3-9]-*) 9340d6f290aSmrg cpu=sparc 9350d6f290aSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9369027f4a0Smrg ;; 9370d6f290aSmrg 9380d6f290aSmrg *-*) 9390d6f290aSmrg # shellcheck disable=SC2162 9400d6f290aSmrg saved_IFS=$IFS 9410d6f290aSmrg IFS="-" read cpu vendor <<EOF 9420d6f290aSmrg$basic_machine 9430d6f290aSmrgEOF 9440d6f290aSmrg IFS=$saved_IFS 9459027f4a0Smrg ;; 9460d6f290aSmrg # We use `pc' rather than `unknown' 9470d6f290aSmrg # because (1) that's what they normally are, and 9480d6f290aSmrg # (2) the word "unknown" tends to confuse beginning users. 9490d6f290aSmrg i*86 | x86_64) 9500d6f290aSmrg cpu=$basic_machine 9510d6f290aSmrg vendor=pc 9529027f4a0Smrg ;; 9530d6f290aSmrg # These rules are duplicated from below for sake of the special case above; 9540d6f290aSmrg # i.e. things that normalized to x86 arches should also default to "pc" 9550d6f290aSmrg pc98) 9560d6f290aSmrg cpu=i386 9570d6f290aSmrg vendor=pc 9589027f4a0Smrg ;; 9590d6f290aSmrg x64 | amd64) 9600d6f290aSmrg cpu=x86_64 9610d6f290aSmrg vendor=pc 9629027f4a0Smrg ;; 9630d6f290aSmrg # Recognize the basic CPU types without company name. 9640d6f290aSmrg *) 9650d6f290aSmrg cpu=$basic_machine 9660d6f290aSmrg vendor=unknown 9679027f4a0Smrg ;; 9680d6f290aSmrgesac 9690d6f290aSmrg 9700d6f290aSmrgunset -v basic_machine 9710d6f290aSmrg 9720d6f290aSmrg# Decode basic machines in the full and proper CPU-Company form. 9730d6f290aSmrgcase $cpu-$vendor in 9740d6f290aSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9750d6f290aSmrg # some cases the only manufacturer, in others, it is the most popular. 9760d6f290aSmrg craynv-unknown) 9770d6f290aSmrg vendor=cray 9780d6f290aSmrg basic_os=${basic_os:-unicosmp} 9799027f4a0Smrg ;; 9800d6f290aSmrg c90-unknown | c90-cray) 9810d6f290aSmrg vendor=cray 9820d6f290aSmrg basic_os=${Basic_os:-unicos} 9839027f4a0Smrg ;; 9840d6f290aSmrg fx80-unknown) 9850d6f290aSmrg vendor=alliant 9869027f4a0Smrg ;; 9870d6f290aSmrg romp-unknown) 9880d6f290aSmrg vendor=ibm 9899027f4a0Smrg ;; 9900d6f290aSmrg mmix-unknown) 9910d6f290aSmrg vendor=knuth 9929027f4a0Smrg ;; 9930d6f290aSmrg microblaze-unknown | microblazeel-unknown) 9940d6f290aSmrg vendor=xilinx 9959027f4a0Smrg ;; 9960d6f290aSmrg rs6000-unknown) 9970d6f290aSmrg vendor=ibm 9989027f4a0Smrg ;; 9990d6f290aSmrg vax-unknown) 10000d6f290aSmrg vendor=dec 10019027f4a0Smrg ;; 10020d6f290aSmrg pdp11-unknown) 10030d6f290aSmrg vendor=dec 1004fe2ac8d7Smrg ;; 10050d6f290aSmrg we32k-unknown) 10060d6f290aSmrg vendor=att 10079027f4a0Smrg ;; 10080d6f290aSmrg cydra-unknown) 10090d6f290aSmrg vendor=cydrome 10109027f4a0Smrg ;; 10110d6f290aSmrg i370-ibm*) 10120d6f290aSmrg vendor=ibm 10139027f4a0Smrg ;; 10140d6f290aSmrg orion-unknown) 10150d6f290aSmrg vendor=highlevel 10169027f4a0Smrg ;; 10170d6f290aSmrg xps-unknown | xps100-unknown) 10180d6f290aSmrg cpu=xps100 10190d6f290aSmrg vendor=honeywell 10209027f4a0Smrg ;; 10210d6f290aSmrg 10220d6f290aSmrg # Here we normalize CPU types with a missing or matching vendor 1023224bc9c7Smrg armh-unknown | armh-alt) 1024224bc9c7Smrg cpu=armv7l 1025224bc9c7Smrg vendor=alt 1026224bc9c7Smrg basic_os=${basic_os:-linux-gnueabihf} 1027224bc9c7Smrg ;; 10280d6f290aSmrg dpx20-unknown | dpx20-bull) 10290d6f290aSmrg cpu=rs6000 10300d6f290aSmrg vendor=bull 10310d6f290aSmrg basic_os=${basic_os:-bosx} 10329027f4a0Smrg ;; 10330d6f290aSmrg 10340d6f290aSmrg # Here we normalize CPU types irrespective of the vendor 10350d6f290aSmrg amd64-*) 10360d6f290aSmrg cpu=x86_64 10379027f4a0Smrg ;; 10380d6f290aSmrg blackfin-*) 10390d6f290aSmrg cpu=bfin 10400d6f290aSmrg basic_os=linux 10419027f4a0Smrg ;; 10420d6f290aSmrg c54x-*) 10430d6f290aSmrg cpu=tic54x 10449027f4a0Smrg ;; 10450d6f290aSmrg c55x-*) 10460d6f290aSmrg cpu=tic55x 10479027f4a0Smrg ;; 10480d6f290aSmrg c6x-*) 10490d6f290aSmrg cpu=tic6x 10509027f4a0Smrg ;; 10510d6f290aSmrg e500v[12]-*) 10520d6f290aSmrg cpu=powerpc 10530d6f290aSmrg basic_os=${basic_os}"spe" 10549027f4a0Smrg ;; 10550d6f290aSmrg mips3*-*) 10560d6f290aSmrg cpu=mips64 10579027f4a0Smrg ;; 10580d6f290aSmrg ms1-*) 10590d6f290aSmrg cpu=mt 10609027f4a0Smrg ;; 10610d6f290aSmrg m68knommu-*) 10620d6f290aSmrg cpu=m68k 10630d6f290aSmrg basic_os=linux 10649027f4a0Smrg ;; 10650d6f290aSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10660d6f290aSmrg cpu=s12z 10679027f4a0Smrg ;; 10680d6f290aSmrg openrisc-*) 10690d6f290aSmrg cpu=or32 10709027f4a0Smrg ;; 10710d6f290aSmrg parisc-*) 10720d6f290aSmrg cpu=hppa 10730d6f290aSmrg basic_os=linux 10749027f4a0Smrg ;; 10750d6f290aSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10760d6f290aSmrg cpu=i586 10779027f4a0Smrg ;; 1078224bc9c7Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 10790d6f290aSmrg cpu=i686 10809027f4a0Smrg ;; 10810d6f290aSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10820d6f290aSmrg cpu=i686 10839027f4a0Smrg ;; 10840d6f290aSmrg pentium4-*) 10850d6f290aSmrg cpu=i786 10869027f4a0Smrg ;; 10870d6f290aSmrg pc98-*) 10880d6f290aSmrg cpu=i386 10899027f4a0Smrg ;; 10900d6f290aSmrg ppc-* | ppcbe-*) 10910d6f290aSmrg cpu=powerpc 10929027f4a0Smrg ;; 10930d6f290aSmrg ppcle-* | powerpclittle-*) 10940d6f290aSmrg cpu=powerpcle 10959027f4a0Smrg ;; 10960d6f290aSmrg ppc64-*) 10970d6f290aSmrg cpu=powerpc64 10989027f4a0Smrg ;; 10990d6f290aSmrg ppc64le-* | powerpc64little-*) 11000d6f290aSmrg cpu=powerpc64le 11019027f4a0Smrg ;; 11020d6f290aSmrg sb1-*) 11030d6f290aSmrg cpu=mipsisa64sb1 11049027f4a0Smrg ;; 11050d6f290aSmrg sb1el-*) 11060d6f290aSmrg cpu=mipsisa64sb1el 11079027f4a0Smrg ;; 11080d6f290aSmrg sh5e[lb]-*) 11090d6f290aSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11109027f4a0Smrg ;; 11110d6f290aSmrg spur-*) 11120d6f290aSmrg cpu=spur 11139027f4a0Smrg ;; 11140d6f290aSmrg strongarm-* | thumb-*) 11150d6f290aSmrg cpu=arm 11169027f4a0Smrg ;; 11170d6f290aSmrg tx39-*) 11180d6f290aSmrg cpu=mipstx39 1119376c9fa8Smrg ;; 11200d6f290aSmrg tx39el-*) 11210d6f290aSmrg cpu=mipstx39el 11229027f4a0Smrg ;; 11230d6f290aSmrg x64-*) 11240d6f290aSmrg cpu=x86_64 11259027f4a0Smrg ;; 1126fe2ac8d7Smrg xscale-* | xscalee[bl]-*) 11270d6f290aSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11289027f4a0Smrg ;; 1129224bc9c7Smrg arm64-* | aarch64le-*) 11300d6f290aSmrg cpu=aarch64 11319027f4a0Smrg ;; 11329027f4a0Smrg 11330d6f290aSmrg # Recognize the canonical CPU Types that limit and/or modify the 11340d6f290aSmrg # company names they are paired with. 11350d6f290aSmrg cr16-*) 11360d6f290aSmrg basic_os=${basic_os:-elf} 11379027f4a0Smrg ;; 11380d6f290aSmrg crisv32-* | etraxfs*-*) 11390d6f290aSmrg cpu=crisv32 11400d6f290aSmrg vendor=axis 11419027f4a0Smrg ;; 11420d6f290aSmrg cris-* | etrax*-*) 11430d6f290aSmrg cpu=cris 11440d6f290aSmrg vendor=axis 11459027f4a0Smrg ;; 11460d6f290aSmrg crx-*) 11470d6f290aSmrg basic_os=${basic_os:-elf} 11489027f4a0Smrg ;; 11490d6f290aSmrg neo-tandem) 11500d6f290aSmrg cpu=neo 11510d6f290aSmrg vendor=tandem 11529027f4a0Smrg ;; 11530d6f290aSmrg nse-tandem) 11540d6f290aSmrg cpu=nse 11550d6f290aSmrg vendor=tandem 11569027f4a0Smrg ;; 11570d6f290aSmrg nsr-tandem) 11580d6f290aSmrg cpu=nsr 11590d6f290aSmrg vendor=tandem 11609027f4a0Smrg ;; 11610d6f290aSmrg nsv-tandem) 11620d6f290aSmrg cpu=nsv 11630d6f290aSmrg vendor=tandem 11649027f4a0Smrg ;; 11650d6f290aSmrg nsx-tandem) 11660d6f290aSmrg cpu=nsx 11670d6f290aSmrg vendor=tandem 11689027f4a0Smrg ;; 11690d6f290aSmrg mipsallegrexel-sony) 11700d6f290aSmrg cpu=mipsallegrexel 11710d6f290aSmrg vendor=sony 11729027f4a0Smrg ;; 11730d6f290aSmrg tile*-*) 11740d6f290aSmrg basic_os=${basic_os:-linux-gnu} 11759027f4a0Smrg ;; 11760d6f290aSmrg 11779027f4a0Smrg *) 11780d6f290aSmrg # Recognize the canonical CPU types that are allowed with any 11790d6f290aSmrg # company name. 11800d6f290aSmrg case $cpu in 11810d6f290aSmrg 1750a | 580 \ 11820d6f290aSmrg | a29k \ 11830d6f290aSmrg | aarch64 | aarch64_be \ 11840d6f290aSmrg | abacus \ 11850d6f290aSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11860d6f290aSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11870d6f290aSmrg | alphapca5[67] | alpha64pca5[67] \ 11880d6f290aSmrg | am33_2.0 \ 11890d6f290aSmrg | amdgcn \ 11900d6f290aSmrg | arc | arceb | arc32 | arc64 \ 11910d6f290aSmrg | arm | arm[lb]e | arme[lb] | armv* \ 11920d6f290aSmrg | avr | avr32 \ 11930d6f290aSmrg | asmjs \ 11940d6f290aSmrg | ba \ 11950d6f290aSmrg | be32 | be64 \ 11960d6f290aSmrg | bfin | bpf | bs2000 \ 11970d6f290aSmrg | c[123]* | c30 | [cjt]90 | c4x \ 11980d6f290aSmrg | c8051 | clipper | craynv | csky | cydra \ 11990d6f290aSmrg | d10v | d30v | dlx | dsp16xx \ 12000d6f290aSmrg | e2k | elxsi | epiphany \ 12010d6f290aSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 12020d6f290aSmrg | h8300 | h8500 \ 12030d6f290aSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 12040d6f290aSmrg | hexagon \ 12050d6f290aSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12060d6f290aSmrg | ip2k | iq2000 \ 12070d6f290aSmrg | k1om \ 12080d6f290aSmrg | le32 | le64 \ 12090d6f290aSmrg | lm32 \ 1210224bc9c7Smrg | loongarch32 | loongarch64 \ 12110d6f290aSmrg | m32c | m32r | m32rle \ 12120d6f290aSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12130d6f290aSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12140d6f290aSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12150d6f290aSmrg | microblaze | microblazeel \ 12160d6f290aSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12170d6f290aSmrg | mips16 \ 12180d6f290aSmrg | mips64 | mips64eb | mips64el \ 12190d6f290aSmrg | mips64octeon | mips64octeonel \ 12200d6f290aSmrg | mips64orion | mips64orionel \ 12210d6f290aSmrg | mips64r5900 | mips64r5900el \ 12220d6f290aSmrg | mips64vr | mips64vrel \ 12230d6f290aSmrg | mips64vr4100 | mips64vr4100el \ 12240d6f290aSmrg | mips64vr4300 | mips64vr4300el \ 12250d6f290aSmrg | mips64vr5000 | mips64vr5000el \ 12260d6f290aSmrg | mips64vr5900 | mips64vr5900el \ 12270d6f290aSmrg | mipsisa32 | mipsisa32el \ 12280d6f290aSmrg | mipsisa32r2 | mipsisa32r2el \ 12290d6f290aSmrg | mipsisa32r3 | mipsisa32r3el \ 12300d6f290aSmrg | mipsisa32r5 | mipsisa32r5el \ 12310d6f290aSmrg | mipsisa32r6 | mipsisa32r6el \ 12320d6f290aSmrg | mipsisa64 | mipsisa64el \ 12330d6f290aSmrg | mipsisa64r2 | mipsisa64r2el \ 12340d6f290aSmrg | mipsisa64r3 | mipsisa64r3el \ 12350d6f290aSmrg | mipsisa64r5 | mipsisa64r5el \ 12360d6f290aSmrg | mipsisa64r6 | mipsisa64r6el \ 12370d6f290aSmrg | mipsisa64sb1 | mipsisa64sb1el \ 12380d6f290aSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 12390d6f290aSmrg | mipsr5900 | mipsr5900el \ 12400d6f290aSmrg | mipstx39 | mipstx39el \ 12410d6f290aSmrg | mmix \ 12420d6f290aSmrg | mn10200 | mn10300 \ 12430d6f290aSmrg | moxie \ 12440d6f290aSmrg | mt \ 12450d6f290aSmrg | msp430 \ 12460d6f290aSmrg | nds32 | nds32le | nds32be \ 12470d6f290aSmrg | nfp \ 12480d6f290aSmrg | nios | nios2 | nios2eb | nios2el \ 12490d6f290aSmrg | none | np1 | ns16k | ns32k | nvptx \ 12500d6f290aSmrg | open8 \ 12510d6f290aSmrg | or1k* \ 12520d6f290aSmrg | or32 \ 12530d6f290aSmrg | orion \ 12540d6f290aSmrg | picochip \ 12550d6f290aSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12560d6f290aSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12570d6f290aSmrg | pru \ 12580d6f290aSmrg | pyramid \ 12590d6f290aSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12600d6f290aSmrg | rl78 | romp | rs6000 | rx \ 12610d6f290aSmrg | s390 | s390x \ 12620d6f290aSmrg | score \ 12630d6f290aSmrg | sh | shl \ 12640d6f290aSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12650d6f290aSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12660d6f290aSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12670d6f290aSmrg | sparclite \ 12680d6f290aSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12690d6f290aSmrg | spu \ 12700d6f290aSmrg | tahoe \ 12710d6f290aSmrg | thumbv7* \ 12720d6f290aSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12730d6f290aSmrg | tron \ 12740d6f290aSmrg | ubicom32 \ 12750d6f290aSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12760d6f290aSmrg | vax \ 12770d6f290aSmrg | visium \ 12780d6f290aSmrg | w65 \ 12790d6f290aSmrg | wasm32 | wasm64 \ 12800d6f290aSmrg | we32k \ 12810d6f290aSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12820d6f290aSmrg | xstormy16 | xtensa* \ 12830d6f290aSmrg | ymp \ 12840d6f290aSmrg | z8k | z80) 12850d6f290aSmrg ;; 12860d6f290aSmrg 12870d6f290aSmrg *) 12880d6f290aSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12890d6f290aSmrg exit 1 12900d6f290aSmrg ;; 12910d6f290aSmrg esac 12929027f4a0Smrg ;; 12939027f4a0Smrgesac 12949027f4a0Smrg 12959027f4a0Smrg# Here we canonicalize certain aliases for manufacturers. 12960d6f290aSmrgcase $vendor in 12970d6f290aSmrg digital*) 12980d6f290aSmrg vendor=dec 12999027f4a0Smrg ;; 13000d6f290aSmrg commodore*) 13010d6f290aSmrg vendor=cbm 13029027f4a0Smrg ;; 13039027f4a0Smrg *) 13049027f4a0Smrg ;; 13059027f4a0Smrgesac 13069027f4a0Smrg 13079027f4a0Smrg# Decode manufacturer-specific aliases for certain operating systems. 13089027f4a0Smrg 13090d6f290aSmrgif test x$basic_os != x 13109027f4a0Smrgthen 13110d6f290aSmrg 1312224bc9c7Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 13130d6f290aSmrg# set os. 13140d6f290aSmrgcase $basic_os in 13150d6f290aSmrg gnu/linux*) 13160d6f290aSmrg kernel=linux 13170d6f290aSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13180d6f290aSmrg ;; 13190d6f290aSmrg os2-emx) 13200d6f290aSmrg kernel=os2 13210d6f290aSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13220d6f290aSmrg ;; 13230d6f290aSmrg nto-qnx*) 13240d6f290aSmrg kernel=nto 13250d6f290aSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13260d6f290aSmrg ;; 13270d6f290aSmrg *-*) 13280d6f290aSmrg # shellcheck disable=SC2162 13290d6f290aSmrg saved_IFS=$IFS 13300d6f290aSmrg IFS="-" read kernel os <<EOF 13310d6f290aSmrg$basic_os 13320d6f290aSmrgEOF 13330d6f290aSmrg IFS=$saved_IFS 13340d6f290aSmrg ;; 13350d6f290aSmrg # Default OS when just kernel was specified 13360d6f290aSmrg nto*) 13370d6f290aSmrg kernel=nto 13380d6f290aSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13390d6f290aSmrg ;; 13400d6f290aSmrg linux*) 13410d6f290aSmrg kernel=linux 13420d6f290aSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13430d6f290aSmrg ;; 1344224bc9c7Smrg managarm*) 1345224bc9c7Smrg kernel=managarm 1346224bc9c7Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1347224bc9c7Smrg ;; 13480d6f290aSmrg *) 13490d6f290aSmrg kernel= 13500d6f290aSmrg os=$basic_os 13510d6f290aSmrg ;; 13520d6f290aSmrgesac 13530d6f290aSmrg 13540d6f290aSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13550d6f290aSmrg# etc.) 13569027f4a0Smrgcase $os in 1357376c9fa8Smrg # First match some system type aliases that might get confused 1358376c9fa8Smrg # with valid system types. 13590d6f290aSmrg # solaris* is a basic system type, with this one exception. 13600d6f290aSmrg auroraux) 13610d6f290aSmrg os=auroraux 13623a72f200Smrg ;; 13630d6f290aSmrg bluegene*) 13640d6f290aSmrg os=cnk 13659027f4a0Smrg ;; 13660d6f290aSmrg solaris1 | solaris1.*) 13670d6f290aSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13689027f4a0Smrg ;; 13690d6f290aSmrg solaris) 13700d6f290aSmrg os=solaris2 13719027f4a0Smrg ;; 13720d6f290aSmrg unixware*) 13730d6f290aSmrg os=sysv4.2uw 13749027f4a0Smrg ;; 1375376c9fa8Smrg # es1800 is here to avoid being matched by es* (a different OS) 13760d6f290aSmrg es1800*) 13770d6f290aSmrg os=ose 1378376c9fa8Smrg ;; 13790d6f290aSmrg # Some version numbers need modification 13800d6f290aSmrg chorusos*) 13810d6f290aSmrg os=chorusos 13829027f4a0Smrg ;; 13830d6f290aSmrg isc) 13840d6f290aSmrg os=isc2.2 13859027f4a0Smrg ;; 13860d6f290aSmrg sco6) 13870d6f290aSmrg os=sco5v6 13889027f4a0Smrg ;; 13890d6f290aSmrg sco5) 13900d6f290aSmrg os=sco3.2v5 13919027f4a0Smrg ;; 13920d6f290aSmrg sco4) 13930d6f290aSmrg os=sco3.2v4 13949027f4a0Smrg ;; 13950d6f290aSmrg sco3.2.[4-9]*) 13960d6f290aSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13979027f4a0Smrg ;; 13980d6f290aSmrg sco*v* | scout) 13990d6f290aSmrg # Don't match below 14009027f4a0Smrg ;; 14010d6f290aSmrg sco*) 14020d6f290aSmrg os=sco3.2v2 14039027f4a0Smrg ;; 14040d6f290aSmrg psos*) 14050d6f290aSmrg os=psos 14069027f4a0Smrg ;; 14070d6f290aSmrg qnx*) 14080d6f290aSmrg os=qnx 14099027f4a0Smrg ;; 14100d6f290aSmrg hiux*) 14110d6f290aSmrg os=hiuxwe2 14129027f4a0Smrg ;; 14130d6f290aSmrg lynx*178) 14140d6f290aSmrg os=lynxos178 14159027f4a0Smrg ;; 14160d6f290aSmrg lynx*5) 14170d6f290aSmrg os=lynxos5 14189027f4a0Smrg ;; 14190d6f290aSmrg lynxos*) 14200d6f290aSmrg # don't get caught up in next wildcard 14219027f4a0Smrg ;; 14220d6f290aSmrg lynx*) 14230d6f290aSmrg os=lynxos 14249027f4a0Smrg ;; 14250d6f290aSmrg mac[0-9]*) 14260d6f290aSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 14279027f4a0Smrg ;; 14280d6f290aSmrg opened*) 14290d6f290aSmrg os=openedition 14309027f4a0Smrg ;; 14310d6f290aSmrg os400*) 14320d6f290aSmrg os=os400 14339027f4a0Smrg ;; 14340d6f290aSmrg sunos5*) 14350d6f290aSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14369027f4a0Smrg ;; 14370d6f290aSmrg sunos6*) 14380d6f290aSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14399027f4a0Smrg ;; 14400d6f290aSmrg wince*) 14410d6f290aSmrg os=wince 14429027f4a0Smrg ;; 14430d6f290aSmrg utek*) 14440d6f290aSmrg os=bsd 14459027f4a0Smrg ;; 14460d6f290aSmrg dynix*) 14470d6f290aSmrg os=bsd 14489027f4a0Smrg ;; 14490d6f290aSmrg acis*) 14500d6f290aSmrg os=aos 14519027f4a0Smrg ;; 14520d6f290aSmrg atheos*) 14530d6f290aSmrg os=atheos 14549027f4a0Smrg ;; 14550d6f290aSmrg syllable*) 14560d6f290aSmrg os=syllable 14570d6f290aSmrg ;; 14580d6f290aSmrg 386bsd) 14590d6f290aSmrg os=bsd 14600d6f290aSmrg ;; 14610d6f290aSmrg ctix* | uts*) 14620d6f290aSmrg os=sysv 14630d6f290aSmrg ;; 14640d6f290aSmrg nova*) 14650d6f290aSmrg os=rtmk-nova 14660d6f290aSmrg ;; 14670d6f290aSmrg ns2) 14680d6f290aSmrg os=nextstep2 14690d6f290aSmrg ;; 14700d6f290aSmrg # Preserve the version number of sinix5. 14710d6f290aSmrg sinix5.*) 14720d6f290aSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14739027f4a0Smrg ;; 14740d6f290aSmrg sinix*) 14750d6f290aSmrg os=sysv4 14769027f4a0Smrg ;; 14770d6f290aSmrg tpf*) 14780d6f290aSmrg os=tpf 14799027f4a0Smrg ;; 14800d6f290aSmrg triton*) 14810d6f290aSmrg os=sysv3 14829027f4a0Smrg ;; 14830d6f290aSmrg oss*) 14840d6f290aSmrg os=sysv3 14859027f4a0Smrg ;; 14860d6f290aSmrg svr4*) 14870d6f290aSmrg os=sysv4 14889027f4a0Smrg ;; 14890d6f290aSmrg svr3) 14900d6f290aSmrg os=sysv3 14919027f4a0Smrg ;; 14920d6f290aSmrg sysvr4) 14930d6f290aSmrg os=sysv4 14949027f4a0Smrg ;; 14950d6f290aSmrg ose*) 14960d6f290aSmrg os=ose 14979027f4a0Smrg ;; 14980d6f290aSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14990d6f290aSmrg os=mint 15003a72f200Smrg ;; 15010d6f290aSmrg dicos*) 15020d6f290aSmrg os=dicos 15030d6f290aSmrg ;; 15040d6f290aSmrg pikeos*) 1505376c9fa8Smrg # Until real need of OS specific support for 1506376c9fa8Smrg # particular features comes up, bare metal 1507376c9fa8Smrg # configurations are quite functional. 15080d6f290aSmrg case $cpu in 1509376c9fa8Smrg arm*) 15100d6f290aSmrg os=eabi 1511376c9fa8Smrg ;; 1512376c9fa8Smrg *) 15130d6f290aSmrg os=elf 1514376c9fa8Smrg ;; 1515376c9fa8Smrg esac 1516376c9fa8Smrg ;; 15179027f4a0Smrg *) 15180d6f290aSmrg # No normalization, but not necessarily accepted, that comes below. 15199027f4a0Smrg ;; 15209027f4a0Smrgesac 15210d6f290aSmrg 15229027f4a0Smrgelse 15239027f4a0Smrg 15249027f4a0Smrg# Here we handle the default operating systems that come with various machines. 15259027f4a0Smrg# The value should be what the vendor currently ships out the door with their 15269027f4a0Smrg# machine or put another way, the most popular os provided with the machine. 15279027f4a0Smrg 15289027f4a0Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15299027f4a0Smrg# "-sun"), then you have to tell the case statement up towards the top 15309027f4a0Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15319027f4a0Smrg# will signal an error saying that MANUFACTURER isn't an operating 15329027f4a0Smrg# system, and we'll never get to this point. 15339027f4a0Smrg 15340d6f290aSmrgkernel= 15350d6f290aSmrgcase $cpu-$vendor in 1536fe2ac8d7Smrg score-*) 15370d6f290aSmrg os=elf 15389027f4a0Smrg ;; 1539fe2ac8d7Smrg spu-*) 15400d6f290aSmrg os=elf 15419027f4a0Smrg ;; 15429027f4a0Smrg *-acorn) 15430d6f290aSmrg os=riscix1.2 15449027f4a0Smrg ;; 15459027f4a0Smrg arm*-rebel) 15460d6f290aSmrg kernel=linux 15470d6f290aSmrg os=gnu 15489027f4a0Smrg ;; 15499027f4a0Smrg arm*-semi) 15500d6f290aSmrg os=aout 15519027f4a0Smrg ;; 1552fe2ac8d7Smrg c4x-* | tic4x-*) 15530d6f290aSmrg os=coff 1554fe2ac8d7Smrg ;; 1555376c9fa8Smrg c8051-*) 15560d6f290aSmrg os=elf 15570d6f290aSmrg ;; 15580d6f290aSmrg clipper-intergraph) 15590d6f290aSmrg os=clix 1560376c9fa8Smrg ;; 1561fe2ac8d7Smrg hexagon-*) 15620d6f290aSmrg os=elf 15639027f4a0Smrg ;; 15643a72f200Smrg tic54x-*) 15650d6f290aSmrg os=coff 15663a72f200Smrg ;; 15673a72f200Smrg tic55x-*) 15680d6f290aSmrg os=coff 15693a72f200Smrg ;; 15703a72f200Smrg tic6x-*) 15710d6f290aSmrg os=coff 15723a72f200Smrg ;; 15739027f4a0Smrg # This must come before the *-dec entry. 15749027f4a0Smrg pdp10-*) 15750d6f290aSmrg os=tops20 15769027f4a0Smrg ;; 15779027f4a0Smrg pdp11-*) 15780d6f290aSmrg os=none 15799027f4a0Smrg ;; 15809027f4a0Smrg *-dec | vax-*) 15810d6f290aSmrg os=ultrix4.2 15829027f4a0Smrg ;; 15839027f4a0Smrg m68*-apollo) 15840d6f290aSmrg os=domain 15859027f4a0Smrg ;; 15869027f4a0Smrg i386-sun) 15870d6f290aSmrg os=sunos4.0.2 15889027f4a0Smrg ;; 15899027f4a0Smrg m68000-sun) 15900d6f290aSmrg os=sunos3 15919027f4a0Smrg ;; 15929027f4a0Smrg m68*-cisco) 15930d6f290aSmrg os=aout 15949027f4a0Smrg ;; 1595fe2ac8d7Smrg mep-*) 15960d6f290aSmrg os=elf 15973a72f200Smrg ;; 15989027f4a0Smrg mips*-cisco) 15990d6f290aSmrg os=elf 16009027f4a0Smrg ;; 16019027f4a0Smrg mips*-*) 16020d6f290aSmrg os=elf 16039027f4a0Smrg ;; 16049027f4a0Smrg or32-*) 16050d6f290aSmrg os=coff 16069027f4a0Smrg ;; 16079027f4a0Smrg *-tti) # must be before sparc entry or we get the wrong os. 16080d6f290aSmrg os=sysv3 16099027f4a0Smrg ;; 16109027f4a0Smrg sparc-* | *-sun) 16110d6f290aSmrg os=sunos4.1.1 16129027f4a0Smrg ;; 1613376c9fa8Smrg pru-*) 16140d6f290aSmrg os=elf 1615376c9fa8Smrg ;; 16169027f4a0Smrg *-be) 16170d6f290aSmrg os=beos 16189027f4a0Smrg ;; 16199027f4a0Smrg *-ibm) 16200d6f290aSmrg os=aix 16219027f4a0Smrg ;; 1622fe2ac8d7Smrg *-knuth) 16230d6f290aSmrg os=mmixware 16249027f4a0Smrg ;; 16259027f4a0Smrg *-wec) 16260d6f290aSmrg os=proelf 16279027f4a0Smrg ;; 16289027f4a0Smrg *-winbond) 16290d6f290aSmrg os=proelf 16309027f4a0Smrg ;; 16319027f4a0Smrg *-oki) 16320d6f290aSmrg os=proelf 16339027f4a0Smrg ;; 16349027f4a0Smrg *-hp) 16350d6f290aSmrg os=hpux 16369027f4a0Smrg ;; 16379027f4a0Smrg *-hitachi) 16380d6f290aSmrg os=hiux 16399027f4a0Smrg ;; 16409027f4a0Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16410d6f290aSmrg os=sysv 16429027f4a0Smrg ;; 16439027f4a0Smrg *-cbm) 16440d6f290aSmrg os=amigaos 16459027f4a0Smrg ;; 16469027f4a0Smrg *-dg) 16470d6f290aSmrg os=dgux 16489027f4a0Smrg ;; 16499027f4a0Smrg *-dolphin) 16500d6f290aSmrg os=sysv3 16519027f4a0Smrg ;; 16529027f4a0Smrg m68k-ccur) 16530d6f290aSmrg os=rtu 16549027f4a0Smrg ;; 16559027f4a0Smrg m88k-omron*) 16560d6f290aSmrg os=luna 16579027f4a0Smrg ;; 1658376c9fa8Smrg *-next) 16590d6f290aSmrg os=nextstep 16609027f4a0Smrg ;; 16619027f4a0Smrg *-sequent) 16620d6f290aSmrg os=ptx 16639027f4a0Smrg ;; 16649027f4a0Smrg *-crds) 16650d6f290aSmrg os=unos 16669027f4a0Smrg ;; 16679027f4a0Smrg *-ns) 16680d6f290aSmrg os=genix 16699027f4a0Smrg ;; 16709027f4a0Smrg i370-*) 16710d6f290aSmrg os=mvs 16729027f4a0Smrg ;; 16739027f4a0Smrg *-gould) 16740d6f290aSmrg os=sysv 16759027f4a0Smrg ;; 16769027f4a0Smrg *-highlevel) 16770d6f290aSmrg os=bsd 16789027f4a0Smrg ;; 16799027f4a0Smrg *-encore) 16800d6f290aSmrg os=bsd 16819027f4a0Smrg ;; 16829027f4a0Smrg *-sgi) 16830d6f290aSmrg os=irix 16849027f4a0Smrg ;; 16859027f4a0Smrg *-siemens) 16860d6f290aSmrg os=sysv4 16879027f4a0Smrg ;; 16889027f4a0Smrg *-masscomp) 16890d6f290aSmrg os=rtu 16909027f4a0Smrg ;; 16919027f4a0Smrg f30[01]-fujitsu | f700-fujitsu) 16920d6f290aSmrg os=uxpv 16939027f4a0Smrg ;; 16949027f4a0Smrg *-rom68k) 16950d6f290aSmrg os=coff 16969027f4a0Smrg ;; 16979027f4a0Smrg *-*bug) 16980d6f290aSmrg os=coff 16999027f4a0Smrg ;; 17009027f4a0Smrg *-apple) 17010d6f290aSmrg os=macos 17029027f4a0Smrg ;; 17039027f4a0Smrg *-atari*) 17040d6f290aSmrg os=mint 17050d6f290aSmrg ;; 17060d6f290aSmrg *-wrs) 17070d6f290aSmrg os=vxworks 17089027f4a0Smrg ;; 17099027f4a0Smrg *) 17100d6f290aSmrg os=none 17119027f4a0Smrg ;; 17129027f4a0Smrgesac 17130d6f290aSmrg 17149027f4a0Smrgfi 17159027f4a0Smrg 17160d6f290aSmrg# Now, validate our (potentially fixed-up) OS. 17170d6f290aSmrgcase $os in 17180d6f290aSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17190d6f290aSmrg musl* | newlib* | relibc* | uclibc*) 17200d6f290aSmrg ;; 17210d6f290aSmrg # Likewise for "kernel-abi" 17220d6f290aSmrg eabi* | gnueabi*) 17230d6f290aSmrg ;; 17240d6f290aSmrg # VxWorks passes extra cpu info in the 4th filed. 17250d6f290aSmrg simlinux | simwindows | spe) 17260d6f290aSmrg ;; 17270d6f290aSmrg # Now accept the basic system types. 17280d6f290aSmrg # The portable systems comes first. 17290d6f290aSmrg # Each alternative MUST end in a * to match a version number. 17300d6f290aSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17310d6f290aSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17320d6f290aSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17330d6f290aSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17340d6f290aSmrg | hiux* | abug | nacl* | netware* | windows* \ 17350d6f290aSmrg | os9* | macos* | osx* | ios* \ 17360d6f290aSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17370d6f290aSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17380d6f290aSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17390d6f290aSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17400d6f290aSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17410d6f290aSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17420d6f290aSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17430d6f290aSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17440d6f290aSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17450d6f290aSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17460d6f290aSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17470d6f290aSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17480d6f290aSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17490d6f290aSmrg | midipix* | mingw32* | mingw64* | mint* \ 17500d6f290aSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17510d6f290aSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17520d6f290aSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17530d6f290aSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17540d6f290aSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17550d6f290aSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17560d6f290aSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17570d6f290aSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17580d6f290aSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17590d6f290aSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1760224bc9c7Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1761224bc9c7Smrg | fiwix* | mlibc* ) 17620d6f290aSmrg ;; 17630d6f290aSmrg # This one is extra strict with allowed versions 17640d6f290aSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17650d6f290aSmrg # Don't forget version if it is 3.2v4 or newer. 17660d6f290aSmrg ;; 17670d6f290aSmrg none) 17680d6f290aSmrg ;; 1769224bc9c7Smrg kernel* ) 1770224bc9c7Smrg # Restricted further below 1771224bc9c7Smrg ;; 17720d6f290aSmrg *) 17730d6f290aSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17740d6f290aSmrg exit 1 17750d6f290aSmrg ;; 17760d6f290aSmrgesac 17770d6f290aSmrg 17780d6f290aSmrg# As a final step for OS-related things, validate the OS-kernel combination 17790d6f290aSmrg# (given a valid OS), if there is a kernel. 17800d6f290aSmrgcase $kernel-$os in 17810d6f290aSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 1782224bc9c7Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 17830d6f290aSmrg ;; 17840d6f290aSmrg uclinux-uclibc* ) 17850d6f290aSmrg ;; 1786224bc9c7Smrg managarm-mlibc* | managarm-kernel* ) 1787224bc9c7Smrg ;; 1788224bc9c7Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 17890d6f290aSmrg # These are just libc implementations, not actual OSes, and thus 17900d6f290aSmrg # require a kernel. 17910d6f290aSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17920d6f290aSmrg exit 1 17930d6f290aSmrg ;; 1794224bc9c7Smrg -kernel* ) 1795224bc9c7Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 1796224bc9c7Smrg exit 1 1797224bc9c7Smrg ;; 1798224bc9c7Smrg *-kernel* ) 1799224bc9c7Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 1800224bc9c7Smrg exit 1 1801224bc9c7Smrg ;; 18020d6f290aSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 18030d6f290aSmrg ;; 18040d6f290aSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 18050d6f290aSmrg ;; 18060d6f290aSmrg nto-qnx*) 18070d6f290aSmrg ;; 18080d6f290aSmrg os2-emx) 18090d6f290aSmrg ;; 18100d6f290aSmrg *-eabi* | *-gnueabi*) 18110d6f290aSmrg ;; 18120d6f290aSmrg -*) 18130d6f290aSmrg # Blank kernel with real OS is always fine. 18140d6f290aSmrg ;; 18150d6f290aSmrg *-*) 18160d6f290aSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 18170d6f290aSmrg exit 1 18180d6f290aSmrg ;; 18190d6f290aSmrgesac 18200d6f290aSmrg 18219027f4a0Smrg# Here we handle the case where we know the os, and the CPU type, but not the 18229027f4a0Smrg# manufacturer. We pick the logical manufacturer. 18230d6f290aSmrgcase $vendor in 18240d6f290aSmrg unknown) 18250d6f290aSmrg case $cpu-$os in 18260d6f290aSmrg *-riscix*) 18279027f4a0Smrg vendor=acorn 18289027f4a0Smrg ;; 18290d6f290aSmrg *-sunos*) 18309027f4a0Smrg vendor=sun 18319027f4a0Smrg ;; 18320d6f290aSmrg *-cnk* | *-aix*) 18339027f4a0Smrg vendor=ibm 18349027f4a0Smrg ;; 18350d6f290aSmrg *-beos*) 18369027f4a0Smrg vendor=be 18379027f4a0Smrg ;; 18380d6f290aSmrg *-hpux*) 18399027f4a0Smrg vendor=hp 18409027f4a0Smrg ;; 18410d6f290aSmrg *-mpeix*) 18429027f4a0Smrg vendor=hp 18439027f4a0Smrg ;; 18440d6f290aSmrg *-hiux*) 18459027f4a0Smrg vendor=hitachi 18469027f4a0Smrg ;; 18470d6f290aSmrg *-unos*) 18489027f4a0Smrg vendor=crds 18499027f4a0Smrg ;; 18500d6f290aSmrg *-dgux*) 18519027f4a0Smrg vendor=dg 18529027f4a0Smrg ;; 18530d6f290aSmrg *-luna*) 18549027f4a0Smrg vendor=omron 18559027f4a0Smrg ;; 18560d6f290aSmrg *-genix*) 18579027f4a0Smrg vendor=ns 18589027f4a0Smrg ;; 18590d6f290aSmrg *-clix*) 18600d6f290aSmrg vendor=intergraph 18610d6f290aSmrg ;; 18620d6f290aSmrg *-mvs* | *-opened*) 18630d6f290aSmrg vendor=ibm 18640d6f290aSmrg ;; 18650d6f290aSmrg *-os400*) 18669027f4a0Smrg vendor=ibm 18679027f4a0Smrg ;; 18680d6f290aSmrg s390-* | s390x-*) 18699027f4a0Smrg vendor=ibm 18709027f4a0Smrg ;; 18710d6f290aSmrg *-ptx*) 18729027f4a0Smrg vendor=sequent 18739027f4a0Smrg ;; 18740d6f290aSmrg *-tpf*) 18759027f4a0Smrg vendor=ibm 18769027f4a0Smrg ;; 18770d6f290aSmrg *-vxsim* | *-vxworks* | *-windiss*) 18789027f4a0Smrg vendor=wrs 18799027f4a0Smrg ;; 18800d6f290aSmrg *-aux*) 18819027f4a0Smrg vendor=apple 18829027f4a0Smrg ;; 18830d6f290aSmrg *-hms*) 18849027f4a0Smrg vendor=hitachi 18859027f4a0Smrg ;; 18860d6f290aSmrg *-mpw* | *-macos*) 18879027f4a0Smrg vendor=apple 18889027f4a0Smrg ;; 18890d6f290aSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18909027f4a0Smrg vendor=atari 18919027f4a0Smrg ;; 18920d6f290aSmrg *-vos*) 18939027f4a0Smrg vendor=stratus 18949027f4a0Smrg ;; 18959027f4a0Smrg esac 18969027f4a0Smrg ;; 18979027f4a0Smrgesac 18989027f4a0Smrg 18990d6f290aSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 19009027f4a0Smrgexit 19019027f4a0Smrg 19029027f4a0Smrg# Local variables: 19030d6f290aSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 19049027f4a0Smrg# time-stamp-start: "timestamp='" 19059027f4a0Smrg# time-stamp-format: "%:y-%02m-%02d" 19069027f4a0Smrg# time-stamp-end: "'" 19079027f4a0Smrg# End: 1908