Update version after release of v0.6.5.1
[olsrd.git] / Makefile
index 221cb6d..10c154d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,32 +1,32 @@
 # The olsr.org Optimized Link-State Routing daemon(olsrd)
-# Copyright (c) 2004-2009, the olsr.org team - see HISTORY file
+# Copyright (c) 2004, Andreas Tonnesen(andreto@olsr.org)
 # All rights reserved.
 #
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
+# Redistribution and use in source and binary forms, with or without 
+# modification, are permitted provided that the following conditions 
 # are met:
 #
-# * Redistributions of source code must retain the above copyright
+# * Redistributions of source code must retain the above copyright 
 #   notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright
-#   notice, this list of conditions and the following disclaimer in
-#   the documentation and/or other materials provided with the
+# * Redistributions in binary form must reproduce the above copyright 
+#   notice, this list of conditions and the following disclaimer in 
+#   the documentation and/or other materials provided with the 
 #   distribution.
-# * Neither the name of olsr.org, olsrd nor the names of its
-#   contributors may be used to endorse or promote products derived
+# * Neither the name of olsr.org, olsrd nor the names of its 
+#   contributors may be used to endorse or promote products derived 
 #   from this software without specific prior written permission.
 #
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
 # POSSIBILITY OF SUCH DAMAGE.
 #
 # Visit http://www.olsr.org for more information.
 # Please also write a new version to:
 # gui/win32/Main/Frontend.rc (line 71, around "CAPTION [...]")
 # gui/win32/Inst/installer.nsi (line 57, around "MessageBox MB_YESNO [...]")
-VERS =         pre-0.7.0
+VERS =         pre-0.6.5.2
 
 TOPDIR = .
+INSTALLOVERWRITE ?=
 include Makefile.inc
 
 # pass generated variables to save time
-MAKECMD = $(MAKE) OS="$(OS)" WARNINGS="$(WARNINGS)"
+MAKECMD = $(MAKE) OS="$(OS)" WARNINGS="$(WARNINGS)" VERBOSE="$(VERBOSE)"
 
 LIBS +=                $(OS_LIB_DYNLOAD)
-
 ifeq ($(OS), win32)
 LDFLAGS +=     -Wl,--out-implib=libolsrd.a
 LDFLAGS +=     -Wl,--export-all-symbols
 endif
 
-TAG_SRCS =     $(SRCS) $(HDRS)
-
-.PHONY: default_target
-default_target: clean_bin $(EXENAME)
+SWITCHDIR =    src/olsr_switch
+CFGDIR =       src/cfgparser
+include $(CFGDIR)/local.mk
+TAG_SRCS =     $(SRCS) $(HDRS) $(wildcard $(CFGDIR)/*.[ch] $(SWITCHDIR)/*.[ch])
 
-clean_bin:
-       @$(RM) -f $(EXENAME)
+.PHONY: default_target switch
+default_target: $(EXENAME)
 
 $(EXENAME):    $(OBJS) src/builddata.o
-ifeq ($(LD_HAS_DYN), yes)
-               $(SHELL) olsrd-exports.sh $$(find src -name "*.h") > $(EXENAME).exports
+ifeq ($(VERBOSE),0)
+               @echo "[LD] $@"
 endif
-# precompile plugins for static linking
-               set -e;for dir in $(STATIC_PLUGINS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR);done
-               $(CC) $(LDFLAGS) $(LDFLAGS_EXE) -o $@ $^ $(STATIC_PLUGIN_OBJS) $(LIBS)
+               $(MAKECMDPREFIX)$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
 
-show-ignored-warnings:
-       CC="$(CC)" $(TOPDIR)/gcc-warnings $(ALL_WARNINGS) > /dev/null
+cfgparser:     $(CFGDEPS) src/builddata.o
+               $(MAKECMDPREFIX)$(MAKECMD) -C $(CFGDIR)
+
+switch:                
+       $(MAKECMDPREFIX)$(MAKECMD) -C $(SWITCHDIR)
 
 # generate it always
 .PHONY: src/builddata.c
 src/builddata.c:
-       @$(RM) "$@"
-       @echo "#include \"defs.h\"" >> "$@"
-       @echo "const char olsrd_version[] = \"olsr.org - $(VERS)-`git log -1 --pretty=%h`\";"  >> "$@"
-       @date +"const char build_date[] = \"%Y-%m-%d %H:%M:%S\";" >> "$@"
-       @echo "const char build_host[] = \"$(shell hostname)\";" >> "$@"
+       $(MAKECMDPREFIX)$(RM) "$@"
+       $(MAKECMDPREFIX)echo "#include \"defs.h\"" >> "$@" 
+       $(MAKECMDPREFIX)echo "const char olsrd_version[] = \"olsr.org -  $(VERS)-git_`git log -1 --pretty=%h`-hash_`./make/hash_source.sh`\";"  >> "$@"
+       $(MAKECMDPREFIX)date +"const char build_date[] = \"%Y-%m-%d %H:%M:%S\";" >> "$@" 
+       $(MAKECMDPREFIX)echo "const char build_host[] = \"$(shell hostname)\";" >> "$@" 
 
 
-.PHONY: help libs clean_libs libs_clean clean uberclean install_libs libs_install install_bin install_olsrd install build_all install_all clean_all
+.PHONY: help libs clean_libs libs_clean clean distclean uberclean install_libs uninstall_libs libs_install libs_uninstall install_bin uninstall_bin install_olsrd uninstall_olsrd install uninstall build_all install_all uninstall_all clean_all gui clean_gui 
 
 clean:
        -rm -f $(OBJS) $(SRCS:%.c=%.d) $(EXENAME) $(EXENAME).exe src/builddata.c $(TMPFILES)
-       -rm -f $(EXENAME).exports
        -rm -f libolsrd.a
+       -rm -f olsr_switch.exe
        -rm -f gui/win32/Main/olsrd_cfgparser.lib
        -rm -f olsr-setup.exe
        -rm -fr gui/win32/Main/Release
        -rm -fr gui/win32/Shim/Release
 
+gui:
+ifeq ($(OS),linux)
+       $(MAKECMDPREFIX)$(MAKECMD) -C gui/linux-gtk all
+else
+       @echo "target gui not supported on $(OS)"
+       @exit 1
+endif
+
+clean_gui:
+       $(MAKECMDPREFIX)$(MAKECMD) -C gui/linux-gtk clean
+
+distclean: uberclean
+uberclean:     clean clean_libs clean_gui
+       -rm -f $(TAGFILE)
+#      BSD-xargs has no "--no-run-if-empty" aka "-r"
+       find . \( -name '*.[od]' -o -name '*~' \) -not -path "*/.hg*" -type f -print0 | xargs -0 rm -f
+       $(MAKECMDPREFIX)$(MAKECMD) -C $(SWITCHDIR) clean
+       $(MAKECMDPREFIX)$(MAKECMD) -C $(CFGDIR) clean
+
 install: install_olsrd
 
+uninstall: uninstall_olsrd
+
 install_bin:
-               mkdir -p '$(SBINDIR)'
-               install -m 755 '$(EXENAME)' '$(SBINDIR)'
-               $(STRIP) '$(SBINDIR)/$(EXENAME)'
+               mkdir -p $(SBINDIR)
+               install -m 755 $(EXENAME) $(SBINDIR)
+               $(STRIP) $(SBINDIR)/$(EXENAME)
+
+uninstall_bin:
+               rm -f $(SBINDIR)/$(EXENAME)
+               rmdir -p --ignore-fail-on-non-empty $(SBINDIR)
 
 install_olsrd: install_bin
-               @echo '========= C O N F I G U R A T I O N - F I L E ============'
-               @echo '$(EXENAME) uses the configfile $(CFGFILE)'
-               @echo 'a default configfile. A sample RFC-compliance aimed'
-               @echo 'configfile can be found in olsrd.conf.default.rfc.'
-               @echo 'However none of the larger OLSRD using networks use that'
-               @echo 'so install a configfile with activated link quality exstensions'
-               @echo 'per default.'
-               @echo 'can be found at files/olsrd.conf.default.lq'
-               @echo '=========================================================='
-               mkdir -p '$(ETCDIR)'
-               -cp -i 'files/olsrd.conf.default.lq' '$(CFGFILE)'
-               @echo '-------------------------------------------'
-               @echo 'Edit $(CFGFILE) before running olsrd!!'
-               @echo '-------------------------------------------'
-               @echo 'Installing manpages $(EXENAME)(8) and $(CFGNAME)(5)'
-               mkdir -p '$(MANDIR)/man3'
-               cp 'files/olsrd-metrics.3.gz' '$(MANDIR)/man3/olsrd-metrics.3.gz'
-               mkdir -p '$(MANDIR)/man5'
-               cp 'files/olsrd.conf.5.gz' '$(MANDIR)/man5/$(CFGNAME).5.gz'
-               mkdir -p '$(MANDIR)/man8'
-               cp 'files/olsrd.8.gz' '$(MANDIR)/man8/$(EXENAME).8.gz'
+               @echo ========= C O N F I G U R A T I O N - F I L E ============
+               @echo $(EXENAME) uses the configfile $(CFGFILE)
+               @echo a default configfile. A sample RFC-compliance aimed
+               @echo configfile can be found in olsrd.conf.default.rfc.
+               @echo However none of the larger OLSRD using networks use that
+               @echo so install a configfile with activated link quality exstensions
+               @echo per default.
+               @echo can be found at files/olsrd.conf.default.lq
+               @echo ==========================================================
+               mkdir -p $(ETCDIR)
+               $(MAKECMDPREFIX)if [ -e $(CFGFILE) ]; then \
+                       cp -f files/olsrd.conf.default.lq $(CFGFILE).new; \
+                       echo "Configuration file was saved as $(CFGFILE).new"; \
+               else \
+                       cp -f files/olsrd.conf.default.lq $(CFGFILE); \
+               fi
+               @echo -------------------------------------------
+               @echo Edit $(CFGFILE) before running olsrd!!
+               @echo -------------------------------------------
+               @echo Installing manpages $(EXENAME)\(8\) and $(CFGNAME)\(5\)
+ifneq ($(MANDIR),)
+               mkdir -p $(MANDIR)/man8/
+               cp files/olsrd.8.gz $(MANDIR)/man8/$(EXENAME).8.gz
+               mkdir -p $(MANDIR)/man5/
+               cp files/olsrd.conf.5.gz $(MANDIR)/man5/$(CFGNAME).5.gz
+endif
+
+uninstall_olsrd:       uninstall_bin
+ifneq ($(MANDIR),)
+               rm -f $(MANDIR)/man5/$(CFGNAME).5.gz
+               rmdir -p --ignore-fail-on-non-empty $(MANDIR)/man5/
+               rm -f $(MANDIR)/man8/$(EXENAME).8.gz
+               rmdir -p --ignore-fail-on-non-empty $(MANDIR)/man8/
+endif
+               rm -f $(CFGFILE) $(CFGFILE).new
+               rmdir -p --ignore-fail-on-non-empty $(ETCDIR)
 
 tags:
                $(TAGCMD) -o $(TAGFILE) $(TAG_SRCS)
 
-RPMVER = $(patsubst pre-%,%pre,$(VERS))
-RPMDIR = ../olsrd-$(RPMVER)
-RPMRELEASE = $(shell hg tip | { read tag val && echo "$$val"; })
-redhat/olsrd.spec: redhat/olsrd.spec.in Makefile Makefile.inc
-       @sed -e 's/@VERSION@/$(RPMVER)/' -e 's/@RELEASE@/$(RPMRELEASE)/' < "$<" > "$@"
-
-rpm: redhat/olsrd.spec
-       @echo "Creating $(RPMDIR).tar.bz2 ..."
-       @hg archive --type "tar" "$(RPMDIR).tar"
-       @tar --file "$(RPMDIR).tar" --append "$<"
-       @echo "Building RPMs..."
-       @rpmbuild -ta "$(RPMDIR).tar"
-       @bzip2 --best --force "$(RPMDIR).tar"
-
+rpm:
+               $(MAKECMDPREFIX)$(RM) olsrd-current.tar.bz2
+               $(MAKECMDPREFIX)echo "Creating olsrd-current.tar.bz2 ..."
+               $(MAKECMDPREFIX)./list-excludes.sh | tar  --exclude-from=- --exclude="olsrd-current.tar.bz2" -C .. -cjf olsrd-current.tar.bz2 olsrd-current
+               $(MAKECMDPREFIX)echo "Building RPMs..."
+               $(MAKECMDPREFIX)rpmbuild -ta olsrd-current.tar.bz2
 #
 # PLUGINS
 #
 
 # This is quite ugly but at least it works
 ifeq ($(OS),linux)
-SUBDIRS = $(notdir $(shell find lib -maxdepth 2 -name Makefile -not -path lib/Makefile -printf "%h\n"|sort))
+SUBDIRS = arprefresh bmf dot_draw dyn_gw dyn_gw_plain httpinfo jsoninfo mdns mini nameservice p2pd pgraph pud quagga secure sgwdynspeed txtinfo watchdog
 else
 ifeq ($(OS),win32)
-SUBDIRS := dot_draw httpinfo lq_etx_ff lq_etx_float lq_etx_fpm lq_rfc mini secure txtinfo watchdog
+SUBDIRS := dot_draw httpinfo jsoninfo mini pgraph secure txtinfo
+else
+ifeq ($(OS),android)
+SUBDIRS := arprefresh bmf dot_draw dyn_gw_plain httpinfo jsoninfo mini nameservice pgraph pud secure sgwdynspeed txtinfo watchdog
 else
-SUBDIRS := debuginfo dot_draw dyn_gw dyn_gw_plain httpinfo lq_etx_ff lq_etx_float lq_etx_fpm lq_rfc mini nameservice secure txtinfo watchdog cl_roam
+SUBDIRS := dot_draw dyn_gw dyn_gw_plain httpinfo jsoninfo mini nameservice pgraph secure txtinfo watchdog
+endif
 endif
 endif
 
 libs:
-               set -e;for dir in $(SUBDIRS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR);done
+               $(MAKECMDPREFIX)set -e;for dir in $(SUBDIRS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR);done
 
 libs_clean clean_libs:
-               -for dir in $(SUBDIRS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR) clean;done
-ifeq ($(OS), win32)
-               -for dir in $(SUBDIRS);do rm -f lib/*.dll;done
-endif
+               -for dir in $(SUBDIRS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR) clean;rm -f lib/$$dir/*.so lib/$$dir/*.dll;done
 
 libs_install install_libs:
-               set -e;for dir in $(SUBDIRS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR) install;done
+               $(MAKECMDPREFIX)set -e;for dir in $(SUBDIRS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR) install;done
 
-# targets for making a plugin
-$(SUBDIRS):
-               $(MAKECMD) -C lib/$@ clean
-               $(MAKECMD) -C lib/$@
-               
-# targets for installing a plugin (<plugindir>_install)
-$(foreach subdir,$(SUBDIRS), $(subdir)_install):
-               $(MAKECMD) -C lib/$(subst _install,,$@) DESTDIR=$(DESTDIR) install
+libs_uninstall uninstall_libs:
+               $(MAKECMDPREFIX)set -e;for dir in $(SUBDIRS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR) uninstall;done
+               rmdir -p --ignore-fail-on-non-empty $(LIBDIR)
 
-txtinfoshell:
-       $(MAKECMD) -C contrib/txtinfoshell
+#
+# DOCUMENTATION
+#
+.PHONY: doc doc_clean
+doc:
+               $(MAKECMDPREFIX)$(MAKECMD) -C doc OS=$(OS)
 
-build_all:     all libs txtinfoshell
-install_all:   install install_libs
-clean_all:     clean clean_libs
+doc_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C doc OS=$(OS) clean
 
-uberclean: clean_all
-       -rm -f $(TAGFILE)
-#      BSD-xargs has no "--no-run-if-empty" aka "-r"
-       find . \( -name '*.[od]' -o -name '*~' \) -not -path "*/.hg*" -print0 | xargs -0 rm -f
+#
+# PLUGINS
+#
+
+arprefresh:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/arprefresh
+
+arprefresh_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/arprefresh DESTDIR=$(DESTDIR) clean
+
+arprefresh_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/arprefresh DESTDIR=$(DESTDIR) install
+
+arprefresh_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/arprefresh DESTDIR=$(DESTDIR) uninstall
+
+bmf:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/bmf
+
+bmf_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/bmf DESTDIR=$(DESTDIR) clean
+
+bmf_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/bmf DESTDIR=$(DESTDIR) install
+
+bmf_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/bmf DESTDIR=$(DESTDIR) uninstall
+
+dot_draw:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/dot_draw
+
+dot_draw_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/dot_draw DESTDIR=$(DESTDIR) clean
+
+dot_draw_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/dot_draw DESTDIR=$(DESTDIR) install
+
+dot_draw_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/dot_draw DESTDIR=$(DESTDIR) uninstall
+
+dyn_gw:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw
+
+dyn_gw_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw DESTDIR=$(DESTDIR) clean
+
+dyn_gw_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw DESTDIR=$(DESTDIR) install
+
+dyn_gw_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw DESTDIR=$(DESTDIR) uninstall
+
+dyn_gw_plain:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw_plain
+
+dyn_gw_plain_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw_plain DESTDIR=$(DESTDIR) clean
+
+dyn_gw_plain_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw_plain DESTDIR=$(DESTDIR) install
+
+dyn_gw_plain_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw_plain DESTDIR=$(DESTDIR) uninstall
+
+httpinfo:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/httpinfo
+
+httpinfo_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/httpinfo DESTDIR=$(DESTDIR) clean
+
+httpinfo_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/httpinfo DESTDIR=$(DESTDIR) install
+
+httpinfo_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/httpinfo DESTDIR=$(DESTDIR) uninstall
+
+jsoninfo:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/jsoninfo
+
+jsoninfo_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/jsoninfo DESTDIR=$(DESTDIR) clean
+
+jsoninfo_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/jsoninfo DESTDIR=$(DESTDIR) install
+
+jsoninfo_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/jsoninfo DESTDIR=$(DESTDIR) uninstall
+
+mdns:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/mdns
+
+mdns_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/mdns DESTDIR=$(DESTDIR) clean
+
+mdns_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/mdns DESTDIR=$(DESTDIR) install
+
+mdns_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/mdns DESTDIR=$(DESTDIR) uninstall
+
+#
+# no targets for mini: it's an example plugin
+#
+
+# nameserver uses regex, which was only recently added to Android.  On
+# Android, $(REGEX_OBJS) will have all of the files needed, on all
+# other platforms, it'll be empty and therefore ignored.
+nameservice:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/nameservice clean
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/nameservice
+
+nameservice_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/nameservice DESTDIR=$(DESTDIR) clean
+
+nameservice_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/nameservice DESTDIR=$(DESTDIR) install
+
+nameservice_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/nameservice DESTDIR=$(DESTDIR) uninstall
+
+p2pd:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/p2pd
+
+p2pd_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/p2pd DESTDIR=$(DESTDIR) clean
+
+p2pd_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/p2pd DESTDIR=$(DESTDIR) install
+
+p2pd_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/p2pd DESTDIR=$(DESTDIR) uninstall
+
+pgraph:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/pgraph
+
+pgraph_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/pgraph DESTDIR=$(DESTDIR) clean
+
+pgraph_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/pgraph DESTDIR=$(DESTDIR) install
+
+pgraph_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/pgraph DESTDIR=$(DESTDIR) uninstall
+
+pud:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/pud
+
+pud_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/pud DESTDIR=$(DESTDIR) clean
+
+pud_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/pud DESTDIR=$(DESTDIR) install
+
+pud_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/pud DESTDIR=$(DESTDIR) uninstall
+
+quagga:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/quagga
+
+quagga_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/quagga DESTDIR=$(DESTDIR) clean
+
+quagga_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/quagga DESTDIR=$(DESTDIR) install
+
+quagga_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/quagga DESTDIR=$(DESTDIR) uninstall
+
+secure:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/secure
+
+secure_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/secure DESTDIR=$(DESTDIR) clean
+
+secure_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/secure DESTDIR=$(DESTDIR) install
+
+secure_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/secure DESTDIR=$(DESTDIR) uninstall
+
+sgwdynspeed:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/sgwdynspeed
+
+sgwdynspeed_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/sgwdynspeed DESTDIR=$(DESTDIR) clean
+
+sgwdynspeed_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/sgwdynspeed DESTDIR=$(DESTDIR) install
+
+sgwdynspeed_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/sgwdynspeed DESTDIR=$(DESTDIR) uninstall
+
+txtinfo:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/txtinfo
+
+txtinfo_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/txtinfo DESTDIR=$(DESTDIR) clean
+
+txtinfo_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/txtinfo DESTDIR=$(DESTDIR) install
+
+txtinfo_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/txtinfo DESTDIR=$(DESTDIR) uninstall
+
+watchdog:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/watchdog
+
+watchdog_clean:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/watchdog DESTDIR=$(DESTDIR) clean
+
+watchdog_install:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/watchdog DESTDIR=$(DESTDIR) install
+
+watchdog_uninstall:
+               $(MAKECMDPREFIX)$(MAKECMD) -C lib/watchdog DESTDIR=$(DESTDIR) uninstall
+
+
+build_all:     all switch libs
+install_all:   install install_libs
+uninstall_all: uninstall uninstall_libs
+clean_all:     uberclean clean_libs