27b43c6686
We added a new centralized OpenCL Compute manager. This can later be extended to support CUDA, SyCL, etc. SMO can be configured at build time to choose which API it will use for compute. Moreover, the ComputeMgr allows us to register buffers which are available to all cl_contexts.
59 lines
1.6 KiB
CMake
59 lines
1.6 KiB
CMake
cmake_dependent_option(ENABLE_STIMBUFFAPI_livoxGen1
|
|
"Enable Livox Gen1 LiDAR stim buff API" ON
|
|
"ENABLE_LIB_livoxProto1" OFF)
|
|
|
|
if(ENABLE_STIMBUFFAPI_livoxGen1)
|
|
# Set CONFIG variable for config.h
|
|
set(CONFIG_STIMBUFFAPI_LIVOXGEN1_ENABLED 1)
|
|
|
|
# Find liburing using pkg-config
|
|
pkg_check_modules(URING REQUIRED liburing)
|
|
|
|
# Enable assembly language
|
|
enable_language(ASM)
|
|
|
|
add_library(livoxGen1 SHARED
|
|
livoxGen1.cpp
|
|
pcloudStimulusProducer.cpp
|
|
ioUringAssemblyEngine.cpp
|
|
openClCollatingAndMeshingEngine.cpp
|
|
openClKernels.cl.S
|
|
)
|
|
|
|
# Set assembler working directory so .incbin can find the .cl file
|
|
# Also declare dependency on collateDgrams.cl and slotCompactor.cl
|
|
set_source_files_properties(openClKernels.cl.S PROPERTIES
|
|
COMPILE_FLAGS "-I${CMAKE_CURRENT_SOURCE_DIR}"
|
|
OBJECT_DEPENDS
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/collateDgrams.cl;${CMAKE_CURRENT_SOURCE_DIR}/slotCompactor.cl"
|
|
)
|
|
|
|
target_include_directories(livoxGen1 PUBLIC
|
|
${Boost_INCLUDE_DIRS}
|
|
${CMAKE_SOURCE_DIR}/commonLibs
|
|
${URING_INCLUDE_DIRS}
|
|
${OPENCL_INCLUDE_DIRS}
|
|
)
|
|
target_link_libraries(livoxGen1 PUBLIC
|
|
Boost::system
|
|
Boost::log
|
|
${URING_LIBRARIES}
|
|
${OPENCL_LIBRARIES}
|
|
attachmentSupport
|
|
)
|
|
target_link_directories(livoxGen1 PUBLIC
|
|
${URING_LIBRARY_DIRS}
|
|
${OPENCL_LIBRARY_DIRS}
|
|
)
|
|
|
|
# Verify Boost dynamic dependencies after build
|
|
add_custom_command(TARGET livoxGen1 POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -DVERIFY_FILE="$<TARGET_FILE:livoxGen1>"
|
|
-P ${CMAKE_SOURCE_DIR}/cmake/VerifyBoostDynamic.cmake
|
|
COMMENT "Verifying Boost dynamic dependencies for livoxGen1"
|
|
)
|
|
|
|
# Install rules
|
|
install(TARGETS livoxGen1 DESTINATION lib)
|
|
endif()
|