From 6cd8b9f561b912f264ba4f723845935c40a3cb95 Mon Sep 17 00:00:00 2001
From: Boris Kolpackov <boris@codesynthesis.com>
Date: Fri, 21 Jun 2013 10:39:59 +0200
Subject: Add support for running tests in dynamic multi-database mode

Only possible in the development build system at this stage.
---
 mssql/custom/makefile   | 21 +++++----------------
 mssql/database/makefile | 11 +----------
 mssql/makefile          |  5 -----
 mssql/native/makefile   | 11 +----------
 mssql/query/makefile    | 21 +++++----------------
 mssql/template/makefile | 21 +++++----------------
 mssql/types/makefile    | 21 +++++----------------
 7 files changed, 22 insertions(+), 89 deletions(-)

(limited to 'mssql')

diff --git a/mssql/custom/makefile b/mssql/custom/makefile
index 9acc2f5..98c0869 100644
--- a/mssql/custom/makefile
+++ b/mssql/custom/makefile
@@ -6,17 +6,14 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
 
 cxx_tun := driver.cxx traits.cxx
 odb_hdr := test.hxx
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o) $(odb_hdr:.hxx=-odb.o))
+genf    := $(call odb-gen,$(odb_hdr))
+gen     := $(addprefix $(out_base)/,$(genf))
+cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
 cxx_od  := $(cxx_obj:.o=.o.d)
 
 common.l             := $(out_root)/libcommon/common/common.l
 common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
 
-driver  := $(out_base)/driver
-dist    := $(out_base)/.dist
-test    := $(out_base)/.test
-clean   := $(out_base)/.clean
-
 # Import.
 #
 $(call import,\
@@ -29,9 +26,6 @@ $(driver): $(cxx_obj) $(common.l)
 $(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
 $(cxx_obj) $(cxx_od): $(common.l.cpp-options)
 
-genf := $(addprefix $(odb_hdr:.hxx=-odb),.hxx .ixx .cxx) $(odb_hdr:.hxx=.sql)
-gen  := $(addprefix $(out_base)/,$(genf))
-
 $(gen): $(odb)
 $(gen): odb := $(odb)
 $(gen) $(dist): export odb_options += --database mssql --default-database \
@@ -66,12 +60,7 @@ $(dist):
 
 # Test.
 #
-$(test): $(driver) $(src_base)/test.std
-	$(call schema)
-	$(call message,test $<,$< --options-file $(dcf_root)/mssql.options \
->$(out_base)/test.out)
-	$(call message,,diff -u $(src_base)/test.std $(out_base)/test.out)
-	$(call message,,rm -f $(out_base)/test.out)
+$(eval $(call test-rule))
 
 # Clean.
 #
@@ -79,7 +68,7 @@ $(clean):                            \
   $(driver).o.clean                  \
   $(addsuffix .cxx.clean,$(cxx_obj)) \
   $(addsuffix .cxx.clean,$(cxx_od))  \
-  $(addprefix $(out_base)/,$(odb_hdr:.hxx=-odb.cxx.hxx.clean))
+  $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
 	$(call message,,rm -f $(out_base)/test.out)
 
 # Generated .gitignore.
diff --git a/mssql/database/makefile b/mssql/database/makefile
index e1bf4ba..b8281c5 100644
--- a/mssql/database/makefile
+++ b/mssql/database/makefile
@@ -11,11 +11,6 @@ cxx_od  := $(cxx_obj:.o=.o.d)
 common.l             := $(out_root)/libcommon/common/common.l
 common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
 
-driver  := $(out_base)/driver
-dist    := $(out_base)/.dist
-test    := $(out_base)/.test
-clean   := $(out_base)/.clean
-
 # Build.
 #
 $(driver): $(cxx_obj) $(common.l)
@@ -45,11 +40,7 @@ $(dist):
 
 # Test.
 #
-$(test): $(driver) $(src_base)/test.std
-	$(call message,test $<,$< --options-file $(dcf_root)/mssql.options \
->$(out_base)/test.out)
-	$(call message,,diff -u $(src_base)/test.std $(out_base)/test.out)
-	$(call message,,rm -f $(out_base)/test.out)
+$(eval $(call test-schemaless-rule))
 
 # Clean.
 #
diff --git a/mssql/makefile b/mssql/makefile
index df8e9c1..4891a0a 100644
--- a/mssql/makefile
+++ b/mssql/makefile
@@ -12,11 +12,6 @@ native        \
 query         \
 types
 
-default   := $(out_base)/
-dist      := $(out_base)/.dist
-test      := $(out_base)/.test
-clean     := $(out_base)/.clean
-
 $(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
 
 $(dist): name := mssql
diff --git a/mssql/native/makefile b/mssql/native/makefile
index 24d88ae..95fbd77 100644
--- a/mssql/native/makefile
+++ b/mssql/native/makefile
@@ -11,11 +11,6 @@ cxx_od  := $(cxx_obj:.o=.o.d)
 common.l             := $(out_root)/libcommon/common/common.l
 common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
 
-driver  := $(out_base)/driver
-dist    := $(out_base)/.dist
-test    := $(out_base)/.test
-clean   := $(out_base)/.clean
-
 # Build.
 #
 $(driver): $(cxx_obj) $(common.l)
@@ -45,11 +40,7 @@ $(dist):
 
 # Test.
 #
-$(test): $(driver) $(src_base)/test.std
-	$(call message,test $<,$< --options-file $(dcf_root)/mssql.options \
->$(out_base)/test.out)
-	$(call message,,diff -u $(src_base)/test.std $(out_base)/test.out)
-	$(call message,,rm -f $(out_base)/test.out)
+$(eval $(call test-schemaless-rule))
 
 # Clean.
 #
diff --git a/mssql/query/makefile b/mssql/query/makefile
index 6f7106e..6194671 100644
--- a/mssql/query/makefile
+++ b/mssql/query/makefile
@@ -6,17 +6,14 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
 
 cxx_tun := driver.cxx
 odb_hdr := test.hxx
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o) $(odb_hdr:.hxx=-odb.o))
+genf    := $(call odb-gen,$(odb_hdr))
+gen     := $(addprefix $(out_base)/,$(genf))
+cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
 cxx_od  := $(cxx_obj:.o=.o.d)
 
 common.l             := $(out_root)/libcommon/common/common.l
 common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
 
-driver  := $(out_base)/driver
-dist    := $(out_base)/.dist
-test    := $(out_base)/.test
-clean   := $(out_base)/.clean
-
 # Import.
 #
 $(call import,\
@@ -29,9 +26,6 @@ $(driver): $(cxx_obj) $(common.l)
 $(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
 $(cxx_obj) $(cxx_od): $(common.l.cpp-options)
 
-genf := $(addprefix $(odb_hdr:.hxx=-odb),.hxx .ixx .cxx) $(odb_hdr:.hxx=.sql)
-gen  := $(addprefix $(out_base)/,$(genf))
-
 $(gen): $(odb)
 $(gen): odb := $(odb)
 $(gen) $(dist): export odb_options += --database mssql --default-database \
@@ -64,12 +58,7 @@ $(dist):
 
 # Test.
 #
-$(test): $(driver) $(src_base)/test.std
-	$(call schema)
-	$(call message,test $<,$< --options-file $(dcf_root)/mssql.options \
->$(out_base)/test.out)
-	$(call message,,diff -u $(src_base)/test.std $(out_base)/test.out)
-	$(call message,,rm -f $(out_base)/test.out)
+$(eval $(call test-rule))
 
 # Clean.
 #
@@ -77,7 +66,7 @@ $(clean):                            \
   $(driver).o.clean                  \
   $(addsuffix .cxx.clean,$(cxx_obj)) \
   $(addsuffix .cxx.clean,$(cxx_od))  \
-  $(addprefix $(out_base)/,$(odb_hdr:.hxx=-odb.cxx.hxx.clean))
+  $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
 	$(call message,,rm -f $(out_base)/test.out)
 
 # Generated .gitignore.
diff --git a/mssql/template/makefile b/mssql/template/makefile
index 8bfaa68..325cb8d 100644
--- a/mssql/template/makefile
+++ b/mssql/template/makefile
@@ -6,17 +6,14 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
 
 cxx_tun := driver.cxx
 odb_hdr := test.hxx
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o) $(odb_hdr:.hxx=-odb.o))
+genf    := $(call odb-gen,$(odb_hdr))
+gen     := $(addprefix $(out_base)/,$(genf))
+cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
 cxx_od  := $(cxx_obj:.o=.o.d)
 
 common.l             := $(out_root)/libcommon/common/common.l
 common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
 
-driver  := $(out_base)/driver
-dist    := $(out_base)/.dist
-test    := $(out_base)/.test
-clean   := $(out_base)/.clean
-
 # Import.
 #
 $(call import,\
@@ -29,9 +26,6 @@ $(driver): $(cxx_obj) $(common.l)
 $(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
 $(cxx_obj) $(cxx_od): $(common.l.cpp-options)
 
-genf := $(addprefix $(odb_hdr:.hxx=-odb),.hxx .ixx .cxx) $(odb_hdr:.hxx=.sql)
-gen  := $(addprefix $(out_base)/,$(genf))
-
 $(gen): $(odb)
 $(gen): odb := $(odb)
 $(gen) $(dist): export odb_options += --database mssql --default-database \
@@ -63,12 +57,7 @@ $(dist):
 
 # Test.
 #
-$(test): $(driver) $(src_base)/test.std
-	$(call schema)
-	$(call message,test $<,$< --options-file $(dcf_root)/mssql.options \
->$(out_base)/test.out)
-	$(call message,,diff -u $(src_base)/test.std $(out_base)/test.out)
-	$(call message,,rm -f $(out_base)/test.out)
+$(eval $(call test-rule))
 
 # Clean.
 #
@@ -76,7 +65,7 @@ $(clean):                            \
   $(driver).o.clean                  \
   $(addsuffix .cxx.clean,$(cxx_obj)) \
   $(addsuffix .cxx.clean,$(cxx_od))  \
-  $(addprefix $(out_base)/,$(odb_hdr:.hxx=-odb.cxx.hxx.clean))
+  $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
 	$(call message,,rm -f $(out_base)/test.out)
 
 # Generated .gitignore.
diff --git a/mssql/types/makefile b/mssql/types/makefile
index 58636bd..8f86027 100644
--- a/mssql/types/makefile
+++ b/mssql/types/makefile
@@ -6,17 +6,14 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
 
 cxx_tun := driver.cxx
 odb_hdr := test.hxx
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o) $(odb_hdr:.hxx=-odb.o))
+genf    := $(call odb-gen,$(odb_hdr))
+gen     := $(addprefix $(out_base)/,$(genf))
+cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
 cxx_od  := $(cxx_obj:.o=.o.d)
 
 common.l             := $(out_root)/libcommon/common/common.l
 common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
 
-driver  := $(out_base)/driver
-dist    := $(out_base)/.dist
-test    := $(out_base)/.test
-clean   := $(out_base)/.clean
-
 # Import.
 #
 $(call import,\
@@ -29,9 +26,6 @@ $(driver): $(cxx_obj) $(common.l)
 $(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
 $(cxx_obj) $(cxx_od): $(common.l.cpp-options)
 
-genf := $(addprefix $(odb_hdr:.hxx=-odb),.hxx .ixx .cxx) $(odb_hdr:.hxx=.sql)
-gen  := $(addprefix $(out_base)/,$(genf))
-
 $(gen): $(odb)
 $(gen): odb := $(odb)
 $(gen) $(dist): export odb_options += --database mssql --default-database \
@@ -65,12 +59,7 @@ $(dist):
 
 # Test.
 #
-$(test): $(driver) $(src_base)/test.std
-	$(call schema)
-	$(call message,test $<,$< --options-file $(dcf_root)/mssql.options \
->$(out_base)/test.out)
-	$(call message,,diff -u $(src_base)/test.std $(out_base)/test.out)
-	$(call message,,rm -f $(out_base)/test.out)
+$(eval $(call test-rule))
 
 # Clean.
 #
@@ -78,7 +67,7 @@ $(clean):                            \
   $(driver).o.clean                  \
   $(addsuffix .cxx.clean,$(cxx_obj)) \
   $(addsuffix .cxx.clean,$(cxx_od))  \
-  $(addprefix $(out_base)/,$(odb_hdr:.hxx=-odb.cxx.hxx.clean))
+  $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
 	$(call message,,rm -f $(out_base)/test.out)
 
 # Generated .gitignore.
-- 
cgit v1.1