From a956d1a0e57d825bb2dd03c74a8c79e84bf5cf48 Mon Sep 17 00:00:00 2001 From: Charles Giessen Date: Tue, 28 Sep 2021 14:46:31 -0600 Subject: [PATCH] vulkaninfo: Generate vulkaninfo.rc file 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 | 1 + CMakeLists.txt | 6 +++ vulkaninfo/CMakeLists.txt | 24 ++++++++++- vulkaninfo/vulkaninfo.rc | 98 --------------------------------------------- vulkaninfo/vulkaninfo.rc.in | 57 ++++++++++++++++++++++++++ 5 files changed, 87 insertions(+), 99 deletions(-) delete mode 100644 vulkaninfo/vulkaninfo.rc create mode 100644 vulkaninfo/vulkaninfo.rc.in diff --git a/BUILD.md b/BUILD.md index b627061..1de8b54 100644 --- 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. diff --git a/CMakeLists.txt b/CMakeLists.txt index 90523ae..422b7d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 diff --git a/vulkaninfo/CMakeLists.txt b/vulkaninfo/CMakeLists.txt index 6627b7d..fb236a5 100644 --- a/vulkaninfo/CMakeLists.txt +++ b/vulkaninfo/CMakeLists.txt @@ -18,7 +18,29 @@ # 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 index 43d782c..0000000 --- a/vulkaninfo/vulkaninfo.rc +++ /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 -// - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// -// 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 index 0000000..ef97692 --- /dev/null +++ b/vulkaninfo/vulkaninfo.rc.in @@ -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 +// Author: Charles Giessen + +#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 -- 2.7.4