summaryrefslogtreecommitdiff
path: root/GNUmakefile
diff options
context:
space:
mode:
authorrpj <rpj>2001-05-31 02:01:47 +0000
committerrpj <rpj>2001-05-31 02:01:47 +0000
commite121b938c9f012958196a3141f04a3fd4f58bdb9 (patch)
treed1cb950413e3a350606f2a4d9bea687b6680570d /GNUmakefile
parent6bf07e836550f9ffe11e0f38ff1323be731eb250 (diff)
2001-05-30 Ross Johnson <rpj@setup1.ise.canberra.edu.au>
* pthread.h (rand_r): Fake using _seed argument to quell compiler warning (compiler should optimise this away later). * GNUmakefile (OPT): Leave symbolic information out of the library and increase optimisation level - for smaller faster prebuilt dlls. 2001-05-29 Ross Johnson <rpj@setup1.ise.canberra.edu.au> Contributed by - Milan Gardian <Milan.Gardian@LEIBINGER.com> * Makefile: fix typo. * pthreads.h: Fix problems with stdcall/cdecl conventions, in particular remove the need for PT_STDCALL everywhere; remove warning supression. * (errno): Fix the longstanding "inconsistent dll linkage" problem with errno; now also works with /MD debugging libs - warnings emerged when compiling pthreads library with /MD (or /MDd) compiler switch, instead of /MT (or /MTd) (i.e. when compiling pthreads using Multithreaded DLL CRT instead of Multithreaded statically linked CRT). * create.c (pthread_create): Likewise; fix typo. * private.c (ptw32_threadStart): Eliminate use of terminate() which doesn't throw exceptions. * Remove unnecessary #includes from a number of modules - [I had to #include malloc.h in implement.h for gcc - rpj]. 2001-05-29 Ross Johnson <rpj@setup1.ise.canberra.edu.au> Contributed by - Thomas Pfaff <tpfaff@gmx.net> * pthread.h (PTHREAD_MUTEX_DEFAULT): New; equivalent to PTHREAD_MUTEX_DEFAULT_NP. * (PTHREAD_MUTEX_NORMAL): Similarly. * (PTHREAD_MUTEX_ERRORCHECK): Similarly. * (PTHREAD_MUTEX_RECURSIVE): Similarly. * (pthread_mutex_setdefaultkind_np): New; Linux compatibility stub for pthread_mutexattr_settype. * (pthread_mutexattr_getkind_np): New; Linux compatibility stub for pthread_mutexattr_gettype. * mutex.c (pthread_mutexattr_settype): New; allow the following types of mutex: PTHREAD_MUTEX_DEFAULT_NP PTHREAD_MUTEX_NORMAL_NP PTHREAD_MUTEX_ERRORCHECK_NP PTHREAD_MUTEX_RECURSIVE_NP * Note that PTHREAD_MUTEX_DEFAULT is equivalent to PTHREAD_MUTEX_NORMAL - ie. mutexes should no longer be recursive by default, and a thread will deadlock if it tries to relock a mutex it already owns. This is inline with other pthreads implementations. * (pthread_mutex_lock): Process the lock request according to the mutex type. * (pthread_mutex_init): Eliminate use of Win32 mutexes as the basis of POSIX mutexes - instead, a combination of one critical section and one semaphore are used in conjunction with Win32 Interlocked* routines. * (pthread_mutex_destroy): Likewise. * (pthread_mutex_lock): Likewise. * (pthread_mutex_trylock): Likewise. * (pthread_mutex_unlock): Likewise. * Use longjmp/setjmp to implement cancelation when building the library using a C compiler which doesn't support exceptions, e.g. gcc -x c (note that gcc -x c++ uses exceptions). * Also fixed some of the same typos and eliminated PT_STDCALL as Milan Gardian's patches above. 2001-02-07 Ross Johnson <rpj@special.ise.canberra.edu.au> Contributed by - Alexander Terekhov <TEREKHOV@de.ibm.com> * rwlock.c: Revamped. * implement.h (pthread_rwlock_t_): Redefined. This implementation does not have reader/writer starvation problem. Rwlock attempts to behave more like a normal mutex with races and scheduling policy determining who is more important; It also supports recursive locking, has less synchronization overhead (no broadcasts at all, readers are not blocked on any condition variable) and seem to be faster than the current implementation [W98 appears to be approximately 15 percent faster at least - on top of speed increase from Thomas Pfaff's changes to mutex.c - rpj].
Diffstat (limited to 'GNUmakefile')
-rw-r--r--GNUmakefile71
1 files changed, 49 insertions, 22 deletions
diff --git a/GNUmakefile b/GNUmakefile
index a7d13b3..141a778 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -18,23 +18,28 @@
# MA 02111-1307, USA
#
-GLANG = c++
+#RM = rm
+#MV = mv
+#CP = cp
RM = erase
MV = rename
CP = copy
CC = gcc
+CXX = g++
AR = ar
-LD = gcc -mdll
-
-#OPT = -g -O0
OPT = -O3
+#OPT = -O2 -DNDEBUG -finline-functions
+
+GC_CFLAGS = -D__CLEANUP_C
+GCE_CFLAGS = -D__CLEANUP_CXX -x c++ -mthreads
## Mingw32
-CFLAGS = $(OPT) -x $(GLANG) -I. -mthreads -D_WIN32_WINNT=0x400 -DHAVE_CONFIG_H -DPTW32_BUILD -Wall
+MAKE = make
+CFLAGS = $(OPT) -I. -D_WIN32_WINNT=0x400 -DHAVE_CONFIG_H -DPTW32_BUILD -Wall
## Cygwin G++
#CFLAGS = $(OPT) -x $(GLANG) -fhandle-exceptions -D_WIN32_WINNT=0x400 -I. -DHAVE_CONFIG_H -DPTW32_BUILD -Wall
@@ -45,15 +50,31 @@ OBJS = attr.o cancel.o cleanup.o condvar.o create.o dll.o errno.o \
INCL = implement.h semaphore.h pthread.h windows.h
-DLL = pthreadGCE.dll
+GC_DLL = pthreadGC.dll
+GCE_DLL = pthreadGCE.dll
+
+GC_LIB = libpthreadGC.a
+GCE_LIB = libpthreadGCE.a
+
+
+all:
+ @ echo Run one of the following command lines:
+ @ echo make clean GCE (to build the GNU C dll with C++ exception handling)
+ @ echo make clean GC (to build the GNU C dll with C cleanup code)
-LIBS = libpthreadw32.a
+auto:
+ @ $(MAKE) clean GCE
+ @ $(MAKE) clean GC
+GC:
+ $(MAKE) CLEANUP_FLAGS="$(GC_CFLAGS)" $(GC_DLL)
-all: $(LIBS)
+GCE:
+ $(MAKE) CLEANUP_FLAGS="$(GCE_CFLAGS)" $(GCE_DLL)
-$(LIBS): $(DLL)
- dlltool --def pthread.def --output-lib $@ --dllname $(DLL)
+tests:
+ @ cd tests
+ @ $(MAKE) auto
%.pre: %.c
$(CC) -E -o $@ $(CFLAGS) $^
@@ -61,22 +82,28 @@ $(LIBS): $(DLL)
%.s: %.c
$(CC) -c $(CFLAGS) -Wa,-ahl $^ > $@
-.SUFFIXES: .dll
+.SUFFIXES: .dll .c .o
-$(DLL): $(OBJS)
- $(LD) -o $@ $^ -Wl,--base-file,$*.base
- dlltool --base-file=$*.base --def pthread.def --output-exp $*.exp --dllname $@
- $(LD) -o $@ $^ -Wl,--base-file,$*.base,$*.exp
- dlltool --base-file=$*.base --def pthread.def --output-exp $*.exp --dllname $@
- $(LD) -o $@ $^ -Wl,$*.exp
+.c.o:; $(CC) -c -o $@ $(CFLAGS) $(CLEANUP_FLAGS) $<
+
+
+$(GC_DLL): $(OBJS)
+ $(CC) $(OPT) -shared -o $@ $^
+ dlltool -k --dllname $@ --output-lib $(GC_LIB) --def pthread.def
+
+$(GCE_DLL): $(OBJS)
+ $(CXX) $(OPT) -mthreads -shared -o $@ $^
+ dlltool -k --dllname $@ --output-lib $(GCE_LIB) --def pthread.def
clean:
-$(RM) *~
-$(RM) *.o
-$(RM) *.exe
- -$(RM) $(DLL:.dll=.base)
- -$(RM) $(DLL:.dll=.exp)
-realclean:
- -$(RM) $(LIBS)
- -$(RM) $(DLL)
+realclean: clean
+ -$(RM) $(GC_LIB)
+ -$(RM) $(GCE_LIB)
+ -$(RM) $(GC_DLL)
+ -$(RM) $(GCE_DLL)
+
+