b2dd18faba
This is mostly to avoid the allocation required by the externalization of the transaction dictionary, which in some cases is huge. This should reduce the massive memory usage required to inspect the externalized dictionary.
755 lines
17 KiB
Bash
Executable File
755 lines
17 KiB
Bash
Executable File
#!/bin/sh
|
|
# Try and be like autotools configure, but without autotools
|
|
|
|
VERSION=0.45
|
|
|
|
# Ensure that we do not inherit these from env
|
|
OS=
|
|
BUILD=
|
|
HOST=
|
|
TARGET=
|
|
DEBUG=
|
|
BUILD_TESTS=
|
|
BUILD_API_DOCS=
|
|
BUILD_STATIC=
|
|
SILENT=yes
|
|
HAVE_VISIBILITY=no
|
|
|
|
usage()
|
|
{
|
|
cat <<_EOF
|
|
\`configure' configures XBPS to adapt to many kinds of systems.
|
|
|
|
By default, \`make install' will install all the files in
|
|
\`/usr/local/sbin', \`/usr/local/lib' etc. You can specify
|
|
an installation prefix other than \`/usr/local' using \`--prefix',
|
|
for instance \`--prefix=\$HOME'.
|
|
|
|
--prefix=DIR Install architecture-independent files in PREFIX
|
|
--exec-prefix=DIR Install architecture-dependent files in EPREFIX
|
|
--bindir=DIR Executables [PREFIX/bin]
|
|
--libdir=DIR Object code libraries [PREFIX/lib]
|
|
--includedir=DIR C header files [EPREFIX/include]
|
|
--mandir=DIR Man documentation [EPREFIX/share/man]
|
|
--datadir=DIR Read-only architecture-independent data [EPREFIX/share]
|
|
--sysconfdir=DIR Configuration files directory [PREFIX/etc]
|
|
--pkgconfigdir=DIR pkg-config directory [EPREFIX/lib/pkgconfig]
|
|
--testsdir=DIR Test suite directory [EPREFIX/tests]
|
|
--localstatedir=DIR Local state directory to store XBPS db files [/var]
|
|
--dbdir=DIR Path to the pkgdb directory [LOCALSTATEDIR/db/xbps]
|
|
|
|
--verbose Disable silent build to see compilation details
|
|
--enable-api-docs Install XBPS API Library documentation (default disabled)
|
|
--enable-debug Build with debugging code and symbols (default disabled)
|
|
--enable-fulldebug Enables extra debugging code (default disabled)
|
|
--enable-static Build XBPS static utils (default disabled)
|
|
--enable-tests Build and install Kyua tests (default disabled)
|
|
Needs atf >= 0.15 (http://code.google.com/p/kyua)
|
|
_EOF
|
|
exit 1
|
|
}
|
|
|
|
for x; do
|
|
opt=${x%%=*}
|
|
var=${x#*=}
|
|
case "$opt" in
|
|
--enable-debug) DEBUG=yes;;
|
|
--enable-fulldebug) FULL_DEBUG=yes;;
|
|
--prefix) PREFIX=$var;;
|
|
--exec-prefix) EPREFIX=$var;;
|
|
--bindir) BINDIR=$var;;
|
|
--mandir) MANDIR=$var;;
|
|
--datadir) SHAREDIR=$var;;
|
|
--build) BUILD=$var;;
|
|
--host) HOST=$var;;
|
|
--target) TARGET=$var;;
|
|
--includedir) INCLUDEDIR=$var;;
|
|
--sysconfdir) SYSCONFDIR=$var;;
|
|
--localstatedir) LOCALSTATEDIR=$var;;
|
|
--libdir) LIBDIR=$var;;
|
|
--datadir|--infodir) ;; # ignore autotools
|
|
--dbdir) DBDIR=$var;;
|
|
--enable-api-docs) BUILD_API_DOCS=$var;;
|
|
--verbose) unset SILENT;;
|
|
--pkgconfigdir) PKGCONFIGDIR=$var;;
|
|
--enable-tests) BUILD_TESTS=yes;;
|
|
--enable-static) BUILD_STATIC=yes;;
|
|
--testsdir) TESTSDIR=$var;;
|
|
--help) usage;;
|
|
*) echo "$0: WARNING: unknown option $opt" >&2;;
|
|
esac
|
|
done
|
|
|
|
: ${SED:=sed}
|
|
|
|
: ${PREFIX:=/usr/local}
|
|
: ${EPREFIX:=${PREFIX}}
|
|
: ${SYSCONFDIR:=${PREFIX}/etc}
|
|
: ${BINDIR:=${PREFIX}/bin}
|
|
: ${LIBDIR:=${EPREFIX}/lib}
|
|
: ${SHAREDIR:=${EPREFIX}/share}
|
|
: ${MANDIR:=${EPREFIX}/share/man}
|
|
: ${INCLUDEDIR:=${EPREFIX}/include}
|
|
: ${PKGCONFIGDIR:=${LIBDIR}/pkgconfig}
|
|
: ${TESTSDIR:=${EPREFIX}/tests}
|
|
: ${LOCALSTATEDIR:=/var}
|
|
: ${DBDIR:=${LOCALSTATEDIR}/db/xbps}
|
|
: ${TOPDIR:=..}
|
|
|
|
_which()
|
|
{
|
|
x="$(which "$1" 2>/dev/null)"
|
|
if [ -n "$x" ]; then
|
|
echo "$x"
|
|
return 0
|
|
fi
|
|
for x in /sbin/"$1" /usr/sbin/"$1" \
|
|
/usr/pkg/sbin/"$1" /usr/local/sbin/"$1"
|
|
do
|
|
if [ -e "$x" ]; then
|
|
echo "$x"
|
|
return 0
|
|
fi
|
|
done
|
|
return 1
|
|
}
|
|
|
|
CONFIG_MK=config.mk
|
|
|
|
if [ -z "$BUILD" ]; then
|
|
BUILD=`uname -m`-unknown-`uname -s | tr '[:upper:]' '[:lower:]'`
|
|
fi
|
|
if [ -z "$HOST" ]; then
|
|
[ -z "$TARGET" ] && TARGET=$BUILD
|
|
HOST=$TARGET
|
|
fi
|
|
if [ -z "$TARGET" ]; then
|
|
[ -z "$HOST" ] && HOST=$BUILD
|
|
TARGET=$HOST
|
|
fi
|
|
|
|
if [ -z "$OS" ]; then
|
|
# Derive OS from cpu-manufacturer-os-kernel
|
|
CPU=${TARGET%%-*}
|
|
REST=${TARGET#*-}
|
|
MANU=${REST%%-*}
|
|
REST=${REST#*-}
|
|
OS=${REST%%-*}
|
|
REST=${REST#*-}
|
|
KERNEL=${REST%%-*}
|
|
fi
|
|
|
|
echo "Configuring xbps for ... $OS"
|
|
rm -f $CONFIG_MK
|
|
echo "# Common vars used by XBPS on $OS." >$CONFIG_MK
|
|
|
|
echo "XBPS_OS = $OS" >>$CONFIG_MK
|
|
echo "VERSION = $VERSION" >>$CONFIG_MK
|
|
echo "TOPDIR ?= $TOPDIR" >>$CONFIG_MK
|
|
echo "PREFIX ?= $PREFIX" >>$CONFIG_MK
|
|
echo "EPREFIX ?= $EPREFIX" >>$CONFIG_MK
|
|
echo "SBINDIR ?= $BINDIR" >>$CONFIG_MK
|
|
echo "INCLUDEDIR ?= $INCLUDEDIR" >>$CONFIG_MK
|
|
echo "LIBDIR ?= $LIBDIR" >>$CONFIG_MK
|
|
echo "MANDIR ?= $MANDIR" >>$CONFIG_MK
|
|
echo "SHAREDIR ?= $SHAREDIR" >>$CONFIG_MK
|
|
echo "PKGCONFIGDIR ?= $PKGCONFIGDIR" >>$CONFIG_MK
|
|
echo "TESTSDIR ?= $TESTSDIR" >>$CONFIG_MK
|
|
echo "DBDIR ?= $DBDIR" >>$CONFIG_MK
|
|
|
|
ETCDIR="${SYSCONFDIR}/xbps.d"
|
|
echo "ETCDIR ?= $ETCDIR" >>$CONFIG_MK
|
|
|
|
[ -z "$DEBUG" ] && DEBUG=no
|
|
|
|
if [ -z "$CC" ]; then
|
|
printf "Looking for compiler ... "
|
|
for b in $TARGET- ""; do
|
|
for cc in gcc pcc icc cc clang; do
|
|
if type $b$cc >/dev/null 2>&1; then
|
|
CC=$b$cc
|
|
echo "$CC"
|
|
break
|
|
fi
|
|
done
|
|
[ -n "$CC" ] && break
|
|
done
|
|
if [ -z "$CC" ]; then
|
|
echo
|
|
echo "no suitable compiler found - aborting" >&2
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Using compiler $CC"
|
|
fi
|
|
|
|
echo "CC = $CC" >>$CONFIG_MK
|
|
echo "CFLAGS = -O2 -pthread" >>$CONFIG_MK
|
|
|
|
echo "LDFLAGS = -L\$(TOPDIR)/lib" >>$CONFIG_MK
|
|
echo "CPPFLAGS = -I. -I\$(TOPDIR) -I\$(TOPDIR)/include" >>$CONFIG_MK
|
|
echo "CPPFLAGS += -DXBPS_SYSCONF_PATH=\\\"${ETCDIR}\\\"" >>$CONFIG_MK
|
|
echo "CPPFLAGS += -DXBPS_SYSDEFCONF_PATH=\\\"${SHAREDIR}/xbps.d\\\"" >>$CONFIG_MK
|
|
echo "CPPFLAGS += -DXBPS_VERSION=\\\"${VERSION}\\\"" >>$CONFIG_MK
|
|
echo "CPPFLAGS += -DXBPS_META_PATH=\\\"${DBDIR}\\\"" >>$CONFIG_MK
|
|
echo "CPPFLAGS += -D_unused=\"__attribute__((__unused__))\"" >>$CONFIG_MK
|
|
|
|
if [ -d .git ]; then
|
|
_gitrev=$(git rev-parse --short HEAD)
|
|
echo "CPPFLAGS += -DXBPS_GIT=\\\"${_gitrev}\\\"" >>$CONFIG_MK
|
|
fi
|
|
|
|
if [ -n "$DEBUG" -a "$DEBUG" != no -a "$DEBUG" != false ]; then
|
|
echo "Building with debugging symbols."
|
|
echo "CPPFLAGS += -DDEBUG" >>$CONFIG_MK
|
|
echo "CFLAGS += -g" >>$CONFIG_MK
|
|
else
|
|
echo "CPPFLAGS+= -DNDEBUG" >>$CONFIG_MK
|
|
fi
|
|
if [ -n "$FULL_DEBUG" ]; then
|
|
echo "Enabling extra debugging code."
|
|
echo "CPPFLAGS+= -DFULL_DEBUG" >>$CONFIG_MK
|
|
fi
|
|
|
|
case "$OS" in
|
|
linux)
|
|
echo "CPPFLAGS += -D_XOPEN_SOURCE=700" >>$CONFIG_MK
|
|
echo "CPPFLAGS += -D_FILE_OFFSET_BITS=64" >> $CONFIG_MK
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
# Add CPPFLAGS/CFLAGS/LDFLAGS to CC for testing features
|
|
XCC="$CC $CFLAGS $CPPFLAGS $LDFLAGS"
|
|
# Make sure to disable --as-needed for CC tests.
|
|
XCC="$XCC -Wl,--no-as-needed"
|
|
|
|
check_compiler_flag()
|
|
{
|
|
local flag="$1"
|
|
local mode="$2"
|
|
local var="$3"
|
|
local rv=0
|
|
|
|
[ -z "$var" ] && var="CFLAGS"
|
|
|
|
printf "Checking if $CC supports -${mode}${flag} ... "
|
|
cat <<EOF >_ccflag.c
|
|
#include <stdio.h>
|
|
int main(void) { return 0; }
|
|
EOF
|
|
if $XCC -${mode}${flag} _ccflag.c -o _ccflag 2>_ccflag.err; then
|
|
if ! test -s _ccflag.err; then
|
|
if [ "$mode" = "W" -a -z "$var" ]; then
|
|
echo "CPPFLAGS += -${mode}${flag}" >>$CONFIG_MK
|
|
else
|
|
echo "$var += -${mode}${flag}" >>$CONFIG_MK
|
|
fi
|
|
echo "yes."
|
|
else
|
|
rv=1
|
|
echo "no."
|
|
fi
|
|
else
|
|
rv=1
|
|
echo "no."
|
|
fi
|
|
rm -f _ccflag.c _ccflag _ccflag.err
|
|
return $rv
|
|
}
|
|
|
|
#
|
|
# Check for some compiler warning flags.
|
|
#
|
|
for f in all extra error shadow "format=2" missing-prototypes \
|
|
missing-declarations nested-externs vla no-overlength-strings \
|
|
unsafe-loop-optimizations undef sign-compare \
|
|
missing-include-dirs old-style-definition \
|
|
init-self redundant-decls float-equal missing-noreturn \
|
|
cast-align cast-qual pointer-arith comment \
|
|
declaration-after-statement write-strings stack-protector; do
|
|
check_compiler_flag ${f} W
|
|
done
|
|
|
|
#
|
|
# Check for some compiler flags.
|
|
#
|
|
check_compiler_flag PIC f CFLAGS
|
|
check_compiler_flag "inline-functions" f CFLAGS
|
|
|
|
check_compiler_flag stack-protector-strong f CFLAGS
|
|
if [ $? -ne 0 ]; then
|
|
check_compiler_flag stack-protector f CFLAGS
|
|
if [ $? -eq 0 ]; then
|
|
if [ "$CC" = "gcc" ]; then
|
|
check_compiler_flag "param ssp-buffer-size=1" - CFLAGS
|
|
fi
|
|
fi
|
|
fi
|
|
check_compiler_flag "visibility=default" f SHAREDLIB_CFLAGS
|
|
if [ $? -eq 0 ]; then
|
|
HAVE_VISIBILITY=yes
|
|
echo "CPPFLAGS += -DHAVE_VISIBILITY=1" >>$CONFIG_MK
|
|
echo "HAVE_VISIBILITY = 1" >>$CONFIG_MK
|
|
fi
|
|
|
|
#
|
|
# Check for -Wl,--export-dynamic and if it fails, try -rdynamic.
|
|
#
|
|
check_compiler_flag "l,--export-dynamic" W LIBXBPS_LDFLAGS
|
|
if [ $? -ne 0 ]; then
|
|
check_compiler_flag dynamic r LIBXBPS_LDFLAGS
|
|
fi
|
|
|
|
#
|
|
# Check for -Wl,-z,relro,-z,now
|
|
check_compiler_flag "l,-z,relro,-z,now" W LDFLAGS
|
|
|
|
#
|
|
# Check if -fPIE and -pie are supported if --build-pie is set.
|
|
#
|
|
check_compiler_flag PIE f PROG_CFLAGS
|
|
if [ $? -eq 0 ]; then
|
|
check_compiler_flag pie "" PROG_LDFLAGS
|
|
fi
|
|
if [ $? -eq 0 ]; then
|
|
BUILD_PIE_VALUE=yes
|
|
else
|
|
BUILD_PIE_VALUE=no
|
|
fi
|
|
|
|
#
|
|
# A C99 compiler is required to build xbps.
|
|
#
|
|
check_compiler_flag "std=c99" "" CFLAGS
|
|
if [ $? -ne 0 ]; then
|
|
echo "ERRROR: A compatible C99 compiler is required, exiting..."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -n "$CFLAGS" ]; then
|
|
echo "CFLAGS += $CFLAGS" >>$CONFIG_MK
|
|
fi
|
|
if [ -n "$LDFLAGS" ]; then
|
|
echo "LDFLAGS += $LDFLAGS" >>$CONFIG_MK
|
|
fi
|
|
if [ -n "$CPPFLAGS" ]; then
|
|
echo "CPPFLAGS += $CPPFLAGS" >>$CONFIG_MK
|
|
fi
|
|
|
|
# libfetch
|
|
echo "CPPFLAGS += -I\$(TOPDIR)/lib/fetch" >>$CONFIG_MK
|
|
echo "LDFLAGS += -lssl" >>$CONFIG_MK
|
|
echo "STATIC_LIBS = \$(TOPDIR)/lib/libxbps.a" >>$CONFIG_MK
|
|
|
|
# proplib
|
|
echo "CPPFLAGS += -I\$(TOPDIR)/lib/portableproplib" >>$CONFIG_MK
|
|
echo "CPPFLAGS += -I\$(TOPDIR)/lib/portableproplib/prop" >>$CONFIG_MK
|
|
echo "LDFLAGS += -lpthread" >>$CONFIG_MK
|
|
echo "STATIC_LIBS += -lpthread" >>$CONFIG_MK
|
|
|
|
#
|
|
# Check for GCC atomic builtins.
|
|
#
|
|
func=atomic
|
|
printf "Checking for GCC atomic builtins ... "
|
|
cat <<EOF >_$func.c
|
|
int main() {
|
|
volatile unsigned long val = 1;
|
|
__sync_fetch_and_add(&val, 1);
|
|
__sync_fetch_and_sub(&val, 1);
|
|
__sync_add_and_fetch(&val, 1);
|
|
__sync_sub_and_fetch(&val, 1);
|
|
return 0;
|
|
}
|
|
EOF
|
|
if $XCC _$func.c -o _$func 2>/dev/null; then
|
|
echo yes.
|
|
HAVE_ATOMICS=1
|
|
else
|
|
echo no.
|
|
fi
|
|
rm -f _$func.c _$func
|
|
if test -n "$HAVE_ATOMICS"; then
|
|
echo "CPPFLAGS += -DHAVE_ATOMICS" >> $CONFIG_MK
|
|
fi
|
|
#
|
|
# Check for vasprintf().
|
|
#
|
|
func=vasprintf
|
|
printf "Checking for $func() ... "
|
|
if test -n "$HAVE_VASPRINTF"; then
|
|
echo "yes (cached)."
|
|
else
|
|
cat <<EOF >_$func.c
|
|
#define _GNU_SOURCE
|
|
#include <stdio.h>
|
|
int main(void) {
|
|
vasprintf(NULL, NULL, NULL);
|
|
return 0;
|
|
}
|
|
EOF
|
|
|
|
if $XCC _$func.c -o _$func 2>/dev/null; then
|
|
echo yes.
|
|
HAVE_VASPRINTF=1
|
|
else
|
|
echo no.
|
|
fi
|
|
rm -f _$func.c _$func
|
|
fi
|
|
if test -n "$HAVE_VASPRINTF"; then
|
|
echo "CPPFLAGS += -DHAVE_VASPRINTF" >> $CONFIG_MK
|
|
else
|
|
echo "COMPAT_SRCS+= compat/vasprintf.o" >>$CONFIG_MK
|
|
fi
|
|
|
|
#
|
|
# Check for strcasestr().
|
|
#
|
|
func=strcasestr
|
|
printf "Checking for $func() ... "
|
|
cat <<EOF >_$func.c
|
|
#define _GNU_SOURCE
|
|
#include <string.h>
|
|
int main(void) {
|
|
const char *h = "NEEDCOFEE";
|
|
const char *n = "IneedCoffee";
|
|
strcasestr(n, h);
|
|
return 0;
|
|
}
|
|
EOF
|
|
if $XCC _$func.c -o _$func 2>/dev/null; then
|
|
echo yes.
|
|
echo "CPPFLAGS += -DHAVE_STRCASESTR" >>$CONFIG_MK
|
|
else
|
|
echo no.
|
|
echo "COMPAT_SRCS += compat/strcasestr.o" >>$CONFIG_MK
|
|
fi
|
|
rm -f _$func _$func.c
|
|
|
|
#
|
|
# Check for strlcpy().
|
|
#
|
|
func=strlcpy
|
|
printf "Checking for $func() ... "
|
|
cat <<EOF >_$func.c
|
|
#include <string.h>
|
|
int main(void) {
|
|
const char s1[] = "foo";
|
|
char s2[10];
|
|
strlcpy(s2, s1, sizeof(s2));
|
|
return 0;
|
|
}
|
|
EOF
|
|
if $XCC _$func.c -o _$func 2>/dev/null; then
|
|
echo yes.
|
|
echo "CPPFLAGS += -DHAVE_STRLCPY" >> $CONFIG_MK
|
|
else
|
|
echo no.
|
|
echo "COMPAT_SRCS += compat/strlcpy.o" >>$CONFIG_MK
|
|
fi
|
|
rm -f _$func.c _$func
|
|
|
|
#
|
|
# Check for strlcat().
|
|
func=strlcat
|
|
printf "Checking for $func() ... "
|
|
cat <<EOF > _$func.c
|
|
#include <string.h>
|
|
int main(void) {
|
|
const char src[] = "foo";
|
|
char dst[10];
|
|
strlcat(dst, src, sizeof(dst));
|
|
return 0;
|
|
}
|
|
EOF
|
|
if $XCC _$func.c -o _$func 2>/dev/null; then
|
|
echo yes.
|
|
echo "CPPFLAGS += -DHAVE_STRLCAT" >>$CONFIG_MK
|
|
else
|
|
echo no.
|
|
echo "COMPAT_SRCS += compat/strlcat.o" >>$CONFIG_MK
|
|
fi
|
|
rm -f _$func.c _$func
|
|
|
|
#
|
|
# Check for humanize_number().
|
|
func=humanize_number
|
|
printf "Checking for $func() ... "
|
|
cat <<EOF > _$func.c
|
|
#include <stdio.h>
|
|
#include <util.h>
|
|
|
|
int main(void) {
|
|
humanize_number(NULL, 0, 0, NULL, 0, 0);
|
|
return 0;
|
|
}
|
|
EOF
|
|
if $XCC -lutil _$func.c -o _$func 2>/dev/null; then
|
|
echo yes.
|
|
echo "CPPFLAGS+= -DHAVE_HUMANIZE_NUMBER" >>$CONFIG_MK
|
|
else
|
|
echo no.
|
|
echo "COMPAT_SRCS+= compat/humanize_number.o" >>$CONFIG_MK
|
|
fi
|
|
rm -f _$func.c _$func
|
|
|
|
#
|
|
# Check for rbtree_ininit().
|
|
#
|
|
func=rb_tree_init
|
|
printf "Checking for $func() ... "
|
|
cat <<EOF > _$func.c
|
|
#include <sys/rbtree.h>
|
|
int main(void) {
|
|
rb_tree_init(NULL, NULL);
|
|
return 0;
|
|
}
|
|
EOF
|
|
if $XCC _$func.c -o _$func 2>/dev/null; then
|
|
echo yes.
|
|
echo "CPPFLAGS += -DHAVE_RBTREE" >>$CONFIG_MK
|
|
else
|
|
echo no.
|
|
echo "LIBPROP_OBJS += portableproplib/rb.o" >>$CONFIG_MK
|
|
fi
|
|
rm -f _$func.c _$func
|
|
|
|
#
|
|
# Check for fdatasync().
|
|
#
|
|
func=fdatasync
|
|
printf "Checking for $func() ... "
|
|
cat <<EOF > _$func.c
|
|
#include <unistd.h>
|
|
int main(void) {
|
|
fdatasync(0);
|
|
return 0;
|
|
}
|
|
EOF
|
|
if $XCC _$func.c -o _$func 2>/dev/null; then
|
|
echo yes.
|
|
echo "CPPFLAGS += -DHAVE_FDATASYNC" >>$CONFIG_MK
|
|
else
|
|
echo no.
|
|
fi
|
|
rm -f _$func.c _$func
|
|
|
|
#
|
|
# Check for clock_gettime(3).
|
|
#
|
|
func=clock_gettime
|
|
printf "Checking for $func() ... "
|
|
cat <<EOF > _$func.c
|
|
#include <time.h>
|
|
int main(void) {
|
|
struct timespec ts;
|
|
clock_gettime(CLOCK_MONOTONIC, &ts);
|
|
return 0;
|
|
}
|
|
EOF
|
|
if $XCC -lrt _$func.c -o _$func 2>/dev/null; then
|
|
echo yes.
|
|
echo "CPPFLAGS += -DHAVE_CLOCK_GETTIME" >>$CONFIG_MK
|
|
echo "LDFLAGS += -lrt" >>$CONFIG_MK
|
|
echo "STATIC_LIBS += -lrt" >>$CONFIG_MK
|
|
else
|
|
echo no.
|
|
fi
|
|
rm -f _$func.c _$func
|
|
|
|
#
|
|
# zlib is required.
|
|
#
|
|
func=InflateInit2
|
|
printf "Checking for $func() ... "
|
|
cat <<EOF > _$func.c
|
|
#include <zlib.h>
|
|
int main(void) {
|
|
z_stream strm;
|
|
strm.zalloc = Z_NULL;
|
|
strm.zfree = Z_NULL;
|
|
strm.opaque = Z_NULL;
|
|
strm.avail_in = 0;
|
|
strm.next_in = Z_NULL;
|
|
inflateInit2(&strm, 15+16);
|
|
return 0;
|
|
}
|
|
EOF
|
|
if $XCC -lz _$func.c -o _$func 2>/dev/null; then
|
|
echo yes.
|
|
echo "LDFLAGS += -lz" >>$CONFIG_MK
|
|
echo "STATIC_LIBS += -lz" >>$CONFIG_MK
|
|
else
|
|
ZLIB=no
|
|
fi
|
|
rm -f _$func.c _$func
|
|
if [ "$ZLIB" = "no" ]; then
|
|
echo "Failed to link with your system's zlib, can't continue..."
|
|
exit 1
|
|
fi
|
|
|
|
#
|
|
# If building API library documentation, doxygen and graphviz are required.
|
|
#
|
|
if [ -n "$BUILD_API_DOCS" ]; then
|
|
echo "Building API documentation via doxygen and graphviz."
|
|
printf "Checking for doxygen ..."
|
|
DOXYGEN_BIN=$(_which doxygen)
|
|
if [ -z "$DOXYGEN_BIN" ]; then
|
|
echo "not found, exiting."
|
|
exit 1
|
|
else
|
|
echo yes
|
|
fi
|
|
printf "Checking for graphviz ... "
|
|
DOT_BIN=$(_which dot)
|
|
if [ -z "$DOT_BIN" ]; then
|
|
echo "dot(1) command not found, exiting."
|
|
exit 1
|
|
else
|
|
echo yes
|
|
fi
|
|
|
|
echo "BUILD_API_DOCS= yes" >> $CONFIG_MK
|
|
BUILD_API_DOCS_VALUE=yes
|
|
else
|
|
BUILD_API_DOCS_VALUE=no
|
|
fi
|
|
|
|
#
|
|
# pkg-config is required to know dependencies for static linking.
|
|
#
|
|
printf "Checking for pkg-config ... "
|
|
PKGCONFIG_BIN=$(_which pkg-config)
|
|
if [ -z "$PKGCONFIG_BIN" ]; then
|
|
echo "not found, exiting."
|
|
exit 1
|
|
else
|
|
echo yes
|
|
fi
|
|
|
|
#
|
|
# libarchive >= 2.8.0 with pkg-config support is required.
|
|
#
|
|
printf "Checking for libarchive >= 2.8.0 via pkg-config ... "
|
|
if ! $PKGCONFIG_BIN --atleast-version=2.8.0 libarchive; then
|
|
echo "libarchive.pc file not found, exiting."
|
|
exit 1
|
|
else
|
|
echo "found version $($PKGCONFIG_BIN --modversion libarchive)."
|
|
echo "CFLAGS += $($PKGCONFIG_BIN --cflags libarchive)" >>$CONFIG_MK
|
|
echo "LDFLAGS += $($PKGCONFIG_BIN --libs libarchive)" >>$CONFIG_MK
|
|
echo "STATIC_LIBS += $($PKGCONFIG_BIN --libs --static libarchive)" \
|
|
>>$CONFIG_MK
|
|
fi
|
|
|
|
#
|
|
# OpenSSL libssl with pkg-config support is required when building
|
|
# the static binaries.
|
|
#
|
|
if [ "$BUILD_STATIC" = "yes" ]; then
|
|
printf "Checking for OpenSSL via pkg-config ... "
|
|
if ! $PKGCONFIG_BIN --exists libssl; then
|
|
echo "libssl.pc file not found, exiting."
|
|
exit 1
|
|
else
|
|
echo "found version $($PKGCONFIG_BIN --modversion libssl)."
|
|
echo "CFLAGS += $($PKGCONFIG_BIN --cflags libssl)" >>$CONFIG_MK
|
|
echo "LDFLAGS += $($PKGCONFIG_BIN --libs libssl)" >>$CONFIG_MK
|
|
echo "STATIC_LIBS += $($PKGCONFIG_BIN --libs --static libssl)" \
|
|
>>$CONFIG_MK
|
|
fi
|
|
else
|
|
func=SHA256
|
|
printf "Checking for OpenSSL $func() ... "
|
|
cat <<EOF > _$func.c
|
|
#include <openssl/sha.h>
|
|
int main(void) {
|
|
SHA256(NULL, NULL, 0);
|
|
return 0;
|
|
}
|
|
EOF
|
|
if $XCC -lcrypto _$func.c -o _$func 2>/dev/null; then
|
|
echo yes.
|
|
echo "LDFLAGS += -lcrypto" >>$CONFIG_MK
|
|
else
|
|
CRYPTO_SHA256=no
|
|
fi
|
|
rm -f _$func.c _$func
|
|
if [ "$CRYPTO_SHA256" = "no" ]; then
|
|
echo "Failed to link with your system's OpenSSL library, can't continue..."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
#
|
|
# If --enable-static enabled, build static binaries.
|
|
#
|
|
if [ "$BUILD_STATIC" = "yes" ]; then
|
|
echo "BUILD_STATIC = yes" >>$CONFIG_MK
|
|
BUILD_STATIC_VALUE=yes
|
|
else
|
|
BUILD_STATIC_VALUE=no
|
|
fi
|
|
|
|
#
|
|
# If --enable-tests enabled, check for ATF >= 0.15 via pkg-config.
|
|
#
|
|
if [ "$BUILD_TESTS" = "yes" ]; then
|
|
printf "Checking for ATF via pkg-config ... "
|
|
if ! $PKGCONFIG_BIN --atleast-version=0.15 atf-c; then
|
|
echo "ATF >= 0.15 not found in PKG_CONFIG_LIBDIR, exiting."
|
|
exit 1
|
|
fi
|
|
echo "found version $($PKGCONFIG_BIN --modversion atf-c)."
|
|
echo "TEST_CFLAGS += $($PKGCONFIG_BIN --cflags atf-c)" >>$CONFIG_MK
|
|
echo "TEST_LDFLAGS += $($PKGCONFIG_BIN --libs atf-c)" >>$CONFIG_MK
|
|
echo "BUILD_TESTS = yes" >>$CONFIG_MK
|
|
BUILD_TESTS_VALUE=yes
|
|
else
|
|
BUILD_TESTS_VALUE=no
|
|
fi
|
|
|
|
if [ -n "$SILENT" ]; then
|
|
echo "SILENT = @" >>$CONFIG_MK
|
|
else
|
|
echo "SILENT =" >>$CONFIG_MK
|
|
fi
|
|
|
|
echo
|
|
echo " XBPS has been configured with the following options:"
|
|
echo
|
|
echo " PREFIX = $PREFIX"
|
|
echo " EPREFIX = $EPREFIX"
|
|
echo " BINDIR = $BINDIR"
|
|
echo " LIBDIR = $LIBDIR"
|
|
echo " INCLUDEDIR = $INCLUDEDIR"
|
|
echo " SHAREDIR = $SHAREDIR"
|
|
echo " MANDIR = $MANDIR"
|
|
echo " ETCDIR = $ETCDIR"
|
|
echo " DBDIR = $DBDIR"
|
|
|
|
if [ -n "$CFLAGS" ]; then
|
|
echo " CFLAGS = $CFLAGS"
|
|
fi
|
|
if [ -n "$LDFLAGS" ]; then
|
|
echo " LDFLAGS = $LDFLAGS"
|
|
fi
|
|
echo
|
|
echo " Build API documentation = $BUILD_API_DOCS_VALUE"
|
|
echo " Build Kyua test suite = $BUILD_TESTS_VALUE"
|
|
echo " Build programs as PIE = $BUILD_PIE_VALUE"
|
|
echo " Build static programs = $BUILD_STATIC_VALUE"
|
|
echo " Build with debug = $DEBUG"
|
|
if [ -n "$HAVE_VISIBILITY" ]; then
|
|
echo " Symbol visibility = $HAVE_VISIBILITY"
|
|
fi
|
|
echo
|
|
echo " You can now run make && make install clean."
|
|
echo
|
|
|
|
exit 0
|