From 16cb1bf22f72db0ac47080e364ffbc79a3ec174a Mon Sep 17 00:00:00 2001 From: rpj Date: Mon, 14 Aug 2000 03:43:09 +0000 Subject: 2000-08-13 Ross Johnson * errno.c: Add _MD precompile condition; thus far had no effect when using /MD compile option but I thnk it should be there. * exit.c: Add __cplusplus to various #if lines; was compiling SEH code even when VC++ had C++ compile options. * private.c: ditto. * create.c (pthread_create): Add PT_STDCALL macro to function pointer arg in _beginthread(). * pthread.h: PT_STDCALL really does need to be defined in both this and impliment.h; don't set it to __cdecl - this macro is only used to extend function pointer casting for functions that will be passed as parameters. (~PThreadCleanup): add cast and group expression. (_errno): Add _MD compile conditional. (PtW32NoCatchWarn): Change pragma message. * implement.h: Move and change PT_STDCALL define. * need_errno.h: Add _MD to compilation conditional. * GNUmakefile: Substantial rewrite for new naming convention; set for nil optimisation (turn it up when we have a working library build; add target "fake.a" to build a libpthreadw32.a from the VC++ built DLL pthreadVCE.dll. * pthread.def (LIBRARY): Don't specify in the .def file - it is specified on the linker command line since we now use the same .def file for variously named .dlls. * Makefile: Substantial rewrite for new naming convention; default nmake target only issues a help message; run nmake with specific target corresponding to the EH scheme being used. * README: Update information; add naming convention explanation. * ANNOUNCE: Update information. 2000-08-12 Ross Johnson * pthread.h: Add compile-time message when using MSC_VER compiler and C++ EH to warn application programmers to use PtW32Catch instead of catch(...) if they want cancelation and pthread_exit to work. * implement.h: Remove #include ; we use our own local semaphore.h. tests/ChangeLog: 2000-08-13 Ross Johnson * condvar3.c: Minor change to eliminate compiler warning. * condvar4.c: ditto. * condvar5.c: ditto. * condvar6.c: ditto. * condvar7.c: ditto. * condvar8.c: ditto. * condvar9.c: ditto. * exit1.c: Function needed return statement. * cleanup1.c: Remove unnecessary printf arg. * cleanup2.c: Fix cast. * rwlock6.c: Fix casts. * exception1.c (PtW32CatchAll): Had the wrong name; fix casts. * cancel3.c: Remove unused waitLock variable. * GNUmakefile: Change library/dll naming; add new tests; general minor changes. * Makefile: Change library/dll naming; add targets for testing each of the two VC++ EH scheme versions; default target now issues help message; compile warnings now interpreted as errors to stop the make; add new tests; restructure to remove prerequisites needed otherwise. * README: Updated. --- tests/Makefile | 142 ++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 85 insertions(+), 57 deletions(-) (limited to 'tests/Makefile') 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 -- cgit v1.2.3