# simple makefile wrapper to run waf
-WAF_BINARY=./buildtools/bin/waf
+PYTHON?=python
+WAF_BINARY=$(PYTHON) ./buildtools/bin/waf
WAF=WAF_MAKE=1 $(WAF_BINARY)
all:
$(WAF) uninstall
test:
- $(WAF) test --dup-symbol-check $(TEST_OPTIONS)
+ $(WAF) test $(TEST_OPTIONS)
help:
@echo NOTE: to run extended waf options use $(WAF_BINARY) or modify your PATH
$(WAF) --help
subunit-test:
- $(WAF) test --dup-symbol-check --filtered-subunit $(TEST_OPTIONS)
+ $(WAF) test --filtered-subunit $(TEST_OPTIONS)
testenv:
- $(WAF) test --dup-symbol-check --testenv $(TEST_OPTIONS)
+ $(WAF) test --testenv $(TEST_OPTIONS)
+
+gdbtestenv:
+ $(WAF) test --testenv --gdbtest $(TEST_OPTIONS)
quicktest:
- $(WAF) test --dup-symbol-check --quick $(TEST_OPTIONS)
+ $(WAF) test --quick $(TEST_OPTIONS)
dist:
touch .tmplock
ctags:
$(WAF) ctags
+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"
-bin/%:: FORCE
+# 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=$@
-FORCE:
-pydoctor:
- $(WAF) pydoctor
+# 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