diff options
author | rpj <rpj> | 2005-04-01 09:00:27 +0000 |
---|---|---|
committer | rpj <rpj> | 2005-04-01 09:00:27 +0000 |
commit | f7d9daf2243a111623aff7856b24632ef49cefcc (patch) | |
tree | 8bc4fabc31812fb64d2d4ac558f07908757b01a6 | |
parent | f6f9976af7a520dd1aeced4f104f4d4711f28e23 (diff) |
''
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | GNUmakefile | 12 | ||||
-rw-r--r-- | Makefile | 11 | ||||
-rw-r--r-- | README | 16 | ||||
-rw-r--r-- | tests/ChangeLog | 6 | ||||
-rw-r--r-- | tests/GNUmakefile | 15 | ||||
-rw-r--r-- | tests/Makefile | 12 | ||||
-rw-r--r-- | tests/self1.c | 7 |
8 files changed, 82 insertions, 3 deletions
@@ -1,3 +1,9 @@ +2005-04-01 Ross Johnson <ross at callisto.canberra.edu.au> + + * GNUmakefile: Add target to build libpthreadGC1.a as a static link + library. + * Makefile: Likewise for pthreadGC1.lib. + 2005-04-01 Kevin Lussier <Kevin at codegreennetworks.com> * sem_timedwait.c (sem_timedwait): Increase size of temp variables to diff --git a/GNUmakefile b/GNUmakefile index 9e6be70..18181e4 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -29,7 +29,7 @@ # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA # -DLL_VER = 2 +DLL_VER = 1 DEVROOT = C:\PTHREADS @@ -427,6 +427,7 @@ GCE_INLINED_STAMP = pthreadGCE$(DLL_VER).stamp GC_DLL = pthreadGC$(DLL_VER).dll GC_LIB = libpthreadGC$(DLL_VER).a GC_INLINED_STAMP = pthreadGC$(DLL_VER).stamp +GC_STATIC_STAMP = libpthreadGC$(DLL_VER).stamp PTHREAD_DEF = pthread.def @@ -436,6 +437,7 @@ help: @ echo "make clean GC (to build the GNU C dll with C cleanup code)" @ echo "make clean GCE-inlined (to build the GNU C inlined dll with C++ exception handling)" @ echo "make clean GC-inlined (to build the GNU C inlined dll with C cleanup code)" + @ echo "make clean GC-static (to build the GNU C inlined static lib with C cleanup code)" all: @ $(MAKE) clean GCE @@ -453,6 +455,9 @@ GC-inlined: GCE-inlined: $(MAKE) CC=g++ XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GCE_INLINED_STAMP) +GC-static: + $(MAKE) CC=gcc XOPT="-DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GC_STATIC_STAMP) + tests: @ cd tests @ $(MAKE) auto @@ -493,6 +498,11 @@ $(GCE_INLINED_STAMP): $(DLL_INLINED_OBJS) dlltool -k --dllname $(GCE_DLL) --output-lib $(GCE_LIB) --def $(PTHREAD_DEF) echo touched > $(GCE_INLINED_STAMP) +$(GC_STATIC_STAMP): $(DLL_INLINED_OBJS) + $(RM) $(GC_LIB) + $(AR) -rv $(GC_LIB) $(DLL_INLINED_OBJS) + echo touched > $(GC_STATIC_STAMP) + clean: -$(RM) *~ -$(RM) *.i @@ -8,7 +8,7 @@ # DLL_VER:
# See pthread.h and README - This number is computed as 'current - age'
-DLL_VER = 2
+DLL_VER = 1
DEVROOT = c:\pthreads
@@ -17,6 +17,7 @@ LIBDEST = $(DEVROOT)\DLL DLLS = pthreadVCE$(DLL_VER).dll pthreadVSE$(DLL_VER).dll pthreadVC$(DLL_VER).dll
INLINED_STAMPS = pthreadVCE$(DLL_VER).stamp pthreadVSE$(DLL_VER).stamp pthreadVC$(DLL_VER).stamp
+STATIC_STAMPS = pthreadVCE$(DLL_VER).static pthreadVSE$(DLL_VER).static pthreadVC$(DLL_VER).static
OPTIM = /O2 /Ob2
#OPTIM =
@@ -368,6 +369,7 @@ help: @ echo nmake clean VCE-inlined (to build the MSVC inlined dll with C++ exception handling)
@ echo nmake clean VSE-inlined (to build the MSVC inlined dll with structured exception handling)
@ echo nmake clean VC-inlined (to build the MSVC inlined dll with C cleanup code)
+ @ echo nmake clean VC-static (to build the MSVC static lib with C cleanup code)
all:
@ nmake clean VCE-inlined
@@ -396,6 +398,9 @@ VSE-inlined: VC-inlined:
@ nmake /nologo EHFLAGS="$(OPTIM) $(VCFLAGS) /DPTW32_BUILD_INLINED" CLEANUP=__CLEANUP_C pthreadVC$(DLL_VER).stamp
+VC-static:
+ @ nmake /nologo EHFLAGS="$(OPTIM) $(VCFLAGS) /DPTW32_BUILD_INLINED /DPTW32_STATIC_LIB" CLEANUP=__CLEANUP_C pthreadVC$(DLL_VER).static
+
realclean: clean
if exist *.dll del *.dll
if exist *.lib del *.lib
@@ -426,6 +431,10 @@ $(INLINED_STAMPS): $(DLL_INLINED_OBJS) /link /nodefaultlib:libcmt /implib:$*.lib \
msvcrt.lib wsock32.lib /out:$*.dll
+$(STATIC_STAMPS): $(DLL_INLINED_OBJS)
+ if exist $*.lib del $*.lib + lib $(DLL_INLINED_OBJS) /out:$*.lib
+
.c.obj:
cl $(EHFLAGS) /D$(CLEANUP) -c $<
@@ -378,6 +378,22 @@ make clean GCX (tests the GC version of the library with C++ (EH) applications) +Building the library as a statically linkable library +----------------------------------------------------- + +General: PTW32_STATIC_LIB must be defined for both the library build and the +application build. The following 'make' command lines define this for the +library build. + +MSVC (creates pthreadVCn.lib as a static link lib): +nmake clean VC-static + +MinGW32 (creates libpthreadGCn.a as a static link lib): +make clean GC-static + +Define PTW32_STATIC_LIB when building your application. + + Building the library under Cygwin --------------------------------- diff --git a/tests/ChangeLog b/tests/ChangeLog index edf7ded..3d152ba 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,9 @@ +2005-04-01 Ross Johnson <ross@desk.home> + + * GNUmakefile: Add target to test linking static link library. + * Makefile: Likewise. + * self1.c: Run process attach/detach routines when static linked. + 2005-03-16 Ross Johnson <rpj@callisto.canberra.edu.au>
* mutex5.c: Prevent optimiser from removing asserts. diff --git a/tests/GNUmakefile b/tests/GNUmakefile index 08709a8..4ecce80 100644 --- a/tests/GNUmakefile +++ b/tests/GNUmakefile @@ -74,7 +74,6 @@ COPYFILES = $(HDR) $(LIB) $(DLL) $(QAPC) # If a test case returns a non-zero exit code to the shell, make will # stop. -XTESTS = once3 TESTS = sizes loadfree \ self1 mutex5 mutex1 mutex1e mutex1n mutex1r \ semaphore1 semaphore2 semaphore3 \ @@ -108,8 +107,12 @@ TESTS = sizes loadfree \ BENCHTESTS = \ benchtest1 benchtest2 benchtest3 benchtest4 benchtest5 +STATICTESTS = \ + self1 + PASSES = $(TESTS:%=%.pass) BENCHRESULTS = $(BENCHTESTS:%=%.bench) +STATICRESULTS = $(STATICTESTS:%=%.pass) help: @ $(ECHO) "Run one of the following command lines:" @@ -118,6 +121,7 @@ help: @ $(ECHO) "make clean GCE (to test using GCE dll with C++ (EH) applications)" @ $(ECHO) "make clean GC-bench (to benchtest using GNU C dll with C cleanup code)" @ $(ECHO) "make clean GCE-bench (to benchtest using GNU C dll with C++ exception handling)" + @ $(ECHO) "make clean GC-static (to test using GC static lib with C (no EH) applications)" all: @ $(MAKE) clean GC @@ -139,12 +143,20 @@ GC-bench: GCE-bench: $(MAKE) TEST=GCE CC=g++ XXCFLAGS="-mthreads -D__CLEANUP_CXX" XXLIBS="benchlib." all-bench +GC-static: + $(MAKE) TEST=GC CC=gcc XXCFLAGS="-D__CLEANUP_C -DPTW32_STATIC_LIB" DLL="" all-static + all-pass: $(PASSES) @ $(ECHO) ALL TESTS PASSED! Congratulations! all-bench: $(BENCHRESULTS) @ $(ECHO) BENCH TESTS COMPLETED. +all-static: $(STATICRESULTS) + @ $(ECHO) ALL STATIC TESTS PASSED! Congratulations! + @ $(ECHO) Build and test the DLL to run all tests. + @ $(ECHO) This test only confirms that the static lib links correctly. + benchtest1.bench: benchtest2.bench: benchtest3.bench: @@ -332,4 +344,5 @@ clean: - $(RM) *.exe - $(RM) *.pass - $(RM) *.bench + - $(RM) *.static - $(RM) *.log diff --git a/tests/Makefile b/tests/Makefile index dfb0f3c..f9dfd41 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -120,6 +120,9 @@ PASSES= sizes.pass loadfree.pass \ BENCHRESULTS = \
benchtest1.bench benchtest2.bench benchtest3.bench benchtest4.bench benchtest5.bench
+STATICRESULTS = \ + self1.pass + help:
@ $(ECHO) Run one of the following command lines:
@ $(ECHO) nmake clean VC (to test using VC dll with VC (no EH) applications)
@@ -130,6 +133,7 @@ help: @ $(ECHO) nmake clean VCX-bench (to benchtest using VC dll with C++ bench app)
@ $(ECHO) nmake clean VCE-bench (to benchtest using VCE dll with C++ bench app)
@ $(ECHO) nmake clean VSE-bench (to benchtest using VSE dll with SEH bench app)
+ @ $(ECHO) nmake clean VC-static (to test using VC static lib with VC (no EH) applications)
all:
@ nmake clean VC
@@ -148,6 +152,11 @@ tests: $(CPLIB) $(CPDLL) $(CPHDR) $(QAPC) $(PASSES) benchtests: $(CPLIB) $(CPDLL) $(CPHDR) $(XXLIBS) $(BENCHRESULTS)
@ $(ECHO) ALL BENCH TESTS DONE.
+statictests: $(CPLIB) $(CPDLL) $(CPHDR) $(STATICRESULTS)
+ @ $(ECHO) ALL STATIC TESTS DONE.
+ @ $(ECHO) Build and test the DLL to run all tests.
+ @ $(ECHO) The static test only confirms that the .lib links correctly.
+
sizes.pass: sizes.exe
@ $(ECHO) ... Running $(TEST)$(DLL_VER) test: $*.exe
@ .\$*.exe > SIZES.$(TEST)
@@ -191,6 +200,9 @@ VC-bench: VCX-bench:
@ nmake TEST="$@" CPLIB="$(VCLIB)" CPDLL="$(VCDLL)" EHFLAGS="$(VCXFLAGS)" XXLIBS="benchlib.o" benchtests
+VC-static:
+ @ nmake TEST="$@" CPLIB="$(VCLIB)" CPDLL="" EHFLAGS="$(VCFLAGS) /DPTW32_STATIC_LIB" statictests
+
.c.exe:
@ $(ECHO) $(CC) $(EHFLAGS) $(CFLAGS) $(INCLUDES) $< /Fe$@ /link $(LFLAGS) $(CPLIB) $(XXLIBS)
@ $(CC) $(EHFLAGS) $(CFLAGS) $(INCLUDES) $< /Fe$@ /link $(LFLAGS) $(CPLIB) $(XXLIBS)
diff --git a/tests/self1.c b/tests/self1.c index 773aee1..59498d9 100644 --- a/tests/self1.c +++ b/tests/self1.c @@ -54,9 +54,16 @@ main(int argc, char * argv[]) */ pthread_t self; +#ifdef PTW32_STATIC_LIB + pthread_win32_process_attach_np(); +#endif + self = pthread_self(); assert(self.p != NULL); +#ifdef PTW32_STATIC_LIB + pthread_win32_process_detach_np(); +#endif return 0; } |