X-Git-Url: https://git.syn-net.org/debian/?a=blobdiff_plain;f=src%2FMakefile;h=34863b845e1fe84aea976450e9afb28db3750af0;hb=bd02a5f6be4815d46524d613f727199ca756c971;hp=4f75c70ef0c8a15e2306d86a332295268d234901;hpb=058ae090a970436caec3b3059e9e18b310dd6b0d;p=anytun.git diff --git a/src/Makefile b/src/Makefile index 4f75c70..34863b8 100644 --- a/src/Makefile +++ b/src/Makefile @@ -11,14 +11,15 @@ ## tunneling and relaying of packets of any protocol. ## ## -## Copyright (C) 2007-2008 Othmar Gsenger, Erwin Nindl, +## Copyright (C) 2007-2009 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 @@ -33,117 +34,136 @@ 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 := tunDevice.o \ + packetSource.o \ + authAlgo.o \ + authAlgoFactory.o \ + cipher.o \ + cipherFactory.o \ + plainPacket.o \ + encryptedPacket.o \ + options.o \ + signalController.o \ + daemonService.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 + +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 + daemonService.o \ + anyCtrOptions.o \ + buffer.o \ + log.o \ + logTargets.o \ + anytunError.o \ + syncTcpConnection.o \ + syncServer.o \ + resolver.o 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 + +EXECUTABLES := anytun anytun-config anytun-controld anytun-showtables anytun-nosync 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: $(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: $(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: $(ANYSHOWOBJS) $(SYNCOBJS) anytun-showtables.o + $(LD) $(ANYSHOWOBJS) $(SYNCOBJS) anytun-showtables.o -o $@ $(LDFLAGS) anytun-config: $(ANYCONFOBJS) anytun-config.o $(LD) $(ANYCONFOBJS) anytun-config.o -o $@ $(LDFLAGS) @@ -161,6 +181,9 @@ 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 @@ -176,17 +199,22 @@ 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 $(EXECUTABLES) rm -f anytun-nosync rm -f -r doc/html/* rm -f -r doc/latex/* @@ -194,5 +222,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/