X-Git-Url: https://git.syn-net.org/?p=debian%2Fuanytun.git;a=blobdiff_plain;f=src%2Fconfigure;h=804455294ea231fccef15c69d93540de36d2d7d7;hp=d88e333f08dbff7eb1f381aff04b989f0fb6af68;hb=cd587a97e53c5eddf158462a6ff2271351e813e5;hpb=b81b2c1954fe3e3317e6fa260c5ffdc9eeee966c diff --git a/src/configure b/src/configure index d88e333..8044552 100755 --- a/src/configure +++ b/src/configure @@ -11,18 +11,19 @@ # 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-2008 Christian Pointner +# +# Copyright (C) 2007-2014 Christian Pointner # # This file is part of uAnytun. # # uAnytun is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 3 as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# any later version. # # uAnytun is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -32,33 +33,53 @@ # You should have received a copy of the GNU General Public License # along with uAnytun. 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 -CFLAGS='-g -O2' -LDFLAGS='-g -Wall -O2' +USE_CLANG=0 CRYPTO_LIB='gcrypt' PASSPHRASE=1 -V4_MAPPED=1 PREFIX='/usr/local' -USERNAME='uanytun' -USERHOME='/var/run/uanytun' +SBINDIR='' +ETCDIR='' +MANDIR='' +INSTALLMANPAGE=1 +EXAMPLESDIR='' +INSTALLEXAMPLES=1 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 " --username= create this user when installing (default: uanytun)" - echo " --userhome= the home directory of the user to be created (default: /var/run/uanytun)" - echo " --use-ssl-crypto use ssl crypto library instead of libgcrypt" + 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 manpage" + echo " --examplesdir= 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-v4-mapped disable V4-Mapped addresses (this means to disable" - echo " simultanious use of IPv4 and IPv6)" - echo " --enable-v4-mapped enable V4-Mapped addresses" + echo " --use-clang use clang/llvm as compiler/linker" } for arg @@ -67,117 +88,210 @@ do --target=*) TARGET=${arg#--target=} ;; + --use-clang) + USE_CLANG=1 + ;; --prefix=*) PREFIX=${arg#--prefix=} ;; - --username=*) - USERNAME=${arg#--username=} + --sbindir=*) + SBINDIR=${arg#--sbindir=} + ;; + --sysconfdir=*) + ETCDIR=${arg#--sysconfdir=} + ;; + --mandir=*) + MANDIR=${arg#--mandir=} + ;; + --no-manpage) + INSTALLMANPAGE=0 ;; - --userhome=*) - USERHOME=${arg#--userhome=} + --examplesdir=*) + EXAMPLESDIR=${arg#--examplesdir=} + ;; + --no-examples) + INSTALLEXAMPLES=0 + ;; + --use-gcrypt) + CRYPTO_LIB='gcrypt' + ;; + --use-nettle) + CRYPTO_LIB='nettle' ;; --use-ssl-crypto) CRYPTO_LIB='ssl' ;; --no-crypto) CRYPTO_LIB='none' - ;; + ;; --disable-passphrase) PASSPHRASE=0 ;; --enable-passphrase) PASSPHRASE=1 ;; - --disable-v4-mapped) - V4_MAPPED=0 - ;; - --enable-v4-mapped) - V4_MAPPED=2 - ;; + --ebuild-compat) + EBUILD_COMPAT=1 + ;; --help) print_usage exit 0 ;; *) - echo "Unknown argument: $arg" - print_usage - exit 1 + ERRORS="$ERRORS $arg" ;; esac done +if [ -n "$ERRORS" ] && [ $EBUILD_COMPAT -ne 1 ]; then + for error in $ERRORS; do + echo "Unknown argument: $error" + done + + print_usage + exit 1 +fi + +if [ $USE_CLANG -eq 0 ]; then + CFLAGS=$CFLAGS'-g -Wall -O2' + LDFLAGS=$LDFLAGS'-g -Wall -O2' + COMPILER='gcc' +else + CFLAGS=$CFLAGS'-g -O2' + LDFLAGS=$LDFLAGS'-g -O2' + COMPILER='clang' +fi + +rm -f version.h rm -f include.mk -case $TARGET in +case $TARGET in Linux) rm -f tun.c ln -sf linux/tun.c echo "loading Linux specific TUN Device" ;; - OpenBSD|FreeBSD|NetBSD) + OpenBSD|FreeBSD|NetBSD|GNU/kFreeBSD) rm -f tun.c ln -sf bsd/tun.c echo "loading BSD specific TUN Device" CFLAGS=$CFLAGS' -I/usr/local/include' LDFLAGS=$LDFLAGS' -L/usr/local/lib' - if [ $V4_MAPPED -ne 2 ]; then - V4_MAPPED=0 - fi ;; *) - echo "Plattform not supported" + echo "platform not supported" exit 1; ;; esac - +CRYPTO_LIB_NAME="" case $CRYPTO_LIB in gcrypt) + CFLAGS=$CFLAGS' -DUSE_GCRYPT' LDFLAGS=$LDFLAGS' -lgcrypt' - echo "using libgcrypt library" + CRYPTO_LIB_NAME="libgcrypt" + ;; + nettle) + CFLAGS=$CFLAGS' -DUSE_NETTLE' + LDFLAGS=$LDFLAGS' -lnettle' + CRYPTO_LIB_NAME="Nettle" ;; ssl) CFLAGS=$CFLAGS' -DUSE_SSL_CRYPTO' LDFLAGS=$LDFLAGS' -lcrypto' - echo "using ssl crypto library" + CRYPTO_LIB_NAME="OpenSSL" ;; none) CFLAGS=$CFLAGS' -DNO_CRYPT' - echo "NO_CRYPT_OBJ = 1" >> include.mk - echo "disabling crypto" + CRYPTO_LIB_NAME="none" + ;; + *) + echo "unknown crypto library: $$CRYPTO_LIB" + exit 1 ;; esac +echo "crypto-library: $CRYPTO_LIB_NAME" if [ $PASSPHRASE -eq 0 ]; then CFLAGS=$CFLAGS' -DNO_PASSPHRASE' echo "disabling master key and salt passphrase" fi -if [ $V4_MAPPED -eq 0 ]; then - CFLAGS=$CFLAGS' -DNO_V4MAPPED' - echo "WARNING: disabling V4 mapped addresses, this prevents uanytun from using IPv6 and IPv4 Sockets at the same time" +if [ -z "$SBINDIR" ]; then + SBINDIR=$PREFIX/sbin fi -if [ "x$PREFIX" = "x/usr" ]; then - ETCDIR=/etc -else - ETCDIR=$PREFIX/etc +if [ -z "$ETCDIR" ]; then + ETCDIR=$PREFIX/etc +fi + +if [ -z "$MANDIR" ]; then + MANDIR=$PREFIX/share/man +fi + +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" +else + echo "not installing manpage" +fi + +if [ $INSTALLEXAMPLES -eq 1 ]; then + echo "EXAMPLESDIR := $EXAMPLESDIR" >> include.mk + echo "installing example files" +else + echo "not installing example files" +fi + +VERSION=`cat ../version` +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 + +cat > version.h <