X-Git-Url: https://git.syn-net.org/debian/?a=blobdiff_plain;f=src%2Fconfigure;h=a1ac576d268013c18e2a7ff67b1c9479b03c0e9f;hb=326bc57905738d0bd416ce3d0d7cc79b14ef7a4a;hp=bcadb9944a33d8864008bd4b54fbc8ad41542c8b;hpb=ece844834d2cecc028ce81ca283f5d441088580e;p=anytun.git diff --git a/src/configure b/src/configure index bcadb99..a1ac576 100755 --- a/src/configure +++ b/src/configure @@ -7,12 +7,12 @@ # tunnel endpoints. It has less protocol overhead than IPSec in Tunnel # mode and allows tunneling of every ETHER TYPE protocol (e.g. # ethernet, ip, arp ...). satp directly includes cryptography and -# message authentication based on the methodes used by SRTP. It is +# message authentication based on the methods used by SRTP. It is # intended to deliver a generic, scaleable and secure solution for # tunneling and relaying of packets of any protocol. # # -# Copyright (C) 2007-2009 Othmar Gsenger, Erwin Nindl, +# Copyright (C) 2007-2014 Markus Grüneis, Othmar Gsenger, Erwin Nindl, # Christian Pointner # # This file is part of Anytun. @@ -28,15 +28,29 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with anytun. If not, see . +# along with Anytun. If not, see . +# +# In addition, as a special exception, the copyright holders give +# permission to link the code of portions of this program with the +# OpenSSL library under certain conditions as described in each +# individual source file, and distribute linked combinations +# including the two. +# You must obey the GNU General Public License in all respects +# for all of the code used other than OpenSSL. If you modify +# file(s) with this exception, you may extend this exception to your +# version of the file(s), but you are not obligated to do so. If you +# do not wish to do so, delete this exception statement from your +# version. If you delete this exception statement from all source +# files in the program, then also delete it here. # TARGET=`uname -s` EBUILD_COMPAT=0 -CXXFLAGS='-g -Wall -O2 -DLOG_SYSLOG -DLOG_FILE -DLOG_STDOUT' -LDFLAGS='-g -Wall -O2 -lboost_thread -lboost_serialization -lboost_system -lboost_date_time' +CROSS_PREFIX='' + +USE_CLANG=0 CRYPTO_LIB='gcrypt' PASSPHRASE=1 @@ -45,29 +59,52 @@ ROUTING=1 PREFIX='/usr/local' BINDIR='' SBINDIR='' +LIBDIR='' ETCDIR='' MANDIR='' INSTALLMANPAGE=1 EXAMPLESDIR='' INSTALLEXAMPLES=1 +SYSTEMDDIR='' +SYSTEMDGENERATORDIR='' +TMPFILESDDIR='' +INSTALLSYSTEMD=1 + +BOOST_PREFIX='' +GCRYPT_PREFIX='' +NETTLE_PREFIX='' +OPENSSL_PREFIX='' print_usage() { - echo "configure --help print this" - echo " --target= build target i.e. Linux (default: autodetect)" - echo " --prefix= the installation prefix (default: /usr/local)" - echo " --bindir= the path to the bin directory (default: $PREFIX/bin)" - echo " --sbindir= the path to the sbin directory (default: $PREFIX/sbin)" - echo " --sysconfdir= the path to the system configuration directory (default: $PREFIX/etc" - echo " --mandir= the path to the system man pages (default: $PREFIX/share/man)" - echo " --no-manpage dont't install manpages" - echo " --examplesdir= the path to the examples files (default: $PREFIX/share/examples)" - echo " --no-examples dont't install example files" - echo " --use-ssl-crypto use ssl 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 "configure --help print this" + echo " --target= build target i.e. Linux (default: autodetect)" + echo " --prefix= the installation prefix (default: /usr/local)" + echo " --bindir= the path to the bin directory (default: $PREFIX/bin)" + echo " --sbindir= the path to the sbin directory (default: $PREFIX/sbin)" + echo " --libdir= the path to the lib directory (default: $PREFIX/lib)" + echo " --sysconfdir= the path to the system configuration directory (default: $PREFIX/etc" + echo " --mandir= the path to the system man pages (default: $PREFIX/share/man)" + echo " --no-manpage don't install manpages" + echo " --examplesdir= the path to the examples files (default: $PREFIX/share/examples)" + echo " --no-examples don't install example files" + echo " --systemddir= the path to the systemd service unit directory (default: from pkg-config)" + echo " --systemdgeneratordir= the path to the systemd generator directory (default: from pkg-config)" + echo " --tmpfilesddir= 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= add PREFIX to compiler calls" + echo " --with-boost= don't use systemwide boost" + echo " --with-gcrypt= don't use systemwide gcrypt" + echo " --with-nettle= don't use systemwide nettle" + echo " --with-openssl= don't use systemwide openssl" + echo " --use-clang use clang/llvm as compiler/linker" } for arg @@ -76,6 +113,9 @@ do --target=*) TARGET=${arg#--target=} ;; + --use-clang) + USE_CLANG=1 + ;; --prefix=*) PREFIX=${arg#--prefix=} ;; @@ -85,6 +125,9 @@ do --sbindir=*) SBINDIR=${arg#--sbindir=} ;; + --libdir=*) + LIBDIR=${arg#--libdir=} + ;; --sysconfdir=*) ETCDIR=${arg#--sysconfdir=} ;; @@ -100,12 +143,30 @@ do --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' + ;; + --use-nettle) + CRYPTO_LIB='nettle' + ;; --use-ssl-crypto) CRYPTO_LIB='ssl' ;; --no-crypto) CRYPTO_LIB='none' - ;; + ;; --enable-passphrase) PASSPHRASE=1 ;; @@ -121,6 +182,21 @@ do --ebuild-compat) EBUILD_COMPAT=1 ;; + --cross-prefix=*) + CROSS_PREFIX=${arg#--cross-prefix=} + ;; + --with-boost=*) + BOOST_PREFIX=${arg#--with-boost=} + ;; + --with-gcrypt=*) + GCRYPT_PREFIX=${arg#--with-gcrypt=} + ;; + --with-nettle=*) + NETTLE_PREFIX=${arg#--with-nettle=} + ;; + --with-openssl=*) + OPENSSL_PREFIX=${arg#--with-openssl=} + ;; --help) print_usage exit 0 @@ -140,12 +216,22 @@ if [ -n "$ERRORS" ] && [ $EBUILD_COMPAT -ne 1 ]; then exit 1 fi +if [ $USE_CLANG -eq 0 ]; then + if [ -z "$CXXFLAGS" ]; then CXXFLAGS='-g -Wall -O2'; fi + if [ -z "$LDFLAGS" ]; then LDFLAGS='-g -Wall -O2'; fi + COMPILER='g++' +else + if [ -z "$CXXFLAGS" ]; then CXXFLAGS='-g -O2'; fi + if [ -z "$LDFLAGS" ]; then LDFLAGS='-g -O2'; fi + COMPILER='clang++' +fi rm -f include.mk -case $TARGET in +rm -f version.h +case $TARGET in Linux) rm -f tunDevice.cpp - ln -sf linux/tunDevice.cpp + ln -sf linux/tunDevice.cpp rm -f signalHandler.hpp ln -sf posix/signalHandler.hpp rm -f sysExec.hpp @@ -154,10 +240,12 @@ case $TARGET in ln -sf posix/posixDaemon.h daemonService.h ln -sf posix/posixDaemon.cpp daemonService.cpp echo "loading Linux specific TUN Device" + LDFLAGS=$LDFLAGS' -lboost_thread -lboost_serialization -lboost_system -lboost_date_time -lpthread' + LOG_TARGETS='-DLOG_SYSLOG -DLOG_FILE -DLOG_STDOUT' ;; OpenBSD|FreeBSD|NetBSD|GNU/kFreeBSD) rm -f tunDevice.cpp - ln -sf bsd/tunDevice.cpp + ln -sf bsd/tunDevice.cpp rm -f signalHandler.hpp ln -sf posix/signalHandler.hpp rm -f sysExec.hpp @@ -166,8 +254,21 @@ case $TARGET in 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' + 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 signalHandler.hpp + rm -f sysExec.hpp + rm -f daemonService.h daemonService.cpp + echo "loading Windows specific TUN Device" + 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" @@ -175,30 +276,59 @@ case $TARGET in ;; esac +CPPFLAGS="$CPPFLAGS $LOG_TARGETS" + +if [ -n "$BOOST_PREFIX" ]; then + CPPFLAGS="$CPPFLAGS -I\"$BOOST_PREFIX/include\"" + LDFLAGS="$LDFLAGS -L\"$BOOST_PREFIX/lib\"" +fi + +CRYPTO_LIB_NAME="" case $CRYPTO_LIB in gcrypt) + CPPFLAGS=$CPPFLAGS' -DUSE_GCRYPT' LDFLAGS=$LDFLAGS' -lgcrypt -lgpg-error' - echo "using libgcrypt library" + if [ -n "$GCRYPT_PREFIX" ]; then + CPPFLAGS="$CPPFLAGS -I\"$GCRYPT_PREFIX/include\"" + LDFLAGS="$LDFLAGS -L\"$GCRYPT_PREFIX/lib\"" + fi + CRYPTO_LIB_NAME="libgcrypt" + echo "using gcrypt library" + ;; + nettle) + CPPFLAGS=$CPPFLAGS' -DUSE_NETTLE' + LDFLAGS=$LDFLAGS' -lnettle' + if [ -n "$NETTLE_PREFIX" ]; then + 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' - echo "using ssl crypto library" + if [ -n "$OPENSSL_PREFIX" ]; then + 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' - echo "NO_CRYPT_OBJ = 1" >> include.mk + 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 @@ -210,6 +340,10 @@ if [ -z "$SBINDIR" ]; then SBINDIR=$PREFIX/sbin fi +if [ -z "$LIBDIR" ]; then + LIBDIR=$PREFIX/lib +fi + if [ -z "$ETCDIR" ]; then ETCDIR=$PREFIX/etc fi @@ -222,25 +356,43 @@ if [ -z "$EXAMPLESDIR" ]; then EXAMPLESDIR=$PREFIX/share/examples fi -cat >> include.mk < include.mk <> include.mk +fi + if [ $INSTALLMANPAGE -eq 1 ]; then echo "MANDIR := $MANDIR" >> include.mk echo "installing manpage" @@ -255,18 +407,25 @@ else 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 | 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 < version.h <> version.h <