diff options
| author | rpj <rpj> | 2005-04-25 14:55:16 +0000 | 
|---|---|---|
| committer | rpj <rpj> | 2005-04-25 14:55:16 +0000 | 
| commit | a06bad7ea9a24a3ea93fe1e7b9b99155481ada3a (patch) | |
| tree | 5d8d210afdda4bdaea3c6a6e4a7a7ccdab4b3bba /GNUmakefile | |
| parent | 262895c989b395cb0c79512a34a697b1e56bcbd7 (diff) | |
''
Diffstat (limited to 'GNUmakefile')
| -rw-r--r-- | GNUmakefile | 1140 | 
1 files changed, 570 insertions, 570 deletions
| diff --git a/GNUmakefile b/GNUmakefile index d18402a..877cc0c 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -1,570 +1,570 @@ -#
 -# --------------------------------------------------------------------------
 -#
 -#      Pthreads-win32 - POSIX Threads Library for Win32
 -#      Copyright(C) 1998 John E. Bossom
 -#      Copyright(C) 1999,2005 Pthreads-win32 contributors
 -# 
 -#      Contact Email: rpj@callisto.canberra.edu.au
 -# 
 -#      The current list of contributors is contained
 -#      in the file CONTRIBUTORS included with the source
 -#      code distribution. The list can also be seen at the
 -#      following World Wide Web location:
 -#      http://sources.redhat.com/pthreads-win32/contributors.html
 -# 
 -#      This library is free software; you can redistribute it and/or
 -#      modify it under the terms of the GNU Lesser General Public
 -#      License as published by the Free Software Foundation; either
 -#      version 2 of the License, or (at your option) any later version.
 -# 
 -#      This library is distributed in the hope that it will be useful,
 -#      but WITHOUT ANY WARRANTY; without even the implied warranty of
 -#      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 -#      Lesser General Public License for more details.
 -# 
 -#      You should have received a copy of the GNU Lesser General Public
 -#      License along with this library in the file COPYING.LIB;
 -#      if not, write to the Free Software Foundation, Inc.,
 -#      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 -#
 -
 -DLL_VER	= 1
 -DLL_VERD= $(DLL_VER)d
 -
 -DEVROOT	= C:\PTHREADS
 -
 -DLLDEST	= $(DEVROOT)\DLL
 -LIBDEST	= $(DEVROOT)\DLL
 -
 -# If Running MsysDTK
 -RM	= rm -f
 -MV	= mv -f
 -CP	= cp -f
 -RC	= windres
 -
 -# If not.
 -#RM	= erase
 -#MV	= rename
 -#CP	= copy
 -
 -AR	= ar
 -
 -OPT	= $(CLEANUP) -O3 -finline-functions
 -DOPT	= $(CLEANUP) -g -O0
 -XOPT	=
 -
 -RCFLAGS		= --include-dir=.
 -LFLAGS		= -lwsock32
 -
 -# ----------------------------------------------------------------------
 -# The library can be built with some alternative behaviour to
 -# facilitate development of applications on Win32 that will be ported
 -# to other POSIX systems. Nothing definable here will make the library
 -# non-compliant, but applications that make assumptions that POSIX
 -# does not garrantee may fail or misbehave under some settings.
 -#
 -# PTW32_THREAD_ID_REUSE_INCREMENT
 -# Purpose:
 -# POSIX says that applications should assume that thread IDs can be
 -# recycled. However, Solaris and some other systems use a [very large]
 -# sequence number as the thread ID, which provides virtual uniqueness.
 -#
 -# Usage:
 -# Set to any value in the range: 0 <= value <= 2^wordsize
 -#
 -# Examples:
 -# Set to 0 to emulate non recycle-unique behaviour like Linux or *BSD.
 -# Set to 1 for recycle-unique thread IDs like Solaris (this is the default).
 -# Set to some other +ve value to emulate smaller word size types (i.e. will
 -# wrap sooner). This might be useful to emulate some embedded systems.
 -#
 -#PTW32_FLAGS	= "-DPTW32_THREAD_ID_REUSE_INCREMENT=0"
 -#
 -# ----------------------------------------------------------------------
 -
 -GC_CFLAGS	= $(PTW32_FLAGS) 
 -GCE_CFLAGS	= $(PTW32_FLAGS) -mthreads
 -
 -## Mingw32
 -MAKE		= make
 -CFLAGS	= $(OPT) $(XOPT) -I. -DHAVE_CONFIG_H -Wall
 -
 -DLL_INLINED_OBJS	= \
 -		pthread.o \
 -		version.o
 -
 -# Agregate modules for inlinability
 -DLL_OBJS	= \
 -		attr.o \
 -		barrier.o \
 -		cancel.o \
 -		cleanup.o \
 -		condvar.o \
 -		create.o \
 -		dll.o \
 -		errno.o \
 -		exit.o \
 -		fork.o \
 -		global.o \
 -		misc.o \
 -		mutex.o \
 -		nonportable.o \
 -		private.o \
 -		rwlock.o \
 -		sched.o \
 -		semaphore.o \
 -		signal.o \
 -		spin.o \
 -		sync.o \
 -		tsd.o \
 -		version.o
 -
 -# Separate modules for minimum size statically linked images
 -SMALL_STATIC_OBJS	= \
 -		pthread_attr_init.o \
 -		pthread_attr_destroy.o \
 -		pthread_attr_getdetachstate.o \
 -		pthread_attr_setdetachstate.o \
 -		pthread_attr_getstackaddr.o \
 -		pthread_attr_setstackaddr.o \
 -		pthread_attr_getstacksize.o \
 -		pthread_attr_setstacksize.o \
 -		pthread_attr_getscope.o \
 -		pthread_attr_setscope.o \
 -		pthread_attr_setschedpolicy.o \
 -		pthread_attr_getschedpolicy.o \
 -		pthread_attr_setschedparam.o \
 -		pthread_attr_getschedparam.o \
 -		pthread_attr_setinheritsched.o \
 -		pthread_attr_getinheritsched.o \
 -		pthread_barrier_init.o \
 -		pthread_barrier_destroy.o \
 -		pthread_barrier_wait.o \
 -		pthread_barrierattr_init.o \
 -		pthread_barrierattr_destroy.o \
 -		pthread_barrierattr_setpshared.o \
 -		pthread_barrierattr_getpshared.o \
 -		pthread_setcancelstate.o \
 -		pthread_setcanceltype.o \
 -		pthread_testcancel.o \
 -		pthread_cancel.o \
 -		cleanup.o \
 -		pthread_condattr_destroy.o \
 -		pthread_condattr_getpshared.o \
 -		pthread_condattr_init.o \
 -		pthread_condattr_setpshared.o \
 -		pthread_cond_destroy.o \
 -		pthread_cond_init.o \
 -		pthread_cond_signal.o \
 -		pthread_cond_wait.o \
 -		create.o \
 -		dll.o \
 -		errno.o \
 -		pthread_exit.o \
 -		fork.o \
 -		global.o \
 -		pthread_mutex_init.o \
 -		pthread_mutex_destroy.o \
 -		pthread_mutexattr_init.o \
 -		pthread_mutexattr_destroy.o \
 -		pthread_mutexattr_getpshared.o \
 -		pthread_mutexattr_setpshared.o \
 -		pthread_mutexattr_settype.o \
 -		pthread_mutexattr_gettype.o \
 -		pthread_mutex_lock.o \
 -		pthread_mutex_timedlock.o \
 -		pthread_mutex_unlock.o \
 -		pthread_mutex_trylock.o \
 -		pthread_mutexattr_setkind_np.o \
 -		pthread_mutexattr_getkind_np.o \
 -		pthread_getw32threadhandle_np.o \
 -		pthread_delay_np.o \
 -		pthread_num_processors_np.o \
 -		pthread_win32_attach_detach_np.o \
 -		pthread_equal.o \
 -		pthread_getconcurrency.o \
 -		pthread_once.o \
 -		pthread_self.o \
 -		pthread_setconcurrency.o \
 -		pthread_rwlock_init.o \
 -		pthread_rwlock_destroy.o \
 -		pthread_rwlockattr_init.o \
 -		pthread_rwlockattr_destroy.o \
 -		pthread_rwlockattr_getpshared.o \
 -		pthread_rwlockattr_setpshared.o \
 -		pthread_rwlock_rdlock.o \
 -		pthread_rwlock_wrlock.o \
 -		pthread_rwlock_unlock.o \
 -		pthread_rwlock_tryrdlock.o \
 -		pthread_rwlock_trywrlock.o \
 -		pthread_setschedparam.o \
 -		pthread_getschedparam.o \
 -		pthread_timechange_handler_np.o \
 -		ptw32_is_attr.o \
 -		ptw32_cond_check_need_init.o \
 -		ptw32_mutex_check_need_init.o \
 -		ptw32_processInitialize.o \
 -		ptw32_processTerminate.o \
 -		ptw32_threadStart.o \
 -		ptw32_threadDestroy.o \
 -		ptw32_tkAssocCreate.o \
 -		ptw32_tkAssocDestroy.o \
 -		ptw32_callUserDestroyRoutines.o \
 -		ptw32_timespec.o \
 -		ptw32_throw.o \
 -		ptw32_InterlockedCompareExchange.o \
 -		ptw32_getprocessors.o \
 -		ptw32_calloc.o \
 -		ptw32_new.o \
 -		ptw32_reuse.o \
 -		ptw32_semwait.o \
 -		ptw32_relmillisecs.o \
 -		ptw32_rwlock_check_need_init.o \
 -		sched_get_priority_max.o \
 -		sched_get_priority_min.o \
 -		sched_setscheduler.o \
 -		sched_getscheduler.o \
 -		sched_yield.o \
 -		sem_init.o \
 -		sem_destroy.o \
 -		sem_trywait.o \
 -		sem_timedwait.o \
 -		sem_wait.o \
 -		sem_post.o \
 -		sem_post_multiple.o \
 -		sem_getvalue.o \
 -		sem_open.o \
 -		sem_close.o \
 -		sem_unlink.o \
 -		signal.o \
 -		pthread_kill.o \
 -		ptw32_spinlock_check_need_init.o \
 -		pthread_spin_init.o \
 -		pthread_spin_destroy.o \
 -		pthread_spin_lock.o \
 -		pthread_spin_unlock.o \
 -		pthread_spin_trylock.o \
 -		pthread_detach.o \
 -		pthread_join.o \
 -		pthread_key_create.o \
 -		pthread_key_delete.o \
 -		pthread_setspecific.o \
 -		pthread_getspecific.o \
 -		w32_CancelableWait.o \
 -		version.o
 -
 -INCL	= \
 -		config.h \
 -		implement.h \
 -		semaphore.h \
 -		pthread.h \
 -		need_errno.h
 -
 -ATTR_SRCS	= \
 -		pthread_attr_init.c \
 -		pthread_attr_destroy.c \
 -		pthread_attr_getdetachstate.c \
 -		pthread_attr_setdetachstate.c \
 -		pthread_attr_getstackaddr.c \
 -		pthread_attr_setstackaddr.c \
 -		pthread_attr_getstacksize.c \
 -		pthread_attr_setstacksize.c \
 -		pthread_attr_getscope.c \
 -		pthread_attr_setscope.c
 -
 -BARRIER_SRCS = \
 -		pthread_barrier_init.c \
 -		pthread_barrier_destroy.c \
 -		pthread_barrier_wait.c \
 -		pthread_barrierattr_init.c \
 -		pthread_barrierattr_destroy.c \
 -		pthread_barrierattr_setpshared.c \
 -		pthread_barrierattr_getpshared.c
 -
 -CANCEL_SRCS	= \
 -		pthread_setcancelstate.c \
 -		pthread_setcanceltype.c \
 -		pthread_testcancel.c \
 -		pthread_cancel.c 
 -
 -CONDVAR_SRCS	= \
 -		ptw32_cond_check_need_init.c \
 -		pthread_condattr_destroy.c \
 -		pthread_condattr_getpshared.c \
 -		pthread_condattr_init.c \
 -		pthread_condattr_setpshared.c \
 -		pthread_cond_destroy.c \
 -		pthread_cond_init.c \
 -		pthread_cond_signal.c \
 -		pthread_cond_wait.c
 -
 -EXIT_SRCS	= \
 -		pthread_exit.c
 -
 -MISC_SRCS	= \
 -		pthread_equal.c \
 -		pthread_getconcurrency.c \
 -		pthread_kill.c \
 -		pthread_once.c \
 -		pthread_self.c \
 -		pthread_setconcurrency.c \
 -		ptw32_calloc.c \
 -		ptw32_new.c \
 -		ptw32_reuse.c \
 -		w32_CancelableWait.c
 -
 -MUTEX_SRCS	= \
 -		ptw32_mutex_check_need_init.c \
 -		pthread_mutex_init.c \
 -		pthread_mutex_destroy.c \
 -		pthread_mutexattr_init.c \
 -		pthread_mutexattr_destroy.c \
 -		pthread_mutexattr_getpshared.c \
 -		pthread_mutexattr_setpshared.c \
 -		pthread_mutexattr_settype.c \
 -		pthread_mutexattr_gettype.c \
 -		pthread_mutex_lock.c \
 -		pthread_mutex_timedlock.c \
 -		pthread_mutex_unlock.c \
 -		pthread_mutex_trylock.c
 -
 -NONPORTABLE_SRCS = \
 -		pthread_mutexattr_setkind_np.c \
 -		pthread_mutexattr_getkind_np.c \
 -		pthread_getw32threadhandle_np.c \
 -		pthread_delay_np.c \
 -		pthread_num_processors_np.c \
 -		pthread_win32_attach_detach_np.c \
 -		pthread_timechange_handler_np.c 
 -
 -PRIVATE_SRCS	= \
 -		ptw32_is_attr.c \
 -		ptw32_processInitialize.c \
 -		ptw32_processTerminate.c \
 -		ptw32_threadStart.c \
 -		ptw32_threadDestroy.c \
 -		ptw32_tkAssocCreate.c \
 -		ptw32_tkAssocDestroy.c \
 -		ptw32_callUserDestroyRoutines.c \
 -		ptw32_semwait.c \
 -		ptw32_relmillisecs.c \
 -		ptw32_timespec.c \
 -		ptw32_throw.c \
 -		ptw32_InterlockedCompareExchange.c \
 -		ptw32_getprocessors.c
 -
 -RWLOCK_SRCS	= \
 -		ptw32_rwlock_check_need_init.c \
 -		ptw32_rwlock_cancelwrwait.c \
 -		pthread_rwlock_init.c \
 -		pthread_rwlock_destroy.c \
 -		pthread_rwlockattr_init.c \
 -		pthread_rwlockattr_destroy.c \
 -		pthread_rwlockattr_getpshared.c \
 -		pthread_rwlockattr_setpshared.c \
 -		pthread_rwlock_rdlock.c \
 -		pthread_rwlock_timedrdlock.c \
 -		pthread_rwlock_wrlock.c \
 -		pthread_rwlock_timedwrlock.c \
 -		pthread_rwlock_unlock.c \
 -		pthread_rwlock_tryrdlock.c \
 -		pthread_rwlock_trywrlock.c
 -
 -SCHED_SRCS	= \
 -		pthread_attr_setschedpolicy.c \
 -		pthread_attr_getschedpolicy.c \
 -		pthread_attr_setschedparam.c \
 -		pthread_attr_getschedparam.c \
 -		pthread_attr_setinheritsched.c \
 -		pthread_attr_getinheritsched.c \
 -		pthread_setschedparam.c \
 -		pthread_getschedparam.c \
 -		sched_get_priority_max.c \
 -		sched_get_priority_min.c \
 -		sched_setscheduler.c \
 -		sched_getscheduler.c \
 -		sched_yield.c
 -
 -SEMAPHORE_SRCS = \
 -		sem_init.c \
 -		sem_destroy.c \
 -		sem_trywait.c \
 -		sem_timedwait.c \
 -		sem_wait.c \
 -		sem_post.c \
 -		sem_post_multiple.c \
 -		sem_getvalue.c \
 -		sem_open.c \
 -		sem_close.c \
 -		sem_unlink.c
 -
 -SPIN_SRCS	= \
 -		ptw32_spinlock_check_need_init.c \
 -		pthread_spin_init.c \
 -		pthread_spin_destroy.c \
 -		pthread_spin_lock.c \
 -		pthread_spin_unlock.c \
 -		pthread_spin_trylock.c
 -
 -SYNC_SRCS	= \
 -		pthread_detach.c \
 -		pthread_join.c
 -
 -TSD_SRCS	= \
 -		pthread_key_create.c \
 -		pthread_key_delete.c \
 -		pthread_setspecific.c \
 -		pthread_getspecific.c
 -
 -
 -GCE_DLL	= pthreadGCE$(DLL_VER).dll
 -GCED_DLL= pthreadGCE$(DLL_VERD).dll
 -GCE_LIB	= libpthreadGCE$(DLL_VER).a
 -GCED_LIB= libpthreadGCE$(DLL_VERD).a
 -GCE_INLINED_STAMP = pthreadGCE$(DLL_VER).stamp
 -GCED_INLINED_STAMP = pthreadGCE$(DLL_VERD).stamp
 -
 -GC_DLL 	= pthreadGC$(DLL_VER).dll
 -GCD_DLL	= pthreadGC$(DLL_VERD).dll
 -GC_LIB	= libpthreadGC$(DLL_VER).a
 -GCD_LIB	= libpthreadGC$(DLL_VERD).a
 -GC_INLINED_STAMP = pthreadGC$(DLL_VER).stamp
 -GCD_INLINED_STAMP = pthreadGC$(DLL_VERD).stamp
 -GC_STATIC_STAMP = libpthreadGC$(DLL_VER).stamp
 -GCD_STATIC_STAMP = libpthreadGC$(DLL_VERD).stamp
 -
 -PTHREAD_DEF	= pthread.def
 -
 -help:
 -	@ echo "Run one of the following command lines:"
 -	@ echo "make clean GC            (to build the GNU C dll with C cleanup code)"
 -	@ echo "make clean GCE           (to build the GNU C dll with C++ exception handling)"
 -	@ echo "make clean GC-inlined    (to build the GNU C inlined 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-static     (to build the GNU C inlined static lib with C cleanup code)"
 -	@ echo "make clean GC-debug      (to build the GNU C debug dll with C cleanup code)"
 -	@ echo "make clean GCE-debug     (to build the GNU C debug dll with C++ exception handling)"
 -	@ echo "make clean GC-inlined-debug    (to build the GNU C inlined debug dll with C cleanup code)"
 -	@ echo "make clean GCE-inlined-debug   (to build the GNU C inlined debug dll with C++ exception handling)"
 -	@ echo "make clean GC-static-debug     (to build the GNU C inlined static debug lib with C cleanup code)"
 -
 -all:
 -	@ $(MAKE) clean GCE
 -	@ $(MAKE) clean GC
 -
 -GC:
 -		$(MAKE) CC=gcc CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" $(GC_DLL)
 -
 -GC-debug:
 -		$(MAKE) CC=gcc CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" DLL_VER=$(DLL_VERD) OPT="$(DOPT)" $(GCD_DLL)
 -
 -GCE:
 -		$(MAKE) CC=g++ CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" $(GCE_DLL)
 -
 -GCE-debug:
 -		$(MAKE) CC=g++ CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" DLL_VER=$(DLL_VERD) OPT="$(DOPT)" $(GCED_DLL)
 -
 -GC-inlined:
 -		$(MAKE) CC=gcc XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GC_INLINED_STAMP)
 -
 -GC-inlined-debug:
 -		$(MAKE) CC=gcc XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="$(DOPT)" $(GCD_INLINED_STAMP)
 -
 -GCE-inlined:
 -		$(MAKE) CC=g++ XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GCE_INLINED_STAMP)
 -
 -GCE-inlined-debug:
 -		$(MAKE) CC=g++ XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="$(DOPT)" $(GCED_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)
 -
 -GC-static-debug:
 -		$(MAKE) CC=gcc XOPT="-DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="$(DOPT)" $(GCD_STATIC_STAMP)
 -
 -tests:
 -	@ cd tests
 -	@ $(MAKE) auto
 -
 -%.pre: %.c
 -	$(CC) -E -o $@ $(CFLAGS) $^
 -
 -%.s: %.c
 -	$(CC) -c $(CFLAGS) -Wa,-ahl $^ > $@
 -
 -%.o: %.rc
 -	$(RC) $(RCFLAGS) $(CLEANUP) -o $@ $<
 -
 -.SUFFIXES: .dll .rc .c .o
 -
 -.c.o:;		 $(CC) -c -o $@ $(CFLAGS) $(XC_FLAGS) $<
 -
 -
 -$(GC_DLL) $(GCD_DLL): $(DLL_OBJS)
 -	$(CC) $(OPT) -shared -o $(GC_DLL) $(DLL_OBJS) $(LFLAGS)
 -	dlltool -z pthread.def $(DLL_OBJS)
 -	dlltool -k --dllname $@ --output-lib $(GC_LIB) --def $(PTHREAD_DEF)
 -
 -$(GCE_DLL): $(DLL_OBJS)
 -	$(CC) $(OPT) -mthreads -shared -o $(GCE_DLL) $(DLL_OBJS) $(LFLAGS)
 -	dlltool -z pthread.def $(DLL_OBJS)
 -	dlltool -k --dllname $@ --output-lib $(GCE_LIB) --def $(PTHREAD_DEF)
 -
 -$(GC_INLINED_STAMP) $(GCD_INLINED_STAMP): $(DLL_INLINED_OBJS)
 -	$(CC) $(OPT) $(XOPT) -shared -o $(GC_DLL) $(DLL_INLINED_OBJS) $(LFLAGS)
 -	dlltool -z pthread.def $(DLL_INLINED_OBJS)
 -	dlltool -k --dllname $(GC_DLL) --output-lib $(GC_LIB) --def $(PTHREAD_DEF)
 -	echo touched > $(GC_INLINED_STAMP)
 -
 -$(GCE_INLINED_STAMP) $(GCED_INLINED_STAMP): $(DLL_INLINED_OBJS)
 -	$(CC) $(OPT) $(XOPT) -mthreads -shared -o $(GCE_DLL) $(DLL_INLINED_OBJS)  $(LFLAGS)
 -	dlltool -z pthread.def $(DLL_INLINED_OBJS)
 -	dlltool -k --dllname $(GCE_DLL) --output-lib $(GCE_LIB) --def $(PTHREAD_DEF)
 -	echo touched > $(GCE_INLINED_STAMP)
 -
 -$(GC_STATIC_STAMP) $(GCD_STATIC_STAMP): $(DLL_INLINED_OBJS)
 -	$(RM) $(GC_LIB)
 -	$(AR) -rv $(GC_LIB) $(DLL_INLINED_OBJS)
 -	echo touched > $(GC_STATIC_STAMP)
 -
 -clean:
 -	-$(RM) *~
 -	-$(RM) *.i
 -	-$(RM) *.o
 -	-$(RM) *.obj
 -	-$(RM) *.exe
 -	-$(RM) $(PTHREAD_DEF)
 -
 -realclean: clean
 -	-$(RM) $(GC_LIB)
 -	-$(RM) $(GCE_LIB)
 -	-$(RM) $(GC_DLL)
 -	-$(RM) $(GCE_DLL)
 -	-$(RM) $(GC_INLINED_STAMP)
 -	-$(RM) $(GCE_INLINED_STAMP)
 -	-$(RM) $(GC_STATIC_STAMP)
 -	-$(RM) $(GCD_LIB)
 -	-$(RM) $(GCED_LIB)
 -	-$(RM) $(GCD_DLL)
 -	-$(RM) $(GCED_DLL)
 -	-$(RM) $(GCD_INLINED_STAMP)
 -	-$(RM) $(GCED_INLINED_STAMP)
 -	-$(RM) $(GCD_STATIC_STAMP)
 -
 -attr.o:		attr.c $(ATTR_SRCS) $(INCL)
 -barrier.o:	barrier.c $(BARRIER_SRCS) $(INCL)
 -cancel.o:	cancel.c $(CANCEL_SRCS) $(INCL)
 -condvar.o:	condvar.c $(CONDVAR_SRCS) $(INCL)
 -exit.o:		exit.c $(EXIT_SRCS) $(INCL)
 -misc.o:		misc.c $(MISC_SRCS) $(INCL)
 -mutex.o:	mutex.c $(MUTEX_SRCS) $(INCL)
 -nonportable.o:	nonportable.c $(NONPORTABLE_SRCS) $(INCL)
 -private.o:	private.c $(PRIVATE_SRCS) $(INCL)
 -rwlock.o:	rwlock.c $(RWLOCK_SRCS) $(INCL)
 -sched.o:	sched.c $(SCHED_SRCS) $(INCL)
 -semaphore.o:	semaphore.c $(SEMAPHORE_SRCS) $(INCL)
 -spin.o:		spin.c $(SPIN_SRCS) $(INCL)
 -sync.o:		sync.c $(SYNC_SRCS) $(INCL)
 -tsd.o:		tsd.c $(TSD_SRCS) $(INCL)
 -version.o:	version.rc $(INCL)
 +# +# -------------------------------------------------------------------------- +# +#      Pthreads-win32 - POSIX Threads Library for Win32 +#      Copyright(C) 1998 John E. Bossom +#      Copyright(C) 1999,2005 Pthreads-win32 contributors +#  +#      Contact Email: rpj@callisto.canberra.edu.au +#  +#      The current list of contributors is contained +#      in the file CONTRIBUTORS included with the source +#      code distribution. The list can also be seen at the +#      following World Wide Web location: +#      http://sources.redhat.com/pthreads-win32/contributors.html +#  +#      This library is free software; you can redistribute it and/or +#      modify it under the terms of the GNU Lesser General Public +#      License as published by the Free Software Foundation; either +#      version 2 of the License, or (at your option) any later version. +#  +#      This library is distributed in the hope that it will be useful, +#      but WITHOUT ANY WARRANTY; without even the implied warranty of +#      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +#      Lesser General Public License for more details. +#  +#      You should have received a copy of the GNU Lesser General Public +#      License along with this library in the file COPYING.LIB; +#      if not, write to the Free Software Foundation, Inc., +#      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +# + +DLL_VER	= 1 +DLL_VERD= $(DLL_VER)d + +DEVROOT	= C:\PTHREADS + +DLLDEST	= $(DEVROOT)\DLL +LIBDEST	= $(DEVROOT)\DLL + +# If Running MsysDTK +RM	= rm -f +MV	= mv -f +CP	= cp -f +RC	= windres + +# If not. +#RM	= erase +#MV	= rename +#CP	= copy + +AR	= ar + +OPT	= $(CLEANUP) -O3 -finline-functions +DOPT	= $(CLEANUP) -g -O0 +XOPT	= + +RCFLAGS		= --include-dir=. +LFLAGS		= -lwsock32 + +# ---------------------------------------------------------------------- +# The library can be built with some alternative behaviour to +# facilitate development of applications on Win32 that will be ported +# to other POSIX systems. Nothing definable here will make the library +# non-compliant, but applications that make assumptions that POSIX +# does not garrantee may fail or misbehave under some settings. +# +# PTW32_THREAD_ID_REUSE_INCREMENT +# Purpose: +# POSIX says that applications should assume that thread IDs can be +# recycled. However, Solaris and some other systems use a [very large] +# sequence number as the thread ID, which provides virtual uniqueness. +# +# Usage: +# Set to any value in the range: 0 <= value <= 2^wordsize +# +# Examples: +# Set to 0 to emulate non recycle-unique behaviour like Linux or *BSD. +# Set to 1 for recycle-unique thread IDs like Solaris (this is the default). +# Set to some other +ve value to emulate smaller word size types (i.e. will +# wrap sooner). This might be useful to emulate some embedded systems. +# +#PTW32_FLAGS	= "-DPTW32_THREAD_ID_REUSE_INCREMENT=0" +# +# ---------------------------------------------------------------------- + +GC_CFLAGS	= $(PTW32_FLAGS)  +GCE_CFLAGS	= $(PTW32_FLAGS) -mthreads + +## Mingw32 +MAKE		= make +CFLAGS	= $(OPT) $(XOPT) -I. -DHAVE_CONFIG_H -Wall + +DLL_INLINED_OBJS	= \ +		pthread.o \ +		version.o + +# Agregate modules for inlinability +DLL_OBJS	= \ +		attr.o \ +		barrier.o \ +		cancel.o \ +		cleanup.o \ +		condvar.o \ +		create.o \ +		dll.o \ +		errno.o \ +		exit.o \ +		fork.o \ +		global.o \ +		misc.o \ +		mutex.o \ +		nonportable.o \ +		private.o \ +		rwlock.o \ +		sched.o \ +		semaphore.o \ +		signal.o \ +		spin.o \ +		sync.o \ +		tsd.o \ +		version.o + +# Separate modules for minimum size statically linked images +SMALL_STATIC_OBJS	= \ +		pthread_attr_init.o \ +		pthread_attr_destroy.o \ +		pthread_attr_getdetachstate.o \ +		pthread_attr_setdetachstate.o \ +		pthread_attr_getstackaddr.o \ +		pthread_attr_setstackaddr.o \ +		pthread_attr_getstacksize.o \ +		pthread_attr_setstacksize.o \ +		pthread_attr_getscope.o \ +		pthread_attr_setscope.o \ +		pthread_attr_setschedpolicy.o \ +		pthread_attr_getschedpolicy.o \ +		pthread_attr_setschedparam.o \ +		pthread_attr_getschedparam.o \ +		pthread_attr_setinheritsched.o \ +		pthread_attr_getinheritsched.o \ +		pthread_barrier_init.o \ +		pthread_barrier_destroy.o \ +		pthread_barrier_wait.o \ +		pthread_barrierattr_init.o \ +		pthread_barrierattr_destroy.o \ +		pthread_barrierattr_setpshared.o \ +		pthread_barrierattr_getpshared.o \ +		pthread_setcancelstate.o \ +		pthread_setcanceltype.o \ +		pthread_testcancel.o \ +		pthread_cancel.o \ +		cleanup.o \ +		pthread_condattr_destroy.o \ +		pthread_condattr_getpshared.o \ +		pthread_condattr_init.o \ +		pthread_condattr_setpshared.o \ +		pthread_cond_destroy.o \ +		pthread_cond_init.o \ +		pthread_cond_signal.o \ +		pthread_cond_wait.o \ +		create.o \ +		dll.o \ +		errno.o \ +		pthread_exit.o \ +		fork.o \ +		global.o \ +		pthread_mutex_init.o \ +		pthread_mutex_destroy.o \ +		pthread_mutexattr_init.o \ +		pthread_mutexattr_destroy.o \ +		pthread_mutexattr_getpshared.o \ +		pthread_mutexattr_setpshared.o \ +		pthread_mutexattr_settype.o \ +		pthread_mutexattr_gettype.o \ +		pthread_mutex_lock.o \ +		pthread_mutex_timedlock.o \ +		pthread_mutex_unlock.o \ +		pthread_mutex_trylock.o \ +		pthread_mutexattr_setkind_np.o \ +		pthread_mutexattr_getkind_np.o \ +		pthread_getw32threadhandle_np.o \ +		pthread_delay_np.o \ +		pthread_num_processors_np.o \ +		pthread_win32_attach_detach_np.o \ +		pthread_equal.o \ +		pthread_getconcurrency.o \ +		pthread_once.o \ +		pthread_self.o \ +		pthread_setconcurrency.o \ +		pthread_rwlock_init.o \ +		pthread_rwlock_destroy.o \ +		pthread_rwlockattr_init.o \ +		pthread_rwlockattr_destroy.o \ +		pthread_rwlockattr_getpshared.o \ +		pthread_rwlockattr_setpshared.o \ +		pthread_rwlock_rdlock.o \ +		pthread_rwlock_wrlock.o \ +		pthread_rwlock_unlock.o \ +		pthread_rwlock_tryrdlock.o \ +		pthread_rwlock_trywrlock.o \ +		pthread_setschedparam.o \ +		pthread_getschedparam.o \ +		pthread_timechange_handler_np.o \ +		ptw32_is_attr.o \ +		ptw32_cond_check_need_init.o \ +		ptw32_mutex_check_need_init.o \ +		ptw32_processInitialize.o \ +		ptw32_processTerminate.o \ +		ptw32_threadStart.o \ +		ptw32_threadDestroy.o \ +		ptw32_tkAssocCreate.o \ +		ptw32_tkAssocDestroy.o \ +		ptw32_callUserDestroyRoutines.o \ +		ptw32_timespec.o \ +		ptw32_throw.o \ +		ptw32_InterlockedCompareExchange.o \ +		ptw32_getprocessors.o \ +		ptw32_calloc.o \ +		ptw32_new.o \ +		ptw32_reuse.o \ +		ptw32_semwait.o \ +		ptw32_relmillisecs.o \ +		ptw32_rwlock_check_need_init.o \ +		sched_get_priority_max.o \ +		sched_get_priority_min.o \ +		sched_setscheduler.o \ +		sched_getscheduler.o \ +		sched_yield.o \ +		sem_init.o \ +		sem_destroy.o \ +		sem_trywait.o \ +		sem_timedwait.o \ +		sem_wait.o \ +		sem_post.o \ +		sem_post_multiple.o \ +		sem_getvalue.o \ +		sem_open.o \ +		sem_close.o \ +		sem_unlink.o \ +		signal.o \ +		pthread_kill.o \ +		ptw32_spinlock_check_need_init.o \ +		pthread_spin_init.o \ +		pthread_spin_destroy.o \ +		pthread_spin_lock.o \ +		pthread_spin_unlock.o \ +		pthread_spin_trylock.o \ +		pthread_detach.o \ +		pthread_join.o \ +		pthread_key_create.o \ +		pthread_key_delete.o \ +		pthread_setspecific.o \ +		pthread_getspecific.o \ +		w32_CancelableWait.o \ +		version.o + +INCL	= \ +		config.h \ +		implement.h \ +		semaphore.h \ +		pthread.h \ +		need_errno.h + +ATTR_SRCS	= \ +		pthread_attr_init.c \ +		pthread_attr_destroy.c \ +		pthread_attr_getdetachstate.c \ +		pthread_attr_setdetachstate.c \ +		pthread_attr_getstackaddr.c \ +		pthread_attr_setstackaddr.c \ +		pthread_attr_getstacksize.c \ +		pthread_attr_setstacksize.c \ +		pthread_attr_getscope.c \ +		pthread_attr_setscope.c + +BARRIER_SRCS = \ +		pthread_barrier_init.c \ +		pthread_barrier_destroy.c \ +		pthread_barrier_wait.c \ +		pthread_barrierattr_init.c \ +		pthread_barrierattr_destroy.c \ +		pthread_barrierattr_setpshared.c \ +		pthread_barrierattr_getpshared.c + +CANCEL_SRCS	= \ +		pthread_setcancelstate.c \ +		pthread_setcanceltype.c \ +		pthread_testcancel.c \ +		pthread_cancel.c  + +CONDVAR_SRCS	= \ +		ptw32_cond_check_need_init.c \ +		pthread_condattr_destroy.c \ +		pthread_condattr_getpshared.c \ +		pthread_condattr_init.c \ +		pthread_condattr_setpshared.c \ +		pthread_cond_destroy.c \ +		pthread_cond_init.c \ +		pthread_cond_signal.c \ +		pthread_cond_wait.c + +EXIT_SRCS	= \ +		pthread_exit.c + +MISC_SRCS	= \ +		pthread_equal.c \ +		pthread_getconcurrency.c \ +		pthread_kill.c \ +		pthread_once.c \ +		pthread_self.c \ +		pthread_setconcurrency.c \ +		ptw32_calloc.c \ +		ptw32_new.c \ +		ptw32_reuse.c \ +		w32_CancelableWait.c + +MUTEX_SRCS	= \ +		ptw32_mutex_check_need_init.c \ +		pthread_mutex_init.c \ +		pthread_mutex_destroy.c \ +		pthread_mutexattr_init.c \ +		pthread_mutexattr_destroy.c \ +		pthread_mutexattr_getpshared.c \ +		pthread_mutexattr_setpshared.c \ +		pthread_mutexattr_settype.c \ +		pthread_mutexattr_gettype.c \ +		pthread_mutex_lock.c \ +		pthread_mutex_timedlock.c \ +		pthread_mutex_unlock.c \ +		pthread_mutex_trylock.c + +NONPORTABLE_SRCS = \ +		pthread_mutexattr_setkind_np.c \ +		pthread_mutexattr_getkind_np.c \ +		pthread_getw32threadhandle_np.c \ +		pthread_delay_np.c \ +		pthread_num_processors_np.c \ +		pthread_win32_attach_detach_np.c \ +		pthread_timechange_handler_np.c  + +PRIVATE_SRCS	= \ +		ptw32_is_attr.c \ +		ptw32_processInitialize.c \ +		ptw32_processTerminate.c \ +		ptw32_threadStart.c \ +		ptw32_threadDestroy.c \ +		ptw32_tkAssocCreate.c \ +		ptw32_tkAssocDestroy.c \ +		ptw32_callUserDestroyRoutines.c \ +		ptw32_semwait.c \ +		ptw32_relmillisecs.c \ +		ptw32_timespec.c \ +		ptw32_throw.c \ +		ptw32_InterlockedCompareExchange.c \ +		ptw32_getprocessors.c + +RWLOCK_SRCS	= \ +		ptw32_rwlock_check_need_init.c \ +		ptw32_rwlock_cancelwrwait.c \ +		pthread_rwlock_init.c \ +		pthread_rwlock_destroy.c \ +		pthread_rwlockattr_init.c \ +		pthread_rwlockattr_destroy.c \ +		pthread_rwlockattr_getpshared.c \ +		pthread_rwlockattr_setpshared.c \ +		pthread_rwlock_rdlock.c \ +		pthread_rwlock_timedrdlock.c \ +		pthread_rwlock_wrlock.c \ +		pthread_rwlock_timedwrlock.c \ +		pthread_rwlock_unlock.c \ +		pthread_rwlock_tryrdlock.c \ +		pthread_rwlock_trywrlock.c + +SCHED_SRCS	= \ +		pthread_attr_setschedpolicy.c \ +		pthread_attr_getschedpolicy.c \ +		pthread_attr_setschedparam.c \ +		pthread_attr_getschedparam.c \ +		pthread_attr_setinheritsched.c \ +		pthread_attr_getinheritsched.c \ +		pthread_setschedparam.c \ +		pthread_getschedparam.c \ +		sched_get_priority_max.c \ +		sched_get_priority_min.c \ +		sched_setscheduler.c \ +		sched_getscheduler.c \ +		sched_yield.c + +SEMAPHORE_SRCS = \ +		sem_init.c \ +		sem_destroy.c \ +		sem_trywait.c \ +		sem_timedwait.c \ +		sem_wait.c \ +		sem_post.c \ +		sem_post_multiple.c \ +		sem_getvalue.c \ +		sem_open.c \ +		sem_close.c \ +		sem_unlink.c + +SPIN_SRCS	= \ +		ptw32_spinlock_check_need_init.c \ +		pthread_spin_init.c \ +		pthread_spin_destroy.c \ +		pthread_spin_lock.c \ +		pthread_spin_unlock.c \ +		pthread_spin_trylock.c + +SYNC_SRCS	= \ +		pthread_detach.c \ +		pthread_join.c + +TSD_SRCS	= \ +		pthread_key_create.c \ +		pthread_key_delete.c \ +		pthread_setspecific.c \ +		pthread_getspecific.c + + +GCE_DLL	= pthreadGCE$(DLL_VER).dll +GCED_DLL= pthreadGCE$(DLL_VERD).dll +GCE_LIB	= libpthreadGCE$(DLL_VER).a +GCED_LIB= libpthreadGCE$(DLL_VERD).a +GCE_INLINED_STAMP = pthreadGCE$(DLL_VER).stamp +GCED_INLINED_STAMP = pthreadGCE$(DLL_VERD).stamp + +GC_DLL 	= pthreadGC$(DLL_VER).dll +GCD_DLL	= pthreadGC$(DLL_VERD).dll +GC_LIB	= libpthreadGC$(DLL_VER).a +GCD_LIB	= libpthreadGC$(DLL_VERD).a +GC_INLINED_STAMP = pthreadGC$(DLL_VER).stamp +GCD_INLINED_STAMP = pthreadGC$(DLL_VERD).stamp +GC_STATIC_STAMP = libpthreadGC$(DLL_VER).stamp +GCD_STATIC_STAMP = libpthreadGC$(DLL_VERD).stamp + +PTHREAD_DEF	= pthread.def + +help: +	@ echo "Run one of the following command lines:" +	@ echo "make clean GC            (to build the GNU C dll with C cleanup code)" +	@ echo "make clean GCE           (to build the GNU C dll with C++ exception handling)" +	@ echo "make clean GC-inlined    (to build the GNU C inlined 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-static     (to build the GNU C inlined static lib with C cleanup code)" +	@ echo "make clean GC-debug      (to build the GNU C debug dll with C cleanup code)" +	@ echo "make clean GCE-debug     (to build the GNU C debug dll with C++ exception handling)" +	@ echo "make clean GC-inlined-debug    (to build the GNU C inlined debug dll with C cleanup code)" +	@ echo "make clean GCE-inlined-debug   (to build the GNU C inlined debug dll with C++ exception handling)" +	@ echo "make clean GC-static-debug     (to build the GNU C inlined static debug lib with C cleanup code)" + +all: +	@ $(MAKE) clean GCE +	@ $(MAKE) clean GC + +GC: +		$(MAKE) CC=gcc CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" $(GC_DLL) + +GC-debug: +		$(MAKE) CC=gcc CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" DLL_VER=$(DLL_VERD) OPT="$(DOPT)" $(GCD_DLL) + +GCE: +		$(MAKE) CC=g++ CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" $(GCE_DLL) + +GCE-debug: +		$(MAKE) CC=g++ CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" DLL_VER=$(DLL_VERD) OPT="$(DOPT)" $(GCED_DLL) + +GC-inlined: +		$(MAKE) CC=gcc XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GC_INLINED_STAMP) + +GC-inlined-debug: +		$(MAKE) CC=gcc XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="$(DOPT)" $(GCD_INLINED_STAMP) + +GCE-inlined: +		$(MAKE) CC=g++ XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GCE_INLINED_STAMP) + +GCE-inlined-debug: +		$(MAKE) CC=g++ XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="$(DOPT)" $(GCED_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) + +GC-static-debug: +		$(MAKE) CC=gcc XOPT="-DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="$(DOPT)" $(GCD_STATIC_STAMP) + +tests: +	@ cd tests +	@ $(MAKE) auto + +%.pre: %.c +	$(CC) -E -o $@ $(CFLAGS) $^ + +%.s: %.c +	$(CC) -c $(CFLAGS) -Wa,-ahl $^ > $@ + +%.o: %.rc +	$(RC) $(RCFLAGS) $(CLEANUP) -o $@ $< + +.SUFFIXES: .dll .rc .c .o + +.c.o:;		 $(CC) -c -o $@ $(CFLAGS) $(XC_FLAGS) $< + + +$(GC_DLL) $(GCD_DLL): $(DLL_OBJS) +	$(CC) $(OPT) -shared -o $(GC_DLL) $(DLL_OBJS) $(LFLAGS) +	dlltool -z pthread.def $(DLL_OBJS) +	dlltool -k --dllname $@ --output-lib $(GC_LIB) --def $(PTHREAD_DEF) + +$(GCE_DLL): $(DLL_OBJS) +	$(CC) $(OPT) -mthreads -shared -o $(GCE_DLL) $(DLL_OBJS) $(LFLAGS) +	dlltool -z pthread.def $(DLL_OBJS) +	dlltool -k --dllname $@ --output-lib $(GCE_LIB) --def $(PTHREAD_DEF) + +$(GC_INLINED_STAMP) $(GCD_INLINED_STAMP): $(DLL_INLINED_OBJS) +	$(CC) $(OPT) $(XOPT) -shared -o $(GC_DLL) $(DLL_INLINED_OBJS) $(LFLAGS) +	dlltool -z pthread.def $(DLL_INLINED_OBJS) +	dlltool -k --dllname $(GC_DLL) --output-lib $(GC_LIB) --def $(PTHREAD_DEF) +	echo touched > $(GC_INLINED_STAMP) + +$(GCE_INLINED_STAMP) $(GCED_INLINED_STAMP): $(DLL_INLINED_OBJS) +	$(CC) $(OPT) $(XOPT) -mthreads -shared -o $(GCE_DLL) $(DLL_INLINED_OBJS)  $(LFLAGS) +	dlltool -z pthread.def $(DLL_INLINED_OBJS) +	dlltool -k --dllname $(GCE_DLL) --output-lib $(GCE_LIB) --def $(PTHREAD_DEF) +	echo touched > $(GCE_INLINED_STAMP) + +$(GC_STATIC_STAMP) $(GCD_STATIC_STAMP): $(DLL_INLINED_OBJS) +	$(RM) $(GC_LIB) +	$(AR) -rv $(GC_LIB) $(DLL_INLINED_OBJS) +	echo touched > $(GC_STATIC_STAMP) + +clean: +	-$(RM) *~ +	-$(RM) *.i +	-$(RM) *.o +	-$(RM) *.obj +	-$(RM) *.exe +	-$(RM) $(PTHREAD_DEF) + +realclean: clean +	-$(RM) $(GC_LIB) +	-$(RM) $(GCE_LIB) +	-$(RM) $(GC_DLL) +	-$(RM) $(GCE_DLL) +	-$(RM) $(GC_INLINED_STAMP) +	-$(RM) $(GCE_INLINED_STAMP) +	-$(RM) $(GC_STATIC_STAMP) +	-$(RM) $(GCD_LIB) +	-$(RM) $(GCED_LIB) +	-$(RM) $(GCD_DLL) +	-$(RM) $(GCED_DLL) +	-$(RM) $(GCD_INLINED_STAMP) +	-$(RM) $(GCED_INLINED_STAMP) +	-$(RM) $(GCD_STATIC_STAMP) + +attr.o:		attr.c $(ATTR_SRCS) $(INCL) +barrier.o:	barrier.c $(BARRIER_SRCS) $(INCL) +cancel.o:	cancel.c $(CANCEL_SRCS) $(INCL) +condvar.o:	condvar.c $(CONDVAR_SRCS) $(INCL) +exit.o:		exit.c $(EXIT_SRCS) $(INCL) +misc.o:		misc.c $(MISC_SRCS) $(INCL) +mutex.o:	mutex.c $(MUTEX_SRCS) $(INCL) +nonportable.o:	nonportable.c $(NONPORTABLE_SRCS) $(INCL) +private.o:	private.c $(PRIVATE_SRCS) $(INCL) +rwlock.o:	rwlock.c $(RWLOCK_SRCS) $(INCL) +sched.o:	sched.c $(SCHED_SRCS) $(INCL) +semaphore.o:	semaphore.c $(SEMAPHORE_SRCS) $(INCL) +spin.o:		spin.c $(SPIN_SRCS) $(INCL) +sync.o:		sync.c $(SYNC_SRCS) $(INCL) +tsd.o:		tsd.c $(TSD_SRCS) $(INCL) +version.o:	version.rc $(INCL) | 
