Skip to content

Commit 5adee57

Browse files
yufengwangcarestyled-commitsbzbarsky-apple
authored
Integrate libdatachannel lib with camera apps (project-chip#37970)
* Integrate libdatachannel lib with camera apps * Fix build path * Restyled by gn * Fix build issues * restyle * Update BUILD.gn Co-authored-by: Boris Zbarsky <bzbarsky@apple.com> --------- Co-authored-by: Restyled.io <commits@restyled.io> Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>
1 parent 3b8f004 commit 5adee57

File tree

5 files changed

+69
-140
lines changed

5 files changed

+69
-140
lines changed

BUILD.gn

+2-2
Original file line numberDiff line numberDiff line change
@@ -394,9 +394,9 @@ if (current_toolchain != "${dir_pw_toolchain}/default:default") {
394394
enable_linux_rvc_app_build =
395395
enable_default_builds && (host_os == "linux" || host_os == "mac")
396396

397+
# TODO: #37983: Add darwin support for libdatachannel and then add host_os == "mac" here.
397398
# Build the Linux Camera app example.
398-
enable_linux_camera_app_build =
399-
enable_default_builds && (host_os == "linux" || host_os == "mac")
399+
enable_linux_camera_app_build = enable_default_builds && host_os == "linux"
400400

401401
# Build the cc13x2x7_26x2x7 lock app example.
402402
enable_cc13x2x7_26x2x7_lock_app_build = enable_ti_simplelink_builds

examples/camera-app/linux/BUILD.gn

+6
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,18 @@ executable("chip-camera-app") {
4040
"${chip_root}/examples/camera-app/camera-common:camera-lib",
4141
"${chip_root}/examples/platform/linux:app-main",
4242
"${chip_root}/src/lib",
43+
"${chip_root}/third_party/libdatachannel:libdatachannel",
4344
]
4445

46+
libs = [ "datachannel" ]
47+
lib_dirs =
48+
[ rebase_path("${chip_root}/third_party/libdatachannel/repo/build") ]
49+
4550
include_dirs = [
4651
"include",
4752
"include/clusters/chime",
4853
"${chip_root}/examples/camera-app/camera-common/include",
54+
"${chip_root}/third_party/libdatachannel/repo/include",
4955
]
5056

5157
cflags = [ "-Wconversion" ]

examples/camera-controller/BUILD.gn

+7
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,15 @@ executable("camera-controller") {
107107
deps = [
108108
":camera-controller-utils",
109109
"${chip_root}/src/platform/logging:stdio",
110+
"${chip_root}/third_party/libdatachannel:libdatachannel",
110111
]
111112

113+
libs = [ "datachannel" ]
114+
lib_dirs =
115+
[ rebase_path("${chip_root}/third_party/libdatachannel/repo/build") ]
116+
117+
include_dirs = [ "${chip_root}/third_party/libdatachannel/repo/include" ]
118+
112119
output_dir = root_out_dir
113120
}
114121

third_party/libdatachannel/BUILD.gn

+6-138
Original file line numberDiff line numberDiff line change
@@ -12,144 +12,12 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
config("libdatachannel_config") {
16-
include_dirs = [
17-
"repo/include",
18-
"repo/include/rtc",
19-
]
15+
action("build_libdatachannel") {
16+
script = "scripts/build_libdatachannel.py"
17+
outputs = [ "$target_gen_dir/repo/build/libdatachannel.so" ]
18+
args = []
2019
}
2120

22-
config("libdatachannel_config_disable_warnings") {
23-
cflags_cc = [
24-
"-Wno-shadow",
25-
"-Wno-unreachable-code",
26-
"-Wno-non-virtual-dtor",
27-
"-Wno-implicit-fallthrough",
28-
]
29-
}
30-
31-
config("libdatachannel_config_enable_features") {
32-
cflags_cc = [
33-
"-fexceptions",
34-
"-frtti",
35-
]
36-
}
37-
38-
source_set("libdatachannel") {
39-
include_dirs = [
40-
"repo/src",
41-
"repo/include/rtc",
42-
"repo/deps/plog/include",
43-
"repo/deps/usrsctp/usrsctplib",
44-
"repo/deps/libjuice/include",
45-
"repo/deps/libsrtp/include",
46-
]
47-
48-
# ---------------------------------------------------------------------------
49-
# Source files from repo/src/*.cpp
50-
# ---------------------------------------------------------------------------
51-
sources = [
52-
"repo/src/av1rtppacketizer.cpp",
53-
"repo/src/candidate.cpp",
54-
"repo/src/capi.cpp",
55-
"repo/src/channel.cpp",
56-
"repo/src/configuration.cpp",
57-
"repo/src/datachannel.cpp",
58-
"repo/src/description.cpp",
59-
"repo/src/global.cpp",
60-
"repo/src/h264rtpdepacketizer.cpp",
61-
"repo/src/h264rtppacketizer.cpp",
62-
"repo/src/h265nalunit.cpp",
63-
"repo/src/h265rtpdepacketizer.cpp",
64-
"repo/src/h265rtppacketizer.cpp",
65-
"repo/src/mediahandler.cpp",
66-
"repo/src/message.cpp",
67-
"repo/src/nalunit.cpp",
68-
"repo/src/pacinghandler.cpp",
69-
"repo/src/peerconnection.cpp",
70-
"repo/src/plihandler.cpp",
71-
"repo/src/rembhandler.cpp",
72-
"repo/src/rtcpnackresponder.cpp",
73-
"repo/src/rtcpreceivingsession.cpp",
74-
"repo/src/rtcpsrreporter.cpp",
75-
"repo/src/rtp.cpp",
76-
"repo/src/rtpdepacketizer.cpp",
77-
"repo/src/rtppacketizationconfig.cpp",
78-
"repo/src/rtppacketizer.cpp",
79-
"repo/src/track.cpp",
80-
"repo/src/websocket.cpp",
81-
"repo/src/websocketserver.cpp",
82-
]
83-
84-
# ---------------------------------------------------------------------------
85-
# Source files from repo/src/impl/*.cpp
86-
# ---------------------------------------------------------------------------
87-
sources += [
88-
"repo/src/impl/certificate.cpp",
89-
"repo/src/impl/channel.cpp",
90-
"repo/src/impl/datachannel.cpp",
91-
"repo/src/impl/dtlssrtptransport.cpp",
92-
"repo/src/impl/dtlstransport.cpp",
93-
"repo/src/impl/http.cpp",
94-
"repo/src/impl/httpproxytransport.cpp",
95-
"repo/src/impl/icetransport.cpp",
96-
"repo/src/impl/init.cpp",
97-
"repo/src/impl/logcounter.cpp",
98-
"repo/src/impl/peerconnection.cpp",
99-
"repo/src/impl/pollinterrupter.cpp",
100-
"repo/src/impl/pollservice.cpp",
101-
"repo/src/impl/processor.cpp",
102-
"repo/src/impl/sctptransport.cpp",
103-
"repo/src/impl/sha.cpp",
104-
"repo/src/impl/tcpserver.cpp",
105-
"repo/src/impl/tcptransport.cpp",
106-
"repo/src/impl/threadpool.cpp",
107-
"repo/src/impl/tls.cpp",
108-
"repo/src/impl/tlstransport.cpp",
109-
"repo/src/impl/track.cpp",
110-
"repo/src/impl/transport.cpp",
111-
"repo/src/impl/utils.cpp",
112-
"repo/src/impl/verifiedtlstransport.cpp",
113-
"repo/src/impl/websocket.cpp",
114-
"repo/src/impl/websocketserver.cpp",
115-
"repo/src/impl/wshandshake.cpp",
116-
"repo/src/impl/wstransport.cpp",
117-
]
118-
119-
public_configs = [ ":libdatachannel_config" ]
120-
configs += [
121-
":libdatachannel_config_disable_warnings",
122-
":libdatachannel_config_enable_features",
123-
]
124-
125-
defines = [
126-
"BUILD_SHARED_LIBS=1", # default ON in the CMake
127-
"BUILD_SHARED_DEPS_LIBS=0", # default OFF
128-
"USE_GNUTLS=0", # default OFF => no GnuTLS
129-
"USE_MBEDTLS=0", # default OFF => no MbedTLS
130-
"USE_NICE=0", # default OFF => no libnice
131-
"PREFER_SYSTEM_LIB=0", # default OFF
132-
"USE_SYSTEM_SRTP=0", # default from PREFER_SYSTEM_LIB
133-
"USE_SYSTEM_JUICE=0",
134-
"USE_SYSTEM_USRSCTP=0",
135-
"USE_SYSTEM_PLOG=0",
136-
"USE_SYSTEM_JSON=0",
137-
"NO_WEBSOCKET=0", # default OFF => websockets on
138-
"NO_MEDIA=0", # default OFF => media on
139-
"NO_EXAMPLES=0", # default OFF
140-
"NO_TESTS=0", # default OFF
141-
"WARNINGS_AS_ERRORS=0", # default OFF
142-
"CAPI_STDCALL=0", # default OFF
143-
"SCTP_DEBUG=0", # default OFF
144-
"RTC_UPDATE_VERSION_HEADER=0", # default OFF
145-
146-
# Because NO_WEBSOCKET=0 => RTC_ENABLE_WEBSOCKET=1
147-
"RTC_ENABLE_WEBSOCKET=1",
148-
149-
# Because NO_MEDIA=0 => RTC_ENABLE_MEDIA=1
150-
"RTC_ENABLE_MEDIA=1",
151-
152-
# Because USE_SYSTEM_SRTP=0 => RTC_SYSTEM_SRTP=0
153-
"RTC_SYSTEM_SRTP=0",
154-
]
21+
shared_library("libdatachannel") {
22+
deps = [ ":build_libdatachannel" ]
15523
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#!/usr/bin/env python3
2+
import os
3+
import subprocess
4+
import sys
5+
6+
7+
def main():
8+
# Get the script directory
9+
script_dir = os.path.dirname(os.path.abspath(__file__))
10+
11+
# Set the repo directory
12+
repo_dir = os.path.join(script_dir, "..", "repo")
13+
14+
# Change to the repo directory
15+
os.chdir(repo_dir)
16+
print(f"Changed directory to: {repo_dir}")
17+
18+
# Generate build files in ./build
19+
cmake_cmd = [
20+
"cmake",
21+
"-B", "build",
22+
"-DUSE_GNUTLS=0",
23+
"-DUSE_NICE=0",
24+
"-DCMAKE_BUILD_TYPE=Release",
25+
"-DCMAKE_CXX_FLAGS=-Wno-shadow",
26+
]
27+
28+
print(f"Running: {' '.join(cmake_cmd)}")
29+
result = subprocess.run(cmake_cmd, check=True)
30+
31+
# Change to build directory
32+
build_dir = os.path.join(repo_dir, "build")
33+
os.chdir(build_dir)
34+
print(f"Changed directory to: {build_dir}")
35+
36+
# Build with Make
37+
make_cmd = ["make", "-j2"]
38+
print(f"Running: {' '.join(make_cmd)}")
39+
result = subprocess.run(make_cmd, check=True)
40+
41+
print("libdatachannel build complete.")
42+
print(f"Artifacts are located in: {build_dir}")
43+
44+
return 0
45+
46+
47+
if __name__ == "__main__":
48+
sys.exit(main())

0 commit comments

Comments
 (0)