593 lines
17 KiB
Makefile
593 lines
17 KiB
Makefile
#
|
|
# --------------------------------------------------------------------------
|
|
#
|
|
# 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.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
#
|
|
|
|
DLL_VER = 2
|
|
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
|
|
|
|
# If not.
|
|
#RM = erase
|
|
#MV = rename
|
|
#CP = copy
|
|
|
|
# For cross compiling use e.g.
|
|
# make CROSS=x86_64-w64-mingw32- clean GC-inlined
|
|
CROSS =
|
|
|
|
AR = $(CROSS)ar
|
|
DLLTOOL = $(CROSS)dlltool
|
|
CC = $(CROSS)gcc
|
|
CXX = $(CROSS)g++
|
|
RANLIB = $(CROSS)ranlib
|
|
RC = $(CROSS)windres
|
|
|
|
OPT = $(CLEANUP) -O3 # -finline-functions -findirect-inlining
|
|
XOPT =
|
|
|
|
RCFLAGS = --include-dir=.
|
|
# Uncomment this if config.h defines RETAIN_WSALASTERROR
|
|
#LFLAGS = -lws2_32
|
|
|
|
# ----------------------------------------------------------------------
|
|
# 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.
|
|
# Pthreads-win32 provides pseudo-unique IDs when the default increment
|
|
# (1) is used, but pthread_t is not a scalar type like Solaris's.
|
|
#
|
|
# 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 (this is the default).
|
|
# Set to some other +ve value to emulate smaller word size types
|
|
# (i.e. will wrap sooner).
|
|
#
|
|
#PTW32_FLAGS = "-DPTW32_THREAD_ID_REUSE_INCREMENT=0"
|
|
#
|
|
# ----------------------------------------------------------------------
|
|
|
|
GC_CFLAGS = $(PTW32_FLAGS)
|
|
GCE_CFLAGS = $(PTW32_FLAGS) -mthreads
|
|
|
|
## Mingw
|
|
MAKE ?= make
|
|
CFLAGS = $(OPT) $(XOPT) -I. -DHAVE_PTW32_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 \
|
|
autostatic.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_mutexattr_setrobust.o \
|
|
pthread_mutexattr_getrobust.o \
|
|
pthread_mutex_lock.o \
|
|
pthread_mutex_timedlock.o \
|
|
pthread_mutex_unlock.o \
|
|
pthread_mutex_trylock.o \
|
|
pthread_mutex_consistent.o \
|
|
pthread_mutexattr_setkind_np.o \
|
|
pthread_mutexattr_getkind_np.o \
|
|
pthread_getw32threadhandle_np.o \
|
|
pthread_getunique_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_MCS_lock.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_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_MCS_lock.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_mutexattr_setrobust.c \
|
|
pthread_mutexattr_getrobust.c \
|
|
pthread_mutex_lock.c \
|
|
pthread_mutex_timedlock.c \
|
|
pthread_mutex_unlock.c \
|
|
pthread_mutex_trylock.c \
|
|
pthread_mutex_consistent.c
|
|
|
|
NONPORTABLE_SRCS = \
|
|
pthread_mutexattr_setkind_np.c \
|
|
pthread_mutexattr_getkind_np.c \
|
|
pthread_getw32threadhandle_np.c \
|
|
pthread_getunique_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_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
|
|
GCE_STATIC_STAMP = libpthreadGCE$(DLL_VER).stamp
|
|
GCED_STATIC_STAMP = libpthreadGCE$(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) CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" $(GC_DLL)
|
|
|
|
GC-debug:
|
|
$(MAKE) CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" DLL_VER=$(DLL_VERD) OPT="-D__CLEANUP_C -g -O0" $(GCD_DLL)
|
|
|
|
GCE:
|
|
$(MAKE) CC=$(CXX) CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" $(GCE_DLL)
|
|
|
|
GCE-debug:
|
|
$(MAKE) CC=$(CXX) CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" DLL_VER=$(DLL_VERD) OPT="-D__CLEANUP_CXX -g -O0" $(GCED_DLL)
|
|
|
|
GC-inlined:
|
|
$(MAKE) XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GC_INLINED_STAMP)
|
|
|
|
GC-inlined-debug:
|
|
$(MAKE) XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="-D__CLEANUP_C -g -O0" $(GCD_INLINED_STAMP)
|
|
|
|
GCE-inlined:
|
|
$(MAKE) CC=$(CXX) XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GCE_INLINED_STAMP)
|
|
|
|
GCE-inlined-debug:
|
|
$(MAKE) CC=$(CXX) XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="-D__CLEANUP_CXX -g -O0" $(GCED_INLINED_STAMP)
|
|
|
|
GC-static:
|
|
$(MAKE) 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) XOPT="-DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="-D__CLEANUP_C -g -O0" $(GCD_STATIC_STAMP)
|
|
|
|
tests:
|
|
@ cd tests
|
|
@ $(MAKE) auto
|
|
|
|
%.pre: %.c
|
|
$(CC) -E -o $@ $(CFLAGS) $^
|
|
|
|
%.s: %.c
|
|
$(CC) -c $(CFLAGS) -DPTW32_BUILD_INLINED -Wa,-ahl $^ > $@
|
|
|
|
%.o: %.rc
|
|
$(RC) $(RCFLAGS) $(CLEANUP) -o $@ -i $<
|
|
|
|
.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)
|
|
$(RANLIB) $(GC_LIB)
|
|
echo touched > $(GC_STATIC_STAMP)
|
|
|
|
clean:
|
|
-$(RM) *~
|
|
-$(RM) *.i
|
|
-$(RM) *.s
|
|
-$(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)
|