diff options
Diffstat (limited to 'tests/Makefile')
| -rw-r--r-- | tests/Makefile | 142 | 
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
  | 
