]> rtime.felk.cvut.cz Git - omk.git/blobdiff - snippets/wvtest.omk
Do not use CFLAGS when compiling C++ code
[omk.git] / snippets / wvtest.omk
index fa888730c1f6d3c601c882b1d990724a86b78663..01ecb764599cbd3df049e8529c6c243a7716154b 100644 (file)
@@ -1,25 +1,44 @@
+# wvtest_SCRIPTS    .. list of scripts producing wvtest output
+# wvtest_PROGRAMS   .. list of the testing programs producing wvtest output
+
+ifndef WVTEST_LIBRARY
+WVTEST_LIBRARY = wvtest
+endif
+
+# Documentation: wvtest_PROGRAMS is amost equivalent to test_PROGRAMS.
+# The two differences are that the program is automatically linked
+# with $(WVTEST_LIBRARY) and it is run during "make wvtest".
+test_PROGRAMS += $(wvtest_PROGRAMS)
+
 # Documentation: If your project uses wvtest, it is recomended to put
-# "test: wvtest" rule to config.target.
+# the "test: wvtest" rule to config.target.
 wvtest:
        $(Q)$(MAKERULES_DIR)/wvtestrun $(MAKE) wvtest-pass
 
 .PHONY: wvtest
 
-$(eval $(call omk_pass_template,wvtest-pass,$$(LOCAL_BUILD_DIR),,$(wvtest_SCRIPTS)))
+$(eval $(call omk_pass_template,wvtest-pass,$$(LOCAL_BUILD_DIR),,$(wvtest_SCRIPTS)$(wvtest_PROGRAMS)))
 
-# Usage: $(call wvtest_template,<script-name>)
+# Usage: $(call wvtest_template,<shell command>)
 define wvtest_template
 wvtest-pass-local: wvtest-run-$(1)
 .PHONY: wvtest-run-$(1)
 wvtest-run-$(1):
-       mkdir -p $(1).wvtest
-       cd $(1).wvtest && $(SOURCES_DIR)/$(1)
+       $(Q)echo "Testing \"Run $(1)\" in Makefile.rules:"
+       $(Q)mkdir -p $(1).wvtest
+       $(Q)cd $(1).wvtest && \
+         PATH=$$(USER_BIN_DIR):$$$$PATH LD_LIBRARY_PATH=$$(USER_LIB_DIR):$$$$LD_LIBRARY_PATH \
+         $(1)
+$(notdir $(1))_LIBS += $$(WVTEST_LIBRARY)
 endef
 
 # Documentation: Write the test so, that it can be run from arbitrary
-# directory and also manually directly from the $(SOURCES_DIR), i.e.
-# include wvtest.sh like this:
+# directory, i.e. in case of a script ensure that the wvtest library
+# is sourced like this:
 #
 # . $(dirname $0)/wvtest.sh
 
-$(foreach script,$(wvtest_SCRIPTS),$(eval $(call wvtest_template,$(script))))
+$(foreach script,$(wvtest_SCRIPTS),$(eval $(call wvtest_template,$(SOURCES_DIR)/$(script))))
+# Hack!!!
+USER_TESTS_DIR := $(OUTPUT_DIR)/_compiled/bin-tests
+$(foreach prog,$(wvtest_PROGRAMS),$(eval $(call wvtest_template,$(USER_TESTS_DIR)/$(prog))))