# 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
#

DLLDEFS      = @DLLDEFS@
DLLFLAGS     = @DLLFLAGS@
DEFS         = $(DLLDEFS) $(EXTRADEFS)

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

C_SRCS       = $(CTESTS) $(TESTLIST)
ALL_LIBS     = $(IMPORTS:%=-l%) $(EXTRALIBS) $(LDFLAGS) $(LIBS)
DLL_LDPATH  = -L$(DLLDIR) $(IMPORTS:%=-L$(DLLDIR)/%)

CROSSTEST    = $(TESTDLL:%.dll=%)_crosstest.exe
CROSSOBJS    = $(C_SRCS:.c=.cross.o) $(RC_SRCS:.rc=.res.cross.o)
CROSSCC      = @CROSSCC@
CROSSWINDRES = @CROSSWINDRES@

@MAKE_RULES@

all: $(TESTPROGRAM)

# Rules for .so main module

$(MODULE).so: $(OBJS) $(RC_SRCS:.rc=.res) Makefile.in
	$(WINEGCC) -B$(TOOLSDIR)/tools/winebuild -mconsole $(OBJS) $(RC_SRCS:.rc=.res) -o $@ $(LIBPORT) $(DLL_LDPATH) -L$(LIBDIR) $(ALL_LIBS)

# Rules for .exe main module

$(MODULE): $(OBJS) $(RCOBJS) Makefile.in
	$(CC) $(OBJS) $(RCOBJS) -o $@ $(ALL_LIBS)

# Rules for building test list

$(TESTLIST): Makefile.in $(MAKECTESTS)
	$(MAKECTESTS) -o $@ $(CTESTS)

depend: $(TESTLIST)

# Rules for testing

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

$(TESTRESULTS): $(MODULE)$(DLLEXT) $(DLLDIR)/$(TESTDLL)$(DLLEXT)

# Rules for cross-compiling tests

.SUFFIXES: .cross.o .res.cross.o

.c.cross.o:
	$(CROSSCC) -c $(ALLCFLAGS) -o $@ $<

.res.res.cross.o:
	$(CROSSWINDRES) -i $< -o $@

crosstest:: @CROSSTEST@

$(CROSSTEST): $(CROSSOBJS) Makefile.in
	$(CROSSCC) $(CROSSOBJS) -o $@ $(ALL_LIBS)

# Rules for cleaning

testclean::
	$(RM) $(TESTRESULTS)

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