Re: Add version string to DLL

ccpaging <[email protected]>
Newsgroups gmane.comp.gnome.lib.xml.general
Message-ID <[email protected]>
New patch. Tested OK in vc2003 compiler

Author string: "ccpaging <[email protected]>"

Thanks,
ccpaging

On 2017/11/8 19:16, Nick Wellnhofer wrote:
> On 06/11/2017 08:40, ccpaging wrote:
>> Test OK in VC2003 complier.
>
> Looks good. Can you please:
>
> - Rename "libxml2.res.src" to "libxml2.rc". It seems that the .rc 
> extension
>   is standard for resource definition scripts:
>
>
> https://msdn.microsoft.com/en-us/library/windows/desktop/aa380599(v=vs.85).aspx 
>
>
> - Rename "version.h.msvc" to "rcVersion.h". This file isn't really 
> specific
>   to MSVC. At some point, it might be used for GCC builds as well.
>
> - The same for libxslt.
>
> - Tell me the author string I should use for the commits. Something
>   like "first-name last-name <email>". Otherwise I'll simply use
>   "ccpaging <[email protected]>". (I prefer patches formatted
>   with git-format, but if you're primarily working with MS tools,
>   I understand that this may not be an option.)
>
> Thanks,
> Nick
>
>

-- 
Best regards
ccpaging

_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
https://mail.gnome.org/mailman/listinfo/xml
0001-add-windll-version-to-libxml2-2.9.7.patch (text/plain, 3.5 KB)
diff --git a/libxml2-2.9.7/win32/Makefile.msvc b/libxml2/win32/Makefile.msvc
index 115a451..610b854 100755
--- a/libxml2-2.9.7/win32/Makefile.msvc
+++ b/libxml2/win32/Makefile.msvc
@@ -22,6 +22,8 @@ AUTOCONF = .\config.msvc
 XML_NAME = xml2
 XML_BASENAME = lib$(XML_NAME)
 XML_SO = $(XML_BASENAME).dll
+XML_RES = $(XML_BASENAME).res
+XML_RC = $(XML_BASENAME).rc
 XML_IMP = $(XML_BASENAME).lib
 XML_DEF = $(XML_BASENAME).def
 XML_A = $(XML_BASENAME)_a.lib
@@ -373,11 +375,13 @@ $(XML_OBJS_A_DLL) : $(XML_INTDIR_A_DLL)
 # Creates the export definition file (DEF) for libxml.
 $(XML_INTDIR)\$(XML_DEF) : $(XML_INTDIR) $(XML_DEF).src
 	$(CPP) $(CPPFLAGS) $(XML_DEF).src > $(XML_INTDIR)\$(XML_DEF)
+$(XML_INTDIR)\$(XML_RES) : $(XML_INTDIR) $(XML_RC)
+	rc -Fo $(XML_INTDIR)\$(XML_RES) $(XML_RC)
 
 # Creates the libxml shared object.
-$(BINDIR)\$(XML_SO) : $(BINDIR) $(XML_OBJS) $(XML_INTDIR)\$(XML_DEF)
+$(BINDIR)\$(XML_SO) : $(BINDIR) $(XML_OBJS) $(XML_INTDIR)\$(XML_DEF) $(XML_INTDIR)\$(XML_RES)
 	$(LD) $(LDFLAGS) /DLL \
-		/IMPLIB:$(BINDIR)\$(XML_IMP) /OUT:$(BINDIR)\$(XML_SO) $(XML_OBJS) $(LIBS)
+		/IMPLIB:$(BINDIR)\$(XML_IMP) /OUT:$(BINDIR)\$(XML_SO) $(XML_OBJS) $(XML_INTDIR)\$(XML_RES) $(LIBS)
 	@$(_VC_MANIFEST_EMBED_DLL)
 
 #$(BINDIR)\$(XML_SO) : $(BINDIR) $(XML_OBJS) $(XML_INTDIR)\$(XML_DEF)
diff --git a/libxml2-2.9.7/win32/configure.js b/libxml2/win32/configure.js
index 92b9ba0..a00ee21 100755
--- a/libxml2-2.9.7/win32/configure.js
+++ b/libxml2/win32/configure.js
@@ -280,6 +280,18 @@ function discoverVersion()
 		vf.WriteLine("DYNRUNTIME=" + (dynruntime? "1" : "0"));
 	}
 	vf.Close();
+	versionFile = "rcVersion.h"
+	vf = fso.CreateTextFile(versionFile, true);
+	vf.WriteLine("/*");
+	vf.WriteLine("  " + versionFile);
+	vf.WriteLine("  This file is generated automatically by " + WScript.ScriptName + ".");
+	vf.WriteLine("*/");
+	vf.WriteBlankLines(1);
+	vf.WriteLine("#define LIBXML_MAJOR_VERSION " + verMajor);
+	vf.WriteLine("#define LIBXML_MINOR_VERSION " + verMinor);
+	vf.WriteLine("#define LIBXML_MICRO_VERSION " + verMicro);
+	vf.WriteLine("#define LIBXML_DOTTED_VERSION " + "\"" + verMajor + "." + verMinor + "." + verMicro + "\"");
+	vf.Close() 
 }
 
 /* Configures libxml. This one will generate xmlversion.h from xmlversion.h.in
diff --git a/libxml2/win32/libxml2.rc b/libxml2/win32/libxml2.rc
new file mode 100755
index 0000000..f0cc4a0
--- /dev/null
+++ b/libxml2/win32/libxml2.rc
@@ -0,0 +1,36 @@
+#include <winver.h>
+#include "version.h.msvc"
+
+VS_VERSION_INFO		VERSIONINFO
+  FILEVERSION		LIBXML_MAJOR_VERSION,LIBXML_MINOR_VERSION,LIBXML_MICRO_VERSION,0
+  PRODUCTVERSION	LIBXML_MAJOR_VERSION,LIBXML_MINOR_VERSION,LIBXML_MICRO_VERSION,0
+  FILEFLAGSMASK		VS_FFI_FILEFLAGSMASK
+#ifdef _DEBUG
+  FILEFLAGS		VS_FF_DEBUG
+#else
+  FILEFLAGS		0
+#endif
+  FILEOS		VOS__WINDOWS32
+  FILETYPE		VFT_DLL
+  FILESUBTYPE	VFT2_UNKNOWN	// not used
+BEGIN
+  BLOCK "StringFileInfo"
+  BEGIN
+    BLOCK "04090000"  /* Lang = US English, Charset = ASCII */
+    BEGIN
+      VALUE "FileDescription",	"libxml2 library\0"
+      VALUE "FileVersion",	LIBXML_DOTTED_VERSION "\0"
+      VALUE "InternalName",	"libxml2.dll\0"
+      VALUE "LegalCopyright",	"Copyright (C) 1998-2012 Daniel Veillard\0"
+      VALUE "LegalTrademarks",	"\0"
+      VALUE "OriginalFilename",	"libxml2.dll\0"
+      VALUE "ProductName",	"libxml2\0"
+      VALUE "ProductVersion",	LIBXML_DOTTED_VERSION "\0"
+      VALUE "Comments",		"For more information visit http://xmlsoft.org/\0"
+    END
+  END
+  BLOCK "VarFileInfo"
+  BEGIN
+      VALUE "Translation", 0x0409, 0  /* US English, ASCII */
+  END
+END
0002-add-windll-version-to-libxslt-1.1.32.patch (text/plain, 7.1 KB)
diff --git a/libxslt-1.1.32/libxslt/win32config.h b/libxslt/libxslt/win32config.h
index 8fe7042..00d9a97 100755
--- a/libxslt-1.1.32/libxslt/win32config.h
+++ b/libxslt/libxslt/win32config.h
@@ -80,7 +80,10 @@ static int isnan (double d) {
 
 /* snprintf emulation taken from http://stackoverflow.com/a/8712996/1956010 */
 #if defined(_MSC_VER) && _MSC_VER < 1900
-
+#if _MSC_VER < 1500
+#define snprintf _snprintf
+#define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a)
+#else
 #include <stdarg.h>
 #include <stdio.h>
 
@@ -110,7 +113,7 @@ __inline int c99_snprintf(char *outBuf, size_t size, const char *format, ...)
 
     return count;
 }
-
+#endif /* _MSC_VER < 1500 */
 #endif /* defined(_MSC_VER) && _MSC_VER < 1900 */
 
 #define HAVE_SYS_STAT_H
diff --git a/libxslt-1.1.32/win32/Makefile.msvc b/libxslt/win32/Makefile.msvc
index a6d57a1..f8a81a5 100755
--- a/libxslt-1.1.32/win32/Makefile.msvc
+++ b/libxslt/win32/Makefile.msvc
@@ -28,12 +28,16 @@ BINDIR = bin.msvc
 XSLT_NAME = xslt
 XSLT_BASENAME = lib$(XSLT_NAME)
 XSLT_SO = $(XSLT_BASENAME).dll
+XSLT_RES = $(XSLT_BASENAME).res
+XSLT_RC = $(XSLT_BASENAME).rc
 XSLT_IMP = $(XSLT_BASENAME).lib
 XSLT_DEF = $(XSLT_BASENAME).def
 XSLT_A = $(XSLT_BASENAME)_a.lib
 EXSLT_NAME = exslt
 EXSLT_BASENAME = lib$(EXSLT_NAME)
 EXSLT_SO = $(EXSLT_BASENAME).dll
+EXSLT_RES = $(EXSLT_BASENAME).res
+EXSLT_RC = $(EXSLT_BASENAME).rc
 EXSLT_IMP = $(EXSLT_BASENAME).lib
 EXSLT_DEF = $(EXSLT_BASENAME).def
 EXSLT_A = $(EXSLT_BASENAME)_a.lib
@@ -237,12 +241,15 @@ $(XSLT_OBJS_A) : $(XSLT_INTDIR_A)
 $(XSLT_INTDIR)\$(XSLT_DEF) : $(XSLT_INTDIR) $(XSLT_DEF).src
 	$(CPP) $(CPPFLAGS) $(XSLT_DEF).src > $(XSLT_INTDIR)\$(XSLT_DEF)
 
+$(XSLT_INTDIR)\$(XSLT_RES) : $(XSLT_INTDIR) $(XSLT_RC)
+	rc -Fo $(XSLT_INTDIR)\$(XSLT_RES) $(XSLT_RC)
+
 # Creates the libxslt shared object.
-$(BINDIR)\$(XSLT_SO) : $(BINDIR) $(XSLT_OBJS) $(XSLT_INTDIR)\$(XSLT_DEF)
+$(BINDIR)\$(XSLT_SO) : $(BINDIR) $(XSLT_OBJS) $(XSLT_INTDIR)\$(XSLT_DEF) $(XSLT_INTDIR)\$(XSLT_RES)
 	$(LD) $(LDFLAGS) /DLL \
 		/VERSION:$(LIBXSLT_MAJOR_VERSION).$(LIBXSLT_MINOR_VERSION) \
 		/IMPLIB:$(BINDIR)\$(XSLT_IMP) /OUT:$(BINDIR)\$(XSLT_SO) \
-		$(XSLT_OBJS) $(LIBS) libxml2.lib
+		$(XSLT_OBJS) $(XSLT_INTDIR)\$(XSLT_RES) $(LIBS) libxml2.lib
 			@$(_VC_MANIFEST_EMBED_DLL)
 
 #$(BINDIR)\$(XSLT_SO) : $(BINDIR) $(XSLT_OBJS) $(XSLT_INTDIR)\$(XSLT_DEF)
@@ -283,12 +290,15 @@ $(EXSLT_OBJS_A) : $(EXSLT_INTDIR_A)
 $(EXSLT_INTDIR)\$(EXSLT_DEF) : $(EXSLT_INTDIR) $(EXSLT_DEF).src
 	$(CPP) $(CPPFLAGS) $(EXSLT_DEF).src > $(EXSLT_INTDIR)\$(EXSLT_DEF)
 
+$(EXSLT_INTDIR)\$(EXSLT_RES) : $(EXSLT_INTDIR) $(EXSLT_RC)
+	rc -Fo $(EXSLT_INTDIR)\$(EXSLT_RES) $(EXSLT_RC)
+
 # Creates the libexslt shared object.
-$(BINDIR)\$(EXSLT_SO) : $(BINDIR) $(EXSLT_OBJS) $(EXSLT_INTDIR)\$(EXSLT_DEF) libxslt
+$(BINDIR)\$(EXSLT_SO) : $(BINDIR) $(EXSLT_OBJS) $(EXSLT_INTDIR)\$(EXSLT_DEF) $(EXSLT_INTDIR)\$(EXSLT_RES) libxslt
 	$(LD) $(LDFLAGS) /DLL \
 		/VERSION:$(LIBEXSLT_MAJOR_VERSION).$(LIBEXSLT_MINOR_VERSION) \
 		/IMPLIB:$(BINDIR)\$(EXSLT_IMP) /OUT:$(BINDIR)\$(EXSLT_SO) \
-		$(EXSLT_OBJS) $(XSLT_IMP) $(LIBS) libxml2.lib
+		$(EXSLT_OBJS) $(EXSLT_INTDIR)\$(EXSLT_RES) $(XSLT_IMP) $(LIBS) libxml2.lib
 			@$(_VC_MANIFEST_EMBED_DLL)
 
 #$(BINDIR)\$(EXSLT_SO) : $(BINDIR) $(EXSLT_OBJS) $(EXSLT_INTDIR)\$(EXSLT_DEF) libxslt
diff --git a/libxslt-1.1.32/win32/configure.js b/libxslt/win32/configure.js
index 56694cc..04f1b8e 100755
--- a/libxslt-1.1.32/win32/configure.js
+++ b/libxslt/win32/configure.js
@@ -209,6 +209,22 @@ function discoverVersion()
 		vf.WriteLine("LIB+=;" + buildLib);
 	}
 	vf.Close();
+	versionFile = "rcVersion.h"
+	vf = fso.CreateTextFile(versionFile, true);
+	vf.WriteLine("/*");
+	vf.WriteLine("  " + versionFile);
+	vf.WriteLine("  This file is generated automatically by " + WScript.ScriptName + ".");
+	vf.WriteLine("*/");
+	vf.WriteBlankLines(1);
+	vf.WriteLine("#define LIBXSLT_MAJOR_VERSION " + verMajorXslt);
+	vf.WriteLine("#define LIBXSLT_MINOR_VERSION " + verMinorXslt);
+	vf.WriteLine("#define LIBXSLT_MICRO_VERSION " + verMicroXslt);
+	vf.WriteLine("#define LIBXSLT_DOTTED_VERSION " + "\"" + verMajorXslt + "." + verMinorXslt + "." + verMicroXslt + "\"");
+	vf.WriteLine("#define LIBEXSLT_MAJOR_VERSION " + verMajorExslt);
+	vf.WriteLine("#define LIBEXSLT_MINOR_VERSION " + verMinorExslt);
+	vf.WriteLine("#define LIBEXSLT_MICRO_VERSION " + verMicroExslt);
+	vf.WriteLine("#define LIBEXSLT_DOTTED_VERSION " + "\"" + verMajorExslt + "." + verMinorExslt + "." + verMicroExslt + "\"");
+	vf.Close()
 }
 
 /* Configures libxslt. This one will generate xsltconfig.h from xsltconfig.h.in
diff --git a/libxslt/win32/libexslt.rc b/libxslt/win32/libexslt.rc
new file mode 100755
index 0000000..801774b
--- /dev/null
+++ b/libxslt/win32/libexslt.rc
@@ -0,0 +1,36 @@
+#include <winver.h>
+#include "rcVersion.h"
+
+VS_VERSION_INFO		VERSIONINFO
+  FILEVERSION		LIBEXSLT_MAJOR_VERSION,LIBEXSLT_MINOR_VERSION,LIBEXSLT_MICRO_VERSION,0
+  PRODUCTVERSION	LIBEXSLT_MAJOR_VERSION,LIBEXSLT_MINOR_VERSION,LIBEXSLT_MICRO_VERSION,0
+  FILEFLAGSMASK		VS_FFI_FILEFLAGSMASK
+#ifdef _DEBUG
+  FILEFLAGS		VS_FF_DEBUG
+#else
+  FILEFLAGS		0
+#endif
+  FILEOS		VOS__WINDOWS32
+  FILETYPE		VFT_DLL
+  FILESUBTYPE	VFT2_UNKNOWN	// not used
+BEGIN
+  BLOCK "StringFileInfo"
+  BEGIN
+    BLOCK "04090000"  /* Lang = US English, Charset = ASCII */
+    BEGIN
+      VALUE "FileDescription",	"libexslt library\0"
+      VALUE "FileVersion",	LIBEXSLT_DOTTED_VERSION "\0"
+      VALUE "InternalName",	"libexslt.dll\0"
+      VALUE "LegalCopyright",	"Copyright (C) 1998-2012 Daniel Veillard\0"
+      VALUE "LegalTrademarks",	"\0"
+      VALUE "OriginalFilename",	"libexslt.dll\0"
+      VALUE "ProductName",	"libexslt\0"
+      VALUE "ProductVersion",	LIBEXSLT_DOTTED_VERSION "\0"
+      VALUE "Comments",		"For more information visit http://xmlsoft.org/\0"
+    END
+  END
+  BLOCK "VarFileInfo"
+  BEGIN
+      VALUE "Translation", 0x0409, 0  /* US English, ASCII */
+  END
+END
diff --git a/libxslt/win32/libxslt.rc b/libxslt/win32/libxslt.rc
new file mode 100755
index 0000000..f55f899
--- /dev/null
+++ b/libxslt/win32/libxslt.rc
@@ -0,0 +1,36 @@
+#include <winver.h>
+#include "rcVersion.h"
+
+VS_VERSION_INFO		VERSIONINFO
+  FILEVERSION		LIBXSLT_MAJOR_VERSION,LIBXSLT_MINOR_VERSION,LIBXSLT_MICRO_VERSION,0
+  PRODUCTVERSION	LIBXSLT_MAJOR_VERSION,LIBXSLT_MINOR_VERSION,LIBXSLT_MICRO_VERSION,0
+  FILEFLAGSMASK		VS_FFI_FILEFLAGSMASK
+#ifdef _DEBUG
+  FILEFLAGS		VS_FF_DEBUG
+#else
+  FILEFLAGS		0
+#endif
+  FILEOS		VOS__WINDOWS32
+  FILETYPE		VFT_DLL
+  FILESUBTYPE	VFT2_UNKNOWN	// not used
+BEGIN
+  BLOCK "StringFileInfo"
+  BEGIN
+    BLOCK "04090000"  /* Lang = US English, Charset = ASCII */
+    BEGIN
+      VALUE "FileDescription",	"libxslt library\0"
+      VALUE "FileVersion",	LIBXSLT_DOTTED_VERSION "\0"
+      VALUE "InternalName",	"libxslt.dll\0"
+      VALUE "LegalCopyright",	"Copyright (C) 1998-2012 Daniel Veillard\0"
+      VALUE "LegalTrademarks",	"\0"
+      VALUE "OriginalFilename",	"libxslt.dll\0"
+      VALUE "ProductName",	"libxslt\0"
+      VALUE "ProductVersion",	LIBXSLT_DOTTED_VERSION "\0"
+      VALUE "Comments",		"For more information visit http://xmlsoft.org/\0"
+    END
+  END
+  BLOCK "VarFileInfo"
+  BEGIN
+      VALUE "Translation", 0x0409, 0  /* US English, ASCII */
+  END
+END
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.