# PROGRAMS includes all test programs built on this platform.
# STDTEST_PORTABLE
#   test programs invoked via standard user interface, run on all platforms
# TESTS
#   test modules invoked through the abts suite (./testall)
# STDTEST_NONPORTABLE
#   test programs invoked via standard user interface, not portable
# OTHER_PROGRAMS
#   programs such as sendfile, that have to be invoked in a special sequence
#   or with special parameters
# TESTALL_COMPONENTS
#   programs such as globalmutexchild which the various TESTS will invoke
#   to validate process creation, pipes, dso mechanisms and so forth

# Windows Specific;
# MODEL
#   dynamic or static - refers to which set of bindings are desired
#   and controls which libraries (apr-2 or libapr-2) will be linked.
# OUTDIR
#   the library path of the libraries, and also the path within test/
#   where all of the tests for that library will be built

!IFNDEF MODEL
MODEL=dynamic
!ENDIF

INCDIR=../include

!IFNDEF OUTDIR
!IF "$(MODEL)" == "static"
OUTDIR=LibR
!ELSE
OUTDIR=Release
!ENDIF

!IF [$(COMSPEC) /c cl /nologo /? \
	| $(SystemRoot)\System32\find.exe "x64" >NUL ] == 0
OUTDIR=x64\$(OUTDIR)
!ENDIF
!ENDIF

!IF !EXIST("$(OUTDIR)\.")
!IF ([$(COMSPEC) /C mkdir $(OUTDIR)] == 0)
!ENDIF
!ENDIF

!IFNDEF INTDIR
INTDIR=$(OUTDIR)
!ELSE
!IF !EXIST("$(INTDIR)\.")
!IF ([$(COMSPEC) /C mkdir $(INTDIR)] == 0)
!ENDIF
!ENDIF
!ENDIF

!MESSAGE Building tests into $(OUTDIR) for $(MODEL)

STDTEST_PORTABLE = \
	$(OUTDIR)\testapp.exe \
	$(OUTDIR)\testall.exe \
	$(OUTDIR)\testlockperf.exe \
	$(OUTDIR)\testmutexscope.exe

OTHER_PROGRAMS = \
	$(OUTDIR)\echod.exe \
	$(OUTDIR)\sendfile.exe \
	$(OUTDIR)\sockperf.exe

TESTALL_COMPONENTS = \
	$(OUTDIR)\mod_test.dll \
	$(OUTDIR)\occhild.exe \
	$(OUTDIR)\readchild.exe \
	$(OUTDIR)\proc_child.exe \
        $(OUTDIR)\tryread.exe \
	$(OUTDIR)\sockchild.exe \
	$(OUTDIR)\testshmproducer.exe \
	$(OUTDIR)\testshmconsumer.exe \
	$(OUTDIR)\globalmutexchild.exe

ALL_TESTS = \
	$(INTDIR)\testargs.obj \
	$(INTDIR)\testatomic.obj \
	$(INTDIR)\testbase64.obj \
	$(INTDIR)\testbuckets.obj \
	$(INTDIR)\testcond.obj \
	$(INTDIR)\testcrypto.obj \
	$(INTDIR)\testdate.obj \
	$(INTDIR)\testdbd.obj \
	$(INTDIR)\testdbm.obj \
	$(INTDIR)\testdir.obj \
	$(INTDIR)\testdso.obj \
	$(INTDIR)\testdup.obj \
	$(INTDIR)\testenv.obj \
	$(INTDIR)\testescape.obj \
	$(INTDIR)\testfile.obj \
	$(INTDIR)\testfilecopy.obj \
	$(INTDIR)\testfileinfo.obj \
	$(INTDIR)\testflock.obj \
	$(INTDIR)\testfmt.obj \
	$(INTDIR)\testfnmatch.obj \
	$(INTDIR)\testglobalmutex.obj \
	$(INTDIR)\testhash.obj \
	$(INTDIR)\testhooks.obj \
	$(INTDIR)\testipsub.obj \
	$(INTDIR)\testlfs.obj \
	$(INTDIR)\testlfsabi.obj \
	$(INTDIR)\testlfsabi32.obj \
	$(INTDIR)\testlfsabi64.obj \
	$(INTDIR)\testlock.obj \
	$(INTDIR)\testmd4.obj \
	$(INTDIR)\testmd5.obj \
	$(INTDIR)\testmemcache.obj \
	$(INTDIR)\testmmap.obj \
	$(INTDIR)\testnames.obj \
	$(INTDIR)\testoc.obj \
	$(INTDIR)\testpass.obj \
	$(INTDIR)\testpath.obj \
	$(INTDIR)\testpipe.obj \
	$(INTDIR)\testpoll.obj \
	$(INTDIR)\testpools.obj \
	$(INTDIR)\testproc.obj \
	$(INTDIR)\testprocmutex.obj \
	$(INTDIR)\testqueue.obj \
	$(INTDIR)\testrand.obj \
	$(INTDIR)\testreslist.obj \
	$(INTDIR)\testrmm.obj \
	$(INTDIR)\testshm.obj \
	$(INTDIR)\testsleep.obj \
	$(INTDIR)\testsock.obj \
	$(INTDIR)\testsockets.obj \
	$(INTDIR)\testsockopt.obj \
	$(INTDIR)\teststr.obj \
	$(INTDIR)\teststrmatch.obj \
	$(INTDIR)\teststrnatcmp.obj \
	$(INTDIR)\testtable.obj \
	$(INTDIR)\testtemp.obj \
	$(INTDIR)\testthread.obj \
	$(INTDIR)\testtime.obj \
	$(INTDIR)\testud.obj\
	$(INTDIR)\testuri.obj \
	$(INTDIR)\testuser.obj \
	$(INTDIR)\testutil.obj \
	$(INTDIR)\testuuid.obj \
	$(INTDIR)\testvsn.obj \
	$(INTDIR)\testxlate.obj \
	$(INTDIR)\testxml.obj

CLEAN_DATA = testfile.tmp lfstests\large.bin \
	data\testputs.txt data\testbigfprintf.dat \
	data\testwritev.txt data\testwritev_full.txt \
	data\testflush.dat data\testxthread.dat \
	data\apr.testshm.shm

CLEAN_BUILDDIRS = Debug Release LibD LibR x64

TEST_SUBDIRS = internal

PROGRAMS = $(TESTALL_COMPONENTS) $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE) \
	$(OTHER_PROGRAMS)

TARGETS = $(PROGRAMS)

# bring in rules.mk for standard functionality
ALL: $(TARGETS)

CL = cl.exe
LD = link.exe 

!IF "$(MODEL)" == "static"
LOCAL_LIB= ..\$(OUTDIR)\apr-2.lib ..\..\expat\win32\bin\Release\libexpatMT.lib
APP_LIB= ..\$(OUTDIR)\aprapp-2.lib
STATIC_CFLAGS = /D APR_DECLARE_STATIC
!ELSE
LOCAL_LIB= ..\$(OUTDIR)\libapr-2.lib 
APP_LIB= ..\$(OUTDIR)\libaprapp-2.lib 
STATIC_CFLAGS = 
PATH=$(OUTDIR);..\$(OUTDIR);..\..\expat\win32\bin\$(OUTDIR);$(PATH)
!ENDIF

!IFDEF _DEBUG
DEBUG_CFLAGS = /MDd
!ELSE
DEBUG_CFLAGS = /MD 
!ENDIF

INCLUDES=/I "$(INCDIR)"

CFLAGS = /nologo /c /W3 /Gm /EHsc /Zi /Od $(INCLUDES) \
	 $(STATIC_CFLAGS) $(DEBUG_CFLAGS) /D "BINPATH=$(OUTDIR:\=/)" \
	 /D _DEBUG /D WIN32 /Fo"$(INTDIR)/" /FD

LD_LIBS = kernel32.lib advapi32.lib ws2_32.lib wsock32.lib \
	  ole32.lib shell32.lib rpcrt4.lib

LDFLAGS = /nologo /debug /subsystem:console /incremental:no /nodefaultlib:libcmt

SHLDFLAGS = /nologo /dll /debug /subsystem:windows /incremental:no

.c{$(INTDIR)}.obj::
	$(CL) $(CFLAGS) -c $< -Fd$(INTDIR)\ $(INCLUDES)

# STDTEST_PORTABLE;

$(OUTDIR)\testall.exe: $(ALL_TESTS) $(INTDIR)\abts.obj $(LOCAL_LIB)
	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;1

$(OUTDIR)\testapp.exe: $(INTDIR)/testapp.obj $(LOCAL_LIB) $(APP_LIB) 
	$(LD) $(LDFLAGS) /entry:wmainCRTStartup /out:"$@" $** $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;2

$(OUTDIR)\testlockperf.exe: $(INTDIR)\testlockperf.obj $(LOCAL_LIB)
	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;1

$(OUTDIR)\testmutexscope.exe: $(INTDIR)\testmutexscope.obj $(LOCAL_LIB)
	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;1

# OTHER_PROGRAMS;

$(OUTDIR)\echod.exe: $(INTDIR)\echod.obj $(LOCAL_LIB)
	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;1

$(OUTDIR)\sendfile.exe: $(INTDIR)\sendfile.obj $(LOCAL_LIB)
	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;1

$(OUTDIR)\sockperf.exe: $(INTDIR)\sockperf.obj $(LOCAL_LIB)
	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;1

# TESTALL_COMPONENTS;

$(OUTDIR)\globalmutexchild.exe: $(INTDIR)\globalmutexchild.obj $(LOCAL_LIB)
	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;1

$(OUTDIR)\mod_test.dll: $(INTDIR)/mod_test.obj $(LOCAL_LIB) 
	$(LD) $(SHLDFLAGS) /out:"$@" $** \
	       /export:print_hello /export:count_reps $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;2

$(OUTDIR)\occhild.exe: $(INTDIR)\occhild.obj $(LOCAL_LIB)
	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;1

$(OUTDIR)\proc_child.exe: $(INTDIR)\proc_child.obj $(LOCAL_LIB)
	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;1

$(OUTDIR)\readchild.exe: $(INTDIR)\readchild.obj $(LOCAL_LIB)
	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;1

$(OUTDIR)\sockchild.exe: $(INTDIR)\sockchild.obj $(LOCAL_LIB)
	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;1

$(OUTDIR)\testshmconsumer.exe: $(INTDIR)\testshmconsumer.obj $(LOCAL_LIB)
	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;1

$(OUTDIR)\testshmproducer.exe: $(INTDIR)\testshmproducer.obj $(LOCAL_LIB)
	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;1

$(OUTDIR)\tryread.exe: $(INTDIR)\tryread.obj $(LOCAL_LIB)
	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
	@if exist "$@.manifest" \
	    mt.exe -manifest "$@.manifest" -outputresource:$@;1


cleandata:
	@for %f in ($(CLEAN_DATA)) do @if EXIST %f del /f %f

clean: cleandata
	@if EXIST $(INTDIR)\. rmdir /s /q $(INTDIR)
	@if EXIST $(OUTDIR)\. rmdir /s /q $(OUTDIR)
	@for %d in ($(TEST_SUBDIRS)) do \
	    %COMSPEC% /c "cd %%d && $(MAKE) -f Makefile.win clean" \

cleanall: 
	@for %d in ($(CLEAN_BUILDDIRS) $(INTDIR) $(OUTDIR)) do \
	    @if EXIST %d\. rmdir /s /q %d
	@for %d in ($(TEST_SUBDIRS)) do \
	    %COMSPEC% /c "cd %%d & $(MAKE) -f Makefile.win cleanall" \


check: $(TESTALL_COMPONENTS) $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE)
	@for %p in ($(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE)) do @( \
	    echo Testing %p && %p -v || echo %p failed \
	)

checkall: check
	@for %d in ($(TEST_SUBDIRS)) do \
	    %COMSPEC% /c "cd %%d && $(MAKE) -f Makefile.win check" \

# DO NOT REMOVE
