summaryrefslogtreecommitdiff
path: root/git
diff options
context:
space:
mode:
Diffstat (limited to 'git')
-rw-r--r--git/makefile56
1 files changed, 56 insertions, 0 deletions
diff --git a/git/makefile b/git/makefile
new file mode 100644
index 0000000..1d07993
--- /dev/null
+++ b/git/makefile
@@ -0,0 +1,56 @@
+# Root makefile that can be used to build/run tests and examples for some
+# or all databases:
+# make - build tests and examples for all the databases
+# make test - build and run tests and examples for all the databases
+# make <db> - build tests and examples for <db>
+# make <db>-test - build and run tests and examples for <db>
+#
+db := oracle pgsql sqlite mysql
+
+.PHONY: all test $(db) $(addsuffix -test,$(db))
+
+all: $(db)
+test: $(addsuffix -test,$(db))
+
+define set_dirs
+edir := $$(wildcard examples-$1-default)
+tdir := $$(wildcard tests-$1-default)
+
+ifeq ($$(edir),)
+edir := examples-$1
+endif
+
+ifeq ($$(tdir),)
+tdir := tests-$1
+endif
+endef
+
+define build_rule
+$1: edir := $$(edir)
+$1: tdir := $$(tdir)
+
+$1:
+ @$$(MAKE) -C $$(edir)
+ @$$(MAKE) -C $$(tdir)
+endef
+
+define test_rule
+$1-test: edir := $$(edir)
+$1-test: tdir := $$(tdir)
+
+$1-test:
+ @$$(MAKE) -C $$(edir) test
+ @$$(MAKE) -C $$(tdir) test
+endef
+
+# Note: empty line at the end is important.
+#
+#
+define rules
+$(call set_dirs,$1)
+$(call build_rule,$1)
+$(call test_rule,$1)
+
+endef
+
+$(eval $(foreach d,$(db),$(call rules,$d)))