1a6d9b409Smrg#! /bin/sh 2a6d9b409Smrg# Configuration validation subroutine script. 3838f5b0bSmrg# Copyright 1992-2024 Free Software Foundation, Inc. 4a6d9b409Smrg 592e95ad1Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 692e95ad1Smrg 7838f5b0bSmrgtimestamp='2024-01-01' 8a6d9b409Smrg 9b91640d3Smrg# This file is free software; you can redistribute it and/or modify it 10b91640d3Smrg# under the terms of the GNU General Public License as published by 11838f5b0bSmrg# the Free Software Foundation, either version 3 of the License, or 12a6d9b409Smrg# (at your option) any later version. 13a6d9b409Smrg# 14b91640d3Smrg# This program is distributed in the hope that it will be useful, but 15b91640d3Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16b91640d3Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17b91640d3Smrg# General Public License for more details. 18a6d9b409Smrg# 19a6d9b409Smrg# You should have received a copy of the GNU General Public License 208b8e729cSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21a6d9b409Smrg# 22a6d9b409Smrg# As a special exception to the GNU General Public License, if you 23a6d9b409Smrg# distribute this file as part of a program that contains a 24a6d9b409Smrg# configuration script generated by Autoconf, you may include it under 25b91640d3Smrg# the same distribution terms that you use for the rest of that 26b91640d3Smrg# program. This Exception is an additional permission under section 7 27b91640d3Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28a6d9b409Smrg 29a6d9b409Smrg 30b91640d3Smrg# Please send patches to <config-patches@gnu.org>. 31a6d9b409Smrg# 32a6d9b409Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33a6d9b409Smrg# Supply the specified configuration type as an argument. 34a6d9b409Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35a6d9b409Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36a6d9b409Smrg 371e5fa1c5Smrg# You can get the latest version of this script from: 3892e95ad1Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 391e5fa1c5Smrg 40a6d9b409Smrg# This file is supposed to be the same for all GNU packages 41a6d9b409Smrg# and recognize all the CPU types, system types and aliases 42a6d9b409Smrg# that are meaningful with *any* GNU software. 43a6d9b409Smrg# Each package is responsible for reporting which valid configurations 44a6d9b409Smrg# it does not support. The user should be able to distinguish 45a6d9b409Smrg# a failure to support a valid configuration from a meaningless 46a6d9b409Smrg# configuration. 47a6d9b409Smrg 48a6d9b409Smrg# The goal of this file is to map all the various variations of a given 49a6d9b409Smrg# machine specification into a single specification in the form: 50a6d9b409Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51a6d9b409Smrg# or in some cases, the newer four-part form: 52a6d9b409Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53a6d9b409Smrg# It is wrong to echo any other type of specification. 54a6d9b409Smrg 5592e95ad1Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 5692e95ad1Smrg# about features and limitations of the classic Bourne shell that were 5792e95ad1Smrg# superseded or lifted in POSIX. However, this script identifies a wide 5892e95ad1Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5992e95ad1Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6092e95ad1Smrg# have a pre-POSIX /bin/sh. 6192e95ad1Smrg 62a6d9b409Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63a6d9b409Smrg 64a6d9b409Smrgusage="\ 6511a95ff3SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66a6d9b409Smrg 67a6d9b409SmrgCanonicalize a configuration name. 68a6d9b409Smrg 698b8e729cSmrgOptions: 70a6d9b409Smrg -h, --help print this help, then exit 71a6d9b409Smrg -t, --time-stamp print date of last modification, then exit 72a6d9b409Smrg -v, --version print version number, then exit 73a6d9b409Smrg 74a6d9b409SmrgReport bugs and patches to <config-patches@gnu.org>." 75a6d9b409Smrg 76a6d9b409Smrgversion="\ 77a6d9b409SmrgGNU config.sub ($timestamp) 78a6d9b409Smrg 79838f5b0bSmrgCopyright 1992-2024 Free Software Foundation, Inc. 80a6d9b409Smrg 81a6d9b409SmrgThis is free software; see the source for copying conditions. There is NO 82a6d9b409Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83a6d9b409Smrg 84a6d9b409Smrghelp=" 85838f5b0bSmrgTry '$me --help' for more information." 86a6d9b409Smrg 87a6d9b409Smrg# Parse command line 88a6d9b409Smrgwhile test $# -gt 0 ; do 89a6d9b409Smrg case $1 in 90a6d9b409Smrg --time-stamp | --time* | -t ) 91a6d9b409Smrg echo "$timestamp" ; exit ;; 92a6d9b409Smrg --version | -v ) 93a6d9b409Smrg echo "$version" ; exit ;; 94a6d9b409Smrg --help | --h* | -h ) 95a6d9b409Smrg echo "$usage"; exit ;; 96a6d9b409Smrg -- ) # Stop option processing 97a6d9b409Smrg shift; break ;; 98a6d9b409Smrg - ) # Use stdin as input. 99a6d9b409Smrg break ;; 100a6d9b409Smrg -* ) 10192e95ad1Smrg echo "$me: invalid option $1$help" >&2 102a6d9b409Smrg exit 1 ;; 103a6d9b409Smrg 104a6d9b409Smrg *local*) 105a6d9b409Smrg # First pass through any local machine types. 1068b8e729cSmrg echo "$1" 107a6d9b409Smrg exit ;; 108a6d9b409Smrg 109a6d9b409Smrg * ) 110a6d9b409Smrg break ;; 111a6d9b409Smrg esac 112a6d9b409Smrgdone 113a6d9b409Smrg 114a6d9b409Smrgcase $# in 115a6d9b409Smrg 0) echo "$me: missing argument$help" >&2 116a6d9b409Smrg exit 1;; 117a6d9b409Smrg 1) ;; 118a6d9b409Smrg *) echo "$me: too many arguments$help" >&2 119a6d9b409Smrg exit 1;; 120a6d9b409Smrgesac 121a6d9b409Smrg 12292e95ad1Smrg# Split fields of configuration type 12392e95ad1Smrg# shellcheck disable=SC2162 12492e95ad1Smrgsaved_IFS=$IFS 12592e95ad1SmrgIFS="-" read field1 field2 field3 field4 <<EOF 12692e95ad1Smrg$1 12792e95ad1SmrgEOF 12892e95ad1SmrgIFS=$saved_IFS 129a6d9b409Smrg 13092e95ad1Smrg# Separate into logical components for further validation 13192e95ad1Smrgcase $1 in 13292e95ad1Smrg *-*-*-*-*) 133838f5b0bSmrg echo "Invalid configuration '$1': more than four components" >&2 13492e95ad1Smrg exit 1 135b91640d3Smrg ;; 13692e95ad1Smrg *-*-*-*) 13792e95ad1Smrg basic_machine=$field1-$field2 13892e95ad1Smrg basic_os=$field3-$field4 139a6d9b409Smrg ;; 14092e95ad1Smrg *-*-*) 14192e95ad1Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14292e95ad1Smrg # parts 14392e95ad1Smrg maybe_os=$field2-$field3 14492e95ad1Smrg case $maybe_os in 14592e95ad1Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 14692e95ad1Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14792e95ad1Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148838f5b0bSmrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ 149838f5b0bSmrg | windows-* ) 15092e95ad1Smrg basic_machine=$field1 15192e95ad1Smrg basic_os=$maybe_os 15292e95ad1Smrg ;; 15392e95ad1Smrg android-linux) 15492e95ad1Smrg basic_machine=$field1-unknown 15592e95ad1Smrg basic_os=linux-android 15692e95ad1Smrg ;; 15792e95ad1Smrg *) 15892e95ad1Smrg basic_machine=$field1-$field2 15992e95ad1Smrg basic_os=$field3 16092e95ad1Smrg ;; 16192e95ad1Smrg esac 162a6d9b409Smrg ;; 16392e95ad1Smrg *-*) 16492e95ad1Smrg # A lone config we happen to match not fitting any pattern 16592e95ad1Smrg case $field1-$field2 in 16692e95ad1Smrg decstation-3100) 16792e95ad1Smrg basic_machine=mips-dec 16892e95ad1Smrg basic_os= 16992e95ad1Smrg ;; 17092e95ad1Smrg *-*) 17192e95ad1Smrg # Second component is usually, but not always the OS 17292e95ad1Smrg case $field2 in 17392e95ad1Smrg # Prevent following clause from handling this valid os 17492e95ad1Smrg sun*os*) 17592e95ad1Smrg basic_machine=$field1 17692e95ad1Smrg basic_os=$field2 17792e95ad1Smrg ;; 17892e95ad1Smrg zephyr*) 17992e95ad1Smrg basic_machine=$field1-unknown 18092e95ad1Smrg basic_os=$field2 18192e95ad1Smrg ;; 18292e95ad1Smrg # Manufacturers 18392e95ad1Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18492e95ad1Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18592e95ad1Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18692e95ad1Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18792e95ad1Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18892e95ad1Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18992e95ad1Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 19092e95ad1Smrg | microblaze* | sim | cisco \ 19192e95ad1Smrg | oki | wec | wrs | winbond) 19292e95ad1Smrg basic_machine=$field1-$field2 19392e95ad1Smrg basic_os= 19492e95ad1Smrg ;; 19592e95ad1Smrg *) 19692e95ad1Smrg basic_machine=$field1 19792e95ad1Smrg basic_os=$field2 19892e95ad1Smrg ;; 19992e95ad1Smrg esac 20092e95ad1Smrg ;; 20192e95ad1Smrg esac 202a6d9b409Smrg ;; 20392e95ad1Smrg *) 20492e95ad1Smrg # Convert single-component short-hands not valid as part of 20592e95ad1Smrg # multi-component configurations. 20692e95ad1Smrg case $field1 in 20792e95ad1Smrg 386bsd) 20892e95ad1Smrg basic_machine=i386-pc 20992e95ad1Smrg basic_os=bsd 21092e95ad1Smrg ;; 21192e95ad1Smrg a29khif) 21292e95ad1Smrg basic_machine=a29k-amd 21392e95ad1Smrg basic_os=udi 21492e95ad1Smrg ;; 21592e95ad1Smrg adobe68k) 21692e95ad1Smrg basic_machine=m68010-adobe 21792e95ad1Smrg basic_os=scout 21892e95ad1Smrg ;; 21992e95ad1Smrg alliant) 22092e95ad1Smrg basic_machine=fx80-alliant 22192e95ad1Smrg basic_os= 22292e95ad1Smrg ;; 22392e95ad1Smrg altos | altos3068) 22492e95ad1Smrg basic_machine=m68k-altos 22592e95ad1Smrg basic_os= 22692e95ad1Smrg ;; 22792e95ad1Smrg am29k) 22892e95ad1Smrg basic_machine=a29k-none 22992e95ad1Smrg basic_os=bsd 23092e95ad1Smrg ;; 23192e95ad1Smrg amdahl) 23292e95ad1Smrg basic_machine=580-amdahl 23392e95ad1Smrg basic_os=sysv 23492e95ad1Smrg ;; 23592e95ad1Smrg amiga) 23692e95ad1Smrg basic_machine=m68k-unknown 23792e95ad1Smrg basic_os= 23892e95ad1Smrg ;; 23992e95ad1Smrg amigaos | amigados) 24092e95ad1Smrg basic_machine=m68k-unknown 24192e95ad1Smrg basic_os=amigaos 24292e95ad1Smrg ;; 24392e95ad1Smrg amigaunix | amix) 24492e95ad1Smrg basic_machine=m68k-unknown 24592e95ad1Smrg basic_os=sysv4 24692e95ad1Smrg ;; 24792e95ad1Smrg apollo68) 24892e95ad1Smrg basic_machine=m68k-apollo 24992e95ad1Smrg basic_os=sysv 25092e95ad1Smrg ;; 25192e95ad1Smrg apollo68bsd) 25292e95ad1Smrg basic_machine=m68k-apollo 25392e95ad1Smrg basic_os=bsd 25492e95ad1Smrg ;; 25592e95ad1Smrg aros) 25692e95ad1Smrg basic_machine=i386-pc 25792e95ad1Smrg basic_os=aros 25892e95ad1Smrg ;; 25992e95ad1Smrg aux) 26092e95ad1Smrg basic_machine=m68k-apple 26192e95ad1Smrg basic_os=aux 26292e95ad1Smrg ;; 26392e95ad1Smrg balance) 26492e95ad1Smrg basic_machine=ns32k-sequent 26592e95ad1Smrg basic_os=dynix 26692e95ad1Smrg ;; 26792e95ad1Smrg blackfin) 26892e95ad1Smrg basic_machine=bfin-unknown 26992e95ad1Smrg basic_os=linux 27092e95ad1Smrg ;; 27192e95ad1Smrg cegcc) 27292e95ad1Smrg basic_machine=arm-unknown 27392e95ad1Smrg basic_os=cegcc 27492e95ad1Smrg ;; 27592e95ad1Smrg convex-c1) 27692e95ad1Smrg basic_machine=c1-convex 27792e95ad1Smrg basic_os=bsd 27892e95ad1Smrg ;; 27992e95ad1Smrg convex-c2) 28092e95ad1Smrg basic_machine=c2-convex 28192e95ad1Smrg basic_os=bsd 28292e95ad1Smrg ;; 28392e95ad1Smrg convex-c32) 28492e95ad1Smrg basic_machine=c32-convex 28592e95ad1Smrg basic_os=bsd 28692e95ad1Smrg ;; 28792e95ad1Smrg convex-c34) 28892e95ad1Smrg basic_machine=c34-convex 28992e95ad1Smrg basic_os=bsd 29092e95ad1Smrg ;; 29192e95ad1Smrg convex-c38) 29292e95ad1Smrg basic_machine=c38-convex 29392e95ad1Smrg basic_os=bsd 29492e95ad1Smrg ;; 29592e95ad1Smrg cray) 29692e95ad1Smrg basic_machine=j90-cray 29792e95ad1Smrg basic_os=unicos 29892e95ad1Smrg ;; 29992e95ad1Smrg crds | unos) 30092e95ad1Smrg basic_machine=m68k-crds 30192e95ad1Smrg basic_os= 30292e95ad1Smrg ;; 30392e95ad1Smrg da30) 30492e95ad1Smrg basic_machine=m68k-da30 30592e95ad1Smrg basic_os= 30692e95ad1Smrg ;; 30792e95ad1Smrg decstation | pmax | pmin | dec3100 | decstatn) 30892e95ad1Smrg basic_machine=mips-dec 30992e95ad1Smrg basic_os= 31092e95ad1Smrg ;; 31192e95ad1Smrg delta88) 31292e95ad1Smrg basic_machine=m88k-motorola 31392e95ad1Smrg basic_os=sysv3 31492e95ad1Smrg ;; 31592e95ad1Smrg dicos) 31692e95ad1Smrg basic_machine=i686-pc 31792e95ad1Smrg basic_os=dicos 31892e95ad1Smrg ;; 31992e95ad1Smrg djgpp) 32092e95ad1Smrg basic_machine=i586-pc 32192e95ad1Smrg basic_os=msdosdjgpp 32292e95ad1Smrg ;; 32392e95ad1Smrg ebmon29k) 32492e95ad1Smrg basic_machine=a29k-amd 32592e95ad1Smrg basic_os=ebmon 32692e95ad1Smrg ;; 32792e95ad1Smrg es1800 | OSE68k | ose68k | ose | OSE) 32892e95ad1Smrg basic_machine=m68k-ericsson 32992e95ad1Smrg basic_os=ose 33092e95ad1Smrg ;; 33192e95ad1Smrg gmicro) 33292e95ad1Smrg basic_machine=tron-gmicro 33392e95ad1Smrg basic_os=sysv 33492e95ad1Smrg ;; 33592e95ad1Smrg go32) 33692e95ad1Smrg basic_machine=i386-pc 33792e95ad1Smrg basic_os=go32 33892e95ad1Smrg ;; 33992e95ad1Smrg h8300hms) 34092e95ad1Smrg basic_machine=h8300-hitachi 34192e95ad1Smrg basic_os=hms 34292e95ad1Smrg ;; 34392e95ad1Smrg h8300xray) 34492e95ad1Smrg basic_machine=h8300-hitachi 34592e95ad1Smrg basic_os=xray 34692e95ad1Smrg ;; 34792e95ad1Smrg h8500hms) 34892e95ad1Smrg basic_machine=h8500-hitachi 34992e95ad1Smrg basic_os=hms 35092e95ad1Smrg ;; 35192e95ad1Smrg harris) 35292e95ad1Smrg basic_machine=m88k-harris 35392e95ad1Smrg basic_os=sysv3 35492e95ad1Smrg ;; 35592e95ad1Smrg hp300 | hp300hpux) 35692e95ad1Smrg basic_machine=m68k-hp 35792e95ad1Smrg basic_os=hpux 35892e95ad1Smrg ;; 35992e95ad1Smrg hp300bsd) 36092e95ad1Smrg basic_machine=m68k-hp 36192e95ad1Smrg basic_os=bsd 36292e95ad1Smrg ;; 36392e95ad1Smrg hppaosf) 36492e95ad1Smrg basic_machine=hppa1.1-hp 36592e95ad1Smrg basic_os=osf 36692e95ad1Smrg ;; 36792e95ad1Smrg hppro) 36892e95ad1Smrg basic_machine=hppa1.1-hp 36992e95ad1Smrg basic_os=proelf 37092e95ad1Smrg ;; 37192e95ad1Smrg i386mach) 37292e95ad1Smrg basic_machine=i386-mach 37392e95ad1Smrg basic_os=mach 37492e95ad1Smrg ;; 37592e95ad1Smrg isi68 | isi) 37692e95ad1Smrg basic_machine=m68k-isi 37792e95ad1Smrg basic_os=sysv 37892e95ad1Smrg ;; 37992e95ad1Smrg m68knommu) 38092e95ad1Smrg basic_machine=m68k-unknown 38192e95ad1Smrg basic_os=linux 38292e95ad1Smrg ;; 38392e95ad1Smrg magnum | m3230) 38492e95ad1Smrg basic_machine=mips-mips 38592e95ad1Smrg basic_os=sysv 38692e95ad1Smrg ;; 38792e95ad1Smrg merlin) 38892e95ad1Smrg basic_machine=ns32k-utek 38992e95ad1Smrg basic_os=sysv 39092e95ad1Smrg ;; 39192e95ad1Smrg mingw64) 39292e95ad1Smrg basic_machine=x86_64-pc 39392e95ad1Smrg basic_os=mingw64 39492e95ad1Smrg ;; 39592e95ad1Smrg mingw32) 39692e95ad1Smrg basic_machine=i686-pc 39792e95ad1Smrg basic_os=mingw32 39892e95ad1Smrg ;; 39992e95ad1Smrg mingw32ce) 40092e95ad1Smrg basic_machine=arm-unknown 40192e95ad1Smrg basic_os=mingw32ce 40292e95ad1Smrg ;; 40392e95ad1Smrg monitor) 40492e95ad1Smrg basic_machine=m68k-rom68k 40592e95ad1Smrg basic_os=coff 40692e95ad1Smrg ;; 40792e95ad1Smrg morphos) 40892e95ad1Smrg basic_machine=powerpc-unknown 40992e95ad1Smrg basic_os=morphos 41092e95ad1Smrg ;; 41192e95ad1Smrg moxiebox) 41292e95ad1Smrg basic_machine=moxie-unknown 41392e95ad1Smrg basic_os=moxiebox 41492e95ad1Smrg ;; 41592e95ad1Smrg msdos) 41692e95ad1Smrg basic_machine=i386-pc 41792e95ad1Smrg basic_os=msdos 41892e95ad1Smrg ;; 41992e95ad1Smrg msys) 42092e95ad1Smrg basic_machine=i686-pc 42192e95ad1Smrg basic_os=msys 42292e95ad1Smrg ;; 42392e95ad1Smrg mvs) 42492e95ad1Smrg basic_machine=i370-ibm 42592e95ad1Smrg basic_os=mvs 42692e95ad1Smrg ;; 42792e95ad1Smrg nacl) 42892e95ad1Smrg basic_machine=le32-unknown 42992e95ad1Smrg basic_os=nacl 43092e95ad1Smrg ;; 43192e95ad1Smrg ncr3000) 43292e95ad1Smrg basic_machine=i486-ncr 43392e95ad1Smrg basic_os=sysv4 43492e95ad1Smrg ;; 43592e95ad1Smrg netbsd386) 43692e95ad1Smrg basic_machine=i386-pc 43792e95ad1Smrg basic_os=netbsd 43892e95ad1Smrg ;; 43992e95ad1Smrg netwinder) 44092e95ad1Smrg basic_machine=armv4l-rebel 44192e95ad1Smrg basic_os=linux 44292e95ad1Smrg ;; 44392e95ad1Smrg news | news700 | news800 | news900) 44492e95ad1Smrg basic_machine=m68k-sony 44592e95ad1Smrg basic_os=newsos 44692e95ad1Smrg ;; 44792e95ad1Smrg news1000) 44892e95ad1Smrg basic_machine=m68030-sony 44992e95ad1Smrg basic_os=newsos 45092e95ad1Smrg ;; 45192e95ad1Smrg necv70) 45292e95ad1Smrg basic_machine=v70-nec 45392e95ad1Smrg basic_os=sysv 45492e95ad1Smrg ;; 45592e95ad1Smrg nh3000) 45692e95ad1Smrg basic_machine=m68k-harris 45792e95ad1Smrg basic_os=cxux 45892e95ad1Smrg ;; 45992e95ad1Smrg nh[45]000) 46092e95ad1Smrg basic_machine=m88k-harris 46192e95ad1Smrg basic_os=cxux 46292e95ad1Smrg ;; 46392e95ad1Smrg nindy960) 46492e95ad1Smrg basic_machine=i960-intel 46592e95ad1Smrg basic_os=nindy 46692e95ad1Smrg ;; 46792e95ad1Smrg mon960) 46892e95ad1Smrg basic_machine=i960-intel 46992e95ad1Smrg basic_os=mon960 47092e95ad1Smrg ;; 47192e95ad1Smrg nonstopux) 47292e95ad1Smrg basic_machine=mips-compaq 47392e95ad1Smrg basic_os=nonstopux 47492e95ad1Smrg ;; 47592e95ad1Smrg os400) 47692e95ad1Smrg basic_machine=powerpc-ibm 47792e95ad1Smrg basic_os=os400 47892e95ad1Smrg ;; 47992e95ad1Smrg OSE68000 | ose68000) 48092e95ad1Smrg basic_machine=m68000-ericsson 48192e95ad1Smrg basic_os=ose 48292e95ad1Smrg ;; 48392e95ad1Smrg os68k) 48492e95ad1Smrg basic_machine=m68k-none 48592e95ad1Smrg basic_os=os68k 48692e95ad1Smrg ;; 48792e95ad1Smrg paragon) 48892e95ad1Smrg basic_machine=i860-intel 48992e95ad1Smrg basic_os=osf 49092e95ad1Smrg ;; 49192e95ad1Smrg parisc) 49292e95ad1Smrg basic_machine=hppa-unknown 49392e95ad1Smrg basic_os=linux 49492e95ad1Smrg ;; 49592e95ad1Smrg psp) 49692e95ad1Smrg basic_machine=mipsallegrexel-sony 49792e95ad1Smrg basic_os=psp 49892e95ad1Smrg ;; 49992e95ad1Smrg pw32) 50092e95ad1Smrg basic_machine=i586-unknown 50192e95ad1Smrg basic_os=pw32 50292e95ad1Smrg ;; 50392e95ad1Smrg rdos | rdos64) 50492e95ad1Smrg basic_machine=x86_64-pc 50592e95ad1Smrg basic_os=rdos 50692e95ad1Smrg ;; 50792e95ad1Smrg rdos32) 50892e95ad1Smrg basic_machine=i386-pc 50992e95ad1Smrg basic_os=rdos 51092e95ad1Smrg ;; 51192e95ad1Smrg rom68k) 51292e95ad1Smrg basic_machine=m68k-rom68k 51392e95ad1Smrg basic_os=coff 51492e95ad1Smrg ;; 51592e95ad1Smrg sa29200) 51692e95ad1Smrg basic_machine=a29k-amd 51792e95ad1Smrg basic_os=udi 51892e95ad1Smrg ;; 51992e95ad1Smrg sei) 52092e95ad1Smrg basic_machine=mips-sei 52192e95ad1Smrg basic_os=seiux 52292e95ad1Smrg ;; 52392e95ad1Smrg sequent) 52492e95ad1Smrg basic_machine=i386-sequent 52592e95ad1Smrg basic_os= 52692e95ad1Smrg ;; 52792e95ad1Smrg sps7) 52892e95ad1Smrg basic_machine=m68k-bull 52992e95ad1Smrg basic_os=sysv2 53092e95ad1Smrg ;; 53192e95ad1Smrg st2000) 53292e95ad1Smrg basic_machine=m68k-tandem 53392e95ad1Smrg basic_os= 53492e95ad1Smrg ;; 53592e95ad1Smrg stratus) 53692e95ad1Smrg basic_machine=i860-stratus 53792e95ad1Smrg basic_os=sysv4 53892e95ad1Smrg ;; 53992e95ad1Smrg sun2) 54092e95ad1Smrg basic_machine=m68000-sun 54192e95ad1Smrg basic_os= 54292e95ad1Smrg ;; 54392e95ad1Smrg sun2os3) 54492e95ad1Smrg basic_machine=m68000-sun 54592e95ad1Smrg basic_os=sunos3 54692e95ad1Smrg ;; 54792e95ad1Smrg sun2os4) 54892e95ad1Smrg basic_machine=m68000-sun 54992e95ad1Smrg basic_os=sunos4 55092e95ad1Smrg ;; 55192e95ad1Smrg sun3) 55292e95ad1Smrg basic_machine=m68k-sun 55392e95ad1Smrg basic_os= 55492e95ad1Smrg ;; 55592e95ad1Smrg sun3os3) 55692e95ad1Smrg basic_machine=m68k-sun 55792e95ad1Smrg basic_os=sunos3 55892e95ad1Smrg ;; 55992e95ad1Smrg sun3os4) 56092e95ad1Smrg basic_machine=m68k-sun 56192e95ad1Smrg basic_os=sunos4 56292e95ad1Smrg ;; 56392e95ad1Smrg sun4) 56492e95ad1Smrg basic_machine=sparc-sun 56592e95ad1Smrg basic_os= 56692e95ad1Smrg ;; 56792e95ad1Smrg sun4os3) 56892e95ad1Smrg basic_machine=sparc-sun 56992e95ad1Smrg basic_os=sunos3 57092e95ad1Smrg ;; 57192e95ad1Smrg sun4os4) 57292e95ad1Smrg basic_machine=sparc-sun 57392e95ad1Smrg basic_os=sunos4 57492e95ad1Smrg ;; 57592e95ad1Smrg sun4sol2) 57692e95ad1Smrg basic_machine=sparc-sun 57792e95ad1Smrg basic_os=solaris2 57892e95ad1Smrg ;; 57992e95ad1Smrg sun386 | sun386i | roadrunner) 58092e95ad1Smrg basic_machine=i386-sun 58192e95ad1Smrg basic_os= 58292e95ad1Smrg ;; 58392e95ad1Smrg sv1) 58492e95ad1Smrg basic_machine=sv1-cray 58592e95ad1Smrg basic_os=unicos 58692e95ad1Smrg ;; 58792e95ad1Smrg symmetry) 58892e95ad1Smrg basic_machine=i386-sequent 58992e95ad1Smrg basic_os=dynix 59092e95ad1Smrg ;; 59192e95ad1Smrg t3e) 59292e95ad1Smrg basic_machine=alphaev5-cray 59392e95ad1Smrg basic_os=unicos 59492e95ad1Smrg ;; 59592e95ad1Smrg t90) 59692e95ad1Smrg basic_machine=t90-cray 59792e95ad1Smrg basic_os=unicos 59892e95ad1Smrg ;; 59992e95ad1Smrg toad1) 60092e95ad1Smrg basic_machine=pdp10-xkl 60192e95ad1Smrg basic_os=tops20 60292e95ad1Smrg ;; 60392e95ad1Smrg tpf) 60492e95ad1Smrg basic_machine=s390x-ibm 60592e95ad1Smrg basic_os=tpf 60692e95ad1Smrg ;; 60792e95ad1Smrg udi29k) 60892e95ad1Smrg basic_machine=a29k-amd 60992e95ad1Smrg basic_os=udi 61092e95ad1Smrg ;; 61192e95ad1Smrg ultra3) 61292e95ad1Smrg basic_machine=a29k-nyu 61392e95ad1Smrg basic_os=sym1 61492e95ad1Smrg ;; 61592e95ad1Smrg v810 | necv810) 61692e95ad1Smrg basic_machine=v810-nec 61792e95ad1Smrg basic_os=none 61892e95ad1Smrg ;; 61992e95ad1Smrg vaxv) 62092e95ad1Smrg basic_machine=vax-dec 62192e95ad1Smrg basic_os=sysv 62292e95ad1Smrg ;; 62392e95ad1Smrg vms) 62492e95ad1Smrg basic_machine=vax-dec 62592e95ad1Smrg basic_os=vms 62692e95ad1Smrg ;; 62792e95ad1Smrg vsta) 62892e95ad1Smrg basic_machine=i386-pc 62992e95ad1Smrg basic_os=vsta 63092e95ad1Smrg ;; 63192e95ad1Smrg vxworks960) 63292e95ad1Smrg basic_machine=i960-wrs 63392e95ad1Smrg basic_os=vxworks 63492e95ad1Smrg ;; 63592e95ad1Smrg vxworks68) 63692e95ad1Smrg basic_machine=m68k-wrs 63792e95ad1Smrg basic_os=vxworks 63892e95ad1Smrg ;; 63992e95ad1Smrg vxworks29k) 64092e95ad1Smrg basic_machine=a29k-wrs 64192e95ad1Smrg basic_os=vxworks 64292e95ad1Smrg ;; 64392e95ad1Smrg xbox) 64492e95ad1Smrg basic_machine=i686-pc 64592e95ad1Smrg basic_os=mingw32 64692e95ad1Smrg ;; 64792e95ad1Smrg ymp) 64892e95ad1Smrg basic_machine=ymp-cray 64992e95ad1Smrg basic_os=unicos 65092e95ad1Smrg ;; 65192e95ad1Smrg *) 65292e95ad1Smrg basic_machine=$1 65392e95ad1Smrg basic_os= 65492e95ad1Smrg ;; 65592e95ad1Smrg esac 656a6d9b409Smrg ;; 657a6d9b409Smrgesac 658a6d9b409Smrg 65992e95ad1Smrg# Decode 1-component or ad-hoc basic machines 660a6d9b409Smrgcase $basic_machine in 66192e95ad1Smrg # Here we handle the default manufacturer of certain CPU types. It is in 66292e95ad1Smrg # some cases the only manufacturer, in others, it is the most popular. 66392e95ad1Smrg w89k) 66492e95ad1Smrg cpu=hppa1.1 66592e95ad1Smrg vendor=winbond 666b91640d3Smrg ;; 66792e95ad1Smrg op50n) 66892e95ad1Smrg cpu=hppa1.1 66992e95ad1Smrg vendor=oki 670a6d9b409Smrg ;; 67192e95ad1Smrg op60c) 67292e95ad1Smrg cpu=hppa1.1 67392e95ad1Smrg vendor=oki 674a6d9b409Smrg ;; 67592e95ad1Smrg ibm*) 67692e95ad1Smrg cpu=i370 67792e95ad1Smrg vendor=ibm 678cae39615Smrg ;; 67992e95ad1Smrg orion105) 68092e95ad1Smrg cpu=clipper 68192e95ad1Smrg vendor=highlevel 682b91640d3Smrg ;; 68392e95ad1Smrg mac | mpw | mac-mpw) 68492e95ad1Smrg cpu=m68k 68592e95ad1Smrg vendor=apple 686a097bd00Smrg ;; 68792e95ad1Smrg pmac | pmac-mpw) 68892e95ad1Smrg cpu=powerpc 68992e95ad1Smrg vendor=apple 690a097bd00Smrg ;; 691a097bd00Smrg 692a6d9b409Smrg # Recognize the various machine names and aliases which stand 693a6d9b409Smrg # for a CPU type and a company and sometimes even an OS. 694a6d9b409Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69592e95ad1Smrg cpu=m68000 69692e95ad1Smrg vendor=att 697a6d9b409Smrg ;; 698a6d9b409Smrg 3b*) 69992e95ad1Smrg cpu=we32k 70092e95ad1Smrg vendor=att 701cae39615Smrg ;; 7021e5fa1c5Smrg bluegene*) 70392e95ad1Smrg cpu=powerpc 70492e95ad1Smrg vendor=ibm 70592e95ad1Smrg basic_os=cnk 706a6d9b409Smrg ;; 707a6d9b409Smrg decsystem10* | dec10*) 70892e95ad1Smrg cpu=pdp10 70992e95ad1Smrg vendor=dec 71092e95ad1Smrg basic_os=tops10 711a6d9b409Smrg ;; 712a6d9b409Smrg decsystem20* | dec20*) 71392e95ad1Smrg cpu=pdp10 71492e95ad1Smrg vendor=dec 71592e95ad1Smrg basic_os=tops20 716a6d9b409Smrg ;; 717a6d9b409Smrg delta | 3300 | motorola-3300 | motorola-delta \ 718a6d9b409Smrg | 3300-motorola | delta-motorola) 71992e95ad1Smrg cpu=m68k 72092e95ad1Smrg vendor=motorola 721a6d9b409Smrg ;; 7228b8e729cSmrg dpx2*) 72392e95ad1Smrg cpu=m68k 72492e95ad1Smrg vendor=bull 72592e95ad1Smrg basic_os=sysv3 726a6d9b409Smrg ;; 727a6d9b409Smrg encore | umax | mmax) 72892e95ad1Smrg cpu=ns32k 72992e95ad1Smrg vendor=encore 730a6d9b409Smrg ;; 73192e95ad1Smrg elxsi) 73292e95ad1Smrg cpu=elxsi 73392e95ad1Smrg vendor=elxsi 73492e95ad1Smrg basic_os=${basic_os:-bsd} 735a6d9b409Smrg ;; 736a6d9b409Smrg fx2800) 73792e95ad1Smrg cpu=i860 73892e95ad1Smrg vendor=alliant 739a6d9b409Smrg ;; 740a6d9b409Smrg genix) 74192e95ad1Smrg cpu=ns32k 74292e95ad1Smrg vendor=ns 743a6d9b409Smrg ;; 744a6d9b409Smrg h3050r* | hiux*) 74592e95ad1Smrg cpu=hppa1.1 74692e95ad1Smrg vendor=hitachi 74792e95ad1Smrg basic_os=hiuxwe2 748a6d9b409Smrg ;; 749a6d9b409Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 75092e95ad1Smrg cpu=hppa1.0 75192e95ad1Smrg vendor=hp 752a6d9b409Smrg ;; 753a6d9b409Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 75492e95ad1Smrg cpu=m68000 75592e95ad1Smrg vendor=hp 756a6d9b409Smrg ;; 757a6d9b409Smrg hp9k3[2-9][0-9]) 75892e95ad1Smrg cpu=m68k 75992e95ad1Smrg vendor=hp 760a6d9b409Smrg ;; 761a6d9b409Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76292e95ad1Smrg cpu=hppa1.0 76392e95ad1Smrg vendor=hp 764a6d9b409Smrg ;; 765a6d9b409Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76692e95ad1Smrg cpu=hppa1.1 76792e95ad1Smrg vendor=hp 768a6d9b409Smrg ;; 769a6d9b409Smrg hp9k78[0-9] | hp78[0-9]) 770a6d9b409Smrg # FIXME: really hppa2.0-hp 77192e95ad1Smrg cpu=hppa1.1 77292e95ad1Smrg vendor=hp 773a6d9b409Smrg ;; 774a6d9b409Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 775a6d9b409Smrg # FIXME: really hppa2.0-hp 77692e95ad1Smrg cpu=hppa1.1 77792e95ad1Smrg vendor=hp 778a6d9b409Smrg ;; 779a6d9b409Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 78092e95ad1Smrg cpu=hppa1.1 78192e95ad1Smrg vendor=hp 782a6d9b409Smrg ;; 783a6d9b409Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78492e95ad1Smrg cpu=hppa1.0 78592e95ad1Smrg vendor=hp 786a6d9b409Smrg ;; 787a6d9b409Smrg i*86v32) 78892e95ad1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78992e95ad1Smrg vendor=pc 79092e95ad1Smrg basic_os=sysv32 791a6d9b409Smrg ;; 792a6d9b409Smrg i*86v4*) 79392e95ad1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79492e95ad1Smrg vendor=pc 79592e95ad1Smrg basic_os=sysv4 796a6d9b409Smrg ;; 797a6d9b409Smrg i*86v) 79892e95ad1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79992e95ad1Smrg vendor=pc 80092e95ad1Smrg basic_os=sysv 801a6d9b409Smrg ;; 802a6d9b409Smrg i*86sol2) 80392e95ad1Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80492e95ad1Smrg vendor=pc 80592e95ad1Smrg basic_os=solaris2 806a6d9b409Smrg ;; 80792e95ad1Smrg j90 | j90-cray) 80892e95ad1Smrg cpu=j90 80992e95ad1Smrg vendor=cray 81092e95ad1Smrg basic_os=${basic_os:-unicos} 811a6d9b409Smrg ;; 812a6d9b409Smrg iris | iris4d) 81392e95ad1Smrg cpu=mips 81492e95ad1Smrg vendor=sgi 81592e95ad1Smrg case $basic_os in 81692e95ad1Smrg irix*) 817a6d9b409Smrg ;; 818a6d9b409Smrg *) 81992e95ad1Smrg basic_os=irix4 820a6d9b409Smrg ;; 821a6d9b409Smrg esac 822a6d9b409Smrg ;; 823a6d9b409Smrg miniframe) 82492e95ad1Smrg cpu=m68000 82592e95ad1Smrg vendor=convergent 826a6d9b409Smrg ;; 82792e95ad1Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82892e95ad1Smrg cpu=m68k 82992e95ad1Smrg vendor=atari 83092e95ad1Smrg basic_os=mint 831a6d9b409Smrg ;; 832a6d9b409Smrg news-3600 | risc-news) 83392e95ad1Smrg cpu=mips 83492e95ad1Smrg vendor=sony 83592e95ad1Smrg basic_os=newsos 836a6d9b409Smrg ;; 8378b8e729cSmrg next | m*-next) 83892e95ad1Smrg cpu=m68k 83992e95ad1Smrg vendor=next 84092e95ad1Smrg case $basic_os in 84192e95ad1Smrg openstep*) 84292e95ad1Smrg ;; 84392e95ad1Smrg nextstep*) 844a6d9b409Smrg ;; 84592e95ad1Smrg ns2*) 84692e95ad1Smrg basic_os=nextstep2 847a6d9b409Smrg ;; 848a6d9b409Smrg *) 84992e95ad1Smrg basic_os=nextstep3 850a6d9b409Smrg ;; 851a6d9b409Smrg esac 852a6d9b409Smrg ;; 853a6d9b409Smrg np1) 85492e95ad1Smrg cpu=np1 85592e95ad1Smrg vendor=gould 8568b8e729cSmrg ;; 857a6d9b409Smrg op50n-* | op60c-*) 85892e95ad1Smrg cpu=hppa1.1 85992e95ad1Smrg vendor=oki 86092e95ad1Smrg basic_os=proelf 861a6d9b409Smrg ;; 862a6d9b409Smrg pa-hitachi) 86392e95ad1Smrg cpu=hppa1.1 86492e95ad1Smrg vendor=hitachi 86592e95ad1Smrg basic_os=hiuxwe2 866cae39615Smrg ;; 867a6d9b409Smrg pbd) 86892e95ad1Smrg cpu=sparc 86992e95ad1Smrg vendor=tti 870a6d9b409Smrg ;; 871a6d9b409Smrg pbb) 87292e95ad1Smrg cpu=m68k 87392e95ad1Smrg vendor=tti 874a6d9b409Smrg ;; 87592e95ad1Smrg pc532) 87692e95ad1Smrg cpu=ns32k 87792e95ad1Smrg vendor=pc532 878a6d9b409Smrg ;; 879a6d9b409Smrg pn) 88092e95ad1Smrg cpu=pn 88192e95ad1Smrg vendor=gould 882a6d9b409Smrg ;; 88392e95ad1Smrg power) 88492e95ad1Smrg cpu=power 88592e95ad1Smrg vendor=ibm 886a6d9b409Smrg ;; 88792e95ad1Smrg ps2) 88892e95ad1Smrg cpu=i386 88992e95ad1Smrg vendor=ibm 890a6d9b409Smrg ;; 89192e95ad1Smrg rm[46]00) 89292e95ad1Smrg cpu=mips 89392e95ad1Smrg vendor=siemens 894a6d9b409Smrg ;; 89592e95ad1Smrg rtpc | rtpc-*) 89692e95ad1Smrg cpu=romp 89792e95ad1Smrg vendor=ibm 898a6d9b409Smrg ;; 89992e95ad1Smrg sde) 90092e95ad1Smrg cpu=mipsisa32 90192e95ad1Smrg vendor=sde 90292e95ad1Smrg basic_os=${basic_os:-elf} 903a6d9b409Smrg ;; 90492e95ad1Smrg simso-wrs) 90592e95ad1Smrg cpu=sparclite 90692e95ad1Smrg vendor=wrs 90792e95ad1Smrg basic_os=vxworks 908a6d9b409Smrg ;; 90992e95ad1Smrg tower | tower-32) 91092e95ad1Smrg cpu=m68k 91192e95ad1Smrg vendor=ncr 912a6d9b409Smrg ;; 91392e95ad1Smrg vpp*|vx|vx-*) 91492e95ad1Smrg cpu=f301 91592e95ad1Smrg vendor=fujitsu 916b91640d3Smrg ;; 91792e95ad1Smrg w65) 91892e95ad1Smrg cpu=w65 91992e95ad1Smrg vendor=wdc 920cae39615Smrg ;; 92192e95ad1Smrg w89k-*) 92292e95ad1Smrg cpu=hppa1.1 92392e95ad1Smrg vendor=winbond 92492e95ad1Smrg basic_os=proelf 925a6d9b409Smrg ;; 92692e95ad1Smrg none) 92792e95ad1Smrg cpu=none 92892e95ad1Smrg vendor=none 929a6d9b409Smrg ;; 93092e95ad1Smrg leon|leon[3-9]) 93192e95ad1Smrg cpu=sparc 93292e95ad1Smrg vendor=$basic_machine 933a6d9b409Smrg ;; 93492e95ad1Smrg leon-*|leon[3-9]-*) 93592e95ad1Smrg cpu=sparc 93692e95ad1Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 937a6d9b409Smrg ;; 93892e95ad1Smrg 93992e95ad1Smrg *-*) 94092e95ad1Smrg # shellcheck disable=SC2162 94192e95ad1Smrg saved_IFS=$IFS 94292e95ad1Smrg IFS="-" read cpu vendor <<EOF 94392e95ad1Smrg$basic_machine 94492e95ad1SmrgEOF 94592e95ad1Smrg IFS=$saved_IFS 946a6d9b409Smrg ;; 947838f5b0bSmrg # We use 'pc' rather than 'unknown' 94892e95ad1Smrg # because (1) that's what they normally are, and 94992e95ad1Smrg # (2) the word "unknown" tends to confuse beginning users. 95092e95ad1Smrg i*86 | x86_64) 95192e95ad1Smrg cpu=$basic_machine 95292e95ad1Smrg vendor=pc 953a6d9b409Smrg ;; 95492e95ad1Smrg # These rules are duplicated from below for sake of the special case above; 95592e95ad1Smrg # i.e. things that normalized to x86 arches should also default to "pc" 95692e95ad1Smrg pc98) 95792e95ad1Smrg cpu=i386 95892e95ad1Smrg vendor=pc 959a6d9b409Smrg ;; 96092e95ad1Smrg x64 | amd64) 96192e95ad1Smrg cpu=x86_64 96292e95ad1Smrg vendor=pc 963a6d9b409Smrg ;; 96492e95ad1Smrg # Recognize the basic CPU types without company name. 96592e95ad1Smrg *) 96692e95ad1Smrg cpu=$basic_machine 96792e95ad1Smrg vendor=unknown 968cae39615Smrg ;; 96992e95ad1Smrgesac 97092e95ad1Smrg 97192e95ad1Smrgunset -v basic_machine 97292e95ad1Smrg 97392e95ad1Smrg# Decode basic machines in the full and proper CPU-Company form. 97492e95ad1Smrgcase $cpu-$vendor in 97592e95ad1Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97692e95ad1Smrg # some cases the only manufacturer, in others, it is the most popular. 97792e95ad1Smrg craynv-unknown) 97892e95ad1Smrg vendor=cray 97992e95ad1Smrg basic_os=${basic_os:-unicosmp} 980a6d9b409Smrg ;; 98192e95ad1Smrg c90-unknown | c90-cray) 98292e95ad1Smrg vendor=cray 98392e95ad1Smrg basic_os=${Basic_os:-unicos} 984a6d9b409Smrg ;; 98592e95ad1Smrg fx80-unknown) 98692e95ad1Smrg vendor=alliant 987cae39615Smrg ;; 98892e95ad1Smrg romp-unknown) 98992e95ad1Smrg vendor=ibm 990a6d9b409Smrg ;; 99192e95ad1Smrg mmix-unknown) 99292e95ad1Smrg vendor=knuth 993a6d9b409Smrg ;; 99492e95ad1Smrg microblaze-unknown | microblazeel-unknown) 99592e95ad1Smrg vendor=xilinx 996a6d9b409Smrg ;; 99792e95ad1Smrg rs6000-unknown) 99892e95ad1Smrg vendor=ibm 999a6d9b409Smrg ;; 100092e95ad1Smrg vax-unknown) 100192e95ad1Smrg vendor=dec 1002a6d9b409Smrg ;; 100392e95ad1Smrg pdp11-unknown) 100492e95ad1Smrg vendor=dec 1005a097bd00Smrg ;; 100692e95ad1Smrg we32k-unknown) 100792e95ad1Smrg vendor=att 1008a6d9b409Smrg ;; 100992e95ad1Smrg cydra-unknown) 101092e95ad1Smrg vendor=cydrome 1011a6d9b409Smrg ;; 101292e95ad1Smrg i370-ibm*) 101392e95ad1Smrg vendor=ibm 1014a6d9b409Smrg ;; 101592e95ad1Smrg orion-unknown) 101692e95ad1Smrg vendor=highlevel 1017a6d9b409Smrg ;; 101892e95ad1Smrg xps-unknown | xps100-unknown) 101992e95ad1Smrg cpu=xps100 102092e95ad1Smrg vendor=honeywell 1021a6d9b409Smrg ;; 102292e95ad1Smrg 102392e95ad1Smrg # Here we normalize CPU types with a missing or matching vendor 1024838f5b0bSmrg armh-unknown | armh-alt) 1025838f5b0bSmrg cpu=armv7l 1026838f5b0bSmrg vendor=alt 1027838f5b0bSmrg basic_os=${basic_os:-linux-gnueabihf} 1028838f5b0bSmrg ;; 102992e95ad1Smrg dpx20-unknown | dpx20-bull) 103092e95ad1Smrg cpu=rs6000 103192e95ad1Smrg vendor=bull 103292e95ad1Smrg basic_os=${basic_os:-bosx} 1033a6d9b409Smrg ;; 103492e95ad1Smrg 103592e95ad1Smrg # Here we normalize CPU types irrespective of the vendor 103692e95ad1Smrg amd64-*) 103792e95ad1Smrg cpu=x86_64 1038a6d9b409Smrg ;; 103992e95ad1Smrg blackfin-*) 104092e95ad1Smrg cpu=bfin 104192e95ad1Smrg basic_os=linux 1042a6d9b409Smrg ;; 104392e95ad1Smrg c54x-*) 104492e95ad1Smrg cpu=tic54x 1045a6d9b409Smrg ;; 104692e95ad1Smrg c55x-*) 104792e95ad1Smrg cpu=tic55x 1048a6d9b409Smrg ;; 104992e95ad1Smrg c6x-*) 105092e95ad1Smrg cpu=tic6x 1051a6d9b409Smrg ;; 105292e95ad1Smrg e500v[12]-*) 105392e95ad1Smrg cpu=powerpc 105492e95ad1Smrg basic_os=${basic_os}"spe" 1055a6d9b409Smrg ;; 105692e95ad1Smrg mips3*-*) 105792e95ad1Smrg cpu=mips64 1058a6d9b409Smrg ;; 105992e95ad1Smrg ms1-*) 106092e95ad1Smrg cpu=mt 1061a6d9b409Smrg ;; 106292e95ad1Smrg m68knommu-*) 106392e95ad1Smrg cpu=m68k 106492e95ad1Smrg basic_os=linux 1065a6d9b409Smrg ;; 106692e95ad1Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106792e95ad1Smrg cpu=s12z 1068efda2da8Smrg ;; 106992e95ad1Smrg openrisc-*) 107092e95ad1Smrg cpu=or32 1071a6d9b409Smrg ;; 107292e95ad1Smrg parisc-*) 107392e95ad1Smrg cpu=hppa 107492e95ad1Smrg basic_os=linux 1075a6d9b409Smrg ;; 107692e95ad1Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107792e95ad1Smrg cpu=i586 1078a6d9b409Smrg ;; 1079838f5b0bSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 108092e95ad1Smrg cpu=i686 1081a6d9b409Smrg ;; 108292e95ad1Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 108392e95ad1Smrg cpu=i686 1084a6d9b409Smrg ;; 108592e95ad1Smrg pentium4-*) 108692e95ad1Smrg cpu=i786 1087a6d9b409Smrg ;; 108892e95ad1Smrg pc98-*) 108992e95ad1Smrg cpu=i386 1090a6d9b409Smrg ;; 109192e95ad1Smrg ppc-* | ppcbe-*) 109292e95ad1Smrg cpu=powerpc 1093a6d9b409Smrg ;; 109492e95ad1Smrg ppcle-* | powerpclittle-*) 109592e95ad1Smrg cpu=powerpcle 1096a6d9b409Smrg ;; 109792e95ad1Smrg ppc64-*) 109892e95ad1Smrg cpu=powerpc64 1099a6d9b409Smrg ;; 110092e95ad1Smrg ppc64le-* | powerpc64little-*) 110192e95ad1Smrg cpu=powerpc64le 1102a6d9b409Smrg ;; 110392e95ad1Smrg sb1-*) 110492e95ad1Smrg cpu=mipsisa64sb1 1105a6d9b409Smrg ;; 110692e95ad1Smrg sb1el-*) 110792e95ad1Smrg cpu=mipsisa64sb1el 1108a6d9b409Smrg ;; 110992e95ad1Smrg sh5e[lb]-*) 111092e95ad1Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1111a6d9b409Smrg ;; 111292e95ad1Smrg spur-*) 111392e95ad1Smrg cpu=spur 1114a6d9b409Smrg ;; 111592e95ad1Smrg strongarm-* | thumb-*) 111692e95ad1Smrg cpu=arm 1117a6d9b409Smrg ;; 111892e95ad1Smrg tx39-*) 111992e95ad1Smrg cpu=mipstx39 11208b8e729cSmrg ;; 112192e95ad1Smrg tx39el-*) 112292e95ad1Smrg cpu=mipstx39el 1123a6d9b409Smrg ;; 112492e95ad1Smrg x64-*) 112592e95ad1Smrg cpu=x86_64 1126a6d9b409Smrg ;; 1127a097bd00Smrg xscale-* | xscalee[bl]-*) 112892e95ad1Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1129a6d9b409Smrg ;; 1130838f5b0bSmrg arm64-* | aarch64le-*) 113192e95ad1Smrg cpu=aarch64 1132a6d9b409Smrg ;; 1133a6d9b409Smrg 113492e95ad1Smrg # Recognize the canonical CPU Types that limit and/or modify the 113592e95ad1Smrg # company names they are paired with. 113692e95ad1Smrg cr16-*) 113792e95ad1Smrg basic_os=${basic_os:-elf} 1138a6d9b409Smrg ;; 113992e95ad1Smrg crisv32-* | etraxfs*-*) 114092e95ad1Smrg cpu=crisv32 114192e95ad1Smrg vendor=axis 1142a6d9b409Smrg ;; 114392e95ad1Smrg cris-* | etrax*-*) 114492e95ad1Smrg cpu=cris 114592e95ad1Smrg vendor=axis 1146a6d9b409Smrg ;; 114792e95ad1Smrg crx-*) 114892e95ad1Smrg basic_os=${basic_os:-elf} 1149a6d9b409Smrg ;; 115092e95ad1Smrg neo-tandem) 115192e95ad1Smrg cpu=neo 115292e95ad1Smrg vendor=tandem 1153a6d9b409Smrg ;; 115492e95ad1Smrg nse-tandem) 115592e95ad1Smrg cpu=nse 115692e95ad1Smrg vendor=tandem 1157a6d9b409Smrg ;; 115892e95ad1Smrg nsr-tandem) 115992e95ad1Smrg cpu=nsr 116092e95ad1Smrg vendor=tandem 1161a6d9b409Smrg ;; 116292e95ad1Smrg nsv-tandem) 116392e95ad1Smrg cpu=nsv 116492e95ad1Smrg vendor=tandem 1165a6d9b409Smrg ;; 116692e95ad1Smrg nsx-tandem) 116792e95ad1Smrg cpu=nsx 116892e95ad1Smrg vendor=tandem 1169a6d9b409Smrg ;; 117092e95ad1Smrg mipsallegrexel-sony) 117192e95ad1Smrg cpu=mipsallegrexel 117292e95ad1Smrg vendor=sony 1173a6d9b409Smrg ;; 117492e95ad1Smrg tile*-*) 117592e95ad1Smrg basic_os=${basic_os:-linux-gnu} 1176a6d9b409Smrg ;; 117792e95ad1Smrg 1178a6d9b409Smrg *) 117992e95ad1Smrg # Recognize the canonical CPU types that are allowed with any 118092e95ad1Smrg # company name. 118192e95ad1Smrg case $cpu in 118292e95ad1Smrg 1750a | 580 \ 118392e95ad1Smrg | a29k \ 1184838f5b0bSmrg | aarch64 | aarch64_be | aarch64c | arm64ec \ 118592e95ad1Smrg | abacus \ 118692e95ad1Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118792e95ad1Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118892e95ad1Smrg | alphapca5[67] | alpha64pca5[67] \ 118992e95ad1Smrg | am33_2.0 \ 119092e95ad1Smrg | amdgcn \ 119192e95ad1Smrg | arc | arceb | arc32 | arc64 \ 119292e95ad1Smrg | arm | arm[lb]e | arme[lb] | armv* \ 119392e95ad1Smrg | avr | avr32 \ 119492e95ad1Smrg | asmjs \ 119592e95ad1Smrg | ba \ 119692e95ad1Smrg | be32 | be64 \ 119792e95ad1Smrg | bfin | bpf | bs2000 \ 119892e95ad1Smrg | c[123]* | c30 | [cjt]90 | c4x \ 119992e95ad1Smrg | c8051 | clipper | craynv | csky | cydra \ 120092e95ad1Smrg | d10v | d30v | dlx | dsp16xx \ 120192e95ad1Smrg | e2k | elxsi | epiphany \ 120292e95ad1Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1203838f5b0bSmrg | javascript \ 120492e95ad1Smrg | h8300 | h8500 \ 120592e95ad1Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 120692e95ad1Smrg | hexagon \ 120792e95ad1Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120892e95ad1Smrg | ip2k | iq2000 \ 120992e95ad1Smrg | k1om \ 1210838f5b0bSmrg | kvx \ 121192e95ad1Smrg | le32 | le64 \ 121292e95ad1Smrg | lm32 \ 1213838f5b0bSmrg | loongarch32 | loongarch64 \ 121492e95ad1Smrg | m32c | m32r | m32rle \ 121592e95ad1Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 121692e95ad1Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 121792e95ad1Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121892e95ad1Smrg | microblaze | microblazeel \ 1219838f5b0bSmrg | mips* \ 122092e95ad1Smrg | mmix \ 122192e95ad1Smrg | mn10200 | mn10300 \ 122292e95ad1Smrg | moxie \ 122392e95ad1Smrg | mt \ 122492e95ad1Smrg | msp430 \ 1225838f5b0bSmrg | nanomips* \ 122692e95ad1Smrg | nds32 | nds32le | nds32be \ 122792e95ad1Smrg | nfp \ 122892e95ad1Smrg | nios | nios2 | nios2eb | nios2el \ 122992e95ad1Smrg | none | np1 | ns16k | ns32k | nvptx \ 123092e95ad1Smrg | open8 \ 123192e95ad1Smrg | or1k* \ 123292e95ad1Smrg | or32 \ 123392e95ad1Smrg | orion \ 123492e95ad1Smrg | picochip \ 123592e95ad1Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 123692e95ad1Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 123792e95ad1Smrg | pru \ 123892e95ad1Smrg | pyramid \ 123992e95ad1Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 124092e95ad1Smrg | rl78 | romp | rs6000 | rx \ 124192e95ad1Smrg | s390 | s390x \ 124292e95ad1Smrg | score \ 124392e95ad1Smrg | sh | shl \ 124492e95ad1Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 124592e95ad1Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 124692e95ad1Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 124792e95ad1Smrg | sparclite \ 124892e95ad1Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 124992e95ad1Smrg | spu \ 125092e95ad1Smrg | tahoe \ 125192e95ad1Smrg | thumbv7* \ 125292e95ad1Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 125392e95ad1Smrg | tron \ 125492e95ad1Smrg | ubicom32 \ 125592e95ad1Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 125692e95ad1Smrg | vax \ 1257838f5b0bSmrg | vc4 \ 125892e95ad1Smrg | visium \ 125992e95ad1Smrg | w65 \ 126092e95ad1Smrg | wasm32 | wasm64 \ 126192e95ad1Smrg | we32k \ 126292e95ad1Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 126392e95ad1Smrg | xstormy16 | xtensa* \ 126492e95ad1Smrg | ymp \ 126592e95ad1Smrg | z8k | z80) 126692e95ad1Smrg ;; 126792e95ad1Smrg 126892e95ad1Smrg *) 1269838f5b0bSmrg echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 127092e95ad1Smrg exit 1 127192e95ad1Smrg ;; 127292e95ad1Smrg esac 1273a6d9b409Smrg ;; 1274a6d9b409Smrgesac 1275a6d9b409Smrg 1276a6d9b409Smrg# Here we canonicalize certain aliases for manufacturers. 127792e95ad1Smrgcase $vendor in 127892e95ad1Smrg digital*) 127992e95ad1Smrg vendor=dec 1280a6d9b409Smrg ;; 128192e95ad1Smrg commodore*) 128292e95ad1Smrg vendor=cbm 1283a6d9b409Smrg ;; 1284a6d9b409Smrg *) 1285a6d9b409Smrg ;; 1286a6d9b409Smrgesac 1287a6d9b409Smrg 1288a6d9b409Smrg# Decode manufacturer-specific aliases for certain operating systems. 1289a6d9b409Smrg 1290838f5b0bSmrgif test x"$basic_os" != x 1291a6d9b409Smrgthen 129292e95ad1Smrg 1293838f5b0bSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 129492e95ad1Smrg# set os. 1295838f5b0bSmrgobj= 129692e95ad1Smrgcase $basic_os in 129792e95ad1Smrg gnu/linux*) 129892e95ad1Smrg kernel=linux 129992e95ad1Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 130092e95ad1Smrg ;; 130192e95ad1Smrg os2-emx) 130292e95ad1Smrg kernel=os2 130392e95ad1Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 130492e95ad1Smrg ;; 130592e95ad1Smrg nto-qnx*) 130692e95ad1Smrg kernel=nto 130792e95ad1Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 130892e95ad1Smrg ;; 130992e95ad1Smrg *-*) 131092e95ad1Smrg # shellcheck disable=SC2162 131192e95ad1Smrg saved_IFS=$IFS 131292e95ad1Smrg IFS="-" read kernel os <<EOF 131392e95ad1Smrg$basic_os 131492e95ad1SmrgEOF 131592e95ad1Smrg IFS=$saved_IFS 131692e95ad1Smrg ;; 131792e95ad1Smrg # Default OS when just kernel was specified 131892e95ad1Smrg nto*) 131992e95ad1Smrg kernel=nto 132092e95ad1Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 132192e95ad1Smrg ;; 132292e95ad1Smrg linux*) 132392e95ad1Smrg kernel=linux 132492e95ad1Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 132592e95ad1Smrg ;; 1326838f5b0bSmrg managarm*) 1327838f5b0bSmrg kernel=managarm 1328838f5b0bSmrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1329838f5b0bSmrg ;; 133092e95ad1Smrg *) 133192e95ad1Smrg kernel= 133292e95ad1Smrg os=$basic_os 133392e95ad1Smrg ;; 133492e95ad1Smrgesac 133592e95ad1Smrg 133692e95ad1Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 133792e95ad1Smrg# etc.) 1338a6d9b409Smrgcase $os in 13398b8e729cSmrg # First match some system type aliases that might get confused 13408b8e729cSmrg # with valid system types. 134192e95ad1Smrg # solaris* is a basic system type, with this one exception. 134292e95ad1Smrg auroraux) 134392e95ad1Smrg os=auroraux 13441e5fa1c5Smrg ;; 134592e95ad1Smrg bluegene*) 134692e95ad1Smrg os=cnk 1347a6d9b409Smrg ;; 134892e95ad1Smrg solaris1 | solaris1.*) 134992e95ad1Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1350a6d9b409Smrg ;; 135192e95ad1Smrg solaris) 135292e95ad1Smrg os=solaris2 1353a6d9b409Smrg ;; 135492e95ad1Smrg unixware*) 135592e95ad1Smrg os=sysv4.2uw 1356a6d9b409Smrg ;; 13578b8e729cSmrg # es1800 is here to avoid being matched by es* (a different OS) 135892e95ad1Smrg es1800*) 135992e95ad1Smrg os=ose 13608b8e729cSmrg ;; 136192e95ad1Smrg # Some version numbers need modification 136292e95ad1Smrg chorusos*) 136392e95ad1Smrg os=chorusos 1364a6d9b409Smrg ;; 136592e95ad1Smrg isc) 136692e95ad1Smrg os=isc2.2 1367a6d9b409Smrg ;; 136892e95ad1Smrg sco6) 136992e95ad1Smrg os=sco5v6 1370a6d9b409Smrg ;; 137192e95ad1Smrg sco5) 137292e95ad1Smrg os=sco3.2v5 1373a6d9b409Smrg ;; 137492e95ad1Smrg sco4) 137592e95ad1Smrg os=sco3.2v4 1376a6d9b409Smrg ;; 137792e95ad1Smrg sco3.2.[4-9]*) 137892e95ad1Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1379a6d9b409Smrg ;; 138092e95ad1Smrg sco*v* | scout) 138192e95ad1Smrg # Don't match below 1382a6d9b409Smrg ;; 138392e95ad1Smrg sco*) 138492e95ad1Smrg os=sco3.2v2 1385a6d9b409Smrg ;; 138692e95ad1Smrg psos*) 138792e95ad1Smrg os=psos 1388a6d9b409Smrg ;; 138992e95ad1Smrg qnx*) 139092e95ad1Smrg os=qnx 1391a6d9b409Smrg ;; 139292e95ad1Smrg hiux*) 139392e95ad1Smrg os=hiuxwe2 1394a6d9b409Smrg ;; 139592e95ad1Smrg lynx*178) 139692e95ad1Smrg os=lynxos178 1397a6d9b409Smrg ;; 139892e95ad1Smrg lynx*5) 139992e95ad1Smrg os=lynxos5 1400a6d9b409Smrg ;; 140192e95ad1Smrg lynxos*) 140292e95ad1Smrg # don't get caught up in next wildcard 1403a6d9b409Smrg ;; 140492e95ad1Smrg lynx*) 140592e95ad1Smrg os=lynxos 1406a6d9b409Smrg ;; 140792e95ad1Smrg mac[0-9]*) 140892e95ad1Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1409a6d9b409Smrg ;; 141092e95ad1Smrg opened*) 141192e95ad1Smrg os=openedition 1412a6d9b409Smrg ;; 141392e95ad1Smrg os400*) 141492e95ad1Smrg os=os400 1415a6d9b409Smrg ;; 141692e95ad1Smrg sunos5*) 141792e95ad1Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1418a6d9b409Smrg ;; 141992e95ad1Smrg sunos6*) 142092e95ad1Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1421a6d9b409Smrg ;; 142292e95ad1Smrg wince*) 142392e95ad1Smrg os=wince 1424a6d9b409Smrg ;; 142592e95ad1Smrg utek*) 142692e95ad1Smrg os=bsd 1427a6d9b409Smrg ;; 142892e95ad1Smrg dynix*) 142992e95ad1Smrg os=bsd 1430a6d9b409Smrg ;; 143192e95ad1Smrg acis*) 143292e95ad1Smrg os=aos 1433a6d9b409Smrg ;; 143492e95ad1Smrg atheos*) 143592e95ad1Smrg os=atheos 1436a6d9b409Smrg ;; 143792e95ad1Smrg syllable*) 143892e95ad1Smrg os=syllable 143992e95ad1Smrg ;; 144092e95ad1Smrg 386bsd) 144192e95ad1Smrg os=bsd 144292e95ad1Smrg ;; 144392e95ad1Smrg ctix* | uts*) 144492e95ad1Smrg os=sysv 144592e95ad1Smrg ;; 144692e95ad1Smrg nova*) 144792e95ad1Smrg os=rtmk-nova 144892e95ad1Smrg ;; 144992e95ad1Smrg ns2) 145092e95ad1Smrg os=nextstep2 145192e95ad1Smrg ;; 145292e95ad1Smrg # Preserve the version number of sinix5. 145392e95ad1Smrg sinix5.*) 145492e95ad1Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1455a6d9b409Smrg ;; 145692e95ad1Smrg sinix*) 145792e95ad1Smrg os=sysv4 1458a6d9b409Smrg ;; 145992e95ad1Smrg tpf*) 146092e95ad1Smrg os=tpf 1461a6d9b409Smrg ;; 146292e95ad1Smrg triton*) 146392e95ad1Smrg os=sysv3 1464a6d9b409Smrg ;; 146592e95ad1Smrg oss*) 146692e95ad1Smrg os=sysv3 1467a6d9b409Smrg ;; 146892e95ad1Smrg svr4*) 146992e95ad1Smrg os=sysv4 1470a6d9b409Smrg ;; 147192e95ad1Smrg svr3) 147292e95ad1Smrg os=sysv3 1473a6d9b409Smrg ;; 147492e95ad1Smrg sysvr4) 147592e95ad1Smrg os=sysv4 1476a6d9b409Smrg ;; 147792e95ad1Smrg ose*) 147892e95ad1Smrg os=ose 1479a6d9b409Smrg ;; 148092e95ad1Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 148192e95ad1Smrg os=mint 1482efda2da8Smrg ;; 148392e95ad1Smrg dicos*) 148492e95ad1Smrg os=dicos 148592e95ad1Smrg ;; 148692e95ad1Smrg pikeos*) 14878b8e729cSmrg # Until real need of OS specific support for 14888b8e729cSmrg # particular features comes up, bare metal 14898b8e729cSmrg # configurations are quite functional. 149092e95ad1Smrg case $cpu in 14918b8e729cSmrg arm*) 149292e95ad1Smrg os=eabi 14938b8e729cSmrg ;; 14948b8e729cSmrg *) 1495838f5b0bSmrg os= 1496838f5b0bSmrg obj=elf 14978b8e729cSmrg ;; 14988b8e729cSmrg esac 14998b8e729cSmrg ;; 1500838f5b0bSmrg aout* | coff* | elf* | pe*) 1501838f5b0bSmrg # These are machine code file formats, not OSes 1502838f5b0bSmrg obj=$os 1503838f5b0bSmrg os= 1504838f5b0bSmrg ;; 1505a6d9b409Smrg *) 150692e95ad1Smrg # No normalization, but not necessarily accepted, that comes below. 1507a6d9b409Smrg ;; 1508a6d9b409Smrgesac 150992e95ad1Smrg 1510a6d9b409Smrgelse 1511a6d9b409Smrg 1512a6d9b409Smrg# Here we handle the default operating systems that come with various machines. 1513a6d9b409Smrg# The value should be what the vendor currently ships out the door with their 1514a6d9b409Smrg# machine or put another way, the most popular os provided with the machine. 1515a6d9b409Smrg 1516a6d9b409Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1517a6d9b409Smrg# "-sun"), then you have to tell the case statement up towards the top 1518a6d9b409Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1519a6d9b409Smrg# will signal an error saying that MANUFACTURER isn't an operating 1520a6d9b409Smrg# system, and we'll never get to this point. 1521a6d9b409Smrg 152292e95ad1Smrgkernel= 1523838f5b0bSmrgobj= 152492e95ad1Smrgcase $cpu-$vendor in 1525a097bd00Smrg score-*) 1526838f5b0bSmrg os= 1527838f5b0bSmrg obj=elf 1528cae39615Smrg ;; 1529a097bd00Smrg spu-*) 1530838f5b0bSmrg os= 1531838f5b0bSmrg obj=elf 1532cae39615Smrg ;; 1533a6d9b409Smrg *-acorn) 153492e95ad1Smrg os=riscix1.2 1535a6d9b409Smrg ;; 1536a6d9b409Smrg arm*-rebel) 153792e95ad1Smrg kernel=linux 153892e95ad1Smrg os=gnu 1539a6d9b409Smrg ;; 1540a6d9b409Smrg arm*-semi) 1541838f5b0bSmrg os= 1542838f5b0bSmrg obj=aout 1543a6d9b409Smrg ;; 1544a097bd00Smrg c4x-* | tic4x-*) 1545838f5b0bSmrg os= 1546838f5b0bSmrg obj=coff 1547a097bd00Smrg ;; 1548b91640d3Smrg c8051-*) 1549838f5b0bSmrg os= 1550838f5b0bSmrg obj=elf 155192e95ad1Smrg ;; 155292e95ad1Smrg clipper-intergraph) 155392e95ad1Smrg os=clix 1554b91640d3Smrg ;; 1555b91640d3Smrg hexagon-*) 1556838f5b0bSmrg os= 1557838f5b0bSmrg obj=elf 1558b91640d3Smrg ;; 1559a097bd00Smrg tic54x-*) 1560838f5b0bSmrg os= 1561838f5b0bSmrg obj=coff 1562a097bd00Smrg ;; 1563a097bd00Smrg tic55x-*) 1564838f5b0bSmrg os= 1565838f5b0bSmrg obj=coff 1566a097bd00Smrg ;; 1567a097bd00Smrg tic6x-*) 1568838f5b0bSmrg os= 1569838f5b0bSmrg obj=coff 1570cae39615Smrg ;; 1571a6d9b409Smrg # This must come before the *-dec entry. 1572a6d9b409Smrg pdp10-*) 157392e95ad1Smrg os=tops20 1574a6d9b409Smrg ;; 1575a6d9b409Smrg pdp11-*) 157692e95ad1Smrg os=none 1577a6d9b409Smrg ;; 1578a6d9b409Smrg *-dec | vax-*) 157992e95ad1Smrg os=ultrix4.2 1580a6d9b409Smrg ;; 1581a6d9b409Smrg m68*-apollo) 158292e95ad1Smrg os=domain 1583a6d9b409Smrg ;; 1584a6d9b409Smrg i386-sun) 158592e95ad1Smrg os=sunos4.0.2 1586a6d9b409Smrg ;; 1587a6d9b409Smrg m68000-sun) 158892e95ad1Smrg os=sunos3 1589a6d9b409Smrg ;; 1590a6d9b409Smrg m68*-cisco) 1591838f5b0bSmrg os= 1592838f5b0bSmrg obj=aout 1593a6d9b409Smrg ;; 1594a097bd00Smrg mep-*) 1595838f5b0bSmrg os= 1596838f5b0bSmrg obj=elf 1597cae39615Smrg ;; 1598a6d9b409Smrg mips*-cisco) 1599838f5b0bSmrg os= 1600838f5b0bSmrg obj=elf 1601a6d9b409Smrg ;; 1602838f5b0bSmrg mips*-*|nanomips*-*) 1603838f5b0bSmrg os= 1604838f5b0bSmrg obj=elf 1605a6d9b409Smrg ;; 1606a6d9b409Smrg or32-*) 1607838f5b0bSmrg os= 1608838f5b0bSmrg obj=coff 1609a6d9b409Smrg ;; 1610a6d9b409Smrg *-tti) # must be before sparc entry or we get the wrong os. 161192e95ad1Smrg os=sysv3 1612a6d9b409Smrg ;; 1613a6d9b409Smrg sparc-* | *-sun) 161492e95ad1Smrg os=sunos4.1.1 1615a6d9b409Smrg ;; 16168b8e729cSmrg pru-*) 1617838f5b0bSmrg os= 1618838f5b0bSmrg obj=elf 16198b8e729cSmrg ;; 1620a6d9b409Smrg *-be) 162192e95ad1Smrg os=beos 1622a6d9b409Smrg ;; 1623a6d9b409Smrg *-ibm) 162492e95ad1Smrg os=aix 1625a6d9b409Smrg ;; 1626a097bd00Smrg *-knuth) 162792e95ad1Smrg os=mmixware 1628a6d9b409Smrg ;; 1629a6d9b409Smrg *-wec) 163092e95ad1Smrg os=proelf 1631a6d9b409Smrg ;; 1632a6d9b409Smrg *-winbond) 163392e95ad1Smrg os=proelf 1634a6d9b409Smrg ;; 1635a6d9b409Smrg *-oki) 163692e95ad1Smrg os=proelf 1637a6d9b409Smrg ;; 1638a6d9b409Smrg *-hp) 163992e95ad1Smrg os=hpux 1640a6d9b409Smrg ;; 1641a6d9b409Smrg *-hitachi) 164292e95ad1Smrg os=hiux 1643a6d9b409Smrg ;; 1644a6d9b409Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 164592e95ad1Smrg os=sysv 1646a6d9b409Smrg ;; 1647a6d9b409Smrg *-cbm) 164892e95ad1Smrg os=amigaos 1649a6d9b409Smrg ;; 1650a6d9b409Smrg *-dg) 165192e95ad1Smrg os=dgux 1652a6d9b409Smrg ;; 1653a6d9b409Smrg *-dolphin) 165492e95ad1Smrg os=sysv3 1655a6d9b409Smrg ;; 1656a6d9b409Smrg m68k-ccur) 165792e95ad1Smrg os=rtu 1658a6d9b409Smrg ;; 1659a6d9b409Smrg m88k-omron*) 166092e95ad1Smrg os=luna 1661a6d9b409Smrg ;; 16628b8e729cSmrg *-next) 166392e95ad1Smrg os=nextstep 1664a6d9b409Smrg ;; 1665a6d9b409Smrg *-sequent) 166692e95ad1Smrg os=ptx 1667a6d9b409Smrg ;; 1668a6d9b409Smrg *-crds) 166992e95ad1Smrg os=unos 1670a6d9b409Smrg ;; 1671a6d9b409Smrg *-ns) 167292e95ad1Smrg os=genix 1673a6d9b409Smrg ;; 1674a6d9b409Smrg i370-*) 167592e95ad1Smrg os=mvs 1676a6d9b409Smrg ;; 1677a6d9b409Smrg *-gould) 167892e95ad1Smrg os=sysv 1679a6d9b409Smrg ;; 1680a6d9b409Smrg *-highlevel) 168192e95ad1Smrg os=bsd 1682a6d9b409Smrg ;; 1683a6d9b409Smrg *-encore) 168492e95ad1Smrg os=bsd 1685a6d9b409Smrg ;; 1686a6d9b409Smrg *-sgi) 168792e95ad1Smrg os=irix 1688a6d9b409Smrg ;; 1689a6d9b409Smrg *-siemens) 169092e95ad1Smrg os=sysv4 1691a6d9b409Smrg ;; 1692a6d9b409Smrg *-masscomp) 169392e95ad1Smrg os=rtu 1694a6d9b409Smrg ;; 1695a6d9b409Smrg f30[01]-fujitsu | f700-fujitsu) 169692e95ad1Smrg os=uxpv 1697a6d9b409Smrg ;; 1698a6d9b409Smrg *-rom68k) 1699838f5b0bSmrg os= 1700838f5b0bSmrg obj=coff 1701a6d9b409Smrg ;; 1702a6d9b409Smrg *-*bug) 1703838f5b0bSmrg os= 1704838f5b0bSmrg obj=coff 1705a6d9b409Smrg ;; 1706a6d9b409Smrg *-apple) 170792e95ad1Smrg os=macos 1708a6d9b409Smrg ;; 1709a6d9b409Smrg *-atari*) 171092e95ad1Smrg os=mint 171192e95ad1Smrg ;; 171292e95ad1Smrg *-wrs) 171392e95ad1Smrg os=vxworks 1714a6d9b409Smrg ;; 1715a6d9b409Smrg *) 171692e95ad1Smrg os=none 1717a6d9b409Smrg ;; 1718a6d9b409Smrgesac 171992e95ad1Smrg 1720a6d9b409Smrgfi 1721a6d9b409Smrg 1722838f5b0bSmrg# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ). 1723838f5b0bSmrg 172492e95ad1Smrgcase $os in 172592e95ad1Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 1726838f5b0bSmrg llvm* | musl* | newlib* | relibc* | uclibc*) 172792e95ad1Smrg ;; 172892e95ad1Smrg # Likewise for "kernel-abi" 172992e95ad1Smrg eabi* | gnueabi*) 173092e95ad1Smrg ;; 173192e95ad1Smrg # VxWorks passes extra cpu info in the 4th filed. 173292e95ad1Smrg simlinux | simwindows | spe) 173392e95ad1Smrg ;; 1734838f5b0bSmrg # See `case $cpu-$os` validation below 1735838f5b0bSmrg ghcjs) 1736838f5b0bSmrg ;; 173792e95ad1Smrg # Now accept the basic system types. 173892e95ad1Smrg # The portable systems comes first. 173992e95ad1Smrg # Each alternative MUST end in a * to match a version number. 174092e95ad1Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 174192e95ad1Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 174292e95ad1Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 174392e95ad1Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 174492e95ad1Smrg | hiux* | abug | nacl* | netware* | windows* \ 1745838f5b0bSmrg | os9* | macos* | osx* | ios* | tvos* | watchos* \ 174692e95ad1Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 174792e95ad1Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 174892e95ad1Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 174992e95ad1Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 175092e95ad1Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 175192e95ad1Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 175292e95ad1Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 175392e95ad1Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1754838f5b0bSmrg | bosx* | nextstep* | cxux* | oabi* \ 1755838f5b0bSmrg | ptx* | ecoff* | winnt* | domain* | vsta* \ 175692e95ad1Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 175792e95ad1Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 1758838f5b0bSmrg | cygwin* | msys* | moss* | proelf* | rtems* \ 175992e95ad1Smrg | midipix* | mingw32* | mingw64* | mint* \ 176092e95ad1Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 176192e95ad1Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 176292e95ad1Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 176392e95ad1Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 176492e95ad1Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 176592e95ad1Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 176692e95ad1Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 176792e95ad1Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 176892e95ad1Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 176992e95ad1Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 1770838f5b0bSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1771838f5b0bSmrg | fiwix* | mlibc* | cos* | mbr* | ironclad* ) 177292e95ad1Smrg ;; 177392e95ad1Smrg # This one is extra strict with allowed versions 177492e95ad1Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 177592e95ad1Smrg # Don't forget version if it is 3.2v4 or newer. 177692e95ad1Smrg ;; 1777838f5b0bSmrg # This refers to builds using the UEFI calling convention 1778838f5b0bSmrg # (which depends on the architecture) and PE file format. 1779838f5b0bSmrg # Note that this is both a different calling convention and 1780838f5b0bSmrg # different file format than that of GNU-EFI 1781838f5b0bSmrg # (x86_64-w64-mingw32). 1782838f5b0bSmrg uefi) 1783838f5b0bSmrg ;; 178492e95ad1Smrg none) 178592e95ad1Smrg ;; 1786838f5b0bSmrg kernel* | msvc* ) 1787838f5b0bSmrg # Restricted further below 1788838f5b0bSmrg ;; 1789838f5b0bSmrg '') 1790838f5b0bSmrg if test x"$obj" = x 1791838f5b0bSmrg then 1792838f5b0bSmrg echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2 1793838f5b0bSmrg fi 1794838f5b0bSmrg ;; 179592e95ad1Smrg *) 1796838f5b0bSmrg echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 1797838f5b0bSmrg exit 1 1798838f5b0bSmrg ;; 1799838f5b0bSmrgesac 1800838f5b0bSmrg 1801838f5b0bSmrgcase $obj in 1802838f5b0bSmrg aout* | coff* | elf* | pe*) 1803838f5b0bSmrg ;; 1804838f5b0bSmrg '') 1805838f5b0bSmrg # empty is fine 1806838f5b0bSmrg ;; 1807838f5b0bSmrg *) 1808838f5b0bSmrg echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 1809838f5b0bSmrg exit 1 1810838f5b0bSmrg ;; 1811838f5b0bSmrgesac 1812838f5b0bSmrg 1813838f5b0bSmrg# Here we handle the constraint that a (synthetic) cpu and os are 1814838f5b0bSmrg# valid only in combination with each other and nowhere else. 1815838f5b0bSmrgcase $cpu-$os in 1816838f5b0bSmrg # The "javascript-unknown-ghcjs" triple is used by GHC; we 1817838f5b0bSmrg # accept it here in order to tolerate that, but reject any 1818838f5b0bSmrg # variations. 1819838f5b0bSmrg javascript-ghcjs) 1820838f5b0bSmrg ;; 1821838f5b0bSmrg javascript-* | *-ghcjs) 1822838f5b0bSmrg echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 182392e95ad1Smrg exit 1 182492e95ad1Smrg ;; 182592e95ad1Smrgesac 182692e95ad1Smrg 182792e95ad1Smrg# As a final step for OS-related things, validate the OS-kernel combination 182892e95ad1Smrg# (given a valid OS), if there is a kernel. 1829838f5b0bSmrgcase $kernel-$os-$obj in 1830838f5b0bSmrg linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ 1831838f5b0bSmrg | linux-mlibc*- | linux-musl*- | linux-newlib*- \ 1832838f5b0bSmrg | linux-relibc*- | linux-uclibc*- ) 1833838f5b0bSmrg ;; 1834838f5b0bSmrg uclinux-uclibc*- ) 1835838f5b0bSmrg ;; 1836838f5b0bSmrg managarm-mlibc*- | managarm-kernel*- ) 183792e95ad1Smrg ;; 1838838f5b0bSmrg windows*-msvc*-) 183992e95ad1Smrg ;; 1840838f5b0bSmrg -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ 1841838f5b0bSmrg | -uclibc*- ) 184292e95ad1Smrg # These are just libc implementations, not actual OSes, and thus 184392e95ad1Smrg # require a kernel. 1844838f5b0bSmrg echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 184592e95ad1Smrg exit 1 184692e95ad1Smrg ;; 1847838f5b0bSmrg -kernel*- ) 1848838f5b0bSmrg echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 1849838f5b0bSmrg exit 1 185092e95ad1Smrg ;; 1851838f5b0bSmrg *-kernel*- ) 1852838f5b0bSmrg echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 1853838f5b0bSmrg exit 1 185492e95ad1Smrg ;; 1855838f5b0bSmrg *-msvc*- ) 1856838f5b0bSmrg echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 1857838f5b0bSmrg exit 1 185892e95ad1Smrg ;; 1859838f5b0bSmrg kfreebsd*-gnu*- | kopensolaris*-gnu*-) 1860838f5b0bSmrg ;; 1861838f5b0bSmrg vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) 1862838f5b0bSmrg ;; 1863838f5b0bSmrg nto-qnx*-) 1864838f5b0bSmrg ;; 1865838f5b0bSmrg os2-emx-) 186692e95ad1Smrg ;; 1867838f5b0bSmrg *-eabi*- | *-gnueabi*-) 186892e95ad1Smrg ;; 1869838f5b0bSmrg none--*) 1870838f5b0bSmrg # None (no kernel, i.e. freestanding / bare metal), 1871838f5b0bSmrg # can be paired with an machine code file format 1872838f5b0bSmrg ;; 1873838f5b0bSmrg -*-) 187492e95ad1Smrg # Blank kernel with real OS is always fine. 187592e95ad1Smrg ;; 1876838f5b0bSmrg --*) 1877838f5b0bSmrg # Blank kernel and OS with real machine code file format is always fine. 1878838f5b0bSmrg ;; 1879838f5b0bSmrg *-*-*) 1880838f5b0bSmrg echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 188192e95ad1Smrg exit 1 188292e95ad1Smrg ;; 188392e95ad1Smrgesac 188492e95ad1Smrg 1885a6d9b409Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1886a6d9b409Smrg# manufacturer. We pick the logical manufacturer. 188792e95ad1Smrgcase $vendor in 188892e95ad1Smrg unknown) 188992e95ad1Smrg case $cpu-$os in 189092e95ad1Smrg *-riscix*) 1891a6d9b409Smrg vendor=acorn 1892a6d9b409Smrg ;; 189392e95ad1Smrg *-sunos*) 1894a6d9b409Smrg vendor=sun 1895a6d9b409Smrg ;; 189692e95ad1Smrg *-cnk* | *-aix*) 1897a6d9b409Smrg vendor=ibm 1898a6d9b409Smrg ;; 189992e95ad1Smrg *-beos*) 1900a6d9b409Smrg vendor=be 1901a6d9b409Smrg ;; 190292e95ad1Smrg *-hpux*) 1903a6d9b409Smrg vendor=hp 1904a6d9b409Smrg ;; 190592e95ad1Smrg *-mpeix*) 1906a6d9b409Smrg vendor=hp 1907a6d9b409Smrg ;; 190892e95ad1Smrg *-hiux*) 1909a6d9b409Smrg vendor=hitachi 1910a6d9b409Smrg ;; 191192e95ad1Smrg *-unos*) 1912a6d9b409Smrg vendor=crds 1913a6d9b409Smrg ;; 191492e95ad1Smrg *-dgux*) 1915a6d9b409Smrg vendor=dg 1916a6d9b409Smrg ;; 191792e95ad1Smrg *-luna*) 1918a6d9b409Smrg vendor=omron 1919a6d9b409Smrg ;; 192092e95ad1Smrg *-genix*) 1921a6d9b409Smrg vendor=ns 1922a6d9b409Smrg ;; 192392e95ad1Smrg *-clix*) 192492e95ad1Smrg vendor=intergraph 192592e95ad1Smrg ;; 192692e95ad1Smrg *-mvs* | *-opened*) 192792e95ad1Smrg vendor=ibm 192892e95ad1Smrg ;; 192992e95ad1Smrg *-os400*) 1930a6d9b409Smrg vendor=ibm 1931a6d9b409Smrg ;; 193292e95ad1Smrg s390-* | s390x-*) 1933a6d9b409Smrg vendor=ibm 1934a6d9b409Smrg ;; 193592e95ad1Smrg *-ptx*) 1936a6d9b409Smrg vendor=sequent 1937a6d9b409Smrg ;; 193892e95ad1Smrg *-tpf*) 1939a6d9b409Smrg vendor=ibm 1940a6d9b409Smrg ;; 194192e95ad1Smrg *-vxsim* | *-vxworks* | *-windiss*) 1942a6d9b409Smrg vendor=wrs 1943a6d9b409Smrg ;; 194492e95ad1Smrg *-aux*) 1945a6d9b409Smrg vendor=apple 1946a6d9b409Smrg ;; 194792e95ad1Smrg *-hms*) 1948a6d9b409Smrg vendor=hitachi 1949a6d9b409Smrg ;; 195092e95ad1Smrg *-mpw* | *-macos*) 1951a6d9b409Smrg vendor=apple 1952a6d9b409Smrg ;; 195392e95ad1Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1954a6d9b409Smrg vendor=atari 1955a6d9b409Smrg ;; 195692e95ad1Smrg *-vos*) 1957a6d9b409Smrg vendor=stratus 1958a6d9b409Smrg ;; 1959a6d9b409Smrg esac 1960a6d9b409Smrg ;; 1961a6d9b409Smrgesac 1962a6d9b409Smrg 1963838f5b0bSmrgecho "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" 1964a6d9b409Smrgexit 1965a6d9b409Smrg 1966a6d9b409Smrg# Local variables: 196792e95ad1Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1968a6d9b409Smrg# time-stamp-start: "timestamp='" 1969a6d9b409Smrg# time-stamp-format: "%:y-%02m-%02d" 1970a6d9b409Smrg# time-stamp-end: "'" 1971a6d9b409Smrg# End: 1972