@@ -6,6 +6,8 @@ set(CMAKE_CXX_STANDARD 17)
66set (CMAKE_CXX_STANDARD_REQUIRED ON )
77set (CMAKE_POSITION_INDEPENDENT_CODE ON )
88
9+ ############## Protobuf ################
10+
911# ---- Protobuf (FFI protos) ----
1012set (FFI_PROTO_DIR ${CMAKE_SOURCE_DIR} /client-sdk-rust/livekit-ffi/protocol)
1113set (FFI_PROTO_FILES
@@ -25,7 +27,7 @@ set(FFI_PROTO_FILES
2527set (PROTO_BINARY_DIR ${CMAKE_BINARY_DIR} /generated )
2628file (MAKE_DIRECTORY ${PROTO_BINARY_DIR} )
2729
28- find_package (Protobuf REQUIRED) # protobuf::libprotobuf, protoc
30+ find_package (Protobuf REQUIRED)
2931find_package (absl CONFIG REQUIRED)
3032
3133# Object library that owns generated .pb.cc/.pb.h
@@ -44,6 +46,44 @@ protobuf_generate(
4446 IMPORT_DIRS ${FFI_PROTO_DIR}
4547)
4648
49+ ########### auto-gen build.h #######################
50+
51+ # Where to place the generated header
52+ set (GENERATED_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR} /generated" )
53+ file (MAKE_DIRECTORY "${GENERATED_INCLUDE_DIR} " )
54+
55+ # Try to capture git commit; fall back to "unknown" if git isn't available or repo isn't present.
56+ set (GIT_COMMIT "unknown" )
57+ find_package (Git QUIET )
58+ if (GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR} /.git" )
59+ execute_process (
60+ COMMAND "${GIT_EXECUTABLE} " rev-parse --short HEAD
61+ WORKING_DIRECTORY "${CMAKE_SOURCE_DIR} "
62+ OUTPUT_VARIABLE GIT_COMMIT
63+ OUTPUT_STRIP_TRAILING_WHITESPACE
64+ ERROR_QUIET
65+ )
66+ endif ()
67+
68+ # Build timestamp
69+ string (TIMESTAMP BUILD_DATE "%Y-%m-%d %H:%M:%S" )
70+
71+ # Comment shown at the top of the generated header
72+ set (GENERATED_COMMENT "This file was auto-generated by CMake on ${LIVEKIT_BUILD_DATE} . Do NOT edit manually. Edit build.h.in instead." )
73+
74+ # Generate the header from the template
75+ configure_file (
76+ "${CMAKE_CURRENT_SOURCE_DIR} /build.h.in"
77+ "${GENERATED_INCLUDE_DIR} /build.h"
78+ @ONLY
79+ )
80+
81+ # Include the directory for the headers
82+ include_directories ("${GENERATED_INCLUDE_DIR} " )
83+
84+
85+ ########### Livekit Rust SDK #######################
86+
4787# Find cargo
4888find_program (CARGO_EXECUTABLE NAMES cargo REQUIRED)
4989
@@ -104,19 +144,30 @@ add_custom_target(build_rust_ffi ALL
104144# ---- C++ wrapper library ----
105145add_library (livekit
106146 include /livekit/room.h
147+ include /livekit/ffi_handle.h
107148 include /livekit/ffi_client.h
149+ include /livekit/participant.h
108150 include /livekit/livekit.h
151+ include /livekit/stats.h
152+ include /livekit/track.h
153+ src/ffi_handle.cpp
109154 src/ffi_client.cpp
110155 src/room.cpp
156+ src/room_event_converter.cpp
157+ src/room_event_converter.h
158+ src/stats.cpp
159+ src/track.cpp
111160)
112161
113162# Add generated proto objects to the wrapper
114163target_sources (livekit PRIVATE $<TARGET_OBJECTS:livekit_proto>)
115164
116165target_include_directories (livekit PUBLIC
117166 ${CMAKE_SOURCE_DIR} /include
167+ ${CMAKE_SOURCE_DIR} /src
118168 ${RUST_ROOT} /livekit-ffi/include
119169 ${PROTO_BINARY_DIR}
170+ ${GENERATED_INCLUDE_DIR}
120171)
121172
122173target_link_libraries (livekit
0 commit comments