vulkaninfo: Generate vulkaninfo.rc file
authorCharles Giessen <charles@lunarg.com>
Tue, 28 Sep 2021 20:46:31 +0000 (14:46 -0600)
committerCharles Giessen <46324611+charles-lunarg@users.noreply.github.com>
Tue, 28 Sep 2021 22:30:48 +0000 (16:30 -0600)
Previously whenever a SDK was being built, it would have to manually find and
replace the vulkaninfo.rc file with the appropriate values. This commit makes
it simpler by providing a CMake build argument which allows setting the version
to use from the command line.

BUILD.md
CMakeLists.txt
vulkaninfo/CMakeLists.txt
vulkaninfo/vulkaninfo.rc [deleted file]
vulkaninfo/vulkaninfo.rc.in [new file with mode: 0644]

index b627061..1de8b54 100644 (file)
--- a/BUILD.md
+++ b/BUILD.md
@@ -213,6 +213,7 @@ The following is a table of all string options currently supported by this repos
 | Option | Platform | Default | Description |
 | ------ | -------- | ------- | ----------- |
 | CMAKE_OSX_DEPLOYMENT_TARGET | MacOS | `10.12` | The minimum version of MacOS for loader deployment. |
+| VULKANINFO_BUILD_DLL_VERSIONINFO | Windows | `""` | Set the Windows specific version information for Vulkaninfo. Format is "major.minor.patch.build". |
 
 These variables should be set using the `-D` option when invoking CMake to
 generate the native platform files.
index 90523ae..422b7d2 100644 (file)
@@ -45,6 +45,12 @@ option(BUILD_ICD "Build icd" ON)
 # Require the user to ask that it be installed if they really want it.
 option(INSTALL_ICD "Install icd" OFF)
 
+if(WIN32)
+    # Optional: Allow specify the exact version used in the vulkaninfo executable
+    # Format is major.minor.patch.build
+    set(VULKANINFO_BUILD_DLL_VERSIONINFO "" CACHE STRING "Set the version to be used in the vulkaninfo.rc file. Default value is 1.0.1111.2222")
+endif()
+
 # Enable IDE GUI folders
 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
 # "Helper" targets that don't have interesting source code should set their FOLDER property to this
index 6627b7d..fb236a5 100644 (file)
 # CMakeLists.txt file for building Vulkaninfo
 
 if(WIN32)
-    add_executable(vulkaninfo vulkaninfo.cpp vulkaninfo.rc)
+    # ~~~
+    # Setup the vulkaninfo.rc file to contain the correct info
+    # Optionally uses the VULKANINFO_BUILD_DLL_VERSIONINFO build option to allow setting the exact build version
+    # When VULKANINFO_BUILD_DLL_VERSIONINFO is not provided, "Dev Build" is added to the version string
+    # ~~~
+    if ("$CACHE{VULKANINFO_BUILD_DLL_VERSIONINFO}" STREQUAL "")
+        # Default version - for when no version is provided
+        set(VULKANINFO_RC_VERSION "1.0.1111.2222")
+        set(VULKANINFO_VER_FILE_VERSION_STR "\"${VULKANINFO_RC_VERSION}.Dev Build\"")
+        set(VULKANINFO_VER_FILE_DESCRIPTION_STR "\"Vulkan Loader - Dev Build\"")
+    else()
+        set(VULKANINFO_RC_VERSION "$CACHE{VULKANINFO_BUILD_DLL_VERSIONINFO}")
+        set(VULKANINFO_VER_FILE_VERSION_STR "\"${VULKANINFO_RC_VERSION}\"")
+        set(VULKANINFO_VER_FILE_DESCRIPTION_STR "\"Vulkan Loader\"")
+    endif()
+
+    # RC file wants the value of FILEVERSION to separated by commas
+    string(REPLACE "." ", " VULKANINFO_VER_FILE_VERSION "${VULKANINFO_RC_VERSION}")
+
+    # Configure the file to include the versioning info
+    configure_file(vulkaninfo.rc.in ${CMAKE_CURRENT_BINARY_DIR}/vulkaninfo.rc)
+
+    add_executable(vulkaninfo vulkaninfo.cpp ${CMAKE_CURRENT_BINARY_DIR}/vulkaninfo.rc)
 elseif(APPLE)
     add_executable(vulkaninfo
                    vulkaninfo.cpp
diff --git a/vulkaninfo/vulkaninfo.rc b/vulkaninfo/vulkaninfo.rc
deleted file mode 100644 (file)
index 43d782c..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// Copyright (c) 2018-2019 The Khronos Group Inc.
-// Copyright (c) 2018-2019 Valve Corporation
-// Copyright (c) 2018-2019 LunarG, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-// Author: Lenny Komow <david@lunarg.com>
-//
-
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-// Start customize section
-// Edit this section for your build
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-
-#define VERSION_MAJOR               1
-#define VERSION_MINOR               0
-#define VERSION_PATCH               1111
-#define VERSION_BUILDNO             2222
-
-#define VERSION_BUILD_DESCRIPTION   "Dev Build"
-
-// All builds except release builds should set this to 0.
-// Release builds should set this to 1.
-#define VERSION_IS_RELEASEBUILD        0
-
-
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-// End of customize section
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-
-#include "winres.h"
-
-#define VER_FILE_VERSION            VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, VERSION_BUILDNO
-
-#define STRINGIZE2(s) #s
-#define STRINGIZE(s) STRINGIZE2(s)
-
-#if VERSION_IS_RELEASEBUILD==1
-   #define VER_FILE_DESCRIPTION_STR    "Vulkan Info"
-   #define VER_FILE_VERSION_STR        STRINGIZE(VERSION_MAJOR)        \
-                                       "." STRINGIZE(VERSION_MINOR)    \
-                                       "." STRINGIZE(VERSION_PATCH)    \
-                                       "." STRINGIZE(VERSION_BUILDNO)
-#else
-   #define VER_FILE_DESCRIPTION_STR    "Vulkan Info - " VERSION_BUILD_DESCRIPTION
-   #define VER_FILE_VERSION_STR        STRINGIZE(VERSION_MAJOR)        \
-                                    "." STRINGIZE(VERSION_MINOR)    \
-                                    "." STRINGIZE(VERSION_PATCH)    \
-                                    "." STRINGIZE(VERSION_BUILDNO) \
-                                    "." VERSION_BUILD_DESCRIPTION
-#endif
-
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION VER_FILE_VERSION
- PRODUCTVERSION VER_FILE_VERSION
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS VS_FF_DEBUG
-#else
- FILEFLAGS 0x0L
-#endif
-
- FILEOS 0x00000L
- FILETYPE VFT_DLL
- FILESUBTYPE 0x0L
-BEGIN
-    BLOCK "StringFileInfo"
-    BEGIN
-        BLOCK "04090000"
-        BEGIN
-            VALUE "FileDescription", VER_FILE_DESCRIPTION_STR
-            VALUE "FileVersion", VER_FILE_VERSION_STR
-            VALUE "LegalCopyright", "Copyright (C) 2015-2021"
-            VALUE "ProductName", "Vulkan Runtime"
-            VALUE "ProductVersion", VER_FILE_VERSION_STR
-        END
-    END
-    BLOCK "VarFileInfo"
-    BEGIN
-        VALUE "Translation", 0x409, 0000
-    END
-END
diff --git a/vulkaninfo/vulkaninfo.rc.in b/vulkaninfo/vulkaninfo.rc.in
new file mode 100644 (file)
index 0000000..ef97692
--- /dev/null
@@ -0,0 +1,57 @@
+//
+// Copyright (c) 2018-2019 The Khronos Group Inc.
+// Copyright (c) 2018-2019 Valve Corporation
+// Copyright (c) 2018-2019 LunarG, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Author: Lenny Komow <david@lunarg.com>
+// Author: Charles Giessen <charles@lunarg.com>
+
+#include "winres.h"
+
+// All set through CMake
+#define VER_FILE_VERSION ${VULKANINFO_VER_FILE_VERSION}
+#define VER_FILE_VERSION_STR ${VULKANINFO_VER_FILE_VERSION_STR}
+#define VER_FILE_DESCRIPTION_STR ${VULKANINFO_VER_FILE_DESCRIPTION_STR}
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION VER_FILE_VERSION
+ PRODUCTVERSION VER_FILE_VERSION
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS VS_FF_DEBUG
+#else
+ FILEFLAGS 0x0L
+#endif
+
+ FILEOS 0x00000L
+ FILETYPE VFT_DLL
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "04090000"
+        BEGIN
+            VALUE "FileDescription", VER_FILE_DESCRIPTION_STR
+            VALUE "FileVersion", VER_FILE_VERSION_STR
+            VALUE "LegalCopyright", "Copyright (C) 2015-2021"
+            VALUE "ProductName", "Vulkan Runtime"
+            VALUE "ProductVersion", VER_FILE_VERSION_STR
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 0000
+    END
+END