postgres/config/config.sub

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

2355 lines
39 KiB
Plaintext
Raw Permalink Normal View History

#! /bin/sh
2001-08-06 13:58:26 +00:00
# Configuration validation subroutine script.
2024-04-09 14:21:57 +02:00
# Copyright 1992-2024 Free Software Foundation, Inc.
2025-04-09 12:12:57 +02:00
# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale
2022-04-07 07:32:43 +02:00
2025-04-09 12:12:57 +02:00
timestamp='2024-05-27'
2013-04-26 22:13:03 -04:00
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
2022-04-07 07:32:43 +02:00
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
2013-04-26 22:13:03 -04:00
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
2018-06-11 08:54:58 -04:00
# along with this program; if not, see <https://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
2013-04-26 22:13:03 -04:00
# the same distribution terms that you use for the rest of that
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
2015-08-19 11:45:52 -04:00
# Please send patches to <config-patches@gnu.org>.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed.
2010-05-12 16:50:57 +00:00
# You can get the latest version of this script from:
2021-04-21 16:02:03 +02:00
# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
2010-05-12 16:50:57 +00:00
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software.
# Each package is responsible for reporting which valid configurations
# it does not support. The user should be able to distinguish
# a failure to support a valid configuration from a meaningless
# configuration.
# The goal of this file is to map all the various variations of a given
# machine specification into a single specification in the form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
# or in some cases, the newer four-part form:
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
2022-04-07 07:32:43 +02:00
# The "shellcheck disable" line above the timestamp inhibits complaints
# about features and limitations of the classic Bourne shell that were
# superseded or lifted in POSIX. However, this script identifies a wide
# variety of pre-POSIX systems that do not have POSIX shells at all, and
# even some reasonably current systems (Solaris 10 as case-in-point) still
# have a pre-POSIX /bin/sh.
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
2016-05-06 14:00:47 -04:00
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
Canonicalize a configuration name.
2018-06-11 08:54:58 -04:00
Options:
2001-08-06 13:58:26 +00:00
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
2024-04-09 14:21:57 +02:00
Copyright 1992-2024 Free Software Foundation, Inc.
2001-08-06 13:58:26 +00:00
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
2024-04-09 14:21:57 +02:00
Try '$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
2001-08-06 13:58:26 +00:00
case $1 in
--time-stamp | --time* | -t )
echo "$timestamp" ; exit ;;
2001-08-06 13:58:26 +00:00
--version | -v )
echo "$version" ; exit ;;
--help | --h* | -h )
echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
break ;;
-* )
2019-04-27 14:25:00 +02:00
echo "$me: invalid option $1$help" >&2
exit 1 ;;
*local*)
# First pass through any local machine types.
2018-06-11 08:54:58 -04:00
echo "$1"
exit ;;
* )
break ;;
esac
done
case $# in
0) echo "$me: missing argument$help" >&2
exit 1;;
1) ;;
*) echo "$me: too many arguments$help" >&2
exit 1;;
esac
2018-06-11 08:54:58 -04:00
# Split fields of configuration type
2022-04-07 07:32:43 +02:00
saved_IFS=$IFS
2019-04-27 14:25:00 +02:00
IFS="-" read field1 field2 field3 field4 <<EOF
2018-06-11 08:54:58 -04:00
$1
EOF
2022-04-07 07:32:43 +02:00
IFS=$saved_IFS
2018-06-11 08:54:58 -04:00
# Separate into logical components for further validation
case $1 in
*-*-*-*-*)
2024-04-09 14:21:57 +02:00
echo "Invalid configuration '$1': more than four components" >&2
2018-06-11 08:54:58 -04:00
exit 1
;;
2018-06-11 08:54:58 -04:00
*-*-*-*)
basic_machine=$field1-$field2
2021-04-21 16:02:03 +02:00
basic_os=$field3-$field4
;;
2018-06-11 08:54:58 -04:00
*-*-*)
# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
# parts
maybe_os=$field2-$field3
case $maybe_os in
2025-04-09 12:12:57 +02:00
cloudabi*-eabi* \
| kfreebsd*-gnu* \
| knetbsd*-gnu* \
| kopensolaris*-gnu* \
| linux-* \
| managarm-* \
| netbsd*-eabi* \
| netbsd*-gnu* \
| nto-qnx* \
| os2-emx* \
| rtmk-nova* \
| storm-chaos* \
| uclinux-gnu* \
| uclinux-uclibc* \
2024-04-09 14:21:57 +02:00
| windows-* )
2018-06-11 08:54:58 -04:00
basic_machine=$field1
2021-04-21 16:02:03 +02:00
basic_os=$maybe_os
2018-06-11 08:54:58 -04:00
;;
android-linux)
basic_machine=$field1-unknown
2021-04-21 16:02:03 +02:00
basic_os=linux-android
2018-06-11 08:54:58 -04:00
;;
*)
basic_machine=$field1-$field2
2021-04-21 16:02:03 +02:00
basic_os=$field3
2018-06-11 08:54:58 -04:00
;;
esac
;;
2018-06-11 08:54:58 -04:00
*-*)
2019-04-27 14:25:00 +02:00
case $field1-$field2 in
2025-04-09 12:12:57 +02:00
# Shorthands that happen to contain a single dash
convex-c[12] | convex-c3[248])
basic_machine=$field2-convex
basic_os=
;;
2019-04-27 14:25:00 +02:00
decstation-3100)
basic_machine=mips-dec
2021-04-21 16:02:03 +02:00
basic_os=
2018-06-11 08:54:58 -04:00
;;
2019-04-27 14:25:00 +02:00
*-*)
# Second component is usually, but not always the OS
case $field2 in
2025-04-09 12:12:57 +02:00
# Do not treat sunos as a manufacturer
2019-04-27 14:25:00 +02:00
sun*os*)
basic_machine=$field1
2021-04-21 16:02:03 +02:00
basic_os=$field2
2019-04-27 14:25:00 +02:00
;;
# Manufacturers
2025-04-09 12:12:57 +02:00
3100* \
| 32* \
| 3300* \
| 3600* \
| 7300* \
| acorn \
| altos* \
| apollo \
| apple \
| atari \
| att* \
| axis \
| be \
| bull \
| cbm \
| ccur \
| cisco \
| commodore \
| convergent* \
| convex* \
| cray \
| crds \
| dec* \
| delta* \
| dg \
| digital \
| dolphin \
| encore* \
| gould \
| harris \
| highlevel \
| hitachi* \
| hp \
| ibm* \
| intergraph \
| isi* \
| knuth \
| masscomp \
| microblaze* \
| mips* \
| motorola* \
| ncr* \
| news \
| next \
| ns \
| oki \
| omron* \
| pc533* \
| rebel \
| rom68k \
| rombug \
| semi \
| sequent* \
| siemens \
| sgi* \
| siemens \
| sim \
| sni \
| sony* \
| stratus \
| sun \
| sun[234]* \
| tektronix \
| tti* \
| ultra \
| unicom* \
| wec \
| winbond \
| wrs)
2019-04-27 14:25:00 +02:00
basic_machine=$field1-$field2
2021-04-21 16:02:03 +02:00
basic_os=
2019-04-27 14:25:00 +02:00
;;
2025-04-09 12:12:57 +02:00
zephyr*)
basic_machine=$field1-unknown
basic_os=$field2
;;
2019-04-27 14:25:00 +02:00
*)
basic_machine=$field1
2021-04-21 16:02:03 +02:00
basic_os=$field2
2019-04-27 14:25:00 +02:00
;;
esac
;;
2018-06-11 08:54:58 -04:00
esac
;;
2018-06-11 08:54:58 -04:00
*)
# Convert single-component short-hands not valid as part of
# multi-component configurations.
case $field1 in
386bsd)
basic_machine=i386-pc
2021-04-21 16:02:03 +02:00
basic_os=bsd
2018-06-11 08:54:58 -04:00
;;
a29khif)
basic_machine=a29k-amd
2021-04-21 16:02:03 +02:00
basic_os=udi
2018-06-11 08:54:58 -04:00
;;
adobe68k)
basic_machine=m68010-adobe
2021-04-21 16:02:03 +02:00
basic_os=scout
2018-06-11 08:54:58 -04:00
;;
2019-04-27 14:25:00 +02:00
alliant)
basic_machine=fx80-alliant
2021-04-21 16:02:03 +02:00
basic_os=
2019-04-27 14:25:00 +02:00
;;
altos | altos3068)
basic_machine=m68k-altos
2021-04-21 16:02:03 +02:00
basic_os=
2019-04-27 14:25:00 +02:00
;;
2018-06-11 08:54:58 -04:00
am29k)
basic_machine=a29k-none
2021-04-21 16:02:03 +02:00
basic_os=bsd
2018-06-11 08:54:58 -04:00
;;
amdahl)
basic_machine=580-amdahl
2021-04-21 16:02:03 +02:00
basic_os=sysv
2018-06-11 08:54:58 -04:00
;;
2019-04-27 14:25:00 +02:00
amiga)
basic_machine=m68k-unknown
2021-04-21 16:02:03 +02:00
basic_os=
2019-04-27 14:25:00 +02:00
;;
2018-06-11 08:54:58 -04:00
amigaos | amigados)
basic_machine=m68k-unknown
2021-04-21 16:02:03 +02:00
basic_os=amigaos
2018-06-11 08:54:58 -04:00
;;
amigaunix | amix)
basic_machine=m68k-unknown
2021-04-21 16:02:03 +02:00
basic_os=sysv4
2018-06-11 08:54:58 -04:00
;;
apollo68)
basic_machine=m68k-apollo
2021-04-21 16:02:03 +02:00
basic_os=sysv
2018-06-11 08:54:58 -04:00
;;
apollo68bsd)
basic_machine=m68k-apollo
2021-04-21 16:02:03 +02:00
basic_os=bsd
2018-06-11 08:54:58 -04:00
;;
aros)
basic_machine=i386-pc
2021-04-21 16:02:03 +02:00
basic_os=aros
2018-06-11 08:54:58 -04:00
;;
aux)
basic_machine=m68k-apple
2021-04-21 16:02:03 +02:00
basic_os=aux
2018-06-11 08:54:58 -04:00
;;
balance)
basic_machine=ns32k-sequent
2021-04-21 16:02:03 +02:00
basic_os=dynix
2018-06-11 08:54:58 -04:00
;;
blackfin)
basic_machine=bfin-unknown
2021-04-21 16:02:03 +02:00
basic_os=linux
2018-06-11 08:54:58 -04:00
;;
cegcc)
basic_machine=arm-unknown
2021-04-21 16:02:03 +02:00
basic_os=cegcc
2018-06-11 08:54:58 -04:00
;;
cray)
basic_machine=j90-cray
2021-04-21 16:02:03 +02:00
basic_os=unicos
2018-06-11 08:54:58 -04:00
;;
2019-04-27 14:25:00 +02:00
crds | unos)
basic_machine=m68k-crds
2021-04-21 16:02:03 +02:00
basic_os=
2019-04-27 14:25:00 +02:00
;;
da30)
basic_machine=m68k-da30
2021-04-21 16:02:03 +02:00
basic_os=
2019-04-27 14:25:00 +02:00
;;
decstation | pmax | pmin | dec3100 | decstatn)
basic_machine=mips-dec
2021-04-21 16:02:03 +02:00
basic_os=
2018-06-11 08:54:58 -04:00
;;
delta88)
basic_machine=m88k-motorola
2021-04-21 16:02:03 +02:00
basic_os=sysv3
2018-06-11 08:54:58 -04:00
;;
dicos)
basic_machine=i686-pc
2021-04-21 16:02:03 +02:00
basic_os=dicos
2018-06-11 08:54:58 -04:00
;;
djgpp)
basic_machine=i586-pc
2021-04-21 16:02:03 +02:00
basic_os=msdosdjgpp
2018-06-11 08:54:58 -04:00
;;
ebmon29k)
basic_machine=a29k-amd
2021-04-21 16:02:03 +02:00
basic_os=ebmon
2018-06-11 08:54:58 -04:00
;;
es1800 | OSE68k | ose68k | ose | OSE)
basic_machine=m68k-ericsson
2021-04-21 16:02:03 +02:00
basic_os=ose
2018-06-11 08:54:58 -04:00
;;
gmicro)
basic_machine=tron-gmicro
2021-04-21 16:02:03 +02:00
basic_os=sysv
2018-06-11 08:54:58 -04:00
;;
go32)
basic_machine=i386-pc
2021-04-21 16:02:03 +02:00
basic_os=go32
2018-06-11 08:54:58 -04:00
;;
h8300hms)
basic_machine=h8300-hitachi
2021-04-21 16:02:03 +02:00
basic_os=hms
2018-06-11 08:54:58 -04:00
;;
h8300xray)
basic_machine=h8300-hitachi
2021-04-21 16:02:03 +02:00
basic_os=xray
2018-06-11 08:54:58 -04:00
;;
h8500hms)
basic_machine=h8500-hitachi
2021-04-21 16:02:03 +02:00
basic_os=hms
2018-06-11 08:54:58 -04:00
;;
harris)
basic_machine=m88k-harris
2021-04-21 16:02:03 +02:00
basic_os=sysv3
2018-06-11 08:54:58 -04:00
;;
2020-04-30 09:06:49 +02:00
hp300 | hp300hpux)
2019-04-27 14:25:00 +02:00
basic_machine=m68k-hp
2021-04-21 16:02:03 +02:00
basic_os=hpux
2019-04-27 14:25:00 +02:00
;;
2018-06-11 08:54:58 -04:00
hp300bsd)
basic_machine=m68k-hp
2021-04-21 16:02:03 +02:00
basic_os=bsd
2018-06-11 08:54:58 -04:00
;;
hppaosf)
basic_machine=hppa1.1-hp
2021-04-21 16:02:03 +02:00
basic_os=osf
2018-06-11 08:54:58 -04:00
;;
hppro)
basic_machine=hppa1.1-hp
2021-04-21 16:02:03 +02:00
basic_os=proelf
2018-06-11 08:54:58 -04:00
;;
i386mach)
basic_machine=i386-mach
2021-04-21 16:02:03 +02:00
basic_os=mach
2018-06-11 08:54:58 -04:00
;;
isi68 | isi)
basic_machine=m68k-isi
2021-04-21 16:02:03 +02:00
basic_os=sysv
2018-06-11 08:54:58 -04:00
;;
m68knommu)
basic_machine=m68k-unknown
2021-04-21 16:02:03 +02:00
basic_os=linux
2018-06-11 08:54:58 -04:00
;;
magnum | m3230)
basic_machine=mips-mips
2021-04-21 16:02:03 +02:00
basic_os=sysv
2018-06-11 08:54:58 -04:00
;;
merlin)
basic_machine=ns32k-utek
2021-04-21 16:02:03 +02:00
basic_os=sysv
2018-06-11 08:54:58 -04:00
;;
mingw64)
basic_machine=x86_64-pc
2021-04-21 16:02:03 +02:00
basic_os=mingw64
2018-06-11 08:54:58 -04:00
;;
mingw32)
basic_machine=i686-pc
2021-04-21 16:02:03 +02:00
basic_os=mingw32
2018-06-11 08:54:58 -04:00
;;
mingw32ce)
basic_machine=arm-unknown
2021-04-21 16:02:03 +02:00
basic_os=mingw32ce
2018-06-11 08:54:58 -04:00
;;
monitor)
basic_machine=m68k-rom68k
2021-04-21 16:02:03 +02:00
basic_os=coff
2018-06-11 08:54:58 -04:00
;;
morphos)
basic_machine=powerpc-unknown
2021-04-21 16:02:03 +02:00
basic_os=morphos
2018-06-11 08:54:58 -04:00
;;
moxiebox)
basic_machine=moxie-unknown
2021-04-21 16:02:03 +02:00
basic_os=moxiebox
2018-06-11 08:54:58 -04:00
;;
msdos)
basic_machine=i386-pc
2021-04-21 16:02:03 +02:00
basic_os=msdos
2018-06-11 08:54:58 -04:00
;;
msys)
basic_machine=i686-pc
2021-04-21 16:02:03 +02:00
basic_os=msys
2018-06-11 08:54:58 -04:00
;;
mvs)
basic_machine=i370-ibm
2021-04-21 16:02:03 +02:00
basic_os=mvs
2018-06-11 08:54:58 -04:00
;;
nacl)
basic_machine=le32-unknown
2021-04-21 16:02:03 +02:00
basic_os=nacl
2018-06-11 08:54:58 -04:00
;;
ncr3000)
basic_machine=i486-ncr
2021-04-21 16:02:03 +02:00
basic_os=sysv4
2018-06-11 08:54:58 -04:00
;;
netbsd386)
2019-04-27 14:25:00 +02:00
basic_machine=i386-pc
2021-04-21 16:02:03 +02:00
basic_os=netbsd
2018-06-11 08:54:58 -04:00
;;
netwinder)
basic_machine=armv4l-rebel
2021-04-21 16:02:03 +02:00
basic_os=linux
2018-06-11 08:54:58 -04:00
;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
2021-04-21 16:02:03 +02:00
basic_os=newsos
2018-06-11 08:54:58 -04:00
;;
news1000)
basic_machine=m68030-sony
2021-04-21 16:02:03 +02:00
basic_os=newsos
2018-06-11 08:54:58 -04:00
;;
necv70)
basic_machine=v70-nec
2021-04-21 16:02:03 +02:00
basic_os=sysv
2018-06-11 08:54:58 -04:00
;;
nh3000)
basic_machine=m68k-harris
2021-04-21 16:02:03 +02:00
basic_os=cxux
2018-06-11 08:54:58 -04:00
;;
nh[45]000)
basic_machine=m88k-harris
2021-04-21 16:02:03 +02:00
basic_os=cxux
2018-06-11 08:54:58 -04:00
;;
nindy960)
basic_machine=i960-intel
2021-04-21 16:02:03 +02:00
basic_os=nindy
2018-06-11 08:54:58 -04:00
;;
mon960)
basic_machine=i960-intel
2021-04-21 16:02:03 +02:00
basic_os=mon960
2018-06-11 08:54:58 -04:00
;;
nonstopux)
basic_machine=mips-compaq
2021-04-21 16:02:03 +02:00
basic_os=nonstopux
2018-06-11 08:54:58 -04:00
;;
os400)
basic_machine=powerpc-ibm
2021-04-21 16:02:03 +02:00
basic_os=os400
2018-06-11 08:54:58 -04:00
;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
2021-04-21 16:02:03 +02:00
basic_os=ose
2018-06-11 08:54:58 -04:00
;;
os68k)
basic_machine=m68k-none
2021-04-21 16:02:03 +02:00
basic_os=os68k
2018-06-11 08:54:58 -04:00
;;
paragon)
basic_machine=i860-intel
2021-04-21 16:02:03 +02:00
basic_os=osf
2018-06-11 08:54:58 -04:00
;;
parisc)
basic_machine=hppa-unknown
2021-04-21 16:02:03 +02:00
basic_os=linux
;;
psp)
basic_machine=mipsallegrexel-sony
basic_os=psp
2018-06-11 08:54:58 -04:00
;;
pw32)
basic_machine=i586-unknown
2021-04-21 16:02:03 +02:00
basic_os=pw32
2018-06-11 08:54:58 -04:00
;;
rdos | rdos64)
basic_machine=x86_64-pc
2021-04-21 16:02:03 +02:00
basic_os=rdos
2018-06-11 08:54:58 -04:00
;;
rdos32)
basic_machine=i386-pc
2021-04-21 16:02:03 +02:00
basic_os=rdos
2018-06-11 08:54:58 -04:00
;;
rom68k)
basic_machine=m68k-rom68k
2021-04-21 16:02:03 +02:00
basic_os=coff
2018-06-11 08:54:58 -04:00
;;
sa29200)
basic_machine=a29k-amd
2021-04-21 16:02:03 +02:00
basic_os=udi
2018-06-11 08:54:58 -04:00
;;
sei)
basic_machine=mips-sei
2021-04-21 16:02:03 +02:00
basic_os=seiux
2018-06-11 08:54:58 -04:00
;;
2019-04-27 14:25:00 +02:00
sequent)
basic_machine=i386-sequent
2021-04-21 16:02:03 +02:00
basic_os=
2019-04-27 14:25:00 +02:00
;;
2018-06-11 08:54:58 -04:00
sps7)
basic_machine=m68k-bull
2021-04-21 16:02:03 +02:00
basic_os=sysv2
2018-06-11 08:54:58 -04:00
;;
2019-04-27 14:25:00 +02:00
st2000)
basic_machine=m68k-tandem
2021-04-21 16:02:03 +02:00
basic_os=
2019-04-27 14:25:00 +02:00
;;
2018-06-11 08:54:58 -04:00
stratus)
basic_machine=i860-stratus
2021-04-21 16:02:03 +02:00
basic_os=sysv4
2018-06-11 08:54:58 -04:00
;;
2019-04-27 14:25:00 +02:00
sun2)
basic_machine=m68000-sun
2021-04-21 16:02:03 +02:00
basic_os=
2019-04-27 14:25:00 +02:00
;;
2018-06-11 08:54:58 -04:00
sun2os3)
basic_machine=m68000-sun
2021-04-21 16:02:03 +02:00
basic_os=sunos3
2018-06-11 08:54:58 -04:00
;;
sun2os4)
basic_machine=m68000-sun
2021-04-21 16:02:03 +02:00
basic_os=sunos4
2018-06-11 08:54:58 -04:00
;;
2019-04-27 14:25:00 +02:00
sun3)
basic_machine=m68k-sun
2021-04-21 16:02:03 +02:00
basic_os=
2019-04-27 14:25:00 +02:00
;;
2018-06-11 08:54:58 -04:00
sun3os3)
basic_machine=m68k-sun
2021-04-21 16:02:03 +02:00
basic_os=sunos3
2018-06-11 08:54:58 -04:00
;;
sun3os4)
basic_machine=m68k-sun
2021-04-21 16:02:03 +02:00
basic_os=sunos4
2018-06-11 08:54:58 -04:00
;;
2019-04-27 14:25:00 +02:00
sun4)
basic_machine=sparc-sun
2021-04-21 16:02:03 +02:00
basic_os=
2019-04-27 14:25:00 +02:00
;;
2018-06-11 08:54:58 -04:00
sun4os3)
basic_machine=sparc-sun
2021-04-21 16:02:03 +02:00
basic_os=sunos3
2018-06-11 08:54:58 -04:00
;;
sun4os4)
basic_machine=sparc-sun
2021-04-21 16:02:03 +02:00
basic_os=sunos4
2018-06-11 08:54:58 -04:00
;;
sun4sol2)
basic_machine=sparc-sun
2021-04-21 16:02:03 +02:00
basic_os=solaris2
2018-06-11 08:54:58 -04:00
;;
2019-04-27 14:25:00 +02:00
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
2021-04-21 16:02:03 +02:00
basic_os=
2019-04-27 14:25:00 +02:00
;;
2018-06-11 08:54:58 -04:00
sv1)
basic_machine=sv1-cray
2021-04-21 16:02:03 +02:00
basic_os=unicos
2018-06-11 08:54:58 -04:00
;;
symmetry)
basic_machine=i386-sequent
2021-04-21 16:02:03 +02:00
basic_os=dynix
2018-06-11 08:54:58 -04:00
;;
t3e)
basic_machine=alphaev5-cray
2021-04-21 16:02:03 +02:00
basic_os=unicos
2018-06-11 08:54:58 -04:00
;;
t90)
basic_machine=t90-cray
2021-04-21 16:02:03 +02:00
basic_os=unicos
2018-06-11 08:54:58 -04:00
;;
toad1)
basic_machine=pdp10-xkl
2021-04-21 16:02:03 +02:00
basic_os=tops20
2018-06-11 08:54:58 -04:00
;;
tpf)
basic_machine=s390x-ibm
2021-04-21 16:02:03 +02:00
basic_os=tpf
2018-06-11 08:54:58 -04:00
;;
udi29k)
basic_machine=a29k-amd
2021-04-21 16:02:03 +02:00
basic_os=udi
2018-06-11 08:54:58 -04:00
;;
ultra3)
basic_machine=a29k-nyu
2021-04-21 16:02:03 +02:00
basic_os=sym1
2018-06-11 08:54:58 -04:00
;;
v810 | necv810)
basic_machine=v810-nec
2021-04-21 16:02:03 +02:00
basic_os=none
2018-06-11 08:54:58 -04:00
;;
vaxv)
basic_machine=vax-dec
2021-04-21 16:02:03 +02:00
basic_os=sysv
2018-06-11 08:54:58 -04:00
;;
vms)
basic_machine=vax-dec
2021-04-21 16:02:03 +02:00
basic_os=vms
2018-06-11 08:54:58 -04:00
;;
2020-04-30 09:06:49 +02:00
vsta)
basic_machine=i386-pc
2021-04-21 16:02:03 +02:00
basic_os=vsta
2020-04-30 09:06:49 +02:00
;;
2018-06-11 08:54:58 -04:00
vxworks960)
basic_machine=i960-wrs
2021-04-21 16:02:03 +02:00
basic_os=vxworks
2018-06-11 08:54:58 -04:00
;;
vxworks68)
basic_machine=m68k-wrs
2021-04-21 16:02:03 +02:00
basic_os=vxworks
2018-06-11 08:54:58 -04:00
;;
vxworks29k)
basic_machine=a29k-wrs
2021-04-21 16:02:03 +02:00
basic_os=vxworks
2018-06-11 08:54:58 -04:00
;;
xbox)
basic_machine=i686-pc
2021-04-21 16:02:03 +02:00
basic_os=mingw32
2018-06-11 08:54:58 -04:00
;;
ymp)
basic_machine=ymp-cray
2021-04-21 16:02:03 +02:00
basic_os=unicos
2018-06-11 08:54:58 -04:00
;;
*)
basic_machine=$1
2021-04-21 16:02:03 +02:00
basic_os=
2018-06-11 08:54:58 -04:00
;;
esac
;;
esac
2019-04-27 14:25:00 +02:00
# Decode 1-component or ad-hoc basic machines
case $basic_machine in
2019-04-27 14:25:00 +02:00
# Here we handle the default manufacturer of certain CPU types. It is in
# some cases the only manufacturer, in others, it is the most popular.
w89k)
cpu=hppa1.1
vendor=winbond
2018-06-11 08:54:58 -04:00
;;
2019-04-27 14:25:00 +02:00
op50n)
cpu=hppa1.1
vendor=oki
;;
2019-04-27 14:25:00 +02:00
op60c)
cpu=hppa1.1
vendor=oki
2006-10-07 21:05:59 +00:00
;;
2019-04-27 14:25:00 +02:00
ibm*)
cpu=i370
vendor=ibm
2011-05-19 22:14:56 +03:00
;;
2019-04-27 14:25:00 +02:00
orion105)
cpu=clipper
vendor=highlevel
2012-05-08 20:46:13 +03:00
;;
2019-04-27 14:25:00 +02:00
mac | mpw | mac-mpw)
cpu=m68k
vendor=apple
2011-05-19 22:14:56 +03:00
;;
2019-04-27 14:25:00 +02:00
pmac | pmac-mpw)
cpu=powerpc
vendor=apple
2011-05-19 22:14:56 +03:00
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
2019-04-27 14:25:00 +02:00
cpu=m68000
vendor=att
;;
3b*)
2019-04-27 14:25:00 +02:00
cpu=we32k
vendor=att
2009-04-09 21:33:02 +00:00
;;
2010-05-12 16:50:57 +00:00
bluegene*)
2019-04-27 14:25:00 +02:00
cpu=powerpc
vendor=ibm
2021-04-21 16:02:03 +02:00
basic_os=cnk
2010-05-12 16:50:57 +00:00
;;
decsystem10* | dec10*)
2019-04-27 14:25:00 +02:00
cpu=pdp10
vendor=dec
2021-04-21 16:02:03 +02:00
basic_os=tops10
;;
decsystem20* | dec20*)
2019-04-27 14:25:00 +02:00
cpu=pdp10
vendor=dec
2021-04-21 16:02:03 +02:00
basic_os=tops20
;;
2025-04-09 12:12:57 +02:00
delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300)
2019-04-27 14:25:00 +02:00
cpu=m68k
vendor=motorola
;;
2025-04-09 12:12:57 +02:00
# This used to be dpx2*, but that gets the RS6000-based
# DPX/20 and the x86-based DPX/2-100 wrong. See
# https://oldskool.silicium.org/stations/bull_dpx20.htm
# https://www.feb-patrimoine.com/english/bull_dpx2.htm
# https://www.feb-patrimoine.com/english/unix_and_bull.htm
dpx2 | dpx2[23]00 | dpx2[23]xx)
2019-04-27 14:25:00 +02:00
cpu=m68k
vendor=bull
2025-04-09 12:12:57 +02:00
;;
dpx2100 | dpx21xx)
cpu=i386
vendor=bull
;;
dpx20)
cpu=rs6000
vendor=bull
;;
encore | umax | mmax)
2019-04-27 14:25:00 +02:00
cpu=ns32k
vendor=encore
;;
2018-06-11 08:54:58 -04:00
elxsi)
2019-04-27 14:25:00 +02:00
cpu=elxsi
vendor=elxsi
2021-04-21 16:02:03 +02:00
basic_os=${basic_os:-bsd}
;;
fx2800)
2019-04-27 14:25:00 +02:00
cpu=i860
vendor=alliant
;;
genix)
2019-04-27 14:25:00 +02:00
cpu=ns32k
vendor=ns
;;
h3050r* | hiux*)
2019-04-27 14:25:00 +02:00
cpu=hppa1.1
vendor=hitachi
2021-04-21 16:02:03 +02:00
basic_os=hiuxwe2
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
2019-04-27 14:25:00 +02:00
cpu=hppa1.0
vendor=hp
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
2019-04-27 14:25:00 +02:00
cpu=m68000
vendor=hp
;;
hp9k3[2-9][0-9])
2019-04-27 14:25:00 +02:00
cpu=m68k
vendor=hp
;;
hp9k6[0-9][0-9] | hp6[0-9][0-9])
2019-04-27 14:25:00 +02:00
cpu=hppa1.0
vendor=hp
;;
hp9k7[0-79][0-9] | hp7[0-79][0-9])
2019-04-27 14:25:00 +02:00
cpu=hppa1.1
vendor=hp
;;
hp9k78[0-9] | hp78[0-9])
# FIXME: really hppa2.0-hp
2019-04-27 14:25:00 +02:00
cpu=hppa1.1
vendor=hp
;;
hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
# FIXME: really hppa2.0-hp
2019-04-27 14:25:00 +02:00
cpu=hppa1.1
vendor=hp
;;
hp9k8[0-9][13679] | hp8[0-9][13679])
2019-04-27 14:25:00 +02:00
cpu=hppa1.1
vendor=hp
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
2019-04-27 14:25:00 +02:00
cpu=hppa1.0
vendor=hp
;;
2001-08-06 13:58:26 +00:00
i*86v32)
2022-04-07 07:32:43 +02:00
cpu=`echo "$1" | sed -e 's/86.*/86/'`
2019-04-27 14:25:00 +02:00
vendor=pc
2021-04-21 16:02:03 +02:00
basic_os=sysv32
;;
2001-08-06 13:58:26 +00:00
i*86v4*)
2022-04-07 07:32:43 +02:00
cpu=`echo "$1" | sed -e 's/86.*/86/'`
2019-04-27 14:25:00 +02:00
vendor=pc
2021-04-21 16:02:03 +02:00
basic_os=sysv4
;;
2001-08-06 13:58:26 +00:00
i*86v)
2022-04-07 07:32:43 +02:00
cpu=`echo "$1" | sed -e 's/86.*/86/'`
2019-04-27 14:25:00 +02:00
vendor=pc
2021-04-21 16:02:03 +02:00
basic_os=sysv
;;
2001-08-06 13:58:26 +00:00
i*86sol2)
2022-04-07 07:32:43 +02:00
cpu=`echo "$1" | sed -e 's/86.*/86/'`
2019-04-27 14:25:00 +02:00
vendor=pc
2021-04-21 16:02:03 +02:00
basic_os=solaris2
;;
2018-06-11 08:54:58 -04:00
j90 | j90-cray)
2019-04-27 14:25:00 +02:00
cpu=j90
vendor=cray
2021-04-21 16:02:03 +02:00
basic_os=${basic_os:-unicos}
;;
iris | iris4d)
2019-04-27 14:25:00 +02:00
cpu=mips
vendor=sgi
2021-04-21 16:02:03 +02:00
case $basic_os in
2018-06-11 08:54:58 -04:00
irix*)
;;
*)
2021-04-21 16:02:03 +02:00
basic_os=irix4
;;
esac
;;
miniframe)
2019-04-27 14:25:00 +02:00
cpu=m68000
vendor=convergent
;;
2018-06-11 08:54:58 -04:00
*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
2019-04-27 14:25:00 +02:00
cpu=m68k
vendor=atari
2021-04-21 16:02:03 +02:00
basic_os=mint
;;
news-3600 | risc-news)
2019-04-27 14:25:00 +02:00
cpu=mips
vendor=sony
2021-04-21 16:02:03 +02:00
basic_os=newsos
;;
2018-06-11 08:54:58 -04:00
next | m*-next)
2019-04-27 14:25:00 +02:00
cpu=m68k
vendor=next
;;
np1)
2019-04-27 14:25:00 +02:00
cpu=np1
vendor=gould
;;
2019-04-27 14:25:00 +02:00
op50n-* | op60c-*)
cpu=hppa1.1
vendor=oki
2021-04-21 16:02:03 +02:00
basic_os=proelf
2011-05-19 22:14:56 +03:00
;;
2019-04-27 14:25:00 +02:00
pa-hitachi)
cpu=hppa1.1
vendor=hitachi
2021-04-21 16:02:03 +02:00
basic_os=hiuxwe2
2011-05-19 22:14:56 +03:00
;;
2019-04-27 14:25:00 +02:00
pbd)
cpu=sparc
vendor=tti
;;
2019-04-27 14:25:00 +02:00
pbb)
cpu=m68k
vendor=tti
2018-06-11 08:54:58 -04:00
;;
2019-04-27 14:25:00 +02:00
pc532)
cpu=ns32k
vendor=pc532
2017-05-14 11:09:34 -04:00
;;
2019-04-27 14:25:00 +02:00
pn)
cpu=pn
vendor=gould
;;
2019-04-27 14:25:00 +02:00
power)
cpu=power
vendor=ibm
;;
2019-04-27 14:25:00 +02:00
ps2)
cpu=i386
vendor=ibm
2009-04-09 21:33:02 +00:00
;;
2019-04-27 14:25:00 +02:00
rm[46]00)
cpu=mips
vendor=siemens
2009-04-09 21:33:02 +00:00
;;
2019-04-27 14:25:00 +02:00
rtpc | rtpc-*)
cpu=romp
vendor=ibm
;;
2019-04-27 14:25:00 +02:00
sde)
cpu=mipsisa32
vendor=sde
2021-04-21 16:02:03 +02:00
basic_os=${basic_os:-elf}
;;
2019-04-27 14:25:00 +02:00
simso-wrs)
cpu=sparclite
vendor=wrs
2021-04-21 16:02:03 +02:00
basic_os=vxworks
;;
2019-04-27 14:25:00 +02:00
tower | tower-32)
cpu=m68k
vendor=ncr
2006-10-07 21:05:59 +00:00
;;
2019-04-27 14:25:00 +02:00
vpp*|vx|vx-*)
cpu=f301
vendor=fujitsu
;;
w65)
cpu=w65
vendor=wdc
;;
w89k-*)
cpu=hppa1.1
vendor=winbond
2021-04-21 16:02:03 +02:00
basic_os=proelf
2006-10-07 21:05:59 +00:00
;;
2019-04-27 14:25:00 +02:00
none)
cpu=none
vendor=none
;;
2019-04-27 14:25:00 +02:00
leon|leon[3-9])
cpu=sparc
vendor=$basic_machine
;;
2019-04-27 14:25:00 +02:00
leon-*|leon[3-9]-*)
cpu=sparc
2022-04-07 07:32:43 +02:00
vendor=`echo "$basic_machine" | sed 's/-.*//'`
;;
2019-04-27 14:25:00 +02:00
*-*)
2022-04-07 07:32:43 +02:00
saved_IFS=$IFS
2019-04-27 14:25:00 +02:00
IFS="-" read cpu vendor <<EOF
$basic_machine
EOF
2022-04-07 07:32:43 +02:00
IFS=$saved_IFS
;;
2024-04-09 14:21:57 +02:00
# We use 'pc' rather than 'unknown'
2019-04-27 14:25:00 +02:00
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
i*86 | x86_64)
cpu=$basic_machine
vendor=pc
;;
2019-04-27 14:25:00 +02:00
# These rules are duplicated from below for sake of the special case above;
# i.e. things that normalized to x86 arches should also default to "pc"
pc98)
cpu=i386
vendor=pc
;;
2019-04-27 14:25:00 +02:00
x64 | amd64)
cpu=x86_64
vendor=pc
;;
2019-04-27 14:25:00 +02:00
# Recognize the basic CPU types without company name.
*)
cpu=$basic_machine
vendor=unknown
;;
2019-04-27 14:25:00 +02:00
esac
unset -v basic_machine
# Decode basic machines in the full and proper CPU-Company form.
case $cpu-$vendor in
2025-04-09 12:12:57 +02:00
# Here we handle the default manufacturer of certain CPU types in canonical form.
# It is in some cases the only manufacturer, in others, it is the most popular.
c[12]-convex | c[12]-unknown | c3[248]-convex | c3[248]-unknown)
vendor=convex
basic_os=${basic_os:-bsd}
;;
2019-04-27 14:25:00 +02:00
craynv-unknown)
vendor=cray
2021-04-21 16:02:03 +02:00
basic_os=${basic_os:-unicosmp}
2019-04-27 14:25:00 +02:00
;;
c90-unknown | c90-cray)
vendor=cray
2025-04-09 12:12:57 +02:00
basic_os=${basic_os:-unicos}
;;
2019-04-27 14:25:00 +02:00
fx80-unknown)
vendor=alliant
;;
2019-04-27 14:25:00 +02:00
romp-unknown)
vendor=ibm
;;
2019-04-27 14:25:00 +02:00
mmix-unknown)
vendor=knuth
;;
2019-04-27 14:25:00 +02:00
microblaze-unknown | microblazeel-unknown)
vendor=xilinx
;;
2019-04-27 14:25:00 +02:00
rs6000-unknown)
vendor=ibm
;;
2019-04-27 14:25:00 +02:00
vax-unknown)
vendor=dec
;;
2019-04-27 14:25:00 +02:00
pdp11-unknown)
vendor=dec
2001-08-06 13:58:26 +00:00
;;
2019-04-27 14:25:00 +02:00
we32k-unknown)
vendor=att
;;
2019-04-27 14:25:00 +02:00
cydra-unknown)
vendor=cydrome
2001-08-06 13:58:26 +00:00
;;
2019-04-27 14:25:00 +02:00
i370-ibm*)
vendor=ibm
;;
2019-04-27 14:25:00 +02:00
orion-unknown)
vendor=highlevel
;;
2019-04-27 14:25:00 +02:00
xps-unknown | xps100-unknown)
cpu=xps100
vendor=honeywell
;;
# Here we normalize CPU types with a missing or matching vendor
2022-04-07 07:32:43 +02:00
armh-unknown | armh-alt)
cpu=armv7l
vendor=alt
basic_os=${basic_os:-linux-gnueabihf}
;;
2025-04-09 12:12:57 +02:00
# Normalized CPU+vendor pairs that imply an OS, if not otherwise specified
m68k-isi)
basic_os=${basic_os:-sysv}
;;
m68k-sony)
basic_os=${basic_os:-newsos}
;;
m68k-tektronix)
basic_os=${basic_os:-bsd}
;;
m88k-harris)
basic_os=${basic_os:-sysv3}
;;
i386-bull | m68k-bull)
basic_os=${basic_os:-sysv3}
;;
rs6000-bull)
2021-04-21 16:02:03 +02:00
basic_os=${basic_os:-bosx}
;;
2025-04-09 12:12:57 +02:00
mips-sni)
basic_os=${basic_os:-sysv4}
;;
2019-04-27 14:25:00 +02:00
# Here we normalize CPU types irrespective of the vendor
amd64-*)
cpu=x86_64
;;
2019-04-27 14:25:00 +02:00
blackfin-*)
cpu=bfin
2025-04-09 12:12:57 +02:00
basic_os=${basic_os:-linux}
;;
2019-04-27 14:25:00 +02:00
c54x-*)
cpu=tic54x
;;
2019-04-27 14:25:00 +02:00
c55x-*)
cpu=tic55x
;;
2019-04-27 14:25:00 +02:00
c6x-*)
cpu=tic6x
;;
2019-04-27 14:25:00 +02:00
e500v[12]-*)
cpu=powerpc
2021-04-21 16:02:03 +02:00
basic_os=${basic_os}"spe"
;;
2019-04-27 14:25:00 +02:00
mips3*-*)
cpu=mips64
2007-11-15 20:21:05 +00:00
;;
2019-04-27 14:25:00 +02:00
ms1-*)
cpu=mt
;;
2019-04-27 14:25:00 +02:00
m68knommu-*)
cpu=m68k
2025-04-09 12:12:57 +02:00
basic_os=${basic_os:-linux}
;;
2019-04-27 14:25:00 +02:00
m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
cpu=s12z
;;
2019-04-27 14:25:00 +02:00
openrisc-*)
cpu=or32
2011-05-19 22:14:56 +03:00
;;
2019-04-27 14:25:00 +02:00
parisc-*)
cpu=hppa
2025-04-09 12:12:57 +02:00
basic_os=${basic_os:-linux}
;;
2019-04-27 14:25:00 +02:00
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
cpu=i586
;;
2023-04-12 09:16:19 +02:00
pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
2019-04-27 14:25:00 +02:00
cpu=i686
;;
2019-04-27 14:25:00 +02:00
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
cpu=i686
;;
2019-04-27 14:25:00 +02:00
pentium4-*)
cpu=i786
2009-04-09 21:33:02 +00:00
;;
2019-04-27 14:25:00 +02:00
ppc-* | ppcbe-*)
cpu=powerpc
;;
2019-04-27 14:25:00 +02:00
ppcle-* | powerpclittle-*)
cpu=powerpcle
;;
2019-04-27 14:25:00 +02:00
ppc64-*)
cpu=powerpc64
;;
2019-04-27 14:25:00 +02:00
ppc64le-* | powerpc64little-*)
cpu=powerpc64le
;;
2019-04-27 14:25:00 +02:00
sb1-*)
cpu=mipsisa64sb1
;;
2019-04-27 14:25:00 +02:00
sb1el-*)
cpu=mipsisa64sb1el
;;
2019-04-27 14:25:00 +02:00
sh5e[lb]-*)
2022-04-07 07:32:43 +02:00
cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
2001-08-06 13:58:26 +00:00
;;
2019-04-27 14:25:00 +02:00
spur-*)
cpu=spur
2009-04-09 21:33:02 +00:00
;;
2019-04-27 14:25:00 +02:00
strongarm-* | thumb-*)
cpu=arm
;;
2019-04-27 14:25:00 +02:00
tx39-*)
cpu=mipstx39
;;
2019-04-27 14:25:00 +02:00
tx39el-*)
cpu=mipstx39el
;;
2019-04-27 14:25:00 +02:00
xscale-* | xscalee[bl]-*)
2022-04-07 07:32:43 +02:00
cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
2021-04-21 16:02:03 +02:00
;;
2022-04-07 07:32:43 +02:00
arm64-* | aarch64le-*)
2021-04-21 16:02:03 +02:00
cpu=aarch64
;;
2019-04-27 14:25:00 +02:00
# Recognize the canonical CPU Types that limit and/or modify the
# company names they are paired with.
cr16-*)
2021-04-21 16:02:03 +02:00
basic_os=${basic_os:-elf}
2004-09-17 22:09:21 +00:00
;;
2019-04-27 14:25:00 +02:00
crisv32-* | etraxfs*-*)
cpu=crisv32
vendor=axis
;;
2019-04-27 14:25:00 +02:00
cris-* | etrax*-*)
cpu=cris
vendor=axis
;;
2019-04-27 14:25:00 +02:00
crx-*)
2021-04-21 16:02:03 +02:00
basic_os=${basic_os:-elf}
;;
2019-04-27 14:25:00 +02:00
neo-tandem)
cpu=neo
vendor=tandem
;;
2019-04-27 14:25:00 +02:00
nse-tandem)
cpu=nse
vendor=tandem
;;
2019-04-27 14:25:00 +02:00
nsr-tandem)
cpu=nsr
vendor=tandem
;;
2019-04-27 14:25:00 +02:00
nsv-tandem)
cpu=nsv
vendor=tandem
;;
2019-04-27 14:25:00 +02:00
nsx-tandem)
cpu=nsx
vendor=tandem
;;
2021-04-21 16:02:03 +02:00
mipsallegrexel-sony)
cpu=mipsallegrexel
vendor=sony
;;
2019-04-27 14:25:00 +02:00
tile*-*)
2021-04-21 16:02:03 +02:00
basic_os=${basic_os:-linux-gnu}
2001-08-06 13:58:26 +00:00
;;
2019-04-27 14:25:00 +02:00
*)
2019-04-27 14:25:00 +02:00
# Recognize the canonical CPU types that are allowed with any
# company name.
case $cpu in
2025-04-09 12:12:57 +02:00
1750a \
| 580 \
| [cjt]90 \
2019-04-27 14:25:00 +02:00
| a29k \
2025-04-09 12:12:57 +02:00
| aarch64 \
| aarch64_be \
| aarch64c \
2019-04-27 14:25:00 +02:00
| abacus \
2025-04-09 12:12:57 +02:00
| alpha \
| alpha64 \
| alpha64ev56 \
| alpha64ev6[78] \
| alpha64ev[4-8] \
| alpha64pca5[67] \
| alphaev56 \
| alphaev6[78] \
| alphaev[4-8] \
| alphapca5[67] \
2019-04-27 14:25:00 +02:00
| am33_2.0 \
| amdgcn \
2025-04-09 12:12:57 +02:00
| arc \
| arc32 \
| arc64 \
| arceb \
| arm \
| arm64e \
| arm64ec \
| arm[lb]e \
| arme[lb] \
| armv* \
2019-04-27 14:25:00 +02:00
| asmjs \
2025-04-09 12:12:57 +02:00
| avr \
| avr32 \
2019-04-27 14:25:00 +02:00
| ba \
2025-04-09 12:12:57 +02:00
| be32 \
| be64 \
| bfin \
| bpf \
| bs2000 \
| c30 \
| c4x \
| c8051 \
| c[123]* \
| clipper \
| craynv \
| csky \
| cydra \
| d10v \
| d30v \
| dlx \
| dsp16xx \
| e2k \
| elxsi \
| epiphany \
| f30[01] \
| f700 \
| fido \
| fr30 \
| frv \
| ft32 \
| fx80 \
| h8300 \
| h8500 \
2019-04-27 14:25:00 +02:00
| hexagon \
2025-04-09 12:12:57 +02:00
| hppa \
| hppa1.[01] \
| hppa2.0 \
| hppa2.0[nw] \
| hppa64 \
| i*86 \
| i370 \
| i860 \
| i960 \
| ia16 \
| ia64 \
| ip2k \
| iq2000 \
| javascript \
2019-04-27 14:25:00 +02:00
| k1om \
2024-04-09 14:21:57 +02:00
| kvx \
2025-04-09 12:12:57 +02:00
| le32 \
| le64 \
2019-04-27 14:25:00 +02:00
| lm32 \
2025-04-09 12:12:57 +02:00
| loongarch32 \
| loongarch64 \
| m32c \
| m32r \
| m32rle \
| m5200 \
| m68000 \
| m680[012346]0 \
| m6811 \
| m6812 \
| m68360 \
| m683?2 \
| m68hc11 \
| m68hc12 \
| m68hcs12x \
| m68k \
| m88110 \
| m88k \
| maxq \
| mb \
| mcore \
| mep \
| metag \
| microblaze \
| microblazeel \
2024-04-09 14:21:57 +02:00
| mips* \
2019-04-27 14:25:00 +02:00
| mmix \
2025-04-09 12:12:57 +02:00
| mn10200 \
| mn10300 \
2019-04-27 14:25:00 +02:00
| moxie \
| msp430 \
2025-04-09 12:12:57 +02:00
| mt \
2024-04-09 14:21:57 +02:00
| nanomips* \
2025-04-09 12:12:57 +02:00
| nds32 \
| nds32be \
| nds32le \
2019-04-27 14:25:00 +02:00
| nfp \
2025-04-09 12:12:57 +02:00
| nios \
| nios2 \
| nios2eb \
| nios2el \
| none \
| np1 \
| ns16k \
| ns32k \
| nvptx \
2019-04-27 14:25:00 +02:00
| open8 \
| or1k* \
| or32 \
| orion \
2025-04-09 12:12:57 +02:00
| pdp10 \
| pdp11 \
2019-04-27 14:25:00 +02:00
| picochip \
2025-04-09 12:12:57 +02:00
| pj \
| pjl \
| pn \
| power \
| powerpc \
| powerpc64 \
| powerpc64le \
| powerpcle \
| powerpcspe \
2019-04-27 14:25:00 +02:00
| pru \
| pyramid \
2025-04-09 12:12:57 +02:00
| riscv \
| riscv32 \
| riscv32be \
| riscv64 \
| riscv64be \
| rl78 \
| romp \
| rs6000 \
| rx \
| s390 \
| s390x \
2019-04-27 14:25:00 +02:00
| score \
2025-04-09 12:12:57 +02:00
| sh \
| sh64 \
| sh64le \
| sh[12345][lb]e \
| sh[1234] \
| sh[1234]e[lb] \
| sh[23]e \
| sh[23]ele \
| sh[24]a \
| sh[24]ae[lb] \
| sh[lb]e \
| she[lb] \
| shl \
| sparc \
| sparc64 \
| sparc64b \
| sparc64v \
| sparc86x \
| sparclet \
2019-04-27 14:25:00 +02:00
| sparclite \
2025-04-09 12:12:57 +02:00
| sparcv8 \
| sparcv9 \
| sparcv9b \
| sparcv9v \
2019-04-27 14:25:00 +02:00
| spu \
2025-04-09 12:12:57 +02:00
| sv1 \
| sx* \
2019-04-27 14:25:00 +02:00
| tahoe \
2021-04-21 16:02:03 +02:00
| thumbv7* \
2025-04-09 12:12:57 +02:00
| tic30 \
| tic4x \
| tic54x \
| tic55x \
| tic6x \
| tic80 \
2019-04-27 14:25:00 +02:00
| tron \
| ubicom32 \
2025-04-09 12:12:57 +02:00
| v70 \
| v810 \
| v850 \
| v850e \
| v850e1 \
| v850e2 \
| v850e2v3 \
| v850es \
2019-04-27 14:25:00 +02:00
| vax \
2024-04-09 14:21:57 +02:00
| vc4 \
2019-04-27 14:25:00 +02:00
| visium \
| w65 \
2025-04-09 12:12:57 +02:00
| wasm32 \
| wasm64 \
2019-04-27 14:25:00 +02:00
| we32k \
2025-04-09 12:12:57 +02:00
| x86 \
| x86_64 \
| xc16x \
| xgate \
| xps100 \
| xstormy16 \
| xtensa* \
2019-04-27 14:25:00 +02:00
| ymp \
2025-04-09 12:12:57 +02:00
| z80 \
| z8k)
2019-04-27 14:25:00 +02:00
;;
*)
2024-04-09 14:21:57 +02:00
echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
2019-04-27 14:25:00 +02:00
exit 1
;;
esac
;;
esac
# Here we canonicalize certain aliases for manufacturers.
2019-04-27 14:25:00 +02:00
case $vendor in
digital*)
vendor=dec
;;
2019-04-27 14:25:00 +02:00
commodore*)
vendor=cbm
;;
*)
;;
esac
# Decode manufacturer-specific aliases for certain operating systems.
2024-04-09 14:21:57 +02:00
if test x"$basic_os" != x
then
2021-04-21 16:02:03 +02:00
2022-04-07 07:32:43 +02:00
# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
2021-04-21 16:02:03 +02:00
# set os.
2024-04-09 14:21:57 +02:00
obj=
2021-04-21 16:02:03 +02:00
case $basic_os in
gnu/linux*)
kernel=linux
2022-04-07 07:32:43 +02:00
os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
2021-04-21 16:02:03 +02:00
;;
os2-emx)
kernel=os2
2022-04-07 07:32:43 +02:00
os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
2021-04-21 16:02:03 +02:00
;;
nto-qnx*)
kernel=nto
2022-04-07 07:32:43 +02:00
os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
2021-04-21 16:02:03 +02:00
;;
*-*)
2022-04-07 07:32:43 +02:00
saved_IFS=$IFS
2021-04-21 16:02:03 +02:00
IFS="-" read kernel os <<EOF
$basic_os
EOF
2022-04-07 07:32:43 +02:00
IFS=$saved_IFS
2021-04-21 16:02:03 +02:00
;;
# Default OS when just kernel was specified
nto*)
kernel=nto
2022-04-07 07:32:43 +02:00
os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
2021-04-21 16:02:03 +02:00
;;
linux*)
kernel=linux
2022-04-07 07:32:43 +02:00
os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
2021-04-21 16:02:03 +02:00
;;
2023-04-12 09:16:19 +02:00
managarm*)
kernel=managarm
os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
;;
2021-04-21 16:02:03 +02:00
*)
kernel=
os=$basic_os
;;
esac
# Now, normalize the OS (knowing we just have one component, it's not a kernel,
# etc.)
case $os in
2018-06-11 08:54:58 -04:00
# First match some system type aliases that might get confused
# with valid system types.
# solaris* is a basic system type, with this one exception.
auroraux)
os=auroraux
2010-05-12 16:50:57 +00:00
;;
2018-06-11 08:54:58 -04:00
bluegene*)
os=cnk
;;
2018-06-11 08:54:58 -04:00
solaris1 | solaris1.*)
2022-04-07 07:32:43 +02:00
os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
;;
2018-06-11 08:54:58 -04:00
solaris)
os=solaris2
;;
2018-06-11 08:54:58 -04:00
unixware*)
os=sysv4.2uw
;;
2025-04-09 12:12:57 +02:00
# The marketing names for NeXT's operating systems were
# NeXTSTEP, NeXTSTEP 2, OpenSTEP 3, OpenSTEP 4. 'openstep' is
# mapped to 'openstep3', but 'openstep1' and 'openstep2' are
# mapped to 'nextstep' and 'nextstep2', consistent with the
# treatment of SunOS/Solaris.
ns | ns1 | nextstep | nextstep1 | openstep1)
os=nextstep
;;
ns2 | nextstep2 | openstep2)
os=nextstep2
;;
ns3 | nextstep3 | openstep | openstep3)
os=openstep3
;;
ns4 | nextstep4 | openstep4)
os=openstep4
;;
2018-06-11 08:54:58 -04:00
# es1800 is here to avoid being matched by es* (a different OS)
es1800*)
os=ose
;;
# Some version numbers need modification
chorusos*)
os=chorusos
;;
isc)
os=isc2.2
;;
sco6)
os=sco5v6
;;
sco5)
os=sco3.2v5
;;
sco4)
os=sco3.2v4
;;
sco3.2.[4-9]*)
2022-04-07 07:32:43 +02:00
os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
2018-06-11 08:54:58 -04:00
;;
2021-04-21 16:02:03 +02:00
sco*v* | scout)
2018-06-11 08:54:58 -04:00
# Don't match below
;;
sco*)
os=sco3.2v2
;;
psos*)
os=psos
;;
qnx*)
2021-04-21 16:02:03 +02:00
os=qnx
;;
2018-06-11 08:54:58 -04:00
hiux*)
os=hiuxwe2
;;
2018-06-11 08:54:58 -04:00
lynx*178)
os=lynxos178
;;
lynx*5)
os=lynxos5
;;
2021-04-21 16:02:03 +02:00
lynxos*)
# don't get caught up in next wildcard
;;
2018-06-11 08:54:58 -04:00
lynx*)
os=lynxos
;;
2021-04-21 16:02:03 +02:00
mac[0-9]*)
2022-04-07 07:32:43 +02:00
os=`echo "$os" | sed -e 's|mac|macos|'`
;;
2018-06-11 08:54:58 -04:00
opened*)
os=openedition
;;
2018-06-11 08:54:58 -04:00
os400*)
os=os400
;;
2018-06-11 08:54:58 -04:00
sunos5*)
2022-04-07 07:32:43 +02:00
os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
;;
2018-06-11 08:54:58 -04:00
sunos6*)
2022-04-07 07:32:43 +02:00
os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
;;
2018-06-11 08:54:58 -04:00
wince*)
os=wince
;;
2018-06-11 08:54:58 -04:00
utek*)
os=bsd
2025-04-09 12:12:57 +02:00
vendor=`echo "$vendor" | sed -e 's|^unknown$|tektronix|'`
;;
2018-06-11 08:54:58 -04:00
dynix*)
os=bsd
;;
2018-06-11 08:54:58 -04:00
acis*)
os=aos
;;
2018-06-11 08:54:58 -04:00
atheos*)
os=atheos
;;
2018-06-11 08:54:58 -04:00
syllable*)
os=syllable
2004-09-17 22:09:21 +00:00
;;
2018-06-11 08:54:58 -04:00
386bsd)
os=bsd
;;
2025-04-09 12:12:57 +02:00
ctix*)
2018-06-11 08:54:58 -04:00
os=sysv
2025-04-09 12:12:57 +02:00
vendor=`echo "$vendor" | sed -e 's|^unknown$|convergent|'`
;;
2025-04-09 12:12:57 +02:00
uts*)
os=sysv
;;
2025-04-09 12:12:57 +02:00
nova*)
kernel=rtmk
os=nova
;;
# Preserve the version number of sinix5.
2018-06-11 08:54:58 -04:00
sinix5.*)
2022-04-07 07:32:43 +02:00
os=`echo "$os" | sed -e 's|sinix|sysv|'`
2025-04-09 12:12:57 +02:00
vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
;;
2018-06-11 08:54:58 -04:00
sinix*)
os=sysv4
2025-04-09 12:12:57 +02:00
vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
;;
2018-06-11 08:54:58 -04:00
tpf*)
os=tpf
;;
2018-06-11 08:54:58 -04:00
triton*)
os=sysv3
;;
2018-06-11 08:54:58 -04:00
oss*)
os=sysv3
;;
2018-06-11 08:54:58 -04:00
svr4*)
os=sysv4
;;
2018-06-11 08:54:58 -04:00
svr3)
os=sysv3
;;
2018-06-11 08:54:58 -04:00
sysvr4)
os=sysv4
;;
2018-06-11 08:54:58 -04:00
ose*)
os=ose
;;
2018-06-11 08:54:58 -04:00
*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
os=mint
;;
2018-06-11 08:54:58 -04:00
dicos*)
os=dicos
;;
2018-06-11 08:54:58 -04:00
pikeos*)
# Until real need of OS specific support for
# particular features comes up, bare metal
# configurations are quite functional.
2019-04-27 14:25:00 +02:00
case $cpu in
2018-06-11 08:54:58 -04:00
arm*)
os=eabi
;;
*)
2024-04-09 14:21:57 +02:00
os=
obj=elf
2018-06-11 08:54:58 -04:00
;;
esac
;;
2024-04-09 14:21:57 +02:00
aout* | coff* | elf* | pe*)
# These are machine code file formats, not OSes
obj=$os
os=
;;
*)
2021-04-21 16:02:03 +02:00
# No normalization, but not necessarily accepted, that comes below.
;;
esac
2021-04-21 16:02:03 +02:00
else
# Here we handle the default operating systems that come with various machines.
# The value should be what the vendor currently ships out the door with their
# machine or put another way, the most popular os provided with the machine.
# Note that if you're going to try to match "-MANUFACTURER" here (say,
# "-sun"), then you have to tell the case statement up towards the top
# that MANUFACTURER isn't an operating system. Otherwise, code above
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
2021-04-21 16:02:03 +02:00
kernel=
2024-04-09 14:21:57 +02:00
obj=
2019-04-27 14:25:00 +02:00
case $cpu-$vendor in
2011-05-19 22:14:56 +03:00
score-*)
2024-04-09 14:21:57 +02:00
os=
obj=elf
2006-10-07 21:05:59 +00:00
;;
2011-05-19 22:14:56 +03:00
spu-*)
2024-04-09 14:21:57 +02:00
os=
obj=elf
2006-10-07 21:05:59 +00:00
;;
*-acorn)
2018-06-11 08:54:58 -04:00
os=riscix1.2
;;
arm*-rebel)
2021-04-21 16:02:03 +02:00
kernel=linux
os=gnu
;;
arm*-semi)
2024-04-09 14:21:57 +02:00
os=
obj=aout
;;
2011-05-19 22:14:56 +03:00
c4x-* | tic4x-*)
2024-04-09 14:21:57 +02:00
os=
obj=coff
2006-10-07 21:05:59 +00:00
;;
2014-05-10 10:33:34 -04:00
c8051-*)
2024-04-09 14:21:57 +02:00
os=
obj=elf
2018-06-11 08:54:58 -04:00
;;
clipper-intergraph)
os=clix
2014-05-10 10:33:34 -04:00
;;
2013-04-26 22:13:03 -04:00
hexagon-*)
2024-04-09 14:21:57 +02:00
os=
obj=elf
2013-04-26 22:13:03 -04:00
;;
2010-05-12 16:50:57 +00:00
tic54x-*)
2024-04-09 14:21:57 +02:00
os=
obj=coff
2010-05-12 16:50:57 +00:00
;;
tic55x-*)
2024-04-09 14:21:57 +02:00
os=
obj=coff
2010-05-12 16:50:57 +00:00
;;
tic6x-*)
2024-04-09 14:21:57 +02:00
os=
obj=coff
2010-05-12 16:50:57 +00:00
;;
# This must come before the *-dec entry.
2001-08-06 13:58:26 +00:00
pdp10-*)
2018-06-11 08:54:58 -04:00
os=tops20
2001-08-06 13:58:26 +00:00
;;
pdp11-*)
2018-06-11 08:54:58 -04:00
os=none
;;
*-dec | vax-*)
2018-06-11 08:54:58 -04:00
os=ultrix4.2
;;
m68*-apollo)
2018-06-11 08:54:58 -04:00
os=domain
;;
i386-sun)
2018-06-11 08:54:58 -04:00
os=sunos4.0.2
;;
m68000-sun)
2018-06-11 08:54:58 -04:00
os=sunos3
;;
m68*-cisco)
2024-04-09 14:21:57 +02:00
os=
obj=aout
;;
2011-05-19 22:14:56 +03:00
mep-*)
2024-04-09 14:21:57 +02:00
os=
obj=elf
2007-11-15 20:21:05 +00:00
;;
2025-04-09 12:12:57 +02:00
# The -sgi and -siemens entries must be before the mips- entry
# or we get the wrong os.
*-sgi)
os=irix
;;
*-siemens)
os=sysv4
;;
mips*-cisco)
2024-04-09 14:21:57 +02:00
os=
obj=elf
;;
2024-04-09 14:21:57 +02:00
mips*-*|nanomips*-*)
os=
obj=elf
;;
or32-*)
2024-04-09 14:21:57 +02:00
os=
obj=coff
;;
2025-04-09 12:12:57 +02:00
# This must be before the sparc-* entry or we get the wrong os.
*-tti)
2018-06-11 08:54:58 -04:00
os=sysv3
;;
sparc-* | *-sun)
2018-06-11 08:54:58 -04:00
os=sunos4.1.1
;;
2017-05-14 11:09:34 -04:00
pru-*)
2024-04-09 14:21:57 +02:00
os=
obj=elf
2017-05-14 11:09:34 -04:00
;;
*-be)
2018-06-11 08:54:58 -04:00
os=beos
2006-10-07 21:05:59 +00:00
;;
*-ibm)
2018-06-11 08:54:58 -04:00
os=aix
;;
2011-05-19 22:14:56 +03:00
*-knuth)
2018-06-11 08:54:58 -04:00
os=mmixware
2004-09-17 22:09:21 +00:00
;;
*-wec)
2018-06-11 08:54:58 -04:00
os=proelf
;;
*-winbond)
2018-06-11 08:54:58 -04:00
os=proelf
;;
*-oki)
2018-06-11 08:54:58 -04:00
os=proelf
;;
*-hp)
2018-06-11 08:54:58 -04:00
os=hpux
;;
*-hitachi)
2025-04-09 12:12:57 +02:00
os=hiuxwe2
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
2018-06-11 08:54:58 -04:00
os=sysv
;;
*-cbm)
2018-06-11 08:54:58 -04:00
os=amigaos
;;
*-dg)
2018-06-11 08:54:58 -04:00
os=dgux
;;
*-dolphin)
2018-06-11 08:54:58 -04:00
os=sysv3
;;
m68k-ccur)
2018-06-11 08:54:58 -04:00
os=rtu
;;
m88k-omron*)
2018-06-11 08:54:58 -04:00
os=luna
;;
2018-06-11 08:54:58 -04:00
*-next)
os=nextstep
;;
*-sequent)
2018-06-11 08:54:58 -04:00
os=ptx
;;
*-crds)
2018-06-11 08:54:58 -04:00
os=unos
;;
*-ns)
2018-06-11 08:54:58 -04:00
os=genix
;;
i370-*)
2018-06-11 08:54:58 -04:00
os=mvs
;;
*-gould)
2018-06-11 08:54:58 -04:00
os=sysv
;;
*-highlevel)
2018-06-11 08:54:58 -04:00
os=bsd
;;
*-encore)
2018-06-11 08:54:58 -04:00
os=bsd
;;
*-masscomp)
2018-06-11 08:54:58 -04:00
os=rtu
;;
2001-08-06 13:58:26 +00:00
f30[01]-fujitsu | f700-fujitsu)
2018-06-11 08:54:58 -04:00
os=uxpv
;;
*-rom68k)
2024-04-09 14:21:57 +02:00
os=
obj=coff
;;
*-*bug)
2024-04-09 14:21:57 +02:00
os=
obj=coff
;;
*-apple)
2018-06-11 08:54:58 -04:00
os=macos
;;
*-atari*)
2018-06-11 08:54:58 -04:00
os=mint
;;
*-wrs)
os=vxworks
;;
*)
2018-06-11 08:54:58 -04:00
os=none
;;
esac
2021-04-21 16:02:03 +02:00
fi
2024-04-09 14:21:57 +02:00
# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
2021-04-21 16:02:03 +02:00
case $os in
# Sometimes we do "kernel-libc", so those need to count as OSes.
2024-04-09 14:21:57 +02:00
llvm* | musl* | newlib* | relibc* | uclibc*)
2021-04-21 16:02:03 +02:00
;;
# Likewise for "kernel-abi"
eabi* | gnueabi*)
;;
2024-04-09 14:21:57 +02:00
# VxWorks passes extra cpu info in the 4th filed.
2021-04-21 16:02:03 +02:00
simlinux | simwindows | spe)
;;
2024-04-09 14:21:57 +02:00
# See `case $cpu-$os` validation below
ghcjs)
;;
2021-04-21 16:02:03 +02:00
# Now accept the basic system types.
# Each alternative MUST end in a * to match a version number.
2025-04-09 12:12:57 +02:00
abug \
| aix* \
| amdhsa* \
| amigados* \
| amigaos* \
| android* \
| aof* \
| aos* \
| aros* \
| atheos* \
| auroraux* \
| aux* \
| beos* \
| bitrig* \
| bme* \
| bosx* \
| bsd* \
| cegcc* \
| chorusos* \
| chorusrdb* \
| clix* \
| cloudabi* \
| cnk* \
| conix* \
| cos* \
| cxux* \
| cygwin* \
| darwin* \
| dgux* \
| dicos* \
| dnix* \
| domain* \
| dragonfly* \
| drops* \
| ebmon* \
| ecoff* \
| ekkobsd* \
| emscripten* \
| emx* \
| es* \
| fiwix* \
| freebsd* \
| fuchsia* \
| genix* \
| genode* \
| glidix* \
| gnu* \
| go32* \
| haiku* \
| hcos* \
| hiux* \
| hms* \
| hpux* \
| ieee* \
| interix* \
| ios* \
| iris* \
| irix* \
| ironclad* \
| isc* \
| its* \
| l4re* \
| libertybsd* \
| lites* \
| lnews* \
| luna* \
| lynxos* \
| mach* \
| macos* \
| magic* \
| mbr* \
| midipix* \
| midnightbsd* \
| mingw32* \
| mingw64* \
| minix* \
| mint* \
| mirbsd* \
| mks* \
| mlibc* \
| mmixware* \
| mon960* \
| morphos* \
| moss* \
| moxiebox* \
| mpeix* \
| mpw* \
| msdos* \
| msys* \
| mvs* \
| nacl* \
| netbsd* \
| netware* \
| newsos* \
| nextstep* \
| nindy* \
| nonstopux* \
| nova* \
| nsk* \
| nucleus* \
| nx6 \
| nx7 \
| oabi* \
| ohos* \
| onefs* \
| openbsd* \
| openedition* \
| openstep* \
| os108* \
| os2* \
| os400* \
| os68k* \
| os9* \
| ose* \
| osf* \
| oskit* \
| osx* \
| palmos* \
| phoenix* \
| plan9* \
| powermax* \
| powerunix* \
| proelf* \
| psos* \
| psp* \
| ptx* \
| pw32* \
| qnx* \
| rdos* \
| redox* \
| rhapsody* \
| riscix* \
| riscos* \
| rtems* \
| rtmk* \
| rtu* \
| scout* \
| secbsd* \
| sei* \
| serenity* \
| sim* \
| skyos* \
| solaris* \
| solidbsd* \
| sortix* \
| storm-chaos* \
| sunos \
| sunos[34]* \
| superux* \
| syllable* \
| sym* \
| sysv* \
| tenex* \
| tirtos* \
| toppers* \
| tops10* \
| tops20* \
| tpf* \
| tvos* \
| twizzler* \
| uclinux* \
| udi* \
| udk* \
| ultrix* \
| unicos* \
| uniplus* \
| unleashed* \
| unos* \
| uwin* \
| uxpv* \
| v88r* \
|*vms* \
| vos* \
| vsta* \
| vxsim* \
| vxworks* \
| wasi* \
| watchos* \
| wince* \
| windiss* \
| windows* \
| winnt* \
| xenix* \
| xray* \
| zephyr* \
| zvmoe* )
2021-04-21 16:02:03 +02:00
;;
# This one is extra strict with allowed versions
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
# Don't forget version if it is 3.2v4 or newer.
;;
2024-04-09 14:21:57 +02:00
# This refers to builds using the UEFI calling convention
# (which depends on the architecture) and PE file format.
# Note that this is both a different calling convention and
# different file format than that of GNU-EFI
# (x86_64-w64-mingw32).
uefi)
;;
2021-04-21 16:02:03 +02:00
none)
;;
2024-04-09 14:21:57 +02:00
kernel* | msvc* )
2023-04-12 09:16:19 +02:00
# Restricted further below
;;
2024-04-09 14:21:57 +02:00
'')
if test x"$obj" = x
then
echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
fi
;;
2021-04-21 16:02:03 +02:00
*)
2024-04-09 14:21:57 +02:00
echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
exit 1
;;
esac
case $obj in
aout* | coff* | elf* | pe*)
;;
'')
# empty is fine
;;
*)
echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
exit 1
;;
esac
# Here we handle the constraint that a (synthetic) cpu and os are
# valid only in combination with each other and nowhere else.
case $cpu-$os in
# The "javascript-unknown-ghcjs" triple is used by GHC; we
# accept it here in order to tolerate that, but reject any
# variations.
javascript-ghcjs)
;;
javascript-* | *-ghcjs)
echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
2021-04-21 16:02:03 +02:00
exit 1
;;
esac
# As a final step for OS-related things, validate the OS-kernel combination
# (given a valid OS), if there is a kernel.
2024-04-09 14:21:57 +02:00
case $kernel-$os-$obj in
linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
| linux-mlibc*- | linux-musl*- | linux-newlib*- \
2025-04-09 12:12:57 +02:00
| linux-relibc*- | linux-uclibc*- | linux-ohos*- )
2021-04-21 16:02:03 +02:00
;;
2025-04-09 12:12:57 +02:00
uclinux-uclibc*- | uclinux-gnu*- )
2021-04-21 16:02:03 +02:00
;;
2024-04-09 14:21:57 +02:00
managarm-mlibc*- | managarm-kernel*- )
2023-04-12 09:16:19 +02:00
;;
2024-04-09 14:21:57 +02:00
windows*-msvc*-)
;;
-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
| -uclibc*- )
2021-04-21 16:02:03 +02:00
# These are just libc implementations, not actual OSes, and thus
# require a kernel.
2024-04-09 14:21:57 +02:00
echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
2021-04-21 16:02:03 +02:00
exit 1
;;
2024-04-09 14:21:57 +02:00
-kernel*- )
echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
2023-04-12 09:16:19 +02:00
exit 1
;;
2024-04-09 14:21:57 +02:00
*-kernel*- )
echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
2023-04-12 09:16:19 +02:00
exit 1
;;
2024-04-09 14:21:57 +02:00
*-msvc*- )
echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
exit 1
2021-04-21 16:02:03 +02:00
;;
2025-04-09 12:12:57 +02:00
kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-)
2021-04-21 16:02:03 +02:00
;;
2024-04-09 14:21:57 +02:00
vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
2021-04-21 16:02:03 +02:00
;;
2024-04-09 14:21:57 +02:00
nto-qnx*-)
;;
os2-emx-)
;;
2025-04-09 12:12:57 +02:00
rtmk-nova-)
;;
2024-04-09 14:21:57 +02:00
*-eabi*- | *-gnueabi*-)
2021-04-21 16:02:03 +02:00
;;
2024-04-09 14:21:57 +02:00
none--*)
# None (no kernel, i.e. freestanding / bare metal),
# can be paired with an machine code file format
2021-04-21 16:02:03 +02:00
;;
2024-04-09 14:21:57 +02:00
-*-)
2021-04-21 16:02:03 +02:00
# Blank kernel with real OS is always fine.
;;
2024-04-09 14:21:57 +02:00
--*)
# Blank kernel and OS with real machine code file format is always fine.
;;
*-*-*)
echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
2021-04-21 16:02:03 +02:00
exit 1
;;
esac
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
2019-04-27 14:25:00 +02:00
case $vendor in
unknown)
2021-04-21 16:02:03 +02:00
case $cpu-$os in
*-riscix*)
vendor=acorn
;;
2025-04-09 12:12:57 +02:00
*-sunos* | *-solaris*)
vendor=sun
;;
2021-04-21 16:02:03 +02:00
*-cnk* | *-aix*)
vendor=ibm
;;
2021-04-21 16:02:03 +02:00
*-beos*)
vendor=be
;;
2021-04-21 16:02:03 +02:00
*-hpux*)
vendor=hp
;;
2021-04-21 16:02:03 +02:00
*-mpeix*)
vendor=hp
;;
2021-04-21 16:02:03 +02:00
*-hiux*)
vendor=hitachi
;;
2021-04-21 16:02:03 +02:00
*-unos*)
vendor=crds
;;
2021-04-21 16:02:03 +02:00
*-dgux*)
vendor=dg
;;
2021-04-21 16:02:03 +02:00
*-luna*)
vendor=omron
;;
2021-04-21 16:02:03 +02:00
*-genix*)
vendor=ns
;;
2021-04-21 16:02:03 +02:00
*-clix*)
2018-06-11 08:54:58 -04:00
vendor=intergraph
;;
2021-04-21 16:02:03 +02:00
*-mvs* | *-opened*)
vendor=ibm
;;
*-os400*)
vendor=ibm
;;
2021-04-21 16:02:03 +02:00
s390-* | s390x-*)
vendor=ibm
;;
2021-04-21 16:02:03 +02:00
*-ptx*)
vendor=sequent
;;
2021-04-21 16:02:03 +02:00
*-tpf*)
vendor=ibm
;;
2021-04-21 16:02:03 +02:00
*-vxsim* | *-vxworks* | *-windiss*)
vendor=wrs
;;
2021-04-21 16:02:03 +02:00
*-aux*)
vendor=apple
;;
2021-04-21 16:02:03 +02:00
*-hms*)
vendor=hitachi
;;
2021-04-21 16:02:03 +02:00
*-mpw* | *-macos*)
vendor=apple
;;
2021-04-21 16:02:03 +02:00
*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
vendor=atari
;;
2021-04-21 16:02:03 +02:00
*-vos*)
2001-08-06 13:58:26 +00:00
vendor=stratus
;;
esac
;;
esac
2024-04-09 14:21:57 +02:00
echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
exit
# Local variables:
2018-06-11 08:54:58 -04:00
# eval: (add-hook 'before-save-hook 'time-stamp)
2001-08-06 13:58:26 +00:00
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
# End: