# This file contains the table of known operating system names.
#
# Architecture names are formed as a combination of the system name
# (from this table) and CPU name (from cputable) after mapping from
# the Debian triplet (from triplettable). A list of architecture
# names in the Debian ‘sid’ distribution can be found in the archtable
# file.
#
# Column 1 is the Debian name for the system, used to form the system part
# in the Debian triplet.
# Column 2 is the GNU name for the system, used to output build and host
# targets in ‘dpkg-architecture’.
# Column 3 is an extended regular expression used to match against the
# system part of the output of the GNU config.guess script.
#
# <Debian name>		<GNU name>		<config.guess regex>
uclibceabi-linux	linux-uclibceabi	linux[^-]*-uclibceabi
uclibc-linux		linux-uclibc		linux[^-]*-uclibc
gnueabihf-linux		linux-gnueabihf		linux[^-]*-gnueabihf
gnueabi-linux		linux-gnueabi		linux[^-]*-gnueabi
gnuspe-linux		linux-gnuspe		linux[^-]*-gnuspe
gnulp-linux		linux-gnulp		linux[^-]*-gnulp
gnu-linux		linux-gnu		linux[^-]*(-gnu.*)?
gnu-kfreebsd		kfreebsd-gnu		kfreebsd[^-]*(-gnu.*)?
gnu-knetbsd		knetbsd-gnu		knetbsd[^-]*(-gnu.*)?
gnu-kopensolaris	kopensolaris-gnu	kopensolaris[^-]*(-gnu.*)?
gnu-hurd		gnu			gnu[^-]*
bsd-darwin		darwin			darwin[^-]*
bsd-freebsd		freebsd			freebsd[^-]*
bsd-netbsd		netbsd			netbsd[^-]*
bsd-openbsd		openbsd			openbsd[^-]*
sysv-solaris		solaris			solaris[^-]*
uclibceabi-uclinux	uclinux-uclibceabi	uclinux[^-]*-uclibceabi
uclibc-uclinux		uclinux-uclibc		uclinux[^-]*(-uclibc.*)?
