Skip to content

Commit

Permalink
use GetSystemTimeAsFileTime() everywhere; nmake build independence.
Browse files Browse the repository at this point in the history
  • Loading branch information
rocso committed Aug 8, 2018
1 parent 15b7178 commit 9439748
Show file tree
Hide file tree
Showing 8 changed files with 59 additions and 30 deletions.
10 changes: 10 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
2018-08-08 Ross Johnson <ross dot johnson at homemail dot com dot au>

* Makefile: "nmake realclean VC VC-static" and similar wasn't remaking pthread.obj.
* common.mk: changes to accommodate the above.
* config.h (NEED_FTIME): defined for all which uses GetSystemTimeAsFileTime()
* _ptw32.h (NEED_FTIME): Likewise.
* GNUmakefile: use changes in common.mk but still has problem with
"make realclean GC GC-static" and similar.
* configure.ac (AC_INIT): package name change.

2018-08-07 Ross Johnson <ross dot johnson at homemail dot com dot au>

* GNUmakefile.in (DLL_VER): rename as PTW32_VER.
Expand Down
34 changes: 18 additions & 16 deletions GNUmakefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -173,13 +173,15 @@ GCE_CFLAGS = $(__PTW32_FLAGS) -mthreads
DEFS = @DEFS@ -D__PTW32_BUILD
CFLAGS = $(OPT) $(XOPT) $(ARCH) -I. -I${srcdir} $(DEFS) -Wall

OBJEXT = @OBJEXT@
RESEXT = @OBJEXT@
OBJEXT = @OBJEXT@
OEXT = @OBJEXT@
RESEXT = @OBJEXT@

include ${srcdir}/common.mk

DLL_OBJS += $(RESOURCE_OBJS)
STATIC_OBJS += $(RESOURCE_OBJS)
STATIC_OBJS_SMALL += $(RESOURCE_OBJS)

GCE_DLL = pthreadGCE$(PTW32_VER).dll
GCED_DLL= pthreadGCE$(PTW32_VERD).dll
Expand Down Expand Up @@ -260,35 +262,34 @@ GCE-debug:
$(MAKE) XOPT="-D__PTW32_BUILD_INLINED" CC=$(CXX) CLEANUP=-D__PTW32_CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" PTW32_VER=$(PTW32_VERD) OPT="-D__PTW32_CLEANUP_CXX -g -O0" $(GCED_DLL)

GC-static:
$(MAKE) XOPT="-D__PTW32_BUILD_INLINED -D__PTW32_STATIC_LIB" CLEANUP=-D__PTW32_CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" $(GC_INLINED_STATIC_STAMP)
$(MAKE) XOPT="-D__PTW32_BUILD_INLINED -D__PTW32_STATIC_LIB" CLEANUP=-D__PTW32_CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(STATIC_OBJS)" $(GC_INLINED_STATIC_STAMP)

GC-static-debug:
$(MAKE) XOPT="-D__PTW32_BUILD_INLINED -D__PTW32_STATIC_LIB" CLEANUP=-D__PTW32_CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" PTW32_VER=$(PTW32_VERD) OPT="-D__PTW32_CLEANUP_C -g -O0" $(GCD_INLINED_STATIC_STAMP)
$(MAKE) XOPT="-D__PTW32_BUILD_INLINED -D__PTW32_STATIC_LIB" CLEANUP=-D__PTW32_CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(STATIC_OBJS)" PTW32_VER=$(PTW32_VERD) OPT="-D__PTW32_CLEANUP_C -g -O0" $(GCD_INLINED_STATIC_STAMP)

GC-small-static:
$(MAKE) XOPT="-D__PTW32_STATIC_LIB" CLEANUP=-D__PTW32_CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(STATIC_OBJS)" $(GC_SMALL_STATIC_STAMP)
$(MAKE) XOPT="-D__PTW32_STATIC_LIB" CLEANUP=-D__PTW32_CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(STATIC_OBJS_SMALL)" $(GC_SMALL_STATIC_STAMP)

GC-small-static-debug:
$(MAKE) XOPT="-D__PTW32_STATIC_LIB" CLEANUP=-D__PTW32_CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(STATIC_OBJS)" PTW32_VER=$(PTW32_VERD) OPT="-D__PTW32_CLEANUP_C -g -O0" $(GCD_SMALL_STATIC_STAMP)
$(MAKE) XOPT="-D__PTW32_STATIC_LIB" CLEANUP=-D__PTW32_CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(STATIC_OBJS_SMALL)" PTW32_VER=$(PTW32_VERD) OPT="-D__PTW32_CLEANUP_C -g -O0" $(GCD_SMALL_STATIC_STAMP)

GCE-static:
$(MAKE) XOPT="-D__PTW32_BUILD_INLINED -D__PTW32_STATIC_LIB" CC=$(CXX) CLEANUP=-D__PTW32_CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" $(GCE_INLINED_STATIC_STAMP)
$(MAKE) XOPT="-D__PTW32_BUILD_INLINED -D__PTW32_STATIC_LIB" CC=$(CXX) CLEANUP=-D__PTW32_CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(STATIC_OBJS)" $(GCE_INLINED_STATIC_STAMP)

GCE-static-debug:
$(MAKE) XOPT="-D__PTW32_BUILD_INLINED -D__PTW32_STATIC_LIB" CC=$(CXX) CLEANUP=-D__PTW32_CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" PTW32_VER=$(PTW32_VERD) OPT="-D__PTW32_CLEANUP_C -g -O0" $(GCED_INLINED_STATIC_STAMP)
$(MAKE) XOPT="-D__PTW32_BUILD_INLINED -D__PTW32_STATIC_LIB" CC=$(CXX) CLEANUP=-D__PTW32_CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(STATIC_OBJS)" PTW32_VER=$(PTW32_VERD) OPT="-D__PTW32_CLEANUP_C -g -O0" $(GCED_INLINED_STATIC_STAMP)

GCE-small-static:
$(MAKE) XOPT="-D__PTW32_STATIC_LIB" CC=$(CXX) CLEANUP=-D__PTW32_CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(STATIC_OBJS)" $(GCE_SMALL_STATIC_STAMP)
$(MAKE) XOPT="-D__PTW32_STATIC_LIB" CC=$(CXX) CLEANUP=-D__PTW32_CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(STATIC_OBJS_SMALL)" $(GCE_SMALL_STATIC_STAMP)

GCE-small-static-debug:
$(MAKE) XOPT="-D__PTW32_STATIC_LIB" CC=$(CXX) CLEANUP=-D__PTW32_CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(STATIC_OBJS)" PTW32_VER=$(PTW32_VERD) OPT="-D__PTW32_CLEANUP_C -g -O0" $(GCED_SMALL_STATIC_STAMP)
$(MAKE) XOPT="-D__PTW32_STATIC_LIB" CC=$(CXX) CLEANUP=-D__PTW32_CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(STATIC_OBJS_SMALL)" PTW32_VER=$(PTW32_VERD) OPT="-D__PTW32_CLEANUP_C -g -O0" $(GCED_SMALL_STATIC_STAMP)

tests:
@ cd tests
@ $(MAKE) auto

# Very basic install. It assumes "realclean" was done just prior to build target if
# you want the installed $(DEVDEST_LIB_NAME) to match that build.
# Very basic install.

INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
Expand Down Expand Up @@ -339,9 +340,10 @@ install-headers: pthread.h sched.h semaphore.h _ptw32.h
%.o: %.rc
$(RC) $(RC_TARGET) $(RCFLAGS) $(CLEANUP) -o $@ -i $<

.SUFFIXES: .dll .rc .c .o
.SUFFIXES: .dll .rc .c .o ._o

.c.o:; $(CC) -c -o $@ $(CFLAGS) $(XC_FLAGS) $<
.c.o:
$(CC) -c -o $@ $(CFLAGS) $(XC_FLAGS) $<


$(GC_DLL) $(GCD_DLL): $(DLL_OBJS)
Expand All @@ -354,12 +356,12 @@ $(GCE_DLL) $(GCED_DLL): $(DLL_OBJS)
$(DLLTOOL) -z pthread.def $^
$(DLLTOOL) -k --dllname $@ --output-lib [email protected] --def $(PTHREAD_DEF)

$(GC_INLINED_STATIC_STAMP) $(GCE_INLINED_STATIC_STAMP) $(GCD_INLINED_STATIC_STAMP) $(GCED_INLINED_STATIC_STAMP): $(DLL_OBJS)
$(GC_INLINED_STATIC_STAMP) $(GCE_INLINED_STATIC_STAMP) $(GCD_INLINED_STATIC_STAMP) $(GCED_INLINED_STATIC_STAMP): $(STATIC_OBJS)
$(RM) $(basename $@).a
$(AR) -rsv $(basename $@).a $^
$(ECHO) touched > $@

$(GC_SMALL_STATIC_STAMP) $(GCE_SMALL_STATIC_STAMP) $(GCD_SMALL_STATIC_STAMP) $(GCED_SMALL_STATIC_STAMP): $(STATIC_OBJS)
$(GC_SMALL_STATIC_STAMP) $(GCE_SMALL_STATIC_STAMP) $(GCD_SMALL_STATIC_STAMP) $(GCED_SMALL_STATIC_STAMP): $(STATIC_OBJS_SMALL)
$(RM) $(basename $@).a
$(AR) -rsv $(basename $@).a $^
$(ECHO) touched > $@
Expand Down
21 changes: 13 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,15 @@ VSEFLAGSD = $(CPPFLAGS) $(CFLAGSD)
VCFLAGS = $(CPPFLAGS) $(CFLAGS)
VCFLAGSD = $(CPPFLAGS) $(CFLAGSD)

OBJEXT = obj
RESEXT = res
OBJEXT = obj
OEXT = o
RESEXT = res

include common.mk

DLL_OBJS = $(DLL_OBJS) $(RESOURCE_OBJS)
STATIC_OBJS = $(STATIC_OBJS) $(RESOURCE_OBJS)
DLL_OBJS = $(DLL_OBJS) $(RESOURCE_OBJS)
STATIC_OBJS = $(STATIC_OBJS) $(RESOURCE_OBJS)
STATIC_OBJS_SMALL = $(STATIC_OBJS_SMALL) $(RESOURCE_OBJS)

help:
@ echo To just build all possible versions and install them in $(DESTROOT)
Expand Down Expand Up @@ -226,19 +228,22 @@ install:
$(DLLS): $(DLL_OBJS)
$(CC) /LDd /Zi $(DLL_OBJS) /link /implib:$*.lib $(XLIBS) /out:$@

$(INLINED_STATIC_STAMPS): $(DLL_OBJS)
$(INLINED_STATIC_STAMPS): $(STATIC_OBJS)
if exist lib$*.lib del lib$*.lib
lib $(DLL_OBJS) /out:lib$*.lib
lib $(STATIC_OBJS) /out:lib$*.lib
echo. >$@

$(SMALL_STATIC_STAMPS): $(STATIC_OBJS)
$(SMALL_STATIC_STAMPS): $(STATIC_OBJS_SMALL)
if exist lib$*.lib del lib$*.lib
lib $(STATIC_OBJS) /out:lib$*.lib
lib $(STATIC_OBJS_SMALL) /out:lib$*.lib
echo. >$@

.c.obj:
$(CC) $(XCFLAGS) $(EHFLAGS) /D$(CLEANUP) -c $<

.c.o:
$(CC) $(XCFLAGS) $(EHFLAGS) /D$(CLEANUP) /Fo$*.$(OEXT) -c $<

# TARGET_CPU is an environment variable set by Visual Studio Command Prompt
# as provided by the SDK (VS 2010 Express plus SDK 7.1)
# PLATFORM is an environment variable that may be set in the VS 2013 Express x64 cross
Expand Down
8 changes: 7 additions & 1 deletion _ptw32.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,11 +103,17 @@

/*
* This is more or less a duplicate of what is in the autoconf config.h,
* which is only used when building the pthread-win32 libraries. They
* which is only used when building the pthreads4w libraries.
*/

#if !defined (__PTW32_CONFIG_H) && !defined(__PTW32_PSEUDO_CONFIG_H_SOURCED)
# define __PTW32_PSEUDO_CONFIG_H_SOURCED
/*
* We define NEED_FTIME for all now. GetSystemTimeAsFileTime() is pretty
* much universal now and consistently higher resolution than _ftime64().
*/
# define NEED_FTIME

# if defined(WINCE)
# undef HAVE_CPU_AFFINITY
# define NEED_DUPLICATEHANDLE
Expand Down
5 changes: 4 additions & 1 deletion common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,11 @@ RESOURCE_OBJS = \
DLL_OBJS = \
pthread.$(OBJEXT)

# Separate modules for minimising the size of statically linked images
STATIC_OBJS = \
pthread.$(OEXT)

# Separate modules for minimising the size of statically linked images
STATIC_OBJS_SMALL = \
cleanup.$(OBJEXT) \
create.$(OBJEXT) \
dll.$(OBJEXT) \
Expand Down
7 changes: 5 additions & 2 deletions config.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,11 @@
/* Define if you don't have Win32 calloc. (eg. WinCE) */
#undef NEED_CALLOC

/* Define if you don't have Win32 ftime. (eg. WinCE) */
#undef NEED_FTIME
/*
* Define this now that all systems since Server 2000 support
* GetSystemTimeAsFileTime() (and WINCE before that).
*/
#define NEED_FTIME

/* Define if you don't have Win32 semaphores. (eg. WinCE 2.1 or earlier) */
#undef NEED_SEM
Expand Down
2 changes: 1 addition & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
# if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
#
AC_INIT([pthreads-win32],[git])
AC_INIT([pthreads4w],[git])
AC_CONFIG_HEADERS([config.h])

# Checks for build tools.
Expand Down
2 changes: 1 addition & 1 deletion ptw32_relmillisecs.c
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ __ptw32_relmillisecs (const struct timespec * abstime)
tmpCurrMilliseconds = (int64_t)currSysTime.tv_sec * MILLISEC_PER_SEC;
tmpCurrMilliseconds += ((int64_t)currSysTime.tv_nsec + (NANOSEC_PER_MILLISEC/2))
/ NANOSEC_PER_MILLISEC;
tmpCurrNanoseconds = (int64_t)currSysTime->tv_nsec + ((int64_t)currSysTime->tv_sec * NANOSEC_PER_SEC);
tmpCurrNanoseconds = (int64_t)currSysTime.tv_nsec + ((int64_t)currSysTime.tv_sec * NANOSEC_PER_SEC);

#else /* ! NEED_FTIME */

Expand Down

0 comments on commit 9439748

Please sign in to comment.