File CMakeLists.txt
Go to the documentation of this file
if(NOT ANDROID)
add_compile_definitions(VK_USE_PLATFORM_XLIB_KHR)
if(WIN32 OR MSVC)
set(EXE_NAME main${ILLIXR_BUILD_SUFFIX})
else()
set(EXE_NAME main${ILLIXR_BUILD_SUFFIX}.exe)
endif()
set(VULKAN_FILES
src/display/x11_direct.hpp
src/display/x11_direct.cpp
src/display/glfw_extended.hpp
src/display/glfw_extended.cpp
src/display/headless.hpp
src/display/headless.cpp
${CMAKE_SOURCE_DIR}/include/illixr/vk/vk_extension_request.hpp
${CMAKE_SOURCE_DIR}/include/illixr/vk/vulkan_objects.hpp
)
add_executable(${EXE_NAME}
src/main.cpp
src/illixr.hpp
src/cxxopts.hpp
${CMAKE_SOURCE_DIR}/include/illixr/runtime.hpp
${CMAKE_SOURCE_DIR}/include/illixr/phonebook.hpp
)
add_library(plugin.main${ILLIXR_BUILD_SUFFIX} SHARED
src/plugin.cpp
src/runtime_impl.cpp
src/illixr.hpp
src/cxxopts.hpp
src/vulkan_display.hpp
${CMAKE_SOURCE_DIR}/include/illixr/runtime.hpp
${CMAKE_SOURCE_DIR}/include/illixr/phonebook.hpp
${VULKAN_FILES}
$<TARGET_OBJECTS:illixr_vulkan_utils>
)
if(WIN32 OR MSVC)
target_compile_definitions(plugin.main${ILLIXR_BUILD_SUFFIX} PRIVATE BUILDING_LIBRARY)
target_compile_options(plugin.main${ILLIXR_BUILD_SUFFIX} PRIVATE /EHsc)
target_compile_options(${EXE_NAME} PRIVATE /EHsc)
endif()
##############
# yaml parser
##############
if(BUILD_OXR_INTERFACE)
target_compile_definitions(plugin.main${ILLIXR_BUILD_SUFFIX} PUBLIC -DOXR_INTERFACE)
endif()
get_external(Yamlcpp)
target_compile_definitions(plugin.main${ILLIXR_BUILD_SUFFIX} PRIVATE ILLIXR_INSTALL_PATH="${CMAKE_INSTALL_PREFIX}")
target_include_directories(plugin.main${ILLIXR_BUILD_SUFFIX} PUBLIC
${SQLite3_INCLUDE_DIR}
${yaml-cpp_INCLUDE_DIRS}
#${X11_INCLUDE_DIR}
${CMAKE_BINARY_DIR}/vcpkg_installed/x64-windows/include
${CMAKE_SOURCE_DIR}/include
)
target_link_directories(plugin.main${ILLIXR_BUILD_SUFFIX} PUBLIC
${CMAKE_BINARY_DIR}/vcpkg_installed/x64-windows/lib
)
target_link_libraries(plugin.main${ILLIXR_BUILD_SUFFIX} PUBLIC
Threads::Threads
yaml-cpp::yaml-cpp
spdlog::spdlog
${SQLite3_LIBRARIES}
Boost::serialization
X11
glfw
)
if(WIN32 OR MSVC)
target_link_libraries(plugin.main${ILLIXR_BUILD_SUFFIX} PUBLIC
GLEW::GLEW
OpenGL::GL
Vulkan::Vulkan
GPUOpen::VulkanMemoryAllocator
)
else()
if(Vulkan_DEP_STR)
add_dependencies(plugin.main${ILLIXR_BUILD_SUFFIX} ${Vulkan_DEP_STR})
endif()
target_include_directories(plugin.main${ILLIXR_BUILD_SUFFIX} PUBLIC
${Boost_INCLUDE_DIR}
${GLEW_INCLUDE_DIR}
${GLU_INCLUDE_DIR}
${gl_INCLUDE_DIRS}
)
target_link_libraries(plugin.main${ILLIXR_BUILD_SUFFIX} PUBLIC
stdc++fs
dl
${GLEW_LIBRARIES}
${glu_LDFLAGS}
${gl_LIBRARIES}
${Vulkan_LIBRARIES}
)
endif()
target_include_directories(${EXE_NAME} PUBLIC ${CMAKE_SOURCE_DIR}/include)
target_link_libraries(${EXE_NAME} plugin.main${ILLIXR_BUILD_SUFFIX})
install(TARGETS ${EXE_NAME} DESTINATION bin)
install(TARGETS plugin.main${ILLIXR_BUILD_SUFFIX} DESTINATION lib)
else()
if(BUILD_QUEST_UNITY_INTERFACE)
# Unity interface build — no main.cpp, no native_app_glue.
# Mirrors plugin.main on Linux/Windows: exports runtime_factory and
# links against the plugins needed for the Unity scenario.
# Loaded by unity_bridge.so via runtime_factory() call.
add_library(plugin.main${ILLIXR_BUILD_SUFFIX} SHARED
src/illixr.hpp
src/plugin.cpp
src/runtime_impl.cpp
src/no_op_record_logger.hpp
src/sqlite_record_logger.hpp
src/stdout_record_logger.hpp
${CMAKE_SOURCE_DIR}/include/illixr/dynamic_lib.hpp
${CMAKE_SOURCE_DIR}/include/illixr/error_util.hpp
${CMAKE_SOURCE_DIR}/include/illixr/plugin.hpp
${CMAKE_SOURCE_DIR}/include/illixr/relative_clock.hpp
${CMAKE_SOURCE_DIR}/include/illixr/runtime.hpp
${CMAKE_SOURCE_DIR}/include/illixr/stoplight.hpp
${CMAKE_SOURCE_DIR}/include/illixr/switchboard.hpp
)
target_include_directories(plugin.main${ILLIXR_BUILD_SUFFIX} PRIVATE
${ILLIXR_SOURCE_DIR}/include
${jnigraphics-lib}
)
target_link_libraries(plugin.main${ILLIXR_BUILD_SUFFIX} PRIVATE
plugin.tcp_network_backend${ILLIXR_BUILD_SUFFIX}
plugin.quest3.unity${ILLIXR_BUILD_SUFFIX}
android
Eigen3::Eigen
Boost::serialization
spdlog::spdlog_android
)
else()
add_library(native-activity SHARED
src/illixr.hpp
src/main.cpp
src/plugin.cpp
src/runtime_impl.cpp
src/no_op_record_logger.hpp
src/sqlite_record_logger.hpp
src/stdout_record_logger.hpp
${CMAKE_SOURCE_DIR}/include/illixr/dynamic_lib.hpp
${CMAKE_SOURCE_DIR}/include/illixr/error_util.hpp
#${CMAKE_SOURCE_DIR}/include/illixr/extended_window.hpp
${CMAKE_SOURCE_DIR}/include/illixr/plugin.hpp
${CMAKE_SOURCE_DIR}/include/illixr/relative_clock.hpp
${CMAKE_SOURCE_DIR}/include/illixr/runtime.hpp
${CMAKE_SOURCE_DIR}/include/illixr/stoplight.hpp
${CMAKE_SOURCE_DIR}/include/illixr/switchboard.hpp
)
target_include_directories(native-activity PRIVATE
${ILLIXR_SOURCE_DIR}/include
${OpenCV_LIBS}
${jnigraphics-lib}
${ANDROID_NDK}/sources/android/native_app_glue
)
target_link_libraries(native-activity
#plugin.extended_window${ILLIXR_BUILD_SUFFIX}
#OpenVINS_plugin
#plugin.pose_prediction${ILLIXR_BUILD_SUFFIX}
#plugin.pose_lookup${ILLIXR_BUILD_SUFFIX}
#plugin.fauxpose${ILLIXR_BUILD_SUFFIX}
#plugin.common_lock${ILLIXR_BUILD_SUFFIX}
#plugin.timewarp_gl${ILLIXR_BUILD_SUFFIX}
#plugin.rk4_integrator${ILLIXR_BUILD_SUFFIX}
#plugin.offline_imu${ILLIXR_BUILD_SUFFIX}
#plugin.offline_cam${ILLIXR_BUILD_SUFFIX}
#plugin.gtsam_integrator${ILLIXR_BUILD_SUFFIX}
#plugin.gldemo${ILLIXR_BUILD_SUFFIX}
#plugin.android_data${ILLIXR_BUILD_SUFFIX}
plugin.tcp_network_backend${ILLIXR_BUILD_SUFFIX}
plugin.udp_network_backend${ILLIXR_BUILD_SUFFIX}
plugin.network_latency.tx${ILLIXR_BUILD_SUFFIX}
plugin.offload_rendering_client${ILLIXR_BUILD_SUFFIX}
plugin.openxr_interface${ILLIXR_BUILD_SUFFIX}
#plugin.quest3.unity${ILLIXR_BUILD_SUFFIX}
#unity_android_interface${ILLIXR_BUILD_SUFFIX}
android
native_app_glue
EGL
GLESv3
Eigen3::Eigen
Boost::serialization
spdlog::spdlog_android
)
endif()
endif()