# 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 - build tests and examples for # make -test - build and run tests and examples for # # Additional command line variables: # # conf - configuration to build # db := mssql oracle pgsql sqlite mysql ifeq ($(conf),) conf_suffix := default else conf_suffix := builds/$(conf) endif .PHONY: all test clean $(db) $(addsuffix -test,$(db)) $(addsuffix -clean,$(db)) all: $(db) test: $(addsuffix -test,$(db)) clean: $(addsuffix -clean,$(db)) define set_dirs edir := $$(wildcard examples-$1-$(conf_suffix)) tdir := $$(wildcard tests-$1-$(conf_suffix)) ifeq ($(conf),) ifeq ($$(edir),) edir := examples-$1 endif ifeq ($$(tdir),) tdir := tests-$1 endif 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 define clean_rule $1-clean: edir := $$(edir) $1-clean: tdir := $$(tdir) $1-clean: @$$(MAKE) -C $$(edir) clean @$$(MAKE) -C $$(tdir) clean endef # Note: empty line at the end is important. # # define rules $(call set_dirs,$1) $(call build_rule,$1) $(call test_rule,$1) $(call clean_rule,$1) endef $(eval $(foreach d,$(db),$(call rules,$d)))