nrealAirLinuxDriver/interface_lib/CMakeLists.txt

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)