1
mirror of https://github.com/jedisct1/libsodium.git synced 2024-12-20 10:37:24 -07:00
libsodium/build-aux/config.sub

2355 lines
39 KiB
Plaintext
Raw Normal View History

2017-10-01 08:17:11 -07:00
#! /bin/sh
# Configuration validation subroutine script.
2024-03-24 02:37:10 -07:00
# Copyright 1992-2024 Free Software Foundation, Inc.
2017-10-01 08:17:11 -07:00
2024-08-01 04:57:57 -07:00
# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale
2021-07-13 07:59:44 -07:00
2024-08-01 04:57:57 -07:00
timestamp='2024-05-27'
2017-10-01 08:17:11 -07: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-01-22 15:37:47 -07:00
# the Free Software Foundation, either version 3 of the License, or
2017-10-01 08:17:11 -07:00
# (at your option) any later version.
#
# 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-03-14 12:03:49 -07:00
# along with this program; if not, see <https://www.gnu.org/licenses/>.
2017-10-01 08:17:11 -07:00
#
# 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
# 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").
# 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.
# You can get the latest version of this script from:
2020-11-20 14:59:37 -07:00
# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
2017-10-01 08:17:11 -07: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.
2021-07-13 07:59:44 -07: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,.*/,,'`
2017-10-01 08:17:11 -07:00
usage="\
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
Canonicalize a configuration name.
2018-03-14 12:03:49 -07:00
Options:
2017-10-01 08:17:11 -07: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-03-24 02:37:10 -07:00
Copyright 1992-2024 Free Software Foundation, Inc.
2017-10-01 08:17:11 -07: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="
2023-07-18 08:42:40 -07:00
Try '$me --help' for more information."
2017-10-01 08:17:11 -07:00
# Parse command line
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
echo "$timestamp" ; exit ;;
--version | -v )
echo "$version" ; exit ;;
--help | --h* | -h )
echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
break ;;
-* )
2019-05-03 02:18:55 -07:00
echo "$me: invalid option $1$help" >&2
2017-10-01 08:17:11 -07:00
exit 1 ;;
*local*)
# First pass through any local machine types.
2018-03-14 12:03:49 -07:00
echo "$1"
2017-10-01 08:17:11 -07:00
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
2019-05-03 02:18:55 -07:00
# Split fields of configuration type
saved_IFS=$IFS
2019-05-03 02:18:55 -07:00
IFS="-" read field1 field2 field3 field4 <<EOF
$1
EOF
IFS=$saved_IFS
2017-10-01 08:17:11 -07:00
2019-05-03 02:18:55 -07:00
# Separate into logical components for further validation
case $1 in
*-*-*-*-*)
2023-07-18 08:42:40 -07:00
echo "Invalid configuration '$1': more than four components" >&2
2019-05-03 02:18:55 -07:00
exit 1
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
*-*-*-*)
basic_machine=$field1-$field2
2020-06-28 11:58:24 -07:00
basic_os=$field3-$field4
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
*-*-*)
# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
# parts
maybe_os=$field2-$field3
case $maybe_os in
2024-08-01 04:57:57 -07: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* \
2023-07-18 08:42:40 -07:00
| windows-* )
2019-05-03 02:18:55 -07:00
basic_machine=$field1
2020-06-28 11:58:24 -07:00
basic_os=$maybe_os
2019-05-03 02:18:55 -07:00
;;
android-linux)
basic_machine=$field1-unknown
2020-06-28 11:58:24 -07:00
basic_os=linux-android
2019-05-03 02:18:55 -07:00
;;
*)
basic_machine=$field1-$field2
2020-06-28 11:58:24 -07:00
basic_os=$field3
2019-05-03 02:18:55 -07:00
;;
esac
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
*-*)
case $field1-$field2 in
2024-08-01 04:57:57 -07:00
# Shorthands that happen to contain a single dash
convex-c[12] | convex-c3[248])
basic_machine=$field2-convex
basic_os=
;;
2019-05-03 02:18:55 -07:00
decstation-3100)
basic_machine=mips-dec
2020-06-28 11:58:24 -07:00
basic_os=
2019-05-03 02:18:55 -07:00
;;
*-*)
# Second component is usually, but not always the OS
case $field2 in
2024-08-01 04:57:57 -07:00
# Do not treat sunos as a manufacturer
2019-05-03 02:18:55 -07:00
sun*os*)
basic_machine=$field1
2020-06-28 11:58:24 -07:00
basic_os=$field2
2019-05-03 02:18:55 -07:00
;;
# Manufacturers
2024-08-01 04:57:57 -07: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-05-03 02:18:55 -07:00
basic_machine=$field1-$field2
2020-06-28 11:58:24 -07:00
basic_os=
2019-05-03 02:18:55 -07:00
;;
2024-08-01 04:57:57 -07:00
zephyr*)
basic_machine=$field1-unknown
basic_os=$field2
;;
2019-05-03 02:18:55 -07:00
*)
basic_machine=$field1
2020-06-28 11:58:24 -07:00
basic_os=$field2
2019-05-03 02:18:55 -07:00
;;
esac
;;
esac
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
*)
# Convert single-component short-hands not valid as part of
# multi-component configurations.
case $field1 in
386bsd)
basic_machine=i386-pc
2020-06-28 11:58:24 -07:00
basic_os=bsd
2019-05-03 02:18:55 -07:00
;;
a29khif)
basic_machine=a29k-amd
2020-06-28 11:58:24 -07:00
basic_os=udi
2019-05-03 02:18:55 -07:00
;;
adobe68k)
basic_machine=m68010-adobe
2020-06-28 11:58:24 -07:00
basic_os=scout
2019-05-03 02:18:55 -07:00
;;
alliant)
basic_machine=fx80-alliant
2020-06-28 11:58:24 -07:00
basic_os=
2019-05-03 02:18:55 -07:00
;;
altos | altos3068)
basic_machine=m68k-altos
2020-06-28 11:58:24 -07:00
basic_os=
2019-05-03 02:18:55 -07:00
;;
am29k)
basic_machine=a29k-none
2020-06-28 11:58:24 -07:00
basic_os=bsd
2019-05-03 02:18:55 -07:00
;;
amdahl)
basic_machine=580-amdahl
2020-06-28 11:58:24 -07:00
basic_os=sysv
2019-05-03 02:18:55 -07:00
;;
amiga)
basic_machine=m68k-unknown
2020-06-28 11:58:24 -07:00
basic_os=
2019-05-03 02:18:55 -07:00
;;
amigaos | amigados)
basic_machine=m68k-unknown
2020-06-28 11:58:24 -07:00
basic_os=amigaos
2019-05-03 02:18:55 -07:00
;;
amigaunix | amix)
basic_machine=m68k-unknown
2020-06-28 11:58:24 -07:00
basic_os=sysv4
2019-05-03 02:18:55 -07:00
;;
apollo68)
basic_machine=m68k-apollo
2020-06-28 11:58:24 -07:00
basic_os=sysv
2019-05-03 02:18:55 -07:00
;;
apollo68bsd)
basic_machine=m68k-apollo
2020-06-28 11:58:24 -07:00
basic_os=bsd
2019-05-03 02:18:55 -07:00
;;
aros)
basic_machine=i386-pc
2020-06-28 11:58:24 -07:00
basic_os=aros
2019-05-03 02:18:55 -07:00
;;
aux)
basic_machine=m68k-apple
2020-06-28 11:58:24 -07:00
basic_os=aux
2019-05-03 02:18:55 -07:00
;;
balance)
basic_machine=ns32k-sequent
2020-06-28 11:58:24 -07:00
basic_os=dynix
2019-05-03 02:18:55 -07:00
;;
blackfin)
basic_machine=bfin-unknown
2020-06-28 11:58:24 -07:00
basic_os=linux
2019-05-03 02:18:55 -07:00
;;
cegcc)
basic_machine=arm-unknown
2020-06-28 11:58:24 -07:00
basic_os=cegcc
2019-05-03 02:18:55 -07:00
;;
cray)
basic_machine=j90-cray
2020-06-28 11:58:24 -07:00
basic_os=unicos
2019-05-03 02:18:55 -07:00
;;
crds | unos)
basic_machine=m68k-crds
2020-06-28 11:58:24 -07:00
basic_os=
2019-05-03 02:18:55 -07:00
;;
da30)
basic_machine=m68k-da30
2020-06-28 11:58:24 -07:00
basic_os=
2019-05-03 02:18:55 -07:00
;;
decstation | pmax | pmin | dec3100 | decstatn)
basic_machine=mips-dec
2020-06-28 11:58:24 -07:00
basic_os=
2019-05-03 02:18:55 -07:00
;;
delta88)
basic_machine=m88k-motorola
2020-06-28 11:58:24 -07:00
basic_os=sysv3
2019-05-03 02:18:55 -07:00
;;
dicos)
basic_machine=i686-pc
2020-06-28 11:58:24 -07:00
basic_os=dicos
2019-05-03 02:18:55 -07:00
;;
djgpp)
basic_machine=i586-pc
2020-06-28 11:58:24 -07:00
basic_os=msdosdjgpp
2019-05-03 02:18:55 -07:00
;;
ebmon29k)
basic_machine=a29k-amd
2020-06-28 11:58:24 -07:00
basic_os=ebmon
2019-05-03 02:18:55 -07:00
;;
es1800 | OSE68k | ose68k | ose | OSE)
basic_machine=m68k-ericsson
2020-06-28 11:58:24 -07:00
basic_os=ose
2019-05-03 02:18:55 -07:00
;;
gmicro)
basic_machine=tron-gmicro
2020-06-28 11:58:24 -07:00
basic_os=sysv
2019-05-03 02:18:55 -07:00
;;
go32)
basic_machine=i386-pc
2020-06-28 11:58:24 -07:00
basic_os=go32
2019-05-03 02:18:55 -07:00
;;
h8300hms)
basic_machine=h8300-hitachi
2020-06-28 11:58:24 -07:00
basic_os=hms
2019-05-03 02:18:55 -07:00
;;
h8300xray)
basic_machine=h8300-hitachi
2020-06-28 11:58:24 -07:00
basic_os=xray
2019-05-03 02:18:55 -07:00
;;
h8500hms)
basic_machine=h8500-hitachi
2020-06-28 11:58:24 -07:00
basic_os=hms
2019-05-03 02:18:55 -07:00
;;
harris)
basic_machine=m88k-harris
2020-06-28 11:58:24 -07:00
basic_os=sysv3
2019-05-03 02:18:55 -07:00
;;
2019-07-23 16:07:00 -07:00
hp300 | hp300hpux)
2019-05-03 02:18:55 -07:00
basic_machine=m68k-hp
2020-06-28 11:58:24 -07:00
basic_os=hpux
2019-05-03 02:18:55 -07:00
;;
hp300bsd)
basic_machine=m68k-hp
2020-06-28 11:58:24 -07:00
basic_os=bsd
2019-05-03 02:18:55 -07:00
;;
hppaosf)
basic_machine=hppa1.1-hp
2020-06-28 11:58:24 -07:00
basic_os=osf
2019-05-03 02:18:55 -07:00
;;
hppro)
basic_machine=hppa1.1-hp
2020-06-28 11:58:24 -07:00
basic_os=proelf
2019-05-03 02:18:55 -07:00
;;
i386mach)
basic_machine=i386-mach
2020-06-28 11:58:24 -07:00
basic_os=mach
2019-05-03 02:18:55 -07:00
;;
isi68 | isi)
basic_machine=m68k-isi
2020-06-28 11:58:24 -07:00
basic_os=sysv
2019-05-03 02:18:55 -07:00
;;
m68knommu)
basic_machine=m68k-unknown
2020-06-28 11:58:24 -07:00
basic_os=linux
2019-05-03 02:18:55 -07:00
;;
magnum | m3230)
basic_machine=mips-mips
2020-06-28 11:58:24 -07:00
basic_os=sysv
2019-05-03 02:18:55 -07:00
;;
merlin)
basic_machine=ns32k-utek
2020-06-28 11:58:24 -07:00
basic_os=sysv
2019-05-03 02:18:55 -07:00
;;
mingw64)
basic_machine=x86_64-pc
2020-06-28 11:58:24 -07:00
basic_os=mingw64
2019-05-03 02:18:55 -07:00
;;
mingw32)
basic_machine=i686-pc
2020-06-28 11:58:24 -07:00
basic_os=mingw32
2019-05-03 02:18:55 -07:00
;;
mingw32ce)
basic_machine=arm-unknown
2020-06-28 11:58:24 -07:00
basic_os=mingw32ce
2019-05-03 02:18:55 -07:00
;;
monitor)
basic_machine=m68k-rom68k
2020-06-28 11:58:24 -07:00
basic_os=coff
2019-05-03 02:18:55 -07:00
;;
morphos)
basic_machine=powerpc-unknown
2020-06-28 11:58:24 -07:00
basic_os=morphos
2019-05-03 02:18:55 -07:00
;;
moxiebox)
basic_machine=moxie-unknown
2020-06-28 11:58:24 -07:00
basic_os=moxiebox
2019-05-03 02:18:55 -07:00
;;
msdos)
basic_machine=i386-pc
2020-06-28 11:58:24 -07:00
basic_os=msdos
2019-05-03 02:18:55 -07:00
;;
msys)
basic_machine=i686-pc
2020-06-28 11:58:24 -07:00
basic_os=msys
2019-05-03 02:18:55 -07:00
;;
mvs)
basic_machine=i370-ibm
2020-06-28 11:58:24 -07:00
basic_os=mvs
2019-05-03 02:18:55 -07:00
;;
nacl)
basic_machine=le32-unknown
2020-06-28 11:58:24 -07:00
basic_os=nacl
2019-05-03 02:18:55 -07:00
;;
ncr3000)
basic_machine=i486-ncr
2020-06-28 11:58:24 -07:00
basic_os=sysv4
2019-05-03 02:18:55 -07:00
;;
netbsd386)
basic_machine=i386-pc
2020-06-28 11:58:24 -07:00
basic_os=netbsd
2019-05-03 02:18:55 -07:00
;;
netwinder)
basic_machine=armv4l-rebel
2020-06-28 11:58:24 -07:00
basic_os=linux
2019-05-03 02:18:55 -07:00
;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
2020-06-28 11:58:24 -07:00
basic_os=newsos
2019-05-03 02:18:55 -07:00
;;
news1000)
basic_machine=m68030-sony
2020-06-28 11:58:24 -07:00
basic_os=newsos
2019-05-03 02:18:55 -07:00
;;
necv70)
basic_machine=v70-nec
2020-06-28 11:58:24 -07:00
basic_os=sysv
2019-05-03 02:18:55 -07:00
;;
nh3000)
basic_machine=m68k-harris
2020-06-28 11:58:24 -07:00
basic_os=cxux
2019-05-03 02:18:55 -07:00
;;
nh[45]000)
basic_machine=m88k-harris
2020-06-28 11:58:24 -07:00
basic_os=cxux
2019-05-03 02:18:55 -07:00
;;
nindy960)
basic_machine=i960-intel
2020-06-28 11:58:24 -07:00
basic_os=nindy
2019-05-03 02:18:55 -07:00
;;
mon960)
basic_machine=i960-intel
2020-06-28 11:58:24 -07:00
basic_os=mon960
2019-05-03 02:18:55 -07:00
;;
nonstopux)
basic_machine=mips-compaq
2020-06-28 11:58:24 -07:00
basic_os=nonstopux
2019-05-03 02:18:55 -07:00
;;
os400)
basic_machine=powerpc-ibm
2020-06-28 11:58:24 -07:00
basic_os=os400
2019-05-03 02:18:55 -07:00
;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
2020-06-28 11:58:24 -07:00
basic_os=ose
2019-05-03 02:18:55 -07:00
;;
os68k)
basic_machine=m68k-none
2020-06-28 11:58:24 -07:00
basic_os=os68k
2019-05-03 02:18:55 -07:00
;;
paragon)
basic_machine=i860-intel
2020-06-28 11:58:24 -07:00
basic_os=osf
2019-05-03 02:18:55 -07:00
;;
parisc)
basic_machine=hppa-unknown
2020-06-28 11:58:24 -07:00
basic_os=linux
;;
psp)
basic_machine=mipsallegrexel-sony
basic_os=psp
2019-05-03 02:18:55 -07:00
;;
pw32)
basic_machine=i586-unknown
2020-06-28 11:58:24 -07:00
basic_os=pw32
2019-05-03 02:18:55 -07:00
;;
rdos | rdos64)
basic_machine=x86_64-pc
2020-06-28 11:58:24 -07:00
basic_os=rdos
2019-05-03 02:18:55 -07:00
;;
rdos32)
basic_machine=i386-pc
2020-06-28 11:58:24 -07:00
basic_os=rdos
2019-05-03 02:18:55 -07:00
;;
rom68k)
basic_machine=m68k-rom68k
2020-06-28 11:58:24 -07:00
basic_os=coff
2019-05-03 02:18:55 -07:00
;;
sa29200)
basic_machine=a29k-amd
2020-06-28 11:58:24 -07:00
basic_os=udi
2019-05-03 02:18:55 -07:00
;;
sei)
basic_machine=mips-sei
2020-06-28 11:58:24 -07:00
basic_os=seiux
2019-05-03 02:18:55 -07:00
;;
sequent)
basic_machine=i386-sequent
2020-06-28 11:58:24 -07:00
basic_os=
2019-05-03 02:18:55 -07:00
;;
sps7)
basic_machine=m68k-bull
2020-06-28 11:58:24 -07:00
basic_os=sysv2
2019-05-03 02:18:55 -07:00
;;
st2000)
basic_machine=m68k-tandem
2020-06-28 11:58:24 -07:00
basic_os=
2019-05-03 02:18:55 -07:00
;;
stratus)
basic_machine=i860-stratus
2020-06-28 11:58:24 -07:00
basic_os=sysv4
2019-05-03 02:18:55 -07:00
;;
sun2)
basic_machine=m68000-sun
2020-06-28 11:58:24 -07:00
basic_os=
2019-05-03 02:18:55 -07:00
;;
sun2os3)
basic_machine=m68000-sun
2020-06-28 11:58:24 -07:00
basic_os=sunos3
2019-05-03 02:18:55 -07:00
;;
sun2os4)
basic_machine=m68000-sun
2020-06-28 11:58:24 -07:00
basic_os=sunos4
2019-05-03 02:18:55 -07:00
;;
sun3)
basic_machine=m68k-sun
2020-06-28 11:58:24 -07:00
basic_os=
2019-05-03 02:18:55 -07:00
;;
sun3os3)
basic_machine=m68k-sun
2020-06-28 11:58:24 -07:00
basic_os=sunos3
2019-05-03 02:18:55 -07:00
;;
sun3os4)
basic_machine=m68k-sun
2020-06-28 11:58:24 -07:00
basic_os=sunos4
2019-05-03 02:18:55 -07:00
;;
sun4)
basic_machine=sparc-sun
2020-06-28 11:58:24 -07:00
basic_os=
2019-05-03 02:18:55 -07:00
;;
sun4os3)
basic_machine=sparc-sun
2020-06-28 11:58:24 -07:00
basic_os=sunos3
2019-05-03 02:18:55 -07:00
;;
sun4os4)
basic_machine=sparc-sun
2020-06-28 11:58:24 -07:00
basic_os=sunos4
2019-05-03 02:18:55 -07:00
;;
sun4sol2)
basic_machine=sparc-sun
2020-06-28 11:58:24 -07:00
basic_os=solaris2
2019-05-03 02:18:55 -07:00
;;
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
2020-06-28 11:58:24 -07:00
basic_os=
2019-05-03 02:18:55 -07:00
;;
sv1)
basic_machine=sv1-cray
2020-06-28 11:58:24 -07:00
basic_os=unicos
2019-05-03 02:18:55 -07:00
;;
symmetry)
basic_machine=i386-sequent
2020-06-28 11:58:24 -07:00
basic_os=dynix
2019-05-03 02:18:55 -07:00
;;
t3e)
basic_machine=alphaev5-cray
2020-06-28 11:58:24 -07:00
basic_os=unicos
2019-05-03 02:18:55 -07:00
;;
t90)
basic_machine=t90-cray
2020-06-28 11:58:24 -07:00
basic_os=unicos
2019-05-03 02:18:55 -07:00
;;
toad1)
basic_machine=pdp10-xkl
2020-06-28 11:58:24 -07:00
basic_os=tops20
2019-05-03 02:18:55 -07:00
;;
tpf)
basic_machine=s390x-ibm
2020-06-28 11:58:24 -07:00
basic_os=tpf
2019-05-03 02:18:55 -07:00
;;
udi29k)
basic_machine=a29k-amd
2020-06-28 11:58:24 -07:00
basic_os=udi
2019-05-03 02:18:55 -07:00
;;
ultra3)
basic_machine=a29k-nyu
2020-06-28 11:58:24 -07:00
basic_os=sym1
2019-05-03 02:18:55 -07:00
;;
v810 | necv810)
basic_machine=v810-nec
2020-06-28 11:58:24 -07:00
basic_os=none
2019-05-03 02:18:55 -07:00
;;
vaxv)
basic_machine=vax-dec
2020-06-28 11:58:24 -07:00
basic_os=sysv
2019-05-03 02:18:55 -07:00
;;
vms)
basic_machine=vax-dec
2020-06-28 11:58:24 -07:00
basic_os=vms
2019-05-03 02:18:55 -07:00
;;
2019-07-23 16:07:00 -07:00
vsta)
basic_machine=i386-pc
2020-06-28 11:58:24 -07:00
basic_os=vsta
2019-07-23 16:07:00 -07:00
;;
2019-05-03 02:18:55 -07:00
vxworks960)
basic_machine=i960-wrs
2020-06-28 11:58:24 -07:00
basic_os=vxworks
2019-05-03 02:18:55 -07:00
;;
vxworks68)
basic_machine=m68k-wrs
2020-06-28 11:58:24 -07:00
basic_os=vxworks
2019-05-03 02:18:55 -07:00
;;
vxworks29k)
basic_machine=a29k-wrs
2020-06-28 11:58:24 -07:00
basic_os=vxworks
2019-05-03 02:18:55 -07:00
;;
xbox)
basic_machine=i686-pc
2020-06-28 11:58:24 -07:00
basic_os=mingw32
2019-05-03 02:18:55 -07:00
;;
ymp)
basic_machine=ymp-cray
2020-06-28 11:58:24 -07:00
basic_os=unicos
2019-05-03 02:18:55 -07:00
;;
*)
basic_machine=$1
2020-06-28 11:58:24 -07:00
basic_os=
2019-05-03 02:18:55 -07:00
;;
esac
2017-10-01 08:17:11 -07:00
;;
esac
2019-05-03 02:18:55 -07:00
# Decode 1-component or ad-hoc basic machines
2017-10-01 08:17:11 -07:00
case $basic_machine in
2019-05-03 02:18:55 -07: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
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
op50n)
cpu=hppa1.1
vendor=oki
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
op60c)
cpu=hppa1.1
vendor=oki
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
ibm*)
cpu=i370
vendor=ibm
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
orion105)
cpu=clipper
vendor=highlevel
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
mac | mpw | mac-mpw)
cpu=m68k
vendor=apple
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
pmac | pmac-mpw)
cpu=powerpc
vendor=apple
2017-10-01 08:17:11 -07: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-05-03 02:18:55 -07:00
cpu=m68000
vendor=att
2017-10-01 08:17:11 -07:00
;;
3b*)
2019-05-03 02:18:55 -07:00
cpu=we32k
vendor=att
2017-10-01 08:17:11 -07:00
;;
bluegene*)
2019-05-03 02:18:55 -07:00
cpu=powerpc
vendor=ibm
2020-06-28 11:58:24 -07:00
basic_os=cnk
2017-10-01 08:17:11 -07:00
;;
decsystem10* | dec10*)
2019-05-03 02:18:55 -07:00
cpu=pdp10
vendor=dec
2020-06-28 11:58:24 -07:00
basic_os=tops10
2017-10-01 08:17:11 -07:00
;;
decsystem20* | dec20*)
2019-05-03 02:18:55 -07:00
cpu=pdp10
vendor=dec
2020-06-28 11:58:24 -07:00
basic_os=tops20
2017-10-01 08:17:11 -07:00
;;
2024-08-01 04:57:57 -07:00
delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300)
2019-05-03 02:18:55 -07:00
cpu=m68k
vendor=motorola
2017-10-01 08:17:11 -07:00
;;
2024-08-01 04:57:57 -07: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-05-03 02:18:55 -07:00
cpu=m68k
vendor=bull
2024-08-01 04:57:57 -07:00
;;
dpx2100 | dpx21xx)
cpu=i386
vendor=bull
;;
dpx20)
cpu=rs6000
vendor=bull
2017-10-01 08:17:11 -07:00
;;
encore | umax | mmax)
2019-05-03 02:18:55 -07:00
cpu=ns32k
vendor=encore
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
elxsi)
cpu=elxsi
vendor=elxsi
2020-06-28 11:58:24 -07:00
basic_os=${basic_os:-bsd}
2017-10-01 08:17:11 -07:00
;;
fx2800)
2019-05-03 02:18:55 -07:00
cpu=i860
vendor=alliant
2017-10-01 08:17:11 -07:00
;;
genix)
2019-05-03 02:18:55 -07:00
cpu=ns32k
vendor=ns
2017-10-01 08:17:11 -07:00
;;
h3050r* | hiux*)
2019-05-03 02:18:55 -07:00
cpu=hppa1.1
vendor=hitachi
2020-06-28 11:58:24 -07:00
basic_os=hiuxwe2
2017-10-01 08:17:11 -07:00
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
2019-05-03 02:18:55 -07:00
cpu=hppa1.0
vendor=hp
2017-10-01 08:17:11 -07:00
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
2019-05-03 02:18:55 -07:00
cpu=m68000
vendor=hp
2017-10-01 08:17:11 -07:00
;;
hp9k3[2-9][0-9])
2019-05-03 02:18:55 -07:00
cpu=m68k
vendor=hp
2017-10-01 08:17:11 -07:00
;;
hp9k6[0-9][0-9] | hp6[0-9][0-9])
2019-05-03 02:18:55 -07:00
cpu=hppa1.0
vendor=hp
2017-10-01 08:17:11 -07:00
;;
hp9k7[0-79][0-9] | hp7[0-79][0-9])
2019-05-03 02:18:55 -07:00
cpu=hppa1.1
vendor=hp
2017-10-01 08:17:11 -07:00
;;
hp9k78[0-9] | hp78[0-9])
# FIXME: really hppa2.0-hp
2019-05-03 02:18:55 -07:00
cpu=hppa1.1
vendor=hp
2017-10-01 08:17:11 -07:00
;;
hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
# FIXME: really hppa2.0-hp
2019-05-03 02:18:55 -07:00
cpu=hppa1.1
vendor=hp
2017-10-01 08:17:11 -07:00
;;
hp9k8[0-9][13679] | hp8[0-9][13679])
2019-05-03 02:18:55 -07:00
cpu=hppa1.1
vendor=hp
2017-10-01 08:17:11 -07:00
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
2019-05-03 02:18:55 -07:00
cpu=hppa1.0
vendor=hp
2017-10-01 08:17:11 -07:00
;;
i*86v32)
2021-07-13 07:59:44 -07:00
cpu=`echo "$1" | sed -e 's/86.*/86/'`
2019-05-03 02:18:55 -07:00
vendor=pc
2020-06-28 11:58:24 -07:00
basic_os=sysv32
2017-10-01 08:17:11 -07:00
;;
i*86v4*)
2021-07-13 07:59:44 -07:00
cpu=`echo "$1" | sed -e 's/86.*/86/'`
2019-05-03 02:18:55 -07:00
vendor=pc
2020-06-28 11:58:24 -07:00
basic_os=sysv4
2017-10-01 08:17:11 -07:00
;;
i*86v)
2021-07-13 07:59:44 -07:00
cpu=`echo "$1" | sed -e 's/86.*/86/'`
2019-05-03 02:18:55 -07:00
vendor=pc
2020-06-28 11:58:24 -07:00
basic_os=sysv
2017-10-01 08:17:11 -07:00
;;
i*86sol2)
2021-07-13 07:59:44 -07:00
cpu=`echo "$1" | sed -e 's/86.*/86/'`
2019-05-03 02:18:55 -07:00
vendor=pc
2020-06-28 11:58:24 -07:00
basic_os=solaris2
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
j90 | j90-cray)
cpu=j90
vendor=cray
2020-06-28 11:58:24 -07:00
basic_os=${basic_os:-unicos}
2017-10-01 08:17:11 -07:00
;;
iris | iris4d)
2019-05-03 02:18:55 -07:00
cpu=mips
vendor=sgi
2020-06-28 11:58:24 -07:00
case $basic_os in
2019-05-03 02:18:55 -07:00
irix*)
2017-10-01 08:17:11 -07:00
;;
*)
2020-06-28 11:58:24 -07:00
basic_os=irix4
2017-10-01 08:17:11 -07:00
;;
esac
;;
miniframe)
2019-05-03 02:18:55 -07:00
cpu=m68000
vendor=convergent
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
cpu=m68k
vendor=atari
2020-06-28 11:58:24 -07:00
basic_os=mint
2017-10-01 08:17:11 -07:00
;;
news-3600 | risc-news)
2019-05-03 02:18:55 -07:00
cpu=mips
vendor=sony
2020-06-28 11:58:24 -07:00
basic_os=newsos
2017-10-01 08:17:11 -07:00
;;
2018-03-14 12:03:49 -07:00
next | m*-next)
2019-05-03 02:18:55 -07:00
cpu=m68k
vendor=next
2017-10-01 08:17:11 -07:00
;;
np1)
2019-05-03 02:18:55 -07:00
cpu=np1
vendor=gould
2017-10-01 08:17:11 -07:00
;;
op50n-* | op60c-*)
2019-05-03 02:18:55 -07:00
cpu=hppa1.1
vendor=oki
2020-06-28 11:58:24 -07:00
basic_os=proelf
2017-10-01 08:17:11 -07:00
;;
pa-hitachi)
2019-05-03 02:18:55 -07:00
cpu=hppa1.1
vendor=hitachi
2020-06-28 11:58:24 -07:00
basic_os=hiuxwe2
2017-10-01 08:17:11 -07:00
;;
pbd)
2019-05-03 02:18:55 -07:00
cpu=sparc
vendor=tti
2017-10-01 08:17:11 -07:00
;;
pbb)
2019-05-03 02:18:55 -07:00
cpu=m68k
vendor=tti
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
pc532)
cpu=ns32k
vendor=pc532
2017-10-01 08:17:11 -07:00
;;
pn)
2019-05-03 02:18:55 -07:00
cpu=pn
vendor=gould
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
power)
cpu=power
vendor=ibm
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
ps2)
cpu=i386
vendor=ibm
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
rm[46]00)
cpu=mips
vendor=siemens
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
rtpc | rtpc-*)
cpu=romp
vendor=ibm
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
sde)
cpu=mipsisa32
vendor=sde
2020-06-28 11:58:24 -07:00
basic_os=${basic_os:-elf}
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
simso-wrs)
cpu=sparclite
vendor=wrs
2020-06-28 11:58:24 -07:00
basic_os=vxworks
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
tower | tower-32)
cpu=m68k
vendor=ncr
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
vpp*|vx|vx-*)
cpu=f301
vendor=fujitsu
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
w65)
cpu=w65
vendor=wdc
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
w89k-*)
cpu=hppa1.1
vendor=winbond
2020-06-28 11:58:24 -07:00
basic_os=proelf
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
none)
cpu=none
vendor=none
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
leon|leon[3-9])
cpu=sparc
vendor=$basic_machine
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
leon-*|leon[3-9]-*)
cpu=sparc
2021-07-13 07:59:44 -07:00
vendor=`echo "$basic_machine" | sed 's/-.*//'`
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
*-*)
saved_IFS=$IFS
2019-05-03 02:18:55 -07:00
IFS="-" read cpu vendor <<EOF
$basic_machine
EOF
IFS=$saved_IFS
2017-10-01 08:17:11 -07:00
;;
2023-07-18 08:42:40 -07:00
# We use 'pc' rather than 'unknown'
2019-05-03 02:18:55 -07: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
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07: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
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
x64 | amd64)
cpu=x86_64
vendor=pc
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
# Recognize the basic CPU types without company name.
*)
cpu=$basic_machine
vendor=unknown
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
esac
unset -v basic_machine
# Decode basic machines in the full and proper CPU-Company form.
case $cpu-$vendor in
2024-08-01 04:57:57 -07: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-05-03 02:18:55 -07:00
craynv-unknown)
vendor=cray
2020-06-28 11:58:24 -07:00
basic_os=${basic_os:-unicosmp}
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
c90-unknown | c90-cray)
vendor=cray
2024-08-01 04:57:57 -07:00
basic_os=${basic_os:-unicos}
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
fx80-unknown)
vendor=alliant
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
romp-unknown)
vendor=ibm
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
mmix-unknown)
vendor=knuth
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
microblaze-unknown | microblazeel-unknown)
vendor=xilinx
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
rs6000-unknown)
vendor=ibm
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
vax-unknown)
vendor=dec
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
pdp11-unknown)
vendor=dec
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
we32k-unknown)
vendor=att
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
cydra-unknown)
vendor=cydrome
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
i370-ibm*)
vendor=ibm
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
orion-unknown)
vendor=highlevel
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
xps-unknown | xps100-unknown)
cpu=xps100
vendor=honeywell
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
# Here we normalize CPU types with a missing or matching vendor
2022-01-22 15:37:47 -07:00
armh-unknown | armh-alt)
cpu=armv7l
vendor=alt
basic_os=${basic_os:-linux-gnueabihf}
;;
2024-08-01 04:57:57 -07: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)
2020-06-28 11:58:24 -07:00
basic_os=${basic_os:-bosx}
2017-10-01 08:17:11 -07:00
;;
2024-08-01 04:57:57 -07:00
mips-sni)
basic_os=${basic_os:-sysv4}
;;
2019-05-03 02:18:55 -07:00
# Here we normalize CPU types irrespective of the vendor
amd64-*)
cpu=x86_64
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
blackfin-*)
cpu=bfin
2024-08-01 04:57:57 -07:00
basic_os=${basic_os:-linux}
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
c54x-*)
cpu=tic54x
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
c55x-*)
cpu=tic55x
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
c6x-*)
cpu=tic6x
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
e500v[12]-*)
cpu=powerpc
2020-06-28 11:58:24 -07:00
basic_os=${basic_os}"spe"
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
mips3*-*)
cpu=mips64
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
ms1-*)
cpu=mt
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
m68knommu-*)
cpu=m68k
2024-08-01 04:57:57 -07:00
basic_os=${basic_os:-linux}
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
cpu=s12z
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
openrisc-*)
cpu=or32
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
parisc-*)
cpu=hppa
2024-08-01 04:57:57 -07:00
basic_os=${basic_os:-linux}
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
cpu=i586
2017-10-01 08:17:11 -07:00
;;
2023-02-07 10:36:08 -07:00
pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
2019-05-03 02:18:55 -07:00
cpu=i686
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
cpu=i686
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
pentium4-*)
cpu=i786
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
ppc-* | ppcbe-*)
cpu=powerpc
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
ppcle-* | powerpclittle-*)
cpu=powerpcle
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
ppc64-*)
cpu=powerpc64
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
ppc64le-* | powerpc64little-*)
cpu=powerpc64le
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
sb1-*)
cpu=mipsisa64sb1
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
sb1el-*)
cpu=mipsisa64sb1el
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
sh5e[lb]-*)
2021-07-13 07:59:44 -07:00
cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
spur-*)
cpu=spur
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
strongarm-* | thumb-*)
cpu=arm
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
tx39-*)
cpu=mipstx39
2018-03-14 12:03:49 -07:00
;;
2019-05-03 02:18:55 -07:00
tx39el-*)
cpu=mipstx39el
2017-10-01 08:17:11 -07:00
;;
xscale-* | xscalee[bl]-*)
2021-07-13 07:59:44 -07:00
cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
2017-10-01 08:17:11 -07:00
;;
2022-01-22 15:37:47 -07:00
arm64-* | aarch64le-*)
cpu=aarch64
;;
2017-10-01 08:17:11 -07:00
2019-05-03 02:18:55 -07:00
# Recognize the canonical CPU Types that limit and/or modify the
# company names they are paired with.
cr16-*)
2020-06-28 11:58:24 -07:00
basic_os=${basic_os:-elf}
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
crisv32-* | etraxfs*-*)
cpu=crisv32
vendor=axis
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
cris-* | etrax*-*)
cpu=cris
vendor=axis
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
crx-*)
2020-06-28 11:58:24 -07:00
basic_os=${basic_os:-elf}
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
neo-tandem)
cpu=neo
vendor=tandem
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
nse-tandem)
cpu=nse
vendor=tandem
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
nsr-tandem)
cpu=nsr
vendor=tandem
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
nsv-tandem)
cpu=nsv
vendor=tandem
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
nsx-tandem)
cpu=nsx
vendor=tandem
2017-10-01 08:17:11 -07:00
;;
2020-06-28 11:58:24 -07:00
mipsallegrexel-sony)
cpu=mipsallegrexel
vendor=sony
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
tile*-*)
2020-06-28 11:58:24 -07:00
basic_os=${basic_os:-linux-gnu}
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
2017-10-01 08:17:11 -07:00
*)
2019-05-03 02:18:55 -07:00
# Recognize the canonical CPU types that are allowed with any
# company name.
case $cpu in
2024-08-01 04:57:57 -07:00
1750a \
| 580 \
| [cjt]90 \
2019-05-03 02:18:55 -07:00
| a29k \
2024-08-01 04:57:57 -07:00
| aarch64 \
| aarch64_be \
| aarch64c \
2019-05-03 02:18:55 -07:00
| abacus \
2024-08-01 04:57:57 -07:00
| alpha \
| alpha64 \
| alpha64ev56 \
| alpha64ev6[78] \
| alpha64ev[4-8] \
| alpha64pca5[67] \
| alphaev56 \
| alphaev6[78] \
| alphaev[4-8] \
| alphapca5[67] \
2019-05-03 02:18:55 -07:00
| am33_2.0 \
| amdgcn \
2024-08-01 04:57:57 -07:00
| arc \
| arc32 \
| arc64 \
| arceb \
| arm \
| arm64e \
| arm64ec \
| arm[lb]e \
| arme[lb] \
| armv* \
2019-05-03 02:18:55 -07:00
| asmjs \
2024-08-01 04:57:57 -07:00
| avr \
| avr32 \
2019-05-03 02:18:55 -07:00
| ba \
2024-08-01 04:57:57 -07: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-05-03 02:18:55 -07:00
| hexagon \
2024-08-01 04:57:57 -07:00
| hppa \
| hppa1.[01] \
| hppa2.0 \
| hppa2.0[nw] \
| hppa64 \
| i*86 \
| i370 \
| i860 \
| i960 \
| ia16 \
| ia64 \
| ip2k \
| iq2000 \
| javascript \
2019-05-03 02:18:55 -07:00
| k1om \
2023-08-03 13:33:10 -07:00
| kvx \
2024-08-01 04:57:57 -07:00
| le32 \
| le64 \
2019-05-03 02:18:55 -07:00
| lm32 \
2024-08-01 04:57:57 -07: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 \
2023-08-03 13:33:10 -07:00
| mips* \
2019-05-03 02:18:55 -07:00
| mmix \
2024-08-01 04:57:57 -07:00
| mn10200 \
| mn10300 \
2019-05-03 02:18:55 -07:00
| moxie \
| msp430 \
2024-08-01 04:57:57 -07:00
| mt \
2024-03-24 02:37:10 -07:00
| nanomips* \
2024-08-01 04:57:57 -07:00
| nds32 \
| nds32be \
| nds32le \
2019-05-03 02:18:55 -07:00
| nfp \
2024-08-01 04:57:57 -07:00
| nios \
| nios2 \
| nios2eb \
| nios2el \
| none \
| np1 \
| ns16k \
| ns32k \
| nvptx \
2019-05-03 02:18:55 -07:00
| open8 \
| or1k* \
| or32 \
| orion \
2024-08-01 04:57:57 -07:00
| pdp10 \
| pdp11 \
2019-05-03 02:18:55 -07:00
| picochip \
2024-08-01 04:57:57 -07:00
| pj \
| pjl \
| pn \
| power \
| powerpc \
| powerpc64 \
| powerpc64le \
| powerpcle \
| powerpcspe \
2019-05-03 02:18:55 -07:00
| pru \
| pyramid \
2024-08-01 04:57:57 -07:00
| riscv \
| riscv32 \
| riscv32be \
| riscv64 \
| riscv64be \
| rl78 \
| romp \
| rs6000 \
| rx \
| s390 \
| s390x \
2019-05-03 02:18:55 -07:00
| score \
2024-08-01 04:57:57 -07: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-05-03 02:18:55 -07:00
| sparclite \
2024-08-01 04:57:57 -07:00
| sparcv8 \
| sparcv9 \
| sparcv9b \
| sparcv9v \
2019-05-03 02:18:55 -07:00
| spu \
2024-08-01 04:57:57 -07:00
| sv1 \
| sx* \
2019-05-03 02:18:55 -07:00
| tahoe \
2020-12-10 14:23:43 -07:00
| thumbv7* \
2024-08-01 04:57:57 -07:00
| tic30 \
| tic4x \
| tic54x \
| tic55x \
| tic6x \
| tic80 \
2019-05-03 02:18:55 -07:00
| tron \
| ubicom32 \
2024-08-01 04:57:57 -07:00
| v70 \
| v810 \
| v850 \
| v850e \
| v850e1 \
| v850e2 \
| v850e2v3 \
| v850es \
2019-05-03 02:18:55 -07:00
| vax \
2024-03-24 02:37:10 -07:00
| vc4 \
2019-05-03 02:18:55 -07:00
| visium \
| w65 \
2024-08-01 04:57:57 -07:00
| wasm32 \
| wasm64 \
2019-05-03 02:18:55 -07:00
| we32k \
2024-08-01 04:57:57 -07:00
| x86 \
| x86_64 \
| xc16x \
| xgate \
| xps100 \
| xstormy16 \
| xtensa* \
2019-05-03 02:18:55 -07:00
| ymp \
2024-08-01 04:57:57 -07:00
| z80 \
| z8k)
2019-05-03 02:18:55 -07:00
;;
*)
2023-07-18 08:42:40 -07:00
echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
2019-05-03 02:18:55 -07:00
exit 1
;;
esac
2017-10-01 08:17:11 -07:00
;;
esac
# Here we canonicalize certain aliases for manufacturers.
2019-05-03 02:18:55 -07:00
case $vendor in
digital*)
vendor=dec
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
commodore*)
vendor=cbm
2017-10-01 08:17:11 -07:00
;;
*)
;;
esac
# Decode manufacturer-specific aliases for certain operating systems.
if test x"$basic_os" != x
2017-10-01 08:17:11 -07:00
then
2020-06-28 11:58:24 -07:00
2022-01-22 15:37:47 -07:00
# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
2020-06-28 11:58:24 -07:00
# set os.
obj=
2020-06-28 11:58:24 -07:00
case $basic_os in
gnu/linux*)
kernel=linux
2021-07-13 07:59:44 -07:00
os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
2020-06-28 11:58:24 -07:00
;;
2020-10-13 07:22:46 -07:00
os2-emx)
kernel=os2
2021-07-13 07:59:44 -07:00
os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
2020-10-13 07:22:46 -07:00
;;
2020-06-28 11:58:24 -07:00
nto-qnx*)
kernel=nto
2021-07-13 07:59:44 -07:00
os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
2020-06-28 11:58:24 -07:00
;;
*-*)
saved_IFS=$IFS
2020-06-28 11:58:24 -07:00
IFS="-" read kernel os <<EOF
$basic_os
EOF
IFS=$saved_IFS
2020-06-28 11:58:24 -07:00
;;
# Default OS when just kernel was specified
nto*)
kernel=nto
2021-07-13 07:59:44 -07:00
os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
2020-06-28 11:58:24 -07:00
;;
linux*)
kernel=linux
2021-07-13 07:59:44 -07:00
os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
2020-06-28 11:58:24 -07:00
;;
2022-10-11 05:07:16 -07:00
managarm*)
kernel=managarm
os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
;;
2020-06-28 11:58:24 -07:00
*)
kernel=
os=$basic_os
;;
esac
# Now, normalize the OS (knowing we just have one component, it's not a kernel,
# etc.)
2017-10-01 08:17:11 -07:00
case $os in
2018-03-14 12:03:49 -07:00
# First match some system type aliases that might get confused
# with valid system types.
2019-05-03 02:18:55 -07:00
# solaris* is a basic system type, with this one exception.
auroraux)
os=auroraux
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
bluegene*)
os=cnk
;;
solaris1 | solaris1.*)
2021-07-13 07:59:44 -07:00
os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
solaris)
os=solaris2
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
unixware*)
os=sysv4.2uw
2017-10-01 08:17:11 -07:00
;;
2024-08-01 04:57:57 -07: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-03-14 12:03:49 -07:00
# es1800 is here to avoid being matched by es* (a different OS)
2019-05-03 02:18:55 -07:00
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]*)
2021-07-13 07:59:44 -07:00
os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
2019-05-03 02:18:55 -07:00
;;
2020-06-28 11:58:24 -07:00
sco*v* | scout)
2019-05-03 02:18:55 -07:00
# Don't match below
;;
sco*)
os=sco3.2v2
;;
psos*)
os=psos
2018-03-14 12:03:49 -07:00
;;
2019-05-03 02:18:55 -07:00
qnx*)
2020-09-20 06:15:33 -07:00
os=qnx
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
hiux*)
os=hiuxwe2
;;
lynx*178)
os=lynxos178
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
lynx*5)
os=lynxos5
;;
2020-06-28 11:58:24 -07:00
lynxos*)
# don't get caught up in next wildcard
;;
2019-05-03 02:18:55 -07:00
lynx*)
os=lynxos
;;
2020-06-28 11:58:24 -07:00
mac[0-9]*)
2021-07-13 07:59:44 -07:00
os=`echo "$os" | sed -e 's|mac|macos|'`
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
opened*)
os=openedition
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
os400*)
os=os400
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
sunos5*)
2021-07-13 07:59:44 -07:00
os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
sunos6*)
2021-07-13 07:59:44 -07:00
os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
wince*)
os=wince
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
utek*)
os=bsd
2024-08-01 04:57:57 -07:00
vendor=`echo "$vendor" | sed -e 's|^unknown$|tektronix|'`
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
dynix*)
os=bsd
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
acis*)
os=aos
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
atheos*)
os=atheos
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
syllable*)
os=syllable
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
386bsd)
os=bsd
2017-10-01 08:17:11 -07:00
;;
2024-08-01 04:57:57 -07:00
ctix*)
2019-05-03 02:18:55 -07:00
os=sysv
2024-08-01 04:57:57 -07:00
vendor=`echo "$vendor" | sed -e 's|^unknown$|convergent|'`
2017-10-01 08:17:11 -07:00
;;
2024-08-01 04:57:57 -07:00
uts*)
os=sysv
2017-10-01 08:17:11 -07:00
;;
2024-08-01 04:57:57 -07:00
nova*)
kernel=rtmk
os=nova
2017-10-01 08:17:11 -07:00
;;
# Preserve the version number of sinix5.
2019-05-03 02:18:55 -07:00
sinix5.*)
2021-07-13 07:59:44 -07:00
os=`echo "$os" | sed -e 's|sinix|sysv|'`
2024-08-01 04:57:57 -07:00
vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
sinix*)
os=sysv4
2024-08-01 04:57:57 -07:00
vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
tpf*)
os=tpf
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
triton*)
os=sysv3
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
oss*)
os=sysv3
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
svr4*)
os=sysv4
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
svr3)
os=sysv3
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
sysvr4)
os=sysv4
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
ose*)
os=ose
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
os=mint
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
dicos*)
os=dicos
2017-10-01 08:17:11 -07:00
;;
2019-05-03 02:18:55 -07:00
pikeos*)
2018-03-14 12:03:49 -07:00
# Until real need of OS specific support for
# particular features comes up, bare metal
# configurations are quite functional.
2019-05-03 02:18:55 -07:00
case $cpu in
2018-03-14 12:03:49 -07:00
arm*)
2019-05-03 02:18:55 -07:00
os=eabi
2018-03-14 12:03:49 -07:00
;;
*)
os=
obj=elf
2018-03-14 12:03:49 -07:00
;;
esac
;;
aout* | coff* | elf* | pe*)
# These are machine code file formats, not OSes
obj=$os
os=
;;
2017-10-01 08:17:11 -07:00
*)
2020-06-28 11:58:24 -07:00
# No normalization, but not necessarily accepted, that comes below.
2017-10-01 08:17:11 -07:00
;;
esac
2020-06-28 11:58:24 -07:00
2017-10-01 08:17:11 -07: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.
2020-06-28 11:58:24 -07:00
kernel=
obj=
2019-05-03 02:18:55 -07:00
case $cpu-$vendor in
2017-10-01 08:17:11 -07:00
score-*)
os=
obj=elf
2017-10-01 08:17:11 -07:00
;;
spu-*)
os=
obj=elf
2017-10-01 08:17:11 -07:00
;;
*-acorn)
2019-05-03 02:18:55 -07:00
os=riscix1.2
2017-10-01 08:17:11 -07:00
;;
arm*-rebel)
2020-06-28 11:58:24 -07:00
kernel=linux
os=gnu
2017-10-01 08:17:11 -07:00
;;
arm*-semi)
os=
obj=aout
2017-10-01 08:17:11 -07:00
;;
c4x-* | tic4x-*)
os=
obj=coff
2017-10-01 08:17:11 -07:00
;;
c8051-*)
os=
obj=elf
2019-05-03 02:18:55 -07:00
;;
clipper-intergraph)
os=clix
2017-10-01 08:17:11 -07:00
;;
hexagon-*)
os=
obj=elf
2017-10-01 08:17:11 -07:00
;;
tic54x-*)
os=
obj=coff
2017-10-01 08:17:11 -07:00
;;
tic55x-*)
os=
obj=coff
2017-10-01 08:17:11 -07:00
;;
tic6x-*)
os=
obj=coff
2017-10-01 08:17:11 -07:00
;;
# This must come before the *-dec entry.
pdp10-*)
2019-05-03 02:18:55 -07:00
os=tops20
2017-10-01 08:17:11 -07:00
;;
pdp11-*)
2019-05-03 02:18:55 -07:00
os=none
2017-10-01 08:17:11 -07:00
;;
*-dec | vax-*)
2019-05-03 02:18:55 -07:00
os=ultrix4.2
2017-10-01 08:17:11 -07:00
;;
m68*-apollo)
2019-05-03 02:18:55 -07:00
os=domain
2017-10-01 08:17:11 -07:00
;;
i386-sun)
2019-05-03 02:18:55 -07:00
os=sunos4.0.2
2017-10-01 08:17:11 -07:00
;;
m68000-sun)
2019-05-03 02:18:55 -07:00
os=sunos3
2017-10-01 08:17:11 -07:00
;;
m68*-cisco)
os=
obj=aout
2017-10-01 08:17:11 -07:00
;;
mep-*)
os=
obj=elf
2017-10-01 08:17:11 -07:00
;;
2024-08-01 04:57:57 -07:00
# The -sgi and -siemens entries must be before the mips- entry
# or we get the wrong os.
*-sgi)
os=irix
;;
*-siemens)
os=sysv4
;;
2017-10-01 08:17:11 -07:00
mips*-cisco)
os=
obj=elf
2017-10-01 08:17:11 -07:00
;;
2024-03-24 02:37:10 -07:00
mips*-*|nanomips*-*)
os=
obj=elf
2017-10-01 08:17:11 -07:00
;;
or32-*)
os=
obj=coff
2017-10-01 08:17:11 -07:00
;;
2024-08-01 04:57:57 -07:00
# This must be before the sparc-* entry or we get the wrong os.
*-tti)
2019-05-03 02:18:55 -07:00
os=sysv3
2017-10-01 08:17:11 -07:00
;;
sparc-* | *-sun)
2019-05-03 02:18:55 -07:00
os=sunos4.1.1
2017-10-01 08:17:11 -07:00
;;
pru-*)
os=
obj=elf
2017-10-01 08:17:11 -07:00
;;
*-be)
2019-05-03 02:18:55 -07:00
os=beos
2017-10-01 08:17:11 -07:00
;;
*-ibm)
2019-05-03 02:18:55 -07:00
os=aix
2017-10-01 08:17:11 -07:00
;;
*-knuth)
2019-05-03 02:18:55 -07:00
os=mmixware
2017-10-01 08:17:11 -07:00
;;
*-wec)
2019-05-03 02:18:55 -07:00
os=proelf
2017-10-01 08:17:11 -07:00
;;
*-winbond)
2019-05-03 02:18:55 -07:00
os=proelf
2017-10-01 08:17:11 -07:00
;;
*-oki)
2019-05-03 02:18:55 -07:00
os=proelf
2017-10-01 08:17:11 -07:00
;;
*-hp)
2019-05-03 02:18:55 -07:00
os=hpux
2017-10-01 08:17:11 -07:00
;;
*-hitachi)
2024-08-01 04:57:57 -07:00
os=hiuxwe2
2017-10-01 08:17:11 -07:00
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
2019-05-03 02:18:55 -07:00
os=sysv
2017-10-01 08:17:11 -07:00
;;
*-cbm)
2019-05-03 02:18:55 -07:00
os=amigaos
2017-10-01 08:17:11 -07:00
;;
*-dg)
2019-05-03 02:18:55 -07:00
os=dgux
2017-10-01 08:17:11 -07:00
;;
*-dolphin)
2019-05-03 02:18:55 -07:00
os=sysv3
2017-10-01 08:17:11 -07:00
;;
m68k-ccur)
2019-05-03 02:18:55 -07:00
os=rtu
2017-10-01 08:17:11 -07:00
;;
m88k-omron*)
2019-05-03 02:18:55 -07:00
os=luna
2017-10-01 08:17:11 -07:00
;;
2018-03-14 12:03:49 -07:00
*-next)
2019-05-03 02:18:55 -07:00
os=nextstep
2017-10-01 08:17:11 -07:00
;;
*-sequent)
2019-05-03 02:18:55 -07:00
os=ptx
2017-10-01 08:17:11 -07:00
;;
*-crds)
2019-05-03 02:18:55 -07:00
os=unos
2017-10-01 08:17:11 -07:00
;;
*-ns)
2019-05-03 02:18:55 -07:00
os=genix
2017-10-01 08:17:11 -07:00
;;
i370-*)
2019-05-03 02:18:55 -07:00
os=mvs
2017-10-01 08:17:11 -07:00
;;
*-gould)
2019-05-03 02:18:55 -07:00
os=sysv
2017-10-01 08:17:11 -07:00
;;
*-highlevel)
2019-05-03 02:18:55 -07:00
os=bsd
2017-10-01 08:17:11 -07:00
;;
*-encore)
2019-05-03 02:18:55 -07:00
os=bsd
2017-10-01 08:17:11 -07:00
;;
*-masscomp)
2019-05-03 02:18:55 -07:00
os=rtu
2017-10-01 08:17:11 -07:00
;;
f30[01]-fujitsu | f700-fujitsu)
2019-05-03 02:18:55 -07:00
os=uxpv
2017-10-01 08:17:11 -07:00
;;
*-rom68k)
os=
obj=coff
2017-10-01 08:17:11 -07:00
;;
*-*bug)
os=
obj=coff
2017-10-01 08:17:11 -07:00
;;
*-apple)
2019-05-03 02:18:55 -07:00
os=macos
2017-10-01 08:17:11 -07:00
;;
*-atari*)
2019-05-03 02:18:55 -07:00
os=mint
;;
*-wrs)
os=vxworks
2017-10-01 08:17:11 -07:00
;;
*)
2019-05-03 02:18:55 -07:00
os=none
2017-10-01 08:17:11 -07:00
;;
esac
2020-06-28 11:58:24 -07:00
2017-10-01 08:17:11 -07:00
fi
# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
2020-06-28 11:58:24 -07:00
case $os in
2021-01-27 06:02:31 -07:00
# Sometimes we do "kernel-libc", so those need to count as OSes.
2024-03-24 02:37:10 -07:00
llvm* | musl* | newlib* | relibc* | uclibc*)
2020-06-28 11:58:24 -07:00
;;
2021-01-27 06:02:31 -07:00
# Likewise for "kernel-abi"
2021-01-20 01:00:23 -07:00
eabi* | gnueabi*)
2020-06-28 11:58:24 -07:00
;;
2021-01-27 06:02:31 -07:00
# VxWorks passes extra cpu info in the 4th filed.
simlinux | simwindows | spe)
;;
# See `case $cpu-$os` validation below
ghcjs)
;;
2020-06-28 11:58:24 -07:00
# Now accept the basic system types.
# Each alternative MUST end in a * to match a version number.
2024-08-01 04:57:57 -07: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* )
2020-06-28 11:58:24 -07: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-03-24 02:37:10 -07: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)
;;
2020-06-28 11:58:24 -07:00
none)
;;
2023-07-18 08:42:40 -07:00
kernel* | msvc* )
2022-10-11 05:07:16 -07:00
# Restricted further below
;;
'')
if test x"$obj" = x
then
echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
fi
;;
2020-06-28 11:58:24 -07:00
*)
2023-07-18 08:42:40 -07:00
echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
2020-06-28 11:58:24 -07:00
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
exit 1
;;
esac
2020-06-28 11:58:24 -07:00
# As a final step for OS-related things, validate the OS-kernel combination
# (given a valid OS), if there is a kernel.
case $kernel-$os-$obj in
2024-03-24 02:37:10 -07:00
linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
| linux-mlibc*- | linux-musl*- | linux-newlib*- \
2024-08-01 04:57:57 -07:00
| linux-relibc*- | linux-uclibc*- | linux-ohos*- )
2020-06-28 11:58:24 -07:00
;;
2024-08-01 04:57:57 -07:00
uclinux-uclibc*- | uclinux-gnu*- )
2020-10-13 07:22:46 -07:00
;;
managarm-mlibc*- | managarm-kernel*- )
2022-10-11 05:07:16 -07:00
;;
windows*-msvc*-)
2023-07-18 08:42:40 -07:00
;;
2024-03-24 02:37:10 -07:00
-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
| -uclibc*- )
2020-06-28 11:58:24 -07:00
# These are just libc implementations, not actual OSes, and thus
# require a kernel.
2023-07-18 08:42:40 -07:00
echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
2020-06-28 11:58:24 -07:00
exit 1
;;
-kernel*- )
2023-07-18 08:42:40 -07:00
echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
2022-10-11 05:07:16 -07:00
exit 1
;;
*-kernel*- )
2023-07-18 08:42:40 -07:00
echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
exit 1
;;
*-msvc*- )
2023-07-18 08:42:40 -07:00
echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
2022-10-11 05:07:16 -07:00
exit 1
;;
2024-08-01 04:57:57 -07:00
kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-)
2020-06-28 11:58:24 -07:00
;;
vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
2021-01-27 06:02:31 -07:00
;;
nto-qnx*-)
2020-06-28 11:58:24 -07:00
;;
os2-emx-)
2020-10-13 07:22:46 -07:00
;;
2024-08-01 04:57:57 -07:00
rtmk-nova-)
;;
*-eabi*- | *-gnueabi*-)
2020-06-28 11:58:24 -07:00
;;
none--*)
2023-08-03 13:33:10 -07:00
# None (no kernel, i.e. freestanding / bare metal),
# can be paired with an machine code file format
2023-08-03 13:33:10 -07:00
;;
-*-)
2020-06-28 11:58:24 -07:00
# Blank kernel with real OS is always fine.
;;
--*)
# Blank kernel and OS with real machine code file format is always fine.
;;
*-*-*)
2023-07-18 08:42:40 -07:00
echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
2020-06-28 11:58:24 -07:00
exit 1
;;
esac
2017-10-01 08:17:11 -07:00
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
2019-05-03 02:18:55 -07:00
case $vendor in
unknown)
2020-06-28 11:58:24 -07:00
case $cpu-$os in
*-riscix*)
2017-10-01 08:17:11 -07:00
vendor=acorn
;;
2024-08-01 04:57:57 -07:00
*-sunos* | *-solaris*)
2017-10-01 08:17:11 -07:00
vendor=sun
;;
2020-06-28 11:58:24 -07:00
*-cnk* | *-aix*)
2017-10-01 08:17:11 -07:00
vendor=ibm
;;
2020-06-28 11:58:24 -07:00
*-beos*)
2017-10-01 08:17:11 -07:00
vendor=be
;;
2020-06-28 11:58:24 -07:00
*-hpux*)
2017-10-01 08:17:11 -07:00
vendor=hp
;;
2020-06-28 11:58:24 -07:00
*-mpeix*)
2017-10-01 08:17:11 -07:00
vendor=hp
;;
2020-06-28 11:58:24 -07:00
*-hiux*)
2017-10-01 08:17:11 -07:00
vendor=hitachi
;;
2020-06-28 11:58:24 -07:00
*-unos*)
2017-10-01 08:17:11 -07:00
vendor=crds
;;
2020-06-28 11:58:24 -07:00
*-dgux*)
2017-10-01 08:17:11 -07:00
vendor=dg
;;
2020-06-28 11:58:24 -07:00
*-luna*)
2017-10-01 08:17:11 -07:00
vendor=omron
;;
2020-06-28 11:58:24 -07:00
*-genix*)
2017-10-01 08:17:11 -07:00
vendor=ns
;;
2020-06-28 11:58:24 -07:00
*-clix*)
2019-05-03 02:18:55 -07:00
vendor=intergraph
;;
2020-06-28 11:58:24 -07:00
*-mvs* | *-opened*)
vendor=ibm
;;
*-os400*)
2017-10-01 08:17:11 -07:00
vendor=ibm
;;
2020-06-28 11:58:24 -07:00
s390-* | s390x-*)
2017-10-01 08:17:11 -07:00
vendor=ibm
;;
2020-06-28 11:58:24 -07:00
*-ptx*)
2017-10-01 08:17:11 -07:00
vendor=sequent
;;
2020-06-28 11:58:24 -07:00
*-tpf*)
2017-10-01 08:17:11 -07:00
vendor=ibm
;;
2020-06-28 11:58:24 -07:00
*-vxsim* | *-vxworks* | *-windiss*)
2017-10-01 08:17:11 -07:00
vendor=wrs
;;
2020-06-28 11:58:24 -07:00
*-aux*)
2017-10-01 08:17:11 -07:00
vendor=apple
;;
2020-06-28 11:58:24 -07:00
*-hms*)
2017-10-01 08:17:11 -07:00
vendor=hitachi
;;
2020-06-28 11:58:24 -07:00
*-mpw* | *-macos*)
2017-10-01 08:17:11 -07:00
vendor=apple
;;
2020-06-28 11:58:24 -07:00
*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
2017-10-01 08:17:11 -07:00
vendor=atari
;;
2020-06-28 11:58:24 -07:00
*-vos*)
2017-10-01 08:17:11 -07:00
vendor=stratus
;;
esac
;;
esac
echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
2017-10-01 08:17:11 -07:00
exit
# Local variables:
2018-03-14 12:03:49 -07:00
# eval: (add-hook 'before-save-hook 'time-stamp)
2017-10-01 08:17:11 -07:00
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
# End: