From 3105641e4d69c31b7df1fc433dae5585d278fc41 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Fri, 10 Nov 2023 23:04:20 +0200 Subject: [PATCH 01/15] vulkan-utility-libraries: add new recipe --- .../all/conandata.yml | 7 + .../vulkan-utility-libraries/all/conanfile.py | 174 ++++++++++++++++++ .../all/test_package/CMakeLists.txt | 8 + .../all/test_package/conanfile.py | 26 +++ .../all/test_package/test_package.cpp | 7 + recipes/vulkan-utility-libraries/config.yml | 5 + 6 files changed, 227 insertions(+) create mode 100644 recipes/vulkan-utility-libraries/all/conandata.yml create mode 100644 recipes/vulkan-utility-libraries/all/conanfile.py create mode 100644 recipes/vulkan-utility-libraries/all/test_package/CMakeLists.txt create mode 100644 recipes/vulkan-utility-libraries/all/test_package/conanfile.py create mode 100644 recipes/vulkan-utility-libraries/all/test_package/test_package.cpp create mode 100644 recipes/vulkan-utility-libraries/config.yml diff --git a/recipes/vulkan-utility-libraries/all/conandata.yml b/recipes/vulkan-utility-libraries/all/conandata.yml new file mode 100644 index 0000000000000..97e6597252d91 --- /dev/null +++ b/recipes/vulkan-utility-libraries/all/conandata.yml @@ -0,0 +1,7 @@ +sources: + "1.3.268.0": + url: "https://github.com/KhronosGroup/Vulkan-Utility-Libraries/archive/refs/tags/vulkan-sdk-1.3.268.0.tar.gz" + sha256: "0352a6a9a703a969a805e0d6498e013cba2dc7091cc2013b7c89b1a21f61e3f8" + "1.3.261.1": + url: "https://github.com/KhronosGroup/Vulkan-Utility-Libraries/archive/refs/tags/sdk-1.3.261.1.tar.gz" + sha256: "32c8be9806fd412012752324c53cd661594edd21adf7ba5081229481274f802b" diff --git a/recipes/vulkan-utility-libraries/all/conanfile.py b/recipes/vulkan-utility-libraries/all/conanfile.py new file mode 100644 index 0000000000000..4839a9e8417b2 --- /dev/null +++ b/recipes/vulkan-utility-libraries/all/conanfile.py @@ -0,0 +1,174 @@ +import os + +from conan import ConanFile +from conan.errors import ConanInvalidConfiguration +from conan.tools.apple import fix_apple_shared_install_name, is_apple_os +from conan.tools.build import check_min_cppstd +from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout +from conan.tools.env import VirtualBuildEnv +from conan.tools.files import copy, get, rm, rmdir +from conan.tools.microsoft import is_msvc +from conan.tools.scm import Version + +required_conan_version = ">=1.55.0" + + +class VulkanUtilityLibrariesConan(ConanFile): + name = "vulkan-utility-libraries" + description = "Utility libraries for Vulkan developers" + license = "Apache-2.0" + topics = ("vulkan",) + homepage = "https://github.com/KhronosGroup/Vulkan-ValidationLayers" + url = "https://github.com/conan-io/conan-center-index" + + package_type = "static-library" + settings = "os", "arch", "compiler", "build_type" + options = { + "fPIC": [True, False], + } + default_options = { + "fPIC": True, + } + short_paths = True + + @property + def _min_cppstd(self): + return 17 + + @property + def _compilers_minimum_version(self): + return { + "apple-clang": "9", + "clang": "7", + "gcc": "8", + "msvc": "191", + "Visual Studio": "15.7", + } + + def config_options(self): + if self.settings.os == "Windows": + del self.options.fPIC + + def layout(self): + cmake_layout(self, src_folder="src") + + def requirements(self): + self.requires(f"vulkan-headers/{self.version}", transitive_headers=True) + + def validate(self): + if self.settings.compiler.get_safe("cppstd"): + check_min_cppstd(self, self._min_cppstd) + + def loose_lt_semver(v1, v2): + return all(int(p1) < int(p2) for p1, p2 in zip(v1.split("."), v2.split("."))) + + minimum_version = self._compilers_minimum_version.get(str(self.settings.compiler), False) + if minimum_version and loose_lt_semver(str(self.settings.compiler.version), minimum_version): + raise ConanInvalidConfiguration( + f"{self.ref} requires C++{self._min_cppstd}, which your compiler does not support.", + ) + + def build_requirements(self): + self.tool_requires("cmake/[>=3.17.2 <4]") + + def source(self): + get(self, **self.conan_data["sources"][self.version], strip_root=True) + + def generate(self): + env = VirtualBuildEnv(self) + env.generate() + tc = CMakeToolchain(self) + tc.variables["BUILD_TESTS"] = False + tc.generate() + deps = CMakeDeps(self) + deps.generate() + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def package(self): + copy(self, "LICENSE.md", self.source_folder, os.path.join(self.package_folder, "licenses")) + cmake = CMake(self) + cmake.install() + rmdir(self, os.path.join(self.source_folder, "lib", "cmake", "VulkanUtilityLibraries")) + rm(self, "*.pdb", os.path.join(self.package_folder, "bin")) + fix_apple_shared_install_name(self) + + @property + def _exported_cxxflags(self): + # https://github.com/KhronosGroup/Vulkan-Utility-Libraries/blob/vulkan-sdk-1.3.268.0/src/CMakeLists.txt#L9-L40 + cxxflags = [] + if self.settings.compiler in ["gcc", "clang", "apple-clang"]: + cxxflags += [ + "-Wpedantic", + "-Wunreachable-code", + "-Wunused-function", + "-Wall", + "-Wextra", + "-Wpointer-arith", + "-Wextra-semi", + ] + if self.settings.compiler != "gcc": + cxxflags += [ + "-Wunreachable-code-return", + "-Wconversion", + "-Wimplicit-fallthrough", + "-Wstring-conversion", + ] + elif is_msvc(self): + cxxflags += [ + "/W4", + "/we5038", + "/permissive-", + "/MP", + ] + return cxxflags + + @property + def _exported_defines(self): + # https://github.com/KhronosGroup/Vulkan-Utility-Libraries/blob/vulkan-sdk-1.3.268.0/src/CMakeLists.txt#L42-L56 + defines = ["VK_ENABLE_BETA_EXTENSIONS"] + if self.settings.os == "Windows": + defines += [ + "NOMINMAX", + "WIN32_LEAN_AND_MEAN", + "VK_USE_PLATFORM_WIN32_KHR", + ] + elif self.settings.os == "Android": + defines.append("VK_USE_PLATFORM_ANDROID_KHR") + elif is_apple_os(self): + defines.append("VK_USE_PLATFORM_METAL_EXT") + if self.settings.os.subsystem == "iOS": + defines.append("VK_USE_PLATFORM_IOS_MVK") + else: + defines.append("VK_USE_PLATFORM_MACOS_MVK") + return defines + + def package_info(self): + self.cpp_info.set_property("cmake_file_name", "VulkanUtilityLibraries") + + # Vulkan::UtilityHeaders + self.cpp_info.components["VulkanUtilityHeaders"].set_property("cmake_target_name", "Vulkan::UtilityHeaders") + self.cpp_info.components["VulkanUtilityHeaders"].requires = ["vulkan-headers::vulkanheaders"] + self.cpp_info.components["VulkanUtilityHeaders"].libdirs = [] + self.cpp_info.components["VulkanUtilityHeaders"].bindirs = [] + + # Vulkan::LayerSettings + self.cpp_info.components["VulkanLayerSettings"].set_property("cmake_target_name", "Vulkan::LayerSettings") + self.cpp_info.components["VulkanLayerSettings"].requires = ["vulkan-headers::vulkanheaders", "VulkanUtilityHeaders"] + self.cpp_info.components["VulkanLayerSettings"].libs = ["VulkanLayerSettings"] + self.cpp_info.components["VulkanLayerSettings"].bindirs = [] + + # Vulkan::CompilerConfiguration + if Version(self.version) >= "1.3.265": + self.cpp_info.components["VulkanCompilerConfiguration"] = self.cpp_info.components["VulkanCompilerConfiguration"] + self.cpp_info.components["VulkanCompilerConfiguration"].set_property("cmake_target_name", "Vulkan::CompilerConfiguration") + self.cpp_info.components["VulkanCompilerConfiguration"].requires = ["vulkan-headers::vulkanheaders"] + self.cpp_info.components["VulkanCompilerConfiguration"].cxxflags = self._exported_cxxflags + self.cpp_info.components["VulkanCompilerConfiguration"].defines = self._exported_defines + self.cpp_info.components["VulkanCompilerConfiguration"].includedirs = [] + self.cpp_info.components["VulkanCompilerConfiguration"].libdirs = [] + self.cpp_info.components["VulkanCompilerConfiguration"].bindirs = [] + self.cpp_info.components["VulkanLayerSettings"].requires.append("VulkanCompilerConfiguration") diff --git a/recipes/vulkan-utility-libraries/all/test_package/CMakeLists.txt b/recipes/vulkan-utility-libraries/all/test_package/CMakeLists.txt new file mode 100644 index 0000000000000..66434120a0f73 --- /dev/null +++ b/recipes/vulkan-utility-libraries/all/test_package/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.15) +project(test_package LANGUAGES CXX) + +find_package(VulkanUtilityLibraries REQUIRED CONFIG) + +add_executable(${PROJECT_NAME} test_package.cpp) +target_link_libraries(${PROJECT_NAME} PRIVATE Vulkan::LayerSettings) +target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17) diff --git a/recipes/vulkan-utility-libraries/all/test_package/conanfile.py b/recipes/vulkan-utility-libraries/all/test_package/conanfile.py new file mode 100644 index 0000000000000..fafba71d30d56 --- /dev/null +++ b/recipes/vulkan-utility-libraries/all/test_package/conanfile.py @@ -0,0 +1,26 @@ +from conan import ConanFile +from conan.tools.build import can_run +from conan.tools.cmake import CMake, cmake_layout +import os + + +class TestPackageConan(ConanFile): + settings = "os", "arch", "compiler", "build_type" + generators = "CMakeToolchain", "CMakeDeps", "VirtualRunEnv" + test_type = "explicit" + + def layout(self): + cmake_layout(self) + + def requirements(self): + self.requires(self.tested_reference_str) + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def test(self): + if can_run(self): + bin_path = os.path.join(self.cpp.build.bindir, "test_package") + self.run(bin_path, env="conanrun") diff --git a/recipes/vulkan-utility-libraries/all/test_package/test_package.cpp b/recipes/vulkan-utility-libraries/all/test_package/test_package.cpp new file mode 100644 index 0000000000000..1eb8714c3f8ca --- /dev/null +++ b/recipes/vulkan-utility-libraries/all/test_package/test_package.cpp @@ -0,0 +1,7 @@ +#include +#include + +int main() { + std::cout << VK_EXT_LAYER_SETTINGS_EXTENSION_NAME << std::endl; + return 0; +} diff --git a/recipes/vulkan-utility-libraries/config.yml b/recipes/vulkan-utility-libraries/config.yml new file mode 100644 index 0000000000000..d8166d8d0bffd --- /dev/null +++ b/recipes/vulkan-utility-libraries/config.yml @@ -0,0 +1,5 @@ +versions: + "1.3.268.0": + folder: all + "1.3.261.1": + folder: all From e21884a51fb612ad4e9f7f77c62b581b718260ed Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Fri, 17 Nov 2023 23:41:11 +0200 Subject: [PATCH 02/15] vulkan-utility-libraries: rmdir lib/cmake --- recipes/vulkan-utility-libraries/all/conanfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/vulkan-utility-libraries/all/conanfile.py b/recipes/vulkan-utility-libraries/all/conanfile.py index 4839a9e8417b2..23cad986c5910 100644 --- a/recipes/vulkan-utility-libraries/all/conanfile.py +++ b/recipes/vulkan-utility-libraries/all/conanfile.py @@ -92,7 +92,7 @@ def package(self): copy(self, "LICENSE.md", self.source_folder, os.path.join(self.package_folder, "licenses")) cmake = CMake(self) cmake.install() - rmdir(self, os.path.join(self.source_folder, "lib", "cmake", "VulkanUtilityLibraries")) + rmdir(self, os.path.join(self.package_folder, "lib", "cmake")) rm(self, "*.pdb", os.path.join(self.package_folder, "bin")) fix_apple_shared_install_name(self) From 325f6ba32b246382e6a2c4e7e4cd86cfb70cd4d0 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Thu, 23 Nov 2023 12:56:22 +0200 Subject: [PATCH 03/15] vulkan-utility-libraries: fix OS check --- recipes/vulkan-utility-libraries/all/conanfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/vulkan-utility-libraries/all/conanfile.py b/recipes/vulkan-utility-libraries/all/conanfile.py index 23cad986c5910..636ba7824d921 100644 --- a/recipes/vulkan-utility-libraries/all/conanfile.py +++ b/recipes/vulkan-utility-libraries/all/conanfile.py @@ -140,7 +140,7 @@ def _exported_defines(self): defines.append("VK_USE_PLATFORM_ANDROID_KHR") elif is_apple_os(self): defines.append("VK_USE_PLATFORM_METAL_EXT") - if self.settings.os.subsystem == "iOS": + if self.settings.os == "iOS": defines.append("VK_USE_PLATFORM_IOS_MVK") else: defines.append("VK_USE_PLATFORM_MACOS_MVK") From fff779e1bbab764887068216b76b3a4662d6a4d4 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Mon, 27 Nov 2023 17:15:15 +0200 Subject: [PATCH 04/15] vulkan-utility-libraries: apply PR suggestions --- recipes/vulkan-utility-libraries/all/conanfile.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/recipes/vulkan-utility-libraries/all/conanfile.py b/recipes/vulkan-utility-libraries/all/conanfile.py index 636ba7824d921..cf62a93751f12 100644 --- a/recipes/vulkan-utility-libraries/all/conanfile.py +++ b/recipes/vulkan-utility-libraries/all/conanfile.py @@ -6,7 +6,7 @@ from conan.tools.build import check_min_cppstd from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout from conan.tools.env import VirtualBuildEnv -from conan.tools.files import copy, get, rm, rmdir +from conan.tools.files import copy, get, rm, rmdir, replace_in_file from conan.tools.microsoft import is_msvc from conan.tools.scm import Version @@ -18,7 +18,7 @@ class VulkanUtilityLibrariesConan(ConanFile): description = "Utility libraries for Vulkan developers" license = "Apache-2.0" topics = ("vulkan",) - homepage = "https://github.com/KhronosGroup/Vulkan-ValidationLayers" + homepage = "https://github.com/KhronosGroup/Vulkan-Utility-Libraries" url = "https://github.com/conan-io/conan-center-index" package_type = "static-library" @@ -29,7 +29,6 @@ class VulkanUtilityLibrariesConan(ConanFile): default_options = { "fPIC": True, } - short_paths = True @property def _min_cppstd(self): @@ -83,7 +82,12 @@ def generate(self): deps = CMakeDeps(self) deps.generate() + def _patch_sources(self): + replace_in_file(self, os.path.join(self.source_folder, "CMakeLists.txt"), + "set(CMAKE_POSITION_INDEPENDENT_CODE ON)", "") + def build(self): + self._patch_sources() cmake = CMake(self) cmake.configure() cmake.build() From 9113788cef9bf11f01bbf6d370ae7676e15c3fab Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Wed, 29 Nov 2023 13:26:07 +0200 Subject: [PATCH 05/15] Improve test_package.cpp Co-authored-by: Uilian Ries --- .../vulkan-utility-libraries/all/test_package/test_package.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/vulkan-utility-libraries/all/test_package/test_package.cpp b/recipes/vulkan-utility-libraries/all/test_package/test_package.cpp index 1eb8714c3f8ca..de30c15df3a19 100644 --- a/recipes/vulkan-utility-libraries/all/test_package/test_package.cpp +++ b/recipes/vulkan-utility-libraries/all/test_package/test_package.cpp @@ -2,6 +2,8 @@ #include int main() { + VkuLayerSettingSet layerSettingSet = VK_NULL_HANDLE; + vkuCreateLayerSettingSet("VK_LAYER_LUNARG_conan", nullptr, nullptr, nullptr, &layerSettingSet); std::cout << VK_EXT_LAYER_SETTINGS_EXTENSION_NAME << std::endl; return 0; } From 68b624cc4d39f56b78aa2b02f0ae234930e4b412 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Wed, 29 Nov 2023 15:08:03 +0200 Subject: [PATCH 06/15] vulkan-utility-libraries: handle API change in test_package.cpp --- .../vulkan-utility-libraries/all/test_package/CMakeLists.txt | 4 ++++ .../all/test_package/test_package.cpp | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/recipes/vulkan-utility-libraries/all/test_package/CMakeLists.txt b/recipes/vulkan-utility-libraries/all/test_package/CMakeLists.txt index 66434120a0f73..cf92bc797f571 100644 --- a/recipes/vulkan-utility-libraries/all/test_package/CMakeLists.txt +++ b/recipes/vulkan-utility-libraries/all/test_package/CMakeLists.txt @@ -6,3 +6,7 @@ find_package(VulkanUtilityLibraries REQUIRED CONFIG) add_executable(${PROJECT_NAME} test_package.cpp) target_link_libraries(${PROJECT_NAME} PRIVATE Vulkan::LayerSettings) target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17) + +if(VulkanUtilityLibraries_VERSION VERSION_LESS "1.3.268") + target_compile_definitions(${PROJECT_NAME} PRIVATE USE_PRE_268_API) +endif() diff --git a/recipes/vulkan-utility-libraries/all/test_package/test_package.cpp b/recipes/vulkan-utility-libraries/all/test_package/test_package.cpp index de30c15df3a19..d49aa29fafa89 100644 --- a/recipes/vulkan-utility-libraries/all/test_package/test_package.cpp +++ b/recipes/vulkan-utility-libraries/all/test_package/test_package.cpp @@ -2,8 +2,13 @@ #include int main() { +#ifdef USE_PRE_268_API + VlLayerSettingSet layerSettingSet = VK_NULL_HANDLE; + vlCreateLayerSettingSet("VK_LAYER_LUNARG_conan", nullptr, nullptr, nullptr, &layerSettingSet); +#else VkuLayerSettingSet layerSettingSet = VK_NULL_HANDLE; vkuCreateLayerSettingSet("VK_LAYER_LUNARG_conan", nullptr, nullptr, nullptr, &layerSettingSet); +#endif std::cout << VK_EXT_LAYER_SETTINGS_EXTENSION_NAME << std::endl; return 0; } From 45bd17647f1e51c3b1f42c17971fba45e0adc2c4 Mon Sep 17 00:00:00 2001 From: Uilian Ries Date: Tue, 11 Jun 2024 15:48:33 +0200 Subject: [PATCH 07/15] Do not enforce /MP --- recipes/vulkan-utility-libraries/all/conanfile.py | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/vulkan-utility-libraries/all/conanfile.py b/recipes/vulkan-utility-libraries/all/conanfile.py index cf62a93751f12..19ced43d10cb8 100644 --- a/recipes/vulkan-utility-libraries/all/conanfile.py +++ b/recipes/vulkan-utility-libraries/all/conanfile.py @@ -126,7 +126,6 @@ def _exported_cxxflags(self): "/W4", "/we5038", "/permissive-", - "/MP", ] return cxxflags From 2ba23f3c2805d78bf0fab88fdf8775992daf3e24 Mon Sep 17 00:00:00 2001 From: Uilian Ries Date: Tue, 11 Jun 2024 16:11:27 +0200 Subject: [PATCH 08/15] Removing no opetion component --- recipes/vulkan-utility-libraries/all/conanfile.py | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/vulkan-utility-libraries/all/conanfile.py b/recipes/vulkan-utility-libraries/all/conanfile.py index 19ced43d10cb8..4798a7abfd707 100644 --- a/recipes/vulkan-utility-libraries/all/conanfile.py +++ b/recipes/vulkan-utility-libraries/all/conanfile.py @@ -166,7 +166,6 @@ def package_info(self): # Vulkan::CompilerConfiguration if Version(self.version) >= "1.3.265": - self.cpp_info.components["VulkanCompilerConfiguration"] = self.cpp_info.components["VulkanCompilerConfiguration"] self.cpp_info.components["VulkanCompilerConfiguration"].set_property("cmake_target_name", "Vulkan::CompilerConfiguration") self.cpp_info.components["VulkanCompilerConfiguration"].requires = ["vulkan-headers::vulkanheaders"] self.cpp_info.components["VulkanCompilerConfiguration"].cxxflags = self._exported_cxxflags From 61b51d7cb949d9fee31f0afe967ada031c963187 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Wed, 18 Sep 2024 13:53:47 +0300 Subject: [PATCH 09/15] Add Vulkan SDK 1.3.290.0 library versions --- recipes/vulkan-utility-libraries/all/conandata.yml | 3 +++ recipes/vulkan-utility-libraries/config.yml | 2 ++ 2 files changed, 5 insertions(+) diff --git a/recipes/vulkan-utility-libraries/all/conandata.yml b/recipes/vulkan-utility-libraries/all/conandata.yml index 97e6597252d91..be3b12ed9199a 100644 --- a/recipes/vulkan-utility-libraries/all/conandata.yml +++ b/recipes/vulkan-utility-libraries/all/conandata.yml @@ -1,4 +1,7 @@ sources: + "1.3.290.0": + url: "https://github.com/KhronosGroup/Vulkan-Utility-Libraries/archive/refs/tags/vulkan-sdk-1.3.290.0.tar.gz" + sha256: "5173690276d25e51b63132ed6907542b9bc2d64150db0fe057ff59067493e33c" "1.3.268.0": url: "https://github.com/KhronosGroup/Vulkan-Utility-Libraries/archive/refs/tags/vulkan-sdk-1.3.268.0.tar.gz" sha256: "0352a6a9a703a969a805e0d6498e013cba2dc7091cc2013b7c89b1a21f61e3f8" diff --git a/recipes/vulkan-utility-libraries/config.yml b/recipes/vulkan-utility-libraries/config.yml index d8166d8d0bffd..0004f2f1a5a46 100644 --- a/recipes/vulkan-utility-libraries/config.yml +++ b/recipes/vulkan-utility-libraries/config.yml @@ -1,4 +1,6 @@ versions: + "1.3.290.0": + folder: all "1.3.268.0": folder: all "1.3.261.1": From d230d6fd7428a0129aeb5bde004d330b003db105 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Thu, 17 Oct 2024 00:30:46 +0300 Subject: [PATCH 10/15] vulkan-utility-libraries: add SafeStruct component, shorter component names --- .../vulkan-utility-libraries/all/conanfile.py | 40 +++++++++++-------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/recipes/vulkan-utility-libraries/all/conanfile.py b/recipes/vulkan-utility-libraries/all/conanfile.py index 4798a7abfd707..3f3f170db094d 100644 --- a/recipes/vulkan-utility-libraries/all/conanfile.py +++ b/recipes/vulkan-utility-libraries/all/conanfile.py @@ -153,24 +153,32 @@ def package_info(self): self.cpp_info.set_property("cmake_file_name", "VulkanUtilityLibraries") # Vulkan::UtilityHeaders - self.cpp_info.components["VulkanUtilityHeaders"].set_property("cmake_target_name", "Vulkan::UtilityHeaders") - self.cpp_info.components["VulkanUtilityHeaders"].requires = ["vulkan-headers::vulkanheaders"] - self.cpp_info.components["VulkanUtilityHeaders"].libdirs = [] - self.cpp_info.components["VulkanUtilityHeaders"].bindirs = [] + self.cpp_info.components["UtilityHeaders"].set_property("cmake_target_name", "Vulkan::UtilityHeaders") + self.cpp_info.components["UtilityHeaders"].requires = ["vulkan-headers::vulkanheaders"] + self.cpp_info.components["UtilityHeaders"].libdirs = [] + self.cpp_info.components["UtilityHeaders"].bindirs = [] # Vulkan::LayerSettings - self.cpp_info.components["VulkanLayerSettings"].set_property("cmake_target_name", "Vulkan::LayerSettings") - self.cpp_info.components["VulkanLayerSettings"].requires = ["vulkan-headers::vulkanheaders", "VulkanUtilityHeaders"] - self.cpp_info.components["VulkanLayerSettings"].libs = ["VulkanLayerSettings"] - self.cpp_info.components["VulkanLayerSettings"].bindirs = [] + self.cpp_info.components["LayerSettings"].set_property("cmake_target_name", "Vulkan::LayerSettings") + self.cpp_info.components["LayerSettings"].requires = ["vulkan-headers::vulkanheaders", "UtilityHeaders"] + self.cpp_info.components["LayerSettings"].libs = ["VulkanLayerSettings"] + self.cpp_info.components["LayerSettings"].bindirs = [] # Vulkan::CompilerConfiguration if Version(self.version) >= "1.3.265": - self.cpp_info.components["VulkanCompilerConfiguration"].set_property("cmake_target_name", "Vulkan::CompilerConfiguration") - self.cpp_info.components["VulkanCompilerConfiguration"].requires = ["vulkan-headers::vulkanheaders"] - self.cpp_info.components["VulkanCompilerConfiguration"].cxxflags = self._exported_cxxflags - self.cpp_info.components["VulkanCompilerConfiguration"].defines = self._exported_defines - self.cpp_info.components["VulkanCompilerConfiguration"].includedirs = [] - self.cpp_info.components["VulkanCompilerConfiguration"].libdirs = [] - self.cpp_info.components["VulkanCompilerConfiguration"].bindirs = [] - self.cpp_info.components["VulkanLayerSettings"].requires.append("VulkanCompilerConfiguration") + self.cpp_info.components["CompilerConfiguration"].set_property("cmake_target_name", "Vulkan::CompilerConfiguration") + self.cpp_info.components["CompilerConfiguration"].requires = ["vulkan-headers::vulkanheaders"] + self.cpp_info.components["CompilerConfiguration"].cxxflags = self._exported_cxxflags + self.cpp_info.components["CompilerConfiguration"].defines = self._exported_defines + self.cpp_info.components["CompilerConfiguration"].includedirs = [] + self.cpp_info.components["CompilerConfiguration"].libdirs = [] + self.cpp_info.components["CompilerConfiguration"].bindirs = [] + self.cpp_info.components["LayerSettings"].requires.append("CompilerConfiguration") + + # Vulkan::SafeStruct + if Version(self.version) >= "1.3.282": + self.cpp_info.components["SafeStruct"].set_property("cmake_target_name", "Vulkan::SafeStruct") + self.cpp_info.components["SafeStruct"].requires = ["vulkan-headers::vulkanheaders", "UtilityHeaders", "CompilerConfiguration"] + self.cpp_info.components["SafeStruct"].libs = ["VulkanSafeStruct"] + self.cpp_info.components["SafeStruct"].bindirs = [] + self.cpp_info.components["LayerSettings"].requires.append("SafeStruct") From 2447510bb2eaff501b17b56055bc269c81470332 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Tue, 21 Jan 2025 19:14:32 +0200 Subject: [PATCH 11/15] vulkan-utility-libraries: drop Conan v1 compatibility features --- .../vulkan-utility-libraries/all/conanfile.py | 32 ++----------------- .../all/test_package/conanfile.py | 3 +- 2 files changed, 3 insertions(+), 32 deletions(-) diff --git a/recipes/vulkan-utility-libraries/all/conanfile.py b/recipes/vulkan-utility-libraries/all/conanfile.py index 3f3f170db094d..30d442de3abc3 100644 --- a/recipes/vulkan-utility-libraries/all/conanfile.py +++ b/recipes/vulkan-utility-libraries/all/conanfile.py @@ -1,16 +1,14 @@ import os from conan import ConanFile -from conan.errors import ConanInvalidConfiguration from conan.tools.apple import fix_apple_shared_install_name, is_apple_os from conan.tools.build import check_min_cppstd from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout -from conan.tools.env import VirtualBuildEnv from conan.tools.files import copy, get, rm, rmdir, replace_in_file from conan.tools.microsoft import is_msvc from conan.tools.scm import Version -required_conan_version = ">=1.55.0" +required_conan_version = ">=2.0" class VulkanUtilityLibrariesConan(ConanFile): @@ -30,20 +28,6 @@ class VulkanUtilityLibrariesConan(ConanFile): "fPIC": True, } - @property - def _min_cppstd(self): - return 17 - - @property - def _compilers_minimum_version(self): - return { - "apple-clang": "9", - "clang": "7", - "gcc": "8", - "msvc": "191", - "Visual Studio": "15.7", - } - def config_options(self): if self.settings.os == "Windows": del self.options.fPIC @@ -55,17 +39,7 @@ def requirements(self): self.requires(f"vulkan-headers/{self.version}", transitive_headers=True) def validate(self): - if self.settings.compiler.get_safe("cppstd"): - check_min_cppstd(self, self._min_cppstd) - - def loose_lt_semver(v1, v2): - return all(int(p1) < int(p2) for p1, p2 in zip(v1.split("."), v2.split("."))) - - minimum_version = self._compilers_minimum_version.get(str(self.settings.compiler), False) - if minimum_version and loose_lt_semver(str(self.settings.compiler.version), minimum_version): - raise ConanInvalidConfiguration( - f"{self.ref} requires C++{self._min_cppstd}, which your compiler does not support.", - ) + check_min_cppstd(self, 17) def build_requirements(self): self.tool_requires("cmake/[>=3.17.2 <4]") @@ -74,8 +48,6 @@ def source(self): get(self, **self.conan_data["sources"][self.version], strip_root=True) def generate(self): - env = VirtualBuildEnv(self) - env.generate() tc = CMakeToolchain(self) tc.variables["BUILD_TESTS"] = False tc.generate() diff --git a/recipes/vulkan-utility-libraries/all/test_package/conanfile.py b/recipes/vulkan-utility-libraries/all/test_package/conanfile.py index fafba71d30d56..b3f098e55841a 100644 --- a/recipes/vulkan-utility-libraries/all/test_package/conanfile.py +++ b/recipes/vulkan-utility-libraries/all/test_package/conanfile.py @@ -6,8 +6,7 @@ class TestPackageConan(ConanFile): settings = "os", "arch", "compiler", "build_type" - generators = "CMakeToolchain", "CMakeDeps", "VirtualRunEnv" - test_type = "explicit" + generators = "CMakeToolchain", "CMakeDeps" def layout(self): cmake_layout(self) From 3a4675555d78fe46218f0dc6681d353241fa4f58 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Tue, 21 Jan 2025 19:15:47 +0200 Subject: [PATCH 12/15] vulkan-utility-libraries: drop exported warning flags https://github.com/KhronosGroup/Vulkan-Utility-Libraries/pull/104#issuecomment-1715902375 https://github.com/KhronosGroup/Vulkan-Utility-Libraries/issues/103 --- .../vulkan-utility-libraries/all/conanfile.py | 30 ------------------- 1 file changed, 30 deletions(-) diff --git a/recipes/vulkan-utility-libraries/all/conanfile.py b/recipes/vulkan-utility-libraries/all/conanfile.py index 30d442de3abc3..884b5674365ed 100644 --- a/recipes/vulkan-utility-libraries/all/conanfile.py +++ b/recipes/vulkan-utility-libraries/all/conanfile.py @@ -72,35 +72,6 @@ def package(self): rm(self, "*.pdb", os.path.join(self.package_folder, "bin")) fix_apple_shared_install_name(self) - @property - def _exported_cxxflags(self): - # https://github.com/KhronosGroup/Vulkan-Utility-Libraries/blob/vulkan-sdk-1.3.268.0/src/CMakeLists.txt#L9-L40 - cxxflags = [] - if self.settings.compiler in ["gcc", "clang", "apple-clang"]: - cxxflags += [ - "-Wpedantic", - "-Wunreachable-code", - "-Wunused-function", - "-Wall", - "-Wextra", - "-Wpointer-arith", - "-Wextra-semi", - ] - if self.settings.compiler != "gcc": - cxxflags += [ - "-Wunreachable-code-return", - "-Wconversion", - "-Wimplicit-fallthrough", - "-Wstring-conversion", - ] - elif is_msvc(self): - cxxflags += [ - "/W4", - "/we5038", - "/permissive-", - ] - return cxxflags - @property def _exported_defines(self): # https://github.com/KhronosGroup/Vulkan-Utility-Libraries/blob/vulkan-sdk-1.3.268.0/src/CMakeLists.txt#L42-L56 @@ -140,7 +111,6 @@ def package_info(self): if Version(self.version) >= "1.3.265": self.cpp_info.components["CompilerConfiguration"].set_property("cmake_target_name", "Vulkan::CompilerConfiguration") self.cpp_info.components["CompilerConfiguration"].requires = ["vulkan-headers::vulkanheaders"] - self.cpp_info.components["CompilerConfiguration"].cxxflags = self._exported_cxxflags self.cpp_info.components["CompilerConfiguration"].defines = self._exported_defines self.cpp_info.components["CompilerConfiguration"].includedirs = [] self.cpp_info.components["CompilerConfiguration"].libdirs = [] From e299be62e5cc49853f6669bc5fbed40dc4162583 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Tue, 21 Jan 2025 19:22:37 +0200 Subject: [PATCH 13/15] vulkan-utility-libraries: add missing license file --- .../vulkan-utility-libraries/all/conanfile.py | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/recipes/vulkan-utility-libraries/all/conanfile.py b/recipes/vulkan-utility-libraries/all/conanfile.py index 884b5674365ed..b756f90357338 100644 --- a/recipes/vulkan-utility-libraries/all/conanfile.py +++ b/recipes/vulkan-utility-libraries/all/conanfile.py @@ -5,8 +5,6 @@ from conan.tools.build import check_min_cppstd from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout from conan.tools.files import copy, get, rm, rmdir, replace_in_file -from conan.tools.microsoft import is_msvc -from conan.tools.scm import Version required_conan_version = ">=2.0" @@ -66,6 +64,7 @@ def build(self): def package(self): copy(self, "LICENSE.md", self.source_folder, os.path.join(self.package_folder, "licenses")) + copy(self, "Apache-2.0.txt", os.path.join(self.source_folder, "LICENSES"), os.path.join(self.package_folder, "licenses")) cmake = CMake(self) cmake.install() rmdir(self, os.path.join(self.package_folder, "lib", "cmake")) @@ -108,19 +107,17 @@ def package_info(self): self.cpp_info.components["LayerSettings"].bindirs = [] # Vulkan::CompilerConfiguration - if Version(self.version) >= "1.3.265": - self.cpp_info.components["CompilerConfiguration"].set_property("cmake_target_name", "Vulkan::CompilerConfiguration") - self.cpp_info.components["CompilerConfiguration"].requires = ["vulkan-headers::vulkanheaders"] - self.cpp_info.components["CompilerConfiguration"].defines = self._exported_defines - self.cpp_info.components["CompilerConfiguration"].includedirs = [] - self.cpp_info.components["CompilerConfiguration"].libdirs = [] - self.cpp_info.components["CompilerConfiguration"].bindirs = [] - self.cpp_info.components["LayerSettings"].requires.append("CompilerConfiguration") + self.cpp_info.components["CompilerConfiguration"].set_property("cmake_target_name", "Vulkan::CompilerConfiguration") + self.cpp_info.components["CompilerConfiguration"].requires = ["vulkan-headers::vulkanheaders"] + self.cpp_info.components["CompilerConfiguration"].defines = self._exported_defines + self.cpp_info.components["CompilerConfiguration"].includedirs = [] + self.cpp_info.components["CompilerConfiguration"].libdirs = [] + self.cpp_info.components["CompilerConfiguration"].bindirs = [] + self.cpp_info.components["LayerSettings"].requires.append("CompilerConfiguration") # Vulkan::SafeStruct - if Version(self.version) >= "1.3.282": - self.cpp_info.components["SafeStruct"].set_property("cmake_target_name", "Vulkan::SafeStruct") - self.cpp_info.components["SafeStruct"].requires = ["vulkan-headers::vulkanheaders", "UtilityHeaders", "CompilerConfiguration"] - self.cpp_info.components["SafeStruct"].libs = ["VulkanSafeStruct"] - self.cpp_info.components["SafeStruct"].bindirs = [] - self.cpp_info.components["LayerSettings"].requires.append("SafeStruct") + self.cpp_info.components["SafeStruct"].set_property("cmake_target_name", "Vulkan::SafeStruct") + self.cpp_info.components["SafeStruct"].requires = ["vulkan-headers::vulkanheaders", "UtilityHeaders", "CompilerConfiguration"] + self.cpp_info.components["SafeStruct"].libs = ["VulkanSafeStruct"] + self.cpp_info.components["SafeStruct"].bindirs = [] + self.cpp_info.components["LayerSettings"].requires.append("SafeStruct") From 514c0f8a1f19ac1300c60f7a2b826a80521cb8b0 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Tue, 21 Jan 2025 19:22:53 +0200 Subject: [PATCH 14/15] vulkan-utility-libraries: drop old versions, add v1.3.296.0 --- recipes/vulkan-utility-libraries/all/conandata.yml | 9 +++------ .../all/test_package/CMakeLists.txt | 4 ---- .../all/test_package/test_package.cpp | 6 ------ recipes/vulkan-utility-libraries/config.yml | 6 ++---- 4 files changed, 5 insertions(+), 20 deletions(-) diff --git a/recipes/vulkan-utility-libraries/all/conandata.yml b/recipes/vulkan-utility-libraries/all/conandata.yml index be3b12ed9199a..0f1f3b8450b86 100644 --- a/recipes/vulkan-utility-libraries/all/conandata.yml +++ b/recipes/vulkan-utility-libraries/all/conandata.yml @@ -1,10 +1,7 @@ sources: + "1.3.296.0": + url: "https://github.com/KhronosGroup/Vulkan-Utility-Libraries/archive/refs/tags/vulkan-sdk-1.3.296.0.tar.gz" + sha256: "d9f15c444b0cc596a9c49ffef8e67336ec08a793f7afd7ebb64aec9f6c218423" "1.3.290.0": url: "https://github.com/KhronosGroup/Vulkan-Utility-Libraries/archive/refs/tags/vulkan-sdk-1.3.290.0.tar.gz" sha256: "5173690276d25e51b63132ed6907542b9bc2d64150db0fe057ff59067493e33c" - "1.3.268.0": - url: "https://github.com/KhronosGroup/Vulkan-Utility-Libraries/archive/refs/tags/vulkan-sdk-1.3.268.0.tar.gz" - sha256: "0352a6a9a703a969a805e0d6498e013cba2dc7091cc2013b7c89b1a21f61e3f8" - "1.3.261.1": - url: "https://github.com/KhronosGroup/Vulkan-Utility-Libraries/archive/refs/tags/sdk-1.3.261.1.tar.gz" - sha256: "32c8be9806fd412012752324c53cd661594edd21adf7ba5081229481274f802b" diff --git a/recipes/vulkan-utility-libraries/all/test_package/CMakeLists.txt b/recipes/vulkan-utility-libraries/all/test_package/CMakeLists.txt index cf92bc797f571..231c5ca88388b 100644 --- a/recipes/vulkan-utility-libraries/all/test_package/CMakeLists.txt +++ b/recipes/vulkan-utility-libraries/all/test_package/CMakeLists.txt @@ -5,8 +5,4 @@ find_package(VulkanUtilityLibraries REQUIRED CONFIG) add_executable(${PROJECT_NAME} test_package.cpp) target_link_libraries(${PROJECT_NAME} PRIVATE Vulkan::LayerSettings) -target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17) -if(VulkanUtilityLibraries_VERSION VERSION_LESS "1.3.268") - target_compile_definitions(${PROJECT_NAME} PRIVATE USE_PRE_268_API) -endif() diff --git a/recipes/vulkan-utility-libraries/all/test_package/test_package.cpp b/recipes/vulkan-utility-libraries/all/test_package/test_package.cpp index d49aa29fafa89..9afa34618e2af 100644 --- a/recipes/vulkan-utility-libraries/all/test_package/test_package.cpp +++ b/recipes/vulkan-utility-libraries/all/test_package/test_package.cpp @@ -2,13 +2,7 @@ #include int main() { -#ifdef USE_PRE_268_API - VlLayerSettingSet layerSettingSet = VK_NULL_HANDLE; - vlCreateLayerSettingSet("VK_LAYER_LUNARG_conan", nullptr, nullptr, nullptr, &layerSettingSet); -#else VkuLayerSettingSet layerSettingSet = VK_NULL_HANDLE; vkuCreateLayerSettingSet("VK_LAYER_LUNARG_conan", nullptr, nullptr, nullptr, &layerSettingSet); -#endif std::cout << VK_EXT_LAYER_SETTINGS_EXTENSION_NAME << std::endl; - return 0; } diff --git a/recipes/vulkan-utility-libraries/config.yml b/recipes/vulkan-utility-libraries/config.yml index 0004f2f1a5a46..09272f082ae34 100644 --- a/recipes/vulkan-utility-libraries/config.yml +++ b/recipes/vulkan-utility-libraries/config.yml @@ -1,7 +1,5 @@ versions: - "1.3.290.0": - folder: all - "1.3.268.0": + "1.3.296.0": folder: all - "1.3.261.1": + "1.3.290.0": folder: all From 1be1909ebad7c0c848094a2d175e956983711c47 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Wed, 22 Jan 2025 10:51:29 +0200 Subject: [PATCH 15/15] vulkan-utility-libraries: fix cpp_info requires --- recipes/vulkan-utility-libraries/all/conanfile.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/recipes/vulkan-utility-libraries/all/conanfile.py b/recipes/vulkan-utility-libraries/all/conanfile.py index b756f90357338..ce090f0ebf3d7 100644 --- a/recipes/vulkan-utility-libraries/all/conanfile.py +++ b/recipes/vulkan-utility-libraries/all/conanfile.py @@ -68,8 +68,6 @@ def package(self): cmake = CMake(self) cmake.install() rmdir(self, os.path.join(self.package_folder, "lib", "cmake")) - rm(self, "*.pdb", os.path.join(self.package_folder, "bin")) - fix_apple_shared_install_name(self) @property def _exported_defines(self): @@ -102,22 +100,19 @@ def package_info(self): # Vulkan::LayerSettings self.cpp_info.components["LayerSettings"].set_property("cmake_target_name", "Vulkan::LayerSettings") - self.cpp_info.components["LayerSettings"].requires = ["vulkan-headers::vulkanheaders", "UtilityHeaders"] + self.cpp_info.components["LayerSettings"].requires = ["vulkan-headers::vulkanheaders", "CompilerConfiguration"] self.cpp_info.components["LayerSettings"].libs = ["VulkanLayerSettings"] self.cpp_info.components["LayerSettings"].bindirs = [] # Vulkan::CompilerConfiguration self.cpp_info.components["CompilerConfiguration"].set_property("cmake_target_name", "Vulkan::CompilerConfiguration") - self.cpp_info.components["CompilerConfiguration"].requires = ["vulkan-headers::vulkanheaders"] self.cpp_info.components["CompilerConfiguration"].defines = self._exported_defines self.cpp_info.components["CompilerConfiguration"].includedirs = [] self.cpp_info.components["CompilerConfiguration"].libdirs = [] self.cpp_info.components["CompilerConfiguration"].bindirs = [] - self.cpp_info.components["LayerSettings"].requires.append("CompilerConfiguration") # Vulkan::SafeStruct self.cpp_info.components["SafeStruct"].set_property("cmake_target_name", "Vulkan::SafeStruct") self.cpp_info.components["SafeStruct"].requires = ["vulkan-headers::vulkanheaders", "UtilityHeaders", "CompilerConfiguration"] self.cpp_info.components["SafeStruct"].libs = ["VulkanSafeStruct"] self.cpp_info.components["SafeStruct"].bindirs = [] - self.cpp_info.components["LayerSettings"].requires.append("SafeStruct")