ctdb-event: Force EVENTSCRIPTS_TESTS_VAR_DIR to be absolute
[amitay/samba.git] / Makefile
index ae2fc0636d7d8e919c7263faa52ee900794430fe..c2de1df7b608c9e6c79ec52659f53ce4ee788867 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 # simple makefile wrapper to run waf
 
 # simple makefile wrapper to run waf
 
-WAF_BINARY=./buildtools/bin/waf
-WAF=WAF_MAKE=1 $(WAF_BINARY)
+WAF_BINARY=$(PYTHON) ./buildtools/bin/waf
+WAF=PYTHONHASHSEED=1 WAF_MAKE=1 $(WAF_BINARY)
 
 all:
        $(WAF) build
 
 all:
        $(WAF) build
@@ -15,6 +15,9 @@ uninstall:
 test:
        $(WAF) test $(TEST_OPTIONS)
 
 test:
        $(WAF) test $(TEST_OPTIONS)
 
+perftest:
+       $(WAF) test --perf-test $(TEST_OPTIONS)
+
 help:
        @echo NOTE: to run extended waf options use $(WAF_BINARY) or modify your PATH
        $(WAF) --help
 help:
        @echo NOTE: to run extended waf options use $(WAF_BINARY) or modify your PATH
        $(WAF) --help
@@ -25,9 +28,18 @@ subunit-test:
 testenv:
        $(WAF) test --testenv $(TEST_OPTIONS)
 
 testenv:
        $(WAF) test --testenv $(TEST_OPTIONS)
 
+gdbtestenv:
+       $(WAF) test --testenv --gdbtest $(TEST_OPTIONS)
+
 quicktest:
        $(WAF) test --quick $(TEST_OPTIONS)
 
 quicktest:
        $(WAF) test --quick $(TEST_OPTIONS)
 
+randomized-test:
+       $(WAF) test --random-order $(TEST_OPTIONS)
+
+testlist:
+       $(WAF) test --list $(TEST_OPTIONS)
+
 dist:
        touch .tmplock
        WAFLOCK=.tmplock $(WAF) dist
 dist:
        touch .tmplock
        WAFLOCK=.tmplock $(WAF) dist
@@ -66,13 +78,43 @@ etags:
 ctags:
        $(WAF) ctags
 
 ctags:
        $(WAF) ctags
 
-# this allows for things like "make bin/smbtorture"
-bin/%:: FORCE
-       $(WAF) --targets=$@
-FORCE:
-
 pydoctor:
        $(WAF) pydoctor
 
 pep8:
        $(WAF) pep8
 pydoctor:
        $(WAF) pydoctor
 
 pep8:
        $(WAF) pep8
+
+# Adding force on the depencies will force the target to be always rebuild form the Make
+# point of view forcing make to invoke waf
+
+bin/smbd: FORCE
+       $(WAF) --targets=smbd/smbd
+
+bin/winbindd: FORCE
+       $(WAF) --targets=winbindd/winbindd
+
+bin/nmbd: FORCE
+       $(WAF) --targets=nmbd/nmbd
+
+bin/smbclient: FORCE
+       $(WAF) --targets=client/smbclient
+
+# this allows for things like "make bin/smbtorture"
+# mainly for the binary that don't have a broken mode like smbd that must
+# be build with smbd/smbd
+bin/%: FORCE
+       $(WAF) --targets=$(subst bin/,,$@)
+
+# Catch all rule to be able to call make service_repl in order to find the name
+# of the submodule you want to build, look at the wscript
+%:
+       $(WAF) --targets=$@
+
+# This rule has to be the last one
+FORCE:
+# Having .NOTPARALLEL will force make to do target once at a time but still -j
+# will be present in the MAKEFLAGS that are in turn interpreted by WAF
+# so only 1 waf at a time will be called but it will still be able to do parralel builds if
+# instructed to do so
+.NOTPARALLEL: %
+.PHONY: FORCE everything testsuite check torture