77# See pthread.h and README for the description of version numbering.
88DLL_VER = 2$(EXTRAVERSION )
99DLL_VERD = $(DLL_VER ) d
10+ FINDPTHREADS =contrib\FindPTHREADS-WIN32.cmake
1011
11- # set this to 0 to minimize this Makefiles output during build
12+ # set this to 0 to minimize this Makefile's output during build
1213DEBUG_BUILDING = 1
1314
14- CP = xcopy /Q /Y /R /V
15+ !IF DEFINED(STATIC_BUILDING) || DEFINED(DEPLOY) || DEFINED(APPVEYOR) || DEFINED(SYSINSTALL) || DEFINED(SYSUNINSTALL)
16+ # set this to 0 to skip building static libraries
17+ STATIC_BUILDING = 1
18+ # for static libraries and import libraries to be able to
19+ # coexist in $(DEST_LIB_NAME)lib,the static libraries will
20+ # have a "lib" prefix
21+ STATIC_LIB_PREFIX = lib
22+ !ENDIF
23+
24+ CP = xcopy /Q /Y /R
1525MAKE = nmake /nologo
1626RC = rc /nologo
1727LIBB = lib /nologo
1828
29+ # Using dynamic runtime by default
30+ RUNTIME = MD
31+
1932!IF DEFINED(SYSINSTALL) || DEFINED(SYSUNINSTALL)
20- # This needs Admin right... and quoting
33+ # These need Admin right... and quoting
2134DESTROOT = $(VCINSTALLDIR )
22- !else
35+ SYSROOT = $(SYSTEMROOT ) \System32
36+ DLLDEST = $(DESTROOT ) bin$(MACHINE )
37+ LIBDEST = $(DESTROOT ) lib$(MACHINE )
38+ HDRDEST = $(DESTROOT ) include
39+ !ELSE
2340DESTROOT = PTHREADS-BUILT
24- !endif
41+ DLLDEST = $(DESTROOT ) \bin$(MACHINE )
42+ LIBDEST = $(DESTROOT ) \lib$(MACHINE )
43+ HDRDEST = $(DESTROOT ) \include
44+ DATADEST = $(DESTROOT ) pthreads-win32\share
45+ !ENDIF
46+
2547DEST_LIB_NAME = pthread.lib
2648STATIC_LIB_PREFIX = lib
2749
28- !if "$(PLATFORM)" == "x64"
50+ !IF "$(PLATFORM)" == "x64"
2951MACHINE = \amd64
30- !endif
52+ !ENDIF
3153
32- DLLDEST = "$(DESTROOT ) \bin$(MACHINE ) "
33- LIBDEST = "$(DESTROOT ) \lib$(MACHINE ) "
34- HDRDEST = "$(DESTROOT ) \include"
35- !if DEFINED(CMAKEDEST)
54+ !IF DEFINED(CMAKEDEST)
3655# if defined on the command line, $(CMAKEDEST) should point to the
3756# "Modules" folder of you cmake installation
3857# XXX - this should be more flexible (no version)
3958# Also find out a way to determine cmake's default install location
40- CMAKEDEST = "$(CMAKEDEST ) "
41- !ELSEIF DEFINED(CMAKEDEST) && !DEFINED(SYSINSTALL)
42- CMAKEDEST = $(DESTROOT ) cmake\share\cmake-3.8\Modules
59+ CMAKEDEST = $(CMAKEDEST )
60+ !ELSEIF DEFINED(CMAKEDEST) || DEFINED(DEPLOY) && !DEFINED(SYSINSTALL)
61+ CMAKEDEST = $(DATADEST ) \cmake\modules
62+ !ELSE !DEFINED(CMAKEDEST) && (DEFINED(SYSINSTALL) || DEFINED(SYSUNINSTALL))
63+ # XXX - assuming x64 host
64+ CMAKEDEST = $(ProgramFiles(x86 ) \CMake
4365!ENDIF
4466
4567DLLS = pthreadVCE$(DLL_VER ) .dll pthreadVSE$(DLL_VER ) .dll pthreadVC$(DLL_VER ) .dll \
@@ -53,7 +75,7 @@ SMALL_STATIC_STAMPS = pthreadVCE$(DLL_VER).small_static_stamp pthreadVSE$(DLL_V
5375
5476CC = cl /nologo /MP
5577CPPFLAGS = /I. /FIwinconfig.h
56- XCFLAGS = /W3 /MD /nologo
78+ XCFLAGS = /W3 /$( RUNTIME )
5779CFLAGS = /O2 /Ob2 $(XCFLAGS )
5880CFLAGSD = /Z7 $(XCFLAGS )
5981
@@ -113,12 +135,14 @@ all: realclean
113135 @ $(MAKE ) /E clean VCE-debug
114136 @ $(MAKE ) /E clean VSE-debug
115137 @ $(MAKE ) /E clean VC-debug
138+ !IF DEFINED(STATIC_BUILDING)
116139 @ $(MAKE) /E clean VCE-static
117140 @ $(MAKE) /E clean VSE-static
118141 @ $(MAKE) /E clean VC-static
119142 @ $(MAKE) /E clean VCE-static-debug
120143 @ $(MAKE) /E clean VSE-static-debug
121144 @ $(MAKE) /E clean VC-static-debug
145+ !ENDIF
122146
123147TEST_ENV = CFLAGS="$(CFLAGS ) /DNO_ERROR_DIALOGS"
124148
@@ -241,6 +265,10 @@ VC-static-debug:
241265
242266
243267realclean : clean
268+ !IF DEFINED(DEBUG_BUILDING)
269+ @ echo.
270+ @ echo Running $@...
271+ !ENDIF
244272 @if exist *.dll del *.dll
245273 @if exist *.lib del *.lib
246274 @if exist *.pdb del *.pdb
@@ -251,6 +279,10 @@ realclean: clean
251279 cd tests && $(MAKE) clean
252280
253281clean :
282+ !IF DEFINED(DEBUG_BUILDING)
283+ @ echo.
284+ @ echo Running $@...
285+ !ENDIF
254286 @if exist *.obj del *.obj
255287 @if exist *.def del *.def
256288 @if exist *.ilk del *.ilk
@@ -264,44 +296,78 @@ clean:
264296# Very basic install. It assumes "realclean" was done just prior to build target if
265297# you want the installed $(DEVDEST_LIB_NAME) to match that build.
266298install : all
267- if not exist $( DLLDEST) mkdir $( DLLDEST)
268- if not exist $( LIBDEST) mkdir $( LIBDEST)
269- if not exist $( HDRDEST) mkdir $( HDRDEST)
270- if exist pthreadV* .dll $( CP) pthreadV* .dll $( DLLDEST)
271- if exist pthreadV* .pdb $( CP) pthreadV* .pdb $( DLLDEST)
272- if exist libpthreadV* .lib $( CP) libpthreadV* .lib $( LIBDEST)
273- $(CP ) pthreadV* .lib $(LIBDEST )
274- $(CP ) _ptw32.h $(HDRDEST )
275- $(CP ) pthread.h $(HDRDEST )
276- $(CP ) sched.h $(HDRDEST )
277- $(CP ) semaphore.h $(HDRDEST )
278- !IF DEFINED(CMAKEDEST)
279- # XXX - FIX ME!
280- # if not exist $(CMAKEDEST) mkdir $(CMAKEDEST)
281- $(CP) contrib\FindPTHREADS-WIN32.cmake "$(CMAKEDEST)\FindPTHREADS-WIN32.cmake"
282- $(CP) contrib\FindPTHREADS.cmake "$(CMAKEDEST)\FindPTHREADS4W.cmake"
299+ !IF DEFINED(SYSINSTALL)
300+ !IF "$(PLATFORM)" == "x64"
301+ if exist pthreadV*.dll $(CP) pthreadV*.dll "$(SYSROOT)"
302+ !ENDIF
303+ !ELSE
304+ if not exist "$(DLLDEST)" mkdir "$(DLLDEST)"
305+ if not exist "$(LIBDEST)" mkdir "$(LIBDEST)"
306+ if not exist "$(HDRDEST)" mkdir "$(HDRDEST)"
307+ !ENDIF
308+ if exist pthreadV*.dll $(CP) pthreadV*.dll "$(DLLDEST)"
309+ if exist pthreadV*.pdb $(CP) pthreadV*.pdb "$(DLLDEST)"
310+ if exist libpthreadV*.lib $(CP) libpthreadV*.lib "$(LIBDEST)"
311+ $(CP) pthreadV*.lib "$(LIBDEST)"
312+ $(CP) _ptw32.h "$(HDRDEST)"
313+ $(CP) pthread.h "$(HDRDEST)"
314+ $(CP) sched.h "$(HDRDEST)"
315+ $(CP) semaphore.h "$(HDRDEST)"
316+ !IF DEFINED(CMAKEDEST) || DEFINED(DEPLOY)
317+ !IF DEFINED(DEBUG_BUILDING)
318+ @ echo.
319+ @ echo Installing CMAKE Modules into $(CMAKEDEST)...
320+ !ENDIF
321+ # XXX - add a %pthread_root% environment variable
322+ if not exist "$(CMAKEDEST)" mkdir "$(CMAKEDEST)"
323+ $(CP) $(FINDPTHREADS) "$(CMAKEDEST)"
324+ copy /Y $(FINDPTHREADS) "$(CMAKEDEST)\FindPTHREADS4W.cmake"
325+ !ENDIF
326+ !IF DEFINED(APPVEYOR) || DEFINED(DEPLOY)
327+ for %I in (COPYING COPYING.FSF README README.Borland README.CV README.NONPORTABLE README.Watcom README.WinCE WinCE-PORT) do $(CP) %I "$(DESTROOT)"
328+ for %I in (ANNOUNCE BUGS ChangeLog CONTRIBUTORS COPYING COPYING.FSF FAQ MAINTAINERS NEWS PROGRESS) do $(CP) %I "$(DATADEST)\doc"
329+ copy /Y README.md "$(DESTROOT)\README.FIRST"
330+ $(CP) /E /S /I manual "$(DATADEST)\manual"
283331!ENDIF
284- !if "$(APPVEYOR)" == "True" || "$(DEPLOY)" == "1"
285- for %I in (ANNOUNCE BUGS ChangeLog CONTRIBUTORS COPYING COPYING.LIB COPYING.FSF FAQ MAINTAINERS NEWS PROGRESS README README.Borland README.CV README.NONPORTABLE README.Watcom README.WinCE WinCE-PORT) do $(CP) %I $(DESTROOT)
286- !endif
287332
288333uninstall :
289- if exist " $( DLLDEST) \pthreadV*.dll" del " $( DLLDEST) \pthreadV*.dll"
290- if exist " $( DLLDEST) \pthreadV*.pdb" del " $( DLLDEST) \pthreadV*.pdb"
291- if exist " $( LIBDEST) \libpthreadV*.lib" del " $( LIBDEST) \libpthreadV*.lib"
292- if exist " $( LIBDEST) \pthreadV*.lib" del " $( LIBDEST) \pthreadV*.lib"
293- if exist " $( HDRDEST) \_ptw32.h" del " $( HDRDEST) \_ptw32.h"
294- if exist " $( HDRDEST) \pthread.h" del " $( HDRDEST) \pthread.h"
295- if exist " $( HDRDEST) \sched.h" del " $( HDRDEST) \sched.h"
296- if exist " $( HDRDEST) \semaphore.h" del " $( HDRDEST) \semaphore.h"
334+ !IF DEFINED(SYSUNINSTALL) || DEFINED(SYSINSTALL)
335+ del "$(SYSROOT)\pthreadV*.dll"
336+ !ENDIF
337+ del "$(DLLDEST)\pthreadV*.dll"
338+ del "$(DLLDEST)\pthreadV*.pdb"
339+ del "$(LIBDEST)\libpthreadV*.lib"
340+ del "$(LIBDEST)\pthreadV*.lib"
341+ del "$(HDRDEST)\_ptw32.h"
342+ del "$(HDRDEST)\pthread.h"
343+ del "$(HDRDEST)\sched.h"
344+ del "$(HDRDEST)\semaphore.h"
345+ # XXX - remove!!! %pthread_root% environment variable
346+ del "$(CMAKEDEST)\FindPTHREADS-WIN32.cmake"
347+ del "$(CMAKEDEST)\FindPTHREADS4W.cmake"
348+ !IF DEFINED(APPVEYOR) || DEFINED(DEPLOY)
349+ for %I in (ANNOUNCE BUGS ChangeLog CONTRIBUTORS COPYING COPYING.FSF FAQ MAINTAINERS NEWS PROGRESS README README.Borland README.CV README.NONPORTABLE README.Watcom README.WinCE WinCE-PORT) do del $(DESTROOT)\%I
350+ !ENDIF
351+
352+ cmake :
353+ !IF DEFINED(CMAKEDEST) || DEFINED(DEPLOY)
354+ !IF DEFINED(DEBUG_BUILDING)
355+ @ echo.
356+ @ echo Installing CMAKE Modules into $(CMAKEDEST)...
357+ !ENDIF
358+ # XXX - add (and remove!!!) a %pthread_root% environment variable?
359+ if not exist "$(CMAKEDEST)" mkdir "$(CMAKEDEST)"
360+ $(CP) $(FINDPTHREADS) "$(CMAKEDEST)"
361+ copy /Y $(FINDPTHREADS) "$(CMAKEDEST)\FindPTHREADS4W.cmake"
362+ !ENDIF
297363
298364$(DLLS ) : $(DLL_OBJS )
299365 $(CC ) /LDd /ZI /nologo $(DLL_OBJS ) /link /implib:$* .lib $(XLIBS ) /out:$@
300366
301367$(INLINED_STATIC_STAMPS ) : $(DLL_OBJS )
302368!IF DEFINED(DEBUG_BUILDING)
303369 @ echo.
304- @ echo Building $@...
370+ @ echo Building $(STATIC_LIB_PREFIX)$ @...
305371!ENDIF
306372 if exist $(STATIC_LIB_PREFIX)$*.lib del $(STATIC_LIB_PREFIX)$*.lib
307373 $(LIBB) $(DLL_OBJS) /out:$(STATIC_LIB_PREFIX)$*.lib
0 commit comments