add_executable(BenchmarkExample benchmark.cpp)

target_link_libraries(BenchmarkExample PUBLIC PcapPlusPlus::Pcap++)

set_target_properties(BenchmarkExample PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${PCAPPP_BINARY_EXAMPLES_DIR}")

if("cxx_std_14" IN_LIST CMAKE_CXX_COMPILE_FEATURES)
  if(
    (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL CMAKE_SYSTEM_PROCESSOR)
    AND (NOT MINGW)
    AND (NOT CMAKE_OSX_ARCHITECTURES OR (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL CMAKE_OSX_ARCHITECTURES))
  )
    include(FetchContent)

    # Fetch Google Benchmark
    FetchContent_Declare(benchmark GIT_REPOSITORY https://github.com/google/benchmark.git GIT_TAG v1.9.5)

    # Disable testing and installation for Google Benchmark
    set(BENCHMARK_ENABLE_TESTING OFF)
    set(BENCHMARK_ENABLE_INSTALL OFF)
    FetchContent_MakeAvailable(benchmark)

    add_executable(BenchmarkExampleGoogle benchmark-google.cpp)

    target_compile_definitions(BenchmarkExampleGoogle PRIVATE NOMINMAX)

    target_link_libraries(BenchmarkExampleGoogle PUBLIC PcapPlusPlus::Pcap++ benchmark::benchmark)

    set_target_properties(BenchmarkExampleGoogle PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${PCAPPP_BINARY_EXAMPLES_DIR}")
  else()
    message(WARNING "Google Benchmark backend is not supported for cross-compilation")
  endif()
else()
  message(WARNING "Google Benchmark backend requires C++14 support")
endif()

if(PCAPPP_INSTALL)
  install(TARGETS BenchmarkExample EXPORT PcapPlusPlusTargets RUNTIME DESTINATION ${PCAPPP_INSTALL_BINDIR})

  if(TARGET BenchmarkExampleGoogle)
    install(TARGETS BenchmarkExampleGoogle EXPORT PcapPlusPlusTargets RUNTIME DESTINATION ${PCAPPP_INSTALL_BINDIR})
  endif()
endif()
