Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ jobs:
)

echo Building with minimal Vulkan...
FLAGS+=('-DVMA_HPP_VULKAN_REVISION=${{matrix.env.modules && 'min-modules' || 'min-headers'}}')

cmake "${FLAGS[@]}" -DCMAKE_CXX_FLAGS="$CXX_FLAGS"
cmake --build build --clean-first
Expand All @@ -98,6 +99,7 @@ jobs:
cmake --build build --clean-first

echo Building with latest Vulkan...
unset 'FLAGS[${#FLAGS[@]}-1]'
FLAGS+=('-DVMA_HPP_VULKAN_REVISION=main')

cmake "${FLAGS[@]}" -DCMAKE_CXX_FLAGS="$CXX_FLAGS"
Expand Down
18 changes: 13 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ cmake_minimum_required(VERSION 3.8...3.30 FATAL_ERROR)

project(VulkanMemoryAllocator-Hpp-Generator VERSION 3.3.0 LANGUAGES CXX)

set(VMA_HPP_VULKAN_MIN_HEADERS "1.4.327" CACHE INTERNAL "Minimal Vulkan-Headers revision (headers)")
set(VMA_HPP_VULKAN_MIN_MODULES "1.4.336" CACHE INTERNAL "Minimal Vulkan-Headers revision (modules)")

if (CMAKE_VERSION VERSION_LESS "3.21")
# https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html
string(COMPARE EQUAL ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} PROJECT_IS_TOP_LEVEL)
Expand All @@ -12,9 +15,8 @@ option(VMA_HPP_RUN_GENERATOR "Run the HPP generator" ${PROJECT_IS_TOP_LEVE
option(VMA_HPP_SAMPLES_BUILD "Build samples" ${PROJECT_IS_TOP_LEVEL})
option(VMA_HPP_DO_UPDATE "Update VMA submodule" OFF)
set(VMA_HPP_INPUT_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/VulkanMemoryAllocator/include/vk_mem_alloc.h" CACHE FILEPATH "Input vk_mem_alloc.h file")
set(VMA_HPP_VULKAN_MIN_VERSION "1.4.336" CACHE INTERNAL "Minimal Vulkan-Headers revision")
set(VMA_HPP_VULKAN_REVISION "v${VMA_HPP_VULKAN_MIN_VERSION}" CACHE STRING "Vulkan-Headers revision")
set(VMA_HPP_VMA_REVISION "v${PROJECT_VERSION}" CACHE STRING "VulkanMemoryAllocator revision" FORCE)
set(VMA_HPP_VULKAN_REVISION "main" CACHE STRING "Vulkan-Headers revision")
set(VMA_HPP_VMA_REVISION "v${PROJECT_VERSION}" CACHE STRING "VulkanMemoryAllocator revision" FORCE)

if (VMA_HPP_DO_UPDATE)
# Find Git.
Expand All @@ -41,6 +43,11 @@ if (${VMA_HPP_VULKAN_REVISION} STREQUAL "system")
find_package(Vulkan REQUIRED)
endif ()
else ()
if (${VMA_HPP_VULKAN_REVISION} STREQUAL "min-headers")
set(VMA_HPP_VULKAN_REVISION "v${VMA_HPP_VULKAN_MIN_HEADERS}" CACHE STRING "Vulkan-Headers revision" FORCE)
elseif (${VMA_HPP_VULKAN_REVISION} STREQUAL "min-modules")
set(VMA_HPP_VULKAN_REVISION "v${VMA_HPP_VULKAN_MIN_MODULES}" CACHE STRING "Vulkan-Headers revision" FORCE)
endif ()
include(FetchContent)
FetchContent_Declare(
vulkan
Expand All @@ -65,11 +72,12 @@ if (VMA_HPP_DO_UPDATE)
string(STRIP ${CMAKE_MATCH_1} VMA_HPP_VMA_VERSION)

# Update versions in the README.
message(STATUS "Updating README with VMA ${VMA_HPP_VMA_VERSION} and Vulkan ${VMA_HPP_VULKAN_MIN_VERSION}")
message(STATUS "Updating README with VMA ${VMA_HPP_VMA_VERSION} and Vulkan ${VMA_HPP_VULKAN_MIN_HEADERS} / ${VMA_HPP_VULKAN_MIN_MODULES}")
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/README.md" VMA_HPP_README)
string(REPLACE ";" "\\;" VMA_HPP_README "${VMA_HPP_README}") # Do not mess up semicolons in the README
string(REGEX REPLACE "<!--VER-->[^<]*<!--/VER-->" "<!--VER-->${VMA_HPP_VMA_VERSION}<!--/VER-->" VMA_HPP_README "${VMA_HPP_README}")
string(REGEX REPLACE "<!--VK-->[^<]*<!--/VK-->" "<!--VK-->${VMA_HPP_VULKAN_MIN_VERSION}<!--/VK-->" VMA_HPP_README "${VMA_HPP_README}")
string(REGEX REPLACE "<!--VK_HEADERS-->[^<]*<!--/VK_HEADERS-->" "<!--VK_HEADERS-->${VMA_HPP_VULKAN_MIN_HEADERS}<!--/VK_HEADERS-->" VMA_HPP_README "${VMA_HPP_README}")
string(REGEX REPLACE "<!--VK_MODULES-->[^<]*<!--/VK_MODULES-->" "<!--VK_MODULES-->${VMA_HPP_VULKAN_MIN_MODULES}<!--/VK_MODULES-->" VMA_HPP_README "${VMA_HPP_README}")
file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/README.md" ${VMA_HPP_README})

# Generate "imported" utility header.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ consistent and compatible with Vulkan C++ bindings ([Vulkan-Hpp](https://github.
#### Requirements

- C++11 or newer
- [Vulkan headers](https://github.com/KhronosGroup/Vulkan-Headers) **<!--VK-->1.4.336<!--/VK-->** or newer
- [Vulkan](https://github.com/KhronosGroup/Vulkan-Headers) **<!--VK_HEADERS-->1.4.327<!--/VK_HEADERS-->** (headers) / **<!--VK_MODULES-->1.4.336<!--/VK_MODULES-->** (module) or newer
- [VulkanMemoryAllocator](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator)
- *[GitHub releases](https://github.com/YaaZ/VulkanMemoryAllocator-Hpp/releases) is the recommended way to get VMA-Hpp,
they already include a compatible `vk_mem_alloc.h` header*
Expand Down