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)

	# Find OpenCL: try find_package first, fall back to pkg-config
	find_package(OpenCL QUIET)
	if(OpenCL_FOUND)
		# Normalize find_package variables to match pkg_check_modules naming
		set(OPENCL_FOUND TRUE)
		set(OPENCL_INCLUDE_DIRS ${OpenCL_INCLUDE_DIRS})
		# Handle both OpenCL_LIBRARY (singular) and OpenCL_LIBRARIES (plural)
		if(OpenCL_LIBRARIES)
			set(OPENCL_LIBRARIES ${OpenCL_LIBRARIES})
		else()
			set(OPENCL_LIBRARIES ${OpenCL_LIBRARY})
		endif()
		set(OPENCL_LIBRARY_DIRS "")
		message(STATUS "Found OpenCL using find_package")
	else()
		# Fall back to pkg-config
		pkg_check_modules(OPENCL OpenCL)
		if(NOT OPENCL_FOUND)
			message(FATAL_ERROR
				"Failed to find OpenCL: both find_package and "
				"pkg_check_modules failed. Try installing the "
				"'ocl-icd-opencl-dev' package (or the appropriate "
				"OpenCL development package for your system)."
			)
		endif()
		message(STATUS "Found OpenCL using pkg-config")
	endif()

	add_library(livoxGen1 SHARED
		livoxGen1.cpp
		stagingBuffer.cpp
		pcloudStimulusBuffer.cpp
		ioUringAssemblyEngine.cpp
		openClCollatingAndMeshingEngine.cpp
	)

	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()
