cmake_minimum_required(VERSION 3.15)
project(FoxgloveWebSocketExamples CXX)

find_package(FlatBuffers REQUIRED)
find_package(foxglove-schemas-protobuf CONFIG REQUIRED)
find_package(foxglove-websocket REQUIRED)

FILE(GLOB flatbuffers_schemas "flatbuffers/*.fbs")
build_flatbuffers(
    "${flatbuffers_schemas}" # flatbuffers_schemas
    flatbuffers # schema_include_dirs
    flatbuffers_generated_schemas # custom_target_name
    "" # additional_dependencies
    autogenerated_flatbuffers # generated_includes_dir
    autogenerated_flatbuffers # binary_schemas_dir
    "" # copy_text_schemas_dir
)

add_executable(example_server_protobuf src/example_server_protobuf.cpp)
target_link_libraries(example_server_protobuf
    foxglove-schemas-protobuf::foxglove-schemas-protobuf
    foxglove-websocket::foxglove-websocket
)

add_executable(example_server_flatbuffers src/example_server_flatbuffers.cpp ${flatbuffer_sources})
add_dependencies(example_server_flatbuffers flatbuffers_generated_schemas)
target_link_libraries(example_server_flatbuffers foxglove-websocket::foxglove-websocket flatbuffers::flatbuffers)

add_executable(example_server_json src/example_server_json.cpp)
target_link_libraries(example_server_json foxglove-websocket::foxglove-websocket)

find_package(Boost COMPONENTS program_options REQUIRED)
add_executable(example_server_perf_test src/example_server_perf_test.cpp)
target_link_libraries(example_server_perf_test foxglove-websocket::foxglove-websocket Boost::program_options)
add_executable(example_client_perf_test src/example_client_perf_test.cpp)
target_link_libraries(example_client_perf_test foxglove-websocket::foxglove-websocket Boost::program_options)