62 lines
1.7 KiB
CMake
62 lines
1.7 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
project(xrealAirLibrary C)
|
|
|
|
set(CMAKE_C_STANDARD 17)
|
|
|
|
find_package(json-c REQUIRED CONFIG)
|
|
|
|
add_subdirectory(modules/hidapi)
|
|
add_subdirectory(modules/Fusion/Fusion)
|
|
|
|
set(PROTOCOL_SOURCES src/imu_protocol_hid.c)
|
|
|
|
# Conditionally include xreal_one protocol if header exists
|
|
set(XOD_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/modules/xreal_one_driver")
|
|
set(XOD_HAVE_HEADER OFF)
|
|
if(EXISTS "${XOD_ROOT}/include/xreal_one_driver.h")
|
|
set(XOD_HAVE_HEADER ON)
|
|
list(APPEND PROTOCOL_SOURCES src/imu_protocol_xo.c)
|
|
endif()
|
|
|
|
add_library(
|
|
xrealAirLibrary
|
|
src/crc32.c
|
|
src/device.c
|
|
src/device_imu.c
|
|
src/device_mcu.c
|
|
src/hid_ids.c
|
|
${PROTOCOL_SOURCES}
|
|
)
|
|
|
|
target_compile_options(xrealAirLibrary PRIVATE -fPIC)
|
|
|
|
target_include_directories(xrealAirLibrary
|
|
BEFORE PUBLIC include
|
|
)
|
|
|
|
target_include_directories(xrealAirLibrary
|
|
SYSTEM BEFORE PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/hidapi
|
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/Fusion
|
|
)
|
|
|
|
if(XOD_HAVE_HEADER)
|
|
target_include_directories(xrealAirLibrary SYSTEM BEFORE PRIVATE "${XOD_ROOT}/include")
|
|
endif()
|
|
|
|
target_link_libraries(xrealAirLibrary
|
|
PRIVATE hidapi::hidapi json-c::json-c Fusion m
|
|
)
|
|
|
|
# Optionally bring in xreal_one_driver to satisfy the XO protocol implementation
|
|
if(EXISTS "${XOD_ROOT}/CMakeLists.txt")
|
|
add_subdirectory("${XOD_ROOT}" "${CMAKE_CURRENT_BINARY_DIR}/xreal_one_driver")
|
|
target_link_libraries(xrealAirLibrary PRIVATE xreal_one_driver)
|
|
endif()
|
|
|
|
set(XREAL_AIR_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include PARENT_SCOPE)
|
|
set(XREAL_AIR_LIBRARY xrealAirLibrary PARENT_SCOPE)
|
|
|
|
set(NREAL_AIR_INCLUDE_DIR ${XREAL_AIR_INCLUDE_DIR} PARENT_SCOPE)
|
|
set(NREAL_AIR_LIBRARY ${XREAL_AIR_LIBRARY} PARENT_SCOPE)
|