X-Git-Url: https://git.syn-net.org/?p=debian%2Fuanytun.git;a=blobdiff_plain;f=src%2FMakefile;h=4124575fb42ca751892996b2b6f9b9835d014527;hp=358c612e403c601f87bda857625bdc8f8277a026;hb=e3f8e33112e2191999c6d6f6b6a767c72db800a0;hpb=b81b2c1954fe3e3317e6fa260c5ffdc9eeee966c diff --git a/src/Makefile b/src/Makefile index 358c612..4124575 100644 --- a/src/Makefile +++ b/src/Makefile @@ -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)/