1a1d141d5Smrg#! /bin/sh
2a1d141d5Smrg# Configuration validation subroutine script.
33bee1c92Smrg#   Copyright 1992-2023 Free Software Foundation, Inc.
4a1d141d5Smrg
526df5c7cSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
626df5c7cSmrg
73bee1c92Smrgtimestamp='2023-01-21'
8a1d141d5Smrg
9054b3d00Smrg# This file is free software; you can redistribute it and/or modify it
10054b3d00Smrg# under the terms of the GNU General Public License as published by
113bee1c92Smrg# the Free Software Foundation, either version 3 of the License, or
12a1d141d5Smrg# (at your option) any later version.
13a1d141d5Smrg#
14054b3d00Smrg# This program is distributed in the hope that it will be useful, but
15054b3d00Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16054b3d00Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17054b3d00Smrg# General Public License for more details.
18a1d141d5Smrg#
19a1d141d5Smrg# You should have received a copy of the GNU General Public License
20054b3d00Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
212ddb6cf1Smrg#
22a1d141d5Smrg# As a special exception to the GNU General Public License, if you
23a1d141d5Smrg# distribute this file as part of a program that contains a
24a1d141d5Smrg# configuration script generated by Autoconf, you may include it under
25054b3d00Smrg# the same distribution terms that you use for the rest of that
26054b3d00Smrg# program.  This Exception is an additional permission under section 7
27054b3d00Smrg# of the GNU General Public License, version 3 ("GPLv3").
28a1d141d5Smrg
292ddb6cf1Smrg
30054b3d00Smrg# Please send patches to <config-patches@gnu.org>.
31a1d141d5Smrg#
32a1d141d5Smrg# Configuration subroutine to validate and canonicalize a configuration type.
33a1d141d5Smrg# Supply the specified configuration type as an argument.
34a1d141d5Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
35a1d141d5Smrg# Otherwise, we print the canonical config type on stdout and succeed.
36a1d141d5Smrg
372ddb6cf1Smrg# You can get the latest version of this script from:
3826df5c7cSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
392ddb6cf1Smrg
40a1d141d5Smrg# This file is supposed to be the same for all GNU packages
41a1d141d5Smrg# and recognize all the CPU types, system types and aliases
42a1d141d5Smrg# that are meaningful with *any* GNU software.
43a1d141d5Smrg# Each package is responsible for reporting which valid configurations
44a1d141d5Smrg# it does not support.  The user should be able to distinguish
45a1d141d5Smrg# a failure to support a valid configuration from a meaningless
46a1d141d5Smrg# configuration.
47a1d141d5Smrg
48a1d141d5Smrg# The goal of this file is to map all the various variations of a given
49a1d141d5Smrg# machine specification into a single specification in the form:
50a1d141d5Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51a1d141d5Smrg# or in some cases, the newer four-part form:
52a1d141d5Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53a1d141d5Smrg# It is wrong to echo any other type of specification.
54a1d141d5Smrg
5526df5c7cSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
5626df5c7cSmrg# about features and limitations of the classic Bourne shell that were
5726df5c7cSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
5826df5c7cSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
5926df5c7cSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
6026df5c7cSmrg# have a pre-POSIX /bin/sh.
6126df5c7cSmrg
62a1d141d5Smrgme=`echo "$0" | sed -e 's,.*/,,'`
63a1d141d5Smrg
64a1d141d5Smrgusage="\
65054b3d00SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66a1d141d5Smrg
67a1d141d5SmrgCanonicalize a configuration name.
68a1d141d5Smrg
69054b3d00SmrgOptions:
70a1d141d5Smrg  -h, --help         print this help, then exit
71a1d141d5Smrg  -t, --time-stamp   print date of last modification, then exit
72a1d141d5Smrg  -v, --version      print version number, then exit
73a1d141d5Smrg
74a1d141d5SmrgReport bugs and patches to <config-patches@gnu.org>."
75a1d141d5Smrg
76a1d141d5Smrgversion="\
77a1d141d5SmrgGNU config.sub ($timestamp)
78a1d141d5Smrg
793bee1c92SmrgCopyright 1992-2023 Free Software Foundation, Inc.
80a1d141d5Smrg
81a1d141d5SmrgThis is free software; see the source for copying conditions.  There is NO
82a1d141d5Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83a1d141d5Smrg
84a1d141d5Smrghelp="
85a1d141d5SmrgTry \`$me --help' for more information."
86a1d141d5Smrg
87a1d141d5Smrg# Parse command line
88a1d141d5Smrgwhile test $# -gt 0 ; do
89a1d141d5Smrg  case $1 in
90a1d141d5Smrg    --time-stamp | --time* | -t )
912ddb6cf1Smrg       echo "$timestamp" ; exit ;;
92a1d141d5Smrg    --version | -v )
932ddb6cf1Smrg       echo "$version" ; exit ;;
94a1d141d5Smrg    --help | --h* | -h )
952ddb6cf1Smrg       echo "$usage"; exit ;;
96a1d141d5Smrg    -- )     # Stop option processing
97a1d141d5Smrg       shift; break ;;
98a1d141d5Smrg    - )	# Use stdin as input.
99a1d141d5Smrg       break ;;
100a1d141d5Smrg    -* )
10126df5c7cSmrg       echo "$me: invalid option $1$help" >&2
102a1d141d5Smrg       exit 1 ;;
103a1d141d5Smrg
104a1d141d5Smrg    *local*)
105a1d141d5Smrg       # First pass through any local machine types.
106054b3d00Smrg       echo "$1"
1072ddb6cf1Smrg       exit ;;
108a1d141d5Smrg
109a1d141d5Smrg    * )
110a1d141d5Smrg       break ;;
111a1d141d5Smrg  esac
112a1d141d5Smrgdone
113a1d141d5Smrg
114a1d141d5Smrgcase $# in
115a1d141d5Smrg 0) echo "$me: missing argument$help" >&2
116a1d141d5Smrg    exit 1;;
117a1d141d5Smrg 1) ;;
118a1d141d5Smrg *) echo "$me: too many arguments$help" >&2
119a1d141d5Smrg    exit 1;;
120a1d141d5Smrgesac
121a1d141d5Smrg
12226df5c7cSmrg# Split fields of configuration type
12326df5c7cSmrg# shellcheck disable=SC2162
1243bee1c92Smrgsaved_IFS=$IFS
12526df5c7cSmrgIFS="-" read field1 field2 field3 field4 <<EOF
12626df5c7cSmrg$1
12726df5c7cSmrgEOF
1283bee1c92SmrgIFS=$saved_IFS
129a1d141d5Smrg
13026df5c7cSmrg# Separate into logical components for further validation
13126df5c7cSmrgcase $1 in
13226df5c7cSmrg	*-*-*-*-*)
13326df5c7cSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
13426df5c7cSmrg		exit 1
135a1d141d5Smrg		;;
13626df5c7cSmrg	*-*-*-*)
13726df5c7cSmrg		basic_machine=$field1-$field2
13826df5c7cSmrg		basic_os=$field3-$field4
139a1d141d5Smrg		;;
14026df5c7cSmrg	*-*-*)
14126df5c7cSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
14226df5c7cSmrg		# parts
14326df5c7cSmrg		maybe_os=$field2-$field3
14426df5c7cSmrg		case $maybe_os in
14526df5c7cSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
14626df5c7cSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
14726df5c7cSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
1483bee1c92Smrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
14926df5c7cSmrg				basic_machine=$field1
15026df5c7cSmrg				basic_os=$maybe_os
15126df5c7cSmrg				;;
15226df5c7cSmrg			android-linux)
15326df5c7cSmrg				basic_machine=$field1-unknown
15426df5c7cSmrg				basic_os=linux-android
15526df5c7cSmrg				;;
15626df5c7cSmrg			*)
15726df5c7cSmrg				basic_machine=$field1-$field2
15826df5c7cSmrg				basic_os=$field3
15926df5c7cSmrg				;;
16026df5c7cSmrg		esac
161a1d141d5Smrg		;;
16226df5c7cSmrg	*-*)
16326df5c7cSmrg		# A lone config we happen to match not fitting any pattern
16426df5c7cSmrg		case $field1-$field2 in
16526df5c7cSmrg			decstation-3100)
16626df5c7cSmrg				basic_machine=mips-dec
16726df5c7cSmrg				basic_os=
16826df5c7cSmrg				;;
16926df5c7cSmrg			*-*)
17026df5c7cSmrg				# Second component is usually, but not always the OS
17126df5c7cSmrg				case $field2 in
17226df5c7cSmrg					# Prevent following clause from handling this valid os
17326df5c7cSmrg					sun*os*)
17426df5c7cSmrg						basic_machine=$field1
17526df5c7cSmrg						basic_os=$field2
17626df5c7cSmrg						;;
1773bee1c92Smrg					zephyr*)
1783bee1c92Smrg						basic_machine=$field1-unknown
1793bee1c92Smrg						basic_os=$field2
1803bee1c92Smrg						;;
18126df5c7cSmrg					# Manufacturers
18226df5c7cSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
18326df5c7cSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
18426df5c7cSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
18526df5c7cSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
18626df5c7cSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
18726df5c7cSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
18826df5c7cSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
18926df5c7cSmrg					| microblaze* | sim | cisco \
19026df5c7cSmrg					| oki | wec | wrs | winbond)
19126df5c7cSmrg						basic_machine=$field1-$field2
19226df5c7cSmrg						basic_os=
19326df5c7cSmrg						;;
19426df5c7cSmrg					*)
19526df5c7cSmrg						basic_machine=$field1
19626df5c7cSmrg						basic_os=$field2
19726df5c7cSmrg						;;
19826df5c7cSmrg				esac
19926df5c7cSmrg			;;
20026df5c7cSmrg		esac
201a1d141d5Smrg		;;
20226df5c7cSmrg	*)
20326df5c7cSmrg		# Convert single-component short-hands not valid as part of
20426df5c7cSmrg		# multi-component configurations.
20526df5c7cSmrg		case $field1 in
20626df5c7cSmrg			386bsd)
20726df5c7cSmrg				basic_machine=i386-pc
20826df5c7cSmrg				basic_os=bsd
20926df5c7cSmrg				;;
21026df5c7cSmrg			a29khif)
21126df5c7cSmrg				basic_machine=a29k-amd
21226df5c7cSmrg				basic_os=udi
21326df5c7cSmrg				;;
21426df5c7cSmrg			adobe68k)
21526df5c7cSmrg				basic_machine=m68010-adobe
21626df5c7cSmrg				basic_os=scout
21726df5c7cSmrg				;;
21826df5c7cSmrg			alliant)
21926df5c7cSmrg				basic_machine=fx80-alliant
22026df5c7cSmrg				basic_os=
22126df5c7cSmrg				;;
22226df5c7cSmrg			altos | altos3068)
22326df5c7cSmrg				basic_machine=m68k-altos
22426df5c7cSmrg				basic_os=
22526df5c7cSmrg				;;
22626df5c7cSmrg			am29k)
22726df5c7cSmrg				basic_machine=a29k-none
22826df5c7cSmrg				basic_os=bsd
22926df5c7cSmrg				;;
23026df5c7cSmrg			amdahl)
23126df5c7cSmrg				basic_machine=580-amdahl
23226df5c7cSmrg				basic_os=sysv
23326df5c7cSmrg				;;
23426df5c7cSmrg			amiga)
23526df5c7cSmrg				basic_machine=m68k-unknown
23626df5c7cSmrg				basic_os=
23726df5c7cSmrg				;;
23826df5c7cSmrg			amigaos | amigados)
23926df5c7cSmrg				basic_machine=m68k-unknown
24026df5c7cSmrg				basic_os=amigaos
24126df5c7cSmrg				;;
24226df5c7cSmrg			amigaunix | amix)
24326df5c7cSmrg				basic_machine=m68k-unknown
24426df5c7cSmrg				basic_os=sysv4
24526df5c7cSmrg				;;
24626df5c7cSmrg			apollo68)
24726df5c7cSmrg				basic_machine=m68k-apollo
24826df5c7cSmrg				basic_os=sysv
24926df5c7cSmrg				;;
25026df5c7cSmrg			apollo68bsd)
25126df5c7cSmrg				basic_machine=m68k-apollo
25226df5c7cSmrg				basic_os=bsd
25326df5c7cSmrg				;;
25426df5c7cSmrg			aros)
25526df5c7cSmrg				basic_machine=i386-pc
25626df5c7cSmrg				basic_os=aros
25726df5c7cSmrg				;;
25826df5c7cSmrg			aux)
25926df5c7cSmrg				basic_machine=m68k-apple
26026df5c7cSmrg				basic_os=aux
26126df5c7cSmrg				;;
26226df5c7cSmrg			balance)
26326df5c7cSmrg				basic_machine=ns32k-sequent
26426df5c7cSmrg				basic_os=dynix
26526df5c7cSmrg				;;
26626df5c7cSmrg			blackfin)
26726df5c7cSmrg				basic_machine=bfin-unknown
26826df5c7cSmrg				basic_os=linux
26926df5c7cSmrg				;;
27026df5c7cSmrg			cegcc)
27126df5c7cSmrg				basic_machine=arm-unknown
27226df5c7cSmrg				basic_os=cegcc
27326df5c7cSmrg				;;
27426df5c7cSmrg			convex-c1)
27526df5c7cSmrg				basic_machine=c1-convex
27626df5c7cSmrg				basic_os=bsd
27726df5c7cSmrg				;;
27826df5c7cSmrg			convex-c2)
27926df5c7cSmrg				basic_machine=c2-convex
28026df5c7cSmrg				basic_os=bsd
28126df5c7cSmrg				;;
28226df5c7cSmrg			convex-c32)
28326df5c7cSmrg				basic_machine=c32-convex
28426df5c7cSmrg				basic_os=bsd
28526df5c7cSmrg				;;
28626df5c7cSmrg			convex-c34)
28726df5c7cSmrg				basic_machine=c34-convex
28826df5c7cSmrg				basic_os=bsd
28926df5c7cSmrg				;;
29026df5c7cSmrg			convex-c38)
29126df5c7cSmrg				basic_machine=c38-convex
29226df5c7cSmrg				basic_os=bsd
29326df5c7cSmrg				;;
29426df5c7cSmrg			cray)
29526df5c7cSmrg				basic_machine=j90-cray
29626df5c7cSmrg				basic_os=unicos
29726df5c7cSmrg				;;
29826df5c7cSmrg			crds | unos)
29926df5c7cSmrg				basic_machine=m68k-crds
30026df5c7cSmrg				basic_os=
30126df5c7cSmrg				;;
30226df5c7cSmrg			da30)
30326df5c7cSmrg				basic_machine=m68k-da30
30426df5c7cSmrg				basic_os=
30526df5c7cSmrg				;;
30626df5c7cSmrg			decstation | pmax | pmin | dec3100 | decstatn)
30726df5c7cSmrg				basic_machine=mips-dec
30826df5c7cSmrg				basic_os=
30926df5c7cSmrg				;;
31026df5c7cSmrg			delta88)
31126df5c7cSmrg				basic_machine=m88k-motorola
31226df5c7cSmrg				basic_os=sysv3
31326df5c7cSmrg				;;
31426df5c7cSmrg			dicos)
31526df5c7cSmrg				basic_machine=i686-pc
31626df5c7cSmrg				basic_os=dicos
31726df5c7cSmrg				;;
31826df5c7cSmrg			djgpp)
31926df5c7cSmrg				basic_machine=i586-pc
32026df5c7cSmrg				basic_os=msdosdjgpp
32126df5c7cSmrg				;;
32226df5c7cSmrg			ebmon29k)
32326df5c7cSmrg				basic_machine=a29k-amd
32426df5c7cSmrg				basic_os=ebmon
32526df5c7cSmrg				;;
32626df5c7cSmrg			es1800 | OSE68k | ose68k | ose | OSE)
32726df5c7cSmrg				basic_machine=m68k-ericsson
32826df5c7cSmrg				basic_os=ose
32926df5c7cSmrg				;;
33026df5c7cSmrg			gmicro)
33126df5c7cSmrg				basic_machine=tron-gmicro
33226df5c7cSmrg				basic_os=sysv
33326df5c7cSmrg				;;
33426df5c7cSmrg			go32)
33526df5c7cSmrg				basic_machine=i386-pc
33626df5c7cSmrg				basic_os=go32
33726df5c7cSmrg				;;
33826df5c7cSmrg			h8300hms)
33926df5c7cSmrg				basic_machine=h8300-hitachi
34026df5c7cSmrg				basic_os=hms
34126df5c7cSmrg				;;
34226df5c7cSmrg			h8300xray)
34326df5c7cSmrg				basic_machine=h8300-hitachi
34426df5c7cSmrg				basic_os=xray
34526df5c7cSmrg				;;
34626df5c7cSmrg			h8500hms)
34726df5c7cSmrg				basic_machine=h8500-hitachi
34826df5c7cSmrg				basic_os=hms
34926df5c7cSmrg				;;
35026df5c7cSmrg			harris)
35126df5c7cSmrg				basic_machine=m88k-harris
35226df5c7cSmrg				basic_os=sysv3
35326df5c7cSmrg				;;
35426df5c7cSmrg			hp300 | hp300hpux)
35526df5c7cSmrg				basic_machine=m68k-hp
35626df5c7cSmrg				basic_os=hpux
35726df5c7cSmrg				;;
35826df5c7cSmrg			hp300bsd)
35926df5c7cSmrg				basic_machine=m68k-hp
36026df5c7cSmrg				basic_os=bsd
36126df5c7cSmrg				;;
36226df5c7cSmrg			hppaosf)
36326df5c7cSmrg				basic_machine=hppa1.1-hp
36426df5c7cSmrg				basic_os=osf
36526df5c7cSmrg				;;
36626df5c7cSmrg			hppro)
36726df5c7cSmrg				basic_machine=hppa1.1-hp
36826df5c7cSmrg				basic_os=proelf
36926df5c7cSmrg				;;
37026df5c7cSmrg			i386mach)
37126df5c7cSmrg				basic_machine=i386-mach
37226df5c7cSmrg				basic_os=mach
37326df5c7cSmrg				;;
37426df5c7cSmrg			isi68 | isi)
37526df5c7cSmrg				basic_machine=m68k-isi
37626df5c7cSmrg				basic_os=sysv
37726df5c7cSmrg				;;
37826df5c7cSmrg			m68knommu)
37926df5c7cSmrg				basic_machine=m68k-unknown
38026df5c7cSmrg				basic_os=linux
38126df5c7cSmrg				;;
38226df5c7cSmrg			magnum | m3230)
38326df5c7cSmrg				basic_machine=mips-mips
38426df5c7cSmrg				basic_os=sysv
38526df5c7cSmrg				;;
38626df5c7cSmrg			merlin)
38726df5c7cSmrg				basic_machine=ns32k-utek
38826df5c7cSmrg				basic_os=sysv
38926df5c7cSmrg				;;
39026df5c7cSmrg			mingw64)
39126df5c7cSmrg				basic_machine=x86_64-pc
39226df5c7cSmrg				basic_os=mingw64
39326df5c7cSmrg				;;
39426df5c7cSmrg			mingw32)
39526df5c7cSmrg				basic_machine=i686-pc
39626df5c7cSmrg				basic_os=mingw32
39726df5c7cSmrg				;;
39826df5c7cSmrg			mingw32ce)
39926df5c7cSmrg				basic_machine=arm-unknown
40026df5c7cSmrg				basic_os=mingw32ce
40126df5c7cSmrg				;;
40226df5c7cSmrg			monitor)
40326df5c7cSmrg				basic_machine=m68k-rom68k
40426df5c7cSmrg				basic_os=coff
40526df5c7cSmrg				;;
40626df5c7cSmrg			morphos)
40726df5c7cSmrg				basic_machine=powerpc-unknown
40826df5c7cSmrg				basic_os=morphos
40926df5c7cSmrg				;;
41026df5c7cSmrg			moxiebox)
41126df5c7cSmrg				basic_machine=moxie-unknown
41226df5c7cSmrg				basic_os=moxiebox
41326df5c7cSmrg				;;
41426df5c7cSmrg			msdos)
41526df5c7cSmrg				basic_machine=i386-pc
41626df5c7cSmrg				basic_os=msdos
41726df5c7cSmrg				;;
41826df5c7cSmrg			msys)
41926df5c7cSmrg				basic_machine=i686-pc
42026df5c7cSmrg				basic_os=msys
42126df5c7cSmrg				;;
42226df5c7cSmrg			mvs)
42326df5c7cSmrg				basic_machine=i370-ibm
42426df5c7cSmrg				basic_os=mvs
42526df5c7cSmrg				;;
42626df5c7cSmrg			nacl)
42726df5c7cSmrg				basic_machine=le32-unknown
42826df5c7cSmrg				basic_os=nacl
42926df5c7cSmrg				;;
43026df5c7cSmrg			ncr3000)
43126df5c7cSmrg				basic_machine=i486-ncr
43226df5c7cSmrg				basic_os=sysv4
43326df5c7cSmrg				;;
43426df5c7cSmrg			netbsd386)
43526df5c7cSmrg				basic_machine=i386-pc
43626df5c7cSmrg				basic_os=netbsd
43726df5c7cSmrg				;;
43826df5c7cSmrg			netwinder)
43926df5c7cSmrg				basic_machine=armv4l-rebel
44026df5c7cSmrg				basic_os=linux
44126df5c7cSmrg				;;
44226df5c7cSmrg			news | news700 | news800 | news900)
44326df5c7cSmrg				basic_machine=m68k-sony
44426df5c7cSmrg				basic_os=newsos
44526df5c7cSmrg				;;
44626df5c7cSmrg			news1000)
44726df5c7cSmrg				basic_machine=m68030-sony
44826df5c7cSmrg				basic_os=newsos
44926df5c7cSmrg				;;
45026df5c7cSmrg			necv70)
45126df5c7cSmrg				basic_machine=v70-nec
45226df5c7cSmrg				basic_os=sysv
45326df5c7cSmrg				;;
45426df5c7cSmrg			nh3000)
45526df5c7cSmrg				basic_machine=m68k-harris
45626df5c7cSmrg				basic_os=cxux
45726df5c7cSmrg				;;
45826df5c7cSmrg			nh[45]000)
45926df5c7cSmrg				basic_machine=m88k-harris
46026df5c7cSmrg				basic_os=cxux
46126df5c7cSmrg				;;
46226df5c7cSmrg			nindy960)
46326df5c7cSmrg				basic_machine=i960-intel
46426df5c7cSmrg				basic_os=nindy
46526df5c7cSmrg				;;
46626df5c7cSmrg			mon960)
46726df5c7cSmrg				basic_machine=i960-intel
46826df5c7cSmrg				basic_os=mon960
46926df5c7cSmrg				;;
47026df5c7cSmrg			nonstopux)
47126df5c7cSmrg				basic_machine=mips-compaq
47226df5c7cSmrg				basic_os=nonstopux
47326df5c7cSmrg				;;
47426df5c7cSmrg			os400)
47526df5c7cSmrg				basic_machine=powerpc-ibm
47626df5c7cSmrg				basic_os=os400
47726df5c7cSmrg				;;
47826df5c7cSmrg			OSE68000 | ose68000)
47926df5c7cSmrg				basic_machine=m68000-ericsson
48026df5c7cSmrg				basic_os=ose
48126df5c7cSmrg				;;
48226df5c7cSmrg			os68k)
48326df5c7cSmrg				basic_machine=m68k-none
48426df5c7cSmrg				basic_os=os68k
48526df5c7cSmrg				;;
48626df5c7cSmrg			paragon)
48726df5c7cSmrg				basic_machine=i860-intel
48826df5c7cSmrg				basic_os=osf
48926df5c7cSmrg				;;
49026df5c7cSmrg			parisc)
49126df5c7cSmrg				basic_machine=hppa-unknown
49226df5c7cSmrg				basic_os=linux
49326df5c7cSmrg				;;
49426df5c7cSmrg			psp)
49526df5c7cSmrg				basic_machine=mipsallegrexel-sony
49626df5c7cSmrg				basic_os=psp
49726df5c7cSmrg				;;
49826df5c7cSmrg			pw32)
49926df5c7cSmrg				basic_machine=i586-unknown
50026df5c7cSmrg				basic_os=pw32
50126df5c7cSmrg				;;
50226df5c7cSmrg			rdos | rdos64)
50326df5c7cSmrg				basic_machine=x86_64-pc
50426df5c7cSmrg				basic_os=rdos
50526df5c7cSmrg				;;
50626df5c7cSmrg			rdos32)
50726df5c7cSmrg				basic_machine=i386-pc
50826df5c7cSmrg				basic_os=rdos
50926df5c7cSmrg				;;
51026df5c7cSmrg			rom68k)
51126df5c7cSmrg				basic_machine=m68k-rom68k
51226df5c7cSmrg				basic_os=coff
51326df5c7cSmrg				;;
51426df5c7cSmrg			sa29200)
51526df5c7cSmrg				basic_machine=a29k-amd
51626df5c7cSmrg				basic_os=udi
51726df5c7cSmrg				;;
51826df5c7cSmrg			sei)
51926df5c7cSmrg				basic_machine=mips-sei
52026df5c7cSmrg				basic_os=seiux
52126df5c7cSmrg				;;
52226df5c7cSmrg			sequent)
52326df5c7cSmrg				basic_machine=i386-sequent
52426df5c7cSmrg				basic_os=
52526df5c7cSmrg				;;
52626df5c7cSmrg			sps7)
52726df5c7cSmrg				basic_machine=m68k-bull
52826df5c7cSmrg				basic_os=sysv2
52926df5c7cSmrg				;;
53026df5c7cSmrg			st2000)
53126df5c7cSmrg				basic_machine=m68k-tandem
53226df5c7cSmrg				basic_os=
53326df5c7cSmrg				;;
53426df5c7cSmrg			stratus)
53526df5c7cSmrg				basic_machine=i860-stratus
53626df5c7cSmrg				basic_os=sysv4
53726df5c7cSmrg				;;
53826df5c7cSmrg			sun2)
53926df5c7cSmrg				basic_machine=m68000-sun
54026df5c7cSmrg				basic_os=
54126df5c7cSmrg				;;
54226df5c7cSmrg			sun2os3)
54326df5c7cSmrg				basic_machine=m68000-sun
54426df5c7cSmrg				basic_os=sunos3
54526df5c7cSmrg				;;
54626df5c7cSmrg			sun2os4)
54726df5c7cSmrg				basic_machine=m68000-sun
54826df5c7cSmrg				basic_os=sunos4
54926df5c7cSmrg				;;
55026df5c7cSmrg			sun3)
55126df5c7cSmrg				basic_machine=m68k-sun
55226df5c7cSmrg				basic_os=
55326df5c7cSmrg				;;
55426df5c7cSmrg			sun3os3)
55526df5c7cSmrg				basic_machine=m68k-sun
55626df5c7cSmrg				basic_os=sunos3
55726df5c7cSmrg				;;
55826df5c7cSmrg			sun3os4)
55926df5c7cSmrg				basic_machine=m68k-sun
56026df5c7cSmrg				basic_os=sunos4
56126df5c7cSmrg				;;
56226df5c7cSmrg			sun4)
56326df5c7cSmrg				basic_machine=sparc-sun
56426df5c7cSmrg				basic_os=
56526df5c7cSmrg				;;
56626df5c7cSmrg			sun4os3)
56726df5c7cSmrg				basic_machine=sparc-sun
56826df5c7cSmrg				basic_os=sunos3
56926df5c7cSmrg				;;
57026df5c7cSmrg			sun4os4)
57126df5c7cSmrg				basic_machine=sparc-sun
57226df5c7cSmrg				basic_os=sunos4
57326df5c7cSmrg				;;
57426df5c7cSmrg			sun4sol2)
57526df5c7cSmrg				basic_machine=sparc-sun
57626df5c7cSmrg				basic_os=solaris2
57726df5c7cSmrg				;;
57826df5c7cSmrg			sun386 | sun386i | roadrunner)
57926df5c7cSmrg				basic_machine=i386-sun
58026df5c7cSmrg				basic_os=
58126df5c7cSmrg				;;
58226df5c7cSmrg			sv1)
58326df5c7cSmrg				basic_machine=sv1-cray
58426df5c7cSmrg				basic_os=unicos
58526df5c7cSmrg				;;
58626df5c7cSmrg			symmetry)
58726df5c7cSmrg				basic_machine=i386-sequent
58826df5c7cSmrg				basic_os=dynix
58926df5c7cSmrg				;;
59026df5c7cSmrg			t3e)
59126df5c7cSmrg				basic_machine=alphaev5-cray
59226df5c7cSmrg				basic_os=unicos
59326df5c7cSmrg				;;
59426df5c7cSmrg			t90)
59526df5c7cSmrg				basic_machine=t90-cray
59626df5c7cSmrg				basic_os=unicos
59726df5c7cSmrg				;;
59826df5c7cSmrg			toad1)
59926df5c7cSmrg				basic_machine=pdp10-xkl
60026df5c7cSmrg				basic_os=tops20
60126df5c7cSmrg				;;
60226df5c7cSmrg			tpf)
60326df5c7cSmrg				basic_machine=s390x-ibm
60426df5c7cSmrg				basic_os=tpf
60526df5c7cSmrg				;;
60626df5c7cSmrg			udi29k)
60726df5c7cSmrg				basic_machine=a29k-amd
60826df5c7cSmrg				basic_os=udi
60926df5c7cSmrg				;;
61026df5c7cSmrg			ultra3)
61126df5c7cSmrg				basic_machine=a29k-nyu
61226df5c7cSmrg				basic_os=sym1
61326df5c7cSmrg				;;
61426df5c7cSmrg			v810 | necv810)
61526df5c7cSmrg				basic_machine=v810-nec
61626df5c7cSmrg				basic_os=none
61726df5c7cSmrg				;;
61826df5c7cSmrg			vaxv)
61926df5c7cSmrg				basic_machine=vax-dec
62026df5c7cSmrg				basic_os=sysv
62126df5c7cSmrg				;;
62226df5c7cSmrg			vms)
62326df5c7cSmrg				basic_machine=vax-dec
62426df5c7cSmrg				basic_os=vms
62526df5c7cSmrg				;;
62626df5c7cSmrg			vsta)
62726df5c7cSmrg				basic_machine=i386-pc
62826df5c7cSmrg				basic_os=vsta
62926df5c7cSmrg				;;
63026df5c7cSmrg			vxworks960)
63126df5c7cSmrg				basic_machine=i960-wrs
63226df5c7cSmrg				basic_os=vxworks
63326df5c7cSmrg				;;
63426df5c7cSmrg			vxworks68)
63526df5c7cSmrg				basic_machine=m68k-wrs
63626df5c7cSmrg				basic_os=vxworks
63726df5c7cSmrg				;;
63826df5c7cSmrg			vxworks29k)
63926df5c7cSmrg				basic_machine=a29k-wrs
64026df5c7cSmrg				basic_os=vxworks
64126df5c7cSmrg				;;
64226df5c7cSmrg			xbox)
64326df5c7cSmrg				basic_machine=i686-pc
64426df5c7cSmrg				basic_os=mingw32
64526df5c7cSmrg				;;
64626df5c7cSmrg			ymp)
64726df5c7cSmrg				basic_machine=ymp-cray
64826df5c7cSmrg				basic_os=unicos
64926df5c7cSmrg				;;
65026df5c7cSmrg			*)
65126df5c7cSmrg				basic_machine=$1
65226df5c7cSmrg				basic_os=
65326df5c7cSmrg				;;
65426df5c7cSmrg		esac
655a1d141d5Smrg		;;
656a1d141d5Smrgesac
657a1d141d5Smrg
65826df5c7cSmrg# Decode 1-component or ad-hoc basic machines
659a1d141d5Smrgcase $basic_machine in
66026df5c7cSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
66126df5c7cSmrg	# some cases the only manufacturer, in others, it is the most popular.
66226df5c7cSmrg	w89k)
66326df5c7cSmrg		cpu=hppa1.1
66426df5c7cSmrg		vendor=winbond
665054b3d00Smrg		;;
66626df5c7cSmrg	op50n)
66726df5c7cSmrg		cpu=hppa1.1
66826df5c7cSmrg		vendor=oki
669a1d141d5Smrg		;;
67026df5c7cSmrg	op60c)
67126df5c7cSmrg		cpu=hppa1.1
67226df5c7cSmrg		vendor=oki
673a1d141d5Smrg		;;
67426df5c7cSmrg	ibm*)
67526df5c7cSmrg		cpu=i370
67626df5c7cSmrg		vendor=ibm
6772ddb6cf1Smrg		;;
67826df5c7cSmrg	orion105)
67926df5c7cSmrg		cpu=clipper
68026df5c7cSmrg		vendor=highlevel
681054b3d00Smrg		;;
68226df5c7cSmrg	mac | mpw | mac-mpw)
68326df5c7cSmrg		cpu=m68k
68426df5c7cSmrg		vendor=apple
685054b3d00Smrg		;;
68626df5c7cSmrg	pmac | pmac-mpw)
68726df5c7cSmrg		cpu=powerpc
68826df5c7cSmrg		vendor=apple
689054b3d00Smrg		;;
690054b3d00Smrg
691a1d141d5Smrg	# Recognize the various machine names and aliases which stand
692a1d141d5Smrg	# for a CPU type and a company and sometimes even an OS.
693a1d141d5Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
69426df5c7cSmrg		cpu=m68000
69526df5c7cSmrg		vendor=att
696a1d141d5Smrg		;;
697a1d141d5Smrg	3b*)
69826df5c7cSmrg		cpu=we32k
69926df5c7cSmrg		vendor=att
7002ddb6cf1Smrg		;;
7012ddb6cf1Smrg	bluegene*)
70226df5c7cSmrg		cpu=powerpc
70326df5c7cSmrg		vendor=ibm
70426df5c7cSmrg		basic_os=cnk
705a1d141d5Smrg		;;
706a1d141d5Smrg	decsystem10* | dec10*)
70726df5c7cSmrg		cpu=pdp10
70826df5c7cSmrg		vendor=dec
70926df5c7cSmrg		basic_os=tops10
710a1d141d5Smrg		;;
711a1d141d5Smrg	decsystem20* | dec20*)
71226df5c7cSmrg		cpu=pdp10
71326df5c7cSmrg		vendor=dec
71426df5c7cSmrg		basic_os=tops20
715a1d141d5Smrg		;;
716a1d141d5Smrg	delta | 3300 | motorola-3300 | motorola-delta \
717a1d141d5Smrg	      | 3300-motorola | delta-motorola)
71826df5c7cSmrg		cpu=m68k
71926df5c7cSmrg		vendor=motorola
720a1d141d5Smrg		;;
721054b3d00Smrg	dpx2*)
72226df5c7cSmrg		cpu=m68k
72326df5c7cSmrg		vendor=bull
72426df5c7cSmrg		basic_os=sysv3
725a1d141d5Smrg		;;
726a1d141d5Smrg	encore | umax | mmax)
72726df5c7cSmrg		cpu=ns32k
72826df5c7cSmrg		vendor=encore
729a1d141d5Smrg		;;
73026df5c7cSmrg	elxsi)
73126df5c7cSmrg		cpu=elxsi
73226df5c7cSmrg		vendor=elxsi
73326df5c7cSmrg		basic_os=${basic_os:-bsd}
734a1d141d5Smrg		;;
735a1d141d5Smrg	fx2800)
73626df5c7cSmrg		cpu=i860
73726df5c7cSmrg		vendor=alliant
738a1d141d5Smrg		;;
739a1d141d5Smrg	genix)
74026df5c7cSmrg		cpu=ns32k
74126df5c7cSmrg		vendor=ns
742a1d141d5Smrg		;;
743a1d141d5Smrg	h3050r* | hiux*)
74426df5c7cSmrg		cpu=hppa1.1
74526df5c7cSmrg		vendor=hitachi
74626df5c7cSmrg		basic_os=hiuxwe2
747a1d141d5Smrg		;;
748a1d141d5Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
74926df5c7cSmrg		cpu=hppa1.0
75026df5c7cSmrg		vendor=hp
751a1d141d5Smrg		;;
752a1d141d5Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
75326df5c7cSmrg		cpu=m68000
75426df5c7cSmrg		vendor=hp
755a1d141d5Smrg		;;
756a1d141d5Smrg	hp9k3[2-9][0-9])
75726df5c7cSmrg		cpu=m68k
75826df5c7cSmrg		vendor=hp
759a1d141d5Smrg		;;
760a1d141d5Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
76126df5c7cSmrg		cpu=hppa1.0
76226df5c7cSmrg		vendor=hp
763a1d141d5Smrg		;;
764a1d141d5Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
76526df5c7cSmrg		cpu=hppa1.1
76626df5c7cSmrg		vendor=hp
767a1d141d5Smrg		;;
768a1d141d5Smrg	hp9k78[0-9] | hp78[0-9])
769a1d141d5Smrg		# FIXME: really hppa2.0-hp
77026df5c7cSmrg		cpu=hppa1.1
77126df5c7cSmrg		vendor=hp
772a1d141d5Smrg		;;
773a1d141d5Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
774a1d141d5Smrg		# FIXME: really hppa2.0-hp
77526df5c7cSmrg		cpu=hppa1.1
77626df5c7cSmrg		vendor=hp
777a1d141d5Smrg		;;
778a1d141d5Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
77926df5c7cSmrg		cpu=hppa1.1
78026df5c7cSmrg		vendor=hp
781a1d141d5Smrg		;;
782a1d141d5Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
78326df5c7cSmrg		cpu=hppa1.0
78426df5c7cSmrg		vendor=hp
785a1d141d5Smrg		;;
786a1d141d5Smrg	i*86v32)
78726df5c7cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
78826df5c7cSmrg		vendor=pc
78926df5c7cSmrg		basic_os=sysv32
790a1d141d5Smrg		;;
791a1d141d5Smrg	i*86v4*)
79226df5c7cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79326df5c7cSmrg		vendor=pc
79426df5c7cSmrg		basic_os=sysv4
795a1d141d5Smrg		;;
796a1d141d5Smrg	i*86v)
79726df5c7cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79826df5c7cSmrg		vendor=pc
79926df5c7cSmrg		basic_os=sysv
800a1d141d5Smrg		;;
801a1d141d5Smrg	i*86sol2)
80226df5c7cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
80326df5c7cSmrg		vendor=pc
80426df5c7cSmrg		basic_os=solaris2
805a1d141d5Smrg		;;
80626df5c7cSmrg	j90 | j90-cray)
80726df5c7cSmrg		cpu=j90
80826df5c7cSmrg		vendor=cray
80926df5c7cSmrg		basic_os=${basic_os:-unicos}
810a1d141d5Smrg		;;
811a1d141d5Smrg	iris | iris4d)
81226df5c7cSmrg		cpu=mips
81326df5c7cSmrg		vendor=sgi
81426df5c7cSmrg		case $basic_os in
81526df5c7cSmrg		    irix*)
816a1d141d5Smrg			;;
817a1d141d5Smrg		    *)
81826df5c7cSmrg			basic_os=irix4
819a1d141d5Smrg			;;
820a1d141d5Smrg		esac
821a1d141d5Smrg		;;
822a1d141d5Smrg	miniframe)
82326df5c7cSmrg		cpu=m68000
82426df5c7cSmrg		vendor=convergent
825a1d141d5Smrg		;;
82626df5c7cSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
82726df5c7cSmrg		cpu=m68k
82826df5c7cSmrg		vendor=atari
82926df5c7cSmrg		basic_os=mint
830a1d141d5Smrg		;;
831a1d141d5Smrg	news-3600 | risc-news)
83226df5c7cSmrg		cpu=mips
83326df5c7cSmrg		vendor=sony
83426df5c7cSmrg		basic_os=newsos
835a1d141d5Smrg		;;
836054b3d00Smrg	next | m*-next)
83726df5c7cSmrg		cpu=m68k
83826df5c7cSmrg		vendor=next
83926df5c7cSmrg		case $basic_os in
84026df5c7cSmrg		    openstep*)
84126df5c7cSmrg		        ;;
84226df5c7cSmrg		    nextstep*)
843a1d141d5Smrg			;;
84426df5c7cSmrg		    ns2*)
84526df5c7cSmrg		      basic_os=nextstep2
846a1d141d5Smrg			;;
847a1d141d5Smrg		    *)
84826df5c7cSmrg		      basic_os=nextstep3
849a1d141d5Smrg			;;
850a1d141d5Smrg		esac
851a1d141d5Smrg		;;
852a1d141d5Smrg	np1)
85326df5c7cSmrg		cpu=np1
85426df5c7cSmrg		vendor=gould
855054b3d00Smrg		;;
856a1d141d5Smrg	op50n-* | op60c-*)
85726df5c7cSmrg		cpu=hppa1.1
85826df5c7cSmrg		vendor=oki
85926df5c7cSmrg		basic_os=proelf
860a1d141d5Smrg		;;
861a1d141d5Smrg	pa-hitachi)
86226df5c7cSmrg		cpu=hppa1.1
86326df5c7cSmrg		vendor=hitachi
86426df5c7cSmrg		basic_os=hiuxwe2
8652ddb6cf1Smrg		;;
866a1d141d5Smrg	pbd)
86726df5c7cSmrg		cpu=sparc
86826df5c7cSmrg		vendor=tti
869a1d141d5Smrg		;;
870a1d141d5Smrg	pbb)
87126df5c7cSmrg		cpu=m68k
87226df5c7cSmrg		vendor=tti
8732ddb6cf1Smrg		;;
87426df5c7cSmrg	pc532)
87526df5c7cSmrg		cpu=ns32k
87626df5c7cSmrg		vendor=pc532
877a1d141d5Smrg		;;
878a1d141d5Smrg	pn)
87926df5c7cSmrg		cpu=pn
88026df5c7cSmrg		vendor=gould
881a1d141d5Smrg		;;
88226df5c7cSmrg	power)
88326df5c7cSmrg		cpu=power
88426df5c7cSmrg		vendor=ibm
885a1d141d5Smrg		;;
88626df5c7cSmrg	ps2)
88726df5c7cSmrg		cpu=i386
88826df5c7cSmrg		vendor=ibm
889a1d141d5Smrg		;;
89026df5c7cSmrg	rm[46]00)
89126df5c7cSmrg		cpu=mips
89226df5c7cSmrg		vendor=siemens
893a1d141d5Smrg		;;
89426df5c7cSmrg	rtpc | rtpc-*)
89526df5c7cSmrg		cpu=romp
89626df5c7cSmrg		vendor=ibm
897a1d141d5Smrg		;;
89826df5c7cSmrg	sde)
89926df5c7cSmrg		cpu=mipsisa32
90026df5c7cSmrg		vendor=sde
90126df5c7cSmrg		basic_os=${basic_os:-elf}
902a1d141d5Smrg		;;
90326df5c7cSmrg	simso-wrs)
90426df5c7cSmrg		cpu=sparclite
90526df5c7cSmrg		vendor=wrs
90626df5c7cSmrg		basic_os=vxworks
907a1d141d5Smrg		;;
90826df5c7cSmrg	tower | tower-32)
90926df5c7cSmrg		cpu=m68k
91026df5c7cSmrg		vendor=ncr
911a1d141d5Smrg		;;
91226df5c7cSmrg	vpp*|vx|vx-*)
91326df5c7cSmrg		cpu=f301
91426df5c7cSmrg		vendor=fujitsu
915054b3d00Smrg		;;
91626df5c7cSmrg	w65)
91726df5c7cSmrg		cpu=w65
91826df5c7cSmrg		vendor=wdc
9192ddb6cf1Smrg		;;
92026df5c7cSmrg	w89k-*)
92126df5c7cSmrg		cpu=hppa1.1
92226df5c7cSmrg		vendor=winbond
92326df5c7cSmrg		basic_os=proelf
924a1d141d5Smrg		;;
92526df5c7cSmrg	none)
92626df5c7cSmrg		cpu=none
92726df5c7cSmrg		vendor=none
928a1d141d5Smrg		;;
92926df5c7cSmrg	leon|leon[3-9])
93026df5c7cSmrg		cpu=sparc
93126df5c7cSmrg		vendor=$basic_machine
932a1d141d5Smrg		;;
93326df5c7cSmrg	leon-*|leon[3-9]-*)
93426df5c7cSmrg		cpu=sparc
93526df5c7cSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9362ddb6cf1Smrg		;;
93726df5c7cSmrg
93826df5c7cSmrg	*-*)
93926df5c7cSmrg		# shellcheck disable=SC2162
9403bee1c92Smrg		saved_IFS=$IFS
94126df5c7cSmrg		IFS="-" read cpu vendor <<EOF
94226df5c7cSmrg$basic_machine
94326df5c7cSmrgEOF
9443bee1c92Smrg		IFS=$saved_IFS
9452ddb6cf1Smrg		;;
94626df5c7cSmrg	# We use `pc' rather than `unknown'
94726df5c7cSmrg	# because (1) that's what they normally are, and
94826df5c7cSmrg	# (2) the word "unknown" tends to confuse beginning users.
94926df5c7cSmrg	i*86 | x86_64)
95026df5c7cSmrg		cpu=$basic_machine
95126df5c7cSmrg		vendor=pc
952a1d141d5Smrg		;;
95326df5c7cSmrg	# These rules are duplicated from below for sake of the special case above;
95426df5c7cSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
95526df5c7cSmrg	pc98)
95626df5c7cSmrg		cpu=i386
95726df5c7cSmrg		vendor=pc
958a1d141d5Smrg		;;
95926df5c7cSmrg	x64 | amd64)
96026df5c7cSmrg		cpu=x86_64
96126df5c7cSmrg		vendor=pc
962a1d141d5Smrg		;;
96326df5c7cSmrg	# Recognize the basic CPU types without company name.
96426df5c7cSmrg	*)
96526df5c7cSmrg		cpu=$basic_machine
96626df5c7cSmrg		vendor=unknown
9672ddb6cf1Smrg		;;
96826df5c7cSmrgesac
96926df5c7cSmrg
97026df5c7cSmrgunset -v basic_machine
97126df5c7cSmrg
97226df5c7cSmrg# Decode basic machines in the full and proper CPU-Company form.
97326df5c7cSmrgcase $cpu-$vendor in
97426df5c7cSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
97526df5c7cSmrg	# some cases the only manufacturer, in others, it is the most popular.
97626df5c7cSmrg	craynv-unknown)
97726df5c7cSmrg		vendor=cray
97826df5c7cSmrg		basic_os=${basic_os:-unicosmp}
979a1d141d5Smrg		;;
98026df5c7cSmrg	c90-unknown | c90-cray)
98126df5c7cSmrg		vendor=cray
98226df5c7cSmrg		basic_os=${Basic_os:-unicos}
983a1d141d5Smrg		;;
98426df5c7cSmrg	fx80-unknown)
98526df5c7cSmrg		vendor=alliant
9862ddb6cf1Smrg		;;
98726df5c7cSmrg	romp-unknown)
98826df5c7cSmrg		vendor=ibm
989a1d141d5Smrg		;;
99026df5c7cSmrg	mmix-unknown)
99126df5c7cSmrg		vendor=knuth
992a1d141d5Smrg		;;
99326df5c7cSmrg	microblaze-unknown | microblazeel-unknown)
99426df5c7cSmrg		vendor=xilinx
995a1d141d5Smrg		;;
99626df5c7cSmrg	rs6000-unknown)
99726df5c7cSmrg		vendor=ibm
998a1d141d5Smrg		;;
99926df5c7cSmrg	vax-unknown)
100026df5c7cSmrg		vendor=dec
1001a1d141d5Smrg		;;
100226df5c7cSmrg	pdp11-unknown)
100326df5c7cSmrg		vendor=dec
1004054b3d00Smrg		;;
100526df5c7cSmrg	we32k-unknown)
100626df5c7cSmrg		vendor=att
1007a1d141d5Smrg		;;
100826df5c7cSmrg	cydra-unknown)
100926df5c7cSmrg		vendor=cydrome
1010a1d141d5Smrg		;;
101126df5c7cSmrg	i370-ibm*)
101226df5c7cSmrg		vendor=ibm
1013a1d141d5Smrg		;;
101426df5c7cSmrg	orion-unknown)
101526df5c7cSmrg		vendor=highlevel
1016a1d141d5Smrg		;;
101726df5c7cSmrg	xps-unknown | xps100-unknown)
101826df5c7cSmrg		cpu=xps100
101926df5c7cSmrg		vendor=honeywell
1020a1d141d5Smrg		;;
102126df5c7cSmrg
102226df5c7cSmrg	# Here we normalize CPU types with a missing or matching vendor
10233bee1c92Smrg	armh-unknown | armh-alt)
10243bee1c92Smrg		cpu=armv7l
10253bee1c92Smrg		vendor=alt
10263bee1c92Smrg		basic_os=${basic_os:-linux-gnueabihf}
10273bee1c92Smrg		;;
102826df5c7cSmrg	dpx20-unknown | dpx20-bull)
102926df5c7cSmrg		cpu=rs6000
103026df5c7cSmrg		vendor=bull
103126df5c7cSmrg		basic_os=${basic_os:-bosx}
1032a1d141d5Smrg		;;
103326df5c7cSmrg
103426df5c7cSmrg	# Here we normalize CPU types irrespective of the vendor
103526df5c7cSmrg	amd64-*)
103626df5c7cSmrg		cpu=x86_64
1037a1d141d5Smrg		;;
103826df5c7cSmrg	blackfin-*)
103926df5c7cSmrg		cpu=bfin
104026df5c7cSmrg		basic_os=linux
1041a1d141d5Smrg		;;
104226df5c7cSmrg	c54x-*)
104326df5c7cSmrg		cpu=tic54x
1044a1d141d5Smrg		;;
104526df5c7cSmrg	c55x-*)
104626df5c7cSmrg		cpu=tic55x
1047a1d141d5Smrg		;;
104826df5c7cSmrg	c6x-*)
104926df5c7cSmrg		cpu=tic6x
1050a1d141d5Smrg		;;
105126df5c7cSmrg	e500v[12]-*)
105226df5c7cSmrg		cpu=powerpc
105326df5c7cSmrg		basic_os=${basic_os}"spe"
1054a1d141d5Smrg		;;
105526df5c7cSmrg	mips3*-*)
105626df5c7cSmrg		cpu=mips64
1057a1d141d5Smrg		;;
105826df5c7cSmrg	ms1-*)
105926df5c7cSmrg		cpu=mt
1060a1d141d5Smrg		;;
106126df5c7cSmrg	m68knommu-*)
106226df5c7cSmrg		cpu=m68k
106326df5c7cSmrg		basic_os=linux
1064a1d141d5Smrg		;;
106526df5c7cSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
106626df5c7cSmrg		cpu=s12z
10672ddb6cf1Smrg		;;
106826df5c7cSmrg	openrisc-*)
106926df5c7cSmrg		cpu=or32
1070a1d141d5Smrg		;;
107126df5c7cSmrg	parisc-*)
107226df5c7cSmrg		cpu=hppa
107326df5c7cSmrg		basic_os=linux
1074a1d141d5Smrg		;;
107526df5c7cSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
107626df5c7cSmrg		cpu=i586
1077a1d141d5Smrg		;;
10783bee1c92Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
107926df5c7cSmrg		cpu=i686
1080a1d141d5Smrg		;;
108126df5c7cSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
108226df5c7cSmrg		cpu=i686
10832ddb6cf1Smrg		;;
108426df5c7cSmrg	pentium4-*)
108526df5c7cSmrg		cpu=i786
1086a1d141d5Smrg		;;
108726df5c7cSmrg	pc98-*)
108826df5c7cSmrg		cpu=i386
1089a1d141d5Smrg		;;
109026df5c7cSmrg	ppc-* | ppcbe-*)
109126df5c7cSmrg		cpu=powerpc
1092a1d141d5Smrg		;;
109326df5c7cSmrg	ppcle-* | powerpclittle-*)
109426df5c7cSmrg		cpu=powerpcle
1095a1d141d5Smrg		;;
109626df5c7cSmrg	ppc64-*)
109726df5c7cSmrg		cpu=powerpc64
1098a1d141d5Smrg		;;
109926df5c7cSmrg	ppc64le-* | powerpc64little-*)
110026df5c7cSmrg		cpu=powerpc64le
1101a1d141d5Smrg		;;
110226df5c7cSmrg	sb1-*)
110326df5c7cSmrg		cpu=mipsisa64sb1
1104a1d141d5Smrg		;;
110526df5c7cSmrg	sb1el-*)
110626df5c7cSmrg		cpu=mipsisa64sb1el
1107a1d141d5Smrg		;;
110826df5c7cSmrg	sh5e[lb]-*)
110926df5c7cSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1110a1d141d5Smrg		;;
111126df5c7cSmrg	spur-*)
111226df5c7cSmrg		cpu=spur
1113a1d141d5Smrg		;;
111426df5c7cSmrg	strongarm-* | thumb-*)
111526df5c7cSmrg		cpu=arm
1116a1d141d5Smrg		;;
111726df5c7cSmrg	tx39-*)
111826df5c7cSmrg		cpu=mipstx39
1119054b3d00Smrg		;;
112026df5c7cSmrg	tx39el-*)
112126df5c7cSmrg		cpu=mipstx39el
11222ddb6cf1Smrg		;;
112326df5c7cSmrg	x64-*)
112426df5c7cSmrg		cpu=x86_64
1125a1d141d5Smrg		;;
1126054b3d00Smrg	xscale-* | xscalee[bl]-*)
112726df5c7cSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1128054b3d00Smrg		;;
11293bee1c92Smrg	arm64-* | aarch64le-*)
113026df5c7cSmrg		cpu=aarch64
1131a1d141d5Smrg		;;
1132a1d141d5Smrg
113326df5c7cSmrg	# Recognize the canonical CPU Types that limit and/or modify the
113426df5c7cSmrg	# company names they are paired with.
113526df5c7cSmrg	cr16-*)
113626df5c7cSmrg		basic_os=${basic_os:-elf}
1137a1d141d5Smrg		;;
113826df5c7cSmrg	crisv32-* | etraxfs*-*)
113926df5c7cSmrg		cpu=crisv32
114026df5c7cSmrg		vendor=axis
11412ddb6cf1Smrg		;;
114226df5c7cSmrg	cris-* | etrax*-*)
114326df5c7cSmrg		cpu=cris
114426df5c7cSmrg		vendor=axis
1145a1d141d5Smrg		;;
114626df5c7cSmrg	crx-*)
114726df5c7cSmrg		basic_os=${basic_os:-elf}
1148a1d141d5Smrg		;;
114926df5c7cSmrg	neo-tandem)
115026df5c7cSmrg		cpu=neo
115126df5c7cSmrg		vendor=tandem
1152a1d141d5Smrg		;;
115326df5c7cSmrg	nse-tandem)
115426df5c7cSmrg		cpu=nse
115526df5c7cSmrg		vendor=tandem
1156a1d141d5Smrg		;;
115726df5c7cSmrg	nsr-tandem)
115826df5c7cSmrg		cpu=nsr
115926df5c7cSmrg		vendor=tandem
1160a1d141d5Smrg		;;
116126df5c7cSmrg	nsv-tandem)
116226df5c7cSmrg		cpu=nsv
116326df5c7cSmrg		vendor=tandem
1164a1d141d5Smrg		;;
116526df5c7cSmrg	nsx-tandem)
116626df5c7cSmrg		cpu=nsx
116726df5c7cSmrg		vendor=tandem
1168a1d141d5Smrg		;;
116926df5c7cSmrg	mipsallegrexel-sony)
117026df5c7cSmrg		cpu=mipsallegrexel
117126df5c7cSmrg		vendor=sony
1172a1d141d5Smrg		;;
117326df5c7cSmrg	tile*-*)
117426df5c7cSmrg		basic_os=${basic_os:-linux-gnu}
1175a1d141d5Smrg		;;
117626df5c7cSmrg
1177a1d141d5Smrg	*)
117826df5c7cSmrg		# Recognize the canonical CPU types that are allowed with any
117926df5c7cSmrg		# company name.
118026df5c7cSmrg		case $cpu in
118126df5c7cSmrg			1750a | 580 \
118226df5c7cSmrg			| a29k \
118326df5c7cSmrg			| aarch64 | aarch64_be \
118426df5c7cSmrg			| abacus \
118526df5c7cSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
118626df5c7cSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
118726df5c7cSmrg			| alphapca5[67] | alpha64pca5[67] \
118826df5c7cSmrg			| am33_2.0 \
118926df5c7cSmrg			| amdgcn \
119026df5c7cSmrg			| arc | arceb | arc32 | arc64 \
119126df5c7cSmrg			| arm | arm[lb]e | arme[lb] | armv* \
119226df5c7cSmrg			| avr | avr32 \
119326df5c7cSmrg			| asmjs \
119426df5c7cSmrg			| ba \
119526df5c7cSmrg			| be32 | be64 \
119626df5c7cSmrg			| bfin | bpf | bs2000 \
119726df5c7cSmrg			| c[123]* | c30 | [cjt]90 | c4x \
119826df5c7cSmrg			| c8051 | clipper | craynv | csky | cydra \
119926df5c7cSmrg			| d10v | d30v | dlx | dsp16xx \
120026df5c7cSmrg			| e2k | elxsi | epiphany \
120126df5c7cSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
120226df5c7cSmrg			| h8300 | h8500 \
120326df5c7cSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
120426df5c7cSmrg			| hexagon \
120526df5c7cSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
120626df5c7cSmrg			| ip2k | iq2000 \
120726df5c7cSmrg			| k1om \
120826df5c7cSmrg			| le32 | le64 \
120926df5c7cSmrg			| lm32 \
12103bee1c92Smrg			| loongarch32 | loongarch64 \
121126df5c7cSmrg			| m32c | m32r | m32rle \
121226df5c7cSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
121326df5c7cSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
121426df5c7cSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
121526df5c7cSmrg			| microblaze | microblazeel \
121626df5c7cSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
121726df5c7cSmrg			| mips16 \
121826df5c7cSmrg			| mips64 | mips64eb | mips64el \
121926df5c7cSmrg			| mips64octeon | mips64octeonel \
122026df5c7cSmrg			| mips64orion | mips64orionel \
122126df5c7cSmrg			| mips64r5900 | mips64r5900el \
122226df5c7cSmrg			| mips64vr | mips64vrel \
122326df5c7cSmrg			| mips64vr4100 | mips64vr4100el \
122426df5c7cSmrg			| mips64vr4300 | mips64vr4300el \
122526df5c7cSmrg			| mips64vr5000 | mips64vr5000el \
122626df5c7cSmrg			| mips64vr5900 | mips64vr5900el \
122726df5c7cSmrg			| mipsisa32 | mipsisa32el \
122826df5c7cSmrg			| mipsisa32r2 | mipsisa32r2el \
122926df5c7cSmrg			| mipsisa32r3 | mipsisa32r3el \
123026df5c7cSmrg			| mipsisa32r5 | mipsisa32r5el \
123126df5c7cSmrg			| mipsisa32r6 | mipsisa32r6el \
123226df5c7cSmrg			| mipsisa64 | mipsisa64el \
123326df5c7cSmrg			| mipsisa64r2 | mipsisa64r2el \
123426df5c7cSmrg			| mipsisa64r3 | mipsisa64r3el \
123526df5c7cSmrg			| mipsisa64r5 | mipsisa64r5el \
123626df5c7cSmrg			| mipsisa64r6 | mipsisa64r6el \
123726df5c7cSmrg			| mipsisa64sb1 | mipsisa64sb1el \
123826df5c7cSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
123926df5c7cSmrg			| mipsr5900 | mipsr5900el \
124026df5c7cSmrg			| mipstx39 | mipstx39el \
124126df5c7cSmrg			| mmix \
124226df5c7cSmrg			| mn10200 | mn10300 \
124326df5c7cSmrg			| moxie \
124426df5c7cSmrg			| mt \
124526df5c7cSmrg			| msp430 \
124626df5c7cSmrg			| nds32 | nds32le | nds32be \
124726df5c7cSmrg			| nfp \
124826df5c7cSmrg			| nios | nios2 | nios2eb | nios2el \
124926df5c7cSmrg			| none | np1 | ns16k | ns32k | nvptx \
125026df5c7cSmrg			| open8 \
125126df5c7cSmrg			| or1k* \
125226df5c7cSmrg			| or32 \
125326df5c7cSmrg			| orion \
125426df5c7cSmrg			| picochip \
125526df5c7cSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
125626df5c7cSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
125726df5c7cSmrg			| pru \
125826df5c7cSmrg			| pyramid \
125926df5c7cSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
126026df5c7cSmrg			| rl78 | romp | rs6000 | rx \
126126df5c7cSmrg			| s390 | s390x \
126226df5c7cSmrg			| score \
126326df5c7cSmrg			| sh | shl \
126426df5c7cSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
126526df5c7cSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
126626df5c7cSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
126726df5c7cSmrg			| sparclite \
126826df5c7cSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
126926df5c7cSmrg			| spu \
127026df5c7cSmrg			| tahoe \
127126df5c7cSmrg			| thumbv7* \
127226df5c7cSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
127326df5c7cSmrg			| tron \
127426df5c7cSmrg			| ubicom32 \
127526df5c7cSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
127626df5c7cSmrg			| vax \
127726df5c7cSmrg			| visium \
127826df5c7cSmrg			| w65 \
127926df5c7cSmrg			| wasm32 | wasm64 \
128026df5c7cSmrg			| we32k \
128126df5c7cSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
128226df5c7cSmrg			| xstormy16 | xtensa* \
128326df5c7cSmrg			| ymp \
128426df5c7cSmrg			| z8k | z80)
128526df5c7cSmrg				;;
128626df5c7cSmrg
128726df5c7cSmrg			*)
128826df5c7cSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
128926df5c7cSmrg				exit 1
129026df5c7cSmrg				;;
129126df5c7cSmrg		esac
1292a1d141d5Smrg		;;
1293a1d141d5Smrgesac
1294a1d141d5Smrg
1295a1d141d5Smrg# Here we canonicalize certain aliases for manufacturers.
129626df5c7cSmrgcase $vendor in
129726df5c7cSmrg	digital*)
129826df5c7cSmrg		vendor=dec
1299a1d141d5Smrg		;;
130026df5c7cSmrg	commodore*)
130126df5c7cSmrg		vendor=cbm
1302a1d141d5Smrg		;;
1303a1d141d5Smrg	*)
1304a1d141d5Smrg		;;
1305a1d141d5Smrgesac
1306a1d141d5Smrg
1307a1d141d5Smrg# Decode manufacturer-specific aliases for certain operating systems.
1308a1d141d5Smrg
130926df5c7cSmrgif test x$basic_os != x
1310a1d141d5Smrgthen
131126df5c7cSmrg
13123bee1c92Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
131326df5c7cSmrg# set os.
131426df5c7cSmrgcase $basic_os in
131526df5c7cSmrg	gnu/linux*)
131626df5c7cSmrg		kernel=linux
131726df5c7cSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
131826df5c7cSmrg		;;
131926df5c7cSmrg	os2-emx)
132026df5c7cSmrg		kernel=os2
132126df5c7cSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
132226df5c7cSmrg		;;
132326df5c7cSmrg	nto-qnx*)
132426df5c7cSmrg		kernel=nto
132526df5c7cSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
132626df5c7cSmrg		;;
132726df5c7cSmrg	*-*)
132826df5c7cSmrg		# shellcheck disable=SC2162
13293bee1c92Smrg		saved_IFS=$IFS
133026df5c7cSmrg		IFS="-" read kernel os <<EOF
133126df5c7cSmrg$basic_os
133226df5c7cSmrgEOF
13333bee1c92Smrg		IFS=$saved_IFS
133426df5c7cSmrg		;;
133526df5c7cSmrg	# Default OS when just kernel was specified
133626df5c7cSmrg	nto*)
133726df5c7cSmrg		kernel=nto
133826df5c7cSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
133926df5c7cSmrg		;;
134026df5c7cSmrg	linux*)
134126df5c7cSmrg		kernel=linux
134226df5c7cSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
134326df5c7cSmrg		;;
13443bee1c92Smrg	managarm*)
13453bee1c92Smrg		kernel=managarm
13463bee1c92Smrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
13473bee1c92Smrg		;;
134826df5c7cSmrg	*)
134926df5c7cSmrg		kernel=
135026df5c7cSmrg		os=$basic_os
135126df5c7cSmrg		;;
135226df5c7cSmrgesac
135326df5c7cSmrg
135426df5c7cSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
135526df5c7cSmrg# etc.)
1356a1d141d5Smrgcase $os in
1357054b3d00Smrg	# First match some system type aliases that might get confused
1358054b3d00Smrg	# with valid system types.
135926df5c7cSmrg	# solaris* is a basic system type, with this one exception.
136026df5c7cSmrg	auroraux)
136126df5c7cSmrg		os=auroraux
136255074dd0Smrg		;;
136326df5c7cSmrg	bluegene*)
136426df5c7cSmrg		os=cnk
1365a1d141d5Smrg		;;
136626df5c7cSmrg	solaris1 | solaris1.*)
136726df5c7cSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1368a1d141d5Smrg		;;
136926df5c7cSmrg	solaris)
137026df5c7cSmrg		os=solaris2
1371a1d141d5Smrg		;;
137226df5c7cSmrg	unixware*)
137326df5c7cSmrg		os=sysv4.2uw
1374a1d141d5Smrg		;;
1375054b3d00Smrg	# es1800 is here to avoid being matched by es* (a different OS)
137626df5c7cSmrg	es1800*)
137726df5c7cSmrg		os=ose
1378054b3d00Smrg		;;
137926df5c7cSmrg	# Some version numbers need modification
138026df5c7cSmrg	chorusos*)
138126df5c7cSmrg		os=chorusos
1382a1d141d5Smrg		;;
138326df5c7cSmrg	isc)
138426df5c7cSmrg		os=isc2.2
1385a1d141d5Smrg		;;
138626df5c7cSmrg	sco6)
138726df5c7cSmrg		os=sco5v6
1388a1d141d5Smrg		;;
138926df5c7cSmrg	sco5)
139026df5c7cSmrg		os=sco3.2v5
1391a1d141d5Smrg		;;
139226df5c7cSmrg	sco4)
139326df5c7cSmrg		os=sco3.2v4
1394a1d141d5Smrg		;;
139526df5c7cSmrg	sco3.2.[4-9]*)
139626df5c7cSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13972ddb6cf1Smrg		;;
139826df5c7cSmrg	sco*v* | scout)
139926df5c7cSmrg		# Don't match below
1400a1d141d5Smrg		;;
140126df5c7cSmrg	sco*)
140226df5c7cSmrg		os=sco3.2v2
1403a1d141d5Smrg		;;
140426df5c7cSmrg	psos*)
140526df5c7cSmrg		os=psos
1406a1d141d5Smrg		;;
140726df5c7cSmrg	qnx*)
140826df5c7cSmrg		os=qnx
1409a1d141d5Smrg		;;
141026df5c7cSmrg	hiux*)
141126df5c7cSmrg		os=hiuxwe2
14122ddb6cf1Smrg		;;
141326df5c7cSmrg	lynx*178)
141426df5c7cSmrg		os=lynxos178
1415a1d141d5Smrg		;;
141626df5c7cSmrg	lynx*5)
141726df5c7cSmrg		os=lynxos5
1418a1d141d5Smrg		;;
141926df5c7cSmrg	lynxos*)
142026df5c7cSmrg		# don't get caught up in next wildcard
1421a1d141d5Smrg		;;
142226df5c7cSmrg	lynx*)
142326df5c7cSmrg		os=lynxos
1424a1d141d5Smrg		;;
142526df5c7cSmrg	mac[0-9]*)
142626df5c7cSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
1427a1d141d5Smrg		;;
142826df5c7cSmrg	opened*)
142926df5c7cSmrg		os=openedition
14302ddb6cf1Smrg		;;
143126df5c7cSmrg	os400*)
143226df5c7cSmrg		os=os400
1433a1d141d5Smrg		;;
143426df5c7cSmrg	sunos5*)
143526df5c7cSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1436a1d141d5Smrg		;;
143726df5c7cSmrg	sunos6*)
143826df5c7cSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1439a1d141d5Smrg		;;
144026df5c7cSmrg	wince*)
144126df5c7cSmrg		os=wince
1442a1d141d5Smrg		;;
144326df5c7cSmrg	utek*)
144426df5c7cSmrg		os=bsd
1445a1d141d5Smrg		;;
144626df5c7cSmrg	dynix*)
144726df5c7cSmrg		os=bsd
1448a1d141d5Smrg		;;
144926df5c7cSmrg	acis*)
145026df5c7cSmrg		os=aos
1451a1d141d5Smrg		;;
145226df5c7cSmrg	atheos*)
145326df5c7cSmrg		os=atheos
14542ddb6cf1Smrg		;;
145526df5c7cSmrg	syllable*)
145626df5c7cSmrg		os=syllable
1457a1d141d5Smrg		;;
145826df5c7cSmrg	386bsd)
145926df5c7cSmrg		os=bsd
1460a1d141d5Smrg		;;
146126df5c7cSmrg	ctix* | uts*)
146226df5c7cSmrg		os=sysv
1463a1d141d5Smrg		;;
146426df5c7cSmrg	nova*)
146526df5c7cSmrg		os=rtmk-nova
1466a1d141d5Smrg		;;
146726df5c7cSmrg	ns2)
146826df5c7cSmrg		os=nextstep2
1469a1d141d5Smrg		;;
147026df5c7cSmrg	# Preserve the version number of sinix5.
147126df5c7cSmrg	sinix5.*)
147226df5c7cSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
1473a1d141d5Smrg		;;
147426df5c7cSmrg	sinix*)
147526df5c7cSmrg		os=sysv4
1476a1d141d5Smrg		;;
147726df5c7cSmrg	tpf*)
147826df5c7cSmrg		os=tpf
1479a1d141d5Smrg		;;
148026df5c7cSmrg	triton*)
148126df5c7cSmrg		os=sysv3
14822ddb6cf1Smrg		;;
148326df5c7cSmrg	oss*)
148426df5c7cSmrg		os=sysv3
14852ddb6cf1Smrg		;;
148626df5c7cSmrg	svr4*)
148726df5c7cSmrg		os=sysv4
148826df5c7cSmrg		;;
148926df5c7cSmrg	svr3)
149026df5c7cSmrg		os=sysv3
149126df5c7cSmrg		;;
149226df5c7cSmrg	sysvr4)
149326df5c7cSmrg		os=sysv4
149426df5c7cSmrg		;;
149526df5c7cSmrg	ose*)
149626df5c7cSmrg		os=ose
149726df5c7cSmrg		;;
149826df5c7cSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
149926df5c7cSmrg		os=mint
150026df5c7cSmrg		;;
150126df5c7cSmrg	dicos*)
150226df5c7cSmrg		os=dicos
150326df5c7cSmrg		;;
150426df5c7cSmrg	pikeos*)
1505054b3d00Smrg		# Until real need of OS specific support for
1506054b3d00Smrg		# particular features comes up, bare metal
1507054b3d00Smrg		# configurations are quite functional.
150826df5c7cSmrg		case $cpu in
1509054b3d00Smrg		    arm*)
151026df5c7cSmrg			os=eabi
1511054b3d00Smrg			;;
1512054b3d00Smrg		    *)
151326df5c7cSmrg			os=elf
1514054b3d00Smrg			;;
1515054b3d00Smrg		esac
1516054b3d00Smrg		;;
1517a1d141d5Smrg	*)
151826df5c7cSmrg		# No normalization, but not necessarily accepted, that comes below.
1519a1d141d5Smrg		;;
1520a1d141d5Smrgesac
152126df5c7cSmrg
1522a1d141d5Smrgelse
1523a1d141d5Smrg
1524a1d141d5Smrg# Here we handle the default operating systems that come with various machines.
1525a1d141d5Smrg# The value should be what the vendor currently ships out the door with their
1526a1d141d5Smrg# machine or put another way, the most popular os provided with the machine.
1527a1d141d5Smrg
1528a1d141d5Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
1529a1d141d5Smrg# "-sun"), then you have to tell the case statement up towards the top
1530a1d141d5Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
1531a1d141d5Smrg# will signal an error saying that MANUFACTURER isn't an operating
1532a1d141d5Smrg# system, and we'll never get to this point.
1533a1d141d5Smrg
153426df5c7cSmrgkernel=
153526df5c7cSmrgcase $cpu-$vendor in
1536054b3d00Smrg	score-*)
153726df5c7cSmrg		os=elf
15382ddb6cf1Smrg		;;
1539054b3d00Smrg	spu-*)
154026df5c7cSmrg		os=elf
15412ddb6cf1Smrg		;;
1542a1d141d5Smrg	*-acorn)
154326df5c7cSmrg		os=riscix1.2
1544a1d141d5Smrg		;;
1545a1d141d5Smrg	arm*-rebel)
154626df5c7cSmrg		kernel=linux
154726df5c7cSmrg		os=gnu
1548a1d141d5Smrg		;;
1549a1d141d5Smrg	arm*-semi)
155026df5c7cSmrg		os=aout
1551a1d141d5Smrg		;;
1552054b3d00Smrg	c4x-* | tic4x-*)
155326df5c7cSmrg		os=coff
1554054b3d00Smrg		;;
1555054b3d00Smrg	c8051-*)
155626df5c7cSmrg		os=elf
155726df5c7cSmrg		;;
155826df5c7cSmrg	clipper-intergraph)
155926df5c7cSmrg		os=clix
1560054b3d00Smrg		;;
1561054b3d00Smrg	hexagon-*)
156226df5c7cSmrg		os=elf
1563a1d141d5Smrg		;;
156455074dd0Smrg	tic54x-*)
156526df5c7cSmrg		os=coff
156655074dd0Smrg		;;
156755074dd0Smrg	tic55x-*)
156826df5c7cSmrg		os=coff
156955074dd0Smrg		;;
157055074dd0Smrg	tic6x-*)
157126df5c7cSmrg		os=coff
157255074dd0Smrg		;;
1573a1d141d5Smrg	# This must come before the *-dec entry.
1574a1d141d5Smrg	pdp10-*)
157526df5c7cSmrg		os=tops20
1576a1d141d5Smrg		;;
1577a1d141d5Smrg	pdp11-*)
157826df5c7cSmrg		os=none
1579a1d141d5Smrg		;;
1580a1d141d5Smrg	*-dec | vax-*)
158126df5c7cSmrg		os=ultrix4.2
1582a1d141d5Smrg		;;
1583a1d141d5Smrg	m68*-apollo)
158426df5c7cSmrg		os=domain
1585a1d141d5Smrg		;;
1586a1d141d5Smrg	i386-sun)
158726df5c7cSmrg		os=sunos4.0.2
1588a1d141d5Smrg		;;
1589a1d141d5Smrg	m68000-sun)
159026df5c7cSmrg		os=sunos3
1591a1d141d5Smrg		;;
1592a1d141d5Smrg	m68*-cisco)
159326df5c7cSmrg		os=aout
1594a1d141d5Smrg		;;
1595054b3d00Smrg	mep-*)
159626df5c7cSmrg		os=elf
15972ddb6cf1Smrg		;;
1598a1d141d5Smrg	mips*-cisco)
159926df5c7cSmrg		os=elf
1600a1d141d5Smrg		;;
1601a1d141d5Smrg	mips*-*)
160226df5c7cSmrg		os=elf
1603a1d141d5Smrg		;;
1604a1d141d5Smrg	or32-*)
160526df5c7cSmrg		os=coff
1606a1d141d5Smrg		;;
1607a1d141d5Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
160826df5c7cSmrg		os=sysv3
1609a1d141d5Smrg		;;
1610a1d141d5Smrg	sparc-* | *-sun)
161126df5c7cSmrg		os=sunos4.1.1
1612a1d141d5Smrg		;;
1613054b3d00Smrg	pru-*)
161426df5c7cSmrg		os=elf
1615054b3d00Smrg		;;
1616a1d141d5Smrg	*-be)
161726df5c7cSmrg		os=beos
1618a1d141d5Smrg		;;
1619a1d141d5Smrg	*-ibm)
162026df5c7cSmrg		os=aix
1621a1d141d5Smrg		;;
1622054b3d00Smrg	*-knuth)
162326df5c7cSmrg		os=mmixware
16242ddb6cf1Smrg		;;
1625a1d141d5Smrg	*-wec)
162626df5c7cSmrg		os=proelf
1627a1d141d5Smrg		;;
1628a1d141d5Smrg	*-winbond)
162926df5c7cSmrg		os=proelf
1630a1d141d5Smrg		;;
1631a1d141d5Smrg	*-oki)
163226df5c7cSmrg		os=proelf
1633a1d141d5Smrg		;;
1634a1d141d5Smrg	*-hp)
163526df5c7cSmrg		os=hpux
1636a1d141d5Smrg		;;
1637a1d141d5Smrg	*-hitachi)
163826df5c7cSmrg		os=hiux
1639a1d141d5Smrg		;;
1640a1d141d5Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
164126df5c7cSmrg		os=sysv
1642a1d141d5Smrg		;;
1643a1d141d5Smrg	*-cbm)
164426df5c7cSmrg		os=amigaos
1645a1d141d5Smrg		;;
1646a1d141d5Smrg	*-dg)
164726df5c7cSmrg		os=dgux
1648a1d141d5Smrg		;;
1649a1d141d5Smrg	*-dolphin)
165026df5c7cSmrg		os=sysv3
1651a1d141d5Smrg		;;
1652a1d141d5Smrg	m68k-ccur)
165326df5c7cSmrg		os=rtu
1654a1d141d5Smrg		;;
1655a1d141d5Smrg	m88k-omron*)
165626df5c7cSmrg		os=luna
1657a1d141d5Smrg		;;
1658054b3d00Smrg	*-next)
165926df5c7cSmrg		os=nextstep
1660a1d141d5Smrg		;;
1661a1d141d5Smrg	*-sequent)
166226df5c7cSmrg		os=ptx
1663a1d141d5Smrg		;;
1664a1d141d5Smrg	*-crds)
166526df5c7cSmrg		os=unos
1666a1d141d5Smrg		;;
1667a1d141d5Smrg	*-ns)
166826df5c7cSmrg		os=genix
1669a1d141d5Smrg		;;
1670a1d141d5Smrg	i370-*)
167126df5c7cSmrg		os=mvs
1672a1d141d5Smrg		;;
1673a1d141d5Smrg	*-gould)
167426df5c7cSmrg		os=sysv
1675a1d141d5Smrg		;;
1676a1d141d5Smrg	*-highlevel)
167726df5c7cSmrg		os=bsd
1678a1d141d5Smrg		;;
1679a1d141d5Smrg	*-encore)
168026df5c7cSmrg		os=bsd
1681a1d141d5Smrg		;;
1682a1d141d5Smrg	*-sgi)
168326df5c7cSmrg		os=irix
1684a1d141d5Smrg		;;
1685a1d141d5Smrg	*-siemens)
168626df5c7cSmrg		os=sysv4
1687a1d141d5Smrg		;;
1688a1d141d5Smrg	*-masscomp)
168926df5c7cSmrg		os=rtu
1690a1d141d5Smrg		;;
1691a1d141d5Smrg	f30[01]-fujitsu | f700-fujitsu)
169226df5c7cSmrg		os=uxpv
1693a1d141d5Smrg		;;
1694a1d141d5Smrg	*-rom68k)
169526df5c7cSmrg		os=coff
1696a1d141d5Smrg		;;
1697a1d141d5Smrg	*-*bug)
169826df5c7cSmrg		os=coff
1699a1d141d5Smrg		;;
1700a1d141d5Smrg	*-apple)
170126df5c7cSmrg		os=macos
1702a1d141d5Smrg		;;
1703a1d141d5Smrg	*-atari*)
170426df5c7cSmrg		os=mint
170526df5c7cSmrg		;;
170626df5c7cSmrg	*-wrs)
170726df5c7cSmrg		os=vxworks
1708a1d141d5Smrg		;;
1709a1d141d5Smrg	*)
171026df5c7cSmrg		os=none
1711a1d141d5Smrg		;;
1712a1d141d5Smrgesac
171326df5c7cSmrg
1714a1d141d5Smrgfi
1715a1d141d5Smrg
171626df5c7cSmrg# Now, validate our (potentially fixed-up) OS.
171726df5c7cSmrgcase $os in
171826df5c7cSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
17193bee1c92Smrg	musl* | newlib* | relibc* | uclibc*)
172026df5c7cSmrg		;;
172126df5c7cSmrg	# Likewise for "kernel-abi"
172226df5c7cSmrg	eabi* | gnueabi*)
172326df5c7cSmrg		;;
172426df5c7cSmrg	# VxWorks passes extra cpu info in the 4th filed.
172526df5c7cSmrg	simlinux | simwindows | spe)
172626df5c7cSmrg		;;
172726df5c7cSmrg	# Now accept the basic system types.
172826df5c7cSmrg	# The portable systems comes first.
172926df5c7cSmrg	# Each alternative MUST end in a * to match a version number.
173026df5c7cSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
173126df5c7cSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
173226df5c7cSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
173326df5c7cSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
173426df5c7cSmrg	     | hiux* | abug | nacl* | netware* | windows* \
173526df5c7cSmrg	     | os9* | macos* | osx* | ios* \
173626df5c7cSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
173726df5c7cSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
173826df5c7cSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
173926df5c7cSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
174026df5c7cSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
174126df5c7cSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
174226df5c7cSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
174326df5c7cSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
174426df5c7cSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
174526df5c7cSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
174626df5c7cSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
174726df5c7cSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
174826df5c7cSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
174926df5c7cSmrg	     | midipix* | mingw32* | mingw64* | mint* \
175026df5c7cSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
175126df5c7cSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
175226df5c7cSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
175326df5c7cSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
175426df5c7cSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
175526df5c7cSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
175626df5c7cSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
175726df5c7cSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
175826df5c7cSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
175926df5c7cSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
17603bee1c92Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
17613bee1c92Smrg	     | fiwix* | mlibc* )
176226df5c7cSmrg		;;
176326df5c7cSmrg	# This one is extra strict with allowed versions
176426df5c7cSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
176526df5c7cSmrg		# Don't forget version if it is 3.2v4 or newer.
176626df5c7cSmrg		;;
176726df5c7cSmrg	none)
176826df5c7cSmrg		;;
17693bee1c92Smrg	kernel* )
17703bee1c92Smrg		# Restricted further below
17713bee1c92Smrg		;;
177226df5c7cSmrg	*)
177326df5c7cSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
177426df5c7cSmrg		exit 1
177526df5c7cSmrg		;;
177626df5c7cSmrgesac
177726df5c7cSmrg
177826df5c7cSmrg# As a final step for OS-related things, validate the OS-kernel combination
177926df5c7cSmrg# (given a valid OS), if there is a kernel.
178026df5c7cSmrgcase $kernel-$os in
17813bee1c92Smrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
17823bee1c92Smrg		   | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* )
178326df5c7cSmrg		;;
178426df5c7cSmrg	uclinux-uclibc* )
178526df5c7cSmrg		;;
17863bee1c92Smrg	managarm-mlibc* | managarm-kernel* )
17873bee1c92Smrg		;;
17883bee1c92Smrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
178926df5c7cSmrg		# These are just libc implementations, not actual OSes, and thus
179026df5c7cSmrg		# require a kernel.
179126df5c7cSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
179226df5c7cSmrg		exit 1
179326df5c7cSmrg		;;
17943bee1c92Smrg	-kernel* )
17953bee1c92Smrg		echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2
17963bee1c92Smrg		exit 1
17973bee1c92Smrg		;;
17983bee1c92Smrg	*-kernel* )
17993bee1c92Smrg		echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2
18003bee1c92Smrg		exit 1
18013bee1c92Smrg		;;
180226df5c7cSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
180326df5c7cSmrg		;;
180426df5c7cSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
180526df5c7cSmrg		;;
180626df5c7cSmrg	nto-qnx*)
180726df5c7cSmrg		;;
180826df5c7cSmrg	os2-emx)
180926df5c7cSmrg		;;
181026df5c7cSmrg	*-eabi* | *-gnueabi*)
181126df5c7cSmrg		;;
181226df5c7cSmrg	-*)
181326df5c7cSmrg		# Blank kernel with real OS is always fine.
181426df5c7cSmrg		;;
181526df5c7cSmrg	*-*)
181626df5c7cSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
181726df5c7cSmrg		exit 1
181826df5c7cSmrg		;;
181926df5c7cSmrgesac
182026df5c7cSmrg
1821a1d141d5Smrg# Here we handle the case where we know the os, and the CPU type, but not the
1822a1d141d5Smrg# manufacturer.  We pick the logical manufacturer.
182326df5c7cSmrgcase $vendor in
182426df5c7cSmrg	unknown)
182526df5c7cSmrg		case $cpu-$os in
182626df5c7cSmrg			*-riscix*)
1827a1d141d5Smrg				vendor=acorn
1828a1d141d5Smrg				;;
182926df5c7cSmrg			*-sunos*)
1830a1d141d5Smrg				vendor=sun
1831a1d141d5Smrg				;;
183226df5c7cSmrg			*-cnk* | *-aix*)
1833a1d141d5Smrg				vendor=ibm
1834a1d141d5Smrg				;;
183526df5c7cSmrg			*-beos*)
1836a1d141d5Smrg				vendor=be
1837a1d141d5Smrg				;;
183826df5c7cSmrg			*-hpux*)
1839a1d141d5Smrg				vendor=hp
1840a1d141d5Smrg				;;
184126df5c7cSmrg			*-mpeix*)
1842a1d141d5Smrg				vendor=hp
1843a1d141d5Smrg				;;
184426df5c7cSmrg			*-hiux*)
1845a1d141d5Smrg				vendor=hitachi
1846a1d141d5Smrg				;;
184726df5c7cSmrg			*-unos*)
1848a1d141d5Smrg				vendor=crds
1849a1d141d5Smrg				;;
185026df5c7cSmrg			*-dgux*)
1851a1d141d5Smrg				vendor=dg
1852a1d141d5Smrg				;;
185326df5c7cSmrg			*-luna*)
1854a1d141d5Smrg				vendor=omron
1855a1d141d5Smrg				;;
185626df5c7cSmrg			*-genix*)
1857a1d141d5Smrg				vendor=ns
1858a1d141d5Smrg				;;
185926df5c7cSmrg			*-clix*)
186026df5c7cSmrg				vendor=intergraph
186126df5c7cSmrg				;;
186226df5c7cSmrg			*-mvs* | *-opened*)
186326df5c7cSmrg				vendor=ibm
186426df5c7cSmrg				;;
186526df5c7cSmrg			*-os400*)
1866a1d141d5Smrg				vendor=ibm
1867a1d141d5Smrg				;;
186826df5c7cSmrg			s390-* | s390x-*)
18692ddb6cf1Smrg				vendor=ibm
18702ddb6cf1Smrg				;;
187126df5c7cSmrg			*-ptx*)
1872a1d141d5Smrg				vendor=sequent
1873a1d141d5Smrg				;;
187426df5c7cSmrg			*-tpf*)
18752ddb6cf1Smrg				vendor=ibm
18762ddb6cf1Smrg				;;
187726df5c7cSmrg			*-vxsim* | *-vxworks* | *-windiss*)
1878a1d141d5Smrg				vendor=wrs
1879a1d141d5Smrg				;;
188026df5c7cSmrg			*-aux*)
1881a1d141d5Smrg				vendor=apple
1882a1d141d5Smrg				;;
188326df5c7cSmrg			*-hms*)
1884a1d141d5Smrg				vendor=hitachi
1885a1d141d5Smrg				;;
188626df5c7cSmrg			*-mpw* | *-macos*)
1887a1d141d5Smrg				vendor=apple
1888a1d141d5Smrg				;;
188926df5c7cSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1890a1d141d5Smrg				vendor=atari
1891a1d141d5Smrg				;;
189226df5c7cSmrg			*-vos*)
1893a1d141d5Smrg				vendor=stratus
1894a1d141d5Smrg				;;
1895a1d141d5Smrg		esac
1896a1d141d5Smrg		;;
1897a1d141d5Smrgesac
1898a1d141d5Smrg
189926df5c7cSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
19002ddb6cf1Smrgexit
1901a1d141d5Smrg
1902a1d141d5Smrg# Local variables:
190326df5c7cSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
1904a1d141d5Smrg# time-stamp-start: "timestamp='"
1905a1d141d5Smrg# time-stamp-format: "%:y-%02m-%02d"
1906a1d141d5Smrg# time-stamp-end: "'"
1907a1d141d5Smrg# End:
1908