diff options
author | rpj <rpj> | 2001-05-31 02:01:47 +0000 |
---|---|---|
committer | rpj <rpj> | 2001-05-31 02:01:47 +0000 |
commit | e121b938c9f012958196a3141f04a3fd4f58bdb9 (patch) | |
tree | d1cb950413e3a350606f2a4d9bea687b6680570d /GNUmakefile | |
parent | 6bf07e836550f9ffe11e0f38ff1323be731eb250 (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-- | GNUmakefile | 71 |
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) + + |