void-packages

Void Source Packages
git clone git://ezup.dev/void-packages.git
Log | Files | Refs | README | LICENSE

config.sub (34072B)


      1#! /bin/sh
      2# Configuration validation subroutine script.
      3#   Copyright 1992-2020 Free Software Foundation, Inc.
      4
      5timestamp='2020-09-08'
      6
      7# This file is free software; you can redistribute it and/or modify it
      8# under the terms of the GNU General Public License as published by
      9# the Free Software Foundation; either version 3 of the License, or
     10# (at your option) any later version.
     11#
     12# This program is distributed in the hope that it will be useful, but
     13# WITHOUT ANY WARRANTY; without even the implied warranty of
     14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     15# General Public License for more details.
     16#
     17# You should have received a copy of the GNU General Public License
     18# along with this program; if not, see <https://www.gnu.org/licenses/>.
     19#
     20# As a special exception to the GNU General Public License, if you
     21# distribute this file as part of a program that contains a
     22# configuration script generated by Autoconf, you may include it under
     23# the same distribution terms that you use for the rest of that
     24# program.  This Exception is an additional permission under section 7
     25# of the GNU General Public License, version 3 ("GPLv3").
     26
     27
     28# Please send patches to <config-patches@gnu.org>.
     29#
     30# Configuration subroutine to validate and canonicalize a configuration type.
     31# Supply the specified configuration type as an argument.
     32# If it is invalid, we print an error message on stderr and exit with code 1.
     33# Otherwise, we print the canonical config type on stdout and succeed.
     34
     35# You can get the latest version of this script from:
     36# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
     37
     38# This file is supposed to be the same for all GNU packages
     39# and recognize all the CPU types, system types and aliases
     40# that are meaningful with *any* GNU software.
     41# Each package is responsible for reporting which valid configurations
     42# it does not support.  The user should be able to distinguish
     43# a failure to support a valid configuration from a meaningless
     44# configuration.
     45
     46# The goal of this file is to map all the various variations of a given
     47# machine specification into a single specification in the form:
     48#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
     49# or in some cases, the newer four-part form:
     50#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
     51# It is wrong to echo any other type of specification.
     52
     53me=`echo "$0" | sed -e 's,.*/,,'`
     54
     55usage="\
     56Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
     57
     58Canonicalize a configuration name.
     59
     60Options:
     61  -h, --help         print this help, then exit
     62  -t, --time-stamp   print date of last modification, then exit
     63  -v, --version      print version number, then exit
     64
     65Report bugs and patches to <config-patches@gnu.org>."
     66
     67version="\
     68GNU config.sub ($timestamp)
     69
     70Copyright 1992-2020 Free Software Foundation, Inc.
     71
     72This is free software; see the source for copying conditions.  There is NO
     73warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
     74
     75help="
     76Try \`$me --help' for more information."
     77
     78# Parse command line
     79while test $# -gt 0 ; do
     80  case $1 in
     81    --time-stamp | --time* | -t )
     82       echo "$timestamp" ; exit ;;
     83    --version | -v )
     84       echo "$version" ; exit ;;
     85    --help | --h* | -h )
     86       echo "$usage"; exit ;;
     87    -- )     # Stop option processing
     88       shift; break ;;
     89    - )	# Use stdin as input.
     90       break ;;
     91    -* )
     92       echo "$me: invalid option $1$help" >&2
     93       exit 1 ;;
     94
     95    *local*)
     96       # First pass through any local machine types.
     97       echo "$1"
     98       exit ;;
     99
    100    * )
    101       break ;;
    102  esac
    103done
    104
    105case $# in
    106 0) echo "$me: missing argument$help" >&2
    107    exit 1;;
    108 1) ;;
    109 *) echo "$me: too many arguments$help" >&2
    110    exit 1;;
    111esac
    112
    113# Split fields of configuration type
    114# shellcheck disable=SC2162
    115IFS="-" read field1 field2 field3 field4 <<EOF
    116$1
    117EOF
    118
    119# Separate into logical components for further validation
    120case $1 in
    121	*-*-*-*-*)
    122		echo Invalid configuration \`"$1"\': more than four components >&2
    123		exit 1
    124		;;
    125	*-*-*-*)
    126		basic_machine=$field1-$field2
    127		basic_os=$field3-$field4
    128		;;
    129	*-*-*)
    130		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
    131		# parts
    132		maybe_os=$field2-$field3
    133		case $maybe_os in
    134			nto-qnx* | linux-* | uclinux-uclibc* \
    135			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
    136			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
    137			| storm-chaos* | os2-emx* | rtmk-nova*)
    138				basic_machine=$field1
    139				basic_os=$maybe_os
    140				;;
    141			android-linux)
    142				basic_machine=$field1-unknown
    143				basic_os=linux-android
    144				;;
    145			*)
    146				basic_machine=$field1-$field2
    147				basic_os=$field3
    148				;;
    149		esac
    150		;;
    151	*-*)
    152		# A lone config we happen to match not fitting any pattern
    153		case $field1-$field2 in
    154			decstation-3100)
    155				basic_machine=mips-dec
    156				basic_os=
    157				;;
    158			*-*)
    159				# Second component is usually, but not always the OS
    160				case $field2 in
    161					# Prevent following clause from handling this valid os
    162					sun*os*)
    163						basic_machine=$field1
    164						basic_os=$field2
    165						;;
    166					# Manufacturers
    167					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
    168					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
    169					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
    170					| convergent* | ncr* | news | 32* | 3600* | 3100* \
    171					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
    172					| ultra | tti* | harris | dolphin | highlevel | gould \
    173					| cbm | ns | masscomp | apple | axis | knuth | cray \
    174					| microblaze* | sim | cisco \
    175					| oki | wec | wrs | winbond)
    176						basic_machine=$field1-$field2
    177						basic_os=
    178						;;
    179					*)
    180						basic_machine=$field1
    181						basic_os=$field2
    182						;;
    183				esac
    184			;;
    185		esac
    186		;;
    187	*)
    188		# Convert single-component short-hands not valid as part of
    189		# multi-component configurations.
    190		case $field1 in
    191			386bsd)
    192				basic_machine=i386-pc
    193				basic_os=bsd
    194				;;
    195			a29khif)
    196				basic_machine=a29k-amd
    197				basic_os=udi
    198				;;
    199			adobe68k)
    200				basic_machine=m68010-adobe
    201				basic_os=scout
    202				;;
    203			alliant)
    204				basic_machine=fx80-alliant
    205				basic_os=
    206				;;
    207			altos | altos3068)
    208				basic_machine=m68k-altos
    209				basic_os=
    210				;;
    211			am29k)
    212				basic_machine=a29k-none
    213				basic_os=bsd
    214				;;
    215			amdahl)
    216				basic_machine=580-amdahl
    217				basic_os=sysv
    218				;;
    219			amiga)
    220				basic_machine=m68k-unknown
    221				basic_os=
    222				;;
    223			amigaos | amigados)
    224				basic_machine=m68k-unknown
    225				basic_os=amigaos
    226				;;
    227			amigaunix | amix)
    228				basic_machine=m68k-unknown
    229				basic_os=sysv4
    230				;;
    231			apollo68)
    232				basic_machine=m68k-apollo
    233				basic_os=sysv
    234				;;
    235			apollo68bsd)
    236				basic_machine=m68k-apollo
    237				basic_os=bsd
    238				;;
    239			aros)
    240				basic_machine=i386-pc
    241				basic_os=aros
    242				;;
    243			aux)
    244				basic_machine=m68k-apple
    245				basic_os=aux
    246				;;
    247			balance)
    248				basic_machine=ns32k-sequent
    249				basic_os=dynix
    250				;;
    251			blackfin)
    252				basic_machine=bfin-unknown
    253				basic_os=linux
    254				;;
    255			cegcc)
    256				basic_machine=arm-unknown
    257				basic_os=cegcc
    258				;;
    259			convex-c1)
    260				basic_machine=c1-convex
    261				basic_os=bsd
    262				;;
    263			convex-c2)
    264				basic_machine=c2-convex
    265				basic_os=bsd
    266				;;
    267			convex-c32)
    268				basic_machine=c32-convex
    269				basic_os=bsd
    270				;;
    271			convex-c34)
    272				basic_machine=c34-convex
    273				basic_os=bsd
    274				;;
    275			convex-c38)
    276				basic_machine=c38-convex
    277				basic_os=bsd
    278				;;
    279			cray)
    280				basic_machine=j90-cray
    281				basic_os=unicos
    282				;;
    283			crds | unos)
    284				basic_machine=m68k-crds
    285				basic_os=
    286				;;
    287			da30)
    288				basic_machine=m68k-da30
    289				basic_os=
    290				;;
    291			decstation | pmax | pmin | dec3100 | decstatn)
    292				basic_machine=mips-dec
    293				basic_os=
    294				;;
    295			delta88)
    296				basic_machine=m88k-motorola
    297				basic_os=sysv3
    298				;;
    299			dicos)
    300				basic_machine=i686-pc
    301				basic_os=dicos
    302				;;
    303			djgpp)
    304				basic_machine=i586-pc
    305				basic_os=msdosdjgpp
    306				;;
    307			ebmon29k)
    308				basic_machine=a29k-amd
    309				basic_os=ebmon
    310				;;
    311			es1800 | OSE68k | ose68k | ose | OSE)
    312				basic_machine=m68k-ericsson
    313				basic_os=ose
    314				;;
    315			gmicro)
    316				basic_machine=tron-gmicro
    317				basic_os=sysv
    318				;;
    319			go32)
    320				basic_machine=i386-pc
    321				basic_os=go32
    322				;;
    323			h8300hms)
    324				basic_machine=h8300-hitachi
    325				basic_os=hms
    326				;;
    327			h8300xray)
    328				basic_machine=h8300-hitachi
    329				basic_os=xray
    330				;;
    331			h8500hms)
    332				basic_machine=h8500-hitachi
    333				basic_os=hms
    334				;;
    335			harris)
    336				basic_machine=m88k-harris
    337				basic_os=sysv3
    338				;;
    339			hp300 | hp300hpux)
    340				basic_machine=m68k-hp
    341				basic_os=hpux
    342				;;
    343			hp300bsd)
    344				basic_machine=m68k-hp
    345				basic_os=bsd
    346				;;
    347			hppaosf)
    348				basic_machine=hppa1.1-hp
    349				basic_os=osf
    350				;;
    351			hppro)
    352				basic_machine=hppa1.1-hp
    353				basic_os=proelf
    354				;;
    355			i386mach)
    356				basic_machine=i386-mach
    357				basic_os=mach
    358				;;
    359			isi68 | isi)
    360				basic_machine=m68k-isi
    361				basic_os=sysv
    362				;;
    363			m68knommu)
    364				basic_machine=m68k-unknown
    365				basic_os=linux
    366				;;
    367			magnum | m3230)
    368				basic_machine=mips-mips
    369				basic_os=sysv
    370				;;
    371			merlin)
    372				basic_machine=ns32k-utek
    373				basic_os=sysv
    374				;;
    375			mingw64)
    376				basic_machine=x86_64-pc
    377				basic_os=mingw64
    378				;;
    379			mingw32)
    380				basic_machine=i686-pc
    381				basic_os=mingw32
    382				;;
    383			mingw32ce)
    384				basic_machine=arm-unknown
    385				basic_os=mingw32ce
    386				;;
    387			monitor)
    388				basic_machine=m68k-rom68k
    389				basic_os=coff
    390				;;
    391			morphos)
    392				basic_machine=powerpc-unknown
    393				basic_os=morphos
    394				;;
    395			moxiebox)
    396				basic_machine=moxie-unknown
    397				basic_os=moxiebox
    398				;;
    399			msdos)
    400				basic_machine=i386-pc
    401				basic_os=msdos
    402				;;
    403			msys)
    404				basic_machine=i686-pc
    405				basic_os=msys
    406				;;
    407			mvs)
    408				basic_machine=i370-ibm
    409				basic_os=mvs
    410				;;
    411			nacl)
    412				basic_machine=le32-unknown
    413				basic_os=nacl
    414				;;
    415			ncr3000)
    416				basic_machine=i486-ncr
    417				basic_os=sysv4
    418				;;
    419			netbsd386)
    420				basic_machine=i386-pc
    421				basic_os=netbsd
    422				;;
    423			netwinder)
    424				basic_machine=armv4l-rebel
    425				basic_os=linux
    426				;;
    427			news | news700 | news800 | news900)
    428				basic_machine=m68k-sony
    429				basic_os=newsos
    430				;;
    431			news1000)
    432				basic_machine=m68030-sony
    433				basic_os=newsos
    434				;;
    435			necv70)
    436				basic_machine=v70-nec
    437				basic_os=sysv
    438				;;
    439			nh3000)
    440				basic_machine=m68k-harris
    441				basic_os=cxux
    442				;;
    443			nh[45]000)
    444				basic_machine=m88k-harris
    445				basic_os=cxux
    446				;;
    447			nindy960)
    448				basic_machine=i960-intel
    449				basic_os=nindy
    450				;;
    451			mon960)
    452				basic_machine=i960-intel
    453				basic_os=mon960
    454				;;
    455			nonstopux)
    456				basic_machine=mips-compaq
    457				basic_os=nonstopux
    458				;;
    459			os400)
    460				basic_machine=powerpc-ibm
    461				basic_os=os400
    462				;;
    463			OSE68000 | ose68000)
    464				basic_machine=m68000-ericsson
    465				basic_os=ose
    466				;;
    467			os68k)
    468				basic_machine=m68k-none
    469				basic_os=os68k
    470				;;
    471			paragon)
    472				basic_machine=i860-intel
    473				basic_os=osf
    474				;;
    475			parisc)
    476				basic_machine=hppa-unknown
    477				basic_os=linux
    478				;;
    479			psp)
    480				basic_machine=mipsallegrexel-sony
    481				basic_os=psp
    482				;;
    483			pw32)
    484				basic_machine=i586-unknown
    485				basic_os=pw32
    486				;;
    487			rdos | rdos64)
    488				basic_machine=x86_64-pc
    489				basic_os=rdos
    490				;;
    491			rdos32)
    492				basic_machine=i386-pc
    493				basic_os=rdos
    494				;;
    495			rom68k)
    496				basic_machine=m68k-rom68k
    497				basic_os=coff
    498				;;
    499			sa29200)
    500				basic_machine=a29k-amd
    501				basic_os=udi
    502				;;
    503			sei)
    504				basic_machine=mips-sei
    505				basic_os=seiux
    506				;;
    507			sequent)
    508				basic_machine=i386-sequent
    509				basic_os=
    510				;;
    511			sps7)
    512				basic_machine=m68k-bull
    513				basic_os=sysv2
    514				;;
    515			st2000)
    516				basic_machine=m68k-tandem
    517				basic_os=
    518				;;
    519			stratus)
    520				basic_machine=i860-stratus
    521				basic_os=sysv4
    522				;;
    523			sun2)
    524				basic_machine=m68000-sun
    525				basic_os=
    526				;;
    527			sun2os3)
    528				basic_machine=m68000-sun
    529				basic_os=sunos3
    530				;;
    531			sun2os4)
    532				basic_machine=m68000-sun
    533				basic_os=sunos4
    534				;;
    535			sun3)
    536				basic_machine=m68k-sun
    537				basic_os=
    538				;;
    539			sun3os3)
    540				basic_machine=m68k-sun
    541				basic_os=sunos3
    542				;;
    543			sun3os4)
    544				basic_machine=m68k-sun
    545				basic_os=sunos4
    546				;;
    547			sun4)
    548				basic_machine=sparc-sun
    549				basic_os=
    550				;;
    551			sun4os3)
    552				basic_machine=sparc-sun
    553				basic_os=sunos3
    554				;;
    555			sun4os4)
    556				basic_machine=sparc-sun
    557				basic_os=sunos4
    558				;;
    559			sun4sol2)
    560				basic_machine=sparc-sun
    561				basic_os=solaris2
    562				;;
    563			sun386 | sun386i | roadrunner)
    564				basic_machine=i386-sun
    565				basic_os=
    566				;;
    567			sv1)
    568				basic_machine=sv1-cray
    569				basic_os=unicos
    570				;;
    571			symmetry)
    572				basic_machine=i386-sequent
    573				basic_os=dynix
    574				;;
    575			t3e)
    576				basic_machine=alphaev5-cray
    577				basic_os=unicos
    578				;;
    579			t90)
    580				basic_machine=t90-cray
    581				basic_os=unicos
    582				;;
    583			toad1)
    584				basic_machine=pdp10-xkl
    585				basic_os=tops20
    586				;;
    587			tpf)
    588				basic_machine=s390x-ibm
    589				basic_os=tpf
    590				;;
    591			udi29k)
    592				basic_machine=a29k-amd
    593				basic_os=udi
    594				;;
    595			ultra3)
    596				basic_machine=a29k-nyu
    597				basic_os=sym1
    598				;;
    599			v810 | necv810)
    600				basic_machine=v810-nec
    601				basic_os=none
    602				;;
    603			vaxv)
    604				basic_machine=vax-dec
    605				basic_os=sysv
    606				;;
    607			vms)
    608				basic_machine=vax-dec
    609				basic_os=vms
    610				;;
    611			vsta)
    612				basic_machine=i386-pc
    613				basic_os=vsta
    614				;;
    615			vxworks960)
    616				basic_machine=i960-wrs
    617				basic_os=vxworks
    618				;;
    619			vxworks68)
    620				basic_machine=m68k-wrs
    621				basic_os=vxworks
    622				;;
    623			vxworks29k)
    624				basic_machine=a29k-wrs
    625				basic_os=vxworks
    626				;;
    627			xbox)
    628				basic_machine=i686-pc
    629				basic_os=mingw32
    630				;;
    631			ymp)
    632				basic_machine=ymp-cray
    633				basic_os=unicos
    634				;;
    635			*)
    636				basic_machine=$1
    637				basic_os=
    638				;;
    639		esac
    640		;;
    641esac
    642
    643# Decode 1-component or ad-hoc basic machines
    644case $basic_machine in
    645	# Here we handle the default manufacturer of certain CPU types.  It is in
    646	# some cases the only manufacturer, in others, it is the most popular.
    647	w89k)
    648		cpu=hppa1.1
    649		vendor=winbond
    650		;;
    651	op50n)
    652		cpu=hppa1.1
    653		vendor=oki
    654		;;
    655	op60c)
    656		cpu=hppa1.1
    657		vendor=oki
    658		;;
    659	ibm*)
    660		cpu=i370
    661		vendor=ibm
    662		;;
    663	orion105)
    664		cpu=clipper
    665		vendor=highlevel
    666		;;
    667	mac | mpw | mac-mpw)
    668		cpu=m68k
    669		vendor=apple
    670		;;
    671	pmac | pmac-mpw)
    672		cpu=powerpc
    673		vendor=apple
    674		;;
    675
    676	# Recognize the various machine names and aliases which stand
    677	# for a CPU type and a company and sometimes even an OS.
    678	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
    679		cpu=m68000
    680		vendor=att
    681		;;
    682	3b*)
    683		cpu=we32k
    684		vendor=att
    685		;;
    686	bluegene*)
    687		cpu=powerpc
    688		vendor=ibm
    689		basic_os=cnk
    690		;;
    691	decsystem10* | dec10*)
    692		cpu=pdp10
    693		vendor=dec
    694		basic_os=tops10
    695		;;
    696	decsystem20* | dec20*)
    697		cpu=pdp10
    698		vendor=dec
    699		basic_os=tops20
    700		;;
    701	delta | 3300 | motorola-3300 | motorola-delta \
    702	      | 3300-motorola | delta-motorola)
    703		cpu=m68k
    704		vendor=motorola
    705		;;
    706	dpx2*)
    707		cpu=m68k
    708		vendor=bull
    709		basic_os=sysv3
    710		;;
    711	encore | umax | mmax)
    712		cpu=ns32k
    713		vendor=encore
    714		;;
    715	elxsi)
    716		cpu=elxsi
    717		vendor=elxsi
    718		basic_os=${basic_os:-bsd}
    719		;;
    720	fx2800)
    721		cpu=i860
    722		vendor=alliant
    723		;;
    724	genix)
    725		cpu=ns32k
    726		vendor=ns
    727		;;
    728	h3050r* | hiux*)
    729		cpu=hppa1.1
    730		vendor=hitachi
    731		basic_os=hiuxwe2
    732		;;
    733	hp3k9[0-9][0-9] | hp9[0-9][0-9])
    734		cpu=hppa1.0
    735		vendor=hp
    736		;;
    737	hp9k2[0-9][0-9] | hp9k31[0-9])
    738		cpu=m68000
    739		vendor=hp
    740		;;
    741	hp9k3[2-9][0-9])
    742		cpu=m68k
    743		vendor=hp
    744		;;
    745	hp9k6[0-9][0-9] | hp6[0-9][0-9])
    746		cpu=hppa1.0
    747		vendor=hp
    748		;;
    749	hp9k7[0-79][0-9] | hp7[0-79][0-9])
    750		cpu=hppa1.1
    751		vendor=hp
    752		;;
    753	hp9k78[0-9] | hp78[0-9])
    754		# FIXME: really hppa2.0-hp
    755		cpu=hppa1.1
    756		vendor=hp
    757		;;
    758	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
    759		# FIXME: really hppa2.0-hp
    760		cpu=hppa1.1
    761		vendor=hp
    762		;;
    763	hp9k8[0-9][13679] | hp8[0-9][13679])
    764		cpu=hppa1.1
    765		vendor=hp
    766		;;
    767	hp9k8[0-9][0-9] | hp8[0-9][0-9])
    768		cpu=hppa1.0
    769		vendor=hp
    770		;;
    771	i*86v32)
    772		cpu=`echo "$1" | sed -e 's/86.*/86/'`
    773		vendor=pc
    774		basic_os=sysv32
    775		;;
    776	i*86v4*)
    777		cpu=`echo "$1" | sed -e 's/86.*/86/'`
    778		vendor=pc
    779		basic_os=sysv4
    780		;;
    781	i*86v)
    782		cpu=`echo "$1" | sed -e 's/86.*/86/'`
    783		vendor=pc
    784		basic_os=sysv
    785		;;
    786	i*86sol2)
    787		cpu=`echo "$1" | sed -e 's/86.*/86/'`
    788		vendor=pc
    789		basic_os=solaris2
    790		;;
    791	j90 | j90-cray)
    792		cpu=j90
    793		vendor=cray
    794		basic_os=${basic_os:-unicos}
    795		;;
    796	iris | iris4d)
    797		cpu=mips
    798		vendor=sgi
    799		case $basic_os in
    800		    irix*)
    801			;;
    802		    *)
    803			basic_os=irix4
    804			;;
    805		esac
    806		;;
    807	miniframe)
    808		cpu=m68000
    809		vendor=convergent
    810		;;
    811	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
    812		cpu=m68k
    813		vendor=atari
    814		basic_os=mint
    815		;;
    816	news-3600 | risc-news)
    817		cpu=mips
    818		vendor=sony
    819		basic_os=newsos
    820		;;
    821	next | m*-next)
    822		cpu=m68k
    823		vendor=next
    824		case $basic_os in
    825		    openstep*)
    826		        ;;
    827		    nextstep*)
    828			;;
    829		    ns2*)
    830		      basic_os=nextstep2
    831			;;
    832		    *)
    833		      basic_os=nextstep3
    834			;;
    835		esac
    836		;;
    837	np1)
    838		cpu=np1
    839		vendor=gould
    840		;;
    841	op50n-* | op60c-*)
    842		cpu=hppa1.1
    843		vendor=oki
    844		basic_os=proelf
    845		;;
    846	pa-hitachi)
    847		cpu=hppa1.1
    848		vendor=hitachi
    849		basic_os=hiuxwe2
    850		;;
    851	pbd)
    852		cpu=sparc
    853		vendor=tti
    854		;;
    855	pbb)
    856		cpu=m68k
    857		vendor=tti
    858		;;
    859	pc532)
    860		cpu=ns32k
    861		vendor=pc532
    862		;;
    863	pn)
    864		cpu=pn
    865		vendor=gould
    866		;;
    867	power)
    868		cpu=power
    869		vendor=ibm
    870		;;
    871	ps2)
    872		cpu=i386
    873		vendor=ibm
    874		;;
    875	rm[46]00)
    876		cpu=mips
    877		vendor=siemens
    878		;;
    879	rtpc | rtpc-*)
    880		cpu=romp
    881		vendor=ibm
    882		;;
    883	sde)
    884		cpu=mipsisa32
    885		vendor=sde
    886		basic_os=${basic_os:-elf}
    887		;;
    888	simso-wrs)
    889		cpu=sparclite
    890		vendor=wrs
    891		basic_os=vxworks
    892		;;
    893	tower | tower-32)
    894		cpu=m68k
    895		vendor=ncr
    896		;;
    897	vpp*|vx|vx-*)
    898		cpu=f301
    899		vendor=fujitsu
    900		;;
    901	w65)
    902		cpu=w65
    903		vendor=wdc
    904		;;
    905	w89k-*)
    906		cpu=hppa1.1
    907		vendor=winbond
    908		basic_os=proelf
    909		;;
    910	none)
    911		cpu=none
    912		vendor=none
    913		;;
    914	leon|leon[3-9])
    915		cpu=sparc
    916		vendor=$basic_machine
    917		;;
    918	leon-*|leon[3-9]-*)
    919		cpu=sparc
    920		vendor=`echo "$basic_machine" | sed 's/-.*//'`
    921		;;
    922
    923	*-*)
    924		# shellcheck disable=SC2162
    925		IFS="-" read cpu vendor <<EOF
    926$basic_machine
    927EOF
    928		;;
    929	# We use `pc' rather than `unknown'
    930	# because (1) that's what they normally are, and
    931	# (2) the word "unknown" tends to confuse beginning users.
    932	i*86 | x86_64)
    933		cpu=$basic_machine
    934		vendor=pc
    935		;;
    936	# These rules are duplicated from below for sake of the special case above;
    937	# i.e. things that normalized to x86 arches should also default to "pc"
    938	pc98)
    939		cpu=i386
    940		vendor=pc
    941		;;
    942	x64 | amd64)
    943		cpu=x86_64
    944		vendor=pc
    945		;;
    946	# Recognize the basic CPU types without company name.
    947	*)
    948		cpu=$basic_machine
    949		vendor=unknown
    950		;;
    951esac
    952
    953unset -v basic_machine
    954
    955# Decode basic machines in the full and proper CPU-Company form.
    956case $cpu-$vendor in
    957	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
    958	# some cases the only manufacturer, in others, it is the most popular.
    959	craynv-unknown)
    960		vendor=cray
    961		basic_os=${basic_os:-unicosmp}
    962		;;
    963	c90-unknown | c90-cray)
    964		vendor=cray
    965		basic_os=${Basic_os:-unicos}
    966		;;
    967	fx80-unknown)
    968		vendor=alliant
    969		;;
    970	romp-unknown)
    971		vendor=ibm
    972		;;
    973	mmix-unknown)
    974		vendor=knuth
    975		;;
    976	microblaze-unknown | microblazeel-unknown)
    977		vendor=xilinx
    978		;;
    979	rs6000-unknown)
    980		vendor=ibm
    981		;;
    982	vax-unknown)
    983		vendor=dec
    984		;;
    985	pdp11-unknown)
    986		vendor=dec
    987		;;
    988	we32k-unknown)
    989		vendor=att
    990		;;
    991	cydra-unknown)
    992		vendor=cydrome
    993		;;
    994	i370-ibm*)
    995		vendor=ibm
    996		;;
    997	orion-unknown)
    998		vendor=highlevel
    999		;;
   1000	xps-unknown | xps100-unknown)
   1001		cpu=xps100
   1002		vendor=honeywell
   1003		;;
   1004
   1005	# Here we normalize CPU types with a missing or matching vendor
   1006	dpx20-unknown | dpx20-bull)
   1007		cpu=rs6000
   1008		vendor=bull
   1009		basic_os=${basic_os:-bosx}
   1010		;;
   1011
   1012	# Here we normalize CPU types irrespective of the vendor
   1013	amd64-*)
   1014		cpu=x86_64
   1015		;;
   1016	blackfin-*)
   1017		cpu=bfin
   1018		basic_os=linux
   1019		;;
   1020	c54x-*)
   1021		cpu=tic54x
   1022		;;
   1023	c55x-*)
   1024		cpu=tic55x
   1025		;;
   1026	c6x-*)
   1027		cpu=tic6x
   1028		;;
   1029	e500v[12]-*)
   1030		cpu=powerpc
   1031		basic_os=${basic_os}"spe"
   1032		;;
   1033	mips3*-*)
   1034		cpu=mips64
   1035		;;
   1036	ms1-*)
   1037		cpu=mt
   1038		;;
   1039	m68knommu-*)
   1040		cpu=m68k
   1041		basic_os=linux
   1042		;;
   1043	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
   1044		cpu=s12z
   1045		;;
   1046	openrisc-*)
   1047		cpu=or32
   1048		;;
   1049	parisc-*)
   1050		cpu=hppa
   1051		basic_os=linux
   1052		;;
   1053	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
   1054		cpu=i586
   1055		;;
   1056	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
   1057		cpu=i686
   1058		;;
   1059	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
   1060		cpu=i686
   1061		;;
   1062	pentium4-*)
   1063		cpu=i786
   1064		;;
   1065	pc98-*)
   1066		cpu=i386
   1067		;;
   1068	ppc-* | ppcbe-*)
   1069		cpu=powerpc
   1070		;;
   1071	ppcle-* | powerpclittle-*)
   1072		cpu=powerpcle
   1073		;;
   1074	ppc64-*)
   1075		cpu=powerpc64
   1076		;;
   1077	ppc64le-* | powerpc64little-*)
   1078		cpu=powerpc64le
   1079		;;
   1080	sb1-*)
   1081		cpu=mipsisa64sb1
   1082		;;
   1083	sb1el-*)
   1084		cpu=mipsisa64sb1el
   1085		;;
   1086	sh5e[lb]-*)
   1087		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
   1088		;;
   1089	spur-*)
   1090		cpu=spur
   1091		;;
   1092	strongarm-* | thumb-*)
   1093		cpu=arm
   1094		;;
   1095	tx39-*)
   1096		cpu=mipstx39
   1097		;;
   1098	tx39el-*)
   1099		cpu=mipstx39el
   1100		;;
   1101	x64-*)
   1102		cpu=x86_64
   1103		;;
   1104	xscale-* | xscalee[bl]-*)
   1105		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
   1106		;;
   1107	arm64-*)
   1108		cpu=aarch64
   1109		;;
   1110
   1111	# Recognize the canonical CPU Types that limit and/or modify the
   1112	# company names they are paired with.
   1113	cr16-*)
   1114		basic_os=${basic_os:-elf}
   1115		;;
   1116	crisv32-* | etraxfs*-*)
   1117		cpu=crisv32
   1118		vendor=axis
   1119		;;
   1120	cris-* | etrax*-*)
   1121		cpu=cris
   1122		vendor=axis
   1123		;;
   1124	crx-*)
   1125		basic_os=${basic_os:-elf}
   1126		;;
   1127	neo-tandem)
   1128		cpu=neo
   1129		vendor=tandem
   1130		;;
   1131	nse-tandem)
   1132		cpu=nse
   1133		vendor=tandem
   1134		;;
   1135	nsr-tandem)
   1136		cpu=nsr
   1137		vendor=tandem
   1138		;;
   1139	nsv-tandem)
   1140		cpu=nsv
   1141		vendor=tandem
   1142		;;
   1143	nsx-tandem)
   1144		cpu=nsx
   1145		vendor=tandem
   1146		;;
   1147	mipsallegrexel-sony)
   1148		cpu=mipsallegrexel
   1149		vendor=sony
   1150		;;
   1151	tile*-*)
   1152		basic_os=${basic_os:-linux-gnu}
   1153		;;
   1154
   1155	*)
   1156		# Recognize the canonical CPU types that are allowed with any
   1157		# company name.
   1158		case $cpu in
   1159			1750a | 580 \
   1160			| a29k \
   1161			| aarch64 | aarch64_be \
   1162			| abacus \
   1163			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
   1164			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
   1165			| alphapca5[67] | alpha64pca5[67] \
   1166			| am33_2.0 \
   1167			| amdgcn \
   1168			| arc | arceb \
   1169			| arm | arm[lb]e | arme[lb] | armv* \
   1170			| avr | avr32 \
   1171			| asmjs \
   1172			| ba \
   1173			| be32 | be64 \
   1174			| bfin | bpf | bs2000 \
   1175			| c[123]* | c30 | [cjt]90 | c4x \
   1176			| c8051 | clipper | craynv | csky | cydra \
   1177			| d10v | d30v | dlx | dsp16xx \
   1178			| e2k | elxsi | epiphany \
   1179			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
   1180			| h8300 | h8500 \
   1181			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
   1182			| hexagon \
   1183			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
   1184			| ip2k | iq2000 \
   1185			| k1om \
   1186			| le32 | le64 \
   1187			| lm32 \
   1188			| m32c | m32r | m32rle \
   1189			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
   1190			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
   1191			| m88110 | m88k | maxq | mb | mcore | mep | metag \
   1192			| microblaze | microblazeel \
   1193			| mips | mipsbe | mipseb | mipsel | mipsle \
   1194			| mips16 \
   1195			| mips64 | mips64eb | mips64el \
   1196			| mips64octeon | mips64octeonel \
   1197			| mips64orion | mips64orionel \
   1198			| mips64r5900 | mips64r5900el \
   1199			| mips64vr | mips64vrel \
   1200			| mips64vr4100 | mips64vr4100el \
   1201			| mips64vr4300 | mips64vr4300el \
   1202			| mips64vr5000 | mips64vr5000el \
   1203			| mips64vr5900 | mips64vr5900el \
   1204			| mipsisa32 | mipsisa32el \
   1205			| mipsisa32r2 | mipsisa32r2el \
   1206			| mipsisa32r6 | mipsisa32r6el \
   1207			| mipsisa64 | mipsisa64el \
   1208			| mipsisa64r2 | mipsisa64r2el \
   1209			| mipsisa64r6 | mipsisa64r6el \
   1210			| mipsisa64sb1 | mipsisa64sb1el \
   1211			| mipsisa64sr71k | mipsisa64sr71kel \
   1212			| mipsr5900 | mipsr5900el \
   1213			| mipstx39 | mipstx39el \
   1214			| mmix \
   1215			| mn10200 | mn10300 \
   1216			| moxie \
   1217			| mt \
   1218			| msp430 \
   1219			| nds32 | nds32le | nds32be \
   1220			| nfp \
   1221			| nios | nios2 | nios2eb | nios2el \
   1222			| none | np1 | ns16k | ns32k | nvptx \
   1223			| open8 \
   1224			| or1k* \
   1225			| or32 \
   1226			| orion \
   1227			| picochip \
   1228			| pdp10 | pdp11 | pj | pjl | pn | power \
   1229			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
   1230			| pru \
   1231			| pyramid \
   1232			| riscv | riscv32 | riscv64 \
   1233			| rl78 | romp | rs6000 | rx \
   1234			| s390 | s390x \
   1235			| score \
   1236			| sh | shl \
   1237			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
   1238			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
   1239			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
   1240			| sparclite \
   1241			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
   1242			| spu \
   1243			| tahoe \
   1244			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
   1245			| tron \
   1246			| ubicom32 \
   1247			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
   1248			| vax \
   1249			| visium \
   1250			| w65 \
   1251			| wasm32 | wasm64 \
   1252			| we32k \
   1253			| x86 | x86_64 | xc16x | xgate | xps100 \
   1254			| xstormy16 | xtensa* \
   1255			| ymp \
   1256			| z8k | z80)
   1257				;;
   1258
   1259			*)
   1260				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
   1261				exit 1
   1262				;;
   1263		esac
   1264		;;
   1265esac
   1266
   1267# Here we canonicalize certain aliases for manufacturers.
   1268case $vendor in
   1269	digital*)
   1270		vendor=dec
   1271		;;
   1272	commodore*)
   1273		vendor=cbm
   1274		;;
   1275	*)
   1276		;;
   1277esac
   1278
   1279# Decode manufacturer-specific aliases for certain operating systems.
   1280
   1281if test x$basic_os != x
   1282then
   1283
   1284# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
   1285# set os.
   1286case $basic_os in
   1287	gnu/linux*)
   1288		kernel=linux
   1289		os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'`
   1290		;;
   1291	nto-qnx*)
   1292		kernel=nto
   1293		os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'`
   1294		;;
   1295	*-*)
   1296		# shellcheck disable=SC2162
   1297		IFS="-" read kernel os <<EOF
   1298$basic_os
   1299EOF
   1300		;;
   1301	# Default OS when just kernel was specified
   1302	nto*)
   1303		kernel=nto
   1304		os=`echo $basic_os | sed -e 's|nto|qnx|'`
   1305		;;
   1306	linux*)
   1307		kernel=linux
   1308		os=`echo $basic_os | sed -e 's|linux|gnu|'`
   1309		;;
   1310	*)
   1311		kernel=
   1312		os=$basic_os
   1313		;;
   1314esac
   1315
   1316# Now, normalize the OS (knowing we just have one component, it's not a kernel,
   1317# etc.)
   1318case $os in
   1319	# First match some system type aliases that might get confused
   1320	# with valid system types.
   1321	# solaris* is a basic system type, with this one exception.
   1322	auroraux)
   1323		os=auroraux
   1324		;;
   1325	bluegene*)
   1326		os=cnk
   1327		;;
   1328	solaris1 | solaris1.*)
   1329		os=`echo $os | sed -e 's|solaris1|sunos4|'`
   1330		;;
   1331	solaris)
   1332		os=solaris2
   1333		;;
   1334	unixware*)
   1335		os=sysv4.2uw
   1336		;;
   1337	# es1800 is here to avoid being matched by es* (a different OS)
   1338	es1800*)
   1339		os=ose
   1340		;;
   1341	# Some version numbers need modification
   1342	chorusos*)
   1343		os=chorusos
   1344		;;
   1345	isc)
   1346		os=isc2.2
   1347		;;
   1348	sco6)
   1349		os=sco5v6
   1350		;;
   1351	sco5)
   1352		os=sco3.2v5
   1353		;;
   1354	sco4)
   1355		os=sco3.2v4
   1356		;;
   1357	sco3.2.[4-9]*)
   1358		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
   1359		;;
   1360	sco*v* | scout)
   1361		# Don't match below
   1362		;;
   1363	sco*)
   1364		os=sco3.2v2
   1365		;;
   1366	psos*)
   1367		os=psos
   1368		;;
   1369	qnx*)
   1370		os=qnx
   1371		;;
   1372	hiux*)
   1373		os=hiuxwe2
   1374		;;
   1375	lynx*178)
   1376		os=lynxos178
   1377		;;
   1378	lynx*5)
   1379		os=lynxos5
   1380		;;
   1381	lynxos*)
   1382		# don't get caught up in next wildcard
   1383		;;
   1384	lynx*)
   1385		os=lynxos
   1386		;;
   1387	mac[0-9]*)
   1388		os=`echo "$os" | sed -e 's|mac|macos|'`
   1389		;;
   1390	opened*)
   1391		os=openedition
   1392		;;
   1393	os400*)
   1394		os=os400
   1395		;;
   1396	sunos5*)
   1397		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
   1398		;;
   1399	sunos6*)
   1400		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
   1401		;;
   1402	wince*)
   1403		os=wince
   1404		;;
   1405	utek*)
   1406		os=bsd
   1407		;;
   1408	dynix*)
   1409		os=bsd
   1410		;;
   1411	acis*)
   1412		os=aos
   1413		;;
   1414	atheos*)
   1415		os=atheos
   1416		;;
   1417	syllable*)
   1418		os=syllable
   1419		;;
   1420	386bsd)
   1421		os=bsd
   1422		;;
   1423	ctix* | uts*)
   1424		os=sysv
   1425		;;
   1426	nova*)
   1427		os=rtmk-nova
   1428		;;
   1429	ns2)
   1430		os=nextstep2
   1431		;;
   1432	# Preserve the version number of sinix5.
   1433	sinix5.*)
   1434		os=`echo $os | sed -e 's|sinix|sysv|'`
   1435		;;
   1436	sinix*)
   1437		os=sysv4
   1438		;;
   1439	tpf*)
   1440		os=tpf
   1441		;;
   1442	triton*)
   1443		os=sysv3
   1444		;;
   1445	oss*)
   1446		os=sysv3
   1447		;;
   1448	svr4*)
   1449		os=sysv4
   1450		;;
   1451	svr3)
   1452		os=sysv3
   1453		;;
   1454	sysvr4)
   1455		os=sysv4
   1456		;;
   1457	ose*)
   1458		os=ose
   1459		;;
   1460	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
   1461		os=mint
   1462		;;
   1463	dicos*)
   1464		os=dicos
   1465		;;
   1466	pikeos*)
   1467		# Until real need of OS specific support for
   1468		# particular features comes up, bare metal
   1469		# configurations are quite functional.
   1470		case $cpu in
   1471		    arm*)
   1472			os=eabi
   1473			;;
   1474		    *)
   1475			os=elf
   1476			;;
   1477		esac
   1478		;;
   1479	*)
   1480		# No normalization, but not necessarily accepted, that comes below.
   1481		;;
   1482esac
   1483
   1484else
   1485
   1486# Here we handle the default operating systems that come with various machines.
   1487# The value should be what the vendor currently ships out the door with their
   1488# machine or put another way, the most popular os provided with the machine.
   1489
   1490# Note that if you're going to try to match "-MANUFACTURER" here (say,
   1491# "-sun"), then you have to tell the case statement up towards the top
   1492# that MANUFACTURER isn't an operating system.  Otherwise, code above
   1493# will signal an error saying that MANUFACTURER isn't an operating
   1494# system, and we'll never get to this point.
   1495
   1496kernel=
   1497case $cpu-$vendor in
   1498	score-*)
   1499		os=elf
   1500		;;
   1501	spu-*)
   1502		os=elf
   1503		;;
   1504	*-acorn)
   1505		os=riscix1.2
   1506		;;
   1507	arm*-rebel)
   1508		kernel=linux
   1509		os=gnu
   1510		;;
   1511	arm*-semi)
   1512		os=aout
   1513		;;
   1514	c4x-* | tic4x-*)
   1515		os=coff
   1516		;;
   1517	c8051-*)
   1518		os=elf
   1519		;;
   1520	clipper-intergraph)
   1521		os=clix
   1522		;;
   1523	hexagon-*)
   1524		os=elf
   1525		;;
   1526	tic54x-*)
   1527		os=coff
   1528		;;
   1529	tic55x-*)
   1530		os=coff
   1531		;;
   1532	tic6x-*)
   1533		os=coff
   1534		;;
   1535	# This must come before the *-dec entry.
   1536	pdp10-*)
   1537		os=tops20
   1538		;;
   1539	pdp11-*)
   1540		os=none
   1541		;;
   1542	*-dec | vax-*)
   1543		os=ultrix4.2
   1544		;;
   1545	m68*-apollo)
   1546		os=domain
   1547		;;
   1548	i386-sun)
   1549		os=sunos4.0.2
   1550		;;
   1551	m68000-sun)
   1552		os=sunos3
   1553		;;
   1554	m68*-cisco)
   1555		os=aout
   1556		;;
   1557	mep-*)
   1558		os=elf
   1559		;;
   1560	mips*-cisco)
   1561		os=elf
   1562		;;
   1563	mips*-*)
   1564		os=elf
   1565		;;
   1566	or32-*)
   1567		os=coff
   1568		;;
   1569	*-tti)	# must be before sparc entry or we get the wrong os.
   1570		os=sysv3
   1571		;;
   1572	sparc-* | *-sun)
   1573		os=sunos4.1.1
   1574		;;
   1575	pru-*)
   1576		os=elf
   1577		;;
   1578	*-be)
   1579		os=beos
   1580		;;
   1581	*-ibm)
   1582		os=aix
   1583		;;
   1584	*-knuth)
   1585		os=mmixware
   1586		;;
   1587	*-wec)
   1588		os=proelf
   1589		;;
   1590	*-winbond)
   1591		os=proelf
   1592		;;
   1593	*-oki)
   1594		os=proelf
   1595		;;
   1596	*-hp)
   1597		os=hpux
   1598		;;
   1599	*-hitachi)
   1600		os=hiux
   1601		;;
   1602	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
   1603		os=sysv
   1604		;;
   1605	*-cbm)
   1606		os=amigaos
   1607		;;
   1608	*-dg)
   1609		os=dgux
   1610		;;
   1611	*-dolphin)
   1612		os=sysv3
   1613		;;
   1614	m68k-ccur)
   1615		os=rtu
   1616		;;
   1617	m88k-omron*)
   1618		os=luna
   1619		;;
   1620	*-next)
   1621		os=nextstep
   1622		;;
   1623	*-sequent)
   1624		os=ptx
   1625		;;
   1626	*-crds)
   1627		os=unos
   1628		;;
   1629	*-ns)
   1630		os=genix
   1631		;;
   1632	i370-*)
   1633		os=mvs
   1634		;;
   1635	*-gould)
   1636		os=sysv
   1637		;;
   1638	*-highlevel)
   1639		os=bsd
   1640		;;
   1641	*-encore)
   1642		os=bsd
   1643		;;
   1644	*-sgi)
   1645		os=irix
   1646		;;
   1647	*-siemens)
   1648		os=sysv4
   1649		;;
   1650	*-masscomp)
   1651		os=rtu
   1652		;;
   1653	f30[01]-fujitsu | f700-fujitsu)
   1654		os=uxpv
   1655		;;
   1656	*-rom68k)
   1657		os=coff
   1658		;;
   1659	*-*bug)
   1660		os=coff
   1661		;;
   1662	*-apple)
   1663		os=macos
   1664		;;
   1665	*-atari*)
   1666		os=mint
   1667		;;
   1668	*-wrs)
   1669		os=vxworks
   1670		;;
   1671	*)
   1672		os=none
   1673		;;
   1674esac
   1675
   1676fi
   1677
   1678# Now, validate our (potentially fixed-up) OS.
   1679case $os in
   1680	# Sometimes we do "kernel-abi", so those need to count as OSes.
   1681	musl* | newlib* | uclibc*)
   1682		;;
   1683	# Likewise for "kernel-libc"
   1684	eabi | eabihf | gnueabi | gnueabihf)
   1685		;;
   1686	# Now accept the basic system types.
   1687	# The portable systems comes first.
   1688	# Each alternative MUST end in a * to match a version number.
   1689	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
   1690	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
   1691	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
   1692	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
   1693	     | hiux* | abug | nacl* | netware* | windows* \
   1694	     | os9* | macos* | osx* | ios* \
   1695	     | mpw* | magic* | mmixware* | mon960* | lnews* \
   1696	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
   1697	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
   1698	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
   1699	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
   1700	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
   1701	     | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
   1702	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
   1703	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
   1704	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
   1705	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
   1706	     | chorusrdb* | cegcc* | glidix* \
   1707	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
   1708	     | midipix* | mingw32* | mingw64* | mint* \
   1709	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
   1710	     | interix* | uwin* | mks* | rhapsody* | darwin* \
   1711	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
   1712	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
   1713	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
   1714	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
   1715	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
   1716	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
   1717	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
   1718	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
   1719	     | nsk* | powerunix* | genode* | zvmoe* | qnx* )
   1720		;;
   1721	# This one is extra strict with allowed versions
   1722	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
   1723		# Don't forget version if it is 3.2v4 or newer.
   1724		;;
   1725	none)
   1726		;;
   1727	*)
   1728		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
   1729		exit 1
   1730		;;
   1731esac
   1732
   1733# As a final step for OS-related things, validate the OS-kernel combination
   1734# (given a valid OS), if there is a kernel.
   1735case $kernel-$os in
   1736	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
   1737		;;
   1738	-dietlibc* | -newlib* | -musl* | -uclibc* )
   1739		# These are just libc implementations, not actual OSes, and thus
   1740		# require a kernel.
   1741		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
   1742		exit 1
   1743		;;
   1744	kfreebsd*-gnu* | kopensolaris*-gnu*)
   1745		;;
   1746	nto-qnx*)
   1747		;;
   1748	*-eabi* | *-gnueabi*)
   1749		;;
   1750	-*)
   1751		# Blank kernel with real OS is always fine.
   1752		;;
   1753	*-*)
   1754		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
   1755		exit 1
   1756		;;
   1757esac
   1758
   1759# Here we handle the case where we know the os, and the CPU type, but not the
   1760# manufacturer.  We pick the logical manufacturer.
   1761case $vendor in
   1762	unknown)
   1763		case $cpu-$os in
   1764			*-riscix*)
   1765				vendor=acorn
   1766				;;
   1767			*-sunos*)
   1768				vendor=sun
   1769				;;
   1770			*-cnk* | *-aix*)
   1771				vendor=ibm
   1772				;;
   1773			*-beos*)
   1774				vendor=be
   1775				;;
   1776			*-hpux*)
   1777				vendor=hp
   1778				;;
   1779			*-mpeix*)
   1780				vendor=hp
   1781				;;
   1782			*-hiux*)
   1783				vendor=hitachi
   1784				;;
   1785			*-unos*)
   1786				vendor=crds
   1787				;;
   1788			*-dgux*)
   1789				vendor=dg
   1790				;;
   1791			*-luna*)
   1792				vendor=omron
   1793				;;
   1794			*-genix*)
   1795				vendor=ns
   1796				;;
   1797			*-clix*)
   1798				vendor=intergraph
   1799				;;
   1800			*-mvs* | *-opened*)
   1801				vendor=ibm
   1802				;;
   1803			*-os400*)
   1804				vendor=ibm
   1805				;;
   1806			s390-* | s390x-*)
   1807				vendor=ibm
   1808				;;
   1809			*-ptx*)
   1810				vendor=sequent
   1811				;;
   1812			*-tpf*)
   1813				vendor=ibm
   1814				;;
   1815			*-vxsim* | *-vxworks* | *-windiss*)
   1816				vendor=wrs
   1817				;;
   1818			*-aux*)
   1819				vendor=apple
   1820				;;
   1821			*-hms*)
   1822				vendor=hitachi
   1823				;;
   1824			*-mpw* | *-macos*)
   1825				vendor=apple
   1826				;;
   1827			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
   1828				vendor=atari
   1829				;;
   1830			*-vos*)
   1831				vendor=stratus
   1832				;;
   1833		esac
   1834		;;
   1835esac
   1836
   1837echo "$cpu-$vendor-${kernel:+$kernel-}$os"
   1838exit
   1839
   1840# Local variables:
   1841# eval: (add-hook 'before-save-hook 'time-stamp)
   1842# time-stamp-start: "timestamp='"
   1843# time-stamp-format: "%:y-%02m-%02d"
   1844# time-stamp-end: "'"
   1845# End: