diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2015-08-20 14:13:25 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2015-08-20 14:13:25 (GMT) |
commit | 1fd576b1cecb84450f2ae58edd48d66fe871c773 (patch) | |
tree | 3a270ae850bf88dd4689b6d3d4df5b4c93152619 | |
parent | 47ca3a5ac9ec9e2f21a3efeb9bb4bda85526a3e7 (diff) | |
download | tk-1fd576b1cecb84450f2ae58edd48d66fe871c773.zip tk-1fd576b1cecb84450f2ae58edd48d66fe871c773.tar.gz tk-1fd576b1cecb84450f2ae58edd48d66fe871c773.tar.bz2 |
Fix [http://core.tcl.tk/tcl/info/00189c4afcb9e2586301d711f71383e48817a72d|00189c4afc]: Allow semi-static UCRT build on Windows with VC 14.0
-rw-r--r-- | win/makefile.vc | 24 | ||||
-rw-r--r-- | win/rules.vc | 7 |
2 files changed, 29 insertions, 2 deletions
diff --git a/win/makefile.vc b/win/makefile.vc index 4b9475f..dff7294 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -76,7 +76,7 @@ the build instructions. # Sets where to install Tcl from the built binaries.
# C:\Progra~1\Tcl is assumed when not specified.
#
-# OPTS=loimpact,msvcrt,nothreads,noxp,pdbs,profile,square,static,staticpkg,symbols,unchecked,none
+# OPTS=loimpact,msvcrt,nothreads,noxp,pdbs,profile,square,static,staticpkg,symbols,unchecked,ucrt,none
# Sets special options for the core. The default is for none.
# Any combination of the above may be used (comma separated).
# 'none' will over-ride everything to nothing.
@@ -105,6 +105,11 @@ the build instructions. # unchecked = Allows a symbols build to not use the debug
# enabled runtime (msvcrt.dll not msvcrtd.dll
# or libcmt.lib not libcmtd.lib).
+# ucrt= Uses ucrt.lib and libvcruntime.lib, which
+# ensures Tcl will run on machines with only the subset
+# of the C runtime that is part of the operating system.
+# If omitted, builds with VC 14.0 or later will require
+# the full C runtime redistributable.
#
# STATS=compdbg,memdbg,none
# Sets optional memory and bytecode compiler debugging code added
@@ -456,7 +461,13 @@ cdebug = -Zi -WX $(DEBUGFLAGS) cwarn = $(WARNINGS) -D _CRT_SECURE_NO_DEPRECATE -D _CRT_NONSTDC_NO_DEPRECATE
cflags = -nologo -c $(COMPILERFLAGS) $(cwarn) -Fp$(TMP_DIR)^\
-!if $(MSVCRT)
+!if $(UCRT)
+!if $(DEBUG) && !$(UNCHECKED)
+crt = -MDd
+!else
+crt = -MT
+!endif
+!elseif $(MSVCRT)
!if $(DEBUG) && !$(UNCHECKED)
crt = -MDd
!else
@@ -496,6 +507,10 @@ lflags = -nologo -machine:$(MACHINE) $(LINKERFLAGS) $(ldebug) lflags = $(lflags) -profile
!endif
+!if $(UCRT) && !($(DEBUG) && !$(UNCHECKED))
+lflags = $(lflags) -nodefaultlib:libucrt.lib
+!endif
+
!if $(ALIGN98_HACK) && !$(STATIC_BUILD)
### Align sections for PE size savings.
lflags = $(lflags) -opt:nowin98
@@ -520,6 +535,11 @@ baselibs = kernel32.lib user32.lib baselibs = $(baselibs) bufferoverflowU.lib
!endif
!endif
+
+!if $(UCRT) && !($(DEBUG) && !$(UNCHECKED))
+baselibs = $(baselibs) ucrt.lib
+!endif
+
guilibs = $(baselibs) gdi32.lib
diff --git a/win/rules.vc b/win/rules.vc index a43fac6..93c450b 100644 --- a/win/rules.vc +++ b/win/rules.vc @@ -223,6 +223,7 @@ LOIMPACT = 0 TCL_USE_STATIC_PACKAGES = 0
USE_THREAD_ALLOC = 0
UNCHECKED = 0
+UCRT = 0
!else
!if [nmakehlp -f $(OPTS) "static"]
!message *** Doing static
@@ -302,6 +303,12 @@ UNCHECKED = 1 UNCHECKED = 0
!endif
!endif
+!if [nmakehlp -f $(OPTS) "ucrt"] && $(VCVERSION) >= 1900
+!message *** Doing UCRT
+UCRT = 1
+!else
+UCRT = 0
+!endif
#----------------------------------------------------------
# Figure-out how to name our intermediate and output directories.
|