X-Git-Url: https://git.syn-net.org/debian/?a=blobdiff_plain;f=src%2FMakefile;h=b2f16462800554fbf179aa067588e70f1a39b31a;hb=65944fb7a518dc659bacaf80cf235a0352fc6a7e;hp=4f75c70ef0c8a15e2306d86a332295268d234901;hpb=058ae090a970436caec3b3059e9e18b310dd6b0d;p=anytun.git diff --git a/src/Makefile b/src/Makefile index 4f75c70..b2f1646 100644 --- a/src/Makefile +++ b/src/Makefile @@ -6,19 +6,20 @@ ## 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 Othmar Gsenger, Erwin Nindl, +## Copyright (C) 2007-2014 Markus Grüneis, Othmar Gsenger, Erwin Nindl, ## Christian Pointner ## ## This file is part of Anytun. ## ## Anytun 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. ## ## Anytun is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -26,129 +27,187 @@ ## 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. ## ifneq ($(MAKECMDGOALS),distclean) include include.mk endif -OBJS := tunDevice.o \ - packetSource.o \ - buffer.o \ - syncBuffer.o \ - plainPacket.o \ - encryptedPacket.o \ - cipher.o \ - authAlgo.o \ - keyDerivation.o \ - cipherFactory.o \ - authAlgoFactory.o \ - keyDerivationFactory.o \ - connectionList.o \ - connectionParam.o \ - networkAddress.o \ - networkPrefix.o \ - routingTable.o \ - signalController.o \ - log.o \ - logTargets.o \ - anytunError.o \ - options.o \ - seqWindow.o \ - routingTreeNode.o \ - resolver.o +ANYTUNOBJS := packetSource.o \ + authAlgo.o \ + authAlgoFactory.o \ + cipher.o \ + cipherFactory.o \ + plainPacket.o \ + encryptedPacket.o \ + options.o \ + signalController.o \ + sysExec.o \ + resolver.o \ + buffer.o \ + syncBuffer.o \ + keyDerivation.o \ + keyDerivationFactory.o \ + connectionList.o \ + connectionParam.o \ + networkAddress.o \ + networkPrefix.o \ + routingTable.o \ + routingTreeNode.o \ + log.o \ + logTargets.o \ + anytunError.o \ + seqWindow.o + +ifneq ($(TARGET),mingw) +ANYTUNOBJS := $(ANYTUNOBJS) \ + tunDevice.o \ + daemonService.o +else +ANYTUNOBJS := $(ANYTUNOBJS) \ + win32/tunDevice.o \ + nullDaemon.o \ + win32/winService.o \ + win32/registryKey.o +endif + + +ANYSHOWOBJS := buffer.o \ + syncBuffer.o \ + keyDerivation.o \ + keyDerivationFactory.o \ + connectionList.o \ + connectionParam.o \ + networkAddress.o \ + networkPrefix.o \ + routingTable.o \ + routingTreeNode.o \ + log.o \ + logTargets.o \ + anytunError.o \ + seqWindow.o \ + nullOptions.o \ + resolver.o + SYNCOBJS := syncServer.o \ - syncClient.o \ - syncQueue.o \ - syncCommand.o \ - syncRouteCommand.o \ - syncConnectionCommand.o \ - syncTcpConnection.o + syncClient.o \ + syncQueue.o \ + syncCommand.o \ + syncRouteCommand.o \ + syncConnectionCommand.o \ + syncTcpConnection.o + ANYCTROBJS := signalController.o \ - anyCtrOptions.o \ - buffer.o \ - log.o \ - logTargets.o \ - anytunError.o \ - syncTcpConnection.o \ - syncServer.o \ - resolver.o + anyCtrOptions.o \ + buffer.o \ + log.o \ + logTargets.o \ + anytunError.o \ + syncTcpConnection.o \ + syncServer.o \ + resolver.o + +ifneq ($(TARGET),mingw) +ANYCTROBJS := $(ANYCTROBJS) \ + daemonService.o +else +ANYCTROBJS := $(ANYCTROBJS) \ + nullDaemon.o +endif + ANYCONFOBJS := log.o \ - logTargets.o \ - anytunError.o \ - buffer.o \ - keyDerivation.o \ - keyDerivationFactory.o \ - networkAddress.o \ - networkPrefix.o \ - connectionList.o \ - connectionParam.o \ - routingTreeNode.o \ - anyConfOptions.o \ - routingTable.o \ - seqWindow.o \ - syncQueue.o \ - syncBuffer.o \ - syncCommand.o \ - syncServer.o \ - syncTcpConnection.o \ - syncRouteCommand.o \ - syncConnectionCommand.o \ - resolver.o - -EXECUTABLE := anytun anytun-config anytun-controld anytun-showtables anytun-nosync + logTargets.o \ + anytunError.o \ + buffer.o \ + keyDerivation.o \ + keyDerivationFactory.o \ + networkAddress.o \ + networkPrefix.o \ + connectionList.o \ + connectionParam.o \ + routingTreeNode.o \ + anyConfOptions.o \ + routingTable.o \ + seqWindow.o \ + syncQueue.o \ + syncBuffer.o \ + syncCommand.o \ + syncServer.o \ + syncTcpConnection.o \ + syncRouteCommand.o \ + syncConnectionCommand.o \ + resolver.o + +ifneq ($(TARGET),mingw) + EXE := +else + EXE := .exe +endif + +EXECUTABLES := anytun$(EXE) anytun-config$(EXE) anytun-controld$(EXE) anytun-showtables$(EXE) anytun-nosync$(EXE) EXEOBJS := anytun.o anytun-config.o anytun-controld.o anytun-showtables.o -SRCS := $(OBJS:%.o=%.cpp) +ANYTUNSRCS := $(ANYTUNOBJS:%.o=%.cpp) +ANYSHOWSRCS := $(ANYSHOWOBJS:%.o=%.cpp) SYNCSRCS := $(SYNCOBJS:%.o=%.cpp) ANYCTRSRCS := $(ANYCTROBJS:%.o=%.cpp) ANYCONFSRCS := $(ANYCONFOBJS:%.o=%.cpp) EXESRCS := $(EXEOBJS:%.o=%.cpp) -.PHONY: distclean cleanall clean ctags +.PHONY: distclean cleanall clean manpage install install-bin install-etc install-man uninstall remove purge -all: $(EXECUTABLE) #libAnysync.a +all: $(EXECUTABLES) #libAnysync.a %.d: %.cpp - @set -e; rm -f $@; \ - $(CXX) -MM $(CXXFLAGS) $< > $@.$$$$; \ - sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ + @set -e; rm -f $@; \ + $(CXX) -MM $(CXXFLAGS) $< > $@.$$$$; \ + sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ rm -f $@.$$$$; echo '(re)building $@' ifneq ($(MAKECMDGOALS),distclean) --include $(SRCS:%.cpp=%.d) $(SYNCSRCS:%.cpp=%.d) $(ANYCTRSRCS:%.cpp=%.d) $(ANYCONFSRCS:%.cpp=%.d) $(EXESRCS:%.cpp=%.d) +-include $(ANYTUNSRCS:%.cpp=%.d) $(ANYSHOWSRCS:%.cpp=%.d) $(SYNCSRCS:%.cpp=%.d) $(ANYCTRSRCS:%.cpp=%.d) $(ANYCONFSRCS:%.cpp=%.d) $(EXESRCS:%.cpp=%.d) endif -strip: $(EXECUTABLE) - strip -s $(EXECUTABLE) +strip: $(EXECUTABLES) + $(STRIP) -s $(EXECUTABLES) -anytun: $(OBJS) $(SYNCOBJS) anytun.o - $(LD) $(OBJS) $(SYNCOBJS) anytun.o -o $@ $(LDFLAGS) +anytun$(EXE): $(ANYTUNOBJS) $(SYNCOBJS) anytun.o + $(LD) $(ANYTUNOBJS) $(SYNCOBJS) anytun.o -o $@ $(LDFLAGS) -anytun-static: $(OBJS) $(SYNCOBJS) anytun-noprivdrop.o - $(LD) $(OBJS) $(SYNCOBJS) anytun-noprivdrop.o -o $@ -Bstatic -lstdc++ -static $(LDFLAGS) -lpthread - strip -s anytun-static +anytun-static: $(ANYTUNOBJS) $(SYNCOBJS) anytun-noprivdrop.o + $(LD) $(ANYTUNOBJS) $(SYNCOBJS) anytun-noprivdrop.o -o $@ -Bstatic -lstdc++ -static $(LDFLAGS) -lpthread + $(STRIP) -s anytun-static -anytun-nosync: $(OBJS) anytun-nosync.o - $(LD) $(OBJS) anytun-nosync.o -o $@ $(LDFLAGS) +anytun-nosync$(EXE): $(ANYTUNOBJS) anytun-nosync.o + $(LD) $(ANYTUNOBJS) anytun-nosync.o -o $@ $(LDFLAGS) anytun-nosync.o: anytun.cpp $(CXX) $(CXXFLAGS) -DANYTUN_NOSYNC $< -c -o anytun-nosync.o -anytun-noprivdrop.o: anytun.cpp - $(CXX) $(CXXFLAGS) -DNO_PRIVDROP $< -c -o anytun-noprivdrop.o - -anytun-showtables: $(OBJS) $(SYNCOBJS) anytun-showtables.o - $(LD) $(OBJS) $(SYNCOBJS) anytun-showtables.o -o $@ $(LDFLAGS) +anytun-showtables$(EXE): $(ANYSHOWOBJS) $(SYNCOBJS) anytun-showtables.o + $(LD) $(ANYSHOWOBJS) $(SYNCOBJS) anytun-showtables.o -o $@ $(LDFLAGS) -anytun-config: $(ANYCONFOBJS) anytun-config.o +anytun-config$(EXE): $(ANYCONFOBJS) anytun-config.o $(LD) $(ANYCONFOBJS) anytun-config.o -o $@ $(LDFLAGS) -anytun-controld: $(ANYCTROBJS) anytun-controld.o +anytun-controld$(EXE): $(ANYCTROBJS) anytun-controld.o $(LD) $(ANYCTROBJS) anytun-controld.o -o $@ $(LDFLAGS) @@ -161,8 +220,11 @@ anyCtrOptions.o: options.cpp anyConfOptions.o: options.cpp $(CXX) $(CXXFLAGS) -DANYCONF_OPTIONS $< -c -o $@ +nullOptions.o: options.cpp + $(CXX) $(CXXFLAGS) $< -c -o $@ + %.o: %.cpp - $(CXX) $(CXXFLAGS) $< -c + $(CXX) $(CXXFLAGS) $< -c -o $@ libAnysync.a: $(OBJS) @@ -176,17 +238,26 @@ anyrtpproxy: anytun distclean: cleanall find . -name *.o -exec rm -f {} \; rm -f config.sub config.guess + rm -f daemonService.h + rm -f daemonService.cpp + rm -f signalHandler.hpp + rm -f sysExec.hpp + rm -f version.h rm -f tunDevice.cpp rm -f include.mk cleanall: clean - $(MAKE) --directory=$(CURDIR)/man clean + $(MAKE) --directory="../doc" clean clean: rm -f *.o rm -f *.d rm -f *.d.* - rm -f $(EXECUTABLE) + rm -f win32/*.o + rm -f win32/*.d + rm -f win32/*.d.* + rm -f $(EXECUTABLES) + rm -f *.exe rm -f anytun-nosync rm -f -r doc/html/* rm -f -r doc/latex/* @@ -194,5 +265,100 @@ clean: $(MAKE) --directory=$(CURDIR)/anyrtpproxy clean manpage: - @cd man ; $(MAKE) + $(MAKE) --directory="../doc" manpage + + +INSTALL_TARGETS := install-bin install-etc +REMOVE_TARGETS := remove-bin remove-etc + +ifdef MANDIR +INSTALL_TARGETS += install-man +REMOVE_TARGETS += remove-man +endif + +ifdef EXAMPLESDIR +INSTALL_TARGETS += install-examples +REMOVE_TARGETS += remove-examples +endif +install: all $(INSTALL_TARGETS) + +install-bin: $(EXECUTABLES) + $(INSTALL) -d $(DESTDIR)$(SBINDIR) + $(INSTALL) -m 755 anytun $(DESTDIR)$(SBINDIR) + $(INSTALL) -d $(DESTDIR)$(BINDIR) + $(INSTALL) -m 755 anytun-config $(DESTDIR)$(BINDIR) + $(INSTALL) -m 755 anytun-controld $(DESTDIR)$(BINDIR) + $(INSTALL) -m 755 anytun-showtables $(DESTDIR)$(BINDIR) + +install-etc: + $(INSTALL) -d $(DESTDIR)$(ETCDIR)/anytun + @ echo "example configurations can be found at $(EXAMPLESDIR)/anytun" > $(DESTDIR)$(ETCDIR)/anytun/README + $(INSTALL) -d $(DESTDIR)$(ETCDIR)/init.d + @ sed -e 's#DAEMON=/usr/sbin/anytun#DAEMON=$(SBINDIR)/anytun#' \ + -e 's#ANYTUNCONFIG=/usr/bin/anytun-config#ANYTUNCONFIG=$(BINDIR)/anytun-config#' \ + -e 's#CONTROLDAEMON=/usr/bin/anytun-controld#CONTROLDAEMON=$(BINDIR)/anytun-controld#' \ + -e 's#CONFIG_DIR=/etc/anytun#CONFIG_DIR=$(ETCDIR)/anytun#' ../etc/init.d/anytun > ../etc/init.d/anytun.bak + $(INSTALL) -m 755 ../etc/init.d/anytun.bak $(DESTDIR)$(ETCDIR)/init.d/anytun + rm -f ../etc/init.d/anytun.bak + +install-examples: + $(INSTALL) -d $(DESTDIR)$(EXAMPLESDIR)/anytun + $(INSTALL) -m 644 ../etc/anytun/autostart $(DESTDIR)$(EXAMPLESDIR)/anytun/autostart + @( cd '../etc/anytun/' ; \ + for dir in `ls`; do \ + if [ -d $$dir ]; then \ + echo "install $$dir configuration" ; \ + cd $$dir ; \ + $(INSTALL) -d $(DESTDIR)$(EXAMPLESDIR)/anytun/$$dir ; \ + $(INSTALL) -m 600 config $(DESTDIR)$(EXAMPLESDIR)/anytun/$$dir/config ; \ + if [ -e 'post-up.sh' ]; then \ + $(INSTALL) -m 755 post-up.sh $(DESTDIR)$(EXAMPLESDIR)/anytun/$$dir/post-up.sh ; \ + fi ; \ + if [ -d 'conf.d' ]; then \ + $(INSTALL) -d $(DESTDIR)$(EXAMPLESDIR)/anytun/$$dir/conf.d ; \ + cd conf.d ; \ + for file in `ls`; do \ + if [ -f $$file ]; then \ + $(INSTALL) -m 600 $$file $(DESTDIR)$(EXAMPLESDIR)/anytun/$$dir/conf.d ; \ + fi ; \ + done ; \ + cd .. ; \ + fi ; \ + cd .. ; \ + fi ; \ + done \ + ) + +install-man: manpage + $(INSTALL) -d $(DESTDIR)$(MANDIR)/man8/ + $(INSTALL) -m 644 ../doc/anytun.8 $(DESTDIR)$(MANDIR)/man8/ + $(INSTALL) -m 644 ../doc/anytun-config.8 $(DESTDIR)$(MANDIR)/man8/ + $(INSTALL) -m 644 ../doc/anytun-controld.8 $(DESTDIR)$(MANDIR)/man8/ + $(INSTALL) -m 644 ../doc/anytun-showtables.8 $(DESTDIR)$(MANDIR)/man8/ + +uninstall: remove + + +remove: $(REMOVE_TARGETS) + +remove-bin: + rm -f $(DESTDIR)$(SBINDIR)/anytun + rm -f $(DESTDIR)$(BINDIR)/anytun-config + rm -f $(DESTDIR)$(BINDIR)/anytun-controld + rm -f $(DESTDIR)$(BINDIR)/anytun-showtables + +remove-etc: + rm -f $(DESTDIR)$(ETCDIR)/init.d/anytun + +remove-examples: + rm -rf $(DESTDIR)$(EXAMPLESDIR)/anytun/ + +remove-man: + rm -f $(DESTDIR)$(MANDIR)/man8/anytun.8 + rm -f $(DESTDIR)$(MANDIR)/man8/anytun-config.8 + rm -f $(DESTDIR)$(MANDIR)/man8/anytun-controld.8 + rm -f $(DESTDIR)$(MANDIR)/man8/anytun-showtables.8 + +purge: remove + rm -rf $(DESTDIR)$(ETCDIR)/anytun/