@@ -2,9 +2,6 @@ cmake_minimum_required(VERSION 3.8...3.30 FATAL_ERROR)
22
33project (VulkanMemoryAllocator-Hpp-Generator VERSION 3.3.0 LANGUAGES CXX )
44
5- set (VMA_HPP_VULKAN_MIN_HEADERS "1.4.327" CACHE INTERNAL "Minimal Vulkan-Headers revision (headers)" )
6- set (VMA_HPP_VULKAN_MIN_MODULES "1.4.344" CACHE INTERNAL "Minimal Vulkan-Headers revision (modules)" )
7-
85if (CMAKE_VERSION VERSION_LESS "3.21" )
96 # https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html
107 string (COMPARE EQUAL ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} PROJECT_IS_TOP_LEVEL)
@@ -17,27 +14,7 @@ option(VMA_HPP_DO_UPDATE "Update VMA submodule" OFF)
1714set (VMA_HPP_INPUT_HEADER "${CMAKE_CURRENT_SOURCE_DIR} /VulkanMemoryAllocator/include/vk_mem_alloc.h" CACHE FILEPATH "Input vk_mem_alloc.h file" )
1815
1916if (VMA_HPP_DO_UPDATE)
20- # VMA_HPP_VMA_REVISION can be overridden from the command line, but does not persist in cache
21- if (NOT DEFINED VMA_HPP_VMA_REVISION)
22- set (VMA_HPP_VMA_REVISION "v${PROJECT_VERSION} " )
23- endif ()
24-
25- # Find Git.
26- find_package (Git )
27- if (NOT Git_FOUND)
28- message (FATAL_ERROR "Git not found. VMA_HPP_DO_UPDATE is not available." )
29- endif ()
30-
31- # Init the submodule.
32- execute_process (COMMAND ${GIT_EXECUTABLE} submodule update
33- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} " COMMAND_ERROR_IS_FATAL ANY )
34-
35- # Checkout proper revision.
36- message (STATUS "Updating VulkanMemoryAllocator submodule to ${VMA_HPP_VMA_REVISION} " )
37- execute_process (COMMAND ${GIT_EXECUTABLE} -c advice.detachedHead=false checkout "${VMA_HPP_VMA_REVISION} "
38- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /VulkanMemoryAllocator" COMMAND_ERROR_IS_FATAL ANY )
39- execute_process (COMMAND ${GIT_EXECUTABLE} pull
40- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /VulkanMemoryAllocator" ERROR_QUIET )
17+ include (tools/UpdateSubmodule.cmake )
4118endif ()
4219
4320if (NOT TARGET Vulkan::Headers AND NOT TARGET Vulkan::Hpp)
@@ -46,7 +23,7 @@ if (NOT TARGET Vulkan::Headers AND NOT TARGET Vulkan::Hpp)
4623 if ("${FETCHCONTENT_SOURCE_DIR_VULKAN} " STREQUAL "@" )
4724 find_package (VulkanHeaders CONFIG )
4825 if (NOT VulkanHeaders_FOUND)
49- find_package (Vulkan REQUIRED )
26+ find_package (Vulkan )
5027 endif ()
5128 else ()
5229 include (FetchContent )
@@ -78,41 +55,14 @@ if (NOT ${PROJECT_VERSION} STREQUAL ${VMA_HPP_PROJECT_VERSION})
7855endif ()
7956
8057if (VMA_HPP_DO_UPDATE)
81- # Find VMA version in the VMA header.
82- file (READ "${VMA_HPP_INPUT_HEADER} " VMA_HPP_VMA_SOURCE )
83- string (REGEX MATCH "<b>Version\\ s*([^<]+)\\ s*</b>" _ ${VMA_HPP_VMA_SOURCE} )
84- string (STRIP ${CMAKE_MATCH_1} VMA_HPP_VMA_VERSION)
85-
86- # Update versions in the README.
87- message (STATUS "Updating README with VMA ${VMA_HPP_VMA_VERSION} and Vulkan ${VMA_HPP_VULKAN_MIN_HEADERS} / ${VMA_HPP_VULKAN_MIN_MODULES} " )
88- file (READ "${CMAKE_CURRENT_SOURCE_DIR} /README.md" VMA_HPP_README )
89- string (REPLACE ";" "\\ ;" VMA_HPP_README "${VMA_HPP_README} " ) # Do not mess up semicolons in the README
90- string (REGEX REPLACE "<!--VER-->[^<]*<!--/VER-->" "<!--VER-->${VMA_HPP_VMA_VERSION} <!--/VER-->" VMA_HPP_README "${VMA_HPP_README} " )
91- string (REGEX REPLACE "<!--VK_HEADERS-->[^<]*<!--/VK_HEADERS-->" "<!--VK_HEADERS-->${VMA_HPP_VULKAN_MIN_HEADERS} <!--/VK_HEADERS-->" VMA_HPP_README "${VMA_HPP_README} " )
92- string (REGEX REPLACE "<!--VK_MODULES-->[^<]*<!--/VK_MODULES-->" "<!--VK_MODULES-->${VMA_HPP_VULKAN_MIN_MODULES} <!--/VK_MODULES-->" VMA_HPP_README "${VMA_HPP_README} " )
93- file (WRITE "${CMAKE_CURRENT_SOURCE_DIR} /README.md" ${VMA_HPP_README} )
94-
95- # Generate "imported" utility header.
96- set (VMA_HPP_IMPORTED_HEADER "// Generated from the list of VMA-Hpp headers (vk_mem_alloc*.hpp).
97- // See https://clang.llvm.org/docs/StandardCPlusPlusModules.html#providing-a-header-to-skip-parsing-redundant-headers" )
98- file (GLOB VMA_HPP_HEADER_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR} /include" "${CMAKE_CURRENT_SOURCE_DIR} /include/vk_mem_alloc*.hpp" )
99- foreach (VMA_HPP_HEADER_FILE ${VMA_HPP_HEADER_FILES} )
100- if (NOT ${VMA_HPP_HEADER_FILE} STREQUAL "vk_mem_alloc_imported.hpp" AND
101- NOT ${VMA_HPP_HEADER_FILE} STREQUAL "vk_mem_alloc_static_assertions.hpp" )
102- string (REGEX MATCH "vk_mem_alloc(.*)\. hpp" _ ${VMA_HPP_HEADER_FILE} )
103- string (TOUPPER "${CMAKE_MATCH_1} " VMA_HPP_HEADER_GUARD)
104- string (APPEND VMA_HPP_IMPORTED_HEADER "
105-
106- #ifndef VULKAN_MEMORY_ALLOCATOR${VMA_HPP_HEADER_GUARD} _HPP
107- #define VULKAN_MEMORY_ALLOCATOR${VMA_HPP_HEADER_GUARD} _HPP
108- #endif" )
109- endif ()
110- endforeach ()
111- file (WRITE "${CMAKE_CURRENT_SOURCE_DIR} /include/vk_mem_alloc_imported.hpp" ${VMA_HPP_IMPORTED_HEADER} )
58+ function (generate_files )
59+ include (tools/GenerateFiles.cmake )
60+ endfunction ()
61+ generate_files ()
11262endif ()
11363
11464if (VMA_HPP_GENERATOR_BUILD)
115- add_executable (VmaHppGenerator VmaHppGenerator.cpp )
65+ add_executable (VmaHppGenerator tools/ VmaHppGenerator.cpp )
11666 set_property (TARGET VmaHppGenerator PROPERTY CXX_STANDARD 17 )
11767 set_property (TARGET VmaHppGenerator PROPERTY CXX_STANDARD_REQUIRED ON )
11868 set_property (TARGET VmaHppGenerator PROPERTY CXX_EXTENSIONS OFF )
0 commit comments