summaryrefslogtreecommitdiff
path: root/tests/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Makefile')
-rw-r--r--tests/Makefile142
1 files changed, 85 insertions, 57 deletions
diff --git a/tests/Makefile b/tests/Makefile
index 8143b46..08cfcce 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -9,26 +9,35 @@ TOUCH = echo Passed >
ECHO = @echo
CPHDR = pthread.h semaphore.h sched.h
-CPLIB = pthread.lib
-CPDLL = pthread.dll
-CFLAGS= /W3 /MT /nologo /Yd /Zi -D_WIN32_WINNT=0x400 -DSTDCALL=_stdcall
+# C++ Exceptions
+VCEFLAGS = /GX /TP /DPtW32NoCatchWarn
+VCELIB = pthreadVCE.lib
+VCEDLL = pthreadVCE.dll
+# Structured Exceptions
+VSEFLAGS =
+VSELIB = pthreadVSE.lib
+VSEDLL = pthreadVSE.dll
+
+CFLAGS= /W3 /WX /MT /nologo /Yd /Zi -D_WIN32_WINNT=0x400
LFLAGS= /INCREMENTAL:NO
-LIBS = .\pthread.lib
INCLUDES=-I.
BUILD_DIR=..
COPYFILES = $(CPHDR) $(CPLIB) $(CPDLL)
+TEST =
+EHFLAGS =
+
# If a test case returns a non-zero exit code to the shell, make will
# stop.
PASSES= loadfree.pass \
- mutex1.pass condvar1.pass condvar2.pass \
+ mutex1.pass mutex2.pass mutex3.pass \
+ condvar1.pass condvar2.pass \
exit1.pass create1.pass equal1.pass \
exit2.pass exit3.pass \
join0.pass join1.pass join2.pass \
- mutex2.pass mutex3.pass \
count1.pass once1.pass tsd1.pass \
self1.pass self2.pass \
cancel1.pass cancel2.pass \
@@ -38,78 +47,53 @@ PASSES= loadfree.pass \
errno1.pass \
rwlock1.pass rwlock2.pass rwlock3.pass rwlock4.pass rwlock5.pass rwlock6.pass \
context1.pass \
- cancel3.pass cancel4.pass cleanup1.pass \
- cleanup2.pass cleanup3.pass \
+ cancel3.pass cancel4.pass \
+ cleanup0.pass cleanup1.pass cleanup2.pass cleanup3.pass \
exception1.pass
-all: $(CPLIB) $(CPDLL) $(CPHDR) $(PASSES)
- @ $(ECHO) ALL TESTS PASSED! Congratulations!
+all:
+ @ $(ECHO) Run one of the following command lines:
+ @ $(ECHO) nmake clean VCE (to test using dll with C++ exception handling)
+ @ $(ECHO) nmake clean VSE (to test using dll with structured exception handling)
-loadfree.pass: loadfree.exe
-mutex1.pass: mutex1.exe
-mutex2.pass: mutex2.exe
-exit1.pass: exit1.exe
-condvar1.pass: condvar1.exe
-self1.pass: self1.exe
-condvar2.pass: condvar2.exe condvar1.pass
-create1.pass: create1.exe mutex2.pass
-cancel1.pass: cancel1.exe create1.pass
-cancel2.pass: cancel2.exe cancel1.pass
-mutex3.pass: mutex3.exe create1.pass
-equal1.pass: equal1.exe create1.pass
-exit2.pass: exit2.exe create1.pass
-exit3.pass: exit3.exe create1.pass
-join0.pass: join0.exe create1.pass
-join1.pass: join1.exe create1.pass
-join2.pass: join2.exe create1.pass
-count1.pass: count1.exe join1.pass
-once1.pass: once1.exe create1.pass
-tsd1.pass: tsd1.exe join1.pass
-self2.pass: self2.exe create1.pass
-eyal1.pass: eyal1.exe tsd1.pass
-condvar3.pass: condvar3.exe create1.pass
-condvar4.pass: condvar4.exe create1.pass
-condvar5.pass: condvar5.exe condvar4.pass
-condvar6.pass: condvar6.exe condvar5.pass
-condvar7.pass: condvar7.exe condvar6.pass cleanup1.pass
-condvar8.pass: condvar8.exe condvar7.pass
-condvar9.pass: condvar9.exe condvar8.pass
-errno1.pass: errno1.exe mutex3.pass
-rwlock1.pass: rwlock1.exe condvar6.pass
-rwlock2.pass: rwlock2.exe rwlock1.pass
-rwlock3.pass: rwlock3.exe rwlock2.pass
-rwlock4.pass: rwlock4.exe rwlock3.pass
-rwlock5.pass: rwlock5.exe rwlock4.pass
-rwlock6.pass: rwlock6.exe rwlock5.pass
-context1.pass: context1.exe cancel2.pass
-cancel3.pass: cancel3.exe context1.pass
-cancel4.pass: cancel4.exe cancel3.pass
-cleanup1.pass: cleanup1.exe cancel4.pass
-cleanup2.pass: cleanup2.exe cleanup1.pass
-cleanup3.pass: cleanup3.exe cleanup2.pass
-exception1.pass: exception1.exe cancel4.pass
+auto: clean VCE clean VSE
+
+tests: $(CPLIB) $(CPDLL) $(CPHDR) $(PASSES)
+ @ $(ECHO) ALL TESTS PASSED! Congratulations!
$(PASSES): $*.exe
+ @ $(ECHO) ... Running $(TEST) test: $*.exe
@ .\$*.exe
- @ $(ECHO) Passed
+ @ $(ECHO) ...... Passed
@ $(TOUCH) $*.pass
+VCE:
+ @ nmake TEST="$@" CPLIB="$(VCELIB)" CPDLL="$(VCEDLL)" EHFLAGS="$(VCEFLAGS)" tests
+
+VSE:
+ @ nmake TEST="$@" CPLIB="$(VSELIB)" CPDLL="$(VSEDLL)" EHFLAGS="$(VSEFLAGS)" tests
+
.c.exe:
- @ $(CC) $(CFLAGS) $(INCLUDES) $< /Fe$@ /link $(LFLAGS) $(LIBS)
+ @ $(ECHO) Compiling $@
+ @ $(CC) $(EHFLAGS) $(CFLAGS) $(INCLUDES) $< /Fe$@ /link $(LFLAGS) $(CPLIB)
.c.pre:
- @ $(CC) /E $(CFLAGS) $(INCLUDES) /Fe$@ $<
+ @ $(CC) /E $(EHFLAGS) $(CFLAGS) $(INCLUDES) /Fe$@ $<
$(COPYFILES):
@ $(ECHO) Copying $@
@ $(CP) $(BUILD_DIR)\$@ .
+pthread.dll:
+ @ $(CP) $(CPDLL) $*.dll
+ @ $(CP) $(CPLIB) $*.lib
+
clean:
- $(RM) *.dll
+ - $(RM) *.lib
- $(RM) pthread.h
- $(RM) semaphore.h
- $(RM) sched.h
- - $(RM) *.lib
- $(RM) *.e
- $(RM) *.obj
- $(RM) *.pdb
@@ -117,3 +101,47 @@ clean:
- $(RM) *.exe
- $(RM) *.pass
+loadfree.pass: pthread.dll
+mutex1.pass:
+mutex2.pass:
+exit1.pass:
+condvar1.pass:
+self1.pass:
+condvar2.pass: condvar1.pass
+create1.pass: mutex2.pass
+cancel1.pass: create1.pass
+cancel2.pass: cancel1.pass
+mutex3.pass: create1.pass
+equal1.pass: create1.pass
+exit2.pass: create1.pass
+exit3.pass: create1.pass
+join0.pass: create1.pass
+join1.pass: create1.pass
+join2.pass: create1.pass
+count1.pass: join1.pass
+once1.pass: create1.pass
+tsd1.pass: join1.pass
+self2.pass: create1.pass
+eyal1.pass: tsd1.pass
+condvar3.pass: create1.pass
+condvar4.pass: create1.pass
+condvar5.pass: condvar4.pass
+condvar6.pass: condvar5.pass
+condvar7.pass: condvar6.pass cleanup1.pass
+condvar8.pass: condvar7.pass
+condvar9.pass: condvar8.pass
+errno1.pass: mutex3.pass
+rwlock1.pass: condvar6.pass
+rwlock2.pass: rwlock1.pass
+rwlock3.pass: rwlock2.pass
+rwlock4.pass: rwlock3.pass
+rwlock5.pass: rwlock4.pass
+rwlock6.pass: rwlock5.pass
+context1.pass: cancel2.pass
+cancel3.pass: context1.pass
+cancel4.pass: cancel3.pass
+cleanup0.pass: cancel4.pass
+cleanup1.pass: cleanup0.pass
+cleanup2.pass: cleanup1.pass
+cleanup3.pass: cleanup2.pass
+exception1.pass: cancel4.pass