# Global rules for building dll unit tests     -*-Makefile-*-
#
# Each individual makefile should define the following variables:
# DLLTEST      : the dll to test
# CTESTS       : list of C test programs
# EXTRALIBS    : extra libraries to link in (optional)
# EXTRADEFS    : extra symbol definitions, like -DWINELIB (optional)
#
# plus all variables required by the global Make.rules.in
#

DEFS         = @DLLFLAGS@ -DSTRICT -DNONAMELESSUNION -DNONAMELESSSTRUCT $(EXTRADEFS)
LDDLLFLAGS   = @LDDLLFLAGS@

MODULE       = $(TESTDLL:%.dll=%)_test.exe
TESTLIST     = testlist.c
TESTMAIN     = $(TOPOBJDIR)/programs/winetest/wtmain.o
TESTRESULTS  = $(CTESTS:.c=.ok)
TESTPROGRAM  = $(MODULE)$(DLLEXT)
RUNTESTFLAGS = -q -P wine -M $(TESTDLL) -T $(TOPOBJDIR) -p $(TESTPROGRAM)

C_SRCS       = $(CTESTS)
EXTRA_OBJS   = $(TESTMAIN) $(TESTLIST:.c=.o)
ALL_LIBS     = $(LIBWINE) $(EXTRALIBS) $(LIBS)

CROSSTEST    = $(TESTDLL:%.dll=%)_crosstest.exe
CROSSTESTMAIN= $(TOPOBJDIR)/programs/winetest/wtmain.cross.o
CROSSOBJS    = $(C_SRCS:.c=.cross.o) $(TESTLIST:.c=.cross.o) $(CROSSTESTMAIN)

@MAKE_RULES@

# Rule for main module spec file

$(MODULE).spec.c: $(RC_SRCS:.rc=.res) $(OBJS) $(WINEBUILD)
	$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -exe $(MODULE) -mcui $(RC_SRCS:%.rc=-res %.res) $(OBJS) -L$(DLLDIR) $(DELAYIMPORTS:%=-dl%) $(IMPORTS:%=-l%)

# Rules for .so main module

$(MODULE).so: $(MODULE).spec.o $(OBJS) Makefile.in
	$(LDSHARED) $(LDDLLFLAGS) $(MODULE).spec.o $(OBJS) -o $@ $(ALL_LIBS)

# Rules for .exe main module

$(MODULE): $(OBJS) $(RCOBJS) Makefile.in
	$(CC) $(OBJS) $(RCOBJS) -o $@ $(DELAYIMPORTS:%=-l%) $(IMPORTS:%=-l%) $(ALL_LIBS)

# Rules for building test list

$(TESTLIST): Makefile.in
	$(TOPSRCDIR)/programs/winetest/make_ctests $(CTESTS) >$(TESTLIST) || $(RM) $(TESTLIST)

# Rules for checking that no imports are missing

CHECKLINK_RPATH = library

checklink:: $(MODULE).so $(SUBDIRS:%=%/__checklink__)
	$(CC) -o checklink $(CHECKLINK_RPATH:%=-Wl,-rpath,$(TOPOBJDIR)/%) $(TOPSRCDIR)/library/checklink.c $(MODULE).so && $(RM) checklink

# Rules for testing

check test:: $(TESTRESULTS) $(SUBDIRS:%=%/__test__)

$(TESTRESULTS): $(MODULE)$(DLLEXT) $(TOPOBJDIR)/dlls/$(TESTDLL)$(DLLEXT)

$(TESTMAIN):
	cd $(TOPOBJDIR)/programs/winetest && $(MAKE) wtmain.o

# Rules for cross-compiling tests

crosstest:: @CROSSTEST@

$(CROSSTEST): $(CROSSOBJS) Makefile.in
	$(CROSSCC) $(CROSSOBJS) -o $@ $(DELAYIMPORTS:%=-l%) $(IMPORTS:%=-l%) $(LIBS)

$(CROSSTESTMAIN):
	cd $(TOPOBJDIR)/programs/winetest && $(MAKE) wtmain.cross.o

# Rules for cleaning

testclean::
	$(RM) $(TESTRESULTS)

clean::
	$(RM) $(MODULE) $(TESTLIST) $(TESTRESULTS) $(CROSSTEST)
