## 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 <satp@wirdorange.org>
##
## 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
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)
anyConfOptions.o: options.cpp
$(CXX) $(CXXFLAGS) -DANYCONF_OPTIONS $< -c -o $@
+nullOptions.o: options.cpp
+ $(CXX) $(CXXFLAGS) $< -c -o $@
+
%.o: %.cpp
$(CXX) $(CXXFLAGS) $< -c
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/*
$(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/