1ce78da3f1
for x86 and evbarm: - install headers and libEGL - install xorg-server glamoregl component - link xorg drivers against gbm/egl bonus fix: - fix some wrongly marked compatx11file files build tested on shark, sgimips, evbarm64-el, amd64 and i386. run tested on radeon, intel and nvidia on amd64, including 'modesetting' driver on amd64. however, my systems disable it due to llvmpipe so i'm not sure what is happening.
662 lines
15 KiB
Plaintext
662 lines
15 KiB
Plaintext
# $NetBSD: sets.subr,v 1.186 2019/04/16 21:20:51 mrg Exp $
|
|
#
|
|
|
|
#
|
|
# The following variables contain defaults for sets.subr functions and callers:
|
|
# setsdir path to src/distrib/sets
|
|
# nlists list of base sets
|
|
# xlists list of x11 sets
|
|
# extlists list of extsrc sets
|
|
# obsolete controls if obsolete files are selected instead
|
|
# module if != "no", enable MODULE sets
|
|
# shlib shared library format (a.out, elf, or "")
|
|
# stlib static library format (a.out, elf)
|
|
#
|
|
# The following <bsd.own.mk> variables are exported to the environment:
|
|
# MACHINE
|
|
# MACHINE_ARCH
|
|
# MACHINE_CPU
|
|
# HAVE_BINUTILS
|
|
# HAVE_GCC
|
|
# HAVE_GDB
|
|
# HAVE_SSP
|
|
# HAVE_OPENSSL
|
|
# TOOLCHAIN_MISSING
|
|
# OBJECT_FMT
|
|
# as well as:
|
|
#
|
|
|
|
#
|
|
# The following variables refer to tools that are used when building sets:
|
|
#
|
|
: ${AWK:=awk}
|
|
: ${CKSUM:=cksum}
|
|
: ${COMM:=comm}
|
|
: ${DATE:=date}
|
|
: ${DB:=db}
|
|
: ${EGREP:=egrep}
|
|
: ${ENV_CMD:=env} # ${ENV} is special to sh(1), ksh(1), etc.
|
|
: ${FGREP:=fgrep}
|
|
: ${FIND:=find}
|
|
: ${GREP:=grep}
|
|
: ${GZIP_CMD:=gzip} # ${GZIP} is special to gzip(1)
|
|
: ${HOSTNAME_CMD:=hostname} # ${HOSTNAME} is special to bash(1)
|
|
: ${HOST_SH:=sh}
|
|
: ${IDENT:=ident}
|
|
: ${JOIN:=join}
|
|
: ${LS:=ls}
|
|
: ${MAKE:=make}
|
|
: ${MKTEMP:=mktemp}
|
|
: ${MTREE:=mtree}
|
|
: ${PASTE:=paste}
|
|
: ${PAX:=pax}
|
|
: ${PRINTF:=printf}
|
|
: ${SED:=sed}
|
|
: ${SORT:=sort}
|
|
: ${STAT:=stat}
|
|
: ${TSORT:=tsort}
|
|
: ${UNAME:=uname}
|
|
: ${WC:=wc}
|
|
: ${XARGS:=xargs}
|
|
|
|
#
|
|
# If printf is a shell builtin command, then we can
|
|
# implement cheaper versions of basename and dirname
|
|
# that do not involve any fork/exec overhead.
|
|
# If printf is not builtin, approximate it using echo,
|
|
# and hope there are no weird file names that cause
|
|
# some versions of echo to do the wrong thing.
|
|
# (Converting to this version of dirname speeded up the
|
|
# syspkgdeps script by an order of magnitude, from 68
|
|
# seconds to 6.3 seconds on one particular host.)
|
|
#
|
|
# Note that naive approximations for dirname
|
|
# using ${foo%/*} do not do the right thing in cases
|
|
# where the result should be "/" or ".".
|
|
#
|
|
case "$(type printf)" in
|
|
*builtin*)
|
|
basename ()
|
|
{
|
|
local bn
|
|
bn="${1##*/}"
|
|
bn="${bn%$2}"
|
|
printf "%s\n" "$bn"
|
|
}
|
|
dirname ()
|
|
{
|
|
local dn
|
|
case "$1" in
|
|
?*/*) dn="${1%/*}" ;;
|
|
/*) dn=/ ;;
|
|
*) dn=. ;;
|
|
esac
|
|
printf "%s\n" "$dn"
|
|
}
|
|
;;
|
|
*)
|
|
basename ()
|
|
{
|
|
local bn
|
|
bn="${1##*/}"
|
|
bn="${bn%$2}"
|
|
echo "$bn"
|
|
}
|
|
dirname ()
|
|
{
|
|
local dn
|
|
case "$1" in
|
|
?*/*) dn="${1%/*}" ;;
|
|
/*) dn=/ ;;
|
|
*) dn=. ;;
|
|
esac
|
|
echo "$dn"
|
|
}
|
|
;;
|
|
esac
|
|
|
|
#####
|
|
|
|
oIFS=$IFS
|
|
IFS="
|
|
"
|
|
|
|
for x in $( MAKEVERBOSE= ${MAKE} -B -f ${rundir}/mkvars.mk mkvars ); do
|
|
eval export $x
|
|
done
|
|
|
|
IFS=$oIFS
|
|
|
|
MKVARS="$( MAKEVERBOSE= ${MAKE} -B -f ${rundir}/mkvars.mk mkvars | ${SED} -e 's,=.*,,' | ${XARGS} )"
|
|
|
|
#####
|
|
|
|
setsdir=${rundir}
|
|
obsolete=0
|
|
if [ "${MKKMOD}" = "no" ]; then
|
|
module=no # MODULEs are off.
|
|
modset=""
|
|
else
|
|
module=yes
|
|
modset="modules"
|
|
fi
|
|
if [ "${MKATF}" = "no" ]; then
|
|
testset=""
|
|
else
|
|
testset="tests"
|
|
fi
|
|
if [ "${MKDEBUG}" = "no" -a "${MKDEBUGLIB}" = "no" ]; then
|
|
debugset=""
|
|
xdebugset=""
|
|
else
|
|
debugset="debug"
|
|
xdebugset="xdebug"
|
|
fi
|
|
# Determine lib type. Do this first so stlib also gets set.
|
|
if [ "${OBJECT_FMT}" = "ELF" ]; then
|
|
shlib=elf
|
|
else
|
|
shlib=aout
|
|
fi
|
|
stlib=$shlib
|
|
# Now check for MKPIC or specials and turn off shlib if need be.
|
|
if [ "${MKPIC}" = "no" ]; then
|
|
shlib=no
|
|
fi
|
|
nlists="base comp $debugset etc games man misc $modset $testset text"
|
|
xlists="xbase xcomp $xdebugset xetc xfont xserver"
|
|
extlists="extbase extcomp extetc"
|
|
|
|
OSRELEASE=$(${HOST_SH} ${NETBSDSRCDIR}/sys/conf/osrelease.sh -k)
|
|
MODULEDIR="stand/${MACHINE}/${OSRELEASE}/modules"
|
|
SUBST="s#@MODULEDIR@#${MODULEDIR}#g"
|
|
SUBST="${SUBST};s#@OSRELEASE@#${OSRELEASE}#g"
|
|
SUBST="${SUBST};s#@MACHINE@#${MACHINE}#g"
|
|
|
|
#
|
|
# list_set_files setfile [...]
|
|
#
|
|
# Produce a packing list for setfile(s).
|
|
# In each file, a record consists of a path and a System Package name,
|
|
# separated by whitespace. E.g.,
|
|
#
|
|
# # $NetBSD: sets.subr,v 1.186 2019/04/16 21:20:51 mrg Exp $
|
|
# . base-sys-root [keyword[,...]]
|
|
# ./altroot base-sys-root
|
|
# ./bin base-sys-root
|
|
# ./bin/[ base-util-root
|
|
# ./bin/cat base-util-root
|
|
# [...]
|
|
#
|
|
# A # in the first column marks a comment.
|
|
#
|
|
# If ${obsolete} != 0, only entries with an "obsolete" keyword will
|
|
# be printed. All other keywords must be present.
|
|
#
|
|
# The third field is an optional comma separated list of keywords to
|
|
# control if a record is printed; every keyword listed must be enabled
|
|
# for the record to be printed. The list of all avalaible make variables
|
|
# that can be turned on or off can be found by running in this directory:
|
|
#
|
|
# make -f mkvars.mk mkvarsyesno
|
|
#
|
|
# These MK<NAME> variables can be used as selectors in the sets as <name>.
|
|
#
|
|
# The following extra keywords are also available, listed by:
|
|
#
|
|
# make -f mkvars.mk mkextravars
|
|
#
|
|
# These are:
|
|
# 1. The HAVE_<name>:
|
|
# ssp ${HAVE_SSP} != no
|
|
# libgcc_eh ${HAVE_LIBGCC_EH} != no
|
|
# binutils=<n> <n> = value of ${HAVE_BINUTILS}
|
|
# gcc=<n> <n> = value of ${HAVE_GCC}
|
|
# gdb=<n> <n> = value of ${HAVE_GDB}
|
|
# openssl=<n> <n> = value of ${HAVE_OPENSSL}
|
|
# xorg_server_ver=<n> <n> = value of ${HAVE_XORG_SERVER_VER}
|
|
# xorg_glamor ${HAVE_XORG_GLAMOR} != no
|
|
# mesa_ver=<n> <n> = value of ${HAVE_MESA_VER}
|
|
#
|
|
# 2. The USE_<name>:
|
|
# use_inet6 ${USE_INET6} != no
|
|
# use_kerberos ${USE_KERBEROS} != no
|
|
# use_ldap ${USE_LDAP} != no
|
|
# use_yp ${USE_YP} != no
|
|
#
|
|
# 3. Finally:
|
|
# dummy dummy entry (ignored)
|
|
# obsolete file is obsolete, and only printed if
|
|
# ${obsolete} != 0
|
|
#
|
|
# solaris ${MKDTRACE} != no or ${MKZFS} != no or ${MKCTF} != no
|
|
#
|
|
#
|
|
# endian=<n> <n> = value of ${TARGET_ENDIANNESS}
|
|
#
|
|
#
|
|
# .cat if ${MKMANZ} != "no" && ${MKCATPAGES} != "no"
|
|
# automatically append ".gz" to the filename
|
|
#
|
|
# .man if ${MKMANZ} != "no" && ${MKMAN} != "no"
|
|
# automatically append ".gz" to the filename
|
|
#
|
|
list_set_files()
|
|
{
|
|
if [ ${MAKEVERBOSE:-2} -lt 3 ]; then
|
|
verbose=false
|
|
else
|
|
verbose=true
|
|
fi
|
|
print_set_lists "$@" | \
|
|
${AWK} -v obsolete=${obsolete} '
|
|
BEGIN {
|
|
if (obsolete)
|
|
wanted["obsolete"] = 1
|
|
|
|
split("'"${MKVARS}"'", needvars)
|
|
doingcompat = 0
|
|
doingcompattests = 0
|
|
ignoredkeywords["compatdir"] = 1
|
|
ignoredkeywords["compatfile"] = 1
|
|
ignoredkeywords["compattestdir"] = 1
|
|
ignoredkeywords["compattestfile"] = 1
|
|
ignoredkeywords["compatx11dir"] = 1
|
|
ignoredkeywords["compatx11file"] = 1
|
|
for (vi in needvars) {
|
|
nv = needvars[vi]
|
|
kw = tolower(nv)
|
|
sub(/^mk/, "", kw)
|
|
sub(/^have_/, "", kw)
|
|
sub(/^target_endianness/, "endian", kw)
|
|
if (nv != "HAVE_GCC" && nv != "HAVE_GDB" && ENVIRON[nv] != "no" && nv != "COMPATARCHDIRS" && nv != "KMODARCHDIRS") {
|
|
wanted[kw] = 1
|
|
}
|
|
}
|
|
|
|
if ("compat" in wanted) {
|
|
doingcompat = 1;
|
|
split("'"${COMPATARCHDIRS}"'", compatarchdirs, ",");
|
|
compatdirkeywords["compatdir"] = 1
|
|
compatfilekeywords["compatfile"] = 1
|
|
|
|
if (wanted["compattests"]) {
|
|
doingcompattests = 1;
|
|
compatdirkeywords["compattestdir"] = 1
|
|
compatfilekeywords["compattestfile"] = 1
|
|
}
|
|
if (wanted["compatx11"]) {
|
|
doingcompatx11 = 1;
|
|
compatdirkeywords["compatx11dir"] = 1
|
|
compatfilekeywords["compatx11file"] = 1
|
|
}
|
|
}
|
|
|
|
if (("kmod" in wanted) && ("compatmodules" in wanted)) {
|
|
split("'"${KMODARCHDIRS}"'", kmodarchdirs, ",");
|
|
kmodpat = "./stand/" ENVIRON["MACHINE"]
|
|
l_kmodpat = length(kmodpat)
|
|
}
|
|
|
|
if ("'"${TOOLCHAIN_MISSING}"'" != "yes") {
|
|
if ("binutils" in wanted)
|
|
wanted["binutils=" "'"${HAVE_BINUTILS}"'"] = 1
|
|
if ("gcc" in wanted)
|
|
wanted["gcc=" "'"${HAVE_GCC}"'"] = 1
|
|
if ("gdb" in wanted)
|
|
wanted["gdb=" "'"${HAVE_GDB}"'"] = 1
|
|
}
|
|
if ("openssl" in wanted) {
|
|
wanted["openssl=" "'"${HAVE_OPENSSL}"'"] = 1
|
|
}
|
|
if ("xorg_server_ver" in wanted) {
|
|
wanted["xorg_server_ver=" "'"${HAVE_XORG_SERVER_VER}"'"] = 1
|
|
}
|
|
if ("mesa_ver" in wanted) {
|
|
wanted["mesa_ver=" "'"${HAVE_MESA_VER}"'"] = 1
|
|
}
|
|
if (("man" in wanted) && ("catpages" in wanted))
|
|
wanted[".cat"] = 1
|
|
if (("man" in wanted) && ("manpages" in wanted))
|
|
wanted[".man"] = 1
|
|
if ("endian" in wanted)
|
|
wanted["endian=" "'"${TARGET_ENDIANNESS}"'"] = 1
|
|
if ("machine" in wanted)
|
|
wanted["machine=" "'"${MACHINE}"'"] = 1
|
|
if ("machine_arch" in wanted)
|
|
wanted["machine_arch=" "'"${MACHINE_ARCH}"'"] = 1
|
|
if ("machine_cpu" in wanted)
|
|
wanted["machine_cpu=" "'"${MACHINE_CPU}"'"] = 1
|
|
}
|
|
|
|
/^#/ {
|
|
next;
|
|
}
|
|
|
|
/^-/ {
|
|
notwanted[substr($1, 2)] = 1;
|
|
delete list [substr($1, 2)];
|
|
next;
|
|
}
|
|
|
|
|
|
NF > 2 && $3 != "-" {
|
|
if (notwanted[$1] != "")
|
|
next;
|
|
split($3, keywords, ",")
|
|
show = 1
|
|
haveobs = 0
|
|
iscompatfile = 0
|
|
havekmod = 0
|
|
iscompatdir = 0
|
|
for (ki in keywords) {
|
|
kw = keywords[ki]
|
|
if (("manz" in wanted) &&
|
|
(kw == ".cat" || kw == ".man"))
|
|
$1 = $1 ".gz"
|
|
if (substr(kw, 1, 1) == "!") {
|
|
kw = substr(kw, 2)
|
|
if (kw in wanted)
|
|
show = 0
|
|
} else if (kw in compatdirkeywords) {
|
|
iscompatdir = 1
|
|
} else if (kw in compatfilekeywords) {
|
|
iscompatfile = 1
|
|
} else if (kw == "nocompatmodules") {
|
|
havekmod = -1
|
|
} else if (kw in ignoredkeywords) {
|
|
# ignore
|
|
} else if (! (kw in wanted)) {
|
|
show = 0
|
|
} else if (kw == "kmod" && havekmod == 0) {
|
|
havekmod = 1
|
|
}
|
|
if (kw == "obsolete")
|
|
haveobs = 1
|
|
}
|
|
if (iscompatdir) {
|
|
for (d in cpaths) {
|
|
if (cpaths[d] == $1 "/")
|
|
next
|
|
}
|
|
cpaths[ncpaths++] = $1 "/"
|
|
}
|
|
if (obsolete && ! haveobs)
|
|
next
|
|
if (!show)
|
|
next
|
|
|
|
list[$1] = $0
|
|
if (havekmod > 0 && substr($1,1,l_kmodpat) == kmodpat) {
|
|
for (d in kmodarchdirs) {
|
|
xd = "./stand/" kmodarchdirs[d]
|
|
xfile = xd substr($1, l_kmodpat+1)
|
|
tmp = xd substr($0, l_kmodpat+1)
|
|
list[xfile] = tmp;
|
|
}
|
|
next
|
|
}
|
|
|
|
if (!doingcompat || !(iscompatfile || iscompatdir))
|
|
next
|
|
|
|
if (iscompatfile) {
|
|
emitcompat[$1] = 1;
|
|
next
|
|
}
|
|
for (d in compatarchdirs) {
|
|
tmp = $0
|
|
xfile = $1 "/" compatarchdirs[d]
|
|
tmp = xfile substr(tmp, length($1) + 1)
|
|
if (xfile in notwanted)
|
|
continue;
|
|
sub("compatdir","compat",tmp);
|
|
sub("compattestdir","compat",tmp);
|
|
list[xfile] = tmp
|
|
}
|
|
next
|
|
}
|
|
|
|
{
|
|
if ($1 in notwanted)
|
|
next;
|
|
if (! obsolete)
|
|
list[$1] = $0
|
|
}
|
|
|
|
END {
|
|
for (i in list) {
|
|
print list[i]
|
|
if (! (i in emitcompat))
|
|
continue;
|
|
l_i = length(i)
|
|
l = 0
|
|
for (j in cpaths) {
|
|
lx = length(cpaths[j])
|
|
if (lx >= l_i || cpaths[j] != substr(i, 1, lx)) {
|
|
continue;
|
|
}
|
|
if (lx > l) {
|
|
l = lx;
|
|
cpath = cpaths[j];
|
|
}
|
|
}
|
|
for (d in compatarchdirs) {
|
|
tmp = list[i]
|
|
extrapath = compatarchdirs[d] "/"
|
|
xfile = cpath extrapath substr(i, l + 1)
|
|
if (xfile in notwanted)
|
|
continue;
|
|
sub("compatfile","compat",tmp);
|
|
sub("compattestfile","compat",tmp);
|
|
tmp = xfile substr(tmp, l_i + 1)
|
|
print tmp;
|
|
}
|
|
}
|
|
}'
|
|
|
|
}
|
|
|
|
#
|
|
# list_set_lists setname
|
|
#
|
|
# Print to stdout a list of files, one filename per line, which
|
|
# concatenate to create the packing list for setname. E.g.,
|
|
#
|
|
# .../lists/base/mi
|
|
# .../lists/base/rescue.mi
|
|
# .../lists/base/md.i386
|
|
# [...]
|
|
#
|
|
# For a given setname $set, the following files may be selected from
|
|
# .../list/$set:
|
|
# mi
|
|
# mi.ext.*
|
|
# ad.${MACHINE_ARCH}
|
|
# (or) ad.${MACHINE_CPU}
|
|
# ad.${MACHINE_CPU}.shl
|
|
# md.${MACHINE}.${MACHINE_ARCH}
|
|
# (or) md.${MACHINE}
|
|
# stl.mi
|
|
# stl.${stlib}
|
|
# shl.mi
|
|
# shl.mi.ext.*
|
|
# shl.${shlib}
|
|
# shl.${shlib}.ext.*
|
|
# module.mi if ${module} != no
|
|
# module.${MACHINE} if ${module} != no
|
|
# module.ad.${MACHINE_ARCH} if ${module} != no
|
|
# (or) module.ad.${MACHINE_CPU} if ${module} != no
|
|
# rescue.shl
|
|
# rescue.${MACHINE}
|
|
# rescue.ad.${MACHINE_ARCH}
|
|
# (or) rescue.ad.${MACHINE_CPU}
|
|
# rescue.ad.${MACHINE_CPU}.shl
|
|
#
|
|
# Environment:
|
|
# shlib
|
|
# stlib
|
|
#
|
|
list_set_lists()
|
|
{
|
|
setname=$1
|
|
|
|
list_set_lists_mi $setname
|
|
list_set_lists_ad $setname
|
|
list_set_lists_md $setname
|
|
list_set_lists_stl $setname
|
|
list_set_lists_shl $setname
|
|
list_set_lists_module $setname
|
|
list_set_lists_rescue $setname
|
|
return 0
|
|
}
|
|
|
|
list_set_lists_mi()
|
|
{
|
|
setdir=$setsdir/lists/$1
|
|
# always exist!
|
|
echo $setdir/mi
|
|
}
|
|
|
|
list_set_lists_ad()
|
|
{
|
|
setdir=$setsdir/lists/$1
|
|
[ "${MACHINE}" != "${MACHINE_ARCH}" ] && \
|
|
list_set_lists_common_ad $1
|
|
}
|
|
|
|
list_set_lists_md()
|
|
{
|
|
setdir=$setsdir/lists/$1
|
|
echo_if_exist $setdir/md.${MACHINE}.${MACHINE_ARCH} || \
|
|
echo_if_exist $setdir/md.${MACHINE}
|
|
}
|
|
|
|
list_set_lists_stl()
|
|
{
|
|
setdir=$setsdir/lists/$1
|
|
echo_if_exist $setdir/stl.mi
|
|
echo_if_exist $setdir/stl.${stlib}
|
|
}
|
|
|
|
list_set_lists_shl()
|
|
{
|
|
setdir=$setsdir/lists/$1
|
|
[ "$shlib" != "no" ] || return
|
|
echo_if_exist $setdir/shl.mi
|
|
echo_if_exist $setdir/shl.${shlib}
|
|
}
|
|
|
|
list_set_lists_module()
|
|
{
|
|
setdir=$setsdir/lists/$1
|
|
[ "$module" != "no" ] || return
|
|
echo_if_exist $setdir/module.mi
|
|
echo_if_exist $setdir/module.${MACHINE}
|
|
# XXX module never has .shl
|
|
[ "${MACHINE}" != "${MACHINE_ARCH}" ] && \
|
|
list_set_lists_common_ad $1 module
|
|
}
|
|
|
|
list_set_lists_rescue()
|
|
{
|
|
setdir=$setsdir/lists/$1
|
|
echo_if_exist $setdir/rescue.mi
|
|
echo_if_exist $setdir/rescue.${MACHINE}
|
|
[ "${MACHINE}" != "${MACHINE_ARCH}" ] && \
|
|
list_set_lists_common_ad $1 rescue
|
|
}
|
|
|
|
list_set_lists_common_ad()
|
|
{
|
|
setdir=$setsdir/lists/$1; _prefix=$2
|
|
|
|
[ -n "$_prefix" ] && prefix="$_prefix".
|
|
|
|
# Prefer a <prefix>.ad.${MACHINE_ARCH} over a
|
|
# <prefix>.ad.${MACHINE_CPU}, since the arch-
|
|
# specific one will be more specific than the
|
|
# cpu-specific one.
|
|
echo_if_exist $setdir/${prefix}ad.${MACHINE_ARCH} || \
|
|
echo_if_exist $setdir/${prefix}ad.${MACHINE_CPU}
|
|
[ "$shlib" != "no" ] && \
|
|
echo_if_exist $setdir/${prefix}ad.${MACHINE_CPU}.shl
|
|
}
|
|
|
|
echo_if_exist()
|
|
{
|
|
[ -f $1 ] && echo $1
|
|
return $?
|
|
}
|
|
|
|
echo_if_exist_foreach()
|
|
{
|
|
local _list=$1; shift
|
|
for _suffix in $@; do
|
|
echo_if_exist ${_list}.${_suffix}
|
|
done
|
|
}
|
|
|
|
print_set_lists()
|
|
{
|
|
for setname; do
|
|
list=$(list_set_lists $setname)
|
|
for l in $list; do
|
|
echo $l
|
|
if $verbose; then
|
|
echo >&2 "DEBUG: list_set_files: $l"
|
|
fi
|
|
done
|
|
done | ${XARGS} ${SED} ${SUBST}
|
|
}
|
|
|
|
# arch_to_cpu mach
|
|
#
|
|
# Print the ${MACHINE_CPU} for ${MACHINE_ARCH}=mach,
|
|
# as determined by <bsd.own.mk>.
|
|
#
|
|
arch_to_cpu()
|
|
{
|
|
MACHINE_ARCH=${1} MAKEFLAGS= \
|
|
${MAKE} -m ${NETBSDSRCDIR}/share/mk \
|
|
-f ${NETBSDSRCDIR}/share/mk/bsd.own.mk \
|
|
-V '${MACHINE_CPU}'
|
|
}
|
|
|
|
# arch_to_endian mach
|
|
#
|
|
# Print the ${TARGET_ENDIANNESS} for ${MACHINE_ARCH}=mach,
|
|
# as determined by <bsd.endian.mk>.
|
|
#
|
|
arch_to_endian()
|
|
{
|
|
MACHINE_ARCH=${1} MAKEFLAGS= \
|
|
${MAKE} -m ${NETBSDSRCDIR}/share/mk \
|
|
-f ${NETBSDSRCDIR}/share/mk/bsd.endian.mk \
|
|
-V '${TARGET_ENDIANNESS}'
|
|
}
|
|
|
|
#####
|
|
|
|
# print_mkvars
|
|
print_mkvars()
|
|
{
|
|
for v in $MKVARS; do
|
|
eval echo $v=\$$v
|
|
done
|
|
}
|
|
|
|
# print_set_lists_{base,x,ext}
|
|
# list_set_lists_{base,x,ext}
|
|
# list_set_files_{base,x,ext}
|
|
for func in print_set_lists list_set_lists list_set_files; do
|
|
for x in base x ext; do
|
|
if [ $x = base ]; then
|
|
list=nlists
|
|
else
|
|
list=${x}lists
|
|
fi
|
|
eval ${func}_${x} \(\) \{ $func \$$list \; \}
|
|
done
|
|
done
|