⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wmakefile

📁 电驴下载工具eMule0.47aVeryCD的源代码,可作分析测试也可用于P2P软件的开发研究.
💻
字号:

# This makefile is compatible with Watcom wmake
# 
# The variables $DLLDEST and $LIBDEST hold the destination directories for the
# dll and the lib, respectively. Probably all that needs to change is $DEVROOT.

DLL_VER	= 1

.NOCHECK

DEVROOT=c:\pthreads

DLLDEST=$(DEVROOT)\DLL
LIBDEST=$(DEVROOT)\DLL

DLLS	= pthreadWCE$(DLL_VER).dll pthreadWC$(DLL_VER).dll
INLINED_STAMPS	= pthreadWCE$(DLL_VER).stamp pthreadWC$(DLL_VER).stamp

OPTIM	= -ot

CFLAGS	= -i=. -w4 -e25 -d_REENTRANT -dHAVE_CONFIG_H -zq -bm &
		  $(OPTIM) -bd -5r -bt=nt -mf -d2

# C++ Exceptions
WCEFLAGS	= -xs /D__CLEANUP_CXX $(CFLAGS)
#C cleanup code
WCFLAGS	= /D__CLEANUP_C $(CFLAGS)

DLL_INLINED_OBJS = &
		pthread.obj

# Agregate modules for inlinability
DLL_OBJS	= &
		attr.obj &
		barrier.obj &
		cancel.obj &
		cleanup.obj &
		condvar.obj &
		create.obj &
		dll.obj &
		errno.obj &
		exit.obj &
		fork.obj &
		global.obj &
		misc.obj &
		mutex.obj &
		nonportable.obj &
		private.obj &
		rwlock.obj &
		sched.obj &
		semaphore.obj &
		signal.obj &
		spin.obj &
		sync.obj &
		tsd.obj

# Separate modules for minimising the size of statically linked images
SMALL_STATIC_OBJS	= &
		pthread_attr_init.obj &
		pthread_attr_destroy.obj &
		pthread_attr_getdetachstate.obj &
		pthread_attr_setdetachstate.obj &
		pthread_attr_getstackaddr.obj &
		pthread_attr_setstackaddr.obj &
		pthread_attr_getstacksize.obj &
		pthread_attr_setstacksize.obj &
		pthread_attr_getscope.obj &
		pthread_attr_setscope.obj &
		pthread_attr_setschedpolicy.obj &
		pthread_attr_getschedpolicy.obj &
		pthread_attr_setschedparam.obj &
		pthread_attr_getschedparam.obj &
		pthread_attr_setinheritsched.obj &
		pthread_attr_getinheritsched.obj &
		pthread_barrier_init.obj &
		pthread_barrier_destroy.obj &
		pthread_barrier_wait.obj &
		pthread_barrierattr_init.obj &
		pthread_barrierattr_destroy.obj &
		pthread_barrierattr_setpshared.obj &
		pthread_barrierattr_getpshared.obj &
		pthread_setcancelstate.obj &
		pthread_setcanceltype.obj &
		pthread_testcancel.obj &
		pthread_cancel.obj &
		cleanup.obj &
		pthread_condattr_destroy.obj &
		pthread_condattr_getpshared.obj &
		pthread_condattr_init.obj &
		pthread_condattr_setpshared.obj &
		pthread_cond_destroy.obj &
		pthread_cond_init.obj &
		pthread_cond_signal.obj &
		pthread_cond_wait.obj &
		create.obj &
		dll.obj &
		errno.obj &
		pthread_exit.obj &
		fork.obj &
		global.obj &
		pthread_mutex_init.obj &
		pthread_mutex_destroy.obj &
		pthread_mutexattr_init.obj &
		pthread_mutexattr_destroy.obj &
		pthread_mutexattr_getpshared.obj &
		pthread_mutexattr_setpshared.obj &
		pthread_mutexattr_settype.obj &
		pthread_mutexattr_gettype.obj &
		pthread_mutex_lock.obj &
		pthread_mutex_timedlock.obj &
		pthread_mutex_unlock.obj &
		pthread_mutex_trylock.obj &
		pthread_mutexattr_setkind_np.obj &
		pthread_mutexattr_getkind_np.obj &
		pthread_getw32threadhandle_np.obj &
		pthread_delay_np.obj &
		pthread_num_processors_np.obj &
		pthread_win32_attach_detach_np.obj &
		pthread_equal.obj &
		pthread_getconcurrency.obj &
		pthread_once.obj &
		pthread_self.obj &
		pthread_setconcurrency.obj &
		pthread_rwlock_init.obj &
		pthread_rwlock_destroy.obj &
		pthread_rwlockattr_init.obj &
		pthread_rwlockattr_destroy.obj &
		pthread_rwlockattr_getpshared.obj &
		pthread_rwlockattr_setpshared.obj &
		pthread_rwlock_rdlock.obj &
		pthread_rwlock_wrlock.obj &
		pthread_rwlock_unlock.obj &
		pthread_rwlock_tryrdlock.obj &
		pthread_rwlock_trywrlock.obj &
		pthread_setschedparam.obj &
		pthread_getschedparam.obj &
		pthread_timechange_handler_np.obj &
		ptw32_is_attr.obj &
		ptw32_processInitialize.obj &
		ptw32_processTerminate.obj &
		ptw32_threadStart.obj &
		ptw32_threadDestroy.obj &
		ptw32_tkAssocCreate.obj &
		ptw32_tkAssocDestroy.obj &
		ptw32_callUserDestroyRoutines.obj &
		ptw32_timespec.obj &
		ptw32_throw.obj &
		ptw32_InterlockedCompareExchange.obj &
		ptw32_getprocessors.obj &
		ptw32_calloc.obj &
		ptw32_new.obj &
		ptw32_reuse.obj &
		ptw32_semwait.obj &
		ptw32_rwlock_check_need_init.obj &
		ptw32_cond_check_need_init.obj &
		ptw32_mutex_check_need_init.obj &
		sched_get_priority_max.obj &
		sched_get_priority_min.obj &
		sched_setscheduler.obj &
		sched_getscheduler.obj &
		sched_yield.obj &
		sem_init.obj &
		sem_destroy.obj &
		sem_trywait.obj &
		sem_timedwait.obj &
		sem_wait.obj &
		sem_post.obj &
		sem_post_multiple.obj &
		sem_getvalue.obj &
		sem_open.obj &
		sem_close.obj &
		sem_unlink.obj &
		ptw32_increase_semaphore.obj &
		ptw32_decrease_semaphore.obj &
		signal.obj &
		pthread_kill.obj &
		ptw32_spinlock_check_need_init.obj &
		pthread_spin_init.obj &
		pthread_spin_destroy.obj &
		pthread_spin_lock.obj &
		pthread_spin_unlock.obj &
		pthread_spin_trylock.obj &
		pthread_detach.obj &
		pthread_join.obj &
		pthread_key_create.obj &
		pthread_key_delete.obj &
		pthread_setspecific.obj &
		pthread_getspecific.obj &
		w32_CancelableWait.obj

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_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 &
		ptw32_increase_semaphore.c &
		ptw32_decrease_semaphore.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


help:
	@ echo Run one of the following command lines:
	@ echo wmake clean WCE   (to build the Watcom C dll with C++ exception handling)
	@ echo wmake clean WC    (to build the Watcom C dll with C cleanup code)
	@ echo wmake clean WCE-inlined   (to build the Watcom C inlined dll with C++ exception handling)
	@ echo wmake clean WC-inlined    (to build the Watcom C inlined dll with C cleanup code)

all:
	@ wmake /f Wmakefile clean WCE-inlined
	@ wmake /f Wmakefile clean WC-inlined

WCE:
	@ wmake /f Wmakefile CC=wpp386 EHFLAGS="$(OPTIM) $(WCEFLAGS)" pthreadWCE$(DLL_VER).dll

WC:
	@ wmake /f Wmakefile CC=wcc386 EHFLAGS="$(OPTIM) $(WCFLAGS)" pthreadWC$(DLL_VER).dll

#
# The so-called inlined DLL is just a single translation unit with
# inlining optimisation turned on.
#
WCE-inlined:
	@ wmake /f Wmakefile CC=wpp386 EHFLAGS="$(OPTIM) $(WCEFLAGS)" pthreadWCE$(DLL_VER).stamp

WC-inlined:
	@ wmake /f Wmakefile CC=wcc386 EHFLAGS="$(OPTIM) $(WCFLAGS)" pthreadWC$(DLL_VER).stamp

realclean: clean
	if exist *.dll del *.dll
	if exist *.lib del *.lib
	if exist *.stamp del *.stamp

clean:
	if exist *.obj del *.obj
	if exist *.ilk del *.ilk
	if exist *.pdb del *.pdb
	if exist *.exp del *.exp
	if exist *.o del *.o
	if exist *.i del *.i
	if exist *.lnk del *.lnk
	if exist *.err del *.err
	if exist *.map del *.map
	if exist *.sym del *.sym


install: $(DLLS)
	copy pthread*.dll $(DLLDEST)
	copy pthread*.lib $(LIBDEST)

$(DLLS): $(DLL_OBJS)
	@ %create $*.lnk
	@ for %f in ($(DLL_OBJS)) do %append $*.lnk FILE %f
	wlink name $* d all op inc SYS nt_dll op m op maxe=25 op q op symf @ $*.lnk
	wlib -n -b $*.lib +$*.dll

$(INLINED_STAMPS): $(DLL_INLINED_OBJS)
	@ %create $*.lnk
	@ for %f in ($(DLL_INLINED_OBJS)) do %append $*.lnk FILE %f
	wlink name $* d all op inc SYS nt_dll op m op maxe=25 op q op symf @ $*.lnk
	wlib -n -b $*.lib +$*.dll

.c.obj:
	$(CC) $[* $(EHFLAGS)

attr.obj:	attr.c $(ATTR_SRCS) $(INCL)
barrier.obj:	barrier.c $(BARRIER_SRCS) $(INCL)
cancel.obj:	cancel.c $(CANCEL_SRCS) $(INCL)
condvar.obj:	condvar.c $(CONDVAR_SRCS) $(INCL)
exit.obj:	exit.c $(EXIT_SRCS) $(INCL)
misc.obj:	misc.c $(MISC_SRCS) $(INCL)
mutex.obj:	mutex.c $(MUTEX_SRCS) $(INCL)
nonportable.obj:	nonportable.c $(NONPORTABLE_SRCS) $(INCL)
private.obj:	private.c $(PRIVATE_SRCS) $(INCL)
rwlock.obj:	rwlock.c $(RWLOCK_SRCS) $(INCL)
sched.obj:	sched.c $(SCHED_SRCS) $(INCL)
semaphore.obj:	semaphore.c $(SEMAPHORE_SRCS) $(INCL)
spin.obj:	spin.c $(SPIN_SRCS) $(INCL)
sync.obj:	sync.c $(SYNC_SRCS) $(INCL)
tsd.obj:	tsd.c $(TSD_SRCS) $(INCL)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -