PREFIX='/usr/local'
BINDIR=''
SBINDIR=''
+LIBDIR=''
ETCDIR=''
MANDIR=''
INSTALLMANPAGE=1
EXAMPLESDIR=''
INSTALLEXAMPLES=1
+SYSTEMDDIR=''
+SYSTEMDGENERATORDIR=''
+TMPFILESDDIR=''
+INSTALLSYSTEMD=1
BOOST_PREFIX=''
GCRYPT_PREFIX=''
OPENSSL_PREFIX=''
print_usage() {
- echo "configure --help print this"
- echo " --target=<TARGET> build target i.e. Linux (default: autodetect)"
- echo " --prefix=<PREFIX> the installation prefix (default: /usr/local)"
- echo " --bindir=<DIR> the path to the bin directory (default: $PREFIX/bin)"
- echo " --sbindir=<DIR> the path to the sbin directory (default: $PREFIX/sbin)"
- echo " --sysconfdir=<DIR> the path to the system configuration directory (default: $PREFIX/etc"
- echo " --mandir=<DIR> the path to the system man pages (default: $PREFIX/share/man)"
- echo " --no-manpage dont't install manpages"
- echo " --examplesdir=<DIR> the path to the examples files (default: $PREFIX/share/examples)"
- echo " --no-examples dont't install example files"
- echo " --use-gcrypt use libgcrypt (this is the default)"
- echo " --use-nettle use libnettle instead of libgcrypt"
- echo " --use-ssl-crypto use openssl crypto library instead of libgcrypt"
- echo " --no-crypto disable crypto at all (only NULL cipher)"
- echo " --disable-passphrase disable master key and salt passphrase"
- echo " --enable-passphrase enable master key and salt passphrase"
- echo " --disable-routing disable built-in routing capability"
- echo " --enable-routing enable built-in routing capability"
- echo " --cross-prefix=<PREFIX> add PREFIX to compiler calls"
- echo " --with-boost=<PREFIX> don't use systemwide boost"
- echo " --with-gcrypt=<PREFIX> don't use systemwide gcrypt"
- echo " --with-nettle=<PREFIX> don't use systemwide nettle"
- echo " --with-openssl=<PREFIX> don't use systemwide openssl"
- echo " --use-clang use clang/llvm as compiler/linker"
+ echo "configure --help print this"
+ echo " --target=<TARGET> build target i.e. Linux (default: autodetect)"
+ echo " --prefix=<PREFIX> the installation prefix (default: /usr/local)"
+ echo " --bindir=<DIR> the path to the bin directory (default: $PREFIX/bin)"
+ echo " --sbindir=<DIR> the path to the sbin directory (default: $PREFIX/sbin)"
+ echo " --libdir=<DIR> the path to the lib directory (default: $PREFIX/lib)"
+ echo " --sysconfdir=<DIR> the path to the system configuration directory (default: $PREFIX/etc"
+ echo " --mandir=<DIR> the path to the system man pages (default: $PREFIX/share/man)"
+ echo " --no-manpage don't install manpages"
+ echo " --examplesdir=<DIR> the path to the examples files (default: $PREFIX/share/examples)"
+ echo " --no-examples don't install example files"
+ echo " --systemddir=<DIR> the path to the systemd service unit directory (default: from pkg-config)"
+ echo " --systemdgeneratordir=<DIR> the path to the systemd generator directory (default: from pkg-config)"
+ echo " --tmpfilesddir=<DIR> the path to the systemd tmpfiles.d configuration file (default: from pkg-config)"
+ echo " --no-systemd don't install systemd units"
+ echo " --use-gcrypt use libgcrypt (this is the default)"
+ echo " --use-nettle use libnettle instead of libgcrypt"
+ echo " --use-ssl-crypto use openssl crypto library instead of libgcrypt"
+ echo " --no-crypto disable crypto at all (only NULL cipher)"
+ echo " --disable-passphrase disable master key and salt passphrase"
+ echo " --enable-passphrase enable master key and salt passphrase"
+ echo " --disable-routing disable built-in routing capability"
+ echo " --enable-routing enable built-in routing capability"
+ echo " --cross-prefix=<PREFIX> add PREFIX to compiler calls"
+ echo " --with-boost=<PREFIX> don't use systemwide boost"
+ echo " --with-gcrypt=<PREFIX> don't use systemwide gcrypt"
+ echo " --with-nettle=<PREFIX> don't use systemwide nettle"
+ echo " --with-openssl=<PREFIX> don't use systemwide openssl"
+ echo " --use-clang use clang/llvm as compiler/linker"
}
for arg
--sbindir=*)
SBINDIR=${arg#--sbindir=}
;;
+ --libdir=*)
+ LIBDIR=${arg#--libdir=}
+ ;;
--sysconfdir=*)
ETCDIR=${arg#--sysconfdir=}
;;
--no-examples)
INSTALLEXAMPLES=0
;;
+ --systemddir=*)
+ SYSTEMDDIR=${arg#--systemddir=}
+ ;;
+ --systemdgeneratordir=*)
+ SYSTEMDGENERATORDIR=${arg#--systemdgeneratordir=}
+ ;;
+ --tmpfilesddir=*)
+ TMPFILESDDIR=${arg#--tmpfilesddir=}
+ ;;
+ --no-systemd)
+ INSTALLSYSTEMD=0
+ ;;
--use-gcrypt)
CRYPTO_LIB='gcrypt'
;;
fi
if [ $USE_CLANG -eq 0 ]; then
- CXXFLAGS='-g -Wall -O2'
- LDFLAGS='-g -Wall -O2'
+ if [ -z "$CXXFLAGS" ]; then CXXFLAGS='-g -Wall -O2'; fi
+ if [ -z "$LDFLAGS" ]; then LDFLAGS='-g -Wall -O2'; fi
COMPILER='g++'
else
- CXXFLAGS='-g -O2'
- LDFLAGS='-g -O2'
+ if [ -z "$CXXFLAGS" ]; then CXXFLAGS='-g -O2'; fi
+ if [ -z "$LDFLAGS" ]; then LDFLAGS='-g -O2'; fi
COMPILER='clang++'
fi
ln -sf posix/posixDaemon.h daemonService.h
ln -sf posix/posixDaemon.cpp daemonService.cpp
echo "loading BSD specific TUN Device"
- CXXFLAGS=$CXXFLAGS' -I/usr/local/include'
- LDFLAGS=$LDFLAGS' -L/usr/local/lib -lboost_thread -lboost_serialization -lboost_system -lboost_date_time -lpthread'
+ CPPFLAGS=$CPPFLAGS' -I/usr/local/include'
+ LDFLAGS=$LDFLAGS' -L/usr/local/lib -lboost_thread -lboost_serialization -lboost_system -lboost_date_time -lpthread'
LOG_TARGETS='-DLOG_SYSLOG -DLOG_FILE -DLOG_STDOUT'
+ INSTALLSYSTEMD=0
;;
mingw)
rm -f tunDevice.cpp
rm -f sysExec.hpp
rm -f daemonService.h daemonService.cpp
echo "loading Windows specific TUN Device"
- CXXFLAGS=$CXXFLAGS' -DMINGW -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN -DBOOST_WINDOWS -fno-strict-aliasing -DBOOST_THREAD_USE_LIB'
+ CPPFLAGS=$CPPFLAGS' -DMINGW -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN -DBOOST_WINDOWS -fno-strict-aliasing -DBOOST_THREAD_USE_LIB'
LDFLAGS=$LDFLAGS' -lboost_thread_win32 -lboost_serialization -lboost_system -lboost_date_time -lwsock32 -lws2_32'
LOG_TARGETS='-DWIN_EVENTLOG -DLOG_FILE -DLOG_STDOUT'
+ INSTALLSYSTEMD=0
;;
*)
echo "platform not supported"
;;
esac
-CXXFLAGS="$CXXFLAGS $LOG_TARGETS"
+CPPFLAGS="$CPPFLAGS $LOG_TARGETS"
if [ -n "$BOOST_PREFIX" ]; then
- CXXFLAGS="$CXXFLAGS -I\"$BOOST_PREFIX/include\""
+ CPPFLAGS="$CPPFLAGS -I\"$BOOST_PREFIX/include\""
LDFLAGS="$LDFLAGS -L\"$BOOST_PREFIX/lib\""
fi
+CRYPTO_LIB_NAME=""
case $CRYPTO_LIB in
gcrypt)
- CXXFLAGS=$CXXFLAGS' -DUSE_GCRYPT'
+ CPPFLAGS=$CPPFLAGS' -DUSE_GCRYPT'
LDFLAGS=$LDFLAGS' -lgcrypt -lgpg-error'
if [ -n "$GCRYPT_PREFIX" ]; then
- CXXFLAGS="$CXXFLAGS -I\"$GCRYPT_PREFIX/include\""
+ CPPFLAGS="$CPPFLAGS -I\"$GCRYPT_PREFIX/include\""
LDFLAGS="$LDFLAGS -L\"$GCRYPT_PREFIX/lib\""
fi
+ CRYPTO_LIB_NAME="libgcrypt"
echo "using gcrypt library"
;;
nettle)
- CXXFLAGS=$CXXFLAGS' -DUSE_NETTLE'
+ CPPFLAGS=$CPPFLAGS' -DUSE_NETTLE'
LDFLAGS=$LDFLAGS' -lnettle'
if [ -n "$NETTLE_PREFIX" ]; then
- CXXFLAGS="$CXXFLAGS -I\"$NETTLE_PREFIX/include\""
+ CPPFLAGS="$CPPFLAGS -I\"$NETTLE_PREFIX/include\""
LDFLAGS="$LDFLAGS -L\"$NETTLE_PREFIX/lib\""
fi
+ CRYPTO_LIB_NAME="Nettle"
echo "using nettle library"
;;
ssl)
- CXXFLAGS=$CXXFLAGS' -DUSE_SSL_CRYPTO'
+ CPPFLAGS=$CPPFLAGS' -DUSE_SSL_CRYPTO'
LDFLAGS=$LDFLAGS' -lcrypto'
if [ -n "$OPENSSL_PREFIX" ]; then
- CXXFLAGS="$CXXFLAGS -I\"$OPENSSL_PREFIX/include\""
+ CPPFLAGS="$CPPFLAGS -I\"$OPENSSL_PREFIX/include\""
LDFLAGS="$LDFLAGS -L\"$OPENSSL_PREFIX/lib\""
fi
+ CRYPTO_LIB_NAME="OpenSSL"
echo "using openssl crypto library"
;;
none)
- CXXFLAGS=$CXXFLAGS' -DNO_CRYPT'
+ CPPFLAGS=$CPPFLAGS' -DNO_CRYPT'
+ CRYPTO_LIB_NAME="none"
echo "disabling crypto"
;;
esac
if [ $PASSPHRASE -eq 0 ]; then
- CXXFLAGS=$CXXFLAGS' -DNO_PASSPHRASE'
+ CPPFLAGS=$CPPFLAGS' -DNO_PASSPHRASE'
echo "disabling master key and salt passphrase"
fi
if [ $ROUTING -eq 0 ]; then
- CXXFLAGS=$CXXFLAGS' -DNO_ROUTING'
+ CPPFLAGS=$CPPFLAGS' -DNO_ROUTING'
echo "disabling built-in routing capability"
fi
SBINDIR=$PREFIX/sbin
fi
+if [ -z "$LIBDIR" ]; then
+ LIBDIR=$PREFIX/lib
+fi
+
if [ -z "$ETCDIR" ]; then
ETCDIR=$PREFIX/etc
fi
EXAMPLESDIR=$PREFIX/share/examples
fi
+if [ $INSTALLSYSTEMD -eq 1 ]; then
+ if [ -z "$SYSTEMDDIR" ]; then
+ SYSTEMDDIR=`pkg-config systemd --variable=systemdsystemunitdir`
+ fi
+ if [ -z "$SYSTEMDGENERATORDIR" ]; then
+ SYSTEMDGENERATORDIR=`pkg-config systemd --variable=systemdsystemgeneratordir`
+ fi
+ if [ -z "$TMPFILESDDIR" ]; then
+ TMPFILESDDIR=`pkg-config systemd --variable=tmpfilesdir`
+ fi
+fi
+
cat > include.mk <<EOF
# this file was created automatically
# do not edit this file directly
# use ./configure instead
-TARGET = $TARGET
-CXX = ${CROSS_PREFIX}$COMPILER
-CXXFLAGS = $CXXFLAGS
-LD = ${CROSS_PREFIX}$COMPILER
-LDFLAGS = $LDFLAGS
-STRIP = ${CROSS_PREFIX}strip
-INSTALL = install
+TARGET := $TARGET
+CXX := ${CROSS_PREFIX}$COMPILER
+CPPFLAGS := $CPPFLAGS
+CXXFLAGS := $CXXFLAGS
+LD := ${CROSS_PREFIX}$COMPILER
+LDFLAGS := $LDFLAGS
+STRIP := ${CROSS_PREFIX}strip
+INSTALL := install
-PREFIX := $PREFIX
+prefix := $PREFIX
BINDIR := $BINDIR
SBINDIR := $SBINDIR
+LIBDIR := $LIBDIR
ETCDIR := $ETCDIR
EOF
echo "not installing example files"
fi
+if [ $INSTALLSYSTEMD -eq 1 ]; then
+ echo "SYSTEMDDIR := $SYSTEMDDIR" >> include.mk
+ echo "SYSTEMDGENERATORDIR := $SYSTEMDGENERATORDIR" >> include.mk
+ echo "TMPFILESDDIR := $TMPFILESDDIR" >> include.mk
+ echo "installing systemd units"
+else
+ echo "not installing systemd units"
+fi
+
VERSION=`cat ../version`
-if which svn >/dev/null; then
- SVN_REV=`svn info 2> /dev/null | grep "^Revision: " | awk '{print($2)}'`
- if [ -n "$SVN_REV" ]; then
- VERSION="$VERSION (svn$SVN_REV)"
- fi
+if which git >/dev/null; then
+ GIT_HASH=`git rev-parse HEAD 2> /dev/null`
+ if [ -n "$GIT_HASH" ]; then
+ VERSION="$VERSION (git $GIT_HASH)"
+ fi
fi
-HOSTNAME=`hostname`
-DATE=`date +"%d.%m.%Y %H:%M:%S %Z"`
cat > version.h <<EOF
/*
#ifndef ANYTUN_version_h_INCLUDED
#define ANYTUN_version_h_INCLUDED
-#define VERSION_STRING_0 " version $VERSION"
-#define VERSION_STRING_1 "built on $HOSTNAME, $DATE"
+#define VERSION_STRING " version $VERSION"
+#define CRYPTO_LIB_NAME "$CRYPTO_LIB_NAME"
#endif
-
EOF
exit 0