include_guard(GLOBAL) block() set(freetype_opts) _register_git_cmake_library(render_3D::freetype https://github.com/freetype/freetype.git VER-2-13-3 ) rcl_get_effective_install_dir(render_3D::freetype FREETYPE_ROOT) set(FREETYPE_INCLUDE_DIRS "${FREETYPE_ROOT}/include/freetype2") set(FREETYPE_INCLUDE_DIR_ft2build "${FREETYPE_ROOT}/include/freetype2") set(FREETYPE_INCLUDE_DIR_freetype2 "${FREETYPE_ROOT}/include/freetype2") if (CMAKE_BUILD_TYPE STREQUAL "Debug") set(FREETYPE_LIBRARY "${FREETYPE_ROOT}/lib/freetyped.lib") else () set(FREETYPE_LIBRARY "${FREETYPE_ROOT}/lib/freetype.lib") endif () rcl_cmake_library_set_cmake_options(render_3D::freetype ${freetype_opts}) rcl_cmake_library_set_other_use_opt(render_3D::freetype "-DFREETYPE_INCLUDE_DIRS=\"${FREETYPE_INCLUDE_DIRS}\"" "-DFREETYPE_INCLUDE_DIR_ft2build=\"${FREETYPE_INCLUDE_DIR_ft2build}\"" "-DFREETYPE_INCLUDE_DIR_freetype2=\"${FREETYPE_INCLUDE_DIR_freetype2}\"" "-DFREETYPE_LIBRARY=\"${FREETYPE_LIBRARY}\"" "-DFREETYPE_LIBRARIES=\"${FREETYPE_LIBRARY}\"" ) rcl_cmake_library_set_init_script(render_3D::freetype "set(FREETYPE_ROOT \"${FREETYPE_ROOT}\")" "set(FREETYPE_INCLUDE_DIRS \"${FREETYPE_INCLUDE_DIRS}\")" "set(FREETYPE_INCLUDE_DIR_ft2build \"${FREETYPE_INCLUDE_DIR_ft2build}\")" "set(FREETYPE_INCLUDE_DIR_freetype2 \"${FREETYPE_INCLUDE_DIR_freetype2}\")" "set(FREETYPE_LIBRARY \"${FREETYPE_LIBRARY}\")" "set(FREETYPE_LIBRARIES \"${FREETYPE_LIBRARY}\")" ) rcl_cmake_library_set_clear_script(render_3D::freetype "unset(FREETYPE_ROOT)" "unset(FREETYPE_INCLUDE_DIRS)" "unset(FREETYPE_INCLUDE_DIR_ft2build)" "unset(FREETYPE_INCLUDE_DIR_freetype2)" "unset(FREETYPE_LIBRARY)" "unset(FREETYPE_LIBRARIES)" ) set(tinyxml2_opts -Dtinyxml2_BUILD_TESTING=OFF -Dtinyxml2_INSTALL_PKGCONFIG=OFF -Dtinyxml2_SHARED_LIBS=OFF -Dtinyxml2_INSTALL_CMAKEDIR=lib/cmake/tinyxml2 ) _register_git_cmake_library(render_3D::tinyxml2 "https://github.com/leethomason/tinyxml2.git" "11.0.0" ) rcl_get_effective_install_dir(render_3D::tinyxml2 TINYXML2_ROOT) set(TINYXML2_CONFIG_DIR "${TINYXML2_ROOT}/lib/cmake/tinyxml2") rcl_cmake_library_set_cmake_options(render_3D::tinyxml2 ${tinyxml2_opts}) rcl_cmake_library_set_other_use_opt(render_3D::tinyxml2 "-Dtinyxml2_DIR=\"${TINYXML2_CONFIG_DIR}\"" ) rcl_cmake_library_set_init_script(render_3D::tinyxml2 "set(TINYXML2_ROOT \"${TINYXML2_ROOT}\")" "set(tinyxml2_DIR \"${TINYXML2_CONFIG_DIR}\")" ) rcl_cmake_library_set_clear_script(render_3D::tinyxml2 "unset(TINYXML2_ROOT)" "unset(tinyxml2_DIR)" ) set(msdfgen_cmake_option ${base_options}) list(APPEND msdfgen_cmake_option -DMSDFGEN_USE_SKIA=OFF -DMSDFGEN_USE_VCPKG=OFF -DBUILD_SHARED_LIBS=ON -DMSDFGEN_DYNAMIC_RUNTIME=ON -DMSDFGEN_INSTALL=ON ) _register_git_cmake_library(render_3D::msdfgen https://github.com/Chlumsky/msdfgen.git v1.12 ) rcl_get_effective_install_dir(render_3D::msdfgen MSDFGEN_ROOT) set(MSDFGEN_CONFIG_DIR "${MSDFGEN_ROOT}/lib/cmake/msdfgen") rcl_cmake_library_set_cmake_options(render_3D::msdfgen ${msdfgen_cmake_option}) rcl_cmake_library_set_deps(render_3D::msdfgen global::zlib global::libpng render_3D::freetype render_3D::tinyxml2 ) rcl_cmake_library_set_other_use_opt(render_3D::msdfgen "-Dmsdfgen_DIR=\"${MSDFGEN_CONFIG_DIR}\"" ) rcl_cmake_library_set_init_script(render_3D::msdfgen "set(MSDFGEN_ROOT \"${MSDFGEN_ROOT}\")" "set(msdfgen_DIR \"${MSDFGEN_CONFIG_DIR}\")" ) rcl_cmake_library_set_clear_script(render_3D::msdfgen "unset(MSDFGEN_ROOT)" "unset(msdfgen_DIR)" ) set(msdfgl_cmake_option "") if (WIN32) _register_git_cmake_library(render_3D::PThreads4W https://github.com/jwinarske/pthreads4w.git "cmake" ) rcl_get_effective_install_dir(render_3D::PThreads4W PTHREADS4W_ROOT) set(PThreads4W_option ${base_options}) list(APPEND PThreads4W_option "-DDIST_ROOT=${PTHREADS4W_ROOT}" "-DCMAKE_C_FLAGS=-D_WINDLL" "-DCMAKE_CXX_FLAGS=-D_WINDLL" ) rcl_cmake_library_set_cmake_options(render_3D::PThreads4W ${PThreads4W_option}) rcl_cmake_library_set_init_script(render_3D::PThreads4W "set(PTHREADS4W_ROOT \"${PTHREADS4W_ROOT}\")" ) rcl_cmake_library_set_clear_script(render_3D::PThreads4W "unset(PTHREADS4W_ROOT)" ) endif () set(glfw3_option ${base_options}) _register_git_cmake_library(render_3D::glfw3 https://github.com/glfw/glfw.git "3.4" ) rcl_get_effective_install_dir(render_3D::glfw3 GLFW3_ROOT) rcl_cmake_library_set_cmake_options(render_3D::glfw3 ${glfw3_option}) set(msdf-atlas-gen_option ${base_options}) list(APPEND msdf-atlas-gen_option -DMSDFGEN_DISABLE_SVG=OFF -DMSDFGEN_USE_SKIA=OFF -DMSDF_ATLAS_BUILD_STANDALONE=OFF -DMSDF_ATLAS_USE_VCPKG=OFF -DMSDF_ATLAS_USE_SKIA=OFF -DMSDF_ATLAS_DYNAMIC_RUNTIME=ON -DMSDF_ATLAS_MSDFGEN_EXTERNAL=OFF -DMSDF_ATLAS_INSTALL=ON -DMSDFGEN_INSTALL=ON -DBUILD_SHARED_LIBS=OFF ) _register_git_cmake_library(render_3D::msdf-atlas-gen https://github.com/Chlumsky/msdf-atlas-gen.git v1.4 ) rcl_get_effective_install_dir(render_3D::msdf-atlas-gen MSDF_ATLAS_GEN_ROOT) set(MSDF_ATLAS_GEN_CONFIG_DIR "${MSDF_ATLAS_GEN_ROOT}/lib/cmake/msdf-atlas-gen") set(MSDF_ATLAS_GEN_MSDFGEN_CONFIG_DIR "${MSDF_ATLAS_GEN_ROOT}/lib/cmake/msdfgen") rcl_cmake_library_set_cmake_options(render_3D::msdf-atlas-gen ${msdf-atlas-gen_option}) rcl_cmake_library_set_deps(render_3D::msdf-atlas-gen global::zlib global::libpng render_3D::freetype render_3D::tinyxml2 ) rcl_cmake_library_set_other_use_opt(render_3D::msdf-atlas-gen "-Dmsdf-atlas-gen_DIR=\"${MSDF_ATLAS_GEN_CONFIG_DIR}\"" "-Dmsdfgen_DIR=\"${MSDF_ATLAS_GEN_MSDFGEN_CONFIG_DIR}\"" ) rcl_cmake_library_set_init_script(render_3D::msdf-atlas-gen "set(MSDF_ATLAS_GEN_ROOT \"${MSDF_ATLAS_GEN_ROOT}\")" "set(msdf-atlas-gen_DIR \"${MSDF_ATLAS_GEN_CONFIG_DIR}\")" "set(msdfgen_DIR \"${MSDF_ATLAS_GEN_MSDFGEN_CONFIG_DIR}\")" ) rcl_cmake_library_set_clear_script(render_3D::msdf-atlas-gen "unset(MSDF_ATLAS_GEN_ROOT)" "unset(msdf-atlas-gen_DIR)" "unset(msdfgen_DIR)" ) set(cglm_option ${base_options}) _register_git_cmake_library(render_3D::cglm "https://github.com/recp/cglm.git" v0.9.6 ) rcl_get_effective_install_dir(render_3D::cglm CGLM_ROOT) rcl_cmake_library_set_cmake_options(render_3D::cglm ${cglm_option}) set(glm_option ${base_options}) _register_git_cmake_library(render_3D::glm "https://github.com/g-truc/glm.git" "1.0.3" ) rcl_get_effective_install_dir(render_3D::glm GLM_ROOT) rcl_cmake_library_set_cmake_options(render_3D::glm ${glm_option}) set(tinyobjloader_option ${base_options}) list(APPEND tinyobjloader_option -DCMAKE_POLICY_VERSION_MINIMUM=3.20 ) _register_git_cmake_library(render_3D::tinyobjloader "https://github.com/tinyobjloader/tinyobjloader.git" "v1.0.7" ) rcl_get_effective_install_dir(render_3D::tinyobjloader TINYOBJLOADER_ROOT) rcl_cmake_library_set_cmake_options(render_3D::tinyobjloader ${tinyobjloader_option}) set(vk-bootstrap_option ${base_options}) _register_git_cmake_library(render_3D::vk-bootstrap "https://github.com/charles-lunarg/vk-bootstrap.git" "v1.4.357" ) rcl_get_effective_install_dir(render_3D::vk-bootstrap VK_BOOTSTRAP_ROOT) rcl_cmake_library_set_cmake_options(render_3D::vk-bootstrap ${vk-bootstrap_option}) set(Vulkan-Hpp_option ${base_options}) _register_git_cmake_library(render_3D::Vulkan-Hpp "https://github.com/KhronosGroup/Vulkan-Hpp.git" "v1.4.357" ) rcl_get_effective_install_dir(render_3D::Vulkan-Hpp VULKAN_HPP_ROOT) rcl_cmake_library_set_cmake_options(render_3D::Vulkan-Hpp ${Vulkan-Hpp_option}) find_package(Vulkan QUIET) if (NOT Vulkan_FOUND AND WIN32) if (DEFINED ENV{VK_SDK_PATH} AND NOT "$ENV{VK_SDK_PATH}" STREQUAL "") set(ENV{VULKAN_SDK} "$ENV{VK_SDK_PATH}") else () file(GLOB _vulkan_sdk_roots LIST_DIRECTORIES true "C:/VulkanSDK/*") list(SORT _vulkan_sdk_roots COMPARE NATURAL ORDER DESCENDING) foreach (_vulkan_sdk_root IN LISTS _vulkan_sdk_roots) if (EXISTS "${_vulkan_sdk_root}/Include/vulkan/vulkan.h" AND EXISTS "${_vulkan_sdk_root}/Lib/vulkan-1.lib") set(ENV{VULKAN_SDK} "${_vulkan_sdk_root}") break() endif () endforeach () endif () find_package(Vulkan REQUIRED) elseif (NOT Vulkan_FOUND) find_package(Vulkan REQUIRED) endif () get_filename_component(VULKAN_SDK_ROOT "${Vulkan_INCLUDE_DIR}" DIRECTORY) set(volk_option ${base_options}) list(APPEND volk_option -DVOLK_INSTALL=ON -DVOLK_PULL_IN_VULKAN=ON -DVOLK_HEADERS_ONLY=OFF -DVOLK_NAMESPACE=OFF "-DVULKAN_HEADERS_INSTALL_DIR=${VULKAN_SDK_ROOT}" ) if (WIN32) list(APPEND volk_option -DVOLK_STATIC_DEFINES=VK_USE_PLATFORM_WIN32_KHR ) endif () _register_git_cmake_library(render_3D::volk "https://github.com/zeux/volk.git" "vulkan-sdk-1.4.357.0" ) rcl_get_effective_install_dir(render_3D::volk VOLK_ROOT) set(VOLK_CONFIG_DIR "${VOLK_ROOT}/lib/cmake/volk") rcl_cmake_library_set_cmake_options(render_3D::volk ${volk_option}) rcl_cmake_library_set_other_use_opt(render_3D::volk "-Dvolk_DIR=\"${VOLK_CONFIG_DIR}\"" ) rcl_cmake_library_set_init_script(render_3D::volk "set(VOLK_ROOT \"${VOLK_ROOT}\")" "set(volk_DIR \"${VOLK_CONFIG_DIR}\")" ) rcl_cmake_library_set_clear_script(render_3D::volk "unset(VOLK_ROOT)" "unset(volk_DIR)" ) set(VulkanMemoryAllocator_option ${base_options}) _register_git_cmake_library(render_3D::VulkanMemoryAllocator "https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git" "v3.3.0" ) rcl_get_effective_install_dir(render_3D::VulkanMemoryAllocator VULKAN_MEMORY_ALLOCATOR_ROOT) rcl_cmake_library_set_cmake_options(render_3D::VulkanMemoryAllocator ${VulkanMemoryAllocator_option}) set(tinygltf_option ${base_options}) _register_git_cmake_library(render_3D::tinygltf "https://github.com/syoyo/tinygltf.git" "v3.0.0" ) rcl_get_effective_install_dir(render_3D::tinygltf TINYGLTF_ROOT) rcl_cmake_library_set_cmake_options(render_3D::tinygltf ${tinygltf_option}) set(fastgltf_option ${base_options}) _register_git_cmake_library(render_3D::fastgltf "https://github.com/spnda/fastgltf.git" "v0.9.0" ) rcl_get_effective_install_dir(render_3D::fastgltf FASTGLTF_ROOT) rcl_cmake_library_set_cmake_options(render_3D::fastgltf ${fastgltf_option}) set(VulkanSceneGraph_option ${base_options}) _register_git_cmake_library(render_3D::VulkanSceneGraph "https://github.com/vsg-dev/VulkanSceneGraph.git" "v1.1.15" ) rcl_get_effective_install_dir(render_3D::VulkanSceneGraph VULKAN_SCENE_GRAPH_ROOT) rcl_cmake_library_set_cmake_options(render_3D::VulkanSceneGraph ${VulkanSceneGraph_option}) endblock()