# 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 <satp@wirdorange.org>
#
# This file is part of Anytun.
# 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 <http://www.gnu.org/licenses/>.
+# along with Anytun. If not, see <http://www.gnu.org/licenses/>.
+#
+# 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 -lpthread'
+CROSS_PREFIX=''
+
+USE_CLANG=0
CRYPTO_LIB='gcrypt'
PASSPHRASE=1
EXAMPLESDIR=''
INSTALLEXAMPLES=1
+BOOST_PREFIX=''
+GCRYPT_PREFIX=''
+NETTLE_PREFIX=''
+OPENSSL_PREFIX=''
+
print_usage() {
echo "configure --help print this"
echo " --target=<TARGET> build target i.e. Linux (default: autodetect)"
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-ssl-crypto use ssl crypto library instead of libgcrypt"
+ 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
--target=*)
TARGET=${arg#--target=}
;;
+ --use-clang)
+ USE_CLANG=1
+ ;;
--prefix=*)
PREFIX=${arg#--prefix=}
;;
--no-examples)
INSTALLEXAMPLES=0
;;
+ --use-gcrypt)
+ CRYPTO_LIB='gcrypt'
+ ;;
+ --use-nettle)
+ CRYPTO_LIB='nettle'
+ ;;
--use-ssl-crypto)
CRYPTO_LIB='ssl'
;;
--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
exit 1
fi
+if [ $USE_CLANG -eq 0 ]; then
+ CXXFLAGS='-g -Wall -O2'
+ LDFLAGS='-g -Wall -O2'
+ COMPILER='g++'
+else
+ CXXFLAGS='-g -O2'
+ LDFLAGS='-g -O2'
+ COMPILER='clang++'
+fi
rm -f include.mk
rm -f version.h
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 posix/posixDaemon.cpp daemonService.cpp
echo "loading BSD specific TUN Device"
CXXFLAGS=$CXXFLAGS' -I/usr/local/include'
- LDFLAGS=$LDFLAGS' -L/usr/local/lib'
+ LDFLAGS=$LDFLAGS' -L/usr/local/lib -lboost_thread -lboost_serialization -lboost_system -lboost_date_time -lpthread'
+ LOG_TARGETS='-DLOG_SYSLOG -DLOG_FILE -DLOG_STDOUT'
+ ;;
+ 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"
+ CXXFLAGS=$CXXFLAGS' -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'
;;
*)
echo "platform not supported"
;;
esac
+CXXFLAGS="$CXXFLAGS $LOG_TARGETS"
+
+if [ -n "$BOOST_PREFIX" ]; then
+ CXXFLAGS="$CXXFLAGS -I\"$BOOST_PREFIX/include\""
+ LDFLAGS="$LDFLAGS -L\"$BOOST_PREFIX/lib\""
+fi
+
case $CRYPTO_LIB in
gcrypt)
+ CXXFLAGS=$CXXFLAGS' -DUSE_GCRYPT'
LDFLAGS=$LDFLAGS' -lgcrypt -lgpg-error'
- echo "using libgcrypt library"
+ if [ -n "$GCRYPT_PREFIX" ]; then
+ CXXFLAGS="$CXXFLAGS -I\"$GCRYPT_PREFIX/include\""
+ LDFLAGS="$LDFLAGS -L\"$GCRYPT_PREFIX/lib\""
+ fi
+ echo "using gcrypt library"
+ ;;
+ nettle)
+ CXXFLAGS=$CXXFLAGS' -DUSE_NETTLE'
+ LDFLAGS=$LDFLAGS' -lnettle'
+ if [ -n "$NETTLE_PREFIX" ]; then
+ CXXFLAGS="$CXXFLAGS -I\"$NETTLE_PREFIX/include\""
+ LDFLAGS="$LDFLAGS -L\"$NETTLE_PREFIX/lib\""
+ fi
+ echo "using nettle library"
;;
ssl)
CXXFLAGS=$CXXFLAGS' -DUSE_SSL_CRYPTO'
LDFLAGS=$LDFLAGS' -lcrypto'
- echo "using ssl crypto library"
+ if [ -n "$OPENSSL_PREFIX" ]; then
+ CXXFLAGS="$CXXFLAGS -I\"$OPENSSL_PREFIX/include\""
+ LDFLAGS="$LDFLAGS -L\"$OPENSSL_PREFIX/lib\""
+ fi
+ echo "using openssl crypto library"
;;
none)
CXXFLAGS=$CXXFLAGS' -DNO_CRYPT'
# use ./configure instead
TARGET = $TARGET
-CXX = g++
+CXX = ${CROSS_PREFIX}$COMPILER
CXXFLAGS = $CXXFLAGS
-LD = g++
+LD = ${CROSS_PREFIX}$COMPILER
LDFLAGS = $LDFLAGS
-STRIP = strip
+STRIP = ${CROSS_PREFIX}strip
INSTALL = install
PREFIX := $PREFIX