Imported Upstream version 0.3.2
[debian/uanytun.git] / src / Makefile
index 358c612..4124575 100644 (file)
@@ -20,8 +20,9 @@
 ##  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
@@ -39,18 +40,19 @@ endif
 EXECUTABLE := uanytun
 
 CRYPT_OBJ := key_derivation.o \
-            auth_algo.o
+             auth_algo.o
 OBJ := log.o \
-      string_list.o \
-      sig_handler.o \
-      options.o \
-      tun.o \
-      udp.o \
-      plain_packet.o \
-      encrypted_packet.o \
-      seq_window.o \
-      cipher.o \
-      uanytun.o
+       string_list.o \
+       sig_handler.o \
+       sysexec.o \
+       options.o \
+       tun.o \
+       udp.o \
+       plain_packet.o \
+       encrypted_packet.o \
+       seq_window.o \
+       cipher.o \
+       uanytun.o
 
 
 ifndef NO_CRYPT_OBJ
@@ -59,28 +61,31 @@ endif
 
 SRC := $(OBJ:%.o=%.c)
 
-.PHONY: clean distclean manpage install install-bin install-etc install-man remove purge
+.PHONY: clean cleanall distclean manpage install install-bin install-etc install-man uninstall remove purge
 
 all: $(EXECUTABLE)
 
 %.d: %.c
        @set -e; rm -f $@; \
-        $(CC) -MM $(CFLAGS) $< > $@.$$$$; \
-   sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
-   rm -f $@.$$$$; echo '(re)building $@'
+  $(CC) -MM $(CFLAGS) $< > $@.$$$$; \
+  sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
+  rm -f $@.$$$$; echo '(re)building $@'
 
 ifneq ($(MAKECMDGOALS),distclean)
 -include $(SRC:%.c=%.d)
 endif
 
-uanytun: $(OBJ)
+$(EXECUTABLE): $(OBJ)
        $(CC) $(OBJ) -o $@ $(LDFLAGS)
 
 %.o: %.c
        $(CC) $(CFLAGS) -c $<
 
 
-distclean: clean
+strip: $(EXECUTABLE)
+       $(STRIP) -s $(EXECUTABLE)
+
+distclean: cleanall
        find . -name *.o -exec rm -f {} \;
        find . -name "*.\~*" -exec rm -rf {} \;
        rm -f include.mk
@@ -92,57 +97,78 @@ clean:
        rm -f *.d.*
        rm -f $(EXECUTABLE)
 
+cleanall: clean
+       $(MAKE) --directory="../doc/" clean
+
 manpage:
        $(MAKE) --directory="../doc/" manpage
 
-install: all install-bin install-etc install-man add-user
+
+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: $(EXECUTABLE)
-       mkdir -p $(DESTDIR)$(SBINDIR)
-       install -m 755 $(EXECUTABLE) $(DESTDIR)$(SBINDIR)
-       $(STRIP) $(DESTDIR)$(SBINDIR)/$(EXECUTABLE)
+       $(INSTALL) -d $(DESTDIR)$(SBINDIR)
+       $(INSTALL) -m 755 $(EXECUTABLE) $(DESTDIR)$(SBINDIR)
 
 install-etc:
-       mkdir -p $(DESTDIR)$(ETCDIR)/uanytun
-       install -m 644 ../etc/uanytun/autostart $(DESTDIR)$(ETCDIR)/uanytun/autostart
-       @( cd '../etc/uanytun/' ;                                                                                \
-     for dir in `ls`; do                                                                                   \
-       if [ -d $$dir ]; then                                                                               \
-         echo "install $$dir configuration" ;                                                              \
-         cd $$dir ;                                                                                        \
-         mkdir -p $(DESTDIR)$(ETCDIR)/uanytun/$$dir ;                                                      \
-         install -m 600 config $(DESTDIR)$(ETCDIR)/uanytun/$$dir/config ;                                  \
-         sed -i 's#username uanytun#username $(USERNAME)#' $(DESTDIR)$(ETCDIR)/uanytun/$$dir/config ;      \
-         sed -i 's#groupname uanytun#groupname $(USERNAME)#' $(DESTDIR)$(ETCDIR)/uanytun/$$dir/config ;    \
-         sed -i 's#chroot /var/run/uanytun#chroot $(USERHOME)#' $(DESTDIR)$(ETCDIR)/uanytun/$$dir/config ; \
-         if [ -e 'post-up.sh' ]; then                                                                      \
-           install -m 755 post-up.sh $(DESTDIR)$(ETCDIR)/uanytun/$$dir/post-up.sh ;                        \
-         fi ;                                                                                              \
-         cd .. ;                                                                                           \
-       fi ;                                                                                                \
-     done                                                                                                  \
+       $(INSTALL) -d $(DESTDIR)$(ETCDIR)/$(EXECUTABLE)
+       @ echo "example configurations can be found at $(EXAMPLESDIR)/$(EXECUTABLE)" > $(DESTDIR)$(ETCDIR)/$(EXECUTABLE)/README
+       $(INSTALL) -d $(DESTDIR)$(ETCDIR)/init.d
+       @ sed -e 's#DAEMON=/usr/sbin/uanytun#DAEMON=$(SBINDIR)/$(EXECUTABLE)#' \
+        -e 's#CONFIG_DIR=/etc/uanytun#CONFIG_DIR=$(ETCDIR)/uanytun#' ../etc/init.d/uanytun > ../etc/init.d/uanytun.bak
+       $(INSTALL) -m 755 ../etc/init.d/uanytun.bak $(DESTDIR)$(ETCDIR)/init.d/$(EXECUTABLE)
+       rm -f ../etc/init.d/uanytun.bak
+
+install-examples:
+       $(INSTALL) -d $(DESTDIR)$(EXAMPLESDIR)/$(EXECUTABLE)
+       $(INSTALL) -m 644 ../etc/uanytun/autostart $(DESTDIR)$(EXAMPLESDIR)/$(EXECUTABLE)/autostart
+       @( cd '../etc/uanytun/' ;                                                                        \
+     for dir in `ls`; do                                                                           \
+       if [ -d $$dir ]; then                                                                       \
+         echo "install $$dir configuration" ;                                                      \
+         cd $$dir ;                                                                                \
+         $(INSTALL) -d $(DESTDIR)$(EXAMPLESDIR)/$(EXECUTABLE)/$$dir ;                              \
+         $(INSTALL) -m 600 config $(DESTDIR)$(EXAMPLESDIR)/$(EXECUTABLE)/$$dir/config ;            \
+         if [ -e 'post-up.sh' ]; then                                                              \
+           $(INSTALL) -m 755 post-up.sh $(DESTDIR)$(EXAMPLESDIR)/$(EXECUTABLE)/$$dir/post-up.sh ;  \
+         fi ;                                                                                      \
+         cd .. ;                                                                                   \
+       fi ;                                                                                        \
+     done                                                                                          \
    )
-       mkdir -p $(DESTDIR)$(ETCDIR)/init.d
-       install -m 755 ../etc/init.d/uanytun $(DESTDIR)$(ETCDIR)/init.d/$(EXECUTABLE)
-       @ sed -i 's#DAEMON=/usr/sbin/uanytun#DAEMON=$(SBINDIR)/$(EXECUTABLE)#' $(DESTDIR)$(ETCDIR)/init.d/$(EXECUTABLE)
-       @ sed -i 's#CONFIG_DIR=/etc/uanytun#CONFIG_DIR=$(ETCDIR)/uanytun#' $(DESTDIR)$(ETCDIR)/init.d/$(EXECUTABLE)
 
 install-man: manpage
-       mkdir -p $(DESTDIR)$(MANDIR)/man8/
-       cp ../doc/uanytun.8 $(DESTDIR)$(MANDIR)/man8/$(EXECUTABLE).8
-       gzip $(DESTDIR)$(MANDIR)/man8/$(EXECUTABLE).8
+       $(INSTALL) -d $(DESTDIR)$(MANDIR)/man8/
+       $(INSTALL) -m 644 ../doc/uanytun.8 $(DESTDIR)$(MANDIR)/man8/$(EXECUTABLE).8
 
-add-user:
-       @ adduser --system --group --home $(USERHOME) $(USERNAME)
+uninstall: remove
 
-remove-user: 
-       @ deluser $(USERNAME)
-       @ rm -rf $(USERHOME)
+remove: $(REMOVE_TARGETS)
 
-remove:
+remove-bin:
        rm -f $(DESTDIR)$(SBINDIR)/$(EXECUTABLE)
-       rm -f $(DESTDIR)$(MANDIR)/man8/$(EXECUTABLE).8.gz
+
+remove-etc:
        rm -f $(DESTDIR)$(ETCDIR)/init.d/$(EXECUTABLE)
 
-purge: remove remove-user
-       rm -rf $(DESTDIR)$(ETCDIR)/uanytun/
+remove-examples:
+       rm -rf $(DESTDIR)$(EXAMPLESDIR)/$(EXECUTABLE)/
+
+remove-man:
+       rm -f $(DESTDIR)$(MANDIR)/man8/$(EXECUTABLE).8
+
+purge: remove
+       rm -rf $(DESTDIR)$(ETCDIR)/$(EXECUTABLE)/