Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 1 | # Global rules for building dll unit tests -*-Makefile-*- |
| 2 | # |
| 3 | # Each individual makefile should define the following variables: |
| 4 | # DLLTEST : the dll to test |
| 5 | # CTESTS : list of C test programs |
| 6 | # EXTRALIBS : extra libraries to link in (optional) |
| 7 | # EXTRADEFS : extra symbol definitions, like -DWINELIB (optional) |
| 8 | # |
| 9 | # plus all variables required by the global Make.rules.in |
| 10 | # |
| 11 | |
Alexandre Julliard | 16cd861 | 2003-09-24 19:01:44 +0000 | [diff] [blame] | 12 | DEFS = $(EXTRADEFS) |
| 13 | DLLFLAGS = @DLLFLAGS@ |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 14 | |
| 15 | MODULE = $(TESTDLL:%.dll=%)_test.exe |
| 16 | TESTLIST = testlist.c |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 17 | TESTRESULTS = $(CTESTS:.c=.ok) |
| 18 | TESTPROGRAM = $(MODULE)$(DLLEXT) |
| 19 | RUNTESTFLAGS = -q -P wine -M $(TESTDLL) -T $(TOPOBJDIR) -p $(TESTPROGRAM) |
| 20 | |
| 21 | C_SRCS = $(CTESTS) |
Francois Gouget | bc8b8a2 | 2002-12-11 01:29:36 +0000 | [diff] [blame] | 22 | EXTRA_SRCS = $(TESTLIST) |
Alexandre Julliard | 0cf7533 | 2002-10-30 20:36:21 +0000 | [diff] [blame] | 23 | EXTRA_OBJS = $(TESTLIST:.c=.o) |
Alexandre Julliard | 4d6b27e | 2004-03-03 22:39:22 +0000 | [diff] [blame] | 24 | ALL_LIBS = $(IMPORTS:%=-l%) $(EXTRALIBS) $(LDFLAGS) $(LIBS) |
Alexandre Julliard | 21ee329 | 2003-04-21 22:52:31 +0000 | [diff] [blame] | 25 | IMPORTLIBS = $(IMPORTS:%=$(DLLDIR)/lib%.$(IMPLIBEXT)) |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 26 | |
Alexandre Julliard | c3c587e | 2002-09-06 19:46:00 +0000 | [diff] [blame] | 27 | CROSSTEST = $(TESTDLL:%.dll=%)_crosstest.exe |
Alexandre Julliard | 21ee329 | 2003-04-21 22:52:31 +0000 | [diff] [blame] | 28 | CROSSOBJS = $(C_SRCS:.c=.cross.o) $(RC_SRCS:.rc=.res.cross.o) $(TESTLIST:.c=.cross.o) |
| 29 | CROSSCC = @CROSSCC@ |
| 30 | CROSSWINDRES = @CROSSWINDRES@ |
Alexandre Julliard | c3c587e | 2002-09-06 19:46:00 +0000 | [diff] [blame] | 31 | |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 32 | @MAKE_RULES@ |
| 33 | |
Alexandre Julliard | bcf2a78 | 2002-12-06 19:51:20 +0000 | [diff] [blame] | 34 | all: $(TESTPROGRAM) |
| 35 | |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 36 | # Rules for .so main module |
| 37 | |
Alexandre Julliard | ccc3d66 | 2004-03-02 06:58:21 +0000 | [diff] [blame] | 38 | $(MODULE).so: $(OBJS) $(RC_SRCS:.rc=.res) $(IMPORTLIBS) Makefile.in |
Alexandre Julliard | 6be39b6 | 2004-03-09 04:54:07 +0000 | [diff] [blame] | 39 | $(WINEGCC) -B$(TOOLSDIR)/tools/winebuild -mconsole $(OBJS) $(RC_SRCS:.rc=.res) -o $@ $(LIBPORT) -L$(DLLDIR) -L$(LIBDIR) $(ALL_LIBS) |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 40 | |
| 41 | # Rules for .exe main module |
| 42 | |
Alexandre Julliard | c3eac43 | 2004-01-26 21:29:05 +0000 | [diff] [blame] | 43 | $(MODULE): $(OBJS) $(RCOBJS) Makefile.in |
Alexandre Julliard | 4d6b27e | 2004-03-03 22:39:22 +0000 | [diff] [blame] | 44 | $(CC) $(OBJS) $(RCOBJS) -o $@ $(ALL_LIBS) |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 45 | |
| 46 | # Rules for building test list |
| 47 | |
Alexandre Julliard | 3110e95 | 2003-09-06 02:30:30 +0000 | [diff] [blame] | 48 | $(TESTLIST): Makefile.in $(TOPSRCDIR)/tools/make_ctests |
Dimitrie O. Paun | e39e8a1 | 2002-11-11 20:25:54 +0000 | [diff] [blame] | 49 | $(TOPSRCDIR)/tools/make_ctests $(CTESTS) >$(TESTLIST) || $(RM) $(TESTLIST) |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 50 | |
Francois Gouget | bc8b8a2 | 2002-12-11 01:29:36 +0000 | [diff] [blame] | 51 | depend: $(TESTLIST) |
| 52 | |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 53 | # Rules for testing |
| 54 | |
| 55 | check test:: $(TESTRESULTS) $(SUBDIRS:%=%/__test__) |
| 56 | |
Alexandre Julliard | 309fde7 | 2002-12-13 20:45:39 +0000 | [diff] [blame] | 57 | $(TESTRESULTS): $(MODULE)$(DLLEXT) $(DLLDIR)/$(TESTDLL)$(DLLEXT) |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 58 | |
Alexandre Julliard | c3c587e | 2002-09-06 19:46:00 +0000 | [diff] [blame] | 59 | # Rules for cross-compiling tests |
| 60 | |
Alexandre Julliard | 21ee329 | 2003-04-21 22:52:31 +0000 | [diff] [blame] | 61 | .SUFFIXES: .cross.o .res.cross.o |
| 62 | |
| 63 | .c.cross.o: |
| 64 | $(CROSSCC) -c $(ALLCFLAGS) -o $@ $< |
| 65 | |
| 66 | .res.res.cross.o: |
| 67 | $(CROSSWINDRES) -i $< -o $@ |
| 68 | |
Alexandre Julliard | c3c587e | 2002-09-06 19:46:00 +0000 | [diff] [blame] | 69 | crosstest:: @CROSSTEST@ |
| 70 | |
| 71 | $(CROSSTEST): $(CROSSOBJS) Makefile.in |
Alexandre Julliard | 4d6b27e | 2004-03-03 22:39:22 +0000 | [diff] [blame] | 72 | $(CROSSCC) $(CROSSOBJS) -o $@ $(ALL_LIBS) |
Alexandre Julliard | c3c587e | 2002-09-06 19:46:00 +0000 | [diff] [blame] | 73 | |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 74 | # Rules for cleaning |
| 75 | |
| 76 | testclean:: |
| 77 | $(RM) $(TESTRESULTS) |
| 78 | |
| 79 | clean:: |
Alexandre Julliard | c3c587e | 2002-09-06 19:46:00 +0000 | [diff] [blame] | 80 | $(RM) $(MODULE) $(TESTLIST) $(TESTRESULTS) $(CROSSTEST) |