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: |
Thomas Kho | 1afed1f | 2006-07-28 13:53:52 -0500 | [diff] [blame] | 4 | # TESTDLL : the dll to test |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 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 | DLLFLAGS = @DLLFLAGS@ |
Mike McCormack | 6d9af55 | 2006-04-17 18:17:18 +0900 | [diff] [blame] | 13 | DEFS = $(EXTRADEFS) |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 14 | |
| 15 | MODULE = $(TESTDLL:%.dll=%)_test.exe |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 16 | TESTRESULTS = $(CTESTS:.c=.ok) |
| 17 | TESTPROGRAM = $(MODULE)$(DLLEXT) |
| 18 | RUNTESTFLAGS = -q -P wine -M $(TESTDLL) -T $(TOPOBJDIR) -p $(TESTPROGRAM) |
| 19 | |
Alexandre Julliard | 9953dd6 | 2006-09-11 15:43:38 +0200 | [diff] [blame] | 20 | C_SRCS = $(CTESTS) |
Alexandre Julliard | 4d6b27e | 2004-03-03 22:39:22 +0000 | [diff] [blame] | 21 | ALL_LIBS = $(IMPORTS:%=-l%) $(EXTRALIBS) $(LDFLAGS) $(LIBS) |
Alexandre Julliard | 9953dd6 | 2006-09-11 15:43:38 +0200 | [diff] [blame] | 22 | EXTRA_OBJS = testlist.o |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 23 | |
Alexandre Julliard | c3c587e | 2002-09-06 19:46:00 +0000 | [diff] [blame] | 24 | CROSSTEST = $(TESTDLL:%.dll=%)_crosstest.exe |
Alexandre Julliard | 9953dd6 | 2006-09-11 15:43:38 +0200 | [diff] [blame] | 25 | CROSSOBJS = $(C_SRCS:.c=.cross.o) $(RC_SRCS:.rc=.res.cross.o) testlist.cross.o |
Alexandre Julliard | 21ee329 | 2003-04-21 22:52:31 +0000 | [diff] [blame] | 26 | CROSSCC = @CROSSCC@ |
| 27 | CROSSWINDRES = @CROSSWINDRES@ |
Alexandre Julliard | c3c587e | 2002-09-06 19:46:00 +0000 | [diff] [blame] | 28 | |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 29 | @MAKE_RULES@ |
| 30 | |
Alexandre Julliard | bcf2a78 | 2002-12-06 19:51:20 +0000 | [diff] [blame] | 31 | all: $(TESTPROGRAM) |
| 32 | |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 33 | # Rules for .so main module |
| 34 | |
Alexandre Julliard | d62356a | 2005-05-07 12:39:52 +0000 | [diff] [blame] | 35 | $(MODULE).so: $(OBJS) $(RC_SRCS:.rc=.res) Makefile.in |
Alexandre Julliard | 523e46d | 2006-07-11 21:32:36 +0200 | [diff] [blame] | 36 | $(WINEGCC) -B$(TOOLSDIR)/tools/winebuild -mconsole $(OBJS) $(RC_SRCS:.rc=.res) -o $@ $(LIBPORT) $(ALL_LIBS) |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 37 | |
| 38 | # Rules for .exe main module |
| 39 | |
Alexandre Julliard | c3eac43 | 2004-01-26 21:29:05 +0000 | [diff] [blame] | 40 | $(MODULE): $(OBJS) $(RCOBJS) Makefile.in |
Alexandre Julliard | 4d6b27e | 2004-03-03 22:39:22 +0000 | [diff] [blame] | 41 | $(CC) $(OBJS) $(RCOBJS) -o $@ $(ALL_LIBS) |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 42 | |
| 43 | # Rules for building test list |
| 44 | |
Alexandre Julliard | 9953dd6 | 2006-09-11 15:43:38 +0200 | [diff] [blame] | 45 | testlist.c: Makefile.in $(MAKECTESTS) |
Alexandre Julliard | bcb7591 | 2005-03-16 20:02:17 +0000 | [diff] [blame] | 46 | $(MAKECTESTS) -o $@ $(CTESTS) |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 47 | |
Alexandre Julliard | 9953dd6 | 2006-09-11 15:43:38 +0200 | [diff] [blame] | 48 | testlist.o: testlist.c $(TOPSRCDIR)/include/wine/test.h |
Francois Gouget | bc8b8a2 | 2002-12-11 01:29:36 +0000 | [diff] [blame] | 49 | |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 50 | # Rules for testing |
| 51 | |
Alexandre Julliard | 5cf75e6 | 2006-08-28 13:37:44 +0200 | [diff] [blame] | 52 | check test:: $(TESTRESULTS) |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 53 | |
Alexandre Julliard | 02fa42d | 2006-03-21 12:01:31 +0100 | [diff] [blame] | 54 | $(TESTRESULTS): $(MODULE)$(DLLEXT) ../$(TESTDLL)$(DLLEXT) |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 55 | |
Alexandre Julliard | c3c587e | 2002-09-06 19:46:00 +0000 | [diff] [blame] | 56 | # Rules for cross-compiling tests |
| 57 | |
Alexandre Julliard | 21ee329 | 2003-04-21 22:52:31 +0000 | [diff] [blame] | 58 | .SUFFIXES: .cross.o .res.cross.o |
| 59 | |
| 60 | .c.cross.o: |
| 61 | $(CROSSCC) -c $(ALLCFLAGS) -o $@ $< |
| 62 | |
| 63 | .res.res.cross.o: |
| 64 | $(CROSSWINDRES) -i $< -o $@ |
| 65 | |
Alexandre Julliard | c3c587e | 2002-09-06 19:46:00 +0000 | [diff] [blame] | 66 | crosstest:: @CROSSTEST@ |
| 67 | |
| 68 | $(CROSSTEST): $(CROSSOBJS) Makefile.in |
Alexandre Julliard | 4d6b27e | 2004-03-03 22:39:22 +0000 | [diff] [blame] | 69 | $(CROSSCC) $(CROSSOBJS) -o $@ $(ALL_LIBS) |
Alexandre Julliard | c3c587e | 2002-09-06 19:46:00 +0000 | [diff] [blame] | 70 | |
Alexandre Julliard | edeee89 | 2002-08-09 01:22:40 +0000 | [diff] [blame] | 71 | # Rules for cleaning |
| 72 | |
| 73 | testclean:: |
| 74 | $(RM) $(TESTRESULTS) |
| 75 | |
| 76 | clean:: |
Alexandre Julliard | 9953dd6 | 2006-09-11 15:43:38 +0200 | [diff] [blame] | 77 | $(RM) testlist.c $(MODULE) $(TESTRESULTS) $(CROSSTEST) |