libtiff: Merge branch 'add_windows_DLL_versioninfo' into 'master'

From e304e5a5cb74eb8d0c672c8ad3dcb50392384488 Mon Sep 17 00:00:00 2001
From: Su Laus <[EMAIL REDACTED]>
Date: Wed, 25 Jan 2023 16:04:50 +0000
Subject: [PATCH] Add versioninfo resource files for DLL and tools compiled
 with Windows MSVC and MINGW.

---
 libtiff/CMakeLists.txt           |  8 +++++
 libtiff/tif_win32_versioninfo.rc | 51 ++++++++++++++++++++++++++++++++
 tools/CMakeLists.txt             | 48 +++++++++++++++++-------------
 tools/tif_tools_versioninfo.rc   | 51 ++++++++++++++++++++++++++++++++
 4 files changed, 138 insertions(+), 20 deletions(-)
 create mode 100644 libtiff/tif_win32_versioninfo.rc
 create mode 100644 tools/tif_tools_versioninfo.rc

diff --git a/libtiff/CMakeLists.txt b/libtiff/CMakeLists.txt
index 32c666f9..7c0596dd 100755
--- a/libtiff/CMakeLists.txt
+++ b/libtiff/CMakeLists.txt
@@ -108,6 +108,14 @@ target_include_directories(tiff
         ${TIFF_INCLUDES}
 )
 
+# MSVC specific resource preparation
+if (WIN32 AND MSVC)
+  message(STATUS "Include resource version information for LibTIFF")
+  target_sources(tiff PRIVATE tif_win32_versioninfo.rc)
+  source_group("Resource Files" FILES tif_win32_versioninfo.rc)
+endif ()
+
+
 set(tiff_libs_private_list "") # cmake list
 set(tiff_requires_private "") # cmake string
 
diff --git a/libtiff/tif_win32_versioninfo.rc b/libtiff/tif_win32_versioninfo.rc
new file mode 100644
index 00000000..a5613f51
--- /dev/null
+++ b/libtiff/tif_win32_versioninfo.rc
@@ -0,0 +1,51 @@
+
+/* clang-format off */
+
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include <windows.h>
+#undef APSTUDIO_HIDDEN_SYMBOLS
+#include <winver.h>
+
+#include "tiffvers.h"
+#include "tif_config.h"
+
+#ifdef _WIN32
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+#pragma code_page(1252)
+#endif //_WIN32
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION TIFFLIB_MAJOR_VERSION,TIFFLIB_MINOR_VERSION,TIFFLIB_MICRO_VERSION,0
+ PRODUCTVERSION TIFFLIB_MAJOR_VERSION,TIFFLIB_MINOR_VERSION,TIFFLIB_MICRO_VERSION,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "000004b0"
+        BEGIN
+            VALUE "CompanyName", "libtiff project"
+            VALUE "FileDescription", "TIFF Library"
+            VALUE "FileVersion", PACKAGE_VERSION
+            VALUE "InternalName", "tiff.dll"
+            VALUE "LegalCopyright", "See LICENCE.md"
+            VALUE "OriginalFilename", "tiff.dll"
+            VALUE "ProductName", "LibTIFF"
+            VALUE "ProductVersion", PACKAGE_VERSION
+            VALUE "WebPage", "https://libtiff.gitlab.io/libtiff/\0"
+       END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x0, 1200
+    END
+END
+
+
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index 2d203763..c0ea2fd3 100755
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -22,84 +22,92 @@
 # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
 # OF THIS SOFTWARE.
 
+# MSVC specific resource preparation
+if (WIN32 AND MSVC)
+  message(STATUS "Include resource version information for TOOLS")
+  set(MSVC_RESSOURCE_FILE tif_tools_versioninfo.rc)
+  source_group("Resource Files" FILES tif_tools_versioninfo.rc)
+endif ()
+
+
 add_executable(fax2ps ../placeholder.h)
-target_sources(fax2ps PRIVATE fax2ps.c)
+target_sources(fax2ps PRIVATE fax2ps.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(fax2ps PRIVATE tiff tiff_port)
 
 add_executable(fax2tiff ../placeholder.h)
-target_sources(fax2tiff PRIVATE fax2tiff.c)
+target_sources(fax2tiff PRIVATE fax2tiff.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(fax2tiff PRIVATE tiff tiff_port)
 
 add_executable(pal2rgb ../placeholder.h)
-target_sources(pal2rgb PRIVATE pal2rgb.c)
+target_sources(pal2rgb PRIVATE pal2rgb.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(pal2rgb PRIVATE tiff tiff_port)
 
 add_executable(ppm2tiff ../placeholder.h)
-target_sources(ppm2tiff PRIVATE ppm2tiff.c)
+target_sources(ppm2tiff PRIVATE ppm2tiff.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(ppm2tiff PRIVATE tiff tiff_port)
 
 add_executable(raw2tiff ../placeholder.h)
-target_sources(raw2tiff PRIVATE raw2tiff.c)
+target_sources(raw2tiff PRIVATE raw2tiff.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(raw2tiff PRIVATE tiff tiff_port CMath::CMath)
 
 add_executable(rgb2ycbcr ../placeholder.h)
-target_sources(rgb2ycbcr PRIVATE rgb2ycbcr.c)
+target_sources(rgb2ycbcr PRIVATE rgb2ycbcr.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(rgb2ycbcr PRIVATE tiff tiff_port)
 
 add_executable(thumbnail ../placeholder.h)
-target_sources(thumbnail PRIVATE thumbnail.c)
+target_sources(thumbnail PRIVATE thumbnail.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(thumbnail PRIVATE tiff tiff_port CMath::CMath)
 
 add_executable(tiff2bw ../placeholder.h)
-target_sources(tiff2bw PRIVATE tiff2bw.c)
+target_sources(tiff2bw PRIVATE tiff2bw.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(tiff2bw PRIVATE tiff tiff_port)
 
 add_executable(tiff2pdf ../placeholder.h)
-target_sources(tiff2pdf PRIVATE tiff2pdf.c)
+target_sources(tiff2pdf PRIVATE tiff2pdf.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(tiff2pdf PRIVATE tiff tiff_port)
 
 add_executable(tiff2ps ../placeholder.h)
-target_sources(tiff2ps PRIVATE tiff2ps.c)
+target_sources(tiff2ps PRIVATE tiff2ps.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(tiff2ps PRIVATE tiff tiff_port CMath::CMath)
 
 add_executable(tiff2rgba ../placeholder.h)
-target_sources(tiff2rgba PRIVATE tiff2rgba.c)
+target_sources(tiff2rgba PRIVATE tiff2rgba.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(tiff2rgba PRIVATE tiff tiff_port)
 
 add_executable(tiffcmp ../placeholder.h)
-target_sources(tiffcmp PRIVATE tiffcmp.c)
+target_sources(tiffcmp PRIVATE tiffcmp.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(tiffcmp PRIVATE tiff tiff_port)
 
 add_executable(tiffcp ../placeholder.h)
-target_sources(tiffcp PRIVATE tiffcp.c)
+target_sources(tiffcp PRIVATE tiffcp.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(tiffcp PRIVATE tiff tiff_port)
 
 add_executable(tiffcrop ../placeholder.h)
-target_sources(tiffcrop PRIVATE tiffcrop.c)
+target_sources(tiffcrop PRIVATE tiffcrop.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(tiffcrop PRIVATE tiff tiff_port CMath::CMath)
 
 add_executable(tiffdither ../placeholder.h)
-target_sources(tiffdither PRIVATE tiffdither.c)
+target_sources(tiffdither PRIVATE tiffdither.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(tiffdither PRIVATE tiff tiff_port)
 
 add_executable(tiffdump ../placeholder.h)
-target_sources(tiffdump PRIVATE tiffdump.c)
+target_sources(tiffdump PRIVATE tiffdump.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(tiffdump PRIVATE tiff tiff_port)
 
 add_executable(tiffinfo ../placeholder.h)
-target_sources(tiffinfo PRIVATE tiffinfo.c)
+target_sources(tiffinfo PRIVATE tiffinfo.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(tiffinfo PRIVATE tiff tiff_port)
 
 add_executable(tiffmedian ../placeholder.h)
-target_sources(tiffmedian PRIVATE tiffmedian.c)
+target_sources(tiffmedian PRIVATE tiffmedian.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(tiffmedian PRIVATE tiff tiff_port)
 
 add_executable(tiffset ../placeholder.h)
-target_sources(tiffset PRIVATE tiffset.c)
+target_sources(tiffset PRIVATE tiffset.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(tiffset PRIVATE tiff tiff_port)
 
 add_executable(tiffsplit ../placeholder.h)
-target_sources(tiffsplit PRIVATE tiffsplit.c)
+target_sources(tiffsplit PRIVATE tiffsplit.c ${MSVC_RESSOURCE_FILE})
 target_link_libraries(tiffsplit PRIVATE tiff tiff_port)
 
 # rgb2ycbcr and thumbnail are intended to *NOT* be installed. They are for
diff --git a/tools/tif_tools_versioninfo.rc b/tools/tif_tools_versioninfo.rc
new file mode 100644
index 00000000..6d560c3f
--- /dev/null
+++ b/tools/tif_tools_versioninfo.rc
@@ -0,0 +1,51 @@
+
+/* clang-format off */
+
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include <windows.h>
+#undef APSTUDIO_HIDDEN_SYMBOLS
+#include <winver.h>
+
+#include "tiffvers.h"
+#include "tif_config.h"
+
+#ifdef _WIN32
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+#pragma code_page(1252)
+#endif //_WIN32
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION TIFFLIB_MAJOR_VERSION,TIFFLIB_MINOR_VERSION,TIFFLIB_MICRO_VERSION,0
+ PRODUCTVERSION TIFFLIB_MAJOR_VERSION,TIFFLIB_MINOR_VERSION,TIFFLIB_MICRO_VERSION,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "000004b0"
+        BEGIN
+            VALUE "CompanyName", "libtiff project"
+            VALUE "FileDescription", "TIFF Tools"
+            VALUE "FileVersion", PACKAGE_VERSION
+            VALUE "InternalName", ""
+            VALUE "LegalCopyright", "See LICENCE.md"
+            VALUE "OriginalFilename", ""
+            VALUE "ProductName", "LibTIFF"
+            VALUE "ProductVersion", PACKAGE_VERSION
+            VALUE "WebPage", "https://libtiff.gitlab.io/libtiff/\0"
+       END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x0, 1200
+    END
+END
+
+