Packets: Fix annotation unit-test on 64bit architectures
[senf.git] / Makefile
index dad96af..d838e92 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,31 +1,62 @@
 #----------------------------------------------------------------------
 # Some SCONS shortcuts
 #----------------------------------------------------------------------
+CONCURRENCY_LEVEL ?= $(shell grep process /proc/cpuinfo | wc -l)
 
-CONCURRENCY_LEVEL ?= 2
+ifdef nice
+  SCONS_ARGS += CXX='nice -n $(nice) g++'
+endif
+ifdef final
+  SCONS_ARGS += "final="$(final)
+endif
+ifdef debug
+  SCONS_ARGS += "debug="$(debug)
+endif
 
-SCONS=scons -j $(CONCURRENCY_LEVEL)
+SCONS=./tools/scons -j $(CONCURRENCY_LEVEL) $(SCONS_ARGS)
 
-default: build
+# DON'T call this default ... default is a valid scons target ;-)
+build: default
 
-build:
-       $(SCONS)
+TARGETS := prepare default examples all_tests all_docs all install_all \
+       deb debsrc debbin linklint fixlinks valgrind lcov
+ALLTARGETS := $(TARGETS) package build
+
+$(TARGETS):
+       $(SCONS) $@
 
 clean:
        $(SCONS) --clean all
 
-all_docs all_tests all:
-       $(SCONS) $@
-       
-%/test:
+package: deb
+test_coverage: lcov
+
+#----------------------------------------------------------------------
+# subdirectory build targets
+#----------------------------------------------------------------------
+
+%/test %/doc:
        $(SCONS) $@
 
+%/build:
+       $(SCONS) $*
+
+#----------------------------------------------------------------------
+# remote compile targets
+#----------------------------------------------------------------------
+
+CWD = $(shell pwd)
+$(ALLTARGETS:%=%@%):
+       ssh $* "cd $(CWD) && $(MAKE) SCONS_ARGS=\"$(SCONS_ARGS)\" $(firstword $(subst @, ,$@))"
+
 #----------------------------------------------------------------------
 # Subversion stuff
 #----------------------------------------------------------------------
 
 svn_version:
-       @svnversion
+       @v=`svnversion`; if [ $$v=="exported" ]; then gitsvnversion else echo $v; fi
+
+version: svn_version
 
 #----------------------------------------------------------------------
 # Building SENF requires some debian packages
@@ -33,16 +64,11 @@ svn_version:
 DEB_BASE   = build-essential
 
 # This line parses the 'Build-Depends' entry from debian/control
-DEB_SENF   = $(shell perl -an -F'[:,]' -e '                                    \
-                        BEGIN{ $$,=" " }                                       \
-                        $$P=0 if /^\S/;                                        \
-                        map {s/\(.*\)//} @F;                                   \
-                        print @F if $$P;                                       \
-                        if (/^Build-Depends:/) { print @F[1..$$\#F]; $$P=1 }'  \
-                    debian/control | xargs echo)
+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)
-
-package:
-       $(SCONS) deb