Preliminary version of the C unit tests run-time environment.
Added make rules for building and running C unit tests.
diff --git a/Make.rules.in b/Make.rules.in
index 91b061b..0eb61c7 100644
--- a/Make.rules.in
+++ b/Make.rules.in
@@ -59,10 +59,6 @@
LINTFLAGS = @LINTFLAGS@
ALLLINTFLAGS = $(LINTFLAGS) $(DEFS) $(OPTIONS) $(DIVINCL)
WINAPI_CHECK = $(TOPSRCDIR)/tools/winapi_check/winapi_check
-WINETEST = $(TOPOBJDIR)/programs/winetest/winetest
-RUNTEST = $(TOPSRCDIR)/programs/winetest/runtest
-RUNTESTFLAGS = -q -P wine -M $(MODULE) -T $(TOPOBJDIR)
-TESTRESULTS = $(PLTESTS:.pl=.ok) $(CTESTS:.c=.ok)
WINEBUILD = $(TOPOBJDIR)/tools/winebuild/winebuild
MAKEDEP = $(TOPOBJDIR)/tools/makedep
WRC = $(TOPOBJDIR)/tools/wrc/wrc
@@ -74,6 +70,15 @@
LIBUNICODE= -L$(TOPOBJDIR)/unicode -lwine_unicode
LIBUUID = -L$(TOPOBJDIR)/ole -lwine_uuid
+WINETEST = $(TOPOBJDIR)/programs/winetest/winetest
+RUNTEST = $(TOPSRCDIR)/programs/winetest/runtest
+RUNTESTFLAGS = -q -P wine -M $(MODULE) -T $(TOPOBJDIR)
+TESTRESULTS = $(PLTESTS:.pl=.ok) $(CTESTS:.c=.ok)
+TESTPROGRAM = tests/$(MODULE)_test
+TESTLIST = tests/testlist.c
+TESTOBJS = $(TESTMAIN) $(TESTLIST:.c=.o) $(CTESTS:.c=.o)
+TESTMAIN = $(TOPOBJDIR)/programs/winetest/wtmain.o
+
@SET_MAKE@
# Installation infos
@@ -130,6 +135,9 @@
.c.ln:
$(LINT) -c $(ALLLINTFLAGS) $< || ( $(RM) $@ && exit 1 )
+.c.ok:
+ $(RUNTEST) $(RUNTESTFLAGS) -p $(TESTPROGRAM) $< && touch $@
+
.pl.ok:
$(RUNTEST) $(RUNTESTFLAGS) $< && touch $@
@@ -217,7 +225,7 @@
cd `dirname $@` && $(MAKE) depend
depend: $(MAKEDEP) $(GEN_C_SRCS) $(SUBDIRS:%=%/__depend__)
- $(MAKEDEP) $(DIVINCL) -C$(SRCDIR) $(C_SRCS) $(RC_SRCS) $(RC_SRCS16) $(MC_SRCS) $(EXTRA_SRCS) -C. $(GEN_C_SRCS)
+ $(MAKEDEP) $(DIVINCL) -C$(SRCDIR) $(C_SRCS) $(RC_SRCS) $(RC_SRCS16) $(MC_SRCS) $(EXTRA_SRCS) $(CTESTS) -C. $(GEN_C_SRCS)
# Rules for cleaning
@@ -248,11 +256,28 @@
test:: $(TESTRESULTS)
-$(TESTRESULTS): $(WINETEST)
+$(PLTESTS:.c=.ok): $(WINETEST)
+$(CTESTS:.c=.ok): $(TESTPROGRAM).so
$(WINETEST):
cd $(TOPOBJDIR)/programs/winetest && $(MAKE) winetest
+$(TESTMAIN):
+ cd $(TOPOBJDIR)/programs/winetest && $(MAKE) wtmain.o
+
+$(TESTLIST): Makefile.in
+ $(TOPSRCDIR)/programs/winetest/make_ctests $(CTESTS) >$(TESTLIST) || $(RM) $(TESTLIST)
+
+$(TESTPROGRAM).so: $(TESTPROGRAM).spec.o $(TESTOBJS)
+ $(LDSHARED) $(LDDLLFLAGS) $(TESTPROGRAM).spec.o $(TESTOBJS) -o $@ $(LIBWINE) $(LIBS)
+
+$(TESTPROGRAM).tmp.o: $(TESTOBJS)
+ $(LDCOMBINE) $(TESTOBJS) -o $@
+ -strip --strip-unneeded $@
+
+$(TESTPROGRAM).spec.c: $(TESTPROGRAM).spec $(TESTPROGRAM).tmp.o $(WINEBUILD)
+ $(LDPATH) $(WINEBUILD) @DLLFLAGS@ -L$(DLLDIR) -sym $(TESTPROGRAM).tmp.o -o $@ -spec $(SRCDIR)/$(TESTPROGRAM).spec
+
# Misc. rules
$(SPEC_SRCS:.spec=.spec.c): $(WINEBUILD)