summaryrefslogtreecommitdiffstats
path: root/win
diff options
context:
space:
mode:
authorapnadkarni <apnmbx-wits@yahoo.com>2019-11-22 04:04:48 (GMT)
committerapnadkarni <apnmbx-wits@yahoo.com>2019-11-22 04:04:48 (GMT)
commit931120cefe4e631de9e88bcb524390dc766094a9 (patch)
tree7fe3d1cafb8817f8f94c2071e28f6016edf0a408 /win
parentc26994f746887f2c5deab49daa0e59a27d17c062 (diff)
downloadtcl-931120cefe4e631de9e88bcb524390dc766094a9.zip
tcl-931120cefe4e631de9e88bcb524390dc766094a9.tar.gz
tcl-931120cefe4e631de9e88bcb524390dc766094a9.tar.bz2
Fix generation of VERSIONINFO in RC files when package versions have 4 or more
components or use "a" or "b" as version separators. Previously they would result in the resource compiler generating an error.
Diffstat (limited to 'win')
-rw-r--r--win/rules.vc17
1 files changed, 15 insertions, 2 deletions
diff --git a/win/rules.vc b/win/rules.vc
index cf80c91..2061e9b 100644
--- a/win/rules.vc
+++ b/win/rules.vc
@@ -24,7 +24,7 @@ _RULES_VC = 1
# For modifications that are not backward-compatible, you *must* change
# the major version.
RULES_VERSION_MAJOR = 1
-RULES_VERSION_MINOR = 4
+RULES_VERSION_MINOR = 5
# The PROJECT macro must be defined by parent makefile.
!if "$(PROJECT)" == ""
@@ -985,6 +985,19 @@ VERSION = $(DOTVERSION:.=)
!endif # $(DOING_TCL) ... etc.
+# Windows RC files have 3 version components. Ensure this irrespective
+# of how many components the package has specified. Basically, ensure
+# minimum 4 components by appending 4 0's and then pick out the first 4.
+# Also take care of the fact that DOTVERSION may have "a" or "b" instead
+# of "." separating the version components.
+DOTSEPARATED=$(DOTVERSION:a=.)
+DOTSEPARATED=$(DOTSEPARATED:b=.)
+!if [echo RCCOMMAVERSION = \> versions.vc] \
+ || [for /f "tokens=1,2,3,4,5* delims=." %a in ("$(DOTSEPARATED).0.0.0.0") do echo %a,%b,%c,%d >> versions.vc]
+!error *** Could not generate RCCOMMAVERSION ***
+!endif
+!include versions.vc
+
################################################################
# 10. Construct output directory and file paths
# Figure-out how to name our intermediate and output directories.
@@ -1508,7 +1521,7 @@ GUIEXECMD = $(link32) $(guilflags) -out:$@ $(baselibs) $(tcllibs) $(tklibs)
RESCMD = $(rc32) -fo $@ -r -i "$(GENERICDIR)" -i "$(TMP_DIR)" \
$(TCL_INCLUDES) \
/DDEBUG=$(DEBUG) -d UNCHECKED=$(UNCHECKED) \
- /DCOMMAVERSION=$(DOTVERSION:.=,),0 \
+ /DCOMMAVERSION=$(RCCOMMAVERSION) \
/DDOTVERSION=\"$(DOTVERSION)\" \
/DVERSION=\"$(VERSION)\" \
/DSUFX=\"$(SUFX)\" \