Skip to content

Commit 2b6965b

Browse files
properly include ABSL_PROPOGATE_CXX_STD
1 parent 0969c31 commit 2b6965b

5 files changed

Lines changed: 61 additions & 20 deletions

File tree

CMakeLists.txt

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,26 @@ if(TARGET protobuf::libprotobuf)
114114
else()
115115
message(FATAL_ERROR "No protobuf library target found (expected protobuf::libprotobuf)")
116116
endif()
117+
set(LIVEKIT_THIRD_PARTY_INCLUDE_DIRS ${Protobuf_INCLUDE_DIRS})
118+
if(TARGET absl::base)
119+
livekit_get_interface_includes(absl::base _absl_inc)
120+
if(_absl_inc)
121+
list(APPEND LIVEKIT_THIRD_PARTY_INCLUDE_DIRS ${_absl_inc})
122+
endif()
123+
endif()
124+
if(TARGET spdlog::spdlog)
125+
livekit_get_interface_includes(spdlog::spdlog _spdlog_inc)
126+
if(_spdlog_inc)
127+
list(APPEND LIVEKIT_THIRD_PARTY_INCLUDE_DIRS ${_spdlog_inc})
128+
endif()
129+
endif()
117130
target_include_directories(livekit_proto SYSTEM PRIVATE
118131
"${PROTO_BINARY_DIR}"
119132
${Protobuf_INCLUDE_DIRS}
120133
)
121134
target_link_libraries(livekit_proto PRIVATE ${LIVEKIT_PROTOBUF_TARGET})
122135
if(TARGET absl::base)
123-
get_target_property(_absl_inc absl::base INTERFACE_INCLUDE_DIRECTORIES)
136+
livekit_get_interface_includes(absl::base _absl_inc)
124137
if(_absl_inc)
125138
target_include_directories(livekit_proto SYSTEM PRIVATE ${_absl_inc})
126139
endif()
@@ -436,8 +449,9 @@ target_include_directories(livekit
436449
)
437450

438451
target_include_directories(livekit SYSTEM PRIVATE
439-
${RUST_ROOT}/livekit-ffi/include
440-
${PROTO_BINARY_DIR}
452+
${RUST_ROOT}/livekit-ffi/include
453+
${PROTO_BINARY_DIR}
454+
${LIVEKIT_THIRD_PARTY_INCLUDE_DIRS}
441455
)
442456

443457
target_link_libraries(livekit

cmake/protobuf.cmake

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
131131
# Disable installs/exports in subprojects (avoids export-set errors)
132132
set(protobuf_INSTALL OFF CACHE BOOL "" FORCE)
133133
set(ABSL_ENABLE_INSTALL OFF CACHE BOOL "" FORCE)
134+
set(ABSL_PROPAGATE_CXX_STD ON CACHE BOOL "" FORCE)
134135
set(utf8_range_ENABLE_INSTALL OFF CACHE BOOL "" FORCE)
135136

136137
# Force hidden visibility on every target created by the FetchContent
@@ -159,10 +160,10 @@ if(MSVC)
159160
endif()
160161

161162
# Make abseil available first so protobuf can find absl:: targets.
162-
FetchContent_MakeAvailable(livekit_abseil)
163+
livekit_fetchcontent_makeavailable(livekit_abseil)
163164
livekit_collect_targets_in_directory(_livekit_abseil_targets "${livekit_abseil_BINARY_DIR}")
164165
foreach(_livekit_abseil_target IN LISTS _livekit_abseil_targets)
165-
livekit_treat_as_external(${_livekit_abseil_target})
166+
livekit_disable_warnings(${_livekit_abseil_target})
166167
endforeach()
167168

168169
# Workaround for some abseil flags on Apple Silicon.
@@ -190,10 +191,10 @@ if(NOT TARGET absl::base)
190191
endif()
191192

192193
# Now make protobuf available.
193-
FetchContent_MakeAvailable(livekit_protobuf)
194+
livekit_fetchcontent_makeavailable(livekit_protobuf)
194195
livekit_collect_targets_in_directory(_livekit_protobuf_targets "${livekit_protobuf_BINARY_DIR}")
195196
foreach(_livekit_protobuf_target IN LISTS _livekit_protobuf_targets)
196-
livekit_treat_as_external(${_livekit_protobuf_target})
197+
livekit_disable_warnings(${_livekit_protobuf_target})
197198
endforeach()
198199

199200
# Protobuf targets: modern protobuf exports protobuf::protoc etc.
@@ -216,8 +217,7 @@ endif()
216217

217218
# Include dirs: prefer target usage; keep this var for your existing CMakeLists.
218219
if(TARGET protobuf::libprotobuf)
219-
livekit_treat_as_external(protobuf::libprotobuf)
220-
get_target_property(_pb_includes protobuf::libprotobuf INTERFACE_INCLUDE_DIRECTORIES)
220+
livekit_get_interface_includes(protobuf::libprotobuf _pb_includes)
221221
endif()
222222
if(NOT _pb_includes)
223223
set(_pb_includes "${livekit_protobuf_SOURCE_DIR}/src")

cmake/spdlog.cmake

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,11 @@ set(SPDLOG_BUILD_EXAMPLE OFF CACHE BOOL "" FORCE)
8383
set(SPDLOG_BUILD_TESTS OFF CACHE BOOL "" FORCE)
8484
set(SPDLOG_INSTALL OFF CACHE BOOL "" FORCE)
8585

86-
FetchContent_MakeAvailable(livekit_spdlog)
86+
livekit_fetchcontent_makeavailable(livekit_spdlog)
8787
livekit_collect_targets_in_directory(_livekit_spdlog_targets "${livekit_spdlog_BINARY_DIR}")
8888
foreach(_livekit_spdlog_target IN LISTS _livekit_spdlog_targets)
89-
livekit_treat_as_external(${_livekit_spdlog_target})
89+
livekit_disable_warnings(${_livekit_spdlog_target})
9090
endforeach()
91-
if(TARGET spdlog::spdlog)
92-
livekit_treat_as_external(spdlog::spdlog)
93-
endif()
9491

9592
# spdlog is linked PRIVATE into liblivekit and must not leak its symbols into
9693
# the SDK's exported ABI. Force hidden visibility on the spdlog target so its

cmake/warnings.cmake

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,27 @@ function(livekit_mark_system_includes target)
6565
endif()
6666
endfunction()
6767

68+
function(livekit_get_interface_includes target out_var)
69+
_livekit_resolve_target(${target} _resolved_target)
70+
if(NOT _resolved_target)
71+
set(${out_var} "" PARENT_SCOPE)
72+
return()
73+
endif()
74+
75+
get_target_property(_interface_includes ${_resolved_target} INTERFACE_INCLUDE_DIRECTORIES)
76+
if(_interface_includes)
77+
set(${out_var} ${_interface_includes} PARENT_SCOPE)
78+
else()
79+
set(${out_var} "" PARENT_SCOPE)
80+
endif()
81+
endfunction()
82+
83+
function(livekit_fetchcontent_makeavailable)
84+
set(CMAKE_WARN_DEPRECATED OFF)
85+
set(CMAKE_POLICY_VERSION_MINIMUM 3.10)
86+
FetchContent_MakeAvailable(${ARGV})
87+
endfunction()
88+
6889
function(livekit_collect_targets_in_directory out_var directory)
6990
get_property(_targets DIRECTORY "${directory}" PROPERTY BUILDSYSTEM_TARGETS)
7091
get_property(_subdirectories DIRECTORY "${directory}" PROPERTY SUBDIRECTORIES)

src/tests/CMakeLists.txt

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,34 @@ set(INSTALL_GTEST OFF CACHE BOOL "" FORCE)
2222
# Skip GMock, not used currently
2323
set(BUILD_GMOCK OFF CACHE BOOL "" FORCE)
2424

25-
FetchContent_MakeAvailable(googletest)
25+
livekit_fetchcontent_makeavailable(googletest)
2626
livekit_collect_targets_in_directory(_livekit_googletest_targets "${googletest_BINARY_DIR}")
2727
foreach(_livekit_googletest_target IN LISTS _livekit_googletest_targets)
28-
livekit_treat_as_external(${_livekit_googletest_target})
28+
livekit_disable_warnings(${_livekit_googletest_target})
2929
endforeach()
30-
if(TARGET GTest::gtest_main)
31-
livekit_treat_as_external(GTest::gtest_main)
32-
endif()
3330

3431
set(LIVEKIT_TEST_THIRD_PARTY_INCLUDE_DIRS
3532
${LIVEKIT_BINARY_DIR}/generated
3633
${Protobuf_INCLUDE_DIRS}
3734
)
3835
if(TARGET absl::base)
39-
get_target_property(_livekit_test_absl_inc absl::base INTERFACE_INCLUDE_DIRECTORIES)
36+
livekit_get_interface_includes(absl::base _livekit_test_absl_inc)
4037
if(_livekit_test_absl_inc)
4138
list(APPEND LIVEKIT_TEST_THIRD_PARTY_INCLUDE_DIRS ${_livekit_test_absl_inc})
4239
endif()
4340
endif()
41+
if(TARGET spdlog::spdlog)
42+
livekit_get_interface_includes(spdlog::spdlog _livekit_test_spdlog_inc)
43+
if(_livekit_test_spdlog_inc)
44+
list(APPEND LIVEKIT_TEST_THIRD_PARTY_INCLUDE_DIRS ${_livekit_test_spdlog_inc})
45+
endif()
46+
endif()
47+
if(TARGET GTest::gtest_main)
48+
livekit_get_interface_includes(GTest::gtest_main _livekit_test_gtest_inc)
49+
if(_livekit_test_gtest_inc)
50+
list(APPEND LIVEKIT_TEST_THIRD_PARTY_INCLUDE_DIRS ${_livekit_test_gtest_inc})
51+
endif()
52+
endif()
4453

4554
# Enable CTest
4655
enable_testing()

0 commit comments

Comments
 (0)