176888252Smrg#! /bin/sh 276888252Smrg# Configuration validation subroutine script. 30814a2baSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 476888252Smrg 50814a2baSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 60814a2baSmrg 70814a2baSmrgtimestamp='2021-08-14' 876888252Smrg 99586ba5aSmrg# This file is free software; you can redistribute it and/or modify it 109586ba5aSmrg# under the terms of the GNU General Public License as published by 119586ba5aSmrg# the Free Software Foundation; either version 3 of the License, or 1276888252Smrg# (at your option) any later version. 1376888252Smrg# 149586ba5aSmrg# This program is distributed in the hope that it will be useful, but 159586ba5aSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 169586ba5aSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 179586ba5aSmrg# General Public License for more details. 1876888252Smrg# 1976888252Smrg# You should have received a copy of the GNU General Public License 200814a2baSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 211ae1b5e8Smrg# 2276888252Smrg# As a special exception to the GNU General Public License, if you 2376888252Smrg# distribute this file as part of a program that contains a 2476888252Smrg# configuration script generated by Autoconf, you may include it under 259586ba5aSmrg# the same distribution terms that you use for the rest of that 269586ba5aSmrg# program. This Exception is an additional permission under section 7 279586ba5aSmrg# of the GNU General Public License, version 3 ("GPLv3"). 2876888252Smrg 291ae1b5e8Smrg 300814a2baSmrg# Please send patches to <config-patches@gnu.org>. 3176888252Smrg# 3276888252Smrg# Configuration subroutine to validate and canonicalize a configuration type. 3376888252Smrg# Supply the specified configuration type as an argument. 3476888252Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 3576888252Smrg# Otherwise, we print the canonical config type on stdout and succeed. 3676888252Smrg 3763847c39Smrg# You can get the latest version of this script from: 380814a2baSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 3963847c39Smrg 4076888252Smrg# This file is supposed to be the same for all GNU packages 4176888252Smrg# and recognize all the CPU types, system types and aliases 4276888252Smrg# that are meaningful with *any* GNU software. 4376888252Smrg# Each package is responsible for reporting which valid configurations 4476888252Smrg# it does not support. The user should be able to distinguish 4576888252Smrg# a failure to support a valid configuration from a meaningless 4676888252Smrg# configuration. 4776888252Smrg 4876888252Smrg# The goal of this file is to map all the various variations of a given 4976888252Smrg# machine specification into a single specification in the form: 5076888252Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5176888252Smrg# or in some cases, the newer four-part form: 5276888252Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5376888252Smrg# It is wrong to echo any other type of specification. 5476888252Smrg 550814a2baSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 560814a2baSmrg# about features and limitations of the classic Bourne shell that were 570814a2baSmrg# superseded or lifted in POSIX. However, this script identifies a wide 580814a2baSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 590814a2baSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 600814a2baSmrg# have a pre-POSIX /bin/sh. 610814a2baSmrg 6276888252Smrgme=`echo "$0" | sed -e 's,.*/,,'` 6376888252Smrg 6476888252Smrgusage="\ 650814a2baSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6676888252Smrg 6776888252SmrgCanonicalize a configuration name. 6876888252Smrg 690814a2baSmrgOptions: 7076888252Smrg -h, --help print this help, then exit 7176888252Smrg -t, --time-stamp print date of last modification, then exit 7276888252Smrg -v, --version print version number, then exit 7376888252Smrg 7476888252SmrgReport bugs and patches to <config-patches@gnu.org>." 7576888252Smrg 7676888252Smrgversion="\ 7776888252SmrgGNU config.sub ($timestamp) 7876888252Smrg 790814a2baSmrgCopyright 1992-2021 Free Software Foundation, Inc. 8076888252Smrg 8176888252SmrgThis is free software; see the source for copying conditions. There is NO 8276888252Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8376888252Smrg 8476888252Smrghelp=" 8576888252SmrgTry \`$me --help' for more information." 8676888252Smrg 8776888252Smrg# Parse command line 8876888252Smrgwhile test $# -gt 0 ; do 8976888252Smrg case $1 in 9076888252Smrg --time-stamp | --time* | -t ) 911ae1b5e8Smrg echo "$timestamp" ; exit ;; 9276888252Smrg --version | -v ) 931ae1b5e8Smrg echo "$version" ; exit ;; 9476888252Smrg --help | --h* | -h ) 951ae1b5e8Smrg echo "$usage"; exit ;; 9676888252Smrg -- ) # Stop option processing 9776888252Smrg shift; break ;; 9876888252Smrg - ) # Use stdin as input. 9976888252Smrg break ;; 10076888252Smrg -* ) 1010814a2baSmrg echo "$me: invalid option $1$help" >&2 10276888252Smrg exit 1 ;; 10376888252Smrg 10476888252Smrg *local*) 10576888252Smrg # First pass through any local machine types. 1060814a2baSmrg echo "$1" 1071ae1b5e8Smrg exit ;; 10876888252Smrg 10976888252Smrg * ) 11076888252Smrg break ;; 11176888252Smrg esac 11276888252Smrgdone 11376888252Smrg 11476888252Smrgcase $# in 11576888252Smrg 0) echo "$me: missing argument$help" >&2 11676888252Smrg exit 1;; 11776888252Smrg 1) ;; 11876888252Smrg *) echo "$me: too many arguments$help" >&2 11976888252Smrg exit 1;; 12076888252Smrgesac 12176888252Smrg 1220814a2baSmrg# Split fields of configuration type 1230814a2baSmrg# shellcheck disable=SC2162 1240814a2baSmrgsaved_IFS=$IFS 1250814a2baSmrgIFS="-" read field1 field2 field3 field4 <<EOF 1260814a2baSmrg$1 1270814a2baSmrgEOF 1280814a2baSmrgIFS=$saved_IFS 12976888252Smrg 1300814a2baSmrg# Separate into logical components for further validation 1310814a2baSmrgcase $1 in 1320814a2baSmrg *-*-*-*-*) 1330814a2baSmrg echo Invalid configuration \`"$1"\': more than four components >&2 1340814a2baSmrg exit 1 13576888252Smrg ;; 1360814a2baSmrg *-*-*-*) 1370814a2baSmrg basic_machine=$field1-$field2 1380814a2baSmrg basic_os=$field3-$field4 13976888252Smrg ;; 1400814a2baSmrg *-*-*) 1410814a2baSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1420814a2baSmrg # parts 1430814a2baSmrg maybe_os=$field2-$field3 1440814a2baSmrg case $maybe_os in 1450814a2baSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 1460814a2baSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1470814a2baSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1480814a2baSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 1490814a2baSmrg basic_machine=$field1 1500814a2baSmrg basic_os=$maybe_os 1510814a2baSmrg ;; 1520814a2baSmrg android-linux) 1530814a2baSmrg basic_machine=$field1-unknown 1540814a2baSmrg basic_os=linux-android 1550814a2baSmrg ;; 1560814a2baSmrg *) 1570814a2baSmrg basic_machine=$field1-$field2 1580814a2baSmrg basic_os=$field3 1590814a2baSmrg ;; 1600814a2baSmrg esac 16176888252Smrg ;; 1620814a2baSmrg *-*) 1630814a2baSmrg # A lone config we happen to match not fitting any pattern 1640814a2baSmrg case $field1-$field2 in 1650814a2baSmrg decstation-3100) 1660814a2baSmrg basic_machine=mips-dec 1670814a2baSmrg basic_os= 1680814a2baSmrg ;; 1690814a2baSmrg *-*) 1700814a2baSmrg # Second component is usually, but not always the OS 1710814a2baSmrg case $field2 in 1720814a2baSmrg # Prevent following clause from handling this valid os 1730814a2baSmrg sun*os*) 1740814a2baSmrg basic_machine=$field1 1750814a2baSmrg basic_os=$field2 1760814a2baSmrg ;; 1770814a2baSmrg zephyr*) 1780814a2baSmrg basic_machine=$field1-unknown 1790814a2baSmrg basic_os=$field2 1800814a2baSmrg ;; 1810814a2baSmrg # Manufacturers 1820814a2baSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1830814a2baSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1840814a2baSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1850814a2baSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1860814a2baSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1870814a2baSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1880814a2baSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1890814a2baSmrg | microblaze* | sim | cisco \ 1900814a2baSmrg | oki | wec | wrs | winbond) 1910814a2baSmrg basic_machine=$field1-$field2 1920814a2baSmrg basic_os= 1930814a2baSmrg ;; 1940814a2baSmrg *) 1950814a2baSmrg basic_machine=$field1 1960814a2baSmrg basic_os=$field2 1970814a2baSmrg ;; 1980814a2baSmrg esac 1990814a2baSmrg ;; 2000814a2baSmrg esac 20176888252Smrg ;; 2020814a2baSmrg *) 2030814a2baSmrg # Convert single-component short-hands not valid as part of 2040814a2baSmrg # multi-component configurations. 2050814a2baSmrg case $field1 in 2060814a2baSmrg 386bsd) 2070814a2baSmrg basic_machine=i386-pc 2080814a2baSmrg basic_os=bsd 2090814a2baSmrg ;; 2100814a2baSmrg a29khif) 2110814a2baSmrg basic_machine=a29k-amd 2120814a2baSmrg basic_os=udi 2130814a2baSmrg ;; 2140814a2baSmrg adobe68k) 2150814a2baSmrg basic_machine=m68010-adobe 2160814a2baSmrg basic_os=scout 2170814a2baSmrg ;; 2180814a2baSmrg alliant) 2190814a2baSmrg basic_machine=fx80-alliant 2200814a2baSmrg basic_os= 2210814a2baSmrg ;; 2220814a2baSmrg altos | altos3068) 2230814a2baSmrg basic_machine=m68k-altos 2240814a2baSmrg basic_os= 2250814a2baSmrg ;; 2260814a2baSmrg am29k) 2270814a2baSmrg basic_machine=a29k-none 2280814a2baSmrg basic_os=bsd 2290814a2baSmrg ;; 2300814a2baSmrg amdahl) 2310814a2baSmrg basic_machine=580-amdahl 2320814a2baSmrg basic_os=sysv 2330814a2baSmrg ;; 2340814a2baSmrg amiga) 2350814a2baSmrg basic_machine=m68k-unknown 2360814a2baSmrg basic_os= 2370814a2baSmrg ;; 2380814a2baSmrg amigaos | amigados) 2390814a2baSmrg basic_machine=m68k-unknown 2400814a2baSmrg basic_os=amigaos 2410814a2baSmrg ;; 2420814a2baSmrg amigaunix | amix) 2430814a2baSmrg basic_machine=m68k-unknown 2440814a2baSmrg basic_os=sysv4 2450814a2baSmrg ;; 2460814a2baSmrg apollo68) 2470814a2baSmrg basic_machine=m68k-apollo 2480814a2baSmrg basic_os=sysv 2490814a2baSmrg ;; 2500814a2baSmrg apollo68bsd) 2510814a2baSmrg basic_machine=m68k-apollo 2520814a2baSmrg basic_os=bsd 2530814a2baSmrg ;; 2540814a2baSmrg aros) 2550814a2baSmrg basic_machine=i386-pc 2560814a2baSmrg basic_os=aros 2570814a2baSmrg ;; 2580814a2baSmrg aux) 2590814a2baSmrg basic_machine=m68k-apple 2600814a2baSmrg basic_os=aux 2610814a2baSmrg ;; 2620814a2baSmrg balance) 2630814a2baSmrg basic_machine=ns32k-sequent 2640814a2baSmrg basic_os=dynix 2650814a2baSmrg ;; 2660814a2baSmrg blackfin) 2670814a2baSmrg basic_machine=bfin-unknown 2680814a2baSmrg basic_os=linux 2690814a2baSmrg ;; 2700814a2baSmrg cegcc) 2710814a2baSmrg basic_machine=arm-unknown 2720814a2baSmrg basic_os=cegcc 2730814a2baSmrg ;; 2740814a2baSmrg convex-c1) 2750814a2baSmrg basic_machine=c1-convex 2760814a2baSmrg basic_os=bsd 2770814a2baSmrg ;; 2780814a2baSmrg convex-c2) 2790814a2baSmrg basic_machine=c2-convex 2800814a2baSmrg basic_os=bsd 2810814a2baSmrg ;; 2820814a2baSmrg convex-c32) 2830814a2baSmrg basic_machine=c32-convex 2840814a2baSmrg basic_os=bsd 2850814a2baSmrg ;; 2860814a2baSmrg convex-c34) 2870814a2baSmrg basic_machine=c34-convex 2880814a2baSmrg basic_os=bsd 2890814a2baSmrg ;; 2900814a2baSmrg convex-c38) 2910814a2baSmrg basic_machine=c38-convex 2920814a2baSmrg basic_os=bsd 2930814a2baSmrg ;; 2940814a2baSmrg cray) 2950814a2baSmrg basic_machine=j90-cray 2960814a2baSmrg basic_os=unicos 2970814a2baSmrg ;; 2980814a2baSmrg crds | unos) 2990814a2baSmrg basic_machine=m68k-crds 3000814a2baSmrg basic_os= 3010814a2baSmrg ;; 3020814a2baSmrg da30) 3030814a2baSmrg basic_machine=m68k-da30 3040814a2baSmrg basic_os= 3050814a2baSmrg ;; 3060814a2baSmrg decstation | pmax | pmin | dec3100 | decstatn) 3070814a2baSmrg basic_machine=mips-dec 3080814a2baSmrg basic_os= 3090814a2baSmrg ;; 3100814a2baSmrg delta88) 3110814a2baSmrg basic_machine=m88k-motorola 3120814a2baSmrg basic_os=sysv3 3130814a2baSmrg ;; 3140814a2baSmrg dicos) 3150814a2baSmrg basic_machine=i686-pc 3160814a2baSmrg basic_os=dicos 3170814a2baSmrg ;; 3180814a2baSmrg djgpp) 3190814a2baSmrg basic_machine=i586-pc 3200814a2baSmrg basic_os=msdosdjgpp 3210814a2baSmrg ;; 3220814a2baSmrg ebmon29k) 3230814a2baSmrg basic_machine=a29k-amd 3240814a2baSmrg basic_os=ebmon 3250814a2baSmrg ;; 3260814a2baSmrg es1800 | OSE68k | ose68k | ose | OSE) 3270814a2baSmrg basic_machine=m68k-ericsson 3280814a2baSmrg basic_os=ose 3290814a2baSmrg ;; 3300814a2baSmrg gmicro) 3310814a2baSmrg basic_machine=tron-gmicro 3320814a2baSmrg basic_os=sysv 3330814a2baSmrg ;; 3340814a2baSmrg go32) 3350814a2baSmrg basic_machine=i386-pc 3360814a2baSmrg basic_os=go32 3370814a2baSmrg ;; 3380814a2baSmrg h8300hms) 3390814a2baSmrg basic_machine=h8300-hitachi 3400814a2baSmrg basic_os=hms 3410814a2baSmrg ;; 3420814a2baSmrg h8300xray) 3430814a2baSmrg basic_machine=h8300-hitachi 3440814a2baSmrg basic_os=xray 3450814a2baSmrg ;; 3460814a2baSmrg h8500hms) 3470814a2baSmrg basic_machine=h8500-hitachi 3480814a2baSmrg basic_os=hms 3490814a2baSmrg ;; 3500814a2baSmrg harris) 3510814a2baSmrg basic_machine=m88k-harris 3520814a2baSmrg basic_os=sysv3 3530814a2baSmrg ;; 3540814a2baSmrg hp300 | hp300hpux) 3550814a2baSmrg basic_machine=m68k-hp 3560814a2baSmrg basic_os=hpux 3570814a2baSmrg ;; 3580814a2baSmrg hp300bsd) 3590814a2baSmrg basic_machine=m68k-hp 3600814a2baSmrg basic_os=bsd 3610814a2baSmrg ;; 3620814a2baSmrg hppaosf) 3630814a2baSmrg basic_machine=hppa1.1-hp 3640814a2baSmrg basic_os=osf 3650814a2baSmrg ;; 3660814a2baSmrg hppro) 3670814a2baSmrg basic_machine=hppa1.1-hp 3680814a2baSmrg basic_os=proelf 3690814a2baSmrg ;; 3700814a2baSmrg i386mach) 3710814a2baSmrg basic_machine=i386-mach 3720814a2baSmrg basic_os=mach 3730814a2baSmrg ;; 3740814a2baSmrg isi68 | isi) 3750814a2baSmrg basic_machine=m68k-isi 3760814a2baSmrg basic_os=sysv 3770814a2baSmrg ;; 3780814a2baSmrg m68knommu) 3790814a2baSmrg basic_machine=m68k-unknown 3800814a2baSmrg basic_os=linux 3810814a2baSmrg ;; 3820814a2baSmrg magnum | m3230) 3830814a2baSmrg basic_machine=mips-mips 3840814a2baSmrg basic_os=sysv 3850814a2baSmrg ;; 3860814a2baSmrg merlin) 3870814a2baSmrg basic_machine=ns32k-utek 3880814a2baSmrg basic_os=sysv 3890814a2baSmrg ;; 3900814a2baSmrg mingw64) 3910814a2baSmrg basic_machine=x86_64-pc 3920814a2baSmrg basic_os=mingw64 3930814a2baSmrg ;; 3940814a2baSmrg mingw32) 3950814a2baSmrg basic_machine=i686-pc 3960814a2baSmrg basic_os=mingw32 3970814a2baSmrg ;; 3980814a2baSmrg mingw32ce) 3990814a2baSmrg basic_machine=arm-unknown 4000814a2baSmrg basic_os=mingw32ce 4010814a2baSmrg ;; 4020814a2baSmrg monitor) 4030814a2baSmrg basic_machine=m68k-rom68k 4040814a2baSmrg basic_os=coff 4050814a2baSmrg ;; 4060814a2baSmrg morphos) 4070814a2baSmrg basic_machine=powerpc-unknown 4080814a2baSmrg basic_os=morphos 4090814a2baSmrg ;; 4100814a2baSmrg moxiebox) 4110814a2baSmrg basic_machine=moxie-unknown 4120814a2baSmrg basic_os=moxiebox 4130814a2baSmrg ;; 4140814a2baSmrg msdos) 4150814a2baSmrg basic_machine=i386-pc 4160814a2baSmrg basic_os=msdos 4170814a2baSmrg ;; 4180814a2baSmrg msys) 4190814a2baSmrg basic_machine=i686-pc 4200814a2baSmrg basic_os=msys 4210814a2baSmrg ;; 4220814a2baSmrg mvs) 4230814a2baSmrg basic_machine=i370-ibm 4240814a2baSmrg basic_os=mvs 4250814a2baSmrg ;; 4260814a2baSmrg nacl) 4270814a2baSmrg basic_machine=le32-unknown 4280814a2baSmrg basic_os=nacl 4290814a2baSmrg ;; 4300814a2baSmrg ncr3000) 4310814a2baSmrg basic_machine=i486-ncr 4320814a2baSmrg basic_os=sysv4 4330814a2baSmrg ;; 4340814a2baSmrg netbsd386) 4350814a2baSmrg basic_machine=i386-pc 4360814a2baSmrg basic_os=netbsd 4370814a2baSmrg ;; 4380814a2baSmrg netwinder) 4390814a2baSmrg basic_machine=armv4l-rebel 4400814a2baSmrg basic_os=linux 4410814a2baSmrg ;; 4420814a2baSmrg news | news700 | news800 | news900) 4430814a2baSmrg basic_machine=m68k-sony 4440814a2baSmrg basic_os=newsos 4450814a2baSmrg ;; 4460814a2baSmrg news1000) 4470814a2baSmrg basic_machine=m68030-sony 4480814a2baSmrg basic_os=newsos 4490814a2baSmrg ;; 4500814a2baSmrg necv70) 4510814a2baSmrg basic_machine=v70-nec 4520814a2baSmrg basic_os=sysv 4530814a2baSmrg ;; 4540814a2baSmrg nh3000) 4550814a2baSmrg basic_machine=m68k-harris 4560814a2baSmrg basic_os=cxux 4570814a2baSmrg ;; 4580814a2baSmrg nh[45]000) 4590814a2baSmrg basic_machine=m88k-harris 4600814a2baSmrg basic_os=cxux 4610814a2baSmrg ;; 4620814a2baSmrg nindy960) 4630814a2baSmrg basic_machine=i960-intel 4640814a2baSmrg basic_os=nindy 4650814a2baSmrg ;; 4660814a2baSmrg mon960) 4670814a2baSmrg basic_machine=i960-intel 4680814a2baSmrg basic_os=mon960 4690814a2baSmrg ;; 4700814a2baSmrg nonstopux) 4710814a2baSmrg basic_machine=mips-compaq 4720814a2baSmrg basic_os=nonstopux 4730814a2baSmrg ;; 4740814a2baSmrg os400) 4750814a2baSmrg basic_machine=powerpc-ibm 4760814a2baSmrg basic_os=os400 4770814a2baSmrg ;; 4780814a2baSmrg OSE68000 | ose68000) 4790814a2baSmrg basic_machine=m68000-ericsson 4800814a2baSmrg basic_os=ose 4810814a2baSmrg ;; 4820814a2baSmrg os68k) 4830814a2baSmrg basic_machine=m68k-none 4840814a2baSmrg basic_os=os68k 4850814a2baSmrg ;; 4860814a2baSmrg paragon) 4870814a2baSmrg basic_machine=i860-intel 4880814a2baSmrg basic_os=osf 4890814a2baSmrg ;; 4900814a2baSmrg parisc) 4910814a2baSmrg basic_machine=hppa-unknown 4920814a2baSmrg basic_os=linux 4930814a2baSmrg ;; 4940814a2baSmrg psp) 4950814a2baSmrg basic_machine=mipsallegrexel-sony 4960814a2baSmrg basic_os=psp 4970814a2baSmrg ;; 4980814a2baSmrg pw32) 4990814a2baSmrg basic_machine=i586-unknown 5000814a2baSmrg basic_os=pw32 5010814a2baSmrg ;; 5020814a2baSmrg rdos | rdos64) 5030814a2baSmrg basic_machine=x86_64-pc 5040814a2baSmrg basic_os=rdos 5050814a2baSmrg ;; 5060814a2baSmrg rdos32) 5070814a2baSmrg basic_machine=i386-pc 5080814a2baSmrg basic_os=rdos 5090814a2baSmrg ;; 5100814a2baSmrg rom68k) 5110814a2baSmrg basic_machine=m68k-rom68k 5120814a2baSmrg basic_os=coff 5130814a2baSmrg ;; 5140814a2baSmrg sa29200) 5150814a2baSmrg basic_machine=a29k-amd 5160814a2baSmrg basic_os=udi 5170814a2baSmrg ;; 5180814a2baSmrg sei) 5190814a2baSmrg basic_machine=mips-sei 5200814a2baSmrg basic_os=seiux 5210814a2baSmrg ;; 5220814a2baSmrg sequent) 5230814a2baSmrg basic_machine=i386-sequent 5240814a2baSmrg basic_os= 5250814a2baSmrg ;; 5260814a2baSmrg sps7) 5270814a2baSmrg basic_machine=m68k-bull 5280814a2baSmrg basic_os=sysv2 5290814a2baSmrg ;; 5300814a2baSmrg st2000) 5310814a2baSmrg basic_machine=m68k-tandem 5320814a2baSmrg basic_os= 5330814a2baSmrg ;; 5340814a2baSmrg stratus) 5350814a2baSmrg basic_machine=i860-stratus 5360814a2baSmrg basic_os=sysv4 5370814a2baSmrg ;; 5380814a2baSmrg sun2) 5390814a2baSmrg basic_machine=m68000-sun 5400814a2baSmrg basic_os= 5410814a2baSmrg ;; 5420814a2baSmrg sun2os3) 5430814a2baSmrg basic_machine=m68000-sun 5440814a2baSmrg basic_os=sunos3 5450814a2baSmrg ;; 5460814a2baSmrg sun2os4) 5470814a2baSmrg basic_machine=m68000-sun 5480814a2baSmrg basic_os=sunos4 5490814a2baSmrg ;; 5500814a2baSmrg sun3) 5510814a2baSmrg basic_machine=m68k-sun 5520814a2baSmrg basic_os= 5530814a2baSmrg ;; 5540814a2baSmrg sun3os3) 5550814a2baSmrg basic_machine=m68k-sun 5560814a2baSmrg basic_os=sunos3 5570814a2baSmrg ;; 5580814a2baSmrg sun3os4) 5590814a2baSmrg basic_machine=m68k-sun 5600814a2baSmrg basic_os=sunos4 5610814a2baSmrg ;; 5620814a2baSmrg sun4) 5630814a2baSmrg basic_machine=sparc-sun 5640814a2baSmrg basic_os= 5650814a2baSmrg ;; 5660814a2baSmrg sun4os3) 5670814a2baSmrg basic_machine=sparc-sun 5680814a2baSmrg basic_os=sunos3 5690814a2baSmrg ;; 5700814a2baSmrg sun4os4) 5710814a2baSmrg basic_machine=sparc-sun 5720814a2baSmrg basic_os=sunos4 5730814a2baSmrg ;; 5740814a2baSmrg sun4sol2) 5750814a2baSmrg basic_machine=sparc-sun 5760814a2baSmrg basic_os=solaris2 5770814a2baSmrg ;; 5780814a2baSmrg sun386 | sun386i | roadrunner) 5790814a2baSmrg basic_machine=i386-sun 5800814a2baSmrg basic_os= 5810814a2baSmrg ;; 5820814a2baSmrg sv1) 5830814a2baSmrg basic_machine=sv1-cray 5840814a2baSmrg basic_os=unicos 5850814a2baSmrg ;; 5860814a2baSmrg symmetry) 5870814a2baSmrg basic_machine=i386-sequent 5880814a2baSmrg basic_os=dynix 5890814a2baSmrg ;; 5900814a2baSmrg t3e) 5910814a2baSmrg basic_machine=alphaev5-cray 5920814a2baSmrg basic_os=unicos 5930814a2baSmrg ;; 5940814a2baSmrg t90) 5950814a2baSmrg basic_machine=t90-cray 5960814a2baSmrg basic_os=unicos 5970814a2baSmrg ;; 5980814a2baSmrg toad1) 5990814a2baSmrg basic_machine=pdp10-xkl 6000814a2baSmrg basic_os=tops20 6010814a2baSmrg ;; 6020814a2baSmrg tpf) 6030814a2baSmrg basic_machine=s390x-ibm 6040814a2baSmrg basic_os=tpf 6050814a2baSmrg ;; 6060814a2baSmrg udi29k) 6070814a2baSmrg basic_machine=a29k-amd 6080814a2baSmrg basic_os=udi 6090814a2baSmrg ;; 6100814a2baSmrg ultra3) 6110814a2baSmrg basic_machine=a29k-nyu 6120814a2baSmrg basic_os=sym1 6130814a2baSmrg ;; 6140814a2baSmrg v810 | necv810) 6150814a2baSmrg basic_machine=v810-nec 6160814a2baSmrg basic_os=none 6170814a2baSmrg ;; 6180814a2baSmrg vaxv) 6190814a2baSmrg basic_machine=vax-dec 6200814a2baSmrg basic_os=sysv 6210814a2baSmrg ;; 6220814a2baSmrg vms) 6230814a2baSmrg basic_machine=vax-dec 6240814a2baSmrg basic_os=vms 6250814a2baSmrg ;; 6260814a2baSmrg vsta) 6270814a2baSmrg basic_machine=i386-pc 6280814a2baSmrg basic_os=vsta 6290814a2baSmrg ;; 6300814a2baSmrg vxworks960) 6310814a2baSmrg basic_machine=i960-wrs 6320814a2baSmrg basic_os=vxworks 6330814a2baSmrg ;; 6340814a2baSmrg vxworks68) 6350814a2baSmrg basic_machine=m68k-wrs 6360814a2baSmrg basic_os=vxworks 6370814a2baSmrg ;; 6380814a2baSmrg vxworks29k) 6390814a2baSmrg basic_machine=a29k-wrs 6400814a2baSmrg basic_os=vxworks 6410814a2baSmrg ;; 6420814a2baSmrg xbox) 6430814a2baSmrg basic_machine=i686-pc 6440814a2baSmrg basic_os=mingw32 6450814a2baSmrg ;; 6460814a2baSmrg ymp) 6470814a2baSmrg basic_machine=ymp-cray 6480814a2baSmrg basic_os=unicos 6490814a2baSmrg ;; 6500814a2baSmrg *) 6510814a2baSmrg basic_machine=$1 6520814a2baSmrg basic_os= 6530814a2baSmrg ;; 6540814a2baSmrg esac 65576888252Smrg ;; 65676888252Smrgesac 65776888252Smrg 6580814a2baSmrg# Decode 1-component or ad-hoc basic machines 65976888252Smrgcase $basic_machine in 6600814a2baSmrg # Here we handle the default manufacturer of certain CPU types. It is in 6610814a2baSmrg # some cases the only manufacturer, in others, it is the most popular. 6620814a2baSmrg w89k) 6630814a2baSmrg cpu=hppa1.1 6640814a2baSmrg vendor=winbond 6651ae1b5e8Smrg ;; 6660814a2baSmrg op50n) 6670814a2baSmrg cpu=hppa1.1 6680814a2baSmrg vendor=oki 66963847c39Smrg ;; 6700814a2baSmrg op60c) 6710814a2baSmrg cpu=hppa1.1 6720814a2baSmrg vendor=oki 67363847c39Smrg ;; 6740814a2baSmrg ibm*) 6750814a2baSmrg cpu=i370 6760814a2baSmrg vendor=ibm 67763847c39Smrg ;; 6780814a2baSmrg orion105) 6790814a2baSmrg cpu=clipper 6800814a2baSmrg vendor=highlevel 68163847c39Smrg ;; 6820814a2baSmrg mac | mpw | mac-mpw) 6830814a2baSmrg cpu=m68k 6840814a2baSmrg vendor=apple 68576888252Smrg ;; 6860814a2baSmrg pmac | pmac-mpw) 6870814a2baSmrg cpu=powerpc 6880814a2baSmrg vendor=apple 68976888252Smrg ;; 6900814a2baSmrg 69176888252Smrg # Recognize the various machine names and aliases which stand 69276888252Smrg # for a CPU type and a company and sometimes even an OS. 69376888252Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6940814a2baSmrg cpu=m68000 6950814a2baSmrg vendor=att 69676888252Smrg ;; 69776888252Smrg 3b*) 6980814a2baSmrg cpu=we32k 6990814a2baSmrg vendor=att 7001ae1b5e8Smrg ;; 70163847c39Smrg bluegene*) 7020814a2baSmrg cpu=powerpc 7030814a2baSmrg vendor=ibm 7040814a2baSmrg basic_os=cnk 70576888252Smrg ;; 70676888252Smrg decsystem10* | dec10*) 7070814a2baSmrg cpu=pdp10 7080814a2baSmrg vendor=dec 7090814a2baSmrg basic_os=tops10 71076888252Smrg ;; 71176888252Smrg decsystem20* | dec20*) 7120814a2baSmrg cpu=pdp10 7130814a2baSmrg vendor=dec 7140814a2baSmrg basic_os=tops20 71576888252Smrg ;; 71676888252Smrg delta | 3300 | motorola-3300 | motorola-delta \ 71776888252Smrg | 3300-motorola | delta-motorola) 7180814a2baSmrg cpu=m68k 7190814a2baSmrg vendor=motorola 72076888252Smrg ;; 7210814a2baSmrg dpx2*) 7220814a2baSmrg cpu=m68k 7230814a2baSmrg vendor=bull 7240814a2baSmrg basic_os=sysv3 72576888252Smrg ;; 72676888252Smrg encore | umax | mmax) 7270814a2baSmrg cpu=ns32k 7280814a2baSmrg vendor=encore 72976888252Smrg ;; 7300814a2baSmrg elxsi) 7310814a2baSmrg cpu=elxsi 7320814a2baSmrg vendor=elxsi 7330814a2baSmrg basic_os=${basic_os:-bsd} 73476888252Smrg ;; 73576888252Smrg fx2800) 7360814a2baSmrg cpu=i860 7370814a2baSmrg vendor=alliant 73876888252Smrg ;; 73976888252Smrg genix) 7400814a2baSmrg cpu=ns32k 7410814a2baSmrg vendor=ns 74276888252Smrg ;; 74376888252Smrg h3050r* | hiux*) 7440814a2baSmrg cpu=hppa1.1 7450814a2baSmrg vendor=hitachi 7460814a2baSmrg basic_os=hiuxwe2 74776888252Smrg ;; 74876888252Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7490814a2baSmrg cpu=hppa1.0 7500814a2baSmrg vendor=hp 75176888252Smrg ;; 75276888252Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7530814a2baSmrg cpu=m68000 7540814a2baSmrg vendor=hp 75576888252Smrg ;; 75676888252Smrg hp9k3[2-9][0-9]) 7570814a2baSmrg cpu=m68k 7580814a2baSmrg vendor=hp 75976888252Smrg ;; 76076888252Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7610814a2baSmrg cpu=hppa1.0 7620814a2baSmrg vendor=hp 76376888252Smrg ;; 76476888252Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7650814a2baSmrg cpu=hppa1.1 7660814a2baSmrg vendor=hp 76776888252Smrg ;; 76876888252Smrg hp9k78[0-9] | hp78[0-9]) 76976888252Smrg # FIXME: really hppa2.0-hp 7700814a2baSmrg cpu=hppa1.1 7710814a2baSmrg vendor=hp 77276888252Smrg ;; 77376888252Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77476888252Smrg # FIXME: really hppa2.0-hp 7750814a2baSmrg cpu=hppa1.1 7760814a2baSmrg vendor=hp 77776888252Smrg ;; 77876888252Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7790814a2baSmrg cpu=hppa1.1 7800814a2baSmrg vendor=hp 78176888252Smrg ;; 78276888252Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7830814a2baSmrg cpu=hppa1.0 7840814a2baSmrg vendor=hp 78576888252Smrg ;; 78676888252Smrg i*86v32) 7870814a2baSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7880814a2baSmrg vendor=pc 7890814a2baSmrg basic_os=sysv32 79076888252Smrg ;; 79176888252Smrg i*86v4*) 7920814a2baSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7930814a2baSmrg vendor=pc 7940814a2baSmrg basic_os=sysv4 79576888252Smrg ;; 79676888252Smrg i*86v) 7970814a2baSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7980814a2baSmrg vendor=pc 7990814a2baSmrg basic_os=sysv 80076888252Smrg ;; 80176888252Smrg i*86sol2) 8020814a2baSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8030814a2baSmrg vendor=pc 8040814a2baSmrg basic_os=solaris2 80576888252Smrg ;; 8060814a2baSmrg j90 | j90-cray) 8070814a2baSmrg cpu=j90 8080814a2baSmrg vendor=cray 8090814a2baSmrg basic_os=${basic_os:-unicos} 81076888252Smrg ;; 81176888252Smrg iris | iris4d) 8120814a2baSmrg cpu=mips 8130814a2baSmrg vendor=sgi 8140814a2baSmrg case $basic_os in 8150814a2baSmrg irix*) 81676888252Smrg ;; 81776888252Smrg *) 8180814a2baSmrg basic_os=irix4 81976888252Smrg ;; 82076888252Smrg esac 82176888252Smrg ;; 82276888252Smrg miniframe) 8230814a2baSmrg cpu=m68000 8240814a2baSmrg vendor=convergent 82576888252Smrg ;; 8260814a2baSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8270814a2baSmrg cpu=m68k 8280814a2baSmrg vendor=atari 8290814a2baSmrg basic_os=mint 83076888252Smrg ;; 83176888252Smrg news-3600 | risc-news) 8320814a2baSmrg cpu=mips 8330814a2baSmrg vendor=sony 8340814a2baSmrg basic_os=newsos 8350814a2baSmrg ;; 8360814a2baSmrg next | m*-next) 8370814a2baSmrg cpu=m68k 8380814a2baSmrg vendor=next 8390814a2baSmrg case $basic_os in 8400814a2baSmrg openstep*) 8410814a2baSmrg ;; 8420814a2baSmrg nextstep*) 84376888252Smrg ;; 8440814a2baSmrg ns2*) 8450814a2baSmrg basic_os=nextstep2 84676888252Smrg ;; 84776888252Smrg *) 8480814a2baSmrg basic_os=nextstep3 84976888252Smrg ;; 85076888252Smrg esac 85176888252Smrg ;; 85276888252Smrg np1) 8530814a2baSmrg cpu=np1 8540814a2baSmrg vendor=gould 85576888252Smrg ;; 85676888252Smrg op50n-* | op60c-*) 8570814a2baSmrg cpu=hppa1.1 8580814a2baSmrg vendor=oki 8590814a2baSmrg basic_os=proelf 86076888252Smrg ;; 86176888252Smrg pa-hitachi) 8620814a2baSmrg cpu=hppa1.1 8630814a2baSmrg vendor=hitachi 8640814a2baSmrg basic_os=hiuxwe2 8651ae1b5e8Smrg ;; 86676888252Smrg pbd) 8670814a2baSmrg cpu=sparc 8680814a2baSmrg vendor=tti 86976888252Smrg ;; 87076888252Smrg pbb) 8710814a2baSmrg cpu=m68k 8720814a2baSmrg vendor=tti 87376888252Smrg ;; 8740814a2baSmrg pc532) 8750814a2baSmrg cpu=ns32k 8760814a2baSmrg vendor=pc532 87776888252Smrg ;; 87876888252Smrg pn) 8790814a2baSmrg cpu=pn 8800814a2baSmrg vendor=gould 88176888252Smrg ;; 8820814a2baSmrg power) 8830814a2baSmrg cpu=power 8840814a2baSmrg vendor=ibm 88576888252Smrg ;; 88676888252Smrg ps2) 8870814a2baSmrg cpu=i386 8880814a2baSmrg vendor=ibm 88976888252Smrg ;; 89076888252Smrg rm[46]00) 8910814a2baSmrg cpu=mips 8920814a2baSmrg vendor=siemens 89376888252Smrg ;; 89476888252Smrg rtpc | rtpc-*) 8950814a2baSmrg cpu=romp 8960814a2baSmrg vendor=ibm 8971ae1b5e8Smrg ;; 8980814a2baSmrg sde) 8990814a2baSmrg cpu=mipsisa32 9000814a2baSmrg vendor=sde 9010814a2baSmrg basic_os=${basic_os:-elf} 90276888252Smrg ;; 9030814a2baSmrg simso-wrs) 9040814a2baSmrg cpu=sparclite 9050814a2baSmrg vendor=wrs 9060814a2baSmrg basic_os=vxworks 90776888252Smrg ;; 9080814a2baSmrg tower | tower-32) 9090814a2baSmrg cpu=m68k 9100814a2baSmrg vendor=ncr 9111ae1b5e8Smrg ;; 9120814a2baSmrg vpp*|vx|vx-*) 9130814a2baSmrg cpu=f301 9140814a2baSmrg vendor=fujitsu 91576888252Smrg ;; 9160814a2baSmrg w65) 9170814a2baSmrg cpu=w65 9180814a2baSmrg vendor=wdc 91976888252Smrg ;; 9200814a2baSmrg w89k-*) 9210814a2baSmrg cpu=hppa1.1 9220814a2baSmrg vendor=winbond 9230814a2baSmrg basic_os=proelf 92476888252Smrg ;; 9250814a2baSmrg none) 9260814a2baSmrg cpu=none 9270814a2baSmrg vendor=none 9281ae1b5e8Smrg ;; 9290814a2baSmrg leon|leon[3-9]) 9300814a2baSmrg cpu=sparc 9310814a2baSmrg vendor=$basic_machine 93276888252Smrg ;; 9330814a2baSmrg leon-*|leon[3-9]-*) 9340814a2baSmrg cpu=sparc 9350814a2baSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 93676888252Smrg ;; 9370814a2baSmrg 9380814a2baSmrg *-*) 9390814a2baSmrg # shellcheck disable=SC2162 9400814a2baSmrg saved_IFS=$IFS 9410814a2baSmrg IFS="-" read cpu vendor <<EOF 9420814a2baSmrg$basic_machine 9430814a2baSmrgEOF 9440814a2baSmrg IFS=$saved_IFS 94576888252Smrg ;; 9460814a2baSmrg # We use `pc' rather than `unknown' 9470814a2baSmrg # because (1) that's what they normally are, and 9480814a2baSmrg # (2) the word "unknown" tends to confuse beginning users. 9490814a2baSmrg i*86 | x86_64) 9500814a2baSmrg cpu=$basic_machine 9510814a2baSmrg vendor=pc 95276888252Smrg ;; 9530814a2baSmrg # These rules are duplicated from below for sake of the special case above; 9540814a2baSmrg # i.e. things that normalized to x86 arches should also default to "pc" 9550814a2baSmrg pc98) 9560814a2baSmrg cpu=i386 9570814a2baSmrg vendor=pc 95876888252Smrg ;; 9590814a2baSmrg x64 | amd64) 9600814a2baSmrg cpu=x86_64 9610814a2baSmrg vendor=pc 96276888252Smrg ;; 9630814a2baSmrg # Recognize the basic CPU types without company name. 9640814a2baSmrg *) 9650814a2baSmrg cpu=$basic_machine 9660814a2baSmrg vendor=unknown 96763847c39Smrg ;; 9680814a2baSmrgesac 9690814a2baSmrg 9700814a2baSmrgunset -v basic_machine 9710814a2baSmrg 9720814a2baSmrg# Decode basic machines in the full and proper CPU-Company form. 9730814a2baSmrgcase $cpu-$vendor in 9740814a2baSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9750814a2baSmrg # some cases the only manufacturer, in others, it is the most popular. 9760814a2baSmrg craynv-unknown) 9770814a2baSmrg vendor=cray 9780814a2baSmrg basic_os=${basic_os:-unicosmp} 97976888252Smrg ;; 9800814a2baSmrg c90-unknown | c90-cray) 9810814a2baSmrg vendor=cray 9820814a2baSmrg basic_os=${Basic_os:-unicos} 98376888252Smrg ;; 9840814a2baSmrg fx80-unknown) 9850814a2baSmrg vendor=alliant 98676888252Smrg ;; 9870814a2baSmrg romp-unknown) 9880814a2baSmrg vendor=ibm 98976888252Smrg ;; 9900814a2baSmrg mmix-unknown) 9910814a2baSmrg vendor=knuth 99276888252Smrg ;; 9930814a2baSmrg microblaze-unknown | microblazeel-unknown) 9940814a2baSmrg vendor=xilinx 99576888252Smrg ;; 9960814a2baSmrg rs6000-unknown) 9970814a2baSmrg vendor=ibm 99876888252Smrg ;; 9990814a2baSmrg vax-unknown) 10000814a2baSmrg vendor=dec 100176888252Smrg ;; 10020814a2baSmrg pdp11-unknown) 10030814a2baSmrg vendor=dec 100476888252Smrg ;; 10050814a2baSmrg we32k-unknown) 10060814a2baSmrg vendor=att 100776888252Smrg ;; 10080814a2baSmrg cydra-unknown) 10090814a2baSmrg vendor=cydrome 101076888252Smrg ;; 10110814a2baSmrg i370-ibm*) 10120814a2baSmrg vendor=ibm 101376888252Smrg ;; 10140814a2baSmrg orion-unknown) 10150814a2baSmrg vendor=highlevel 101676888252Smrg ;; 10170814a2baSmrg xps-unknown | xps100-unknown) 10180814a2baSmrg cpu=xps100 10190814a2baSmrg vendor=honeywell 102076888252Smrg ;; 10210814a2baSmrg 10220814a2baSmrg # Here we normalize CPU types with a missing or matching vendor 10230814a2baSmrg dpx20-unknown | dpx20-bull) 10240814a2baSmrg cpu=rs6000 10250814a2baSmrg vendor=bull 10260814a2baSmrg basic_os=${basic_os:-bosx} 102776888252Smrg ;; 10280814a2baSmrg 10290814a2baSmrg # Here we normalize CPU types irrespective of the vendor 10300814a2baSmrg amd64-*) 10310814a2baSmrg cpu=x86_64 10321ae1b5e8Smrg ;; 10330814a2baSmrg blackfin-*) 10340814a2baSmrg cpu=bfin 10350814a2baSmrg basic_os=linux 103676888252Smrg ;; 10370814a2baSmrg c54x-*) 10380814a2baSmrg cpu=tic54x 103976888252Smrg ;; 10400814a2baSmrg c55x-*) 10410814a2baSmrg cpu=tic55x 104276888252Smrg ;; 10430814a2baSmrg c6x-*) 10440814a2baSmrg cpu=tic6x 104576888252Smrg ;; 10460814a2baSmrg e500v[12]-*) 10470814a2baSmrg cpu=powerpc 10480814a2baSmrg basic_os=${basic_os}"spe" 10491ae1b5e8Smrg ;; 10500814a2baSmrg mips3*-*) 10510814a2baSmrg cpu=mips64 105276888252Smrg ;; 10530814a2baSmrg ms1-*) 10540814a2baSmrg cpu=mt 105576888252Smrg ;; 10560814a2baSmrg m68knommu-*) 10570814a2baSmrg cpu=m68k 10580814a2baSmrg basic_os=linux 105976888252Smrg ;; 10600814a2baSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10610814a2baSmrg cpu=s12z 106276888252Smrg ;; 10630814a2baSmrg openrisc-*) 10640814a2baSmrg cpu=or32 106576888252Smrg ;; 10660814a2baSmrg parisc-*) 10670814a2baSmrg cpu=hppa 10680814a2baSmrg basic_os=linux 106976888252Smrg ;; 10700814a2baSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10710814a2baSmrg cpu=i586 107276888252Smrg ;; 10730814a2baSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 10740814a2baSmrg cpu=i686 107576888252Smrg ;; 10760814a2baSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10770814a2baSmrg cpu=i686 107876888252Smrg ;; 10790814a2baSmrg pentium4-*) 10800814a2baSmrg cpu=i786 108176888252Smrg ;; 10820814a2baSmrg pc98-*) 10830814a2baSmrg cpu=i386 108476888252Smrg ;; 10850814a2baSmrg ppc-* | ppcbe-*) 10860814a2baSmrg cpu=powerpc 10871ae1b5e8Smrg ;; 10880814a2baSmrg ppcle-* | powerpclittle-*) 10890814a2baSmrg cpu=powerpcle 109076888252Smrg ;; 10910814a2baSmrg ppc64-*) 10920814a2baSmrg cpu=powerpc64 109363847c39Smrg ;; 10940814a2baSmrg ppc64le-* | powerpc64little-*) 10950814a2baSmrg cpu=powerpc64le 109676888252Smrg ;; 10970814a2baSmrg sb1-*) 10980814a2baSmrg cpu=mipsisa64sb1 109976888252Smrg ;; 11000814a2baSmrg sb1el-*) 11010814a2baSmrg cpu=mipsisa64sb1el 110263847c39Smrg ;; 11030814a2baSmrg sh5e[lb]-*) 11040814a2baSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 110576888252Smrg ;; 11060814a2baSmrg spur-*) 11070814a2baSmrg cpu=spur 110876888252Smrg ;; 11090814a2baSmrg strongarm-* | thumb-*) 11100814a2baSmrg cpu=arm 111176888252Smrg ;; 11120814a2baSmrg tx39-*) 11130814a2baSmrg cpu=mipstx39 111476888252Smrg ;; 11150814a2baSmrg tx39el-*) 11160814a2baSmrg cpu=mipstx39el 111776888252Smrg ;; 11180814a2baSmrg x64-*) 11190814a2baSmrg cpu=x86_64 11201ae1b5e8Smrg ;; 11210814a2baSmrg xscale-* | xscalee[bl]-*) 11220814a2baSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112376888252Smrg ;; 11240814a2baSmrg arm64-*) 11250814a2baSmrg cpu=aarch64 112676888252Smrg ;; 11270814a2baSmrg 11280814a2baSmrg # Recognize the canonical CPU Types that limit and/or modify the 11290814a2baSmrg # company names they are paired with. 11300814a2baSmrg cr16-*) 11310814a2baSmrg basic_os=${basic_os:-elf} 113276888252Smrg ;; 11330814a2baSmrg crisv32-* | etraxfs*-*) 11340814a2baSmrg cpu=crisv32 11350814a2baSmrg vendor=axis 113676888252Smrg ;; 11370814a2baSmrg cris-* | etrax*-*) 11380814a2baSmrg cpu=cris 11390814a2baSmrg vendor=axis 114076888252Smrg ;; 11410814a2baSmrg crx-*) 11420814a2baSmrg basic_os=${basic_os:-elf} 114376888252Smrg ;; 11440814a2baSmrg neo-tandem) 11450814a2baSmrg cpu=neo 11460814a2baSmrg vendor=tandem 114776888252Smrg ;; 11480814a2baSmrg nse-tandem) 11490814a2baSmrg cpu=nse 11500814a2baSmrg vendor=tandem 115176888252Smrg ;; 11520814a2baSmrg nsr-tandem) 11530814a2baSmrg cpu=nsr 11540814a2baSmrg vendor=tandem 115576888252Smrg ;; 11560814a2baSmrg nsv-tandem) 11570814a2baSmrg cpu=nsv 11580814a2baSmrg vendor=tandem 115976888252Smrg ;; 11600814a2baSmrg nsx-tandem) 11610814a2baSmrg cpu=nsx 11620814a2baSmrg vendor=tandem 116376888252Smrg ;; 11640814a2baSmrg mipsallegrexel-sony) 11650814a2baSmrg cpu=mipsallegrexel 11660814a2baSmrg vendor=sony 116776888252Smrg ;; 11680814a2baSmrg tile*-*) 11690814a2baSmrg basic_os=${basic_os:-linux-gnu} 117076888252Smrg ;; 11710814a2baSmrg 117276888252Smrg *) 11730814a2baSmrg # Recognize the canonical CPU types that are allowed with any 11740814a2baSmrg # company name. 11750814a2baSmrg case $cpu in 11760814a2baSmrg 1750a | 580 \ 11770814a2baSmrg | a29k \ 11780814a2baSmrg | aarch64 | aarch64_be \ 11790814a2baSmrg | abacus \ 11800814a2baSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11810814a2baSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11820814a2baSmrg | alphapca5[67] | alpha64pca5[67] \ 11830814a2baSmrg | am33_2.0 \ 11840814a2baSmrg | amdgcn \ 11850814a2baSmrg | arc | arceb | arc32 | arc64 \ 11860814a2baSmrg | arm | arm[lb]e | arme[lb] | armv* \ 11870814a2baSmrg | avr | avr32 \ 11880814a2baSmrg | asmjs \ 11890814a2baSmrg | ba \ 11900814a2baSmrg | be32 | be64 \ 11910814a2baSmrg | bfin | bpf | bs2000 \ 11920814a2baSmrg | c[123]* | c30 | [cjt]90 | c4x \ 11930814a2baSmrg | c8051 | clipper | craynv | csky | cydra \ 11940814a2baSmrg | d10v | d30v | dlx | dsp16xx \ 11950814a2baSmrg | e2k | elxsi | epiphany \ 11960814a2baSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 11970814a2baSmrg | h8300 | h8500 \ 11980814a2baSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 11990814a2baSmrg | hexagon \ 12000814a2baSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12010814a2baSmrg | ip2k | iq2000 \ 12020814a2baSmrg | k1om \ 12030814a2baSmrg | le32 | le64 \ 12040814a2baSmrg | lm32 \ 12050814a2baSmrg | loongarch32 | loongarch64 | loongarchx32 \ 12060814a2baSmrg | m32c | m32r | m32rle \ 12070814a2baSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12080814a2baSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12090814a2baSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12100814a2baSmrg | microblaze | microblazeel \ 12110814a2baSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12120814a2baSmrg | mips16 \ 12130814a2baSmrg | mips64 | mips64eb | mips64el \ 12140814a2baSmrg | mips64octeon | mips64octeonel \ 12150814a2baSmrg | mips64orion | mips64orionel \ 12160814a2baSmrg | mips64r5900 | mips64r5900el \ 12170814a2baSmrg | mips64vr | mips64vrel \ 12180814a2baSmrg | mips64vr4100 | mips64vr4100el \ 12190814a2baSmrg | mips64vr4300 | mips64vr4300el \ 12200814a2baSmrg | mips64vr5000 | mips64vr5000el \ 12210814a2baSmrg | mips64vr5900 | mips64vr5900el \ 12220814a2baSmrg | mipsisa32 | mipsisa32el \ 12230814a2baSmrg | mipsisa32r2 | mipsisa32r2el \ 12240814a2baSmrg | mipsisa32r3 | mipsisa32r3el \ 12250814a2baSmrg | mipsisa32r5 | mipsisa32r5el \ 12260814a2baSmrg | mipsisa32r6 | mipsisa32r6el \ 12270814a2baSmrg | mipsisa64 | mipsisa64el \ 12280814a2baSmrg | mipsisa64r2 | mipsisa64r2el \ 12290814a2baSmrg | mipsisa64r3 | mipsisa64r3el \ 12300814a2baSmrg | mipsisa64r5 | mipsisa64r5el \ 12310814a2baSmrg | mipsisa64r6 | mipsisa64r6el \ 12320814a2baSmrg | mipsisa64sb1 | mipsisa64sb1el \ 12330814a2baSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 12340814a2baSmrg | mipsr5900 | mipsr5900el \ 12350814a2baSmrg | mipstx39 | mipstx39el \ 12360814a2baSmrg | mmix \ 12370814a2baSmrg | mn10200 | mn10300 \ 12380814a2baSmrg | moxie \ 12390814a2baSmrg | mt \ 12400814a2baSmrg | msp430 \ 12410814a2baSmrg | nds32 | nds32le | nds32be \ 12420814a2baSmrg | nfp \ 12430814a2baSmrg | nios | nios2 | nios2eb | nios2el \ 12440814a2baSmrg | none | np1 | ns16k | ns32k | nvptx \ 12450814a2baSmrg | open8 \ 12460814a2baSmrg | or1k* \ 12470814a2baSmrg | or32 \ 12480814a2baSmrg | orion \ 12490814a2baSmrg | picochip \ 12500814a2baSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12510814a2baSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12520814a2baSmrg | pru \ 12530814a2baSmrg | pyramid \ 12540814a2baSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12550814a2baSmrg | rl78 | romp | rs6000 | rx \ 12560814a2baSmrg | s390 | s390x \ 12570814a2baSmrg | score \ 12580814a2baSmrg | sh | shl \ 12590814a2baSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12600814a2baSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12610814a2baSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12620814a2baSmrg | sparclite \ 12630814a2baSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12640814a2baSmrg | spu \ 12650814a2baSmrg | tahoe \ 12660814a2baSmrg | thumbv7* \ 12670814a2baSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12680814a2baSmrg | tron \ 12690814a2baSmrg | ubicom32 \ 12700814a2baSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12710814a2baSmrg | vax \ 12720814a2baSmrg | visium \ 12730814a2baSmrg | w65 \ 12740814a2baSmrg | wasm32 | wasm64 \ 12750814a2baSmrg | we32k \ 12760814a2baSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12770814a2baSmrg | xstormy16 | xtensa* \ 12780814a2baSmrg | ymp \ 12790814a2baSmrg | z8k | z80) 12800814a2baSmrg ;; 12810814a2baSmrg 12820814a2baSmrg *) 12830814a2baSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12840814a2baSmrg exit 1 12850814a2baSmrg ;; 12860814a2baSmrg esac 128776888252Smrg ;; 128876888252Smrgesac 128976888252Smrg 129076888252Smrg# Here we canonicalize certain aliases for manufacturers. 12910814a2baSmrgcase $vendor in 12920814a2baSmrg digital*) 12930814a2baSmrg vendor=dec 129476888252Smrg ;; 12950814a2baSmrg commodore*) 12960814a2baSmrg vendor=cbm 129776888252Smrg ;; 129876888252Smrg *) 129976888252Smrg ;; 130076888252Smrgesac 130176888252Smrg 130276888252Smrg# Decode manufacturer-specific aliases for certain operating systems. 130376888252Smrg 13040814a2baSmrgif test x$basic_os != x 130576888252Smrgthen 13060814a2baSmrg 13070814a2baSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 13080814a2baSmrg# set os. 13090814a2baSmrgcase $basic_os in 13100814a2baSmrg gnu/linux*) 13110814a2baSmrg kernel=linux 13120814a2baSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13130814a2baSmrg ;; 13140814a2baSmrg os2-emx) 13150814a2baSmrg kernel=os2 13160814a2baSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13170814a2baSmrg ;; 13180814a2baSmrg nto-qnx*) 13190814a2baSmrg kernel=nto 13200814a2baSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13210814a2baSmrg ;; 13220814a2baSmrg *-*) 13230814a2baSmrg # shellcheck disable=SC2162 13240814a2baSmrg saved_IFS=$IFS 13250814a2baSmrg IFS="-" read kernel os <<EOF 13260814a2baSmrg$basic_os 13270814a2baSmrgEOF 13280814a2baSmrg IFS=$saved_IFS 13290814a2baSmrg ;; 13300814a2baSmrg # Default OS when just kernel was specified 13310814a2baSmrg nto*) 13320814a2baSmrg kernel=nto 13330814a2baSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13340814a2baSmrg ;; 13350814a2baSmrg linux*) 13360814a2baSmrg kernel=linux 13370814a2baSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13380814a2baSmrg ;; 13390814a2baSmrg *) 13400814a2baSmrg kernel= 13410814a2baSmrg os=$basic_os 13420814a2baSmrg ;; 13430814a2baSmrgesac 13440814a2baSmrg 13450814a2baSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13460814a2baSmrg# etc.) 134776888252Smrgcase $os in 13480814a2baSmrg # First match some system type aliases that might get confused 13490814a2baSmrg # with valid system types. 13500814a2baSmrg # solaris* is a basic system type, with this one exception. 13510814a2baSmrg auroraux) 13520814a2baSmrg os=auroraux 135363847c39Smrg ;; 13540814a2baSmrg bluegene*) 13550814a2baSmrg os=cnk 135676888252Smrg ;; 13570814a2baSmrg solaris1 | solaris1.*) 13580814a2baSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 135976888252Smrg ;; 13600814a2baSmrg solaris) 13610814a2baSmrg os=solaris2 136276888252Smrg ;; 13630814a2baSmrg unixware*) 13640814a2baSmrg os=sysv4.2uw 136576888252Smrg ;; 13660814a2baSmrg # es1800 is here to avoid being matched by es* (a different OS) 13670814a2baSmrg es1800*) 13680814a2baSmrg os=ose 136976888252Smrg ;; 13700814a2baSmrg # Some version numbers need modification 13710814a2baSmrg chorusos*) 13720814a2baSmrg os=chorusos 137376888252Smrg ;; 13740814a2baSmrg isc) 13750814a2baSmrg os=isc2.2 137676888252Smrg ;; 13770814a2baSmrg sco6) 13780814a2baSmrg os=sco5v6 137976888252Smrg ;; 13800814a2baSmrg sco5) 13810814a2baSmrg os=sco3.2v5 138276888252Smrg ;; 13830814a2baSmrg sco4) 13840814a2baSmrg os=sco3.2v4 138576888252Smrg ;; 13860814a2baSmrg sco3.2.[4-9]*) 13870814a2baSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13881ae1b5e8Smrg ;; 13890814a2baSmrg sco*v* | scout) 13900814a2baSmrg # Don't match below 139176888252Smrg ;; 13920814a2baSmrg sco*) 13930814a2baSmrg os=sco3.2v2 139476888252Smrg ;; 13950814a2baSmrg psos*) 13960814a2baSmrg os=psos 139776888252Smrg ;; 13980814a2baSmrg qnx*) 13990814a2baSmrg os=qnx 140076888252Smrg ;; 14010814a2baSmrg hiux*) 14020814a2baSmrg os=hiuxwe2 14031ae1b5e8Smrg ;; 14040814a2baSmrg lynx*178) 14050814a2baSmrg os=lynxos178 140676888252Smrg ;; 14070814a2baSmrg lynx*5) 14080814a2baSmrg os=lynxos5 140976888252Smrg ;; 14100814a2baSmrg lynxos*) 14110814a2baSmrg # don't get caught up in next wildcard 141276888252Smrg ;; 14130814a2baSmrg lynx*) 14140814a2baSmrg os=lynxos 141576888252Smrg ;; 14160814a2baSmrg mac[0-9]*) 14170814a2baSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 141876888252Smrg ;; 14190814a2baSmrg opened*) 14200814a2baSmrg os=openedition 142176888252Smrg ;; 14220814a2baSmrg os400*) 14230814a2baSmrg os=os400 142476888252Smrg ;; 14250814a2baSmrg sunos5*) 14260814a2baSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14271ae1b5e8Smrg ;; 14280814a2baSmrg sunos6*) 14290814a2baSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 143076888252Smrg ;; 14310814a2baSmrg wince*) 14320814a2baSmrg os=wince 143376888252Smrg ;; 14340814a2baSmrg utek*) 14350814a2baSmrg os=bsd 143676888252Smrg ;; 14370814a2baSmrg dynix*) 14380814a2baSmrg os=bsd 143976888252Smrg ;; 14400814a2baSmrg acis*) 14410814a2baSmrg os=aos 144276888252Smrg ;; 14430814a2baSmrg atheos*) 14440814a2baSmrg os=atheos 144576888252Smrg ;; 14460814a2baSmrg syllable*) 14470814a2baSmrg os=syllable 144876888252Smrg ;; 14490814a2baSmrg 386bsd) 14500814a2baSmrg os=bsd 14511ae1b5e8Smrg ;; 14520814a2baSmrg ctix* | uts*) 14530814a2baSmrg os=sysv 145476888252Smrg ;; 14550814a2baSmrg nova*) 14560814a2baSmrg os=rtmk-nova 145776888252Smrg ;; 14580814a2baSmrg ns2) 14590814a2baSmrg os=nextstep2 146076888252Smrg ;; 14610814a2baSmrg # Preserve the version number of sinix5. 14620814a2baSmrg sinix5.*) 14630814a2baSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 146476888252Smrg ;; 14650814a2baSmrg sinix*) 14660814a2baSmrg os=sysv4 146776888252Smrg ;; 14680814a2baSmrg tpf*) 14690814a2baSmrg os=tpf 147076888252Smrg ;; 14710814a2baSmrg triton*) 14720814a2baSmrg os=sysv3 147376888252Smrg ;; 14740814a2baSmrg oss*) 14750814a2baSmrg os=sysv3 147676888252Smrg ;; 14770814a2baSmrg svr4*) 14780814a2baSmrg os=sysv4 147976888252Smrg ;; 14800814a2baSmrg svr3) 14810814a2baSmrg os=sysv3 148276888252Smrg ;; 14830814a2baSmrg sysvr4) 14840814a2baSmrg os=sysv4 148576888252Smrg ;; 14860814a2baSmrg ose*) 14870814a2baSmrg os=ose 14881ae1b5e8Smrg ;; 14890814a2baSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14900814a2baSmrg os=mint 149163847c39Smrg ;; 14920814a2baSmrg dicos*) 14930814a2baSmrg os=dicos 149463847c39Smrg ;; 14950814a2baSmrg pikeos*) 14960814a2baSmrg # Until real need of OS specific support for 14970814a2baSmrg # particular features comes up, bare metal 14980814a2baSmrg # configurations are quite functional. 14990814a2baSmrg case $cpu in 15000814a2baSmrg arm*) 15010814a2baSmrg os=eabi 15020814a2baSmrg ;; 15030814a2baSmrg *) 15040814a2baSmrg os=elf 15050814a2baSmrg ;; 15060814a2baSmrg esac 150776888252Smrg ;; 150876888252Smrg *) 15090814a2baSmrg # No normalization, but not necessarily accepted, that comes below. 151076888252Smrg ;; 151176888252Smrgesac 15120814a2baSmrg 151376888252Smrgelse 151476888252Smrg 151576888252Smrg# Here we handle the default operating systems that come with various machines. 151676888252Smrg# The value should be what the vendor currently ships out the door with their 151776888252Smrg# machine or put another way, the most popular os provided with the machine. 151876888252Smrg 151976888252Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 152076888252Smrg# "-sun"), then you have to tell the case statement up towards the top 152176888252Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 152276888252Smrg# will signal an error saying that MANUFACTURER isn't an operating 152376888252Smrg# system, and we'll never get to this point. 152476888252Smrg 15250814a2baSmrgkernel= 15260814a2baSmrgcase $cpu-$vendor in 152763847c39Smrg score-*) 15280814a2baSmrg os=elf 15291ae1b5e8Smrg ;; 153063847c39Smrg spu-*) 15310814a2baSmrg os=elf 15321ae1b5e8Smrg ;; 153376888252Smrg *-acorn) 15340814a2baSmrg os=riscix1.2 153576888252Smrg ;; 153676888252Smrg arm*-rebel) 15370814a2baSmrg kernel=linux 15380814a2baSmrg os=gnu 153976888252Smrg ;; 154076888252Smrg arm*-semi) 15410814a2baSmrg os=aout 154276888252Smrg ;; 154363847c39Smrg c4x-* | tic4x-*) 15440814a2baSmrg os=coff 154563847c39Smrg ;; 15469586ba5aSmrg c8051-*) 15470814a2baSmrg os=elf 15480814a2baSmrg ;; 15490814a2baSmrg clipper-intergraph) 15500814a2baSmrg os=clix 15519586ba5aSmrg ;; 15529586ba5aSmrg hexagon-*) 15530814a2baSmrg os=elf 15549586ba5aSmrg ;; 155563847c39Smrg tic54x-*) 15560814a2baSmrg os=coff 155763847c39Smrg ;; 155863847c39Smrg tic55x-*) 15590814a2baSmrg os=coff 156063847c39Smrg ;; 156163847c39Smrg tic6x-*) 15620814a2baSmrg os=coff 156376888252Smrg ;; 156476888252Smrg # This must come before the *-dec entry. 156576888252Smrg pdp10-*) 15660814a2baSmrg os=tops20 156776888252Smrg ;; 156876888252Smrg pdp11-*) 15690814a2baSmrg os=none 157076888252Smrg ;; 157176888252Smrg *-dec | vax-*) 15720814a2baSmrg os=ultrix4.2 157376888252Smrg ;; 157476888252Smrg m68*-apollo) 15750814a2baSmrg os=domain 157676888252Smrg ;; 157776888252Smrg i386-sun) 15780814a2baSmrg os=sunos4.0.2 157976888252Smrg ;; 158076888252Smrg m68000-sun) 15810814a2baSmrg os=sunos3 158276888252Smrg ;; 158376888252Smrg m68*-cisco) 15840814a2baSmrg os=aout 158576888252Smrg ;; 158663847c39Smrg mep-*) 15870814a2baSmrg os=elf 15881ae1b5e8Smrg ;; 158976888252Smrg mips*-cisco) 15900814a2baSmrg os=elf 159176888252Smrg ;; 159276888252Smrg mips*-*) 15930814a2baSmrg os=elf 159476888252Smrg ;; 159576888252Smrg or32-*) 15960814a2baSmrg os=coff 159776888252Smrg ;; 159876888252Smrg *-tti) # must be before sparc entry or we get the wrong os. 15990814a2baSmrg os=sysv3 160076888252Smrg ;; 160176888252Smrg sparc-* | *-sun) 16020814a2baSmrg os=sunos4.1.1 160376888252Smrg ;; 16040814a2baSmrg pru-*) 16050814a2baSmrg os=elf 160676888252Smrg ;; 16070814a2baSmrg *-be) 16080814a2baSmrg os=beos 16091ae1b5e8Smrg ;; 161076888252Smrg *-ibm) 16110814a2baSmrg os=aix 161276888252Smrg ;; 161363847c39Smrg *-knuth) 16140814a2baSmrg os=mmixware 16151ae1b5e8Smrg ;; 161676888252Smrg *-wec) 16170814a2baSmrg os=proelf 161876888252Smrg ;; 161976888252Smrg *-winbond) 16200814a2baSmrg os=proelf 162176888252Smrg ;; 162276888252Smrg *-oki) 16230814a2baSmrg os=proelf 162476888252Smrg ;; 162576888252Smrg *-hp) 16260814a2baSmrg os=hpux 162776888252Smrg ;; 162876888252Smrg *-hitachi) 16290814a2baSmrg os=hiux 163076888252Smrg ;; 163176888252Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16320814a2baSmrg os=sysv 163376888252Smrg ;; 163476888252Smrg *-cbm) 16350814a2baSmrg os=amigaos 163676888252Smrg ;; 163776888252Smrg *-dg) 16380814a2baSmrg os=dgux 163976888252Smrg ;; 164076888252Smrg *-dolphin) 16410814a2baSmrg os=sysv3 164276888252Smrg ;; 164376888252Smrg m68k-ccur) 16440814a2baSmrg os=rtu 164576888252Smrg ;; 164676888252Smrg m88k-omron*) 16470814a2baSmrg os=luna 164876888252Smrg ;; 16490814a2baSmrg *-next) 16500814a2baSmrg os=nextstep 165176888252Smrg ;; 165276888252Smrg *-sequent) 16530814a2baSmrg os=ptx 165476888252Smrg ;; 165576888252Smrg *-crds) 16560814a2baSmrg os=unos 165776888252Smrg ;; 165876888252Smrg *-ns) 16590814a2baSmrg os=genix 166076888252Smrg ;; 166176888252Smrg i370-*) 16620814a2baSmrg os=mvs 166376888252Smrg ;; 166476888252Smrg *-gould) 16650814a2baSmrg os=sysv 166676888252Smrg ;; 166776888252Smrg *-highlevel) 16680814a2baSmrg os=bsd 166976888252Smrg ;; 167076888252Smrg *-encore) 16710814a2baSmrg os=bsd 167276888252Smrg ;; 167376888252Smrg *-sgi) 16740814a2baSmrg os=irix 167576888252Smrg ;; 167676888252Smrg *-siemens) 16770814a2baSmrg os=sysv4 167876888252Smrg ;; 167976888252Smrg *-masscomp) 16800814a2baSmrg os=rtu 168176888252Smrg ;; 168276888252Smrg f30[01]-fujitsu | f700-fujitsu) 16830814a2baSmrg os=uxpv 168476888252Smrg ;; 168576888252Smrg *-rom68k) 16860814a2baSmrg os=coff 168776888252Smrg ;; 168876888252Smrg *-*bug) 16890814a2baSmrg os=coff 169076888252Smrg ;; 169176888252Smrg *-apple) 16920814a2baSmrg os=macos 169376888252Smrg ;; 169476888252Smrg *-atari*) 16950814a2baSmrg os=mint 16960814a2baSmrg ;; 16970814a2baSmrg *-wrs) 16980814a2baSmrg os=vxworks 169976888252Smrg ;; 170076888252Smrg *) 17010814a2baSmrg os=none 170276888252Smrg ;; 170376888252Smrgesac 17040814a2baSmrg 170576888252Smrgfi 170676888252Smrg 17070814a2baSmrg# Now, validate our (potentially fixed-up) OS. 17080814a2baSmrgcase $os in 17090814a2baSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17100814a2baSmrg musl* | newlib* | relibc* | uclibc*) 17110814a2baSmrg ;; 17120814a2baSmrg # Likewise for "kernel-abi" 17130814a2baSmrg eabi* | gnueabi*) 17140814a2baSmrg ;; 17150814a2baSmrg # VxWorks passes extra cpu info in the 4th filed. 17160814a2baSmrg simlinux | simwindows | spe) 17170814a2baSmrg ;; 17180814a2baSmrg # Now accept the basic system types. 17190814a2baSmrg # The portable systems comes first. 17200814a2baSmrg # Each alternative MUST end in a * to match a version number. 17210814a2baSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17220814a2baSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17230814a2baSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17240814a2baSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17250814a2baSmrg | hiux* | abug | nacl* | netware* | windows* \ 17260814a2baSmrg | os9* | macos* | osx* | ios* \ 17270814a2baSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17280814a2baSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17290814a2baSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17300814a2baSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17310814a2baSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17320814a2baSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17330814a2baSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17340814a2baSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17350814a2baSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17360814a2baSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17370814a2baSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17380814a2baSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17390814a2baSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17400814a2baSmrg | midipix* | mingw32* | mingw64* | mint* \ 17410814a2baSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17420814a2baSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17430814a2baSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17440814a2baSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17450814a2baSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17460814a2baSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17470814a2baSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17480814a2baSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17490814a2baSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17500814a2baSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17510814a2baSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 17520814a2baSmrg ;; 17530814a2baSmrg # This one is extra strict with allowed versions 17540814a2baSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17550814a2baSmrg # Don't forget version if it is 3.2v4 or newer. 17560814a2baSmrg ;; 17570814a2baSmrg none) 17580814a2baSmrg ;; 17590814a2baSmrg *) 17600814a2baSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17610814a2baSmrg exit 1 17620814a2baSmrg ;; 17630814a2baSmrgesac 17640814a2baSmrg 17650814a2baSmrg# As a final step for OS-related things, validate the OS-kernel combination 17660814a2baSmrg# (given a valid OS), if there is a kernel. 17670814a2baSmrgcase $kernel-$os in 17680814a2baSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17690814a2baSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 17700814a2baSmrg ;; 17710814a2baSmrg uclinux-uclibc* ) 17720814a2baSmrg ;; 17730814a2baSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 17740814a2baSmrg # These are just libc implementations, not actual OSes, and thus 17750814a2baSmrg # require a kernel. 17760814a2baSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17770814a2baSmrg exit 1 17780814a2baSmrg ;; 17790814a2baSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 17800814a2baSmrg ;; 17810814a2baSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 17820814a2baSmrg ;; 17830814a2baSmrg nto-qnx*) 17840814a2baSmrg ;; 17850814a2baSmrg os2-emx) 17860814a2baSmrg ;; 17870814a2baSmrg *-eabi* | *-gnueabi*) 17880814a2baSmrg ;; 17890814a2baSmrg -*) 17900814a2baSmrg # Blank kernel with real OS is always fine. 17910814a2baSmrg ;; 17920814a2baSmrg *-*) 17930814a2baSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 17940814a2baSmrg exit 1 17950814a2baSmrg ;; 17960814a2baSmrgesac 17970814a2baSmrg 179876888252Smrg# Here we handle the case where we know the os, and the CPU type, but not the 179976888252Smrg# manufacturer. We pick the logical manufacturer. 18000814a2baSmrgcase $vendor in 18010814a2baSmrg unknown) 18020814a2baSmrg case $cpu-$os in 18030814a2baSmrg *-riscix*) 180476888252Smrg vendor=acorn 180576888252Smrg ;; 18060814a2baSmrg *-sunos*) 180776888252Smrg vendor=sun 180876888252Smrg ;; 18090814a2baSmrg *-cnk* | *-aix*) 181076888252Smrg vendor=ibm 181176888252Smrg ;; 18120814a2baSmrg *-beos*) 181376888252Smrg vendor=be 181476888252Smrg ;; 18150814a2baSmrg *-hpux*) 181676888252Smrg vendor=hp 181776888252Smrg ;; 18180814a2baSmrg *-mpeix*) 181976888252Smrg vendor=hp 182076888252Smrg ;; 18210814a2baSmrg *-hiux*) 182276888252Smrg vendor=hitachi 182376888252Smrg ;; 18240814a2baSmrg *-unos*) 182576888252Smrg vendor=crds 182676888252Smrg ;; 18270814a2baSmrg *-dgux*) 182876888252Smrg vendor=dg 182976888252Smrg ;; 18300814a2baSmrg *-luna*) 183176888252Smrg vendor=omron 183276888252Smrg ;; 18330814a2baSmrg *-genix*) 183476888252Smrg vendor=ns 183576888252Smrg ;; 18360814a2baSmrg *-clix*) 18370814a2baSmrg vendor=intergraph 18380814a2baSmrg ;; 18390814a2baSmrg *-mvs* | *-opened*) 18400814a2baSmrg vendor=ibm 18410814a2baSmrg ;; 18420814a2baSmrg *-os400*) 184376888252Smrg vendor=ibm 184476888252Smrg ;; 18450814a2baSmrg s390-* | s390x-*) 18461ae1b5e8Smrg vendor=ibm 18471ae1b5e8Smrg ;; 18480814a2baSmrg *-ptx*) 184976888252Smrg vendor=sequent 185076888252Smrg ;; 18510814a2baSmrg *-tpf*) 18521ae1b5e8Smrg vendor=ibm 18531ae1b5e8Smrg ;; 18540814a2baSmrg *-vxsim* | *-vxworks* | *-windiss*) 185576888252Smrg vendor=wrs 185676888252Smrg ;; 18570814a2baSmrg *-aux*) 185876888252Smrg vendor=apple 185976888252Smrg ;; 18600814a2baSmrg *-hms*) 186176888252Smrg vendor=hitachi 186276888252Smrg ;; 18630814a2baSmrg *-mpw* | *-macos*) 186476888252Smrg vendor=apple 186576888252Smrg ;; 18660814a2baSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 186776888252Smrg vendor=atari 186876888252Smrg ;; 18690814a2baSmrg *-vos*) 187076888252Smrg vendor=stratus 187176888252Smrg ;; 187276888252Smrg esac 187376888252Smrg ;; 187476888252Smrgesac 187576888252Smrg 18760814a2baSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 18771ae1b5e8Smrgexit 187876888252Smrg 187976888252Smrg# Local variables: 18800814a2baSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 188176888252Smrg# time-stamp-start: "timestamp='" 188276888252Smrg# time-stamp-format: "%:y-%02m-%02d" 188376888252Smrg# time-stamp-end: "'" 188476888252Smrg# End: 1885