Skip to content
Snippets Groups Projects
Verified Commit 98094098 authored by Tobias Frisch's avatar Tobias Frisch
Browse files

[#107] Automatically initialize git lfs and update submodules via CMake

parent b343d4ab
No related branches found
No related tags found
1 merge request!99Resolve "Automatische Generierung von cmake-Files für Projekte"
Pipeline #27304 passed
......@@ -88,5 +88,5 @@ add_subdirectory(projects)
if (NOT WIN32)
# add doxygen as target if installed
include(${vkcv_config}/ext/Doxygen.cmake)
include(${vkcv_config_ext}/Doxygen.cmake)
endif()
\ No newline at end of file
......@@ -16,6 +16,12 @@ if(NOT WIN32)
list(APPEND vkcv_flags -fopenmp)
endif()
# add custom functions to use git automatically
include(${vkcv_config_ext}/Git.cmake)
init_git_lfs()
init_git_submodules()
list(APPEND vkcv_definitions _USE_MATH_DEFINES)
# some formatted printing
......
function(init_git_lfs)
find_program(git_program "git")
if (EXISTS ${git_program})
add_custom_target(
init_git_lfs
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
)
add_custom_command(
TARGET init_git_lfs
PRE_BUILD
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
COMMAND git lfs install
COMMENT "Initializing Git LFS"
)
endif()
endfunction()
function(init_git_submodules)
find_program(git_program "git")
if (EXISTS ${git_program})
add_custom_target(
init_git_submodules
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
)
add_custom_command(
TARGET init_git_submodules
PRE_BUILD
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
COMMAND git submodule init
COMMENT "Initializing Git Submodules"
)
endif()
endfunction()
function(use_git_submodule submodule_path submodule_status)
if (EXISTS "${submodule_path}")
set(${submodule_status} TRUE PARENT_SCOPE)
return()
endif()
get_filename_component(submodule_directory ${submodule_path} DIRECTORY)
get_filename_component(submodule_name ${submodule_path} NAME)
find_program(git_program "git")
if (EXISTS ${git_program})
add_custom_target(
"git_submodule_${submodule_name}"
WORKING_DIRECTORY "${submodule_directory}"
)
add_custom_command(
TARGET "git_submodule_${submodule_name}"
PRE_BUILD
WORKING_DIRECTORY "${submodule_directory}"
COMMAND git submodule update
COMMENT "Updating Git Submodules"
)
if (EXISTS "${submodule_path}")
set(${submodule_status} TRUE PARENT_SCOPE)
return()
endif()
endif()
message(WARNING "${submodule_name} is required..! Update the submodules!")
set(${submodule_status} FALSE PARENT_SCOPE)
endfunction()
......@@ -6,14 +6,14 @@ if (glfw3_FOUND)
message(${vkcv_config_msg} " GLFW - " ${glfw3_VERSION})
else()
if (EXISTS "${vkcv_lib_path}/glfw")
use_git_submodule("${vkcv_lib_path}/glfw" glfw_status)
if (${glfw_status})
add_subdirectory(${vkcv_lib}/glfw)
list(APPEND vkcv_libraries glfw)
list(APPEND vkcv_includes ${vkcv_lib_path}/glfw/include)
message(${vkcv_config_msg} " GLFW - " ${glfw3_VERSION})
else()
message(WARNING "GLFW is required..! Update the submodules!")
endif ()
endif ()
......@@ -5,7 +5,9 @@ if (spirv-cross_FOUND)
message(${vkcv_config_msg} " SPIRV Cross - " ${SPIRV_CROSS_VERSION})
else()
if (EXISTS "${vkcv_lib_path}/SPIRV-Cross")
use_git_submodule("${vkcv_lib_path}/SPIRV-Cross" spirv_cross_status)
if (${spirv_cross_status})
set(SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS OFF CACHE INTERNAL "")
set(SPIRV_CROSS_SHARED OFF CACHE INTERNAL "")
set(SPIRV_CROSS_STATIC ON CACHE INTERNAL "")
......@@ -28,7 +30,5 @@ else()
list(APPEND vkcv_includes ${vkcv_lib_path}/SPIV-Cross/include)
message(${vkcv_config_msg} " SPIRV Cross - " ${SPIRV_CROSS_VERSION})
else()
message(WARNING "SPIRV-Cross is required..! Update the submodules!")
endif ()
endif ()
\ No newline at end of file
if (EXISTS "${vkcv_lib_path}/VulkanMemoryAllocator-Hpp")
use_git_submodule("${vkcv_lib_path}/VulkanMemoryAllocator-Hpp" vma_hpp_status)
if (${vma_hpp_status})
set(VMA_HPP_PATH "${vkcv_lib_path}/VulkanMemoryAllocator-Hpp" CACHE INTERNAL "")
set(VMA_RECORDING_ENABLED OFF CACHE INTERNAL "")
......@@ -17,6 +19,4 @@ if (EXISTS "${vkcv_lib_path}/VulkanMemoryAllocator-Hpp")
list(APPEND vkcv_includes ${vkcv_lib_path}/VulkanMemoryAllocator-Hpp)
message(${vkcv_config_msg} " VMA - ")
else()
message(WARNING "VulkanMemoryAllocator is required..! Update the submodules!")
endif ()
if (EXISTS "${vkcv_asset_loader_lib_path}/fx-gltf")
use_git_submodule("${vkcv_asset_loader_lib_path}/fx-gltf" fx_gltf_status)
if (${fx_gltf_status})
set(FX_GLTF_INSTALL OFF CACHE INTERNAL "")
set(FX_GLTF_USE_INSTALLED_DEPS OFF CACHE INTERNAL "")
set(BUILD_TESTING OFF CACHE INTERNAL "")
......@@ -7,6 +9,4 @@ if (EXISTS "${vkcv_asset_loader_lib_path}/fx-gltf")
add_subdirectory(${vkcv_asset_loader_lib}/fx-gltf)
list(APPEND vkcv_asset_loader_libraries fx-gltf)
else()
message(WARNING "FX-GLTF is required..! Update the submodules!")
endif ()
if (EXISTS "${vkcv_asset_loader_lib_path}/json")
use_git_submodule("${vkcv_asset_loader_lib_path}/json" json_status)
if (${json_status})
set(JSON_BuildTests OFF CACHE INTERNAL "")
add_subdirectory(${vkcv_asset_loader_lib}/json)
list(APPEND vkcv_asset_loader_libraries nlohmann_json::nlohmann_json)
else()
message(WARNING "NLOHMANN_JSON is required..! Update the submodules!")
endif ()
if (EXISTS "${vkcv_asset_loader_lib_path}/stb")
use_git_submodule("${vkcv_asset_loader_lib_path}/stb" stb_status)
if (${stb_status})
list(APPEND vkcv_asset_loader_includes ${vkcv_asset_loader_lib}/stb)
list(APPEND vkcv_asset_loader_definitions STB_IMAGE_IMPLEMENTATION)
list(APPEND vkcv_asset_loader_definitions STBI_ONLY_JPEG)
list(APPEND vkcv_asset_loader_definitions STBI_ONLY_PNG)
else()
message(WARNING "STB is required..! Update the submodules!")
endif ()
......@@ -5,13 +5,13 @@ if (glm_FOUND)
list(APPEND vkcv_camera_includes ${GLM_INCLUDE_DIRS})
list(APPEND vkcv_camera_libraries glm)
else()
if (EXISTS "${vkcv_camera_lib_path}/glm")
use_git_submodule("${vkcv_camera_lib_path}/glm" glm_status)
if (${glm_status})
add_subdirectory(${vkcv_camera_lib}/glm)
list(APPEND vkcv_camera_includes ${vkcv_camera_lib_path}/glm)
list(APPEND vkcv_camera_libraries glm)
else()
message(WARNING "GLM is required..! Update the submodules!")
endif ()
endif ()
......
if (EXISTS "${vkcv_gui_lib_path}/imgui")
use_git_submodule("${vkcv_gui_lib_path}/imgui" imgui_status)
if (${imgui_status})
list(APPEND vkcv_imgui_sources ${vkcv_gui_lib_path}/imgui/backends/imgui_impl_glfw.cpp)
list(APPEND vkcv_imgui_sources ${vkcv_gui_lib_path}/imgui/backends/imgui_impl_glfw.h)
list(APPEND vkcv_imgui_sources ${vkcv_gui_lib_path}/imgui/backends/imgui_impl_vulkan.cpp)
......@@ -22,6 +24,4 @@ if (EXISTS "${vkcv_gui_lib_path}/imgui")
list(APPEND vkcv_gui_include ${vkcv_gui_lib})
list(APPEND vkcv_gui_defines IMGUI_DISABLE_WIN32_FUNCTIONS=1)
else()
message(WARNING "IMGUI is required..! Update the submodules!")
endif ()
if (EXISTS "${vkcv_shader_compiler_lib_path}/glslang")
use_git_submodule("${vkcv_shader_compiler_lib_path}/glslang" glslang_status)
if (${glslang_status})
set(SKIP_GLSLANG_INSTALL ON CACHE INTERNAL "")
set(ENABLE_SPVREMAPPER OFF CACHE INTERNAL "")
set(ENABLE_GLSLANG_BINARIES OFF CACHE INTERNAL "")
......@@ -23,6 +25,4 @@ if (EXISTS "${vkcv_shader_compiler_lib_path}/glslang")
list(APPEND vkcv_shader_compiler_libraries glslang SPIRV)
list(APPEND vkcv_shader_compiler_includes ${vkcv_shader_compiler_lib})
else()
message(WARNING "GLSLANG is required..! Update the submodules!")
endif ()
if (EXISTS "${vkcv_upscaling_lib_path}/FidelityFX-FSR")
use_git_submodule("${vkcv_upscaling_lib_path}/FidelityFX-FSR" ffx_fsr_status)
if (${ffx_fsr_status})
include_shader(${vkcv_upscaling_lib_path}/FidelityFX-FSR/ffx-fsr/ffx_a.h ${vkcv_upscaling_include} ${vkcv_upscaling_source})
include_shader(${vkcv_upscaling_lib_path}/FidelityFX-FSR/ffx-fsr/ffx_fsr1.h ${vkcv_upscaling_include} ${vkcv_upscaling_source})
include_shader(${vkcv_upscaling_lib_path}/FidelityFX-FSR/sample/src/VK/FSR_Pass.glsl ${vkcv_upscaling_include} ${vkcv_upscaling_source})
......@@ -13,6 +15,4 @@ if (EXISTS "${vkcv_upscaling_lib_path}/FidelityFX-FSR")
list(APPEND vkcv_upscaling_sources ${vkcv_upscaling_include}/ffx_a.h.hxx)
list(APPEND vkcv_upscaling_sources ${vkcv_upscaling_include}/ffx_fsr1.h.hxx)
list(APPEND vkcv_upscaling_sources ${vkcv_upscaling_include}/FSR_Pass.glsl.hxx)
else()
message(WARNING "FidelityFX-FSR is required..! Update the submodules!")
endif ()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment