mirror of
https://github.com/hyblocker/OpenVR-SpaceCalibrator.git
synced 2026-10-17 15:00:46 +02:00
148 lines
6.2 KiB
CMake
148 lines
6.2 KiB
CMake
cmake_minimum_required (VERSION 3.24)
|
|
|
|
project("vendor")
|
|
|
|
# Includes all 3rd party libraries here
|
|
|
|
# Minhook library
|
|
if (WIN32)
|
|
message("Adding minhook...")
|
|
add_subdirectory ("minhook")
|
|
endif()
|
|
|
|
# glad
|
|
message("Adding glad...")
|
|
add_library(glad STATIC
|
|
${CMAKE_SOURCE_DIR}/vendor/glad/src/glad.c
|
|
${CMAKE_SOURCE_DIR}/vendor/glad/include/glad/glad.h
|
|
${CMAKE_SOURCE_DIR}/vendor/glad/include/KHR/khrplatform.h)
|
|
target_include_directories(glad PUBLIC ${CMAKE_SOURCE_DIR}/vendor/glad/include)
|
|
|
|
# GLFW
|
|
message("Adding GLFW...")
|
|
set(GLFW_BUILD_TESTS OFF)
|
|
set(GLFW_BUILD_EXAMPLES OFF)
|
|
set(GLFW_BUILD_DOCS OFF)
|
|
set(GLFW_INSTALL OFF)
|
|
set(BUILD_SHARED_LIBS OFF)
|
|
add_subdirectory(glfw)
|
|
|
|
# Dear ImGui
|
|
message("Adding ImGui...")
|
|
add_library(imgui STATIC
|
|
${CMAKE_SOURCE_DIR}/vendor/imgui/imgui.cpp
|
|
${CMAKE_SOURCE_DIR}/vendor/imgui/imgui_demo.cpp
|
|
${CMAKE_SOURCE_DIR}/vendor/imgui/imgui_draw.cpp
|
|
${CMAKE_SOURCE_DIR}/vendor/imgui/imgui_tables.cpp
|
|
${CMAKE_SOURCE_DIR}/vendor/imgui/imgui_widgets.cpp)
|
|
target_include_directories(imgui PUBLIC ${CMAKE_SOURCE_DIR}/vendor/imgui)
|
|
target_compile_definitions(imgui PRIVATE IMGUI_DEFINE_MATH_OPERATORS)
|
|
|
|
# ImPlot
|
|
message("Adding ImPlot...")
|
|
add_library(implot STATIC
|
|
${CMAKE_SOURCE_DIR}/vendor/implot/implot.cpp
|
|
${CMAKE_SOURCE_DIR}/vendor/implot/implot_demo.cpp
|
|
${CMAKE_SOURCE_DIR}/vendor/implot/implot_items.cpp)
|
|
target_include_directories(implot
|
|
PUBLIC ${CMAKE_SOURCE_DIR}/vendor/imgui
|
|
PUBLIC ${CMAKE_SOURCE_DIR}/vendor/implot)
|
|
target_compile_definitions(implot PRIVATE IMGUI_DEFINE_MATH_OPERATORS)
|
|
target_link_libraries(implot PRIVATE imgui)
|
|
|
|
# ImPlot3D
|
|
message("Adding ImPlot3D...")
|
|
add_library(implot3d STATIC
|
|
${CMAKE_SOURCE_DIR}/vendor/implot3d/implot3d.cpp
|
|
${CMAKE_SOURCE_DIR}/vendor/implot3d/implot3d_items.cpp
|
|
${CMAKE_SOURCE_DIR}/vendor/implot3d/implot3d_demo.cpp
|
|
${CMAKE_SOURCE_DIR}/vendor/implot3d/implot3d_meshes.cpp)
|
|
target_include_directories(implot3d
|
|
PUBLIC ${CMAKE_SOURCE_DIR}/vendor/imgui
|
|
PUBLIC ${CMAKE_SOURCE_DIR}/vendor/implot3d)
|
|
target_compile_definitions(implot3d PRIVATE IMGUI_DEFINE_MATH_OPERATORS)
|
|
target_link_libraries(implot3d PRIVATE imgui)
|
|
|
|
# fmt
|
|
message("Adding fmt...")
|
|
set(BUILD_SHARED_LIBS FALSE)
|
|
add_subdirectory(fmt)
|
|
|
|
# quill
|
|
message("Adding quill...")
|
|
set(QUILL_NO_EXCEPTIONS ON CACHE BOOL "Enable this option to build without exception handling support." FORCE)
|
|
set(QUILL_X86ARCH OFF CACHE BOOL "Enable x86-specific optimizations for cache coherence using _mm_prefetch, _mm_clflush, and _mm_clflushopt instructions. Ensure the target architecture must also be specified with -march=\"...\" when enabling this option." FORCE)
|
|
set(QUILL_DISABLE_NON_PREFIXED_MACROS ON CACHE BOOL "Enable this option to disable non-prefixed `LOG_*` macros, keeping only the `QUILL_LOG_*` macros to avoid conflicts with other logging libraries." FORCE)
|
|
add_subdirectory(quill)
|
|
|
|
# glaze
|
|
message ("Adding glaze...")
|
|
add_subdirectory(glaze)
|
|
|
|
# vulkan headers
|
|
message ("Adding Vulkan-Headers...")
|
|
add_subdirectory(Vulkan-Headers)
|
|
|
|
# volk (Vulkan loader)
|
|
message ("Adding volk...")
|
|
add_subdirectory(volk)
|
|
|
|
# simpleble (for base station management)
|
|
|
|
# base stations have a quirk where the hardware *LIES* about what its capable of. SimpleBLE naiively trusts
|
|
# them and doesn't let you actually talk to the base stations to turn them off!
|
|
# we need to patch SimpleBLE to remove the characteristic check before doing GATT operations to actually
|
|
# be able to do power management. this is a library design fault and hopefully will be addressed upstream.
|
|
message ("Adding SimpleBLE...")
|
|
set(SIMPLEBLE_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/simpleble")
|
|
set(SIMPLEBLE_PATCHED_DIR "${CMAKE_CURRENT_BINARY_DIR}/patched_submodules/simpleble")
|
|
set(SIMPLEBLE_PATCH_FILE "${CMAKE_SOURCE_DIR}/vendor/simpleble-base-station-fix.patch")
|
|
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${SIMPLEBLE_PATCH_FILE}")
|
|
file(COPY "${SIMPLEBLE_SRC_DIR}/" DESTINATION "${SIMPLEBLE_PATCHED_DIR}")
|
|
file(REMOVE "${SIMPLEBLE_PATCHED_DIR}/.git")
|
|
file(RELATIVE_PATH SIMPLEBLE_REL_DIR "${CMAKE_SOURCE_DIR}" "${SIMPLEBLE_PATCHED_DIR}")
|
|
execute_process(
|
|
COMMAND git apply -p1 --directory=${SIMPLEBLE_REL_DIR} --verbose --no-index --ignore-space-change --ignore-whitespace --whitespace=fix "${SIMPLEBLE_PATCH_FILE}"
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
|
RESULT_VARIABLE PATCH_APPLY_RESULT
|
|
OUTPUT_VARIABLE PATCH_APPLY_OUT
|
|
ERROR_VARIABLE PATCH_APPLY_ERR
|
|
)
|
|
if(NOT PATCH_APPLY_RESULT EQUAL 0)
|
|
message(FATAL_ERROR "Failed to apply SimpleBLE patch:\n${PATCH_APPLY_OUT}\n${PATCH_APPLY_ERR}")
|
|
endif()
|
|
set(LIBFMT_GIT_TAG "12.2.0")
|
|
set(SIMPLEBLE_INSTALL OFF CACHE BOOL "" FORCE)
|
|
set(LIBFMT_VENDORIZE ON CACHE BOOL "" FORCE)
|
|
set(LIBFMT_LOCAL_PATH "${CMAKE_CURRENT_SOURCE_DIR}/fmt" CACHE PATH "" FORCE)
|
|
add_subdirectory("${SIMPLEBLE_PATCHED_DIR}/simplecble" "${CMAKE_CURRENT_BINARY_DIR}/simplecble_build")
|
|
target_compile_definitions(simpleble PRIVATE _SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING FMT_DEPRECATED_HEAVY_CORE)
|
|
target_compile_definitions(simplecble PRIVATE _SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING FMT_DEPRECATED_HEAVY_CORE)
|
|
# make simpleble use static fmt
|
|
get_target_property(SIMPLEBLE_DEFS simpleble COMPILE_DEFINITIONS)
|
|
if(SIMPLEBLE_DEFS)
|
|
list(REMOVE_ITEM SIMPLEBLE_DEFS "FMT_HEADER_ONLY")
|
|
set_target_properties(simpleble PROPERTIES COMPILE_DEFINITIONS "${SIMPLEBLE_DEFS}")
|
|
endif()
|
|
message("Overriding SimpleBLE internal fmt...")
|
|
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/fmt/include/fmt/" DESTINATION "${SIMPLEBLE_PATCHED_DIR}/dependencies/internal/include/fmt")
|
|
target_link_libraries(simpleble PUBLIC fmt::fmt)
|
|
|
|
# Assign solution dirs
|
|
if (WIN32)
|
|
set_property(TARGET glfw PROPERTY FOLDER "vendor/glfw")
|
|
set_property(TARGET update_mappings PROPERTY FOLDER "vendor/glfw")
|
|
|
|
set_property(TARGET simpleble PROPERTY FOLDER "vendor/simpleble")
|
|
set_property(TARGET simplecble PROPERTY FOLDER "vendor/simpleble")
|
|
|
|
set_property(TARGET minhook PROPERTY FOLDER "vendor")
|
|
set_property(TARGET imgui PROPERTY FOLDER "vendor")
|
|
set_property(TARGET implot PROPERTY FOLDER "vendor")
|
|
set_property(TARGET implot3d PROPERTY FOLDER "vendor")
|
|
set_property(TARGET fmt PROPERTY FOLDER "vendor/fmt")
|
|
set_property(TARGET fmt-c PROPERTY FOLDER "vendor/fmt")
|
|
set_property(TARGET quill PROPERTY FOLDER "vendor")
|
|
set_property(TARGET glad PROPERTY FOLDER "vendor")
|
|
set_property(TARGET volk PROPERTY FOLDER "vendor")
|
|
endif() |