1ff7e0accSmrg#! /bin/sh
2ff7e0accSmrg# Configuration validation subroutine script.
32163f7f8Smrg#   Copyright 1992-2023 Free Software Foundation, Inc.
4ff7e0accSmrg
52163f7f8Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale
62163f7f8Smrg
72163f7f8Smrgtimestamp='2023-01-21'
8ff7e0accSmrg
905bee9bcSmrg# This file is free software; you can redistribute it and/or modify it
1005bee9bcSmrg# under the terms of the GNU General Public License as published by
112163f7f8Smrg# the Free Software Foundation, either version 3 of the License, or
12ff7e0accSmrg# (at your option) any later version.
13ff7e0accSmrg#
1405bee9bcSmrg# This program is distributed in the hope that it will be useful, but
1505bee9bcSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
1605bee9bcSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1705bee9bcSmrg# General Public License for more details.
18ff7e0accSmrg#
19ff7e0accSmrg# You should have received a copy of the GNU General Public License
200c91c449Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
21ff7e0accSmrg#
22ff7e0accSmrg# As a special exception to the GNU General Public License, if you
23ff7e0accSmrg# distribute this file as part of a program that contains a
24ff7e0accSmrg# configuration script generated by Autoconf, you may include it under
2505bee9bcSmrg# the same distribution terms that you use for the rest of that
2605bee9bcSmrg# program.  This Exception is an additional permission under section 7
2705bee9bcSmrg# of the GNU General Public License, version 3 ("GPLv3").
28ff7e0accSmrg
29ff7e0accSmrg
300c91c449Smrg# Please send patches to <config-patches@gnu.org>.
31ff7e0accSmrg#
32ff7e0accSmrg# Configuration subroutine to validate and canonicalize a configuration type.
33ff7e0accSmrg# Supply the specified configuration type as an argument.
34ff7e0accSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
35ff7e0accSmrg# Otherwise, we print the canonical config type on stdout and succeed.
36ff7e0accSmrg
37863f95b1Smrg# You can get the latest version of this script from:
382163f7f8Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
39863f95b1Smrg
40ff7e0accSmrg# This file is supposed to be the same for all GNU packages
41ff7e0accSmrg# and recognize all the CPU types, system types and aliases
42ff7e0accSmrg# that are meaningful with *any* GNU software.
43ff7e0accSmrg# Each package is responsible for reporting which valid configurations
44ff7e0accSmrg# it does not support.  The user should be able to distinguish
45ff7e0accSmrg# a failure to support a valid configuration from a meaningless
46ff7e0accSmrg# configuration.
47ff7e0accSmrg
48ff7e0accSmrg# The goal of this file is to map all the various variations of a given
49ff7e0accSmrg# machine specification into a single specification in the form:
50ff7e0accSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51ff7e0accSmrg# or in some cases, the newer four-part form:
52ff7e0accSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53ff7e0accSmrg# It is wrong to echo any other type of specification.
54ff7e0accSmrg
552163f7f8Smrg# The "shellcheck disable" line above the timestamp inhibits complaints
562163f7f8Smrg# about features and limitations of the classic Bourne shell that were
572163f7f8Smrg# superseded or lifted in POSIX.  However, this script identifies a wide
582163f7f8Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
592163f7f8Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still
602163f7f8Smrg# have a pre-POSIX /bin/sh.
612163f7f8Smrg
62ff7e0accSmrgme=`echo "$0" | sed -e 's,.*/,,'`
63ff7e0accSmrg
64ff7e0accSmrgusage="\
650c91c449SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66ff7e0accSmrg
67ff7e0accSmrgCanonicalize a configuration name.
68ff7e0accSmrg
690c91c449SmrgOptions:
70ff7e0accSmrg  -h, --help         print this help, then exit
71ff7e0accSmrg  -t, --time-stamp   print date of last modification, then exit
72ff7e0accSmrg  -v, --version      print version number, then exit
73ff7e0accSmrg
74ff7e0accSmrgReport bugs and patches to <config-patches@gnu.org>."
75ff7e0accSmrg
76ff7e0accSmrgversion="\
77ff7e0accSmrgGNU config.sub ($timestamp)
78ff7e0accSmrg
792163f7f8SmrgCopyright 1992-2023 Free Software Foundation, Inc.
80ff7e0accSmrg
81ff7e0accSmrgThis is free software; see the source for copying conditions.  There is NO
82ff7e0accSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83ff7e0accSmrg
84ff7e0accSmrghelp="
85ff7e0accSmrgTry \`$me --help' for more information."
86ff7e0accSmrg
87ff7e0accSmrg# Parse command line
88ff7e0accSmrgwhile test $# -gt 0 ; do
89ff7e0accSmrg  case $1 in
90ff7e0accSmrg    --time-stamp | --time* | -t )
91ff7e0accSmrg       echo "$timestamp" ; exit ;;
92ff7e0accSmrg    --version | -v )
93ff7e0accSmrg       echo "$version" ; exit ;;
94ff7e0accSmrg    --help | --h* | -h )
95ff7e0accSmrg       echo "$usage"; exit ;;
96ff7e0accSmrg    -- )     # Stop option processing
97ff7e0accSmrg       shift; break ;;
98ff7e0accSmrg    - )	# Use stdin as input.
99ff7e0accSmrg       break ;;
100ff7e0accSmrg    -* )
1012163f7f8Smrg       echo "$me: invalid option $1$help" >&2
102ff7e0accSmrg       exit 1 ;;
103ff7e0accSmrg
104ff7e0accSmrg    *local*)
105ff7e0accSmrg       # First pass through any local machine types.
1060c91c449Smrg       echo "$1"
107ff7e0accSmrg       exit ;;
108ff7e0accSmrg
109ff7e0accSmrg    * )
110ff7e0accSmrg       break ;;
111ff7e0accSmrg  esac
112ff7e0accSmrgdone
113ff7e0accSmrg
114ff7e0accSmrgcase $# in
115ff7e0accSmrg 0) echo "$me: missing argument$help" >&2
116ff7e0accSmrg    exit 1;;
117ff7e0accSmrg 1) ;;
118ff7e0accSmrg *) echo "$me: too many arguments$help" >&2
119ff7e0accSmrg    exit 1;;
120ff7e0accSmrgesac
121ff7e0accSmrg
1222163f7f8Smrg# Split fields of configuration type
1232163f7f8Smrg# shellcheck disable=SC2162
1242163f7f8Smrgsaved_IFS=$IFS
1252163f7f8SmrgIFS="-" read field1 field2 field3 field4 <<EOF
1262163f7f8Smrg$1
1272163f7f8SmrgEOF
1282163f7f8SmrgIFS=$saved_IFS
129ff7e0accSmrg
1302163f7f8Smrg# Separate into logical components for further validation
1312163f7f8Smrgcase $1 in
1322163f7f8Smrg	*-*-*-*-*)
1332163f7f8Smrg		echo Invalid configuration \`"$1"\': more than four components >&2
1342163f7f8Smrg		exit 1
13505bee9bcSmrg		;;
1362163f7f8Smrg	*-*-*-*)
1372163f7f8Smrg		basic_machine=$field1-$field2
1382163f7f8Smrg		basic_os=$field3-$field4
139ff7e0accSmrg		;;
1402163f7f8Smrg	*-*-*)
1412163f7f8Smrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
1422163f7f8Smrg		# parts
1432163f7f8Smrg		maybe_os=$field2-$field3
1442163f7f8Smrg		case $maybe_os in
1452163f7f8Smrg			nto-qnx* | linux-* | uclinux-uclibc* \
1462163f7f8Smrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
1472163f7f8Smrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
1482163f7f8Smrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
1492163f7f8Smrg				basic_machine=$field1
1502163f7f8Smrg				basic_os=$maybe_os
1512163f7f8Smrg				;;
1522163f7f8Smrg			android-linux)
1532163f7f8Smrg				basic_machine=$field1-unknown
1542163f7f8Smrg				basic_os=linux-android
1552163f7f8Smrg				;;
1562163f7f8Smrg			*)
1572163f7f8Smrg				basic_machine=$field1-$field2
1582163f7f8Smrg				basic_os=$field3
1592163f7f8Smrg				;;
1602163f7f8Smrg		esac
161ff7e0accSmrg		;;
1622163f7f8Smrg	*-*)
1632163f7f8Smrg		# A lone config we happen to match not fitting any pattern
1642163f7f8Smrg		case $field1-$field2 in
1652163f7f8Smrg			decstation-3100)
1662163f7f8Smrg				basic_machine=mips-dec
1672163f7f8Smrg				basic_os=
1682163f7f8Smrg				;;
1692163f7f8Smrg			*-*)
1702163f7f8Smrg				# Second component is usually, but not always the OS
1712163f7f8Smrg				case $field2 in
1722163f7f8Smrg					# Prevent following clause from handling this valid os
1732163f7f8Smrg					sun*os*)
1742163f7f8Smrg						basic_machine=$field1
1752163f7f8Smrg						basic_os=$field2
1762163f7f8Smrg						;;
1772163f7f8Smrg					zephyr*)
1782163f7f8Smrg						basic_machine=$field1-unknown
1792163f7f8Smrg						basic_os=$field2
1802163f7f8Smrg						;;
1812163f7f8Smrg					# Manufacturers
1822163f7f8Smrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1832163f7f8Smrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1842163f7f8Smrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1852163f7f8Smrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1862163f7f8Smrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1872163f7f8Smrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1882163f7f8Smrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1892163f7f8Smrg					| microblaze* | sim | cisco \
1902163f7f8Smrg					| oki | wec | wrs | winbond)
1912163f7f8Smrg						basic_machine=$field1-$field2
1922163f7f8Smrg						basic_os=
1932163f7f8Smrg						;;
1942163f7f8Smrg					*)
1952163f7f8Smrg						basic_machine=$field1
1962163f7f8Smrg						basic_os=$field2
1972163f7f8Smrg						;;
1982163f7f8Smrg				esac
1992163f7f8Smrg			;;
2002163f7f8Smrg		esac
201ff7e0accSmrg		;;
2022163f7f8Smrg	*)
2032163f7f8Smrg		# Convert single-component short-hands not valid as part of
2042163f7f8Smrg		# multi-component configurations.
2052163f7f8Smrg		case $field1 in
2062163f7f8Smrg			386bsd)
2072163f7f8Smrg				basic_machine=i386-pc
2082163f7f8Smrg				basic_os=bsd
2092163f7f8Smrg				;;
2102163f7f8Smrg			a29khif)
2112163f7f8Smrg				basic_machine=a29k-amd
2122163f7f8Smrg				basic_os=udi
2132163f7f8Smrg				;;
2142163f7f8Smrg			adobe68k)
2152163f7f8Smrg				basic_machine=m68010-adobe
2162163f7f8Smrg				basic_os=scout
2172163f7f8Smrg				;;
2182163f7f8Smrg			alliant)
2192163f7f8Smrg				basic_machine=fx80-alliant
2202163f7f8Smrg				basic_os=
2212163f7f8Smrg				;;
2222163f7f8Smrg			altos | altos3068)
2232163f7f8Smrg				basic_machine=m68k-altos
2242163f7f8Smrg				basic_os=
2252163f7f8Smrg				;;
2262163f7f8Smrg			am29k)
2272163f7f8Smrg				basic_machine=a29k-none
2282163f7f8Smrg				basic_os=bsd
2292163f7f8Smrg				;;
2302163f7f8Smrg			amdahl)
2312163f7f8Smrg				basic_machine=580-amdahl
2322163f7f8Smrg				basic_os=sysv
2332163f7f8Smrg				;;
2342163f7f8Smrg			amiga)
2352163f7f8Smrg				basic_machine=m68k-unknown
2362163f7f8Smrg				basic_os=
2372163f7f8Smrg				;;
2382163f7f8Smrg			amigaos | amigados)
2392163f7f8Smrg				basic_machine=m68k-unknown
2402163f7f8Smrg				basic_os=amigaos
2412163f7f8Smrg				;;
2422163f7f8Smrg			amigaunix | amix)
2432163f7f8Smrg				basic_machine=m68k-unknown
2442163f7f8Smrg				basic_os=sysv4
2452163f7f8Smrg				;;
2462163f7f8Smrg			apollo68)
2472163f7f8Smrg				basic_machine=m68k-apollo
2482163f7f8Smrg				basic_os=sysv
2492163f7f8Smrg				;;
2502163f7f8Smrg			apollo68bsd)
2512163f7f8Smrg				basic_machine=m68k-apollo
2522163f7f8Smrg				basic_os=bsd
2532163f7f8Smrg				;;
2542163f7f8Smrg			aros)
2552163f7f8Smrg				basic_machine=i386-pc
2562163f7f8Smrg				basic_os=aros
2572163f7f8Smrg				;;
2582163f7f8Smrg			aux)
2592163f7f8Smrg				basic_machine=m68k-apple
2602163f7f8Smrg				basic_os=aux
2612163f7f8Smrg				;;
2622163f7f8Smrg			balance)
2632163f7f8Smrg				basic_machine=ns32k-sequent
2642163f7f8Smrg				basic_os=dynix
2652163f7f8Smrg				;;
2662163f7f8Smrg			blackfin)
2672163f7f8Smrg				basic_machine=bfin-unknown
2682163f7f8Smrg				basic_os=linux
2692163f7f8Smrg				;;
2702163f7f8Smrg			cegcc)
2712163f7f8Smrg				basic_machine=arm-unknown
2722163f7f8Smrg				basic_os=cegcc
2732163f7f8Smrg				;;
2742163f7f8Smrg			convex-c1)
2752163f7f8Smrg				basic_machine=c1-convex
2762163f7f8Smrg				basic_os=bsd
2772163f7f8Smrg				;;
2782163f7f8Smrg			convex-c2)
2792163f7f8Smrg				basic_machine=c2-convex
2802163f7f8Smrg				basic_os=bsd
2812163f7f8Smrg				;;
2822163f7f8Smrg			convex-c32)
2832163f7f8Smrg				basic_machine=c32-convex
2842163f7f8Smrg				basic_os=bsd
2852163f7f8Smrg				;;
2862163f7f8Smrg			convex-c34)
2872163f7f8Smrg				basic_machine=c34-convex
2882163f7f8Smrg				basic_os=bsd
2892163f7f8Smrg				;;
2902163f7f8Smrg			convex-c38)
2912163f7f8Smrg				basic_machine=c38-convex
2922163f7f8Smrg				basic_os=bsd
2932163f7f8Smrg				;;
2942163f7f8Smrg			cray)
2952163f7f8Smrg				basic_machine=j90-cray
2962163f7f8Smrg				basic_os=unicos
2972163f7f8Smrg				;;
2982163f7f8Smrg			crds | unos)
2992163f7f8Smrg				basic_machine=m68k-crds
3002163f7f8Smrg				basic_os=
3012163f7f8Smrg				;;
3022163f7f8Smrg			da30)
3032163f7f8Smrg				basic_machine=m68k-da30
3042163f7f8Smrg				basic_os=
3052163f7f8Smrg				;;
3062163f7f8Smrg			decstation | pmax | pmin | dec3100 | decstatn)
3072163f7f8Smrg				basic_machine=mips-dec
3082163f7f8Smrg				basic_os=
3092163f7f8Smrg				;;
3102163f7f8Smrg			delta88)
3112163f7f8Smrg				basic_machine=m88k-motorola
3122163f7f8Smrg				basic_os=sysv3
3132163f7f8Smrg				;;
3142163f7f8Smrg			dicos)
3152163f7f8Smrg				basic_machine=i686-pc
3162163f7f8Smrg				basic_os=dicos
3172163f7f8Smrg				;;
3182163f7f8Smrg			djgpp)
3192163f7f8Smrg				basic_machine=i586-pc
3202163f7f8Smrg				basic_os=msdosdjgpp
3212163f7f8Smrg				;;
3222163f7f8Smrg			ebmon29k)
3232163f7f8Smrg				basic_machine=a29k-amd
3242163f7f8Smrg				basic_os=ebmon
3252163f7f8Smrg				;;
3262163f7f8Smrg			es1800 | OSE68k | ose68k | ose | OSE)
3272163f7f8Smrg				basic_machine=m68k-ericsson
3282163f7f8Smrg				basic_os=ose
3292163f7f8Smrg				;;
3302163f7f8Smrg			gmicro)
3312163f7f8Smrg				basic_machine=tron-gmicro
3322163f7f8Smrg				basic_os=sysv
3332163f7f8Smrg				;;
3342163f7f8Smrg			go32)
3352163f7f8Smrg				basic_machine=i386-pc
3362163f7f8Smrg				basic_os=go32
3372163f7f8Smrg				;;
3382163f7f8Smrg			h8300hms)
3392163f7f8Smrg				basic_machine=h8300-hitachi
3402163f7f8Smrg				basic_os=hms
3412163f7f8Smrg				;;
3422163f7f8Smrg			h8300xray)
3432163f7f8Smrg				basic_machine=h8300-hitachi
3442163f7f8Smrg				basic_os=xray
3452163f7f8Smrg				;;
3462163f7f8Smrg			h8500hms)
3472163f7f8Smrg				basic_machine=h8500-hitachi
3482163f7f8Smrg				basic_os=hms
3492163f7f8Smrg				;;
3502163f7f8Smrg			harris)
3512163f7f8Smrg				basic_machine=m88k-harris
3522163f7f8Smrg				basic_os=sysv3
3532163f7f8Smrg				;;
3542163f7f8Smrg			hp300 | hp300hpux)
3552163f7f8Smrg				basic_machine=m68k-hp
3562163f7f8Smrg				basic_os=hpux
3572163f7f8Smrg				;;
3582163f7f8Smrg			hp300bsd)
3592163f7f8Smrg				basic_machine=m68k-hp
3602163f7f8Smrg				basic_os=bsd
3612163f7f8Smrg				;;
3622163f7f8Smrg			hppaosf)
3632163f7f8Smrg				basic_machine=hppa1.1-hp
3642163f7f8Smrg				basic_os=osf
3652163f7f8Smrg				;;
3662163f7f8Smrg			hppro)
3672163f7f8Smrg				basic_machine=hppa1.1-hp
3682163f7f8Smrg				basic_os=proelf
3692163f7f8Smrg				;;
3702163f7f8Smrg			i386mach)
3712163f7f8Smrg				basic_machine=i386-mach
3722163f7f8Smrg				basic_os=mach
3732163f7f8Smrg				;;
3742163f7f8Smrg			isi68 | isi)
3752163f7f8Smrg				basic_machine=m68k-isi
3762163f7f8Smrg				basic_os=sysv
3772163f7f8Smrg				;;
3782163f7f8Smrg			m68knommu)
3792163f7f8Smrg				basic_machine=m68k-unknown
3802163f7f8Smrg				basic_os=linux
3812163f7f8Smrg				;;
3822163f7f8Smrg			magnum | m3230)
3832163f7f8Smrg				basic_machine=mips-mips
3842163f7f8Smrg				basic_os=sysv
3852163f7f8Smrg				;;
3862163f7f8Smrg			merlin)
3872163f7f8Smrg				basic_machine=ns32k-utek
3882163f7f8Smrg				basic_os=sysv
3892163f7f8Smrg				;;
3902163f7f8Smrg			mingw64)
3912163f7f8Smrg				basic_machine=x86_64-pc
3922163f7f8Smrg				basic_os=mingw64
3932163f7f8Smrg				;;
3942163f7f8Smrg			mingw32)
3952163f7f8Smrg				basic_machine=i686-pc
3962163f7f8Smrg				basic_os=mingw32
3972163f7f8Smrg				;;
3982163f7f8Smrg			mingw32ce)
3992163f7f8Smrg				basic_machine=arm-unknown
4002163f7f8Smrg				basic_os=mingw32ce
4012163f7f8Smrg				;;
4022163f7f8Smrg			monitor)
4032163f7f8Smrg				basic_machine=m68k-rom68k
4042163f7f8Smrg				basic_os=coff
4052163f7f8Smrg				;;
4062163f7f8Smrg			morphos)
4072163f7f8Smrg				basic_machine=powerpc-unknown
4082163f7f8Smrg				basic_os=morphos
4092163f7f8Smrg				;;
4102163f7f8Smrg			moxiebox)
4112163f7f8Smrg				basic_machine=moxie-unknown
4122163f7f8Smrg				basic_os=moxiebox
4132163f7f8Smrg				;;
4142163f7f8Smrg			msdos)
4152163f7f8Smrg				basic_machine=i386-pc
4162163f7f8Smrg				basic_os=msdos
4172163f7f8Smrg				;;
4182163f7f8Smrg			msys)
4192163f7f8Smrg				basic_machine=i686-pc
4202163f7f8Smrg				basic_os=msys
4212163f7f8Smrg				;;
4222163f7f8Smrg			mvs)
4232163f7f8Smrg				basic_machine=i370-ibm
4242163f7f8Smrg				basic_os=mvs
4252163f7f8Smrg				;;
4262163f7f8Smrg			nacl)
4272163f7f8Smrg				basic_machine=le32-unknown
4282163f7f8Smrg				basic_os=nacl
4292163f7f8Smrg				;;
4302163f7f8Smrg			ncr3000)
4312163f7f8Smrg				basic_machine=i486-ncr
4322163f7f8Smrg				basic_os=sysv4
4332163f7f8Smrg				;;
4342163f7f8Smrg			netbsd386)
4352163f7f8Smrg				basic_machine=i386-pc
4362163f7f8Smrg				basic_os=netbsd
4372163f7f8Smrg				;;
4382163f7f8Smrg			netwinder)
4392163f7f8Smrg				basic_machine=armv4l-rebel
4402163f7f8Smrg				basic_os=linux
4412163f7f8Smrg				;;
4422163f7f8Smrg			news | news700 | news800 | news900)
4432163f7f8Smrg				basic_machine=m68k-sony
4442163f7f8Smrg				basic_os=newsos
4452163f7f8Smrg				;;
4462163f7f8Smrg			news1000)
4472163f7f8Smrg				basic_machine=m68030-sony
4482163f7f8Smrg				basic_os=newsos
4492163f7f8Smrg				;;
4502163f7f8Smrg			necv70)
4512163f7f8Smrg				basic_machine=v70-nec
4522163f7f8Smrg				basic_os=sysv
4532163f7f8Smrg				;;
4542163f7f8Smrg			nh3000)
4552163f7f8Smrg				basic_machine=m68k-harris
4562163f7f8Smrg				basic_os=cxux
4572163f7f8Smrg				;;
4582163f7f8Smrg			nh[45]000)
4592163f7f8Smrg				basic_machine=m88k-harris
4602163f7f8Smrg				basic_os=cxux
4612163f7f8Smrg				;;
4622163f7f8Smrg			nindy960)
4632163f7f8Smrg				basic_machine=i960-intel
4642163f7f8Smrg				basic_os=nindy
4652163f7f8Smrg				;;
4662163f7f8Smrg			mon960)
4672163f7f8Smrg				basic_machine=i960-intel
4682163f7f8Smrg				basic_os=mon960
4692163f7f8Smrg				;;
4702163f7f8Smrg			nonstopux)
4712163f7f8Smrg				basic_machine=mips-compaq
4722163f7f8Smrg				basic_os=nonstopux
4732163f7f8Smrg				;;
4742163f7f8Smrg			os400)
4752163f7f8Smrg				basic_machine=powerpc-ibm
4762163f7f8Smrg				basic_os=os400
4772163f7f8Smrg				;;
4782163f7f8Smrg			OSE68000 | ose68000)
4792163f7f8Smrg				basic_machine=m68000-ericsson
4802163f7f8Smrg				basic_os=ose
4812163f7f8Smrg				;;
4822163f7f8Smrg			os68k)
4832163f7f8Smrg				basic_machine=m68k-none
4842163f7f8Smrg				basic_os=os68k
4852163f7f8Smrg				;;
4862163f7f8Smrg			paragon)
4872163f7f8Smrg				basic_machine=i860-intel
4882163f7f8Smrg				basic_os=osf
4892163f7f8Smrg				;;
4902163f7f8Smrg			parisc)
4912163f7f8Smrg				basic_machine=hppa-unknown
4922163f7f8Smrg				basic_os=linux
4932163f7f8Smrg				;;
4942163f7f8Smrg			psp)
4952163f7f8Smrg				basic_machine=mipsallegrexel-sony
4962163f7f8Smrg				basic_os=psp
4972163f7f8Smrg				;;
4982163f7f8Smrg			pw32)
4992163f7f8Smrg				basic_machine=i586-unknown
5002163f7f8Smrg				basic_os=pw32
5012163f7f8Smrg				;;
5022163f7f8Smrg			rdos | rdos64)
5032163f7f8Smrg				basic_machine=x86_64-pc
5042163f7f8Smrg				basic_os=rdos
5052163f7f8Smrg				;;
5062163f7f8Smrg			rdos32)
5072163f7f8Smrg				basic_machine=i386-pc
5082163f7f8Smrg				basic_os=rdos
5092163f7f8Smrg				;;
5102163f7f8Smrg			rom68k)
5112163f7f8Smrg				basic_machine=m68k-rom68k
5122163f7f8Smrg				basic_os=coff
5132163f7f8Smrg				;;
5142163f7f8Smrg			sa29200)
5152163f7f8Smrg				basic_machine=a29k-amd
5162163f7f8Smrg				basic_os=udi
5172163f7f8Smrg				;;
5182163f7f8Smrg			sei)
5192163f7f8Smrg				basic_machine=mips-sei
5202163f7f8Smrg				basic_os=seiux
5212163f7f8Smrg				;;
5222163f7f8Smrg			sequent)
5232163f7f8Smrg				basic_machine=i386-sequent
5242163f7f8Smrg				basic_os=
5252163f7f8Smrg				;;
5262163f7f8Smrg			sps7)
5272163f7f8Smrg				basic_machine=m68k-bull
5282163f7f8Smrg				basic_os=sysv2
5292163f7f8Smrg				;;
5302163f7f8Smrg			st2000)
5312163f7f8Smrg				basic_machine=m68k-tandem
5322163f7f8Smrg				basic_os=
5332163f7f8Smrg				;;
5342163f7f8Smrg			stratus)
5352163f7f8Smrg				basic_machine=i860-stratus
5362163f7f8Smrg				basic_os=sysv4
5372163f7f8Smrg				;;
5382163f7f8Smrg			sun2)
5392163f7f8Smrg				basic_machine=m68000-sun
5402163f7f8Smrg				basic_os=
5412163f7f8Smrg				;;
5422163f7f8Smrg			sun2os3)
5432163f7f8Smrg				basic_machine=m68000-sun
5442163f7f8Smrg				basic_os=sunos3
5452163f7f8Smrg				;;
5462163f7f8Smrg			sun2os4)
5472163f7f8Smrg				basic_machine=m68000-sun
5482163f7f8Smrg				basic_os=sunos4
5492163f7f8Smrg				;;
5502163f7f8Smrg			sun3)
5512163f7f8Smrg				basic_machine=m68k-sun
5522163f7f8Smrg				basic_os=
5532163f7f8Smrg				;;
5542163f7f8Smrg			sun3os3)
5552163f7f8Smrg				basic_machine=m68k-sun
5562163f7f8Smrg				basic_os=sunos3
5572163f7f8Smrg				;;
5582163f7f8Smrg			sun3os4)
5592163f7f8Smrg				basic_machine=m68k-sun
5602163f7f8Smrg				basic_os=sunos4
5612163f7f8Smrg				;;
5622163f7f8Smrg			sun4)
5632163f7f8Smrg				basic_machine=sparc-sun
5642163f7f8Smrg				basic_os=
5652163f7f8Smrg				;;
5662163f7f8Smrg			sun4os3)
5672163f7f8Smrg				basic_machine=sparc-sun
5682163f7f8Smrg				basic_os=sunos3
5692163f7f8Smrg				;;
5702163f7f8Smrg			sun4os4)
5712163f7f8Smrg				basic_machine=sparc-sun
5722163f7f8Smrg				basic_os=sunos4
5732163f7f8Smrg				;;
5742163f7f8Smrg			sun4sol2)
5752163f7f8Smrg				basic_machine=sparc-sun
5762163f7f8Smrg				basic_os=solaris2
5772163f7f8Smrg				;;
5782163f7f8Smrg			sun386 | sun386i | roadrunner)
5792163f7f8Smrg				basic_machine=i386-sun
5802163f7f8Smrg				basic_os=
5812163f7f8Smrg				;;
5822163f7f8Smrg			sv1)
5832163f7f8Smrg				basic_machine=sv1-cray
5842163f7f8Smrg				basic_os=unicos
5852163f7f8Smrg				;;
5862163f7f8Smrg			symmetry)
5872163f7f8Smrg				basic_machine=i386-sequent
5882163f7f8Smrg				basic_os=dynix
5892163f7f8Smrg				;;
5902163f7f8Smrg			t3e)
5912163f7f8Smrg				basic_machine=alphaev5-cray
5922163f7f8Smrg				basic_os=unicos
5932163f7f8Smrg				;;
5942163f7f8Smrg			t90)
5952163f7f8Smrg				basic_machine=t90-cray
5962163f7f8Smrg				basic_os=unicos
5972163f7f8Smrg				;;
5982163f7f8Smrg			toad1)
5992163f7f8Smrg				basic_machine=pdp10-xkl
6002163f7f8Smrg				basic_os=tops20
6012163f7f8Smrg				;;
6022163f7f8Smrg			tpf)
6032163f7f8Smrg				basic_machine=s390x-ibm
6042163f7f8Smrg				basic_os=tpf
6052163f7f8Smrg				;;
6062163f7f8Smrg			udi29k)
6072163f7f8Smrg				basic_machine=a29k-amd
6082163f7f8Smrg				basic_os=udi
6092163f7f8Smrg				;;
6102163f7f8Smrg			ultra3)
6112163f7f8Smrg				basic_machine=a29k-nyu
6122163f7f8Smrg				basic_os=sym1
6132163f7f8Smrg				;;
6142163f7f8Smrg			v810 | necv810)
6152163f7f8Smrg				basic_machine=v810-nec
6162163f7f8Smrg				basic_os=none
6172163f7f8Smrg				;;
6182163f7f8Smrg			vaxv)
6192163f7f8Smrg				basic_machine=vax-dec
6202163f7f8Smrg				basic_os=sysv
6212163f7f8Smrg				;;
6222163f7f8Smrg			vms)
6232163f7f8Smrg				basic_machine=vax-dec
6242163f7f8Smrg				basic_os=vms
6252163f7f8Smrg				;;
6262163f7f8Smrg			vsta)
6272163f7f8Smrg				basic_machine=i386-pc
6282163f7f8Smrg				basic_os=vsta
6292163f7f8Smrg				;;
6302163f7f8Smrg			vxworks960)
6312163f7f8Smrg				basic_machine=i960-wrs
6322163f7f8Smrg				basic_os=vxworks
6332163f7f8Smrg				;;
6342163f7f8Smrg			vxworks68)
6352163f7f8Smrg				basic_machine=m68k-wrs
6362163f7f8Smrg				basic_os=vxworks
6372163f7f8Smrg				;;
6382163f7f8Smrg			vxworks29k)
6392163f7f8Smrg				basic_machine=a29k-wrs
6402163f7f8Smrg				basic_os=vxworks
6412163f7f8Smrg				;;
6422163f7f8Smrg			xbox)
6432163f7f8Smrg				basic_machine=i686-pc
6442163f7f8Smrg				basic_os=mingw32
6452163f7f8Smrg				;;
6462163f7f8Smrg			ymp)
6472163f7f8Smrg				basic_machine=ymp-cray
6482163f7f8Smrg				basic_os=unicos
6492163f7f8Smrg				;;
6502163f7f8Smrg			*)
6512163f7f8Smrg				basic_machine=$1
6522163f7f8Smrg				basic_os=
6532163f7f8Smrg				;;
6542163f7f8Smrg		esac
655ff7e0accSmrg		;;
656ff7e0accSmrgesac
657ff7e0accSmrg
6582163f7f8Smrg# Decode 1-component or ad-hoc basic machines
659ff7e0accSmrgcase $basic_machine in
6602163f7f8Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6612163f7f8Smrg	# some cases the only manufacturer, in others, it is the most popular.
6622163f7f8Smrg	w89k)
6632163f7f8Smrg		cpu=hppa1.1
6642163f7f8Smrg		vendor=winbond
665ff7e0accSmrg		;;
6662163f7f8Smrg	op50n)
6672163f7f8Smrg		cpu=hppa1.1
6682163f7f8Smrg		vendor=oki
669ff7e0accSmrg		;;
6702163f7f8Smrg	op60c)
6712163f7f8Smrg		cpu=hppa1.1
6722163f7f8Smrg		vendor=oki
673ff7e0accSmrg		;;
6742163f7f8Smrg	ibm*)
6752163f7f8Smrg		cpu=i370
6762163f7f8Smrg		vendor=ibm
67705bee9bcSmrg		;;
6782163f7f8Smrg	orion105)
6792163f7f8Smrg		cpu=clipper
6802163f7f8Smrg		vendor=highlevel
68105bee9bcSmrg		;;
6822163f7f8Smrg	mac | mpw | mac-mpw)
6832163f7f8Smrg		cpu=m68k
6842163f7f8Smrg		vendor=apple
68505bee9bcSmrg		;;
6862163f7f8Smrg	pmac | pmac-mpw)
6872163f7f8Smrg		cpu=powerpc
6882163f7f8Smrg		vendor=apple
68905bee9bcSmrg		;;
69005bee9bcSmrg
691ff7e0accSmrg	# Recognize the various machine names and aliases which stand
692ff7e0accSmrg	# for a CPU type and a company and sometimes even an OS.
693ff7e0accSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6942163f7f8Smrg		cpu=m68000
6952163f7f8Smrg		vendor=att
696ff7e0accSmrg		;;
697ff7e0accSmrg	3b*)
6982163f7f8Smrg		cpu=we32k
6992163f7f8Smrg		vendor=att
700a005d216Smrg		;;
701863f95b1Smrg	bluegene*)
7022163f7f8Smrg		cpu=powerpc
7032163f7f8Smrg		vendor=ibm
7042163f7f8Smrg		basic_os=cnk
705ff7e0accSmrg		;;
706ff7e0accSmrg	decsystem10* | dec10*)
7072163f7f8Smrg		cpu=pdp10
7082163f7f8Smrg		vendor=dec
7092163f7f8Smrg		basic_os=tops10
710ff7e0accSmrg		;;
711ff7e0accSmrg	decsystem20* | dec20*)
7122163f7f8Smrg		cpu=pdp10
7132163f7f8Smrg		vendor=dec
7142163f7f8Smrg		basic_os=tops20
715ff7e0accSmrg		;;
716ff7e0accSmrg	delta | 3300 | motorola-3300 | motorola-delta \
717ff7e0accSmrg	      | 3300-motorola | delta-motorola)
7182163f7f8Smrg		cpu=m68k
7192163f7f8Smrg		vendor=motorola
720ff7e0accSmrg		;;
7210c91c449Smrg	dpx2*)
7222163f7f8Smrg		cpu=m68k
7232163f7f8Smrg		vendor=bull
7242163f7f8Smrg		basic_os=sysv3
725ff7e0accSmrg		;;
726ff7e0accSmrg	encore | umax | mmax)
7272163f7f8Smrg		cpu=ns32k
7282163f7f8Smrg		vendor=encore
729ff7e0accSmrg		;;
7302163f7f8Smrg	elxsi)
7312163f7f8Smrg		cpu=elxsi
7322163f7f8Smrg		vendor=elxsi
7332163f7f8Smrg		basic_os=${basic_os:-bsd}
734ff7e0accSmrg		;;
735ff7e0accSmrg	fx2800)
7362163f7f8Smrg		cpu=i860
7372163f7f8Smrg		vendor=alliant
738ff7e0accSmrg		;;
739ff7e0accSmrg	genix)
7402163f7f8Smrg		cpu=ns32k
7412163f7f8Smrg		vendor=ns
742ff7e0accSmrg		;;
743ff7e0accSmrg	h3050r* | hiux*)
7442163f7f8Smrg		cpu=hppa1.1
7452163f7f8Smrg		vendor=hitachi
7462163f7f8Smrg		basic_os=hiuxwe2
747ff7e0accSmrg		;;
748ff7e0accSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7492163f7f8Smrg		cpu=hppa1.0
7502163f7f8Smrg		vendor=hp
751ff7e0accSmrg		;;
752ff7e0accSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7532163f7f8Smrg		cpu=m68000
7542163f7f8Smrg		vendor=hp
755ff7e0accSmrg		;;
756ff7e0accSmrg	hp9k3[2-9][0-9])
7572163f7f8Smrg		cpu=m68k
7582163f7f8Smrg		vendor=hp
759ff7e0accSmrg		;;
760ff7e0accSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7612163f7f8Smrg		cpu=hppa1.0
7622163f7f8Smrg		vendor=hp
763ff7e0accSmrg		;;
764ff7e0accSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7652163f7f8Smrg		cpu=hppa1.1
7662163f7f8Smrg		vendor=hp
767ff7e0accSmrg		;;
768ff7e0accSmrg	hp9k78[0-9] | hp78[0-9])
769ff7e0accSmrg		# FIXME: really hppa2.0-hp
7702163f7f8Smrg		cpu=hppa1.1
7712163f7f8Smrg		vendor=hp
772ff7e0accSmrg		;;
773ff7e0accSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
774ff7e0accSmrg		# FIXME: really hppa2.0-hp
7752163f7f8Smrg		cpu=hppa1.1
7762163f7f8Smrg		vendor=hp
777ff7e0accSmrg		;;
778ff7e0accSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7792163f7f8Smrg		cpu=hppa1.1
7802163f7f8Smrg		vendor=hp
781ff7e0accSmrg		;;
782ff7e0accSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7832163f7f8Smrg		cpu=hppa1.0
7842163f7f8Smrg		vendor=hp
785ff7e0accSmrg		;;
786ff7e0accSmrg	i*86v32)
7872163f7f8Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7882163f7f8Smrg		vendor=pc
7892163f7f8Smrg		basic_os=sysv32
790ff7e0accSmrg		;;
791ff7e0accSmrg	i*86v4*)
7922163f7f8Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7932163f7f8Smrg		vendor=pc
7942163f7f8Smrg		basic_os=sysv4
795ff7e0accSmrg		;;
796ff7e0accSmrg	i*86v)
7972163f7f8Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7982163f7f8Smrg		vendor=pc
7992163f7f8Smrg		basic_os=sysv
800ff7e0accSmrg		;;
801ff7e0accSmrg	i*86sol2)
8022163f7f8Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
8032163f7f8Smrg		vendor=pc
8042163f7f8Smrg		basic_os=solaris2
805ff7e0accSmrg		;;
8062163f7f8Smrg	j90 | j90-cray)
8072163f7f8Smrg		cpu=j90
8082163f7f8Smrg		vendor=cray
8092163f7f8Smrg		basic_os=${basic_os:-unicos}
810ff7e0accSmrg		;;
811ff7e0accSmrg	iris | iris4d)
8122163f7f8Smrg		cpu=mips
8132163f7f8Smrg		vendor=sgi
8142163f7f8Smrg		case $basic_os in
8152163f7f8Smrg		    irix*)
816ff7e0accSmrg			;;
817ff7e0accSmrg		    *)
8182163f7f8Smrg			basic_os=irix4
819ff7e0accSmrg			;;
820ff7e0accSmrg		esac
821ff7e0accSmrg		;;
822ff7e0accSmrg	miniframe)
8232163f7f8Smrg		cpu=m68000
8242163f7f8Smrg		vendor=convergent
825ff7e0accSmrg		;;
8262163f7f8Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8272163f7f8Smrg		cpu=m68k
8282163f7f8Smrg		vendor=atari
8292163f7f8Smrg		basic_os=mint
830ff7e0accSmrg		;;
831ff7e0accSmrg	news-3600 | risc-news)
8322163f7f8Smrg		cpu=mips
8332163f7f8Smrg		vendor=sony
8342163f7f8Smrg		basic_os=newsos
835ff7e0accSmrg		;;
8360c91c449Smrg	next | m*-next)
8372163f7f8Smrg		cpu=m68k
8382163f7f8Smrg		vendor=next
8392163f7f8Smrg		case $basic_os in
8402163f7f8Smrg		    openstep*)
8412163f7f8Smrg		        ;;
8422163f7f8Smrg		    nextstep*)
843ff7e0accSmrg			;;
8442163f7f8Smrg		    ns2*)
8452163f7f8Smrg		      basic_os=nextstep2
846ff7e0accSmrg			;;
847ff7e0accSmrg		    *)
8482163f7f8Smrg		      basic_os=nextstep3
849ff7e0accSmrg			;;
850ff7e0accSmrg		esac
851ff7e0accSmrg		;;
852ff7e0accSmrg	np1)
8532163f7f8Smrg		cpu=np1
8542163f7f8Smrg		vendor=gould
8550c91c449Smrg		;;
856ff7e0accSmrg	op50n-* | op60c-*)
8572163f7f8Smrg		cpu=hppa1.1
8582163f7f8Smrg		vendor=oki
8592163f7f8Smrg		basic_os=proelf
860ff7e0accSmrg		;;
861ff7e0accSmrg	pa-hitachi)
8622163f7f8Smrg		cpu=hppa1.1
8632163f7f8Smrg		vendor=hitachi
8642163f7f8Smrg		basic_os=hiuxwe2
865a005d216Smrg		;;
866ff7e0accSmrg	pbd)
8672163f7f8Smrg		cpu=sparc
8682163f7f8Smrg		vendor=tti
869ff7e0accSmrg		;;
870ff7e0accSmrg	pbb)
8712163f7f8Smrg		cpu=m68k
8722163f7f8Smrg		vendor=tti
873ff7e0accSmrg		;;
8742163f7f8Smrg	pc532)
8752163f7f8Smrg		cpu=ns32k
8762163f7f8Smrg		vendor=pc532
877ff7e0accSmrg		;;
878ff7e0accSmrg	pn)
8792163f7f8Smrg		cpu=pn
8802163f7f8Smrg		vendor=gould
881ff7e0accSmrg		;;
8822163f7f8Smrg	power)
8832163f7f8Smrg		cpu=power
8842163f7f8Smrg		vendor=ibm
885ff7e0accSmrg		;;
8862163f7f8Smrg	ps2)
8872163f7f8Smrg		cpu=i386
8882163f7f8Smrg		vendor=ibm
889ff7e0accSmrg		;;
8902163f7f8Smrg	rm[46]00)
8912163f7f8Smrg		cpu=mips
8922163f7f8Smrg		vendor=siemens
893ff7e0accSmrg		;;
8942163f7f8Smrg	rtpc | rtpc-*)
8952163f7f8Smrg		cpu=romp
8962163f7f8Smrg		vendor=ibm
897ff7e0accSmrg		;;
8982163f7f8Smrg	sde)
8992163f7f8Smrg		cpu=mipsisa32
9002163f7f8Smrg		vendor=sde
9012163f7f8Smrg		basic_os=${basic_os:-elf}
902ff7e0accSmrg		;;
9032163f7f8Smrg	simso-wrs)
9042163f7f8Smrg		cpu=sparclite
9052163f7f8Smrg		vendor=wrs
9062163f7f8Smrg		basic_os=vxworks
907ff7e0accSmrg		;;
9082163f7f8Smrg	tower | tower-32)
9092163f7f8Smrg		cpu=m68k
9102163f7f8Smrg		vendor=ncr
911ff7e0accSmrg		;;
9122163f7f8Smrg	vpp*|vx|vx-*)
9132163f7f8Smrg		cpu=f301
9142163f7f8Smrg		vendor=fujitsu
915ff7e0accSmrg		;;
9162163f7f8Smrg	w65)
9172163f7f8Smrg		cpu=w65
9182163f7f8Smrg		vendor=wdc
91905bee9bcSmrg		;;
9202163f7f8Smrg	w89k-*)
9212163f7f8Smrg		cpu=hppa1.1
9222163f7f8Smrg		vendor=winbond
9232163f7f8Smrg		basic_os=proelf
924ff7e0accSmrg		;;
9252163f7f8Smrg	none)
9262163f7f8Smrg		cpu=none
9272163f7f8Smrg		vendor=none
928ff7e0accSmrg		;;
9292163f7f8Smrg	leon|leon[3-9])
9302163f7f8Smrg		cpu=sparc
9312163f7f8Smrg		vendor=$basic_machine
932ff7e0accSmrg		;;
9332163f7f8Smrg	leon-*|leon[3-9]-*)
9342163f7f8Smrg		cpu=sparc
9352163f7f8Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
936ff7e0accSmrg		;;
9372163f7f8Smrg
9382163f7f8Smrg	*-*)
9392163f7f8Smrg		# shellcheck disable=SC2162
9402163f7f8Smrg		saved_IFS=$IFS
9412163f7f8Smrg		IFS="-" read cpu vendor <<EOF
9422163f7f8Smrg$basic_machine
9432163f7f8SmrgEOF
9442163f7f8Smrg		IFS=$saved_IFS
945ff7e0accSmrg		;;
9462163f7f8Smrg	# We use `pc' rather than `unknown'
9472163f7f8Smrg	# because (1) that's what they normally are, and
9482163f7f8Smrg	# (2) the word "unknown" tends to confuse beginning users.
9492163f7f8Smrg	i*86 | x86_64)
9502163f7f8Smrg		cpu=$basic_machine
9512163f7f8Smrg		vendor=pc
952ff7e0accSmrg		;;
9532163f7f8Smrg	# These rules are duplicated from below for sake of the special case above;
9542163f7f8Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
9552163f7f8Smrg	pc98)
9562163f7f8Smrg		cpu=i386
9572163f7f8Smrg		vendor=pc
958ff7e0accSmrg		;;
9592163f7f8Smrg	x64 | amd64)
9602163f7f8Smrg		cpu=x86_64
9612163f7f8Smrg		vendor=pc
962ff7e0accSmrg		;;
9632163f7f8Smrg	# Recognize the basic CPU types without company name.
9642163f7f8Smrg	*)
9652163f7f8Smrg		cpu=$basic_machine
9662163f7f8Smrg		vendor=unknown
967ff7e0accSmrg		;;
9682163f7f8Smrgesac
9692163f7f8Smrg
9702163f7f8Smrgunset -v basic_machine
9712163f7f8Smrg
9722163f7f8Smrg# Decode basic machines in the full and proper CPU-Company form.
9732163f7f8Smrgcase $cpu-$vendor in
9742163f7f8Smrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9752163f7f8Smrg	# some cases the only manufacturer, in others, it is the most popular.
9762163f7f8Smrg	craynv-unknown)
9772163f7f8Smrg		vendor=cray
9782163f7f8Smrg		basic_os=${basic_os:-unicosmp}
979ff7e0accSmrg		;;
9802163f7f8Smrg	c90-unknown | c90-cray)
9812163f7f8Smrg		vendor=cray
9822163f7f8Smrg		basic_os=${Basic_os:-unicos}
983ff7e0accSmrg		;;
9842163f7f8Smrg	fx80-unknown)
9852163f7f8Smrg		vendor=alliant
986ff7e0accSmrg		;;
9872163f7f8Smrg	romp-unknown)
9882163f7f8Smrg		vendor=ibm
989ff7e0accSmrg		;;
9902163f7f8Smrg	mmix-unknown)
9912163f7f8Smrg		vendor=knuth
992ff7e0accSmrg		;;
9932163f7f8Smrg	microblaze-unknown | microblazeel-unknown)
9942163f7f8Smrg		vendor=xilinx
995ff7e0accSmrg		;;
9962163f7f8Smrg	rs6000-unknown)
9972163f7f8Smrg		vendor=ibm
998ff7e0accSmrg		;;
9992163f7f8Smrg	vax-unknown)
10002163f7f8Smrg		vendor=dec
1001ff7e0accSmrg		;;
10022163f7f8Smrg	pdp11-unknown)
10032163f7f8Smrg		vendor=dec
1004ff7e0accSmrg		;;
10052163f7f8Smrg	we32k-unknown)
10062163f7f8Smrg		vendor=att
100705bee9bcSmrg		;;
10082163f7f8Smrg	cydra-unknown)
10092163f7f8Smrg		vendor=cydrome
1010ff7e0accSmrg		;;
10112163f7f8Smrg	i370-ibm*)
10122163f7f8Smrg		vendor=ibm
1013ff7e0accSmrg		;;
10142163f7f8Smrg	orion-unknown)
10152163f7f8Smrg		vendor=highlevel
1016ff7e0accSmrg		;;
10172163f7f8Smrg	xps-unknown | xps100-unknown)
10182163f7f8Smrg		cpu=xps100
10192163f7f8Smrg		vendor=honeywell
1020ff7e0accSmrg		;;
10212163f7f8Smrg
10222163f7f8Smrg	# Here we normalize CPU types with a missing or matching vendor
10232163f7f8Smrg	armh-unknown | armh-alt)
10242163f7f8Smrg		cpu=armv7l
10252163f7f8Smrg		vendor=alt
10262163f7f8Smrg		basic_os=${basic_os:-linux-gnueabihf}
1027ff7e0accSmrg		;;
10282163f7f8Smrg	dpx20-unknown | dpx20-bull)
10292163f7f8Smrg		cpu=rs6000
10302163f7f8Smrg		vendor=bull
10312163f7f8Smrg		basic_os=${basic_os:-bosx}
1032ff7e0accSmrg		;;
10332163f7f8Smrg
10342163f7f8Smrg	# Here we normalize CPU types irrespective of the vendor
10352163f7f8Smrg	amd64-*)
10362163f7f8Smrg		cpu=x86_64
1037ff7e0accSmrg		;;
10382163f7f8Smrg	blackfin-*)
10392163f7f8Smrg		cpu=bfin
10402163f7f8Smrg		basic_os=linux
1041ff7e0accSmrg		;;
10422163f7f8Smrg	c54x-*)
10432163f7f8Smrg		cpu=tic54x
1044ff7e0accSmrg		;;
10452163f7f8Smrg	c55x-*)
10462163f7f8Smrg		cpu=tic55x
1047ff7e0accSmrg		;;
10482163f7f8Smrg	c6x-*)
10492163f7f8Smrg		cpu=tic6x
1050ff7e0accSmrg		;;
10512163f7f8Smrg	e500v[12]-*)
10522163f7f8Smrg		cpu=powerpc
10532163f7f8Smrg		basic_os=${basic_os}"spe"
1054ff7e0accSmrg		;;
10552163f7f8Smrg	mips3*-*)
10562163f7f8Smrg		cpu=mips64
1057ff7e0accSmrg		;;
10582163f7f8Smrg	ms1-*)
10592163f7f8Smrg		cpu=mt
1060ff7e0accSmrg		;;
10612163f7f8Smrg	m68knommu-*)
10622163f7f8Smrg		cpu=m68k
10632163f7f8Smrg		basic_os=linux
1064ff7e0accSmrg		;;
10652163f7f8Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10662163f7f8Smrg		cpu=s12z
1067a005d216Smrg		;;
10682163f7f8Smrg	openrisc-*)
10692163f7f8Smrg		cpu=or32
1070ff7e0accSmrg		;;
10712163f7f8Smrg	parisc-*)
10722163f7f8Smrg		cpu=hppa
10732163f7f8Smrg		basic_os=linux
1074ff7e0accSmrg		;;
10752163f7f8Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10762163f7f8Smrg		cpu=i586
1077ff7e0accSmrg		;;
10782163f7f8Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
10792163f7f8Smrg		cpu=i686
1080ff7e0accSmrg		;;
10812163f7f8Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10822163f7f8Smrg		cpu=i686
1083ff7e0accSmrg		;;
10842163f7f8Smrg	pentium4-*)
10852163f7f8Smrg		cpu=i786
1086ff7e0accSmrg		;;
10872163f7f8Smrg	pc98-*)
10882163f7f8Smrg		cpu=i386
1089ff7e0accSmrg		;;
10902163f7f8Smrg	ppc-* | ppcbe-*)
10912163f7f8Smrg		cpu=powerpc
1092ff7e0accSmrg		;;
10932163f7f8Smrg	ppcle-* | powerpclittle-*)
10942163f7f8Smrg		cpu=powerpcle
1095ff7e0accSmrg		;;
10962163f7f8Smrg	ppc64-*)
10972163f7f8Smrg		cpu=powerpc64
1098ff7e0accSmrg		;;
10992163f7f8Smrg	ppc64le-* | powerpc64little-*)
11002163f7f8Smrg		cpu=powerpc64le
1101ff7e0accSmrg		;;
11022163f7f8Smrg	sb1-*)
11032163f7f8Smrg		cpu=mipsisa64sb1
1104ff7e0accSmrg		;;
11052163f7f8Smrg	sb1el-*)
11062163f7f8Smrg		cpu=mipsisa64sb1el
1107ff7e0accSmrg		;;
11082163f7f8Smrg	sh5e[lb]-*)
11092163f7f8Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1110ff7e0accSmrg		;;
11112163f7f8Smrg	spur-*)
11122163f7f8Smrg		cpu=spur
1113ff7e0accSmrg		;;
11142163f7f8Smrg	strongarm-* | thumb-*)
11152163f7f8Smrg		cpu=arm
1116ff7e0accSmrg		;;
11172163f7f8Smrg	tx39-*)
11182163f7f8Smrg		cpu=mipstx39
11190c91c449Smrg		;;
11202163f7f8Smrg	tx39el-*)
11212163f7f8Smrg		cpu=mipstx39el
1122ff7e0accSmrg		;;
11232163f7f8Smrg	x64-*)
11242163f7f8Smrg		cpu=x86_64
1125ff7e0accSmrg		;;
112605bee9bcSmrg	xscale-* | xscalee[bl]-*)
11272163f7f8Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1128ff7e0accSmrg		;;
11292163f7f8Smrg	arm64-* | aarch64le-*)
11302163f7f8Smrg		cpu=aarch64
1131ff7e0accSmrg		;;
1132ff7e0accSmrg
11332163f7f8Smrg	# Recognize the canonical CPU Types that limit and/or modify the
11342163f7f8Smrg	# company names they are paired with.
11352163f7f8Smrg	cr16-*)
11362163f7f8Smrg		basic_os=${basic_os:-elf}
1137ff7e0accSmrg		;;
11382163f7f8Smrg	crisv32-* | etraxfs*-*)
11392163f7f8Smrg		cpu=crisv32
11402163f7f8Smrg		vendor=axis
1141ff7e0accSmrg		;;
11422163f7f8Smrg	cris-* | etrax*-*)
11432163f7f8Smrg		cpu=cris
11442163f7f8Smrg		vendor=axis
1145ff7e0accSmrg		;;
11462163f7f8Smrg	crx-*)
11472163f7f8Smrg		basic_os=${basic_os:-elf}
1148ff7e0accSmrg		;;
11492163f7f8Smrg	neo-tandem)
11502163f7f8Smrg		cpu=neo
11512163f7f8Smrg		vendor=tandem
1152ff7e0accSmrg		;;
11532163f7f8Smrg	nse-tandem)
11542163f7f8Smrg		cpu=nse
11552163f7f8Smrg		vendor=tandem
1156ff7e0accSmrg		;;
11572163f7f8Smrg	nsr-tandem)
11582163f7f8Smrg		cpu=nsr
11592163f7f8Smrg		vendor=tandem
1160ff7e0accSmrg		;;
11612163f7f8Smrg	nsv-tandem)
11622163f7f8Smrg		cpu=nsv
11632163f7f8Smrg		vendor=tandem
1164ff7e0accSmrg		;;
11652163f7f8Smrg	nsx-tandem)
11662163f7f8Smrg		cpu=nsx
11672163f7f8Smrg		vendor=tandem
1168ff7e0accSmrg		;;
11692163f7f8Smrg	mipsallegrexel-sony)
11702163f7f8Smrg		cpu=mipsallegrexel
11712163f7f8Smrg		vendor=sony
1172ff7e0accSmrg		;;
11732163f7f8Smrg	tile*-*)
11742163f7f8Smrg		basic_os=${basic_os:-linux-gnu}
1175ff7e0accSmrg		;;
11762163f7f8Smrg
1177ff7e0accSmrg	*)
11782163f7f8Smrg		# Recognize the canonical CPU types that are allowed with any
11792163f7f8Smrg		# company name.
11802163f7f8Smrg		case $cpu in
11812163f7f8Smrg			1750a | 580 \
11822163f7f8Smrg			| a29k \
11832163f7f8Smrg			| aarch64 | aarch64_be \
11842163f7f8Smrg			| abacus \
11852163f7f8Smrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11862163f7f8Smrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11872163f7f8Smrg			| alphapca5[67] | alpha64pca5[67] \
11882163f7f8Smrg			| am33_2.0 \
11892163f7f8Smrg			| amdgcn \
11902163f7f8Smrg			| arc | arceb | arc32 | arc64 \
11912163f7f8Smrg			| arm | arm[lb]e | arme[lb] | armv* \
11922163f7f8Smrg			| avr | avr32 \
11932163f7f8Smrg			| asmjs \
11942163f7f8Smrg			| ba \
11952163f7f8Smrg			| be32 | be64 \
11962163f7f8Smrg			| bfin | bpf | bs2000 \
11972163f7f8Smrg			| c[123]* | c30 | [cjt]90 | c4x \
11982163f7f8Smrg			| c8051 | clipper | craynv | csky | cydra \
11992163f7f8Smrg			| d10v | d30v | dlx | dsp16xx \
12002163f7f8Smrg			| e2k | elxsi | epiphany \
12012163f7f8Smrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
12022163f7f8Smrg			| h8300 | h8500 \
12032163f7f8Smrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
12042163f7f8Smrg			| hexagon \
12052163f7f8Smrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12062163f7f8Smrg			| ip2k | iq2000 \
12072163f7f8Smrg			| k1om \
12082163f7f8Smrg			| le32 | le64 \
12092163f7f8Smrg			| lm32 \
12102163f7f8Smrg			| loongarch32 | loongarch64 \
12112163f7f8Smrg			| m32c | m32r | m32rle \
12122163f7f8Smrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12132163f7f8Smrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12142163f7f8Smrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12152163f7f8Smrg			| microblaze | microblazeel \
12162163f7f8Smrg			| mips | mipsbe | mipseb | mipsel | mipsle \
12172163f7f8Smrg			| mips16 \
12182163f7f8Smrg			| mips64 | mips64eb | mips64el \
12192163f7f8Smrg			| mips64octeon | mips64octeonel \
12202163f7f8Smrg			| mips64orion | mips64orionel \
12212163f7f8Smrg			| mips64r5900 | mips64r5900el \
12222163f7f8Smrg			| mips64vr | mips64vrel \
12232163f7f8Smrg			| mips64vr4100 | mips64vr4100el \
12242163f7f8Smrg			| mips64vr4300 | mips64vr4300el \
12252163f7f8Smrg			| mips64vr5000 | mips64vr5000el \
12262163f7f8Smrg			| mips64vr5900 | mips64vr5900el \
12272163f7f8Smrg			| mipsisa32 | mipsisa32el \
12282163f7f8Smrg			| mipsisa32r2 | mipsisa32r2el \
12292163f7f8Smrg			| mipsisa32r3 | mipsisa32r3el \
12302163f7f8Smrg			| mipsisa32r5 | mipsisa32r5el \
12312163f7f8Smrg			| mipsisa32r6 | mipsisa32r6el \
12322163f7f8Smrg			| mipsisa64 | mipsisa64el \
12332163f7f8Smrg			| mipsisa64r2 | mipsisa64r2el \
12342163f7f8Smrg			| mipsisa64r3 | mipsisa64r3el \
12352163f7f8Smrg			| mipsisa64r5 | mipsisa64r5el \
12362163f7f8Smrg			| mipsisa64r6 | mipsisa64r6el \
12372163f7f8Smrg			| mipsisa64sb1 | mipsisa64sb1el \
12382163f7f8Smrg			| mipsisa64sr71k | mipsisa64sr71kel \
12392163f7f8Smrg			| mipsr5900 | mipsr5900el \
12402163f7f8Smrg			| mipstx39 | mipstx39el \
12412163f7f8Smrg			| mmix \
12422163f7f8Smrg			| mn10200 | mn10300 \
12432163f7f8Smrg			| moxie \
12442163f7f8Smrg			| mt \
12452163f7f8Smrg			| msp430 \
12462163f7f8Smrg			| nds32 | nds32le | nds32be \
12472163f7f8Smrg			| nfp \
12482163f7f8Smrg			| nios | nios2 | nios2eb | nios2el \
12492163f7f8Smrg			| none | np1 | ns16k | ns32k | nvptx \
12502163f7f8Smrg			| open8 \
12512163f7f8Smrg			| or1k* \
12522163f7f8Smrg			| or32 \
12532163f7f8Smrg			| orion \
12542163f7f8Smrg			| picochip \
12552163f7f8Smrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12562163f7f8Smrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12572163f7f8Smrg			| pru \
12582163f7f8Smrg			| pyramid \
12592163f7f8Smrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12602163f7f8Smrg			| rl78 | romp | rs6000 | rx \
12612163f7f8Smrg			| s390 | s390x \
12622163f7f8Smrg			| score \
12632163f7f8Smrg			| sh | shl \
12642163f7f8Smrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12652163f7f8Smrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12662163f7f8Smrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12672163f7f8Smrg			| sparclite \
12682163f7f8Smrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12692163f7f8Smrg			| spu \
12702163f7f8Smrg			| tahoe \
12712163f7f8Smrg			| thumbv7* \
12722163f7f8Smrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12732163f7f8Smrg			| tron \
12742163f7f8Smrg			| ubicom32 \
12752163f7f8Smrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12762163f7f8Smrg			| vax \
12772163f7f8Smrg			| visium \
12782163f7f8Smrg			| w65 \
12792163f7f8Smrg			| wasm32 | wasm64 \
12802163f7f8Smrg			| we32k \
12812163f7f8Smrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12822163f7f8Smrg			| xstormy16 | xtensa* \
12832163f7f8Smrg			| ymp \
12842163f7f8Smrg			| z8k | z80)
12852163f7f8Smrg				;;
12862163f7f8Smrg
12872163f7f8Smrg			*)
12882163f7f8Smrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
12892163f7f8Smrg				exit 1
12902163f7f8Smrg				;;
12912163f7f8Smrg		esac
1292ff7e0accSmrg		;;
1293ff7e0accSmrgesac
1294ff7e0accSmrg
1295ff7e0accSmrg# Here we canonicalize certain aliases for manufacturers.
12962163f7f8Smrgcase $vendor in
12972163f7f8Smrg	digital*)
12982163f7f8Smrg		vendor=dec
1299ff7e0accSmrg		;;
13002163f7f8Smrg	commodore*)
13012163f7f8Smrg		vendor=cbm
1302ff7e0accSmrg		;;
1303ff7e0accSmrg	*)
1304ff7e0accSmrg		;;
1305ff7e0accSmrgesac
1306ff7e0accSmrg
1307ff7e0accSmrg# Decode manufacturer-specific aliases for certain operating systems.
1308ff7e0accSmrg
13092163f7f8Smrgif test x$basic_os != x
1310ff7e0accSmrgthen
13112163f7f8Smrg
13122163f7f8Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
13132163f7f8Smrg# set os.
13142163f7f8Smrgcase $basic_os in
13152163f7f8Smrg	gnu/linux*)
13162163f7f8Smrg		kernel=linux
13172163f7f8Smrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13182163f7f8Smrg		;;
13192163f7f8Smrg	os2-emx)
13202163f7f8Smrg		kernel=os2
13212163f7f8Smrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13222163f7f8Smrg		;;
13232163f7f8Smrg	nto-qnx*)
13242163f7f8Smrg		kernel=nto
13252163f7f8Smrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13262163f7f8Smrg		;;
13272163f7f8Smrg	*-*)
13282163f7f8Smrg		# shellcheck disable=SC2162
13292163f7f8Smrg		saved_IFS=$IFS
13302163f7f8Smrg		IFS="-" read kernel os <<EOF
13312163f7f8Smrg$basic_os
13322163f7f8SmrgEOF
13332163f7f8Smrg		IFS=$saved_IFS
13342163f7f8Smrg		;;
13352163f7f8Smrg	# Default OS when just kernel was specified
13362163f7f8Smrg	nto*)
13372163f7f8Smrg		kernel=nto
13382163f7f8Smrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13392163f7f8Smrg		;;
13402163f7f8Smrg	linux*)
13412163f7f8Smrg		kernel=linux
13422163f7f8Smrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13432163f7f8Smrg		;;
13442163f7f8Smrg	managarm*)
13452163f7f8Smrg		kernel=managarm
13462163f7f8Smrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
13472163f7f8Smrg		;;
13482163f7f8Smrg	*)
13492163f7f8Smrg		kernel=
13502163f7f8Smrg		os=$basic_os
13512163f7f8Smrg		;;
13522163f7f8Smrgesac
13532163f7f8Smrg
13542163f7f8Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13552163f7f8Smrg# etc.)
1356ff7e0accSmrgcase $os in
13570c91c449Smrg	# First match some system type aliases that might get confused
13580c91c449Smrg	# with valid system types.
13592163f7f8Smrg	# solaris* is a basic system type, with this one exception.
13602163f7f8Smrg	auroraux)
13612163f7f8Smrg		os=auroraux
1362863f95b1Smrg		;;
13632163f7f8Smrg	bluegene*)
13642163f7f8Smrg		os=cnk
1365ff7e0accSmrg		;;
13662163f7f8Smrg	solaris1 | solaris1.*)
13672163f7f8Smrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1368ff7e0accSmrg		;;
13692163f7f8Smrg	solaris)
13702163f7f8Smrg		os=solaris2
1371ff7e0accSmrg		;;
13722163f7f8Smrg	unixware*)
13732163f7f8Smrg		os=sysv4.2uw
1374ff7e0accSmrg		;;
13750c91c449Smrg	# es1800 is here to avoid being matched by es* (a different OS)
13762163f7f8Smrg	es1800*)
13772163f7f8Smrg		os=ose
13780c91c449Smrg		;;
13792163f7f8Smrg	# Some version numbers need modification
13802163f7f8Smrg	chorusos*)
13812163f7f8Smrg		os=chorusos
1382ff7e0accSmrg		;;
13832163f7f8Smrg	isc)
13842163f7f8Smrg		os=isc2.2
1385ff7e0accSmrg		;;
13862163f7f8Smrg	sco6)
13872163f7f8Smrg		os=sco5v6
1388ff7e0accSmrg		;;
13892163f7f8Smrg	sco5)
13902163f7f8Smrg		os=sco3.2v5
1391ff7e0accSmrg		;;
13922163f7f8Smrg	sco4)
13932163f7f8Smrg		os=sco3.2v4
1394ff7e0accSmrg		;;
13952163f7f8Smrg	sco3.2.[4-9]*)
13962163f7f8Smrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1397ff7e0accSmrg		;;
13982163f7f8Smrg	sco*v* | scout)
13992163f7f8Smrg		# Don't match below
1400ff7e0accSmrg		;;
14012163f7f8Smrg	sco*)
14022163f7f8Smrg		os=sco3.2v2
1403ff7e0accSmrg		;;
14042163f7f8Smrg	psos*)
14052163f7f8Smrg		os=psos
1406ff7e0accSmrg		;;
14072163f7f8Smrg	qnx*)
14082163f7f8Smrg		os=qnx
1409ff7e0accSmrg		;;
14102163f7f8Smrg	hiux*)
14112163f7f8Smrg		os=hiuxwe2
1412ff7e0accSmrg		;;
14132163f7f8Smrg	lynx*178)
14142163f7f8Smrg		os=lynxos178
1415ff7e0accSmrg		;;
14162163f7f8Smrg	lynx*5)
14172163f7f8Smrg		os=lynxos5
1418ff7e0accSmrg		;;
14192163f7f8Smrg	lynxos*)
14202163f7f8Smrg		# don't get caught up in next wildcard
1421ff7e0accSmrg		;;
14222163f7f8Smrg	lynx*)
14232163f7f8Smrg		os=lynxos
1424ff7e0accSmrg		;;
14252163f7f8Smrg	mac[0-9]*)
14262163f7f8Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
1427ff7e0accSmrg		;;
14282163f7f8Smrg	opened*)
14292163f7f8Smrg		os=openedition
1430ff7e0accSmrg		;;
14312163f7f8Smrg	os400*)
14322163f7f8Smrg		os=os400
1433ff7e0accSmrg		;;
14342163f7f8Smrg	sunos5*)
14352163f7f8Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1436ff7e0accSmrg		;;
14372163f7f8Smrg	sunos6*)
14382163f7f8Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1439ff7e0accSmrg		;;
14402163f7f8Smrg	wince*)
14412163f7f8Smrg		os=wince
1442ff7e0accSmrg		;;
14432163f7f8Smrg	utek*)
14442163f7f8Smrg		os=bsd
1445ff7e0accSmrg		;;
14462163f7f8Smrg	dynix*)
14472163f7f8Smrg		os=bsd
14482163f7f8Smrg		;;
14492163f7f8Smrg	acis*)
14502163f7f8Smrg		os=aos
14512163f7f8Smrg		;;
14522163f7f8Smrg	atheos*)
14532163f7f8Smrg		os=atheos
14542163f7f8Smrg		;;
14552163f7f8Smrg	syllable*)
14562163f7f8Smrg		os=syllable
1457ff7e0accSmrg		;;
14582163f7f8Smrg	386bsd)
14592163f7f8Smrg		os=bsd
14602163f7f8Smrg		;;
14612163f7f8Smrg	ctix* | uts*)
14622163f7f8Smrg		os=sysv
1463ff7e0accSmrg		;;
14642163f7f8Smrg	nova*)
14652163f7f8Smrg		os=rtmk-nova
1466ff7e0accSmrg		;;
14672163f7f8Smrg	ns2)
14682163f7f8Smrg		os=nextstep2
14692163f7f8Smrg		;;
14702163f7f8Smrg	# Preserve the version number of sinix5.
14712163f7f8Smrg	sinix5.*)
14722163f7f8Smrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
1473ff7e0accSmrg		;;
14742163f7f8Smrg	sinix*)
14752163f7f8Smrg		os=sysv4
1476ff7e0accSmrg		;;
14772163f7f8Smrg	tpf*)
14782163f7f8Smrg		os=tpf
1479ff7e0accSmrg		;;
14802163f7f8Smrg	triton*)
14812163f7f8Smrg		os=sysv3
1482ff7e0accSmrg		;;
14832163f7f8Smrg	oss*)
14842163f7f8Smrg		os=sysv3
1485ff7e0accSmrg		;;
14862163f7f8Smrg	svr4*)
14872163f7f8Smrg		os=sysv4
1488ff7e0accSmrg		;;
14892163f7f8Smrg	svr3)
14902163f7f8Smrg		os=sysv3
1491ff7e0accSmrg		;;
14922163f7f8Smrg	sysvr4)
14932163f7f8Smrg		os=sysv4
1494ff7e0accSmrg		;;
14952163f7f8Smrg	ose*)
14962163f7f8Smrg		os=ose
1497ff7e0accSmrg		;;
14982163f7f8Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14992163f7f8Smrg		os=mint
150010998002Smrg		;;
15012163f7f8Smrg	dicos*)
15022163f7f8Smrg		os=dicos
15032163f7f8Smrg		;;
15042163f7f8Smrg	pikeos*)
15050c91c449Smrg		# Until real need of OS specific support for
15060c91c449Smrg		# particular features comes up, bare metal
15070c91c449Smrg		# configurations are quite functional.
15082163f7f8Smrg		case $cpu in
15090c91c449Smrg		    arm*)
15102163f7f8Smrg			os=eabi
15110c91c449Smrg			;;
15120c91c449Smrg		    *)
15132163f7f8Smrg			os=elf
15140c91c449Smrg			;;
15150c91c449Smrg		esac
15160c91c449Smrg		;;
1517ff7e0accSmrg	*)
15182163f7f8Smrg		# No normalization, but not necessarily accepted, that comes below.
1519ff7e0accSmrg		;;
1520ff7e0accSmrgesac
15212163f7f8Smrg
1522ff7e0accSmrgelse
1523ff7e0accSmrg
1524ff7e0accSmrg# Here we handle the default operating systems that come with various machines.
1525ff7e0accSmrg# The value should be what the vendor currently ships out the door with their
1526ff7e0accSmrg# machine or put another way, the most popular os provided with the machine.
1527ff7e0accSmrg
1528ff7e0accSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
1529ff7e0accSmrg# "-sun"), then you have to tell the case statement up towards the top
1530ff7e0accSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
1531ff7e0accSmrg# will signal an error saying that MANUFACTURER isn't an operating
1532ff7e0accSmrg# system, and we'll never get to this point.
1533ff7e0accSmrg
15342163f7f8Smrgkernel=
15352163f7f8Smrgcase $cpu-$vendor in
153605bee9bcSmrg	score-*)
15372163f7f8Smrg		os=elf
1538ff7e0accSmrg		;;
153905bee9bcSmrg	spu-*)
15402163f7f8Smrg		os=elf
1541ff7e0accSmrg		;;
1542ff7e0accSmrg	*-acorn)
15432163f7f8Smrg		os=riscix1.2
1544ff7e0accSmrg		;;
1545ff7e0accSmrg	arm*-rebel)
15462163f7f8Smrg		kernel=linux
15472163f7f8Smrg		os=gnu
1548ff7e0accSmrg		;;
1549ff7e0accSmrg	arm*-semi)
15502163f7f8Smrg		os=aout
1551ff7e0accSmrg		;;
155205bee9bcSmrg	c4x-* | tic4x-*)
15532163f7f8Smrg		os=coff
155405bee9bcSmrg		;;
15550c91c449Smrg	c8051-*)
15562163f7f8Smrg		os=elf
15572163f7f8Smrg		;;
15582163f7f8Smrg	clipper-intergraph)
15592163f7f8Smrg		os=clix
15600c91c449Smrg		;;
156105bee9bcSmrg	hexagon-*)
15622163f7f8Smrg		os=elf
1563ff7e0accSmrg		;;
1564863f95b1Smrg	tic54x-*)
15652163f7f8Smrg		os=coff
1566863f95b1Smrg		;;
1567863f95b1Smrg	tic55x-*)
15682163f7f8Smrg		os=coff
1569863f95b1Smrg		;;
1570863f95b1Smrg	tic6x-*)
15712163f7f8Smrg		os=coff
1572863f95b1Smrg		;;
1573ff7e0accSmrg	# This must come before the *-dec entry.
1574ff7e0accSmrg	pdp10-*)
15752163f7f8Smrg		os=tops20
1576ff7e0accSmrg		;;
1577ff7e0accSmrg	pdp11-*)
15782163f7f8Smrg		os=none
1579ff7e0accSmrg		;;
1580ff7e0accSmrg	*-dec | vax-*)
15812163f7f8Smrg		os=ultrix4.2
1582ff7e0accSmrg		;;
1583ff7e0accSmrg	m68*-apollo)
15842163f7f8Smrg		os=domain
1585ff7e0accSmrg		;;
1586ff7e0accSmrg	i386-sun)
15872163f7f8Smrg		os=sunos4.0.2
1588ff7e0accSmrg		;;
1589ff7e0accSmrg	m68000-sun)
15902163f7f8Smrg		os=sunos3
1591ff7e0accSmrg		;;
1592ff7e0accSmrg	m68*-cisco)
15932163f7f8Smrg		os=aout
1594ff7e0accSmrg		;;
159505bee9bcSmrg	mep-*)
15962163f7f8Smrg		os=elf
1597ff7e0accSmrg		;;
1598ff7e0accSmrg	mips*-cisco)
15992163f7f8Smrg		os=elf
1600ff7e0accSmrg		;;
1601ff7e0accSmrg	mips*-*)
16022163f7f8Smrg		os=elf
1603ff7e0accSmrg		;;
1604ff7e0accSmrg	or32-*)
16052163f7f8Smrg		os=coff
1606ff7e0accSmrg		;;
1607ff7e0accSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
16082163f7f8Smrg		os=sysv3
1609ff7e0accSmrg		;;
1610ff7e0accSmrg	sparc-* | *-sun)
16112163f7f8Smrg		os=sunos4.1.1
1612ff7e0accSmrg		;;
16130c91c449Smrg	pru-*)
16142163f7f8Smrg		os=elf
16150c91c449Smrg		;;
1616ff7e0accSmrg	*-be)
16172163f7f8Smrg		os=beos
1618ff7e0accSmrg		;;
1619ff7e0accSmrg	*-ibm)
16202163f7f8Smrg		os=aix
1621ff7e0accSmrg		;;
162205bee9bcSmrg	*-knuth)
16232163f7f8Smrg		os=mmixware
1624ff7e0accSmrg		;;
1625ff7e0accSmrg	*-wec)
16262163f7f8Smrg		os=proelf
1627ff7e0accSmrg		;;
1628ff7e0accSmrg	*-winbond)
16292163f7f8Smrg		os=proelf
1630ff7e0accSmrg		;;
1631ff7e0accSmrg	*-oki)
16322163f7f8Smrg		os=proelf
1633ff7e0accSmrg		;;
1634ff7e0accSmrg	*-hp)
16352163f7f8Smrg		os=hpux
1636ff7e0accSmrg		;;
1637ff7e0accSmrg	*-hitachi)
16382163f7f8Smrg		os=hiux
1639ff7e0accSmrg		;;
1640ff7e0accSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16412163f7f8Smrg		os=sysv
1642ff7e0accSmrg		;;
1643ff7e0accSmrg	*-cbm)
16442163f7f8Smrg		os=amigaos
1645ff7e0accSmrg		;;
1646ff7e0accSmrg	*-dg)
16472163f7f8Smrg		os=dgux
1648ff7e0accSmrg		;;
1649ff7e0accSmrg	*-dolphin)
16502163f7f8Smrg		os=sysv3
1651ff7e0accSmrg		;;
1652ff7e0accSmrg	m68k-ccur)
16532163f7f8Smrg		os=rtu
1654ff7e0accSmrg		;;
1655ff7e0accSmrg	m88k-omron*)
16562163f7f8Smrg		os=luna
1657ff7e0accSmrg		;;
16580c91c449Smrg	*-next)
16592163f7f8Smrg		os=nextstep
1660ff7e0accSmrg		;;
1661ff7e0accSmrg	*-sequent)
16622163f7f8Smrg		os=ptx
1663ff7e0accSmrg		;;
1664ff7e0accSmrg	*-crds)
16652163f7f8Smrg		os=unos
1666ff7e0accSmrg		;;
1667ff7e0accSmrg	*-ns)
16682163f7f8Smrg		os=genix
1669ff7e0accSmrg		;;
1670ff7e0accSmrg	i370-*)
16712163f7f8Smrg		os=mvs
1672ff7e0accSmrg		;;
1673ff7e0accSmrg	*-gould)
16742163f7f8Smrg		os=sysv
1675ff7e0accSmrg		;;
1676ff7e0accSmrg	*-highlevel)
16772163f7f8Smrg		os=bsd
1678ff7e0accSmrg		;;
1679ff7e0accSmrg	*-encore)
16802163f7f8Smrg		os=bsd
1681ff7e0accSmrg		;;
1682ff7e0accSmrg	*-sgi)
16832163f7f8Smrg		os=irix
1684ff7e0accSmrg		;;
1685ff7e0accSmrg	*-siemens)
16862163f7f8Smrg		os=sysv4
1687ff7e0accSmrg		;;
1688ff7e0accSmrg	*-masscomp)
16892163f7f8Smrg		os=rtu
1690ff7e0accSmrg		;;
1691ff7e0accSmrg	f30[01]-fujitsu | f700-fujitsu)
16922163f7f8Smrg		os=uxpv
1693ff7e0accSmrg		;;
1694ff7e0accSmrg	*-rom68k)
16952163f7f8Smrg		os=coff
1696ff7e0accSmrg		;;
1697ff7e0accSmrg	*-*bug)
16982163f7f8Smrg		os=coff
1699ff7e0accSmrg		;;
1700ff7e0accSmrg	*-apple)
17012163f7f8Smrg		os=macos
1702ff7e0accSmrg		;;
1703ff7e0accSmrg	*-atari*)
17042163f7f8Smrg		os=mint
17052163f7f8Smrg		;;
17062163f7f8Smrg	*-wrs)
17072163f7f8Smrg		os=vxworks
1708ff7e0accSmrg		;;
1709ff7e0accSmrg	*)
17102163f7f8Smrg		os=none
1711ff7e0accSmrg		;;
1712ff7e0accSmrgesac
17132163f7f8Smrg
1714ff7e0accSmrgfi
1715ff7e0accSmrg
17162163f7f8Smrg# Now, validate our (potentially fixed-up) OS.
17172163f7f8Smrgcase $os in
17182163f7f8Smrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
17192163f7f8Smrg	musl* | newlib* | relibc* | uclibc*)
17202163f7f8Smrg		;;
17212163f7f8Smrg	# Likewise for "kernel-abi"
17222163f7f8Smrg	eabi* | gnueabi*)
17232163f7f8Smrg		;;
17242163f7f8Smrg	# VxWorks passes extra cpu info in the 4th filed.
17252163f7f8Smrg	simlinux | simwindows | spe)
17262163f7f8Smrg		;;
17272163f7f8Smrg	# Now accept the basic system types.
17282163f7f8Smrg	# The portable systems comes first.
17292163f7f8Smrg	# Each alternative MUST end in a * to match a version number.
17302163f7f8Smrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17312163f7f8Smrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17322163f7f8Smrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17332163f7f8Smrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17342163f7f8Smrg	     | hiux* | abug | nacl* | netware* | windows* \
17352163f7f8Smrg	     | os9* | macos* | osx* | ios* \
17362163f7f8Smrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17372163f7f8Smrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17382163f7f8Smrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17392163f7f8Smrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17402163f7f8Smrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17412163f7f8Smrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
17422163f7f8Smrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17432163f7f8Smrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
17442163f7f8Smrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
17452163f7f8Smrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
17462163f7f8Smrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
17472163f7f8Smrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
17482163f7f8Smrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
17492163f7f8Smrg	     | midipix* | mingw32* | mingw64* | mint* \
17502163f7f8Smrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17512163f7f8Smrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17522163f7f8Smrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
17532163f7f8Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
17542163f7f8Smrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17552163f7f8Smrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17562163f7f8Smrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17572163f7f8Smrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17582163f7f8Smrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17592163f7f8Smrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
17602163f7f8Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
17612163f7f8Smrg	     | fiwix* | mlibc* )
17622163f7f8Smrg		;;
17632163f7f8Smrg	# This one is extra strict with allowed versions
17642163f7f8Smrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17652163f7f8Smrg		# Don't forget version if it is 3.2v4 or newer.
17662163f7f8Smrg		;;
17672163f7f8Smrg	none)
17682163f7f8Smrg		;;
17692163f7f8Smrg	kernel* )
17702163f7f8Smrg		# Restricted further below
17712163f7f8Smrg		;;
17722163f7f8Smrg	*)
17732163f7f8Smrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
17742163f7f8Smrg		exit 1
17752163f7f8Smrg		;;
17762163f7f8Smrgesac
17772163f7f8Smrg
17782163f7f8Smrg# As a final step for OS-related things, validate the OS-kernel combination
17792163f7f8Smrg# (given a valid OS), if there is a kernel.
17802163f7f8Smrgcase $kernel-$os in
17812163f7f8Smrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
17822163f7f8Smrg		   | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* )
17832163f7f8Smrg		;;
17842163f7f8Smrg	uclinux-uclibc* )
17852163f7f8Smrg		;;
17862163f7f8Smrg	managarm-mlibc* | managarm-kernel* )
17872163f7f8Smrg		;;
17882163f7f8Smrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
17892163f7f8Smrg		# These are just libc implementations, not actual OSes, and thus
17902163f7f8Smrg		# require a kernel.
17912163f7f8Smrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
17922163f7f8Smrg		exit 1
17932163f7f8Smrg		;;
17942163f7f8Smrg	-kernel* )
17952163f7f8Smrg		echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2
17962163f7f8Smrg		exit 1
17972163f7f8Smrg		;;
17982163f7f8Smrg	*-kernel* )
17992163f7f8Smrg		echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2
18002163f7f8Smrg		exit 1
18012163f7f8Smrg		;;
18022163f7f8Smrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
18032163f7f8Smrg		;;
18042163f7f8Smrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
18052163f7f8Smrg		;;
18062163f7f8Smrg	nto-qnx*)
18072163f7f8Smrg		;;
18082163f7f8Smrg	os2-emx)
18092163f7f8Smrg		;;
18102163f7f8Smrg	*-eabi* | *-gnueabi*)
18112163f7f8Smrg		;;
18122163f7f8Smrg	-*)
18132163f7f8Smrg		# Blank kernel with real OS is always fine.
18142163f7f8Smrg		;;
18152163f7f8Smrg	*-*)
18162163f7f8Smrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
18172163f7f8Smrg		exit 1
18182163f7f8Smrg		;;
18192163f7f8Smrgesac
18202163f7f8Smrg
1821ff7e0accSmrg# Here we handle the case where we know the os, and the CPU type, but not the
1822ff7e0accSmrg# manufacturer.  We pick the logical manufacturer.
18232163f7f8Smrgcase $vendor in
18242163f7f8Smrg	unknown)
18252163f7f8Smrg		case $cpu-$os in
18262163f7f8Smrg			*-riscix*)
1827ff7e0accSmrg				vendor=acorn
1828ff7e0accSmrg				;;
18292163f7f8Smrg			*-sunos*)
1830ff7e0accSmrg				vendor=sun
1831ff7e0accSmrg				;;
18322163f7f8Smrg			*-cnk* | *-aix*)
1833ff7e0accSmrg				vendor=ibm
1834ff7e0accSmrg				;;
18352163f7f8Smrg			*-beos*)
1836ff7e0accSmrg				vendor=be
1837ff7e0accSmrg				;;
18382163f7f8Smrg			*-hpux*)
1839ff7e0accSmrg				vendor=hp
1840ff7e0accSmrg				;;
18412163f7f8Smrg			*-mpeix*)
1842ff7e0accSmrg				vendor=hp
1843ff7e0accSmrg				;;
18442163f7f8Smrg			*-hiux*)
1845ff7e0accSmrg				vendor=hitachi
1846ff7e0accSmrg				;;
18472163f7f8Smrg			*-unos*)
1848ff7e0accSmrg				vendor=crds
1849ff7e0accSmrg				;;
18502163f7f8Smrg			*-dgux*)
1851ff7e0accSmrg				vendor=dg
1852ff7e0accSmrg				;;
18532163f7f8Smrg			*-luna*)
1854ff7e0accSmrg				vendor=omron
1855ff7e0accSmrg				;;
18562163f7f8Smrg			*-genix*)
1857ff7e0accSmrg				vendor=ns
1858ff7e0accSmrg				;;
18592163f7f8Smrg			*-clix*)
18602163f7f8Smrg				vendor=intergraph
18612163f7f8Smrg				;;
18622163f7f8Smrg			*-mvs* | *-opened*)
18632163f7f8Smrg				vendor=ibm
18642163f7f8Smrg				;;
18652163f7f8Smrg			*-os400*)
1866ff7e0accSmrg				vendor=ibm
1867ff7e0accSmrg				;;
18682163f7f8Smrg			s390-* | s390x-*)
1869ff7e0accSmrg				vendor=ibm
1870ff7e0accSmrg				;;
18712163f7f8Smrg			*-ptx*)
1872ff7e0accSmrg				vendor=sequent
1873ff7e0accSmrg				;;
18742163f7f8Smrg			*-tpf*)
1875ff7e0accSmrg				vendor=ibm
1876ff7e0accSmrg				;;
18772163f7f8Smrg			*-vxsim* | *-vxworks* | *-windiss*)
1878ff7e0accSmrg				vendor=wrs
1879ff7e0accSmrg				;;
18802163f7f8Smrg			*-aux*)
1881ff7e0accSmrg				vendor=apple
1882ff7e0accSmrg				;;
18832163f7f8Smrg			*-hms*)
1884ff7e0accSmrg				vendor=hitachi
1885ff7e0accSmrg				;;
18862163f7f8Smrg			*-mpw* | *-macos*)
1887ff7e0accSmrg				vendor=apple
1888ff7e0accSmrg				;;
18892163f7f8Smrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1890ff7e0accSmrg				vendor=atari
1891ff7e0accSmrg				;;
18922163f7f8Smrg			*-vos*)
1893ff7e0accSmrg				vendor=stratus
1894ff7e0accSmrg				;;
1895ff7e0accSmrg		esac
1896ff7e0accSmrg		;;
1897ff7e0accSmrgesac
1898ff7e0accSmrg
18992163f7f8Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
1900ff7e0accSmrgexit
1901ff7e0accSmrg
1902ff7e0accSmrg# Local variables:
19032163f7f8Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
1904ff7e0accSmrg# time-stamp-start: "timestamp='"
1905ff7e0accSmrg# time-stamp-format: "%:y-%02m-%02d"
1906ff7e0accSmrg# time-stamp-end: "'"
1907ff7e0accSmrg# End:
1908