From 97ae723166bb3d337eb7d18da2b91fbbabf5fea2 Mon Sep 17 00:00:00 2001 From: gomkyung2 Date: Mon, 22 Jul 2024 00:13:19 +0900 Subject: [PATCH] Use vku with vcpkg overlays. --- CMakeLists.txt | 12 +--------- CMakePresets.json | 3 +-- overlays/vku/portfile.cmake | 26 +++++++++++++++++++++ overlays/vku/usage | 4 ++++ overlays/vku/vcpkg-deps.patch | 44 +++++++++++++++++++++++++++++++++++ overlays/vku/vcpkg.json | 18 ++++++++++++++ vcpkg.json | 2 +- 7 files changed, 95 insertions(+), 14 deletions(-) create mode 100644 overlays/vku/portfile.cmake create mode 100644 overlays/vku/usage create mode 100644 overlays/vku/vcpkg-deps.patch create mode 100644 overlays/vku/vcpkg.json diff --git a/CMakeLists.txt b/CMakeLists.txt index 3fa0f7e..bebadaa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,17 +23,7 @@ include(${CMAKE_CURRENT_BINARY_DIR}/CPM.cmake) find_package(glfw3 CONFIG REQUIRED) find_package(glm CONFIG REQUIRED) - -if (USE_VCPKG) - set(VCPKG_PATCH_FILE "${CMAKE_CURRENT_BINARY_DIR}/_deps/vku-src/vcpkg-deps.patch") -endif() -CPMAddPackage( - NAME vku - GITHUB_REPOSITORY stripe2933/vku - GIT_TAG module - PATCHES ${VCPKG_PATCH_FILE} # Apply patch if USE_VCPKG enabled. - OPTIONS "VKU_USE_STD_MODULE ON" -) +find_package(vku CONFIG REQUIRED) # ---------------- # Module configurations for external dependencies. diff --git a/CMakePresets.json b/CMakePresets.json index b18f3f1..6f34e84 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -13,8 +13,7 @@ "inherits": "default", "cacheVariables": { "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_OVERLAY_PORTS": "${sourceDir}/overlays", - "USE_VCPKG": "ON" + "VCPKG_OVERLAY_PORTS": "${sourceDir}/overlays" } } ] diff --git a/overlays/vku/portfile.cmake b/overlays/vku/portfile.cmake new file mode 100644 index 0000000..d4d2b30 --- /dev/null +++ b/overlays/vku/portfile.cmake @@ -0,0 +1,26 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO stripe2933/vku + REF v0.1.0-test5 + SHA512 e4aa0b0195886dca6ae5a718ab68e1901b014bd430e31dae166fd7ca1308b1eebc041d0b8a261e9aee993e16ee91ac7b1c15910a9cfbfafc179191dfbbbf67a0 + HEAD_REF module + PATCHES vcpkg-deps.patch +) + +# Module project doesn't use header files. +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) + +vcpkg_cmake_configure(SOURCE_PATH "${SOURCE_PATH}") +vcpkg_cmake_install() + +file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/share) +file(RENAME ${CURRENT_PACKAGES_DIR}/debug/cmake/vku ${CURRENT_PACKAGES_DIR}/debug/share/vku) +file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share) +file(RENAME ${CURRENT_PACKAGES_DIR}/cmake/vku ${CURRENT_PACKAGES_DIR}/share/vku) + +vcpkg_cmake_config_fixup(PACKAGE_NAME "vku") + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/cmake" "${CURRENT_PACKAGES_DIR}/debug/cmake") + +file(INSTALL "${SOURCE_PATH}/LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) +configure_file("${CMAKE_CURRENT_LIST_DIR}/usage" "${CURRENT_PACKAGES_DIR}/share/${PORT}/usage" COPYONLY) diff --git a/overlays/vku/usage b/overlays/vku/usage new file mode 100644 index 0000000..6ee3548 --- /dev/null +++ b/overlays/vku/usage @@ -0,0 +1,4 @@ +vku provides CMake targets: + +find_package(vku CONFIG REQUIRED) +target_link_libraries(main PRIVATE vku::vku) \ No newline at end of file diff --git a/overlays/vku/vcpkg-deps.patch b/overlays/vku/vcpkg-deps.patch new file mode 100644 index 0000000..500f00c --- /dev/null +++ b/overlays/vku/vcpkg-deps.patch @@ -0,0 +1,44 @@ +Subject: [PATCH] vcpkg-based dependency management. +--- +Index: extlibs/module-ports/vk_mem_alloc.cppm +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/extlibs/module-ports/vk_mem_alloc.cppm b/extlibs/module-ports/vk_mem_alloc.cppm +--- a/extlibs/module-ports/vk_mem_alloc.cppm (revision 9ce74395ceab83fe55a4ae8ee8a6b8020e832542) ++++ b/extlibs/module-ports/vk_mem_alloc.cppm (date 1721481973172) +@@ -1,6 +1,6 @@ + module; + #define VMA_IMPLEMENTATION +-#include ++#include + export module vk_mem_alloc_hpp; + + export namespace VMA_HPP_NAMESPACE { +Index: CMakeLists.txt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt (revision 9ce74395ceab83fe55a4ae8ee8a6b8020e832542) ++++ b/CMakeLists.txt (date 1721481973176) +@@ -14,7 +14,7 @@ + + find_package(Vulkan 1.3.256 REQUIRED) + find_package(VulkanMemoryAllocator CONFIG REQUIRED) +-find_package(VulkanMemoryAllocator-Hpp CONFIG REQUIRED) ++find_package(unofficial-vulkan-memory-allocator-hpp CONFIG REQUIRED) + + # ---------------- + # Module configurations for the external dependencies. +@@ -50,7 +50,7 @@ + target_link_libraries(VulkanMemoryAllocator-Hpp_module PUBLIC + Vulkan::Vulkan + GPUOpen::VulkanMemoryAllocator +- VulkanMemoryAllocator-Hpp::VulkanMemoryAllocator-Hpp ++ unofficial::VulkanMemoryAllocator-Hpp::VulkanMemoryAllocator-Hpp + ) + + add_library(VulkanMemoryAllocator-Hpp::module ALIAS VulkanMemoryAllocator-Hpp_module) diff --git a/overlays/vku/vcpkg.json b/overlays/vku/vcpkg.json new file mode 100644 index 0000000..e4e0277 --- /dev/null +++ b/overlays/vku/vcpkg.json @@ -0,0 +1,18 @@ +{ + "name": "vku", + "version": "0.1.0", + "homepage": "https://github.com/stripe2933/vku", + "description": "Vulkan simplifications.", + "license": "MIT", + "dependencies": [ + { + "name" : "vcpkg-cmake", + "host" : true + }, + { + "name" : "vcpkg-cmake-config", + "host" : true + }, + "vulkan-memory-allocator-hpp" + ] +} \ No newline at end of file diff --git a/vcpkg.json b/vcpkg.json index 7fba94c..aa3d6ed 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -2,6 +2,6 @@ "dependencies": [ "glfw3", "glm", - "vulkan-memory-allocator-hpp" + "vku" ] }