1a0195d5fSmrg#! /bin/sh 2a0195d5fSmrg# Configuration validation subroutine script. 30f5b81e5Smrg# Copyright 1992-2021 Free Software Foundation, Inc. 4a0195d5fSmrg 50f5b81e5Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 60f5b81e5Smrg 70f5b81e5Smrgtimestamp='2021-08-14' 8a0195d5fSmrg 940a76396Smrg# This file is free software; you can redistribute it and/or modify it 1040a76396Smrg# under the terms of the GNU General Public License as published by 1140a76396Smrg# the Free Software Foundation; either version 3 of the License, or 12a0195d5fSmrg# (at your option) any later version. 13a0195d5fSmrg# 1440a76396Smrg# This program is distributed in the hope that it will be useful, but 1540a76396Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1640a76396Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1740a76396Smrg# General Public License for more details. 18a0195d5fSmrg# 19a0195d5fSmrg# You should have received a copy of the GNU General Public License 20feee4651Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21a0195d5fSmrg# 22a0195d5fSmrg# As a special exception to the GNU General Public License, if you 23a0195d5fSmrg# distribute this file as part of a program that contains a 24a0195d5fSmrg# configuration script generated by Autoconf, you may include it under 2540a76396Smrg# the same distribution terms that you use for the rest of that 2640a76396Smrg# program. This Exception is an additional permission under section 7 2740a76396Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28a0195d5fSmrg 29a0195d5fSmrg 30feee4651Smrg# Please send patches to <config-patches@gnu.org>. 31a0195d5fSmrg# 32a0195d5fSmrg# Configuration subroutine to validate and canonicalize a configuration type. 33a0195d5fSmrg# Supply the specified configuration type as an argument. 34a0195d5fSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 35a0195d5fSmrg# Otherwise, we print the canonical config type on stdout and succeed. 36a0195d5fSmrg 376f5dd5c2Smrg# You can get the latest version of this script from: 380f5b81e5Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 396f5dd5c2Smrg 40a0195d5fSmrg# This file is supposed to be the same for all GNU packages 41a0195d5fSmrg# and recognize all the CPU types, system types and aliases 42a0195d5fSmrg# that are meaningful with *any* GNU software. 43a0195d5fSmrg# Each package is responsible for reporting which valid configurations 44a0195d5fSmrg# it does not support. The user should be able to distinguish 45a0195d5fSmrg# a failure to support a valid configuration from a meaningless 46a0195d5fSmrg# configuration. 47a0195d5fSmrg 48a0195d5fSmrg# The goal of this file is to map all the various variations of a given 49a0195d5fSmrg# machine specification into a single specification in the form: 50a0195d5fSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51a0195d5fSmrg# or in some cases, the newer four-part form: 52a0195d5fSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53a0195d5fSmrg# It is wrong to echo any other type of specification. 54a0195d5fSmrg 550f5b81e5Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 560f5b81e5Smrg# about features and limitations of the classic Bourne shell that were 570f5b81e5Smrg# superseded or lifted in POSIX. However, this script identifies a wide 580f5b81e5Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 590f5b81e5Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 600f5b81e5Smrg# have a pre-POSIX /bin/sh. 610f5b81e5Smrg 62a0195d5fSmrgme=`echo "$0" | sed -e 's,.*/,,'` 63a0195d5fSmrg 64a0195d5fSmrgusage="\ 65feee4651SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66a0195d5fSmrg 67a0195d5fSmrgCanonicalize a configuration name. 68a0195d5fSmrg 69feee4651SmrgOptions: 70a0195d5fSmrg -h, --help print this help, then exit 71a0195d5fSmrg -t, --time-stamp print date of last modification, then exit 72a0195d5fSmrg -v, --version print version number, then exit 73a0195d5fSmrg 74a0195d5fSmrgReport bugs and patches to <config-patches@gnu.org>." 75a0195d5fSmrg 76a0195d5fSmrgversion="\ 77a0195d5fSmrgGNU config.sub ($timestamp) 78a0195d5fSmrg 790f5b81e5SmrgCopyright 1992-2021 Free Software Foundation, Inc. 80a0195d5fSmrg 81a0195d5fSmrgThis is free software; see the source for copying conditions. There is NO 82a0195d5fSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83a0195d5fSmrg 84a0195d5fSmrghelp=" 85a0195d5fSmrgTry \`$me --help' for more information." 86a0195d5fSmrg 87a0195d5fSmrg# Parse command line 88a0195d5fSmrgwhile test $# -gt 0 ; do 89a0195d5fSmrg case $1 in 90a0195d5fSmrg --time-stamp | --time* | -t ) 91a0195d5fSmrg echo "$timestamp" ; exit ;; 92a0195d5fSmrg --version | -v ) 93a0195d5fSmrg echo "$version" ; exit ;; 94a0195d5fSmrg --help | --h* | -h ) 95a0195d5fSmrg echo "$usage"; exit ;; 96a0195d5fSmrg -- ) # Stop option processing 97a0195d5fSmrg shift; break ;; 98a0195d5fSmrg - ) # Use stdin as input. 99a0195d5fSmrg break ;; 100a0195d5fSmrg -* ) 1010f5b81e5Smrg echo "$me: invalid option $1$help" >&2 102a0195d5fSmrg exit 1 ;; 103a0195d5fSmrg 104a0195d5fSmrg *local*) 105a0195d5fSmrg # First pass through any local machine types. 106feee4651Smrg echo "$1" 107a0195d5fSmrg exit ;; 108a0195d5fSmrg 109a0195d5fSmrg * ) 110a0195d5fSmrg break ;; 111a0195d5fSmrg esac 112a0195d5fSmrgdone 113a0195d5fSmrg 114a0195d5fSmrgcase $# in 115a0195d5fSmrg 0) echo "$me: missing argument$help" >&2 116a0195d5fSmrg exit 1;; 117a0195d5fSmrg 1) ;; 118a0195d5fSmrg *) echo "$me: too many arguments$help" >&2 119a0195d5fSmrg exit 1;; 120a0195d5fSmrgesac 121a0195d5fSmrg 1220f5b81e5Smrg# Split fields of configuration type 1230f5b81e5Smrg# shellcheck disable=SC2162 1240f5b81e5Smrgsaved_IFS=$IFS 1250f5b81e5SmrgIFS="-" read field1 field2 field3 field4 <<EOF 1260f5b81e5Smrg$1 1270f5b81e5SmrgEOF 1280f5b81e5SmrgIFS=$saved_IFS 129a0195d5fSmrg 1300f5b81e5Smrg# Separate into logical components for further validation 1310f5b81e5Smrgcase $1 in 1320f5b81e5Smrg *-*-*-*-*) 1330f5b81e5Smrg echo Invalid configuration \`"$1"\': more than four components >&2 1340f5b81e5Smrg exit 1 13540a76396Smrg ;; 1360f5b81e5Smrg *-*-*-*) 1370f5b81e5Smrg basic_machine=$field1-$field2 1380f5b81e5Smrg basic_os=$field3-$field4 139a0195d5fSmrg ;; 1400f5b81e5Smrg *-*-*) 1410f5b81e5Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1420f5b81e5Smrg # parts 1430f5b81e5Smrg maybe_os=$field2-$field3 1440f5b81e5Smrg case $maybe_os in 1450f5b81e5Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 1460f5b81e5Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1470f5b81e5Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1480f5b81e5Smrg | storm-chaos* | os2-emx* | rtmk-nova*) 1490f5b81e5Smrg basic_machine=$field1 1500f5b81e5Smrg basic_os=$maybe_os 1510f5b81e5Smrg ;; 1520f5b81e5Smrg android-linux) 1530f5b81e5Smrg basic_machine=$field1-unknown 1540f5b81e5Smrg basic_os=linux-android 1550f5b81e5Smrg ;; 1560f5b81e5Smrg *) 1570f5b81e5Smrg basic_machine=$field1-$field2 1580f5b81e5Smrg basic_os=$field3 1590f5b81e5Smrg ;; 1600f5b81e5Smrg esac 161a0195d5fSmrg ;; 1620f5b81e5Smrg *-*) 1630f5b81e5Smrg # A lone config we happen to match not fitting any pattern 1640f5b81e5Smrg case $field1-$field2 in 1650f5b81e5Smrg decstation-3100) 1660f5b81e5Smrg basic_machine=mips-dec 1670f5b81e5Smrg basic_os= 1680f5b81e5Smrg ;; 1690f5b81e5Smrg *-*) 1700f5b81e5Smrg # Second component is usually, but not always the OS 1710f5b81e5Smrg case $field2 in 1720f5b81e5Smrg # Prevent following clause from handling this valid os 1730f5b81e5Smrg sun*os*) 1740f5b81e5Smrg basic_machine=$field1 1750f5b81e5Smrg basic_os=$field2 1760f5b81e5Smrg ;; 1770f5b81e5Smrg zephyr*) 1780f5b81e5Smrg basic_machine=$field1-unknown 1790f5b81e5Smrg basic_os=$field2 1800f5b81e5Smrg ;; 1810f5b81e5Smrg # Manufacturers 1820f5b81e5Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1830f5b81e5Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1840f5b81e5Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1850f5b81e5Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1860f5b81e5Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1870f5b81e5Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1880f5b81e5Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1890f5b81e5Smrg | microblaze* | sim | cisco \ 1900f5b81e5Smrg | oki | wec | wrs | winbond) 1910f5b81e5Smrg basic_machine=$field1-$field2 1920f5b81e5Smrg basic_os= 1930f5b81e5Smrg ;; 1940f5b81e5Smrg *) 1950f5b81e5Smrg basic_machine=$field1 1960f5b81e5Smrg basic_os=$field2 1970f5b81e5Smrg ;; 1980f5b81e5Smrg esac 1990f5b81e5Smrg ;; 2000f5b81e5Smrg esac 201a0195d5fSmrg ;; 2020f5b81e5Smrg *) 2030f5b81e5Smrg # Convert single-component short-hands not valid as part of 2040f5b81e5Smrg # multi-component configurations. 2050f5b81e5Smrg case $field1 in 2060f5b81e5Smrg 386bsd) 2070f5b81e5Smrg basic_machine=i386-pc 2080f5b81e5Smrg basic_os=bsd 2090f5b81e5Smrg ;; 2100f5b81e5Smrg a29khif) 2110f5b81e5Smrg basic_machine=a29k-amd 2120f5b81e5Smrg basic_os=udi 2130f5b81e5Smrg ;; 2140f5b81e5Smrg adobe68k) 2150f5b81e5Smrg basic_machine=m68010-adobe 2160f5b81e5Smrg basic_os=scout 2170f5b81e5Smrg ;; 2180f5b81e5Smrg alliant) 2190f5b81e5Smrg basic_machine=fx80-alliant 2200f5b81e5Smrg basic_os= 2210f5b81e5Smrg ;; 2220f5b81e5Smrg altos | altos3068) 2230f5b81e5Smrg basic_machine=m68k-altos 2240f5b81e5Smrg basic_os= 2250f5b81e5Smrg ;; 2260f5b81e5Smrg am29k) 2270f5b81e5Smrg basic_machine=a29k-none 2280f5b81e5Smrg basic_os=bsd 2290f5b81e5Smrg ;; 2300f5b81e5Smrg amdahl) 2310f5b81e5Smrg basic_machine=580-amdahl 2320f5b81e5Smrg basic_os=sysv 2330f5b81e5Smrg ;; 2340f5b81e5Smrg amiga) 2350f5b81e5Smrg basic_machine=m68k-unknown 2360f5b81e5Smrg basic_os= 2370f5b81e5Smrg ;; 2380f5b81e5Smrg amigaos | amigados) 2390f5b81e5Smrg basic_machine=m68k-unknown 2400f5b81e5Smrg basic_os=amigaos 2410f5b81e5Smrg ;; 2420f5b81e5Smrg amigaunix | amix) 2430f5b81e5Smrg basic_machine=m68k-unknown 2440f5b81e5Smrg basic_os=sysv4 2450f5b81e5Smrg ;; 2460f5b81e5Smrg apollo68) 2470f5b81e5Smrg basic_machine=m68k-apollo 2480f5b81e5Smrg basic_os=sysv 2490f5b81e5Smrg ;; 2500f5b81e5Smrg apollo68bsd) 2510f5b81e5Smrg basic_machine=m68k-apollo 2520f5b81e5Smrg basic_os=bsd 2530f5b81e5Smrg ;; 2540f5b81e5Smrg aros) 2550f5b81e5Smrg basic_machine=i386-pc 2560f5b81e5Smrg basic_os=aros 2570f5b81e5Smrg ;; 2580f5b81e5Smrg aux) 2590f5b81e5Smrg basic_machine=m68k-apple 2600f5b81e5Smrg basic_os=aux 2610f5b81e5Smrg ;; 2620f5b81e5Smrg balance) 2630f5b81e5Smrg basic_machine=ns32k-sequent 2640f5b81e5Smrg basic_os=dynix 2650f5b81e5Smrg ;; 2660f5b81e5Smrg blackfin) 2670f5b81e5Smrg basic_machine=bfin-unknown 2680f5b81e5Smrg basic_os=linux 2690f5b81e5Smrg ;; 2700f5b81e5Smrg cegcc) 2710f5b81e5Smrg basic_machine=arm-unknown 2720f5b81e5Smrg basic_os=cegcc 2730f5b81e5Smrg ;; 2740f5b81e5Smrg convex-c1) 2750f5b81e5Smrg basic_machine=c1-convex 2760f5b81e5Smrg basic_os=bsd 2770f5b81e5Smrg ;; 2780f5b81e5Smrg convex-c2) 2790f5b81e5Smrg basic_machine=c2-convex 2800f5b81e5Smrg basic_os=bsd 2810f5b81e5Smrg ;; 2820f5b81e5Smrg convex-c32) 2830f5b81e5Smrg basic_machine=c32-convex 2840f5b81e5Smrg basic_os=bsd 2850f5b81e5Smrg ;; 2860f5b81e5Smrg convex-c34) 2870f5b81e5Smrg basic_machine=c34-convex 2880f5b81e5Smrg basic_os=bsd 2890f5b81e5Smrg ;; 2900f5b81e5Smrg convex-c38) 2910f5b81e5Smrg basic_machine=c38-convex 2920f5b81e5Smrg basic_os=bsd 2930f5b81e5Smrg ;; 2940f5b81e5Smrg cray) 2950f5b81e5Smrg basic_machine=j90-cray 2960f5b81e5Smrg basic_os=unicos 2970f5b81e5Smrg ;; 2980f5b81e5Smrg crds | unos) 2990f5b81e5Smrg basic_machine=m68k-crds 3000f5b81e5Smrg basic_os= 3010f5b81e5Smrg ;; 3020f5b81e5Smrg da30) 3030f5b81e5Smrg basic_machine=m68k-da30 3040f5b81e5Smrg basic_os= 3050f5b81e5Smrg ;; 3060f5b81e5Smrg decstation | pmax | pmin | dec3100 | decstatn) 3070f5b81e5Smrg basic_machine=mips-dec 3080f5b81e5Smrg basic_os= 3090f5b81e5Smrg ;; 3100f5b81e5Smrg delta88) 3110f5b81e5Smrg basic_machine=m88k-motorola 3120f5b81e5Smrg basic_os=sysv3 3130f5b81e5Smrg ;; 3140f5b81e5Smrg dicos) 3150f5b81e5Smrg basic_machine=i686-pc 3160f5b81e5Smrg basic_os=dicos 3170f5b81e5Smrg ;; 3180f5b81e5Smrg djgpp) 3190f5b81e5Smrg basic_machine=i586-pc 3200f5b81e5Smrg basic_os=msdosdjgpp 3210f5b81e5Smrg ;; 3220f5b81e5Smrg ebmon29k) 3230f5b81e5Smrg basic_machine=a29k-amd 3240f5b81e5Smrg basic_os=ebmon 3250f5b81e5Smrg ;; 3260f5b81e5Smrg es1800 | OSE68k | ose68k | ose | OSE) 3270f5b81e5Smrg basic_machine=m68k-ericsson 3280f5b81e5Smrg basic_os=ose 3290f5b81e5Smrg ;; 3300f5b81e5Smrg gmicro) 3310f5b81e5Smrg basic_machine=tron-gmicro 3320f5b81e5Smrg basic_os=sysv 3330f5b81e5Smrg ;; 3340f5b81e5Smrg go32) 3350f5b81e5Smrg basic_machine=i386-pc 3360f5b81e5Smrg basic_os=go32 3370f5b81e5Smrg ;; 3380f5b81e5Smrg h8300hms) 3390f5b81e5Smrg basic_machine=h8300-hitachi 3400f5b81e5Smrg basic_os=hms 3410f5b81e5Smrg ;; 3420f5b81e5Smrg h8300xray) 3430f5b81e5Smrg basic_machine=h8300-hitachi 3440f5b81e5Smrg basic_os=xray 3450f5b81e5Smrg ;; 3460f5b81e5Smrg h8500hms) 3470f5b81e5Smrg basic_machine=h8500-hitachi 3480f5b81e5Smrg basic_os=hms 3490f5b81e5Smrg ;; 3500f5b81e5Smrg harris) 3510f5b81e5Smrg basic_machine=m88k-harris 3520f5b81e5Smrg basic_os=sysv3 3530f5b81e5Smrg ;; 3540f5b81e5Smrg hp300 | hp300hpux) 3550f5b81e5Smrg basic_machine=m68k-hp 3560f5b81e5Smrg basic_os=hpux 3570f5b81e5Smrg ;; 3580f5b81e5Smrg hp300bsd) 3590f5b81e5Smrg basic_machine=m68k-hp 3600f5b81e5Smrg basic_os=bsd 3610f5b81e5Smrg ;; 3620f5b81e5Smrg hppaosf) 3630f5b81e5Smrg basic_machine=hppa1.1-hp 3640f5b81e5Smrg basic_os=osf 3650f5b81e5Smrg ;; 3660f5b81e5Smrg hppro) 3670f5b81e5Smrg basic_machine=hppa1.1-hp 3680f5b81e5Smrg basic_os=proelf 3690f5b81e5Smrg ;; 3700f5b81e5Smrg i386mach) 3710f5b81e5Smrg basic_machine=i386-mach 3720f5b81e5Smrg basic_os=mach 3730f5b81e5Smrg ;; 3740f5b81e5Smrg isi68 | isi) 3750f5b81e5Smrg basic_machine=m68k-isi 3760f5b81e5Smrg basic_os=sysv 3770f5b81e5Smrg ;; 3780f5b81e5Smrg m68knommu) 3790f5b81e5Smrg basic_machine=m68k-unknown 3800f5b81e5Smrg basic_os=linux 3810f5b81e5Smrg ;; 3820f5b81e5Smrg magnum | m3230) 3830f5b81e5Smrg basic_machine=mips-mips 3840f5b81e5Smrg basic_os=sysv 3850f5b81e5Smrg ;; 3860f5b81e5Smrg merlin) 3870f5b81e5Smrg basic_machine=ns32k-utek 3880f5b81e5Smrg basic_os=sysv 3890f5b81e5Smrg ;; 3900f5b81e5Smrg mingw64) 3910f5b81e5Smrg basic_machine=x86_64-pc 3920f5b81e5Smrg basic_os=mingw64 3930f5b81e5Smrg ;; 3940f5b81e5Smrg mingw32) 3950f5b81e5Smrg basic_machine=i686-pc 3960f5b81e5Smrg basic_os=mingw32 3970f5b81e5Smrg ;; 3980f5b81e5Smrg mingw32ce) 3990f5b81e5Smrg basic_machine=arm-unknown 4000f5b81e5Smrg basic_os=mingw32ce 4010f5b81e5Smrg ;; 4020f5b81e5Smrg monitor) 4030f5b81e5Smrg basic_machine=m68k-rom68k 4040f5b81e5Smrg basic_os=coff 4050f5b81e5Smrg ;; 4060f5b81e5Smrg morphos) 4070f5b81e5Smrg basic_machine=powerpc-unknown 4080f5b81e5Smrg basic_os=morphos 4090f5b81e5Smrg ;; 4100f5b81e5Smrg moxiebox) 4110f5b81e5Smrg basic_machine=moxie-unknown 4120f5b81e5Smrg basic_os=moxiebox 4130f5b81e5Smrg ;; 4140f5b81e5Smrg msdos) 4150f5b81e5Smrg basic_machine=i386-pc 4160f5b81e5Smrg basic_os=msdos 4170f5b81e5Smrg ;; 4180f5b81e5Smrg msys) 4190f5b81e5Smrg basic_machine=i686-pc 4200f5b81e5Smrg basic_os=msys 4210f5b81e5Smrg ;; 4220f5b81e5Smrg mvs) 4230f5b81e5Smrg basic_machine=i370-ibm 4240f5b81e5Smrg basic_os=mvs 4250f5b81e5Smrg ;; 4260f5b81e5Smrg nacl) 4270f5b81e5Smrg basic_machine=le32-unknown 4280f5b81e5Smrg basic_os=nacl 4290f5b81e5Smrg ;; 4300f5b81e5Smrg ncr3000) 4310f5b81e5Smrg basic_machine=i486-ncr 4320f5b81e5Smrg basic_os=sysv4 4330f5b81e5Smrg ;; 4340f5b81e5Smrg netbsd386) 4350f5b81e5Smrg basic_machine=i386-pc 4360f5b81e5Smrg basic_os=netbsd 4370f5b81e5Smrg ;; 4380f5b81e5Smrg netwinder) 4390f5b81e5Smrg basic_machine=armv4l-rebel 4400f5b81e5Smrg basic_os=linux 4410f5b81e5Smrg ;; 4420f5b81e5Smrg news | news700 | news800 | news900) 4430f5b81e5Smrg basic_machine=m68k-sony 4440f5b81e5Smrg basic_os=newsos 4450f5b81e5Smrg ;; 4460f5b81e5Smrg news1000) 4470f5b81e5Smrg basic_machine=m68030-sony 4480f5b81e5Smrg basic_os=newsos 4490f5b81e5Smrg ;; 4500f5b81e5Smrg necv70) 4510f5b81e5Smrg basic_machine=v70-nec 4520f5b81e5Smrg basic_os=sysv 4530f5b81e5Smrg ;; 4540f5b81e5Smrg nh3000) 4550f5b81e5Smrg basic_machine=m68k-harris 4560f5b81e5Smrg basic_os=cxux 4570f5b81e5Smrg ;; 4580f5b81e5Smrg nh[45]000) 4590f5b81e5Smrg basic_machine=m88k-harris 4600f5b81e5Smrg basic_os=cxux 4610f5b81e5Smrg ;; 4620f5b81e5Smrg nindy960) 4630f5b81e5Smrg basic_machine=i960-intel 4640f5b81e5Smrg basic_os=nindy 4650f5b81e5Smrg ;; 4660f5b81e5Smrg mon960) 4670f5b81e5Smrg basic_machine=i960-intel 4680f5b81e5Smrg basic_os=mon960 4690f5b81e5Smrg ;; 4700f5b81e5Smrg nonstopux) 4710f5b81e5Smrg basic_machine=mips-compaq 4720f5b81e5Smrg basic_os=nonstopux 4730f5b81e5Smrg ;; 4740f5b81e5Smrg os400) 4750f5b81e5Smrg basic_machine=powerpc-ibm 4760f5b81e5Smrg basic_os=os400 4770f5b81e5Smrg ;; 4780f5b81e5Smrg OSE68000 | ose68000) 4790f5b81e5Smrg basic_machine=m68000-ericsson 4800f5b81e5Smrg basic_os=ose 4810f5b81e5Smrg ;; 4820f5b81e5Smrg os68k) 4830f5b81e5Smrg basic_machine=m68k-none 4840f5b81e5Smrg basic_os=os68k 4850f5b81e5Smrg ;; 4860f5b81e5Smrg paragon) 4870f5b81e5Smrg basic_machine=i860-intel 4880f5b81e5Smrg basic_os=osf 4890f5b81e5Smrg ;; 4900f5b81e5Smrg parisc) 4910f5b81e5Smrg basic_machine=hppa-unknown 4920f5b81e5Smrg basic_os=linux 4930f5b81e5Smrg ;; 4940f5b81e5Smrg psp) 4950f5b81e5Smrg basic_machine=mipsallegrexel-sony 4960f5b81e5Smrg basic_os=psp 4970f5b81e5Smrg ;; 4980f5b81e5Smrg pw32) 4990f5b81e5Smrg basic_machine=i586-unknown 5000f5b81e5Smrg basic_os=pw32 5010f5b81e5Smrg ;; 5020f5b81e5Smrg rdos | rdos64) 5030f5b81e5Smrg basic_machine=x86_64-pc 5040f5b81e5Smrg basic_os=rdos 5050f5b81e5Smrg ;; 5060f5b81e5Smrg rdos32) 5070f5b81e5Smrg basic_machine=i386-pc 5080f5b81e5Smrg basic_os=rdos 5090f5b81e5Smrg ;; 5100f5b81e5Smrg rom68k) 5110f5b81e5Smrg basic_machine=m68k-rom68k 5120f5b81e5Smrg basic_os=coff 5130f5b81e5Smrg ;; 5140f5b81e5Smrg sa29200) 5150f5b81e5Smrg basic_machine=a29k-amd 5160f5b81e5Smrg basic_os=udi 5170f5b81e5Smrg ;; 5180f5b81e5Smrg sei) 5190f5b81e5Smrg basic_machine=mips-sei 5200f5b81e5Smrg basic_os=seiux 5210f5b81e5Smrg ;; 5220f5b81e5Smrg sequent) 5230f5b81e5Smrg basic_machine=i386-sequent 5240f5b81e5Smrg basic_os= 5250f5b81e5Smrg ;; 5260f5b81e5Smrg sps7) 5270f5b81e5Smrg basic_machine=m68k-bull 5280f5b81e5Smrg basic_os=sysv2 5290f5b81e5Smrg ;; 5300f5b81e5Smrg st2000) 5310f5b81e5Smrg basic_machine=m68k-tandem 5320f5b81e5Smrg basic_os= 5330f5b81e5Smrg ;; 5340f5b81e5Smrg stratus) 5350f5b81e5Smrg basic_machine=i860-stratus 5360f5b81e5Smrg basic_os=sysv4 5370f5b81e5Smrg ;; 5380f5b81e5Smrg sun2) 5390f5b81e5Smrg basic_machine=m68000-sun 5400f5b81e5Smrg basic_os= 5410f5b81e5Smrg ;; 5420f5b81e5Smrg sun2os3) 5430f5b81e5Smrg basic_machine=m68000-sun 5440f5b81e5Smrg basic_os=sunos3 5450f5b81e5Smrg ;; 5460f5b81e5Smrg sun2os4) 5470f5b81e5Smrg basic_machine=m68000-sun 5480f5b81e5Smrg basic_os=sunos4 5490f5b81e5Smrg ;; 5500f5b81e5Smrg sun3) 5510f5b81e5Smrg basic_machine=m68k-sun 5520f5b81e5Smrg basic_os= 5530f5b81e5Smrg ;; 5540f5b81e5Smrg sun3os3) 5550f5b81e5Smrg basic_machine=m68k-sun 5560f5b81e5Smrg basic_os=sunos3 5570f5b81e5Smrg ;; 5580f5b81e5Smrg sun3os4) 5590f5b81e5Smrg basic_machine=m68k-sun 5600f5b81e5Smrg basic_os=sunos4 5610f5b81e5Smrg ;; 5620f5b81e5Smrg sun4) 5630f5b81e5Smrg basic_machine=sparc-sun 5640f5b81e5Smrg basic_os= 5650f5b81e5Smrg ;; 5660f5b81e5Smrg sun4os3) 5670f5b81e5Smrg basic_machine=sparc-sun 5680f5b81e5Smrg basic_os=sunos3 5690f5b81e5Smrg ;; 5700f5b81e5Smrg sun4os4) 5710f5b81e5Smrg basic_machine=sparc-sun 5720f5b81e5Smrg basic_os=sunos4 5730f5b81e5Smrg ;; 5740f5b81e5Smrg sun4sol2) 5750f5b81e5Smrg basic_machine=sparc-sun 5760f5b81e5Smrg basic_os=solaris2 5770f5b81e5Smrg ;; 5780f5b81e5Smrg sun386 | sun386i | roadrunner) 5790f5b81e5Smrg basic_machine=i386-sun 5800f5b81e5Smrg basic_os= 5810f5b81e5Smrg ;; 5820f5b81e5Smrg sv1) 5830f5b81e5Smrg basic_machine=sv1-cray 5840f5b81e5Smrg basic_os=unicos 5850f5b81e5Smrg ;; 5860f5b81e5Smrg symmetry) 5870f5b81e5Smrg basic_machine=i386-sequent 5880f5b81e5Smrg basic_os=dynix 5890f5b81e5Smrg ;; 5900f5b81e5Smrg t3e) 5910f5b81e5Smrg basic_machine=alphaev5-cray 5920f5b81e5Smrg basic_os=unicos 5930f5b81e5Smrg ;; 5940f5b81e5Smrg t90) 5950f5b81e5Smrg basic_machine=t90-cray 5960f5b81e5Smrg basic_os=unicos 5970f5b81e5Smrg ;; 5980f5b81e5Smrg toad1) 5990f5b81e5Smrg basic_machine=pdp10-xkl 6000f5b81e5Smrg basic_os=tops20 6010f5b81e5Smrg ;; 6020f5b81e5Smrg tpf) 6030f5b81e5Smrg basic_machine=s390x-ibm 6040f5b81e5Smrg basic_os=tpf 6050f5b81e5Smrg ;; 6060f5b81e5Smrg udi29k) 6070f5b81e5Smrg basic_machine=a29k-amd 6080f5b81e5Smrg basic_os=udi 6090f5b81e5Smrg ;; 6100f5b81e5Smrg ultra3) 6110f5b81e5Smrg basic_machine=a29k-nyu 6120f5b81e5Smrg basic_os=sym1 6130f5b81e5Smrg ;; 6140f5b81e5Smrg v810 | necv810) 6150f5b81e5Smrg basic_machine=v810-nec 6160f5b81e5Smrg basic_os=none 6170f5b81e5Smrg ;; 6180f5b81e5Smrg vaxv) 6190f5b81e5Smrg basic_machine=vax-dec 6200f5b81e5Smrg basic_os=sysv 6210f5b81e5Smrg ;; 6220f5b81e5Smrg vms) 6230f5b81e5Smrg basic_machine=vax-dec 6240f5b81e5Smrg basic_os=vms 6250f5b81e5Smrg ;; 6260f5b81e5Smrg vsta) 6270f5b81e5Smrg basic_machine=i386-pc 6280f5b81e5Smrg basic_os=vsta 6290f5b81e5Smrg ;; 6300f5b81e5Smrg vxworks960) 6310f5b81e5Smrg basic_machine=i960-wrs 6320f5b81e5Smrg basic_os=vxworks 6330f5b81e5Smrg ;; 6340f5b81e5Smrg vxworks68) 6350f5b81e5Smrg basic_machine=m68k-wrs 6360f5b81e5Smrg basic_os=vxworks 6370f5b81e5Smrg ;; 6380f5b81e5Smrg vxworks29k) 6390f5b81e5Smrg basic_machine=a29k-wrs 6400f5b81e5Smrg basic_os=vxworks 6410f5b81e5Smrg ;; 6420f5b81e5Smrg xbox) 6430f5b81e5Smrg basic_machine=i686-pc 6440f5b81e5Smrg basic_os=mingw32 6450f5b81e5Smrg ;; 6460f5b81e5Smrg ymp) 6470f5b81e5Smrg basic_machine=ymp-cray 6480f5b81e5Smrg basic_os=unicos 6490f5b81e5Smrg ;; 6500f5b81e5Smrg *) 6510f5b81e5Smrg basic_machine=$1 6520f5b81e5Smrg basic_os= 6530f5b81e5Smrg ;; 6540f5b81e5Smrg esac 655a0195d5fSmrg ;; 656a0195d5fSmrgesac 657a0195d5fSmrg 6580f5b81e5Smrg# Decode 1-component or ad-hoc basic machines 659a0195d5fSmrgcase $basic_machine in 6600f5b81e5Smrg # Here we handle the default manufacturer of certain CPU types. It is in 6610f5b81e5Smrg # some cases the only manufacturer, in others, it is the most popular. 6620f5b81e5Smrg w89k) 6630f5b81e5Smrg cpu=hppa1.1 6640f5b81e5Smrg vendor=winbond 665feee4651Smrg ;; 6660f5b81e5Smrg op50n) 6670f5b81e5Smrg cpu=hppa1.1 6680f5b81e5Smrg vendor=oki 669a0195d5fSmrg ;; 6700f5b81e5Smrg op60c) 6710f5b81e5Smrg cpu=hppa1.1 6720f5b81e5Smrg vendor=oki 673a0195d5fSmrg ;; 6740f5b81e5Smrg ibm*) 6750f5b81e5Smrg cpu=i370 6760f5b81e5Smrg vendor=ibm 677a0195d5fSmrg ;; 6780f5b81e5Smrg orion105) 6790f5b81e5Smrg cpu=clipper 6800f5b81e5Smrg vendor=highlevel 68140a76396Smrg ;; 6820f5b81e5Smrg mac | mpw | mac-mpw) 6830f5b81e5Smrg cpu=m68k 6840f5b81e5Smrg vendor=apple 68540a76396Smrg ;; 6860f5b81e5Smrg pmac | pmac-mpw) 6870f5b81e5Smrg cpu=powerpc 6880f5b81e5Smrg vendor=apple 68940a76396Smrg ;; 69040a76396Smrg 691a0195d5fSmrg # Recognize the various machine names and aliases which stand 692a0195d5fSmrg # for a CPU type and a company and sometimes even an OS. 693a0195d5fSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6940f5b81e5Smrg cpu=m68000 6950f5b81e5Smrg vendor=att 696a0195d5fSmrg ;; 697a0195d5fSmrg 3b*) 6980f5b81e5Smrg cpu=we32k 6990f5b81e5Smrg vendor=att 700a0195d5fSmrg ;; 7016f5dd5c2Smrg bluegene*) 7020f5b81e5Smrg cpu=powerpc 7030f5b81e5Smrg vendor=ibm 7040f5b81e5Smrg basic_os=cnk 705a0195d5fSmrg ;; 706a0195d5fSmrg decsystem10* | dec10*) 7070f5b81e5Smrg cpu=pdp10 7080f5b81e5Smrg vendor=dec 7090f5b81e5Smrg basic_os=tops10 710a0195d5fSmrg ;; 711a0195d5fSmrg decsystem20* | dec20*) 7120f5b81e5Smrg cpu=pdp10 7130f5b81e5Smrg vendor=dec 7140f5b81e5Smrg basic_os=tops20 715a0195d5fSmrg ;; 716a0195d5fSmrg delta | 3300 | motorola-3300 | motorola-delta \ 717a0195d5fSmrg | 3300-motorola | delta-motorola) 7180f5b81e5Smrg cpu=m68k 7190f5b81e5Smrg vendor=motorola 720a0195d5fSmrg ;; 721feee4651Smrg dpx2*) 7220f5b81e5Smrg cpu=m68k 7230f5b81e5Smrg vendor=bull 7240f5b81e5Smrg basic_os=sysv3 725a0195d5fSmrg ;; 726a0195d5fSmrg encore | umax | mmax) 7270f5b81e5Smrg cpu=ns32k 7280f5b81e5Smrg vendor=encore 729a0195d5fSmrg ;; 7300f5b81e5Smrg elxsi) 7310f5b81e5Smrg cpu=elxsi 7320f5b81e5Smrg vendor=elxsi 7330f5b81e5Smrg basic_os=${basic_os:-bsd} 734a0195d5fSmrg ;; 735a0195d5fSmrg fx2800) 7360f5b81e5Smrg cpu=i860 7370f5b81e5Smrg vendor=alliant 738a0195d5fSmrg ;; 739a0195d5fSmrg genix) 7400f5b81e5Smrg cpu=ns32k 7410f5b81e5Smrg vendor=ns 742a0195d5fSmrg ;; 743a0195d5fSmrg h3050r* | hiux*) 7440f5b81e5Smrg cpu=hppa1.1 7450f5b81e5Smrg vendor=hitachi 7460f5b81e5Smrg basic_os=hiuxwe2 747a0195d5fSmrg ;; 748a0195d5fSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7490f5b81e5Smrg cpu=hppa1.0 7500f5b81e5Smrg vendor=hp 751a0195d5fSmrg ;; 752a0195d5fSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7530f5b81e5Smrg cpu=m68000 7540f5b81e5Smrg vendor=hp 755a0195d5fSmrg ;; 756a0195d5fSmrg hp9k3[2-9][0-9]) 7570f5b81e5Smrg cpu=m68k 7580f5b81e5Smrg vendor=hp 759a0195d5fSmrg ;; 760a0195d5fSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7610f5b81e5Smrg cpu=hppa1.0 7620f5b81e5Smrg vendor=hp 763a0195d5fSmrg ;; 764a0195d5fSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7650f5b81e5Smrg cpu=hppa1.1 7660f5b81e5Smrg vendor=hp 767a0195d5fSmrg ;; 768a0195d5fSmrg hp9k78[0-9] | hp78[0-9]) 769a0195d5fSmrg # FIXME: really hppa2.0-hp 7700f5b81e5Smrg cpu=hppa1.1 7710f5b81e5Smrg vendor=hp 772a0195d5fSmrg ;; 773a0195d5fSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774a0195d5fSmrg # FIXME: really hppa2.0-hp 7750f5b81e5Smrg cpu=hppa1.1 7760f5b81e5Smrg vendor=hp 777a0195d5fSmrg ;; 778a0195d5fSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7790f5b81e5Smrg cpu=hppa1.1 7800f5b81e5Smrg vendor=hp 781a0195d5fSmrg ;; 782a0195d5fSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7830f5b81e5Smrg cpu=hppa1.0 7840f5b81e5Smrg vendor=hp 785a0195d5fSmrg ;; 786a0195d5fSmrg i*86v32) 7870f5b81e5Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7880f5b81e5Smrg vendor=pc 7890f5b81e5Smrg basic_os=sysv32 790a0195d5fSmrg ;; 791a0195d5fSmrg i*86v4*) 7920f5b81e5Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7930f5b81e5Smrg vendor=pc 7940f5b81e5Smrg basic_os=sysv4 795a0195d5fSmrg ;; 796a0195d5fSmrg i*86v) 7970f5b81e5Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7980f5b81e5Smrg vendor=pc 7990f5b81e5Smrg basic_os=sysv 800a0195d5fSmrg ;; 801a0195d5fSmrg i*86sol2) 8020f5b81e5Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8030f5b81e5Smrg vendor=pc 8040f5b81e5Smrg basic_os=solaris2 805a0195d5fSmrg ;; 8060f5b81e5Smrg j90 | j90-cray) 8070f5b81e5Smrg cpu=j90 8080f5b81e5Smrg vendor=cray 8090f5b81e5Smrg basic_os=${basic_os:-unicos} 810a0195d5fSmrg ;; 811a0195d5fSmrg iris | iris4d) 8120f5b81e5Smrg cpu=mips 8130f5b81e5Smrg vendor=sgi 8140f5b81e5Smrg case $basic_os in 8150f5b81e5Smrg irix*) 816a0195d5fSmrg ;; 817a0195d5fSmrg *) 8180f5b81e5Smrg basic_os=irix4 819a0195d5fSmrg ;; 820a0195d5fSmrg esac 821a0195d5fSmrg ;; 822a0195d5fSmrg miniframe) 8230f5b81e5Smrg cpu=m68000 8240f5b81e5Smrg vendor=convergent 825a0195d5fSmrg ;; 8260f5b81e5Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8270f5b81e5Smrg cpu=m68k 8280f5b81e5Smrg vendor=atari 8290f5b81e5Smrg basic_os=mint 830a0195d5fSmrg ;; 831a0195d5fSmrg news-3600 | risc-news) 8320f5b81e5Smrg cpu=mips 8330f5b81e5Smrg vendor=sony 8340f5b81e5Smrg basic_os=newsos 835a0195d5fSmrg ;; 836feee4651Smrg next | m*-next) 8370f5b81e5Smrg cpu=m68k 8380f5b81e5Smrg vendor=next 8390f5b81e5Smrg case $basic_os in 8400f5b81e5Smrg openstep*) 8410f5b81e5Smrg ;; 8420f5b81e5Smrg nextstep*) 843a0195d5fSmrg ;; 8440f5b81e5Smrg ns2*) 8450f5b81e5Smrg basic_os=nextstep2 846a0195d5fSmrg ;; 847a0195d5fSmrg *) 8480f5b81e5Smrg basic_os=nextstep3 849a0195d5fSmrg ;; 850a0195d5fSmrg esac 851a0195d5fSmrg ;; 852a0195d5fSmrg np1) 8530f5b81e5Smrg cpu=np1 8540f5b81e5Smrg vendor=gould 855feee4651Smrg ;; 856a0195d5fSmrg op50n-* | op60c-*) 8570f5b81e5Smrg cpu=hppa1.1 8580f5b81e5Smrg vendor=oki 8590f5b81e5Smrg basic_os=proelf 860a0195d5fSmrg ;; 861a0195d5fSmrg pa-hitachi) 8620f5b81e5Smrg cpu=hppa1.1 8630f5b81e5Smrg vendor=hitachi 8640f5b81e5Smrg basic_os=hiuxwe2 865a0195d5fSmrg ;; 866a0195d5fSmrg pbd) 8670f5b81e5Smrg cpu=sparc 8680f5b81e5Smrg vendor=tti 869a0195d5fSmrg ;; 870a0195d5fSmrg pbb) 8710f5b81e5Smrg cpu=m68k 8720f5b81e5Smrg vendor=tti 873a0195d5fSmrg ;; 8740f5b81e5Smrg pc532) 8750f5b81e5Smrg cpu=ns32k 8760f5b81e5Smrg vendor=pc532 877a0195d5fSmrg ;; 878a0195d5fSmrg pn) 8790f5b81e5Smrg cpu=pn 8800f5b81e5Smrg vendor=gould 881a0195d5fSmrg ;; 8820f5b81e5Smrg power) 8830f5b81e5Smrg cpu=power 8840f5b81e5Smrg vendor=ibm 885a0195d5fSmrg ;; 8860f5b81e5Smrg ps2) 8870f5b81e5Smrg cpu=i386 8880f5b81e5Smrg vendor=ibm 889a0195d5fSmrg ;; 8900f5b81e5Smrg rm[46]00) 8910f5b81e5Smrg cpu=mips 8920f5b81e5Smrg vendor=siemens 893a0195d5fSmrg ;; 8940f5b81e5Smrg rtpc | rtpc-*) 8950f5b81e5Smrg cpu=romp 8960f5b81e5Smrg vendor=ibm 897a0195d5fSmrg ;; 8980f5b81e5Smrg sde) 8990f5b81e5Smrg cpu=mipsisa32 9000f5b81e5Smrg vendor=sde 9010f5b81e5Smrg basic_os=${basic_os:-elf} 902a0195d5fSmrg ;; 9030f5b81e5Smrg simso-wrs) 9040f5b81e5Smrg cpu=sparclite 9050f5b81e5Smrg vendor=wrs 9060f5b81e5Smrg basic_os=vxworks 907a0195d5fSmrg ;; 9080f5b81e5Smrg tower | tower-32) 9090f5b81e5Smrg cpu=m68k 9100f5b81e5Smrg vendor=ncr 911a0195d5fSmrg ;; 9120f5b81e5Smrg vpp*|vx|vx-*) 9130f5b81e5Smrg cpu=f301 9140f5b81e5Smrg vendor=fujitsu 91540a76396Smrg ;; 9160f5b81e5Smrg w65) 9170f5b81e5Smrg cpu=w65 9180f5b81e5Smrg vendor=wdc 919a0195d5fSmrg ;; 9200f5b81e5Smrg w89k-*) 9210f5b81e5Smrg cpu=hppa1.1 9220f5b81e5Smrg vendor=winbond 9230f5b81e5Smrg basic_os=proelf 924a0195d5fSmrg ;; 9250f5b81e5Smrg none) 9260f5b81e5Smrg cpu=none 9270f5b81e5Smrg vendor=none 928a0195d5fSmrg ;; 9290f5b81e5Smrg leon|leon[3-9]) 9300f5b81e5Smrg cpu=sparc 9310f5b81e5Smrg vendor=$basic_machine 932a0195d5fSmrg ;; 9330f5b81e5Smrg leon-*|leon[3-9]-*) 9340f5b81e5Smrg cpu=sparc 9350f5b81e5Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936a0195d5fSmrg ;; 9370f5b81e5Smrg 9380f5b81e5Smrg *-*) 9390f5b81e5Smrg # shellcheck disable=SC2162 9400f5b81e5Smrg saved_IFS=$IFS 9410f5b81e5Smrg IFS="-" read cpu vendor <<EOF 9420f5b81e5Smrg$basic_machine 9430f5b81e5SmrgEOF 9440f5b81e5Smrg IFS=$saved_IFS 945a0195d5fSmrg ;; 9460f5b81e5Smrg # We use `pc' rather than `unknown' 9470f5b81e5Smrg # because (1) that's what they normally are, and 9480f5b81e5Smrg # (2) the word "unknown" tends to confuse beginning users. 9490f5b81e5Smrg i*86 | x86_64) 9500f5b81e5Smrg cpu=$basic_machine 9510f5b81e5Smrg vendor=pc 952a0195d5fSmrg ;; 9530f5b81e5Smrg # These rules are duplicated from below for sake of the special case above; 9540f5b81e5Smrg # i.e. things that normalized to x86 arches should also default to "pc" 9550f5b81e5Smrg pc98) 9560f5b81e5Smrg cpu=i386 9570f5b81e5Smrg vendor=pc 958a0195d5fSmrg ;; 9590f5b81e5Smrg x64 | amd64) 9600f5b81e5Smrg cpu=x86_64 9610f5b81e5Smrg vendor=pc 962a0195d5fSmrg ;; 9630f5b81e5Smrg # Recognize the basic CPU types without company name. 9640f5b81e5Smrg *) 9650f5b81e5Smrg cpu=$basic_machine 9660f5b81e5Smrg vendor=unknown 967a0195d5fSmrg ;; 9680f5b81e5Smrgesac 9690f5b81e5Smrg 9700f5b81e5Smrgunset -v basic_machine 9710f5b81e5Smrg 9720f5b81e5Smrg# Decode basic machines in the full and proper CPU-Company form. 9730f5b81e5Smrgcase $cpu-$vendor in 9740f5b81e5Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9750f5b81e5Smrg # some cases the only manufacturer, in others, it is the most popular. 9760f5b81e5Smrg craynv-unknown) 9770f5b81e5Smrg vendor=cray 9780f5b81e5Smrg basic_os=${basic_os:-unicosmp} 979a0195d5fSmrg ;; 9800f5b81e5Smrg c90-unknown | c90-cray) 9810f5b81e5Smrg vendor=cray 9820f5b81e5Smrg basic_os=${Basic_os:-unicos} 983a0195d5fSmrg ;; 9840f5b81e5Smrg fx80-unknown) 9850f5b81e5Smrg vendor=alliant 986a0195d5fSmrg ;; 9870f5b81e5Smrg romp-unknown) 9880f5b81e5Smrg vendor=ibm 989a0195d5fSmrg ;; 9900f5b81e5Smrg mmix-unknown) 9910f5b81e5Smrg vendor=knuth 992a0195d5fSmrg ;; 9930f5b81e5Smrg microblaze-unknown | microblazeel-unknown) 9940f5b81e5Smrg vendor=xilinx 995a0195d5fSmrg ;; 9960f5b81e5Smrg rs6000-unknown) 9970f5b81e5Smrg vendor=ibm 998a0195d5fSmrg ;; 9990f5b81e5Smrg vax-unknown) 10000f5b81e5Smrg vendor=dec 1001a0195d5fSmrg ;; 10020f5b81e5Smrg pdp11-unknown) 10030f5b81e5Smrg vendor=dec 100440a76396Smrg ;; 10050f5b81e5Smrg we32k-unknown) 10060f5b81e5Smrg vendor=att 1007a0195d5fSmrg ;; 10080f5b81e5Smrg cydra-unknown) 10090f5b81e5Smrg vendor=cydrome 1010a0195d5fSmrg ;; 10110f5b81e5Smrg i370-ibm*) 10120f5b81e5Smrg vendor=ibm 1013a0195d5fSmrg ;; 10140f5b81e5Smrg orion-unknown) 10150f5b81e5Smrg vendor=highlevel 1016a0195d5fSmrg ;; 10170f5b81e5Smrg xps-unknown | xps100-unknown) 10180f5b81e5Smrg cpu=xps100 10190f5b81e5Smrg vendor=honeywell 1020a0195d5fSmrg ;; 10210f5b81e5Smrg 10220f5b81e5Smrg # Here we normalize CPU types with a missing or matching vendor 10230f5b81e5Smrg dpx20-unknown | dpx20-bull) 10240f5b81e5Smrg cpu=rs6000 10250f5b81e5Smrg vendor=bull 10260f5b81e5Smrg basic_os=${basic_os:-bosx} 1027a0195d5fSmrg ;; 10280f5b81e5Smrg 10290f5b81e5Smrg # Here we normalize CPU types irrespective of the vendor 10300f5b81e5Smrg amd64-*) 10310f5b81e5Smrg cpu=x86_64 1032a0195d5fSmrg ;; 10330f5b81e5Smrg blackfin-*) 10340f5b81e5Smrg cpu=bfin 10350f5b81e5Smrg basic_os=linux 1036a0195d5fSmrg ;; 10370f5b81e5Smrg c54x-*) 10380f5b81e5Smrg cpu=tic54x 1039a0195d5fSmrg ;; 10400f5b81e5Smrg c55x-*) 10410f5b81e5Smrg cpu=tic55x 1042a0195d5fSmrg ;; 10430f5b81e5Smrg c6x-*) 10440f5b81e5Smrg cpu=tic6x 1045a0195d5fSmrg ;; 10460f5b81e5Smrg e500v[12]-*) 10470f5b81e5Smrg cpu=powerpc 10480f5b81e5Smrg basic_os=${basic_os}"spe" 1049a0195d5fSmrg ;; 10500f5b81e5Smrg mips3*-*) 10510f5b81e5Smrg cpu=mips64 1052a0195d5fSmrg ;; 10530f5b81e5Smrg ms1-*) 10540f5b81e5Smrg cpu=mt 1055a0195d5fSmrg ;; 10560f5b81e5Smrg m68knommu-*) 10570f5b81e5Smrg cpu=m68k 10580f5b81e5Smrg basic_os=linux 1059a0195d5fSmrg ;; 10600f5b81e5Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10610f5b81e5Smrg cpu=s12z 1062a0195d5fSmrg ;; 10630f5b81e5Smrg openrisc-*) 10640f5b81e5Smrg cpu=or32 1065a0195d5fSmrg ;; 10660f5b81e5Smrg parisc-*) 10670f5b81e5Smrg cpu=hppa 10680f5b81e5Smrg basic_os=linux 1069a0195d5fSmrg ;; 10700f5b81e5Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10710f5b81e5Smrg cpu=i586 1072a0195d5fSmrg ;; 10730f5b81e5Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 10740f5b81e5Smrg cpu=i686 1075a0195d5fSmrg ;; 10760f5b81e5Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10770f5b81e5Smrg cpu=i686 1078a0195d5fSmrg ;; 10790f5b81e5Smrg pentium4-*) 10800f5b81e5Smrg cpu=i786 1081a0195d5fSmrg ;; 10820f5b81e5Smrg pc98-*) 10830f5b81e5Smrg cpu=i386 1084a0195d5fSmrg ;; 10850f5b81e5Smrg ppc-* | ppcbe-*) 10860f5b81e5Smrg cpu=powerpc 1087a0195d5fSmrg ;; 10880f5b81e5Smrg ppcle-* | powerpclittle-*) 10890f5b81e5Smrg cpu=powerpcle 1090a0195d5fSmrg ;; 10910f5b81e5Smrg ppc64-*) 10920f5b81e5Smrg cpu=powerpc64 1093a0195d5fSmrg ;; 10940f5b81e5Smrg ppc64le-* | powerpc64little-*) 10950f5b81e5Smrg cpu=powerpc64le 1096a0195d5fSmrg ;; 10970f5b81e5Smrg sb1-*) 10980f5b81e5Smrg cpu=mipsisa64sb1 1099a0195d5fSmrg ;; 11000f5b81e5Smrg sb1el-*) 11010f5b81e5Smrg cpu=mipsisa64sb1el 1102a0195d5fSmrg ;; 11030f5b81e5Smrg sh5e[lb]-*) 11040f5b81e5Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1105a0195d5fSmrg ;; 11060f5b81e5Smrg spur-*) 11070f5b81e5Smrg cpu=spur 1108a0195d5fSmrg ;; 11090f5b81e5Smrg strongarm-* | thumb-*) 11100f5b81e5Smrg cpu=arm 1111a0195d5fSmrg ;; 11120f5b81e5Smrg tx39-*) 11130f5b81e5Smrg cpu=mipstx39 1114feee4651Smrg ;; 11150f5b81e5Smrg tx39el-*) 11160f5b81e5Smrg cpu=mipstx39el 1117a0195d5fSmrg ;; 11180f5b81e5Smrg x64-*) 11190f5b81e5Smrg cpu=x86_64 1120a0195d5fSmrg ;; 112140a76396Smrg xscale-* | xscalee[bl]-*) 11220f5b81e5Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1123a0195d5fSmrg ;; 11240f5b81e5Smrg arm64-*) 11250f5b81e5Smrg cpu=aarch64 1126a0195d5fSmrg ;; 1127a0195d5fSmrg 11280f5b81e5Smrg # Recognize the canonical CPU Types that limit and/or modify the 11290f5b81e5Smrg # company names they are paired with. 11300f5b81e5Smrg cr16-*) 11310f5b81e5Smrg basic_os=${basic_os:-elf} 1132a0195d5fSmrg ;; 11330f5b81e5Smrg crisv32-* | etraxfs*-*) 11340f5b81e5Smrg cpu=crisv32 11350f5b81e5Smrg vendor=axis 1136a0195d5fSmrg ;; 11370f5b81e5Smrg cris-* | etrax*-*) 11380f5b81e5Smrg cpu=cris 11390f5b81e5Smrg vendor=axis 1140a0195d5fSmrg ;; 11410f5b81e5Smrg crx-*) 11420f5b81e5Smrg basic_os=${basic_os:-elf} 1143a0195d5fSmrg ;; 11440f5b81e5Smrg neo-tandem) 11450f5b81e5Smrg cpu=neo 11460f5b81e5Smrg vendor=tandem 1147a0195d5fSmrg ;; 11480f5b81e5Smrg nse-tandem) 11490f5b81e5Smrg cpu=nse 11500f5b81e5Smrg vendor=tandem 1151a0195d5fSmrg ;; 11520f5b81e5Smrg nsr-tandem) 11530f5b81e5Smrg cpu=nsr 11540f5b81e5Smrg vendor=tandem 1155a0195d5fSmrg ;; 11560f5b81e5Smrg nsv-tandem) 11570f5b81e5Smrg cpu=nsv 11580f5b81e5Smrg vendor=tandem 1159a0195d5fSmrg ;; 11600f5b81e5Smrg nsx-tandem) 11610f5b81e5Smrg cpu=nsx 11620f5b81e5Smrg vendor=tandem 1163a0195d5fSmrg ;; 11640f5b81e5Smrg mipsallegrexel-sony) 11650f5b81e5Smrg cpu=mipsallegrexel 11660f5b81e5Smrg vendor=sony 1167a0195d5fSmrg ;; 11680f5b81e5Smrg tile*-*) 11690f5b81e5Smrg basic_os=${basic_os:-linux-gnu} 1170a0195d5fSmrg ;; 11710f5b81e5Smrg 1172a0195d5fSmrg *) 11730f5b81e5Smrg # Recognize the canonical CPU types that are allowed with any 11740f5b81e5Smrg # company name. 11750f5b81e5Smrg case $cpu in 11760f5b81e5Smrg 1750a | 580 \ 11770f5b81e5Smrg | a29k \ 11780f5b81e5Smrg | aarch64 | aarch64_be \ 11790f5b81e5Smrg | abacus \ 11800f5b81e5Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11810f5b81e5Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11820f5b81e5Smrg | alphapca5[67] | alpha64pca5[67] \ 11830f5b81e5Smrg | am33_2.0 \ 11840f5b81e5Smrg | amdgcn \ 11850f5b81e5Smrg | arc | arceb | arc32 | arc64 \ 11860f5b81e5Smrg | arm | arm[lb]e | arme[lb] | armv* \ 11870f5b81e5Smrg | avr | avr32 \ 11880f5b81e5Smrg | asmjs \ 11890f5b81e5Smrg | ba \ 11900f5b81e5Smrg | be32 | be64 \ 11910f5b81e5Smrg | bfin | bpf | bs2000 \ 11920f5b81e5Smrg | c[123]* | c30 | [cjt]90 | c4x \ 11930f5b81e5Smrg | c8051 | clipper | craynv | csky | cydra \ 11940f5b81e5Smrg | d10v | d30v | dlx | dsp16xx \ 11950f5b81e5Smrg | e2k | elxsi | epiphany \ 11960f5b81e5Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 11970f5b81e5Smrg | h8300 | h8500 \ 11980f5b81e5Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 11990f5b81e5Smrg | hexagon \ 12000f5b81e5Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12010f5b81e5Smrg | ip2k | iq2000 \ 12020f5b81e5Smrg | k1om \ 12030f5b81e5Smrg | le32 | le64 \ 12040f5b81e5Smrg | lm32 \ 12050f5b81e5Smrg | loongarch32 | loongarch64 | loongarchx32 \ 12060f5b81e5Smrg | m32c | m32r | m32rle \ 12070f5b81e5Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12080f5b81e5Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12090f5b81e5Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12100f5b81e5Smrg | microblaze | microblazeel \ 12110f5b81e5Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12120f5b81e5Smrg | mips16 \ 12130f5b81e5Smrg | mips64 | mips64eb | mips64el \ 12140f5b81e5Smrg | mips64octeon | mips64octeonel \ 12150f5b81e5Smrg | mips64orion | mips64orionel \ 12160f5b81e5Smrg | mips64r5900 | mips64r5900el \ 12170f5b81e5Smrg | mips64vr | mips64vrel \ 12180f5b81e5Smrg | mips64vr4100 | mips64vr4100el \ 12190f5b81e5Smrg | mips64vr4300 | mips64vr4300el \ 12200f5b81e5Smrg | mips64vr5000 | mips64vr5000el \ 12210f5b81e5Smrg | mips64vr5900 | mips64vr5900el \ 12220f5b81e5Smrg | mipsisa32 | mipsisa32el \ 12230f5b81e5Smrg | mipsisa32r2 | mipsisa32r2el \ 12240f5b81e5Smrg | mipsisa32r3 | mipsisa32r3el \ 12250f5b81e5Smrg | mipsisa32r5 | mipsisa32r5el \ 12260f5b81e5Smrg | mipsisa32r6 | mipsisa32r6el \ 12270f5b81e5Smrg | mipsisa64 | mipsisa64el \ 12280f5b81e5Smrg | mipsisa64r2 | mipsisa64r2el \ 12290f5b81e5Smrg | mipsisa64r3 | mipsisa64r3el \ 12300f5b81e5Smrg | mipsisa64r5 | mipsisa64r5el \ 12310f5b81e5Smrg | mipsisa64r6 | mipsisa64r6el \ 12320f5b81e5Smrg | mipsisa64sb1 | mipsisa64sb1el \ 12330f5b81e5Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 12340f5b81e5Smrg | mipsr5900 | mipsr5900el \ 12350f5b81e5Smrg | mipstx39 | mipstx39el \ 12360f5b81e5Smrg | mmix \ 12370f5b81e5Smrg | mn10200 | mn10300 \ 12380f5b81e5Smrg | moxie \ 12390f5b81e5Smrg | mt \ 12400f5b81e5Smrg | msp430 \ 12410f5b81e5Smrg | nds32 | nds32le | nds32be \ 12420f5b81e5Smrg | nfp \ 12430f5b81e5Smrg | nios | nios2 | nios2eb | nios2el \ 12440f5b81e5Smrg | none | np1 | ns16k | ns32k | nvptx \ 12450f5b81e5Smrg | open8 \ 12460f5b81e5Smrg | or1k* \ 12470f5b81e5Smrg | or32 \ 12480f5b81e5Smrg | orion \ 12490f5b81e5Smrg | picochip \ 12500f5b81e5Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12510f5b81e5Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12520f5b81e5Smrg | pru \ 12530f5b81e5Smrg | pyramid \ 12540f5b81e5Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12550f5b81e5Smrg | rl78 | romp | rs6000 | rx \ 12560f5b81e5Smrg | s390 | s390x \ 12570f5b81e5Smrg | score \ 12580f5b81e5Smrg | sh | shl \ 12590f5b81e5Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12600f5b81e5Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12610f5b81e5Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12620f5b81e5Smrg | sparclite \ 12630f5b81e5Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12640f5b81e5Smrg | spu \ 12650f5b81e5Smrg | tahoe \ 12660f5b81e5Smrg | thumbv7* \ 12670f5b81e5Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12680f5b81e5Smrg | tron \ 12690f5b81e5Smrg | ubicom32 \ 12700f5b81e5Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12710f5b81e5Smrg | vax \ 12720f5b81e5Smrg | visium \ 12730f5b81e5Smrg | w65 \ 12740f5b81e5Smrg | wasm32 | wasm64 \ 12750f5b81e5Smrg | we32k \ 12760f5b81e5Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12770f5b81e5Smrg | xstormy16 | xtensa* \ 12780f5b81e5Smrg | ymp \ 12790f5b81e5Smrg | z8k | z80) 12800f5b81e5Smrg ;; 12810f5b81e5Smrg 12820f5b81e5Smrg *) 12830f5b81e5Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12840f5b81e5Smrg exit 1 12850f5b81e5Smrg ;; 12860f5b81e5Smrg esac 1287a0195d5fSmrg ;; 1288a0195d5fSmrgesac 1289a0195d5fSmrg 1290a0195d5fSmrg# Here we canonicalize certain aliases for manufacturers. 12910f5b81e5Smrgcase $vendor in 12920f5b81e5Smrg digital*) 12930f5b81e5Smrg vendor=dec 1294a0195d5fSmrg ;; 12950f5b81e5Smrg commodore*) 12960f5b81e5Smrg vendor=cbm 1297a0195d5fSmrg ;; 1298a0195d5fSmrg *) 1299a0195d5fSmrg ;; 1300a0195d5fSmrgesac 1301a0195d5fSmrg 1302a0195d5fSmrg# Decode manufacturer-specific aliases for certain operating systems. 1303a0195d5fSmrg 13040f5b81e5Smrgif test x$basic_os != x 1305a0195d5fSmrgthen 13060f5b81e5Smrg 13070f5b81e5Smrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 13080f5b81e5Smrg# set os. 13090f5b81e5Smrgcase $basic_os in 13100f5b81e5Smrg gnu/linux*) 13110f5b81e5Smrg kernel=linux 13120f5b81e5Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13130f5b81e5Smrg ;; 13140f5b81e5Smrg os2-emx) 13150f5b81e5Smrg kernel=os2 13160f5b81e5Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13170f5b81e5Smrg ;; 13180f5b81e5Smrg nto-qnx*) 13190f5b81e5Smrg kernel=nto 13200f5b81e5Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13210f5b81e5Smrg ;; 13220f5b81e5Smrg *-*) 13230f5b81e5Smrg # shellcheck disable=SC2162 13240f5b81e5Smrg saved_IFS=$IFS 13250f5b81e5Smrg IFS="-" read kernel os <<EOF 13260f5b81e5Smrg$basic_os 13270f5b81e5SmrgEOF 13280f5b81e5Smrg IFS=$saved_IFS 13290f5b81e5Smrg ;; 13300f5b81e5Smrg # Default OS when just kernel was specified 13310f5b81e5Smrg nto*) 13320f5b81e5Smrg kernel=nto 13330f5b81e5Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13340f5b81e5Smrg ;; 13350f5b81e5Smrg linux*) 13360f5b81e5Smrg kernel=linux 13370f5b81e5Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13380f5b81e5Smrg ;; 13390f5b81e5Smrg *) 13400f5b81e5Smrg kernel= 13410f5b81e5Smrg os=$basic_os 13420f5b81e5Smrg ;; 13430f5b81e5Smrgesac 13440f5b81e5Smrg 13450f5b81e5Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13460f5b81e5Smrg# etc.) 1347a0195d5fSmrgcase $os in 1348feee4651Smrg # First match some system type aliases that might get confused 1349feee4651Smrg # with valid system types. 13500f5b81e5Smrg # solaris* is a basic system type, with this one exception. 13510f5b81e5Smrg auroraux) 13520f5b81e5Smrg os=auroraux 13536f5dd5c2Smrg ;; 13540f5b81e5Smrg bluegene*) 13550f5b81e5Smrg os=cnk 1356a0195d5fSmrg ;; 13570f5b81e5Smrg solaris1 | solaris1.*) 13580f5b81e5Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1359a0195d5fSmrg ;; 13600f5b81e5Smrg solaris) 13610f5b81e5Smrg os=solaris2 1362a0195d5fSmrg ;; 13630f5b81e5Smrg unixware*) 13640f5b81e5Smrg os=sysv4.2uw 1365a0195d5fSmrg ;; 1366feee4651Smrg # es1800 is here to avoid being matched by es* (a different OS) 13670f5b81e5Smrg es1800*) 13680f5b81e5Smrg os=ose 1369feee4651Smrg ;; 13700f5b81e5Smrg # Some version numbers need modification 13710f5b81e5Smrg chorusos*) 13720f5b81e5Smrg os=chorusos 1373a0195d5fSmrg ;; 13740f5b81e5Smrg isc) 13750f5b81e5Smrg os=isc2.2 1376a0195d5fSmrg ;; 13770f5b81e5Smrg sco6) 13780f5b81e5Smrg os=sco5v6 1379a0195d5fSmrg ;; 13800f5b81e5Smrg sco5) 13810f5b81e5Smrg os=sco3.2v5 1382a0195d5fSmrg ;; 13830f5b81e5Smrg sco4) 13840f5b81e5Smrg os=sco3.2v4 1385a0195d5fSmrg ;; 13860f5b81e5Smrg sco3.2.[4-9]*) 13870f5b81e5Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1388a0195d5fSmrg ;; 13890f5b81e5Smrg sco*v* | scout) 13900f5b81e5Smrg # Don't match below 1391a0195d5fSmrg ;; 13920f5b81e5Smrg sco*) 13930f5b81e5Smrg os=sco3.2v2 1394a0195d5fSmrg ;; 13950f5b81e5Smrg psos*) 13960f5b81e5Smrg os=psos 1397a0195d5fSmrg ;; 13980f5b81e5Smrg qnx*) 13990f5b81e5Smrg os=qnx 1400a0195d5fSmrg ;; 14010f5b81e5Smrg hiux*) 14020f5b81e5Smrg os=hiuxwe2 1403a0195d5fSmrg ;; 14040f5b81e5Smrg lynx*178) 14050f5b81e5Smrg os=lynxos178 1406a0195d5fSmrg ;; 14070f5b81e5Smrg lynx*5) 14080f5b81e5Smrg os=lynxos5 1409a0195d5fSmrg ;; 14100f5b81e5Smrg lynxos*) 14110f5b81e5Smrg # don't get caught up in next wildcard 1412a0195d5fSmrg ;; 14130f5b81e5Smrg lynx*) 14140f5b81e5Smrg os=lynxos 1415a0195d5fSmrg ;; 14160f5b81e5Smrg mac[0-9]*) 14170f5b81e5Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1418a0195d5fSmrg ;; 14190f5b81e5Smrg opened*) 14200f5b81e5Smrg os=openedition 1421a0195d5fSmrg ;; 14220f5b81e5Smrg os400*) 14230f5b81e5Smrg os=os400 1424a0195d5fSmrg ;; 14250f5b81e5Smrg sunos5*) 14260f5b81e5Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1427a0195d5fSmrg ;; 14280f5b81e5Smrg sunos6*) 14290f5b81e5Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1430a0195d5fSmrg ;; 14310f5b81e5Smrg wince*) 14320f5b81e5Smrg os=wince 1433a0195d5fSmrg ;; 14340f5b81e5Smrg utek*) 14350f5b81e5Smrg os=bsd 1436a0195d5fSmrg ;; 14370f5b81e5Smrg dynix*) 14380f5b81e5Smrg os=bsd 1439a0195d5fSmrg ;; 14400f5b81e5Smrg acis*) 14410f5b81e5Smrg os=aos 1442a0195d5fSmrg ;; 14430f5b81e5Smrg atheos*) 14440f5b81e5Smrg os=atheos 1445a0195d5fSmrg ;; 14460f5b81e5Smrg syllable*) 14470f5b81e5Smrg os=syllable 14480f5b81e5Smrg ;; 14490f5b81e5Smrg 386bsd) 14500f5b81e5Smrg os=bsd 14510f5b81e5Smrg ;; 14520f5b81e5Smrg ctix* | uts*) 14530f5b81e5Smrg os=sysv 14540f5b81e5Smrg ;; 14550f5b81e5Smrg nova*) 14560f5b81e5Smrg os=rtmk-nova 14570f5b81e5Smrg ;; 14580f5b81e5Smrg ns2) 14590f5b81e5Smrg os=nextstep2 14600f5b81e5Smrg ;; 14610f5b81e5Smrg # Preserve the version number of sinix5. 14620f5b81e5Smrg sinix5.*) 14630f5b81e5Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1464a0195d5fSmrg ;; 14650f5b81e5Smrg sinix*) 14660f5b81e5Smrg os=sysv4 1467a0195d5fSmrg ;; 14680f5b81e5Smrg tpf*) 14690f5b81e5Smrg os=tpf 1470a0195d5fSmrg ;; 14710f5b81e5Smrg triton*) 14720f5b81e5Smrg os=sysv3 1473a0195d5fSmrg ;; 14740f5b81e5Smrg oss*) 14750f5b81e5Smrg os=sysv3 1476a0195d5fSmrg ;; 14770f5b81e5Smrg svr4*) 14780f5b81e5Smrg os=sysv4 1479a0195d5fSmrg ;; 14800f5b81e5Smrg svr3) 14810f5b81e5Smrg os=sysv3 1482a0195d5fSmrg ;; 14830f5b81e5Smrg sysvr4) 14840f5b81e5Smrg os=sysv4 1485a0195d5fSmrg ;; 14860f5b81e5Smrg ose*) 14870f5b81e5Smrg os=ose 1488a0195d5fSmrg ;; 14890f5b81e5Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14900f5b81e5Smrg os=mint 14916600fe5bSmrg ;; 14920f5b81e5Smrg dicos*) 14930f5b81e5Smrg os=dicos 14940f5b81e5Smrg ;; 14950f5b81e5Smrg pikeos*) 1496feee4651Smrg # Until real need of OS specific support for 1497feee4651Smrg # particular features comes up, bare metal 1498feee4651Smrg # configurations are quite functional. 14990f5b81e5Smrg case $cpu in 1500feee4651Smrg arm*) 15010f5b81e5Smrg os=eabi 1502feee4651Smrg ;; 1503feee4651Smrg *) 15040f5b81e5Smrg os=elf 1505feee4651Smrg ;; 1506feee4651Smrg esac 1507feee4651Smrg ;; 1508a0195d5fSmrg *) 15090f5b81e5Smrg # No normalization, but not necessarily accepted, that comes below. 1510a0195d5fSmrg ;; 1511a0195d5fSmrgesac 15120f5b81e5Smrg 1513a0195d5fSmrgelse 1514a0195d5fSmrg 1515a0195d5fSmrg# Here we handle the default operating systems that come with various machines. 1516a0195d5fSmrg# The value should be what the vendor currently ships out the door with their 1517a0195d5fSmrg# machine or put another way, the most popular os provided with the machine. 1518a0195d5fSmrg 1519a0195d5fSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1520a0195d5fSmrg# "-sun"), then you have to tell the case statement up towards the top 1521a0195d5fSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1522a0195d5fSmrg# will signal an error saying that MANUFACTURER isn't an operating 1523a0195d5fSmrg# system, and we'll never get to this point. 1524a0195d5fSmrg 15250f5b81e5Smrgkernel= 15260f5b81e5Smrgcase $cpu-$vendor in 152740a76396Smrg score-*) 15280f5b81e5Smrg os=elf 1529a0195d5fSmrg ;; 153040a76396Smrg spu-*) 15310f5b81e5Smrg os=elf 1532a0195d5fSmrg ;; 1533a0195d5fSmrg *-acorn) 15340f5b81e5Smrg os=riscix1.2 1535a0195d5fSmrg ;; 1536a0195d5fSmrg arm*-rebel) 15370f5b81e5Smrg kernel=linux 15380f5b81e5Smrg os=gnu 1539a0195d5fSmrg ;; 1540a0195d5fSmrg arm*-semi) 15410f5b81e5Smrg os=aout 1542a0195d5fSmrg ;; 154340a76396Smrg c4x-* | tic4x-*) 15440f5b81e5Smrg os=coff 154540a76396Smrg ;; 1546feee4651Smrg c8051-*) 15470f5b81e5Smrg os=elf 15480f5b81e5Smrg ;; 15490f5b81e5Smrg clipper-intergraph) 15500f5b81e5Smrg os=clix 1551feee4651Smrg ;; 155240a76396Smrg hexagon-*) 15530f5b81e5Smrg os=elf 1554a0195d5fSmrg ;; 15552ab73d9fSmrg tic54x-*) 15560f5b81e5Smrg os=coff 15572ab73d9fSmrg ;; 15582ab73d9fSmrg tic55x-*) 15590f5b81e5Smrg os=coff 15602ab73d9fSmrg ;; 15612ab73d9fSmrg tic6x-*) 15620f5b81e5Smrg os=coff 15632ab73d9fSmrg ;; 1564a0195d5fSmrg # This must come before the *-dec entry. 1565a0195d5fSmrg pdp10-*) 15660f5b81e5Smrg os=tops20 1567a0195d5fSmrg ;; 1568a0195d5fSmrg pdp11-*) 15690f5b81e5Smrg os=none 1570a0195d5fSmrg ;; 1571a0195d5fSmrg *-dec | vax-*) 15720f5b81e5Smrg os=ultrix4.2 1573a0195d5fSmrg ;; 1574a0195d5fSmrg m68*-apollo) 15750f5b81e5Smrg os=domain 1576a0195d5fSmrg ;; 1577a0195d5fSmrg i386-sun) 15780f5b81e5Smrg os=sunos4.0.2 1579a0195d5fSmrg ;; 1580a0195d5fSmrg m68000-sun) 15810f5b81e5Smrg os=sunos3 1582a0195d5fSmrg ;; 1583a0195d5fSmrg m68*-cisco) 15840f5b81e5Smrg os=aout 1585a0195d5fSmrg ;; 158640a76396Smrg mep-*) 15870f5b81e5Smrg os=elf 1588a0195d5fSmrg ;; 1589a0195d5fSmrg mips*-cisco) 15900f5b81e5Smrg os=elf 1591a0195d5fSmrg ;; 1592a0195d5fSmrg mips*-*) 15930f5b81e5Smrg os=elf 1594a0195d5fSmrg ;; 1595a0195d5fSmrg or32-*) 15960f5b81e5Smrg os=coff 1597a0195d5fSmrg ;; 1598a0195d5fSmrg *-tti) # must be before sparc entry or we get the wrong os. 15990f5b81e5Smrg os=sysv3 1600a0195d5fSmrg ;; 1601a0195d5fSmrg sparc-* | *-sun) 16020f5b81e5Smrg os=sunos4.1.1 1603a0195d5fSmrg ;; 1604feee4651Smrg pru-*) 16050f5b81e5Smrg os=elf 1606feee4651Smrg ;; 1607a0195d5fSmrg *-be) 16080f5b81e5Smrg os=beos 1609a0195d5fSmrg ;; 1610a0195d5fSmrg *-ibm) 16110f5b81e5Smrg os=aix 1612a0195d5fSmrg ;; 161340a76396Smrg *-knuth) 16140f5b81e5Smrg os=mmixware 1615a0195d5fSmrg ;; 1616a0195d5fSmrg *-wec) 16170f5b81e5Smrg os=proelf 1618a0195d5fSmrg ;; 1619a0195d5fSmrg *-winbond) 16200f5b81e5Smrg os=proelf 1621a0195d5fSmrg ;; 1622a0195d5fSmrg *-oki) 16230f5b81e5Smrg os=proelf 1624a0195d5fSmrg ;; 1625a0195d5fSmrg *-hp) 16260f5b81e5Smrg os=hpux 1627a0195d5fSmrg ;; 1628a0195d5fSmrg *-hitachi) 16290f5b81e5Smrg os=hiux 1630a0195d5fSmrg ;; 1631a0195d5fSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16320f5b81e5Smrg os=sysv 1633a0195d5fSmrg ;; 1634a0195d5fSmrg *-cbm) 16350f5b81e5Smrg os=amigaos 1636a0195d5fSmrg ;; 1637a0195d5fSmrg *-dg) 16380f5b81e5Smrg os=dgux 1639a0195d5fSmrg ;; 1640a0195d5fSmrg *-dolphin) 16410f5b81e5Smrg os=sysv3 1642a0195d5fSmrg ;; 1643a0195d5fSmrg m68k-ccur) 16440f5b81e5Smrg os=rtu 1645a0195d5fSmrg ;; 1646a0195d5fSmrg m88k-omron*) 16470f5b81e5Smrg os=luna 1648a0195d5fSmrg ;; 1649feee4651Smrg *-next) 16500f5b81e5Smrg os=nextstep 1651a0195d5fSmrg ;; 1652a0195d5fSmrg *-sequent) 16530f5b81e5Smrg os=ptx 1654a0195d5fSmrg ;; 1655a0195d5fSmrg *-crds) 16560f5b81e5Smrg os=unos 1657a0195d5fSmrg ;; 1658a0195d5fSmrg *-ns) 16590f5b81e5Smrg os=genix 1660a0195d5fSmrg ;; 1661a0195d5fSmrg i370-*) 16620f5b81e5Smrg os=mvs 1663a0195d5fSmrg ;; 1664a0195d5fSmrg *-gould) 16650f5b81e5Smrg os=sysv 1666a0195d5fSmrg ;; 1667a0195d5fSmrg *-highlevel) 16680f5b81e5Smrg os=bsd 1669a0195d5fSmrg ;; 1670a0195d5fSmrg *-encore) 16710f5b81e5Smrg os=bsd 1672a0195d5fSmrg ;; 1673a0195d5fSmrg *-sgi) 16740f5b81e5Smrg os=irix 1675a0195d5fSmrg ;; 1676a0195d5fSmrg *-siemens) 16770f5b81e5Smrg os=sysv4 1678a0195d5fSmrg ;; 1679a0195d5fSmrg *-masscomp) 16800f5b81e5Smrg os=rtu 1681a0195d5fSmrg ;; 1682a0195d5fSmrg f30[01]-fujitsu | f700-fujitsu) 16830f5b81e5Smrg os=uxpv 1684a0195d5fSmrg ;; 1685a0195d5fSmrg *-rom68k) 16860f5b81e5Smrg os=coff 1687a0195d5fSmrg ;; 1688a0195d5fSmrg *-*bug) 16890f5b81e5Smrg os=coff 1690a0195d5fSmrg ;; 1691a0195d5fSmrg *-apple) 16920f5b81e5Smrg os=macos 1693a0195d5fSmrg ;; 1694a0195d5fSmrg *-atari*) 16950f5b81e5Smrg os=mint 16960f5b81e5Smrg ;; 16970f5b81e5Smrg *-wrs) 16980f5b81e5Smrg os=vxworks 1699a0195d5fSmrg ;; 1700a0195d5fSmrg *) 17010f5b81e5Smrg os=none 1702a0195d5fSmrg ;; 1703a0195d5fSmrgesac 17040f5b81e5Smrg 1705a0195d5fSmrgfi 1706a0195d5fSmrg 17070f5b81e5Smrg# Now, validate our (potentially fixed-up) OS. 17080f5b81e5Smrgcase $os in 17090f5b81e5Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17100f5b81e5Smrg musl* | newlib* | relibc* | uclibc*) 17110f5b81e5Smrg ;; 17120f5b81e5Smrg # Likewise for "kernel-abi" 17130f5b81e5Smrg eabi* | gnueabi*) 17140f5b81e5Smrg ;; 17150f5b81e5Smrg # VxWorks passes extra cpu info in the 4th filed. 17160f5b81e5Smrg simlinux | simwindows | spe) 17170f5b81e5Smrg ;; 17180f5b81e5Smrg # Now accept the basic system types. 17190f5b81e5Smrg # The portable systems comes first. 17200f5b81e5Smrg # Each alternative MUST end in a * to match a version number. 17210f5b81e5Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17220f5b81e5Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17230f5b81e5Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17240f5b81e5Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17250f5b81e5Smrg | hiux* | abug | nacl* | netware* | windows* \ 17260f5b81e5Smrg | os9* | macos* | osx* | ios* \ 17270f5b81e5Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17280f5b81e5Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17290f5b81e5Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17300f5b81e5Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17310f5b81e5Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17320f5b81e5Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17330f5b81e5Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17340f5b81e5Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17350f5b81e5Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17360f5b81e5Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17370f5b81e5Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17380f5b81e5Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17390f5b81e5Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17400f5b81e5Smrg | midipix* | mingw32* | mingw64* | mint* \ 17410f5b81e5Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17420f5b81e5Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17430f5b81e5Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17440f5b81e5Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17450f5b81e5Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17460f5b81e5Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17470f5b81e5Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17480f5b81e5Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17490f5b81e5Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17500f5b81e5Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17510f5b81e5Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 17520f5b81e5Smrg ;; 17530f5b81e5Smrg # This one is extra strict with allowed versions 17540f5b81e5Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17550f5b81e5Smrg # Don't forget version if it is 3.2v4 or newer. 17560f5b81e5Smrg ;; 17570f5b81e5Smrg none) 17580f5b81e5Smrg ;; 17590f5b81e5Smrg *) 17600f5b81e5Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17610f5b81e5Smrg exit 1 17620f5b81e5Smrg ;; 17630f5b81e5Smrgesac 17640f5b81e5Smrg 17650f5b81e5Smrg# As a final step for OS-related things, validate the OS-kernel combination 17660f5b81e5Smrg# (given a valid OS), if there is a kernel. 17670f5b81e5Smrgcase $kernel-$os in 17680f5b81e5Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17690f5b81e5Smrg | linux-musl* | linux-relibc* | linux-uclibc* ) 17700f5b81e5Smrg ;; 17710f5b81e5Smrg uclinux-uclibc* ) 17720f5b81e5Smrg ;; 17730f5b81e5Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 17740f5b81e5Smrg # These are just libc implementations, not actual OSes, and thus 17750f5b81e5Smrg # require a kernel. 17760f5b81e5Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17770f5b81e5Smrg exit 1 17780f5b81e5Smrg ;; 17790f5b81e5Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 17800f5b81e5Smrg ;; 17810f5b81e5Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 17820f5b81e5Smrg ;; 17830f5b81e5Smrg nto-qnx*) 17840f5b81e5Smrg ;; 17850f5b81e5Smrg os2-emx) 17860f5b81e5Smrg ;; 17870f5b81e5Smrg *-eabi* | *-gnueabi*) 17880f5b81e5Smrg ;; 17890f5b81e5Smrg -*) 17900f5b81e5Smrg # Blank kernel with real OS is always fine. 17910f5b81e5Smrg ;; 17920f5b81e5Smrg *-*) 17930f5b81e5Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 17940f5b81e5Smrg exit 1 17950f5b81e5Smrg ;; 17960f5b81e5Smrgesac 17970f5b81e5Smrg 1798a0195d5fSmrg# Here we handle the case where we know the os, and the CPU type, but not the 1799a0195d5fSmrg# manufacturer. We pick the logical manufacturer. 18000f5b81e5Smrgcase $vendor in 18010f5b81e5Smrg unknown) 18020f5b81e5Smrg case $cpu-$os in 18030f5b81e5Smrg *-riscix*) 1804a0195d5fSmrg vendor=acorn 1805a0195d5fSmrg ;; 18060f5b81e5Smrg *-sunos*) 1807a0195d5fSmrg vendor=sun 1808a0195d5fSmrg ;; 18090f5b81e5Smrg *-cnk* | *-aix*) 1810a0195d5fSmrg vendor=ibm 1811a0195d5fSmrg ;; 18120f5b81e5Smrg *-beos*) 1813a0195d5fSmrg vendor=be 1814a0195d5fSmrg ;; 18150f5b81e5Smrg *-hpux*) 1816a0195d5fSmrg vendor=hp 1817a0195d5fSmrg ;; 18180f5b81e5Smrg *-mpeix*) 1819a0195d5fSmrg vendor=hp 1820a0195d5fSmrg ;; 18210f5b81e5Smrg *-hiux*) 1822a0195d5fSmrg vendor=hitachi 1823a0195d5fSmrg ;; 18240f5b81e5Smrg *-unos*) 1825a0195d5fSmrg vendor=crds 1826a0195d5fSmrg ;; 18270f5b81e5Smrg *-dgux*) 1828a0195d5fSmrg vendor=dg 1829a0195d5fSmrg ;; 18300f5b81e5Smrg *-luna*) 1831a0195d5fSmrg vendor=omron 1832a0195d5fSmrg ;; 18330f5b81e5Smrg *-genix*) 1834a0195d5fSmrg vendor=ns 1835a0195d5fSmrg ;; 18360f5b81e5Smrg *-clix*) 18370f5b81e5Smrg vendor=intergraph 18380f5b81e5Smrg ;; 18390f5b81e5Smrg *-mvs* | *-opened*) 18400f5b81e5Smrg vendor=ibm 18410f5b81e5Smrg ;; 18420f5b81e5Smrg *-os400*) 1843a0195d5fSmrg vendor=ibm 1844a0195d5fSmrg ;; 18450f5b81e5Smrg s390-* | s390x-*) 1846a0195d5fSmrg vendor=ibm 1847a0195d5fSmrg ;; 18480f5b81e5Smrg *-ptx*) 1849a0195d5fSmrg vendor=sequent 1850a0195d5fSmrg ;; 18510f5b81e5Smrg *-tpf*) 1852a0195d5fSmrg vendor=ibm 1853a0195d5fSmrg ;; 18540f5b81e5Smrg *-vxsim* | *-vxworks* | *-windiss*) 1855a0195d5fSmrg vendor=wrs 1856a0195d5fSmrg ;; 18570f5b81e5Smrg *-aux*) 1858a0195d5fSmrg vendor=apple 1859a0195d5fSmrg ;; 18600f5b81e5Smrg *-hms*) 1861a0195d5fSmrg vendor=hitachi 1862a0195d5fSmrg ;; 18630f5b81e5Smrg *-mpw* | *-macos*) 1864a0195d5fSmrg vendor=apple 1865a0195d5fSmrg ;; 18660f5b81e5Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1867a0195d5fSmrg vendor=atari 1868a0195d5fSmrg ;; 18690f5b81e5Smrg *-vos*) 1870a0195d5fSmrg vendor=stratus 1871a0195d5fSmrg ;; 1872a0195d5fSmrg esac 1873a0195d5fSmrg ;; 1874a0195d5fSmrgesac 1875a0195d5fSmrg 18760f5b81e5Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1877a0195d5fSmrgexit 1878a0195d5fSmrg 1879a0195d5fSmrg# Local variables: 18800f5b81e5Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1881a0195d5fSmrg# time-stamp-start: "timestamp='" 1882a0195d5fSmrg# time-stamp-format: "%:y-%02m-%02d" 1883a0195d5fSmrg# time-stamp-end: "'" 1884a0195d5fSmrg# End: 1885