diff --git a/CMakeLists.txt b/CMakeLists.txt index a5ed9b62e..f4f1a364f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,13 +4,21 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.13) include(CheckCXXCompilerFlag) +# Allow cross-directory target_link_libraries +# (required for deferred dependency resolution) +cmake_policy(SET CMP0079 NEW) + project( moxygen ) +# Set for FetchContent to skip find_package(moxygen) +set(moxygen_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" + CACHE INTERNAL "moxygen source directory") + # Needs 20 for co routines set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -47,15 +55,31 @@ set (DEPS_LIBRARIES_DIR ${MOXYGEN_FBCODE_ROOT}/_build/deps/lib) # # IMPORTANT: If you change this, make the analogous update in: # cmake/moxygen-config.cmake.in -find_package(folly REQUIRED) -find_package(wangle REQUIRED) -find_package(mvfst REQUIRED) -find_package(proxygen REQUIRED) +# If deps are being built from source (FetchContent), skip find_package +if (NOT DEFINED folly_SOURCE_DIR) + find_package(folly REQUIRED) +endif() +if (NOT DEFINED fizz_SOURCE_DIR) + find_package(fizz REQUIRED) +endif() +if (NOT DEFINED mvfst_SOURCE_DIR) + find_package(mvfst REQUIRED) +endif() +if (NOT DEFINED proxygen_SOURCE_DIR) + find_package(proxygen REQUIRED) +endif() find_package(Glog REQUIRED) add_compile_definitions(GLOG_USE_GLOG_EXPORT) find_package(gflags REQUIRED) find_package(Zstd REQUIRED) +# Define BUILD_SAMPLES after find_package calls so it doesn't affect +# proxygen's BUILD_SAMPLES option during config +option(BUILD_SAMPLES + "If enabled, build moxygen sample executables and test tools." + ON +) + list(APPEND _MOXYGEN_COMMON_COMPILE_OPTIONS -Wall @@ -92,9 +116,12 @@ if (COMPILER_HAS_W_UNUSED_VALUE) endif() include(MoxygenTest) +include(MoxygenFunctions) add_subdirectory(moxygen) +moxygen_resolve_deferred_dependencies() + if (NOT DEFINED LIB_INSTALL_DIR) set(LIB_INSTALL_DIR "lib") endif() diff --git a/cmake/MoxygenFunctions.cmake b/cmake/MoxygenFunctions.cmake new file mode 100644 index 000000000..54acd02b3 --- /dev/null +++ b/cmake/MoxygenFunctions.cmake @@ -0,0 +1,199 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +# Allow cross-directory target_link_libraries +cmake_policy(SET CMP0079 NEW) + +# Initialize global properties for tracking targets and deferred dependencies +set_property(GLOBAL PROPERTY MOXYGEN_COMPONENT_TARGETS) +set_property(GLOBAL PROPERTY MOXYGEN_DEFERRED_DEPS) + +# moxygen_add_library( +# SRCS file1.cpp file2.cpp # Source files +# DEPS internal_dep # Private dependencies +# EXPORTED_DEPS Folly::folly # Public dependencies (propagated) +# ) +function(moxygen_add_library _target_name) + cmake_parse_arguments( + MOXYGEN_LIB + "" # Options (boolean flags) + "" # Single-value args + "SRCS;DEPS;EXPORTED_DEPS" # Multi-value args + ${ARGN} + ) + + set(_sources ${MOXYGEN_LIB_SRCS}) + if(NOT _sources) + # Legacy support: if no SRCS keyword, treat remaining args as sources + set(_sources ${MOXYGEN_LIB_UNPARSED_ARGUMENTS}) + endif() + + # Separate moxygen internal deps from external deps + set(_immediate_deps "") + set(_moxygen_deps "") + foreach(_dep IN LISTS MOXYGEN_LIB_EXPORTED_DEPS) + if(_dep MATCHES "^moxygen_") + list(APPEND _moxygen_deps ${_dep}) + else() + list(APPEND _immediate_deps ${_dep}) + endif() + endforeach() + + set(_private_immediate "") + set(_private_moxygen "") + foreach(_dep IN LISTS MOXYGEN_LIB_DEPS) + if(_dep MATCHES "^moxygen_") + list(APPEND _private_moxygen ${_dep}) + else() + list(APPEND _private_immediate ${_dep}) + endif() + endforeach() + + # Skip if no sources (header-only library) + list(LENGTH _sources _src_count) + if(_src_count EQUAL 0) + # Header-only: create INTERFACE library + add_library(${_target_name} INTERFACE) + target_include_directories(${_target_name} + INTERFACE + $ + $ + ) + + # Link external deps immediately for INTERFACE libraries + if(_immediate_deps) + target_link_libraries(${_target_name} INTERFACE ${_immediate_deps}) + endif() + + # Defer moxygen internal deps for INTERFACE libraries + if(_moxygen_deps) + list(JOIN _moxygen_deps "," _deps_str) + set_property(GLOBAL APPEND PROPERTY MOXYGEN_DEFERRED_DEPS + "${_target_name}|INTERFACE|${_deps_str}" + ) + endif() + + install(TARGETS ${_target_name} EXPORT moxygen-exports) + add_library(moxygen::${_target_name} ALIAS ${_target_name}) + return() + endif() + + # Create STATIC library + add_library(${_target_name} STATIC ${_sources}) + + if(DEFINED PACKAGE_VERSION) + set_property(TARGET ${_target_name} PROPERTY VERSION ${PACKAGE_VERSION}) + endif() + + if(BUILD_SHARED_LIBS) + set_property(TARGET ${_target_name} PROPERTY POSITION_INDEPENDENT_CODE ON) + endif() + + target_include_directories(${_target_name} + PUBLIC + $ + $ + ) + + target_compile_options(${_target_name} + PRIVATE + ${_MOXYGEN_COMMON_COMPILE_OPTIONS} + ) + + target_compile_features(${_target_name} PUBLIC cxx_std_20) + + # Link external deps immediately + if(_immediate_deps) + target_link_libraries(${_target_name} PUBLIC ${_immediate_deps}) + endif() + + # Defer moxygen internal deps + if(_moxygen_deps) + list(JOIN _moxygen_deps "," _deps_str) + set_property(GLOBAL APPEND PROPERTY MOXYGEN_DEFERRED_DEPS + "${_target_name}|PUBLIC|${_deps_str}" + ) + endif() + + # Private deps + if(_private_immediate) + target_link_libraries(${_target_name} PRIVATE ${_private_immediate}) + endif() + + if(_private_moxygen) + list(JOIN _private_moxygen "," _deps_str) + set_property(GLOBAL APPEND PROPERTY MOXYGEN_DEFERRED_DEPS + "${_target_name}|PRIVATE|${_deps_str}" + ) + endif() + + # Track target + set_property(GLOBAL APPEND PROPERTY MOXYGEN_COMPONENT_TARGETS ${_target_name}) + + # Install + install( + TARGETS ${_target_name} + EXPORT moxygen-exports + ARCHIVE DESTINATION ${LIB_INSTALL_DIR} + LIBRARY DESTINATION ${LIB_INSTALL_DIR} + ) + + # Create alias + add_library(moxygen::${_target_name} ALIAS ${_target_name}) +endfunction() + +# Resolve deferred dependencies after all targets are defined +# Call this after all add_subdirectory() calls +function(moxygen_resolve_deferred_dependencies) + # Allow linking targets defined in other directories + cmake_policy(SET CMP0079 NEW) + + get_property(_deferred_deps GLOBAL PROPERTY MOXYGEN_DEFERRED_DEPS) + + foreach(_spec IN LISTS _deferred_deps) + # Parse the spec: "target|visibility|dep1,dep2,..." + string(REPLACE "|" ";" _parts "${_spec}") + list(LENGTH _parts _len) + if(_len LESS 3) + continue() + endif() + + list(GET _parts 0 _target) + list(GET _parts 1 _visibility) + list(GET _parts 2 _deps_str) + + # Split deps by comma + string(REPLACE "," ";" _deps "${_deps_str}") + + # Filter to only existing targets (skip deps that weren't generated) + set(_valid_deps "") + foreach(_dep IN LISTS _deps) + if(TARGET ${_dep}) + list(APPEND _valid_deps ${_dep}) + endif() + endforeach() + + if(_valid_deps) + target_link_libraries(${_target} ${_visibility} ${_valid_deps}) + endif() + endforeach() +endfunction() + +# Install headers preserving directory structure +function(moxygen_install_headers rootName rootDir) + file( + GLOB_RECURSE MOXYGEN_HEADERS_TOINSTALL + RELATIVE ${rootDir} + ${rootDir}/*.h + ) + list(FILTER MOXYGEN_HEADERS_TOINSTALL EXCLUDE REGEX test/) + list(FILTER MOXYGEN_HEADERS_TOINSTALL EXCLUDE REGEX facebook/) + foreach(header ${MOXYGEN_HEADERS_TOINSTALL}) + get_filename_component(header_dir ${header} DIRECTORY) + install(FILES ${rootDir}/${header} + DESTINATION include/${rootName}/${header_dir}) + endforeach() +endfunction() diff --git a/moxygen/CMakeLists.txt b/moxygen/CMakeLists.txt index 3ff0b0a53..7a0998dea 100644 --- a/moxygen/CMakeLists.txt +++ b/moxygen/CMakeLists.txt @@ -4,163 +4,208 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -# MOQ -add_library(moxygen - MoQFramer.cpp - MoQCodec.cpp - MoQSession.cpp - MoQTokenCache.cpp - MoQTypes.cpp - MoQVersions.cpp - events/MoQDeliveryTimer.cpp -) +# Auto-generated by generate_cmake.py - DO NOT EDIT MANUALLY -target_include_directories( - moxygen PUBLIC - $ -) -target_compile_options( - moxygen PRIVATE - ${_MOXYGEN_COMMON_COMPILE_OPTIONS} -) -target_link_libraries( - moxygen PUBLIC - Folly::folly - proxygen::proxygen - mvfst::mvfst_events - mlogger -) - -install( - TARGETS moxygen - EXPORT moxygen-exports - ARCHIVE DESTINATION ${LIB_INSTALL_DIR} - LIBRARY DESTINATION ${LIB_INSTALL_DIR} -) -add_library(moqrelaysession - MoQRelaySession.cpp -) - -target_include_directories( - moqrelaysession PUBLIC - $ -) - -target_compile_options( - moqrelaysession PRIVATE - ${_MOXYGEN_COMMON_COMPILE_OPTIONS} -) - -target_link_libraries( - moqrelaysession PUBLIC - moxygen - Folly::folly +moxygen_add_library(moxygen_moq_versions + SRCS + MoQVersions.cpp + EXPORTED_DEPS + Folly::folly_conv + Folly::folly_string ) -install( - TARGETS moqrelaysession - EXPORT moxygen-exports - ARCHIVE DESTINATION ${LIB_INSTALL_DIR} - LIBRARY DESTINATION ${LIB_INSTALL_DIR} +moxygen_add_library(moxygen_moq_types + SRCS + MoQTypes.cpp + EXPORTED_DEPS + Folly::folly_container_f14_hash + Folly::folly_conv + Folly::folly_expected + Folly::folly_hash_hash + Folly::folly_io_iobuf + Folly::folly_logging_logging + Folly::folly_string +) + +moxygen_add_library(moxygen_moq_framer + SRCS + MoQFramer.cpp + EXPORTED_DEPS + moxygen_moq_token_cache + moxygen_moq_types + moxygen_moq_versions + mvfst::mvfst_codec_types + mvfst::mvfst_exception + mvfst::mvfst_folly_utils + Folly::folly_container_f14_hash + Folly::folly_io_iobuf + Folly::folly_lang_bits + Folly::folly_logging_logging +) + +moxygen_add_library(moxygen_moq_codec + SRCS + MoQCodec.cpp + EXPORTED_DEPS + moxygen_moq_framer + Folly::folly_logging_logging ) -add_library(moqfollyexecutorimpl - events/MoQFollyExecutorImpl.cpp +moxygen_add_library(moxygen_moq_location + EXPORTED_DEPS + moxygen_moq_framer + Folly::folly_logging_logging ) -target_include_directories( - moqfollyexecutorimpl PUBLIC - $ +moxygen_add_library(moxygen_moq + SRCS + MoQSession.cpp + EXPORTED_DEPS + moxygen_events_moq_delivery_timeout_manager + moxygen_events_moq_delivery_timer + moxygen_events_moq_executor + moxygen_mlog_mlogger + moxygen_moq_codec + moxygen_moq_consumers + moxygen_moq_types + moxygen_stats_moq_stats + proxygen::proxygen_http_webtransport + mvfst::mvfst_common_circular_deque + mvfst::mvfst_priority_http_priority_queue + Folly::folly_container_f14_hash + Folly::folly_coro_collect + Folly::folly_coro_future_util + Folly::folly_coro_promise + Folly::folly_coro_task + Folly::folly_coro_timeout + Folly::folly_io_async_async_base + Folly::folly_logging_logging + Folly::folly_maybe_managed_ptr +) + +moxygen_add_library(moxygen_moq_relay_session + SRCS + MoQRelaySession.cpp + EXPORTED_DEPS + moxygen_moq + Folly::folly_container_f14_hash + Folly::folly_coro_collect + Folly::folly_coro_future_util + Folly::folly_cpp_attributes + Folly::folly_logging_logging ) -target_compile_options( - moqfollyexecutorimpl PRIVATE - ${_MOXYGEN_COMMON_COMPILE_OPTIONS} -) +moxygen_add_library(moxygen_moq_publish_error) -target_link_libraries( - moqfollyexecutorimpl PUBLIC - Folly::folly - mvfst::mvfst_events +moxygen_add_library(moxygen_moq_consumers + EXPORTED_DEPS + moxygen_moq_publish_error + moxygen_moq_types + proxygen::proxygen_http_webtransport ) -add_library(moxygenserver +moxygen_add_library(moxygen_moq_server + SRCS + MoQServer.cpp MoQServerBase.cpp - MoQServer.cpp) - -target_include_directories( - moxygenserver PUBLIC - $ -) - -target_compile_options( - moxygenserver PRIVATE - ${_MOXYGEN_COMMON_COMPILE_OPTIONS} -) - -target_link_libraries( - moxygenserver PUBLIC - moxygen - proxygen::proxygenhqserver - proxygen::quicwebtransport - moqfollyexecutorimpl -) - -add_library(moxygenclient - MoQClient.cpp + EXPORTED_DEPS + moxygen_events_moq_folly_executor_impl + moxygen_mlog_mlogger_factory + moxygen_moq + proxygen::proxygen_hq_server + proxygen::proxygen_http_session_hq_session + proxygen::proxygen_http_webtransport_httpwebtransport + proxygen::proxygen_http_webtransport_quicwebtransport + Folly::folly_coro_baton + Folly::folly_init_init + Folly::folly_io_async_async_base + Folly::folly_io_async_event_base_manager + Folly::folly_logging_logging + Folly::folly_string +) + +moxygen_add_library(moxygen_moqclient_base + SRCS MoQClientBase.cpp - util/QuicConnector.cpp -) - -target_include_directories( - moxygenclient PUBLIC - $ -) - -target_compile_options( - moxygenclient PRIVATE - ${_MOXYGEN_COMMON_COMPILE_OPTIONS} -) - -target_link_libraries( - moxygenclient PUBLIC - moxygen - proxygen::proxygenhqserver - proxygen::quicwebtransport - moqfollyexecutorimpl + EXPORTED_DEPS + moxygen_mlog_mlogger + moxygen_moq + proxygen::proxygen_http_webtransport + proxygen::proxygen_http_webtransport_quicwebtransport + proxygen::proxygen_utils_parse_url + mvfst::mvfst_client + mvfst::mvfst_state_transport_settings + fizz::fizz + Folly::folly_coro_error + Folly::folly_coro_promise + Folly::folly_string +) + +moxygen_add_library(moxygen_moqclient + SRCS + MoQClient.cpp + EXPORTED_DEPS + moxygen_events_moq_folly_executor_impl + moxygen_moqclient_base + moxygen_util_quic_connector + proxygen::proxygen_utils_parse_url + Folly::folly_coro_task ) -add_library(moxygenwtclient +moxygen_add_library(moxygen_moq_webtransport_client + SRCS MoQWebTransportClient.cpp + EXPORTED_DEPS + moxygen_events_moq_folly_executor_impl + moxygen_moq_framer + moxygen_moqclient + proxygen::proxygen_http_hq_connector + proxygen::proxygen_http_session_http_transaction + proxygen::proxygen_http_session_quic_protocol_info + proxygen::proxygen_http_webtransport_httpwebtransport + Folly::folly_string +) + +moxygen_add_library(moxygen_moq_token_cache + SRCS + MoQTokenCache.cpp + EXPORTED_DEPS + Folly::folly_container_f14_hash + Folly::folly_expected + Folly::folly_logging_logging ) -target_include_directories( - moxygenwtclient PUBLIC - $ -) - -target_compile_options( - moxygenwtclient PRIVATE - ${_MOXYGEN_COMMON_COMPILE_OPTIONS} +moxygen_add_library(moxygen_moq_obj_receiver + EXPORTED_DEPS + moxygen_moq_consumers + Folly::folly_logging_logging ) -target_link_libraries( - moxygenwtclient PUBLIC - moxygenclient - proxygen::proxygenhqserver +moxygen_add_library(moxygen_moq_queue_callback + EXPORTED_DEPS + moxygen_moq_obj_receiver + Folly::folly_coro_unbounded_queue ) - +add_subdirectory(dejitter) +add_subdirectory(events) +add_subdirectory(flv_parser) add_subdirectory(mlog) -add_subdirectory(relay) -# TODO: Fails with compiler error in ubuntu P1361252588 -# add_subdirectory(samples/chat) -add_subdirectory(samples/text-client) -add_subdirectory(samples/date) -add_subdirectory(samples/flv_streamer_client) -add_subdirectory(samples/flv_receiver_client) add_subdirectory(moq_mi) add_subdirectory(moq_mi_to_flv) -add_subdirectory(moqtest) -add_subdirectory(flv_parser) -add_subdirectory(test) +add_subdirectory(stats) +add_subdirectory(util) + +add_subdirectory(relay) + +if(BUILD_SAMPLES) + add_subdirectory(moqtest) + add_subdirectory(samples) +endif() + +if(BUILD_TESTS) + add_subdirectory(test) +endif() + +# Resolve deferred moxygen internal dependencies +moxygen_resolve_deferred_dependencies() diff --git a/moxygen/dejitter/CMakeLists.txt b/moxygen/dejitter/CMakeLists.txt new file mode 100644 index 000000000..711acd4d0 --- /dev/null +++ b/moxygen/dejitter/CMakeLists.txt @@ -0,0 +1,16 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +# Auto-generated by generate_cmake.py - DO NOT EDIT MANUALLY + +moxygen_add_library(moxygen_dejitter + EXPORTED_DEPS + Folly::folly_logging_logging +) + +if(BUILD_TESTS) + add_subdirectory(test) +endif() diff --git a/moxygen/dejitter/test/CMakeLists.txt b/moxygen/dejitter/test/CMakeLists.txt new file mode 100644 index 000000000..1ac4ee934 --- /dev/null +++ b/moxygen/dejitter/test/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +if(NOT BUILD_TESTS) + return() +endif() + +moxygen_add_test(TARGET DeJitterTests + PREFIX "DeJitter" + SOURCES + DeJitterTest.cpp + DEPENDS + moxygen_dejitter + testmain +) diff --git a/moxygen/events/CMakeLists.txt b/moxygen/events/CMakeLists.txt new file mode 100644 index 000000000..a07473fe8 --- /dev/null +++ b/moxygen/events/CMakeLists.txt @@ -0,0 +1,38 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +# Auto-generated by generate_cmake.py - DO NOT EDIT MANUALLY + +moxygen_add_library(moxygen_events_moq_executor + EXPORTED_DEPS + mvfst::mvfst_common_events_eventbase + Folly::folly_executor +) + +moxygen_add_library(moxygen_events_moq_delivery_timer + SRCS + MoQDeliveryTimer.cpp + EXPORTED_DEPS + moxygen_events_moq_executor + moxygen_moq_framer + mvfst::mvfst_common_events_quic_timer + Folly::folly_container_f14_hash + Folly::folly_logging_logging +) + +moxygen_add_library(moxygen_events_moq_delivery_timeout_manager + EXPORTED_DEPS + Folly::folly_logging_logging +) + +moxygen_add_library(moxygen_events_moq_folly_executor_impl + SRCS + MoQFollyExecutorImpl.cpp + EXPORTED_DEPS + moxygen_events_moq_executor + mvfst::mvfst_common_events_folly_eventbase + Folly::folly_io_async_async_base +) diff --git a/moxygen/flv_parser/CMakeLists.txt b/moxygen/flv_parser/CMakeLists.txt index bded3686a..fd546ed1c 100644 --- a/moxygen/flv_parser/CMakeLists.txt +++ b/moxygen/flv_parser/CMakeLists.txt @@ -4,34 +4,52 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -# flvparser -add_library(flvparser +# Auto-generated by generate_cmake.py - DO NOT EDIT MANUALLY + +moxygen_add_library(moxygen_flv_parser_flv_common + SRCS FlvCommon.cpp - FlvReader.cpp - FlvCoder.cpp - FlvWriter.cpp - FlvStreamParser.cpp + EXPORTED_DEPS + Folly::folly_io_iobuf ) -target_include_directories( - flvparser PUBLIC - $ +moxygen_add_library(moxygen_flv_parser_flv_stream_parser + SRCS + FlvStreamParser.cpp + EXPORTED_DEPS + moxygen_flv_parser_flv_common + moxygen_moq_mi + Folly::folly_io_iobuf + Folly::folly_logging_logging ) -target_compile_options( - flvparser PRIVATE - ${_MOXYGEN_COMMON_COMPILE_OPTIONS} + +moxygen_add_library(moxygen_flv_parser_flv_reader + SRCS + FlvReader.cpp + EXPORTED_DEPS + moxygen_flv_parser_flv_common + moxygen_flv_parser_flv_stream_parser + moxygen_moq_mi + Folly::folly_io_iobuf ) -target_link_libraries( - flvparser PUBLIC - Folly::folly +moxygen_add_library(moxygen_flv_parser_flv_coder + SRCS + FlvCoder.cpp + EXPORTED_DEPS + moxygen_flv_parser_flv_common + Folly::folly_io_iobuf ) -install( - TARGETS flvparser - EXPORT moxygen-exports - ARCHIVE DESTINATION ${LIB_INSTALL_DIR} - LIBRARY DESTINATION ${LIB_INSTALL_DIR} +moxygen_add_library(moxygen_flv_parser_flv_writer + SRCS + FlvWriter.cpp + EXPORTED_DEPS + moxygen_flv_parser_flv_coder + moxygen_flv_parser_flv_common + Folly::folly_io_iobuf ) -add_subdirectory(test) +if(BUILD_TESTS) + add_subdirectory(test) +endif() diff --git a/moxygen/flv_parser/test/CMakeLists.txt b/moxygen/flv_parser/test/CMakeLists.txt index a8656f86f..06fdb3bfe 100644 --- a/moxygen/flv_parser/test/CMakeLists.txt +++ b/moxygen/flv_parser/test/CMakeLists.txt @@ -8,12 +8,21 @@ if(NOT BUILD_TESTS) return() endif() -moxygen_add_test(TARGET FlvParserTests - PREFIX "FlvParser" +moxygen_add_test(TARGET FlvReaderTests + PREFIX "FlvReader" SOURCES FlvReaderTest.cpp + DEPENDS + moxygen_flv_parser_flv_reader + testmain +) + +moxygen_add_test(TARGET FlvSequentialReaderTests + PREFIX "FlvSequentialReader" + SOURCES FlvSequentialReaderTest.cpp DEPENDS - flvparser - moqmi + moxygen_flv_parser_flv_reader + moxygen_flv_parser_flv_stream_parser + testmain ) diff --git a/moxygen/mlog/CMakeLists.txt b/moxygen/mlog/CMakeLists.txt index d8c21b7b5..5573d9869 100644 --- a/moxygen/mlog/CMakeLists.txt +++ b/moxygen/mlog/CMakeLists.txt @@ -4,31 +4,50 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -# MoQMi -add_library(mlogger - MLogger.cpp - MLogEvents.cpp +# Auto-generated by generate_cmake.py - DO NOT EDIT MANUALLY + +moxygen_add_library(moxygen_mlog_mlog_types + SRCS MLogTypes.cpp - FileMLogger.cpp + EXPORTED_DEPS + Folly::folly_io_iobuf + Folly::folly_json_dynamic ) -target_include_directories( - mlogger PUBLIC - $ +moxygen_add_library(moxygen_mlog_mlogger + SRCS + MLogger.cpp + EXPORTED_DEPS + moxygen_mlog_mlog_events + moxygen_mlog_mlog_types + moxygen_moq_types + mvfst::mvfst_codec_types + Folly::folly_json_dynamic + Folly::folly_network_address ) -target_compile_options( - mlogger PRIVATE - ${_MOXYGEN_COMMON_COMPILE_OPTIONS} + +moxygen_add_library(moxygen_mlog_file_mlogger + SRCS + FileMLogger.cpp + EXPORTED_DEPS + moxygen_mlog_mlogger + Folly::folly_json_dynamic ) -target_link_libraries( - mlogger PUBLIC - Folly::folly - mvfst::mvfst_codec_types + +moxygen_add_library(moxygen_mlog_mlog_events + SRCS + MLogEvents.cpp + EXPORTED_DEPS + moxygen_mlog_mlog_types +) + +moxygen_add_library(moxygen_mlog_mlogger_factory + EXPORTED_DEPS + moxygen_mlog_mlogger ) -install( - TARGETS mlogger - EXPORT moxygen-exports - ARCHIVE DESTINATION ${LIB_INSTALL_DIR} - LIBRARY DESTINATION ${LIB_INSTALL_DIR} +moxygen_add_library(moxygen_mlog_file_mlogger_factory + EXPORTED_DEPS + moxygen_mlog_file_mlogger + moxygen_mlog_mlogger_factory ) diff --git a/moxygen/moq_mi/CMakeLists.txt b/moxygen/moq_mi/CMakeLists.txt index 5d2f1679b..016a00d20 100644 --- a/moxygen/moq_mi/CMakeLists.txt +++ b/moxygen/moq_mi/CMakeLists.txt @@ -4,31 +4,18 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -# MoQMi -add_library(moqmi - MoQMi.cpp -) +# Auto-generated by generate_cmake.py - DO NOT EDIT MANUALLY -target_include_directories( - moqmi PUBLIC - $ -) -target_compile_options( - moqmi PRIVATE - ${_MOXYGEN_COMMON_COMPILE_OPTIONS} -) -target_link_libraries( - moqmi PUBLIC - Folly::folly +moxygen_add_library(moxygen_moq_mi + SRCS + MoQMi.cpp + EXPORTED_DEPS + moxygen_flv_parser_flv_common + moxygen_moq_framer mvfst::mvfst_codec_types - mvfst::mvfst_folly_utils -) - -install( - TARGETS moqmi - EXPORT moxygen-exports - ARCHIVE DESTINATION ${LIB_INSTALL_DIR} - LIBRARY DESTINATION ${LIB_INSTALL_DIR} + Folly::folly_io_iobuf ) -add_subdirectory(test) +if(BUILD_TESTS) + add_subdirectory(test) +endif() diff --git a/moxygen/moq_mi/test/CMakeLists.txt b/moxygen/moq_mi/test/CMakeLists.txt index 7f4d69bcb..64456d246 100644 --- a/moxygen/moq_mi/test/CMakeLists.txt +++ b/moxygen/moq_mi/test/CMakeLists.txt @@ -13,7 +13,8 @@ moxygen_add_test(TARGET MoQMiTests SOURCES MoQMiTest.cpp DEPENDS - moqmi - flvparser - proxygen::proxygen + moxygen_moq_mi + moxygen_flv_parser_flv_reader + proxygen::proxygen_utils_logging + testmain ) diff --git a/moxygen/moq_mi_to_flv/CMakeLists.txt b/moxygen/moq_mi_to_flv/CMakeLists.txt index 5cad2a9af..d82f5305c 100644 --- a/moxygen/moq_mi_to_flv/CMakeLists.txt +++ b/moxygen/moq_mi_to_flv/CMakeLists.txt @@ -4,30 +4,13 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -# MoQMiToFlv -add_library(moqmitoflv - MoQMiToFlv.cpp -) +# Auto-generated by generate_cmake.py - DO NOT EDIT MANUALLY -target_include_directories( - moqmitoflv PUBLIC - $ -) -target_compile_options( - moqmitoflv PRIVATE - ${_MOXYGEN_COMMON_COMPILE_OPTIONS} -) -target_link_libraries( - moqmitoflv PUBLIC - Folly::folly - mvfst::mvfst_codec_types - mvfst::mvfst_folly_utils - flvparser -) - -install( - TARGETS moqmitoflv - EXPORT moxygen-exports - ARCHIVE DESTINATION ${LIB_INSTALL_DIR} - LIBRARY DESTINATION ${LIB_INSTALL_DIR} +moxygen_add_library(moxygen_moq_mi_to_flv + SRCS + MoQMiToFlv.cpp + EXPORTED_DEPS + moxygen_flv_parser_flv_common + moxygen_moq_mi + Folly::folly_logging_logging ) diff --git a/moxygen/moqtest/CMakeLists.txt b/moxygen/moqtest/CMakeLists.txt index b815c18b3..e62bbd6c3 100644 --- a/moxygen/moqtest/CMakeLists.txt +++ b/moxygen/moqtest/CMakeLists.txt @@ -4,7 +4,7 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -# Relay +# Test utilities add_library(moqtest_utils Utils.cpp) target_include_directories( moqtest_utils PUBLIC @@ -16,7 +16,7 @@ target_compile_options( ) target_link_libraries( moqtest_utils PUBLIC - moxygen + moxygen_moq ) install( @@ -26,8 +26,6 @@ install( LIBRARY DESTINATION ${LIB_INSTALL_DIR} ) - - # moqtest_client add_executable( moqtest_client @@ -50,8 +48,10 @@ target_compile_options( target_link_libraries( moqtest_client PUBLIC moqtest_utils - moxygenwtclient - moqrelaysession + moxygen_mlog_file_mlogger + moxygen_moq_webtransport_client + moxygen_moq_relay_session + Folly::folly_init_init ) install( @@ -61,7 +61,6 @@ install( LIBRARY DESTINATION ${LIB_INSTALL_DIR} ) - # moqtest_server add_executable( moqtest_server @@ -75,8 +74,7 @@ set_target_properties( INSTALL_RPATH ${DEPS_LIBRARIES_DIR} ) target_include_directories( - moqtest_server PUBLIC - $ + moqtest_server PUBLIC $ ) target_compile_options( moqtest_server PRIVATE @@ -85,9 +83,11 @@ target_compile_options( target_link_libraries( moqtest_server PUBLIC moqtest_utils - moxygenserver - moqrelaysession - moxygenwtclient + moxygen_mlog_file_mlogger + moxygen_moq_server + moxygen_moq_relay_session + moxygen_moq_webtransport_client + Folly::folly_init_init ) install( @@ -97,7 +97,6 @@ install( LIBRARY DESTINATION ${LIB_INSTALL_DIR} ) - # moqperf_test_client add_executable( moqperf_test_client @@ -120,7 +119,9 @@ target_compile_options( target_link_libraries( moqperf_test_client PUBLIC moqtest_utils - moxygenwtclient + moxygen_moq_webtransport_client + Folly::folly_init_init + Folly::folly_io_async_scoped_event_base_thread ) install( @@ -131,5 +132,3 @@ install( ) add_subdirectory(interop) - -#add_subdirectory(test) diff --git a/moxygen/moqtest/interop/CMakeLists.txt b/moxygen/moqtest/interop/CMakeLists.txt index b3f48c8b3..e181e520f 100644 --- a/moxygen/moqtest/interop/CMakeLists.txt +++ b/moxygen/moqtest/interop/CMakeLists.txt @@ -25,11 +25,16 @@ target_compile_options( ) target_link_libraries( moq_interop_client PUBLIC - moxygen - moxygenclient - moxygenwtclient - moqrelaysession - Folly::folly + moxygen_events_moq_folly_executor_impl + moxygen_moq_relay_session + moxygen_moq_webtransport_client + moxygen_moqclient + Folly::folly_coro_blocking_wait + Folly::folly_coro_collect + Folly::folly_coro_sleep + Folly::folly_coro_task + Folly::folly_coro_timeout + Folly::folly_init_init ) install( diff --git a/moxygen/relay/CMakeLists.txt b/moxygen/relay/CMakeLists.txt index 9f7640aaf..3167052dc 100644 --- a/moxygen/relay/CMakeLists.txt +++ b/moxygen/relay/CMakeLists.txt @@ -4,54 +4,55 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -# Relay -add_library(moqcache MoQCache.cpp) -target_include_directories( - moqcache PUBLIC - $ -) -target_compile_options( - moqcache PRIVATE - ${_MOXYGEN_COMMON_COMPILE_OPTIONS} -) -target_link_libraries( - moqcache PUBLIC - moxygen -) +# Manually maintained - has MoQRelayServer binary -install( - TARGETS moqcache - EXPORT moxygen-exports - ARCHIVE DESTINATION ${LIB_INSTALL_DIR} - LIBRARY DESTINATION ${LIB_INSTALL_DIR} +moxygen_add_library(moxygen_relay_moq_forwarder + SRCS + MoQForwarder.cpp + EXPORTED_DEPS + moxygen_moq + moxygen_moq_location + Folly::folly_container_f14_hash + Folly::folly_hash_hash + Folly::folly_io_async_async_base ) -add_library(moqrelay MoQRelay.cpp MoQCache.cpp MoQForwarder.cpp) -target_include_directories( - moqrelay PUBLIC - $ -) -target_compile_options( - moqrelay PRIVATE - ${_MOXYGEN_COMMON_COMPILE_OPTIONS} +moxygen_add_library(moxygen_relay_moq_cache + SRCS + MoQCache.cpp + EXPORTED_DEPS + moxygen_moq + moxygen_moq_consumers + moxygen_moq_framer + moxygen_util_bidi_iterator + moxygen_util_fetch_interval_set + Folly::folly_container_f14_hash + Folly::folly_coro_baton + Folly::folly_coro_task ) -target_link_libraries( - moqrelay PUBLIC - Folly::folly - proxygen::proxygen - proxygen::proxygenhqserver - moxygen - moqrelaysession + +moxygen_add_library(moxygen_relay_moq_relay + SRCS + MoQRelay.cpp + EXPORTED_DEPS + moxygen_moq + moxygen_moq_consumers + moxygen_relay_moq_cache + moxygen_relay_moq_forwarder + Folly::folly_container_f14_hash + Folly::folly_coro_shared_promise ) -install( - TARGETS moqrelay - EXPORT moxygen-exports - ARCHIVE DESTINATION ${LIB_INSTALL_DIR} - LIBRARY DESTINATION ${LIB_INSTALL_DIR} +moxygen_add_library(moxygen_relay_moq_relay_client + EXPORTED_DEPS + moxygen_moq_relay_session + moxygen_moqclient + mvfst::mvfst_state_transport_settings + Folly::folly_coro_sleep + Folly::folly_logging_logging ) -# MoQRelayServer +# MoQRelayServer binary add_executable( moqrelayserver MoQRelayServer.cpp @@ -63,8 +64,7 @@ set_target_properties( INSTALL_RPATH ${DEPS_LIBRARIES_DIR} ) target_include_directories( - moqrelayserver PUBLIC - $ + moqrelayserver PUBLIC $ ) target_compile_options( moqrelayserver PRIVATE @@ -72,8 +72,10 @@ target_compile_options( ) target_link_libraries( moqrelayserver PUBLIC - moqrelay - moxygenserver + moxygen_relay_moq_relay + moxygen_moq_relay_session + moxygen_moq_server + Folly::folly_init_init ) install( @@ -83,4 +85,6 @@ install( LIBRARY DESTINATION ${LIB_INSTALL_DIR} ) -add_subdirectory(test) +if(BUILD_TESTS) + add_subdirectory(test) +endif() diff --git a/moxygen/relay/test/CMakeLists.txt b/moxygen/relay/test/CMakeLists.txt index fda75d518..b836d4d76 100644 --- a/moxygen/relay/test/CMakeLists.txt +++ b/moxygen/relay/test/CMakeLists.txt @@ -13,9 +13,11 @@ moxygen_add_test(TARGET MoQCacheTests SOURCES MoQCacheTests.cpp DEPENDS - moqcache + moxygen_relay_moq_cache moqtestutils testmain + Folly::folly_coro_gtest_helpers + Folly::folly_io_async_scoped_event_base_thread ) moxygen_add_test(TARGET MoQRelayTest @@ -23,8 +25,8 @@ moxygen_add_test(TARGET MoQRelayTest SOURCES MoQRelayTest.cpp DEPENDS - moqrelay + moxygen_relay_moq_relay moqtestutils - moqfollyexecutorimpl + moxygen_events_moq_folly_executor_impl testmain ) diff --git a/moxygen/samples/CMakeLists.txt b/moxygen/samples/CMakeLists.txt new file mode 100644 index 000000000..d0d8727bc --- /dev/null +++ b/moxygen/samples/CMakeLists.txt @@ -0,0 +1,11 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +add_subdirectory(chat) +add_subdirectory(date) +add_subdirectory(flv_receiver_client) +add_subdirectory(flv_streamer_client) +add_subdirectory(text-client) diff --git a/moxygen/samples/chat/CMakeLists.txt b/moxygen/samples/chat/CMakeLists.txt index 5594ae8de..cffb6d77b 100644 --- a/moxygen/samples/chat/CMakeLists.txt +++ b/moxygen/samples/chat/CMakeLists.txt @@ -4,7 +4,7 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -# MoQChatClient +# Chat add_executable( moqchatclient MoQChatClient.cpp @@ -24,9 +24,10 @@ target_compile_options( ) target_link_libraries( moqchatclient PUBLIC - Folly::folly - moxygenclient - moqrelaysession + moxygen_events_moq_folly_executor_impl + moxygen_moqclient + moxygen_relay_moq_relay_client + Folly::folly_init_init ) install( diff --git a/moxygen/samples/chat/MoQChatClient.h b/moxygen/samples/chat/MoQChatClient.h index 85b455d96..dcbd84bb9 100644 --- a/moxygen/samples/chat/MoQChatClient.h +++ b/moxygen/samples/chat/MoQChatClient.h @@ -102,6 +102,15 @@ class MoQChatClient : public Publisher, std::chrono::seconds timestamp; RequestID requestID; std::shared_ptr subscription; + + static UserTrack + make(std::string device, std::chrono::seconds ts, RequestID reqId) { + UserTrack ut; + ut.deviceId = std::move(device); + ut.timestamp = ts; + ut.requestID = reqId; + return ut; + } }; std::map> subscriptions_; std::pair, folly::coro::Future> diff --git a/moxygen/samples/date/CMakeLists.txt b/moxygen/samples/date/CMakeLists.txt index 384356e4b..f07c7d7ce 100644 --- a/moxygen/samples/date/CMakeLists.txt +++ b/moxygen/samples/date/CMakeLists.txt @@ -24,9 +24,14 @@ target_compile_options( ) target_link_libraries( moqdateserver PUBLIC - moqrelay - moxygenserver - moxygenwtclient + moxygen_events_moq_folly_executor_impl + moxygen_mlog_file_mlogger + moxygen_moq_server + moxygen_moq_webtransport_client + moxygen_moqclient + moxygen_relay_moq_forwarder + moxygen_relay_moq_relay_client + moxygen_util_signal_handler ) install( diff --git a/moxygen/samples/flv_receiver_client/CMakeLists.txt b/moxygen/samples/flv_receiver_client/CMakeLists.txt index d6650eaa6..f8913a33f 100644 --- a/moxygen/samples/flv_receiver_client/CMakeLists.txt +++ b/moxygen/samples/flv_receiver_client/CMakeLists.txt @@ -4,7 +4,7 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -# MoQFlvReceiverClient +# FLV Receiver Client add_executable( moqflvreceiverclient MoQFlvReceiverClient.cpp @@ -24,10 +24,14 @@ target_compile_options( ) target_link_libraries( moqflvreceiverclient PUBLIC - flvparser - moqmi - moxygenwtclient - moqmitoflv + moxygen_dejitter + moxygen_flv_parser_flv_writer + moxygen_moq_mi + moxygen_moq_mi_to_flv + moxygen_moq_webtransport_client + moxygen_moqclient + Folly::folly_init_init + Folly::folly_io_async_async_signal_handler ) install( diff --git a/moxygen/samples/flv_streamer_client/CMakeLists.txt b/moxygen/samples/flv_streamer_client/CMakeLists.txt index c14dc12d3..7bafa7aa2 100644 --- a/moxygen/samples/flv_streamer_client/CMakeLists.txt +++ b/moxygen/samples/flv_streamer_client/CMakeLists.txt @@ -4,7 +4,7 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -# MoQFlvStreamerClient +# FLV Streamer Client add_executable( moqflvstreamerclient MoQFlvStreamerClient.cpp @@ -24,10 +24,12 @@ target_compile_options( ) target_link_libraries( moqflvstreamerclient PUBLIC - moqrelaysession - moxygenwtclient - flvparser - moqmi + moxygen_flv_parser_flv_reader + moxygen_moq_mi + moxygen_moq_webtransport_client + moxygen_relay_moq_relay_client + Folly::folly_init_init + Folly::folly_io_async_async_signal_handler ) install( diff --git a/moxygen/samples/text-client/CMakeLists.txt b/moxygen/samples/text-client/CMakeLists.txt index fbd4a0876..4ea58b81c 100644 --- a/moxygen/samples/text-client/CMakeLists.txt +++ b/moxygen/samples/text-client/CMakeLists.txt @@ -4,7 +4,7 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -# MoQTextClient +# Text Client add_executable( moqtextclient MoQTextClient.cpp @@ -24,8 +24,12 @@ target_compile_options( ) target_link_libraries( moqtextclient PUBLIC - moxygenwtclient - moqrelaysession + moxygen_mlog_file_mlogger + moxygen_mlog_mlogger + moxygen_moq_webtransport_client + moxygen_relay_moq_relay_client + Folly::folly_init_init + Folly::folly_io_async_async_signal_handler ) install( diff --git a/moxygen/stats/CMakeLists.txt b/moxygen/stats/CMakeLists.txt new file mode 100644 index 000000000..90197afb7 --- /dev/null +++ b/moxygen/stats/CMakeLists.txt @@ -0,0 +1,12 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +# Auto-generated by generate_cmake.py - DO NOT EDIT MANUALLY + +moxygen_add_library(moxygen_stats_moq_stats + EXPORTED_DEPS + moxygen_moq_framer +) diff --git a/moxygen/test/CMakeLists.txt b/moxygen/test/CMakeLists.txt index 9e2ca3c62..e60c9b0ba 100644 --- a/moxygen/test/CMakeLists.txt +++ b/moxygen/test/CMakeLists.txt @@ -15,7 +15,11 @@ target_include_directories( ${LIBGMOCK_INCLUDE_DIR} ${LIBGTEST_INCLUDE_DIR} ) -target_link_libraries(testmain PUBLIC Folly::folly) +target_link_libraries(testmain PUBLIC + Folly::folly_init_init + ${LIBGMOCK_LIBRARY} + ${LIBGTEST_LIBRARY} +) target_compile_options( testmain PRIVATE ${_MOXYGEN_COMMON_COMPILE_OPTIONS} @@ -25,6 +29,7 @@ add_library(moqtestutils TestUtils.cpp) target_include_directories( moqtestutils PUBLIC $ + $ ${LIBGMOCK_INCLUDE_DIR} ${LIBGTEST_INCLUDE_DIR} ) @@ -32,12 +37,20 @@ target_compile_options( moqtestutils PRIVATE ${_MOXYGEN_COMMON_COMPILE_OPTIONS} ) -target_link_libraries(moqtestutils PUBLIC moxygen) +target_link_libraries( + moqtestutils PUBLIC + moxygen_moq + moxygen_moq_codec + moxygen_moq_consumers + moxygen_moq_framer + moxygen_events_moq_folly_executor_impl +) add_library(moqsessiontestcommon MoQSessionTestCommon.cpp) target_include_directories( moqsessiontestcommon PUBLIC $ + $ ${LIBGMOCK_INCLUDE_DIR} ${LIBGTEST_INCLUDE_DIR} ) @@ -48,10 +61,11 @@ target_compile_options( target_link_libraries( moqsessiontestcommon PUBLIC moqtestutils - moqrelaysession - moqfollyexecutorimpl - moxygenclient - Folly::folly + moxygen_moq_relay_session + moxygen_events_moq_folly_executor_impl + moxygen_moqclient + moxygen_relay_moq_relay_client + Folly::folly_coro_gtest_helpers ) moxygen_add_test(TARGET MoQTests @@ -61,6 +75,17 @@ moxygen_add_test(TARGET MoQTests MoQCodecTest.cpp DEPENDS moqtestutils + moxygen_moq_framer + moxygen_moq_codec + testmain +) + +moxygen_add_test(TARGET MoQLocationTests + PREFIX "MoQLocation" + SOURCES + MoQLocationTest.cpp + DEPENDS + moxygen_moq_location testmain ) @@ -86,6 +111,34 @@ moxygen_add_test(TARGET MoQDeliveryTimerTests MoQDeliveryTimerTest.cpp DEPENDS moqtestutils - moqfollyexecutorimpl + moxygen_events_moq_delivery_timer + moxygen_events_moq_folly_executor_impl + testmain +) + +moxygen_add_test(TARGET MoQDeliveryTimeoutManagerTests + PREFIX "MoQDeliveryTimeoutManager" + SOURCES + MoQDeliveryTimeoutManagerTest.cpp + DEPENDS + moxygen_events_moq_delivery_timeout_manager + testmain +) + +moxygen_add_test(TARGET MoQTokenCacheTests + PREFIX "MoQTokenCache" + SOURCES + MoQTokenCacheTest.cpp + DEPENDS + moxygen_moq_token_cache + testmain +) + +moxygen_add_test(TARGET ObjectReceiverTests + PREFIX "ObjectReceiver" + SOURCES + ObjectReceiverTest.cpp + DEPENDS + moxygen_moq_obj_receiver testmain ) diff --git a/moxygen/util/CMakeLists.txt b/moxygen/util/CMakeLists.txt new file mode 100644 index 000000000..9d253c17f --- /dev/null +++ b/moxygen/util/CMakeLists.txt @@ -0,0 +1,44 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +# Auto-generated by generate_cmake.py - DO NOT EDIT MANUALLY + +moxygen_add_library(moxygen_util_quic_connector + SRCS + QuicConnector.cpp + EXPORTED_DEPS + mvfst::mvfst_client + mvfst::mvfst_common_events_folly_eventbase + mvfst::mvfst_common_udpsocket_folly_async_udp_socket + mvfst::mvfst_fizz_client_handshake + mvfst::mvfst_state_transport_settings + fizz::fizz + Folly::folly_coro_promise + Folly::folly_coro_task + Folly::folly_coro_timeout + Folly::folly_futures_core + Folly::folly_io_async_async_base + Folly::folly_network_address +) + +moxygen_add_library(moxygen_util_fetch_interval_set + EXPORTED_DEPS + moxygen_moq_framer + Folly::folly_container_f14_hash +) + +moxygen_add_library(moxygen_util_bidi_iterator) + +moxygen_add_library(moxygen_util_insecure_verifier_dangerous_do_not_use_in_production + EXPORTED_DEPS + fizz::fizz +) + +moxygen_add_library(moxygen_util_signal_handler + EXPORTED_DEPS + Folly::folly_io_async_async_signal_handler + Folly::folly_logging_logging +)