# SPDX-License-Identifier: Apache-2.0
foreach(target wirelink calculator_codec calculator_protocol)
  set_property(TARGET ${target} PROPERTY POSITION_INDEPENDENT_CODE ON)
endforeach()
set_property(TARGET wirelink_loopback PROPERTY POSITION_INDEPENDENT_CODE ON)
add_library(wirelink_clock_bridge SHARED bridge.c native_clock.cpp)
target_compile_definitions(wirelink_clock_bridge PRIVATE CLOCK_BRIDGE_BUILD)
target_link_libraries(wirelink_clock_bridge PRIVATE calculator_protocol Wirelink::loopback)
target_compile_features(wirelink_clock_bridge PRIVATE cxx_std_20)
target_include_directories(wirelink_clock_bridge PRIVATE ../../runtime/host/include)
add_executable(wirelink_clock_bridge_cpp consumer.cpp)
target_compile_features(wirelink_clock_bridge_cpp PRIVATE cxx_std_20)
target_link_libraries(wirelink_clock_bridge_cpp PRIVATE wirelink_clock_bridge)
add_test(NAME wirelink_clock_bridge_cpp COMMAND wirelink_clock_bridge_cpp)
add_test(NAME wirelink_clock_bridge_python
  COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/consumer.py
    $<TARGET_FILE:wirelink_clock_bridge>)
set_tests_properties(wirelink_clock_bridge_cpp wirelink_clock_bridge_python PROPERTIES TIMEOUT 10)
add_executable(wirelink_clock_benchmark benchmark.cpp)
target_link_libraries(wirelink_clock_benchmark PRIVATE telemetry_protocol)
target_compile_features(wirelink_clock_benchmark PRIVATE cxx_std_20)
target_include_directories(wirelink_clock_benchmark PRIVATE ../../runtime/host/include)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
  foreach(target wirelink_clock_bridge wirelink_clock_bridge_cpp wirelink_clock_benchmark)
    target_compile_options(${target} PRIVATE -Wall -Wextra -Wpedantic)
  endforeach()
endif()
