1# PROGRAMS includes all test programs built on this platform.
2# STDTEST_PORTABLE
3#   test programs invoked via standard user interface, run on all platforms
4# TESTS
5#   test modules invoked through the abts suite (./testall)
6# STDTEST_NONPORTABLE
7#   test programs invoked via standard user interface, not portable
8# OTHER_PROGRAMS
9#   programs such as sendfile, that have to be invoked in a special sequence
10#   or with special parameters
11# TESTALL_COMPONENTS
12#   programs such as globalmutexchild which the various TESTS will invoke
13#   to validate process creation, pipes, dso mechansims and so forth
14
15# Windows Specific;
16# MODEL
17#   dynamic or static - refers to which set of bindings are desired
18#   and controls which libraries (apr-1 or libapr-1) will be linked.
19# OUTDIR
20#   the library path of the libraries, and also the path within test/
21#   where all of the tests for that library will be built
22
23!IFNDEF MODEL
24MODEL=dynamic
25!ENDIF
26
27INCDIR=../include
28
29!IFNDEF OUTDIR
30!IF "$(MODEL)" == "static"
31OUTDIR=LibR
32!ELSE
33OUTDIR=Release
34!ENDIF
35
36!IF [$(COMSPEC) /c cl /nologo /? \
37	| $(SystemRoot)\System32\find.exe "x64" >NUL ] == 0
38OUTDIR=x64\$(OUTDIR)
39!ENDIF
40!ENDIF
41
42!IF !EXIST("$(OUTDIR)\.")
43!IF ([$(COMSPEC) /C mkdir $(OUTDIR)] == 0)
44!ENDIF
45!ENDIF
46
47!IFNDEF INTDIR
48INTDIR=$(OUTDIR)
49!ELSE
50!IF !EXIST("$(INTDIR)\.")
51!IF ([$(COMSPEC) /C mkdir $(INTDIR)] == 0)
52!ENDIF
53!ENDIF
54!ENDIF
55
56!MESSAGE Building tests into $(OUTDIR) for $(MODEL)
57
58STDTEST_PORTABLE = \
59	$(OUTDIR)\testapp.exe \
60	$(OUTDIR)\testall.exe \
61	$(OUTDIR)\testlockperf.exe \
62	$(OUTDIR)\testmutexscope.exe
63
64OTHER_PROGRAMS = \
65	$(OUTDIR)\echod.exe \
66	$(OUTDIR)\sendfile.exe \
67	$(OUTDIR)\sockperf.exe
68
69TESTALL_COMPONENTS = \
70	$(OUTDIR)\mod_test.dll \
71	$(OUTDIR)\occhild.exe \
72	$(OUTDIR)\readchild.exe \
73	$(OUTDIR)\proc_child.exe \
74        $(OUTDIR)\tryread.exe \
75	$(OUTDIR)\sockchild.exe \
76	$(OUTDIR)\testshmproducer.exe \
77	$(OUTDIR)\testshmconsumer.exe \
78	$(OUTDIR)\globalmutexchild.exe
79
80ALL_TESTS = $(INTDIR)\testutil.obj $(INTDIR)\testtime.obj \
81	$(INTDIR)\teststr.obj $(INTDIR)\testvsn.obj \
82	$(INTDIR)\testipsub.obj $(INTDIR)\testmmap.obj \
83	$(INTDIR)\testud.obj $(INTDIR)\testtable.obj \
84	$(INTDIR)\testsleep.obj $(INTDIR)\testpools.obj \
85	$(INTDIR)\testfmt.obj $(INTDIR)\testfile.obj \
86	$(INTDIR)\testdir.obj $(INTDIR)\testfileinfo.obj \
87	$(INTDIR)\testrand.obj $(INTDIR)\testdso.obj \
88	$(INTDIR)\testoc.obj $(INTDIR)\testdup.obj \
89	$(INTDIR)\testsockets.obj $(INTDIR)\testproc.obj \
90	$(INTDIR)\testpoll.obj $(INTDIR)\testlock.obj \
91	$(INTDIR)\testsockopt.obj $(INTDIR)\testpipe.obj \
92	$(INTDIR)\testthread.obj $(INTDIR)\testhash.obj \
93	$(INTDIR)\testargs.obj $(INTDIR)\testnames.obj \
94	$(INTDIR)\testuser.obj $(INTDIR)\testpath.obj \
95	$(INTDIR)\testenv.obj $(INTDIR)\testprocmutex.obj \
96	$(INTDIR)\testfnmatch.obj $(INTDIR)\testatomic.obj \
97	$(INTDIR)\testflock.obj $(INTDIR)\testshm.obj \
98	$(INTDIR)\testsock.obj $(INTDIR)\testglobalmutex.obj \
99	$(INTDIR)\teststrnatcmp.obj $(INTDIR)\testfilecopy.obj \
100	$(INTDIR)\testtemp.obj $(INTDIR)\testlfs.obj \
101	$(INTDIR)\testcond.obj
102
103CLEAN_DATA = testfile.tmp lfstests\large.bin \
104	data\testputs.txt data\testbigfprintf.dat \
105	data\testwritev.txt data\testwritev_full.txt \
106	data\testflush.dat data\testxthread.dat \
107	data\apr.testshm.shm
108
109CLEAN_BUILDDIRS = Debug Release LibD LibR 9x x64
110
111TEST_SUBDIRS = internal
112
113PROGRAMS = $(TESTALL_COMPONENTS) $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE) \
114	$(OTHER_PROGRAMS)
115
116TARGETS = $(PROGRAMS)
117
118# bring in rules.mk for standard functionality
119ALL: $(TARGETS)
120
121CL = cl.exe
122LD = link.exe 
123
124!IF "$(MODEL)" == "static"
125LOCAL_LIB= ..\$(OUTDIR)\apr-1.lib 
126APP_LIB= ..\$(OUTDIR)\aprapp-1.lib 
127STATIC_CFLAGS = /D APR_DECLARE_STATIC
128!ELSE
129LOCAL_LIB= ..\$(OUTDIR)\libapr-1.lib 
130APP_LIB= ..\$(OUTDIR)\libaprapp-1.lib 
131STATIC_CFLAGS = 
132!ENDIF
133
134!IFDEF _DEBUG
135DEBUG_CFLAGS = /MDd
136!ELSE
137DEBUG_CFLAGS = /MD 
138!ENDIF
139
140INCLUDES=/I "$(INCDIR)"
141
142CFLAGS = /nologo /c /W3 /Gm /EHsc /Zi /Od $(INCLUDES) \
143	 $(STATIC_CFLAGS) $(DEBUG_CFLAGS) /D "BINPATH=$(OUTDIR:\=/)" \
144	 /D _DEBUG /D WIN32 /Fo"$(INTDIR)/" /FD
145
146LD_LIBS = kernel32.lib advapi32.lib ws2_32.lib wsock32.lib \
147	  ole32.lib shell32.lib rpcrt4.lib
148
149LDFLAGS = /nologo /debug /subsystem:console /incremental:no 
150SHLDFLAGS = /nologo /dll /debug /subsystem:windows /incremental:no
151
152.c{$(INTDIR)}.obj::
153	$(CL) $(CFLAGS) -c $< -Fd$(INTDIR)\ $(INCLUDES)
154
155# STDTEST_PORTABLE;
156
157$(OUTDIR)\testall.exe: $(ALL_TESTS) $(INTDIR)\abts.obj $(LOCAL_LIB)
158	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
159	@if exist "$@.manifest" \
160	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
161
162$(OUTDIR)\testapp.exe: $(INTDIR)/testapp.obj $(LOCAL_LIB) $(APP_LIB) 
163	$(LD) $(LDFLAGS) /entry:wmainCRTStartup /out:"$@" $** $(LD_LIBS)
164	@if exist "$@.manifest" \
165	    mt.exe -manifest "$@.manifest" -outputresource:$@;2
166
167$(OUTDIR)\testlockperf.exe: $(INTDIR)\testlockperf.obj $(LOCAL_LIB)
168	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
169	@if exist "$@.manifest" \
170	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
171
172$(OUTDIR)\testmutexscope.exe: $(INTDIR)\testmutexscope.obj $(LOCAL_LIB)
173	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
174	@if exist "$@.manifest" \
175	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
176
177# OTHER_PROGRAMS;
178
179$(OUTDIR)\echod.exe: $(INTDIR)\echod.obj $(LOCAL_LIB)
180	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
181	@if exist "$@.manifest" \
182	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
183
184$(OUTDIR)\sendfile.exe: $(INTDIR)\sendfile.obj $(LOCAL_LIB)
185	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
186	@if exist "$@.manifest" \
187	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
188
189$(OUTDIR)\sockperf.exe: $(INTDIR)\sockperf.obj $(LOCAL_LIB)
190	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
191	@if exist "$@.manifest" \
192	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
193
194# TESTALL_COMPONENTS;
195
196$(OUTDIR)\globalmutexchild.exe: $(INTDIR)\globalmutexchild.obj $(LOCAL_LIB)
197	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
198	@if exist "$@.manifest" \
199	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
200
201$(OUTDIR)\mod_test.dll: $(INTDIR)/mod_test.obj $(LOCAL_LIB) 
202	$(LD) $(SHLDFLAGS) /out:"$@" $** \
203	       /export:print_hello /export:count_reps $(LD_LIBS)
204	@if exist "$@.manifest" \
205	    mt.exe -manifest "$@.manifest" -outputresource:$@;2
206
207$(OUTDIR)\occhild.exe: $(INTDIR)\occhild.obj $(LOCAL_LIB)
208	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
209	@if exist "$@.manifest" \
210	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
211
212$(OUTDIR)\proc_child.exe: $(INTDIR)\proc_child.obj $(LOCAL_LIB)
213	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
214	@if exist "$@.manifest" \
215	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
216
217$(OUTDIR)\readchild.exe: $(INTDIR)\readchild.obj $(LOCAL_LIB)
218	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
219	@if exist "$@.manifest" \
220	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
221
222$(OUTDIR)\sockchild.exe: $(INTDIR)\sockchild.obj $(LOCAL_LIB)
223	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
224	@if exist "$@.manifest" \
225	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
226
227$(OUTDIR)\testshmconsumer.exe: $(INTDIR)\testshmconsumer.obj $(LOCAL_LIB)
228	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
229	@if exist "$@.manifest" \
230	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
231
232$(OUTDIR)\testshmproducer.exe: $(INTDIR)\testshmproducer.obj $(LOCAL_LIB)
233	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
234	@if exist "$@.manifest" \
235	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
236
237$(OUTDIR)\tryread.exe: $(INTDIR)\tryread.obj $(LOCAL_LIB)
238	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
239	@if exist "$@.manifest" \
240	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
241
242
243cleandata:
244	@for %f in ($(CLEAN_DATA)) do @if EXIST %f del /f %f
245
246clean: cleandata
247	@if EXIST $(INTDIR)\. rmdir /s /q $(INTDIR)
248	@if EXIST $(OUTDIR)\. rmdir /s /q $(OUTDIR)
249	@for %d in ($(TEST_SUBDIRS)) do \
250	    %COMSPEC% /c "cd %%d && $(MAKE) -f Makefile.win clean" \
251
252cleanall: 
253	@for %d in ($(CLEAN_BUILDDIRS) $(INTDIR) $(OUTDIR)) do \
254	    @if EXIST %d\. rmdir /s /q %d
255	@for %d in ($(TEST_SUBDIRS)) do \
256	    %COMSPEC% /c "cd %%d & $(MAKE) -f Makefile.win cleanall" \
257
258
259!IF "$(MODEL)" != "static"
260PATH=$(OUTDIR);..\$(OUTDIR);$(PATH)
261!ENDIF
262
263check: $(TESTALL_COMPONENTS) $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE)
264	@for %p in ($(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE)) do @( \
265	    echo Testing %p && %p -v || echo %p failed \
266	)
267
268checkall: check
269	@for %d in ($(TEST_SUBDIRS)) do \
270	    %COMSPEC% /c "cd %%d && $(MAKE) -f Makefile.win check" \
271
272# DO NOT REMOVE
273