Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 52 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,26 @@ else()
set(LIVEKIT_IS_TOPLEVEL FALSE)
endif()

function(livekit_enable_strict_compile_warnings target_name)
if(MSVC)
target_compile_options(${target_name} PRIVATE /permissive- /Zc:__cplusplus /W4 /WX /wd4251 /wd4267)
else()
target_compile_options(${target_name} PRIVATE
-Wall
-Wextra
-Wpedantic
-Werror
$<$<COMPILE_LANG_AND_ID:CXX,Clang,AppleClang>:-Wno-gnu-zero-variadic-macro-arguments>
)
endif()
endfunction()

function(livekit_add_system_include_dirs target_name)
if(ARGN)
target_include_directories(${target_name} SYSTEM PRIVATE ${ARGN})
endif()
endfunction()

if(LIVEKIT_IS_TOPLEVEL)
# Since we use separate build directories (build-debug/build-release),
# we don't need additional platform/config subdirectories
Expand Down Expand Up @@ -113,10 +133,31 @@ if(TARGET protobuf::libprotobuf)
else()
message(FATAL_ERROR "No protobuf library target found (expected protobuf::libprotobuf)")
endif()
target_include_directories(livekit_proto PRIVATE

set(LIVEKIT_PROTO_INCLUDE_DIRS
"${PROTO_BINARY_DIR}"
${Protobuf_INCLUDE_DIRS}
)
if(DEFINED livekit_abseil_SOURCE_DIR)
list(APPEND LIVEKIT_PROTO_INCLUDE_DIRS "${livekit_abseil_SOURCE_DIR}")
endif()
set(LIVEKIT_EXTERNAL_SYSTEM_INCLUDE_DIRS)
foreach(_livekit_system_include_target
absl::base
spdlog::spdlog
spdlog)
if(TARGET ${_livekit_system_include_target})
get_target_property(_livekit_system_includes
${_livekit_system_include_target}
INTERFACE_INCLUDE_DIRECTORIES)
if(_livekit_system_includes)
list(APPEND LIVEKIT_EXTERNAL_SYSTEM_INCLUDE_DIRS ${_livekit_system_includes})
endif()
endif()
endforeach()
list(REMOVE_DUPLICATES LIVEKIT_EXTERNAL_SYSTEM_INCLUDE_DIRS)

target_include_directories(livekit_proto PRIVATE ${LIVEKIT_PROTO_INCLUDE_DIRS})
target_link_libraries(livekit_proto PRIVATE ${LIVEKIT_PROTOBUF_TARGET})
if(TARGET absl::base)
get_target_property(_absl_inc absl::base INTERFACE_INCLUDE_DIRECTORIES)
Expand Down Expand Up @@ -403,6 +444,10 @@ add_library(livekit SHARED
src/trace/trace_event.h
src/trace/tracing.cpp
)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set_source_files_properties(src/trace/event_tracer.cpp
PROPERTIES COMPILE_OPTIONS "-Wno-error=type-limits")
endif()
# Symbol visibility: keep liblivekit's exported ABI restricted to the public
# LiveKit API. By default everything is hidden unless marked by the LIVEKIT_API
# macro in code
Expand All @@ -425,6 +470,10 @@ endif()

target_sources(livekit PRIVATE $<TARGET_OBJECTS:livekit_proto>)

target_include_directories(livekit
BEFORE PRIVATE
${LIVEKIT_PROTO_INCLUDE_DIRS}
)
target_include_directories(livekit
PUBLIC
$<BUILD_INTERFACE:${LIVEKIT_ROOT_DIR}/include>
Expand All @@ -433,8 +482,8 @@ target_include_directories(livekit
${LIVEKIT_ROOT_DIR}/src
${LIVEKIT_ROOT_DIR}/src/trace
${RUST_ROOT}/livekit-ffi/include
${PROTO_BINARY_DIR}
)
livekit_add_system_include_dirs(livekit ${LIVEKIT_EXTERNAL_SYSTEM_INCLUDE_DIRS})

target_link_libraries(livekit
PRIVATE
Expand Down Expand Up @@ -600,11 +649,7 @@ if(UNIX AND NOT APPLE)
target_link_libraries(livekit PRIVATE OpenSSL::SSL OpenSSL::Crypto)
endif()

if(MSVC)
target_compile_options(livekit PRIVATE /permissive- /Zc:__cplusplus /W4)
else()
target_compile_options(livekit PRIVATE -Wall -Wextra -Wpedantic)
endif()
livekit_enable_strict_compile_warnings(livekit)

# -------------------- Install / Package (SDK bundle) --------------------
include(GNUInstallDirs)
Expand Down
4 changes: 3 additions & 1 deletion scripts/clang-tidy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,9 @@ fi
# SDK and we forward it to every clang-tidy invocation via --extra-arg. Linux
# CI doesn't need this -- the system clang-tidy already finds libstdc++/libc++
# through its built-in resource dir.
extra_args=()
# Match the Clang build's variadic macro diagnostic suppression when clang-tidy
# is driven from GCC compile commands in Linux CI.
extra_args=(-extra-arg=-Wno-gnu-zero-variadic-macro-arguments)
if [[ "$(uname)" == "Darwin" ]]; then
sdk_path="$(xcrun --show-sdk-path 2>/dev/null || true)"
if [[ -n "${sdk_path}" ]]; then
Expand Down
37 changes: 15 additions & 22 deletions src/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,23 +67,18 @@ if(UNIT_TEST_SOURCES)
GTest::gtest_main
)

target_include_directories(livekit_unit_tests
BEFORE PRIVATE
${LIVEKIT_PROTO_INCLUDE_DIRS}
)
target_include_directories(livekit_unit_tests
PRIVATE
${LIVEKIT_ROOT_DIR}/include
${LIVEKIT_ROOT_DIR}/src
${LIVEKIT_ROOT_DIR}/src/trace
${LIVEKIT_BINARY_DIR}/generated
${CMAKE_CURRENT_SOURCE_DIR}/benchmark
${Protobuf_INCLUDE_DIRS}
)
if(TARGET absl::base)
get_target_property(_livekit_unit_test_absl_inc absl::base INTERFACE_INCLUDE_DIRECTORIES)
if(_livekit_unit_test_absl_inc)
target_include_directories(livekit_unit_tests PRIVATE
${_livekit_unit_test_absl_inc}
)
endif()
endif()
livekit_add_system_include_dirs(livekit_unit_tests ${LIVEKIT_EXTERNAL_SYSTEM_INCLUDE_DIRS})

target_compile_definitions(livekit_unit_tests
PRIVATE
Expand Down Expand Up @@ -166,22 +161,17 @@ if(INTEGRATION_TEST_SOURCES)
GTest::gtest_main
)

target_include_directories(livekit_integration_tests
BEFORE PRIVATE
${LIVEKIT_PROTO_INCLUDE_DIRS}
)
target_include_directories(livekit_integration_tests
PRIVATE
${LIVEKIT_ROOT_DIR}/include
${LIVEKIT_ROOT_DIR}/src
${LIVEKIT_BINARY_DIR}/generated
${CMAKE_CURRENT_SOURCE_DIR}/benchmark
${Protobuf_INCLUDE_DIRS}
)
if(TARGET absl::base)
get_target_property(_livekit_test_absl_inc absl::base INTERFACE_INCLUDE_DIRECTORIES)
if(_livekit_test_absl_inc)
target_include_directories(livekit_integration_tests PRIVATE
${_livekit_test_absl_inc}
)
endif()
endif()
livekit_add_system_include_dirs(livekit_integration_tests ${LIVEKIT_EXTERNAL_SYSTEM_INCLUDE_DIRS})

target_compile_definitions(livekit_integration_tests
PRIVATE
Expand Down Expand Up @@ -254,13 +244,16 @@ if(STRESS_TEST_SOURCES)
GTest::gtest_main
)

target_include_directories(livekit_stress_tests
BEFORE PRIVATE
${LIVEKIT_PROTO_INCLUDE_DIRS}
)
target_include_directories(livekit_stress_tests
PRIVATE
${LIVEKIT_ROOT_DIR}/include
${LIVEKIT_ROOT_DIR}/src
${LIVEKIT_BINARY_DIR}/generated
${Protobuf_INCLUDE_DIRS}
)
livekit_add_system_include_dirs(livekit_stress_tests ${LIVEKIT_EXTERNAL_SYSTEM_INCLUDE_DIRS})

target_compile_definitions(livekit_stress_tests
PRIVATE
Expand Down
2 changes: 1 addition & 1 deletion src/video_source.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ void VideoSource::captureFrame(const VideoFrame& frame, const VideoCaptureOption
}

void VideoSource::captureFrame(const VideoFrame& frame, std::int64_t timestamp_us, VideoRotation rotation) {
captureFrame(frame, VideoCaptureOptions{timestamp_us, rotation});
captureFrame(frame, VideoCaptureOptions{timestamp_us, rotation, {}});
}

} // namespace livekit
Loading