reverted Rev. 1620 (enable/disable PPI ActiveSocketSource)
[senf.git] / Makefile
index 0c860c4..d838e92 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,96 +1,74 @@
 #----------------------------------------------------------------------
 # Some SCONS shortcuts
 #----------------------------------------------------------------------
-SCONS=scons
+CONCURRENCY_LEVEL ?= $(shell grep process /proc/cpuinfo | wc -l)
 
-default: build
+ifdef nice
+  SCONS_ARGS += CXX='nice -n $(nice) g++'
+endif
+ifdef final
+  SCONS_ARGS += "final="$(final)
+endif
+ifdef debug
+  SCONS_ARGS += "debug="$(debug)
+endif
 
-build:
-       $(SCONS)
+SCONS=./tools/scons -j $(CONCURRENCY_LEVEL) $(SCONS_ARGS)
 
-clean:
-       $(SCONS) --clean
+# DON'T call this default ... default is a valid scons target ;-)
+build: default
+
+TARGETS := prepare default examples all_tests all_docs all install_all \
+       deb debsrc debbin linklint fixlinks valgrind lcov
+ALLTARGETS := $(TARGETS) package build
 
-all_docs all_tests:
+$(TARGETS):
        $(SCONS) $@
 
-#----------------------------------------------------------------------
-# Subversion stuff
-#----------------------------------------------------------------------
-SVN_REVISION = $(shell svn info|grep '^Revision: '|awk '{print $$2}')
+clean:
+       $(SCONS) --clean all
 
-svn_version:
-       @echo $(SVN_REVISION)
+package: deb
+test_coverage: lcov
 
 #----------------------------------------------------------------------
-# Building SENF requires some debian packages
+# subdirectory build targets
 #----------------------------------------------------------------------
-DEB_BASE   = scons build-essential binutils-dev
-DEB_BOOST  = libboost-dev libboost-test-dev
-DEB_BOOST += libboost-date-time-dev libboost-regex-dev libboost-thread-dev
-DEB_DOC    = doxygen dia tidy xsltproc graphviz
 
-prerequisites:
-       aptitude install $(DEB_BASE) $(DEB_BOOST) $(DEB_DOC)
+%/test %/doc:
+       $(SCONS) $@
 
-#----------------------------------------------------------------------
-# Debian package info
-#----------------------------------------------------------------------
-PKG_NAME=senf-dev
-PKG_ARCH=i386
-PKG_VERS=0.0.$(SVN_REVISION)-1
-PKG_FILE = $(PKG_NAME)-$(PKG_VERS)_$(PKG_ARCH).deb
+%/build:
+       $(SCONS) $*
 
 #----------------------------------------------------------------------
-# Debian package structure
+# remote compile targets
 #----------------------------------------------------------------------
-DEB_TOP = ./debian
-DEB_CTL = $(DEB_TOP)/DEBIAN
-DEB_LIB = $(DEB_TOP)/usr/lib/senf
-DEB_INC = $(DEB_TOP)/usr/include/senf
-DEB_DOC = $(DEB_TOP)/usr/share/doc/senf
+
+CWD = $(shell pwd)
+$(ALLTARGETS:%=%@%):
+       ssh $* "cd $(CWD) && $(MAKE) SCONS_ARGS=\"$(SCONS_ARGS)\" $(firstword $(subst @, ,$@))"
 
 #----------------------------------------------------------------------
-# Debian package content
+# Subversion stuff
 #----------------------------------------------------------------------
-SENF_LIBS = *.a
-SENF_HDRS = $$(find -path './XXXdebian' -prune \
-                 -o -iname \*.h \
-                 -o -iname \*.hh \
-                 -o -iname \*.ih \
-                 -o -iname \*.c \
-                 -o -iname \*.cc \
-                 -o -iname \*.ct \
-                 -o -iname \*.cci \
-                 -o -iname \*.cti \
-                 -o -iname \*.mpp \
-)
-
-package: $(PKG_FILE)
-$(PKG_FILE): build
-       rm -rf $(DEB_TOP)
-       mkdir -p $(DEB_CTL) $(DEB_INC) $(DEB_LIB) $(DEB_DOC)
-       find $(DEB_TOP) -type d | xargs chmod 755
-       tar cf - $(SENF_HDRS) | (cd $(DEB_INC) && tar xf -)
-       tar cf - $(SENF_LIBS) | (cd $(DEB_LIB) && tar xf -)
-       sed -e 's,PKG_VERSION,$(PKG_VERS),' control > $(DEB_CTL)/control
-       $(MAKE) deb-doc
-       dpkg-deb --build debian $(PKG_FILE)
+
+svn_version:
+       @v=`svnversion`; if [ $$v=="exported" ]; then gitsvnversion else echo $v; fi
+
+version: svn_version
 
 #----------------------------------------------------------------------
-# Extract documentation files from source tree
+# Building SENF requires some debian packages
 #----------------------------------------------------------------------
-deb-doc:
-       rsync -rz \
-               --filter="- debian/*" \
-               --filter="- .svn" \
-               --filter="+ */" \
-               --filter="+ *.html" \
-               --filter="+ *.css" \
-               --filter="+ *.png" \
-               --filter="+ *.php" \
-               --filter="+ *.idx" \
-               --filter="+ *.log" \
-               --filter="- *" \
-               . $(DEB_DOC)
+DEB_BASE   = build-essential
 
+# This line parses the 'Build-Depends' entry from debian/control
+DEB_SENF   = $(shell perl -alnF'[:,]' -e '                                                     \
+                       BEGIN{$$,=" "} END{splice @R,0,1; print @R}                             \
+                       map {s/\(.*\)|\|.*//; s/[ \n\t]//g} @F;                                 \
+                       push @R,grep {/./} @F if (/^Build-Depends:/i.../^\S/)!~/(^|E0)$$/;'     \
+                               debian/control)
+
+prerequisites:
+       aptitude install $(DEB_BASE) $(DEB_SENF)