blob: 6ae2b71d854d89a6f92e636d44cca81157eb29ef [file] [log] [blame]
Sami Kalliomaki9c0c75b2016-06-29 12:55:001# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
2#
3# Use of this source code is governed by a BSD-style license
4# that can be found in the LICENSE file in the root of the source
5# tree. An additional intellectual property rights grant can be found
6# in the file PATENTS. All contributing project authors may
7# be found in the AUTHORS file in the root of the source tree.
8
mbonadei9aa3f0a2017-01-24 14:58:229import("../webrtc.gni")
Qiang Chen43fb9122017-12-20 18:47:3610
Sami Kalliomaki9c0c75b2016-06-29 12:55:0011if (is_android) {
12 import("//build/config/android/config.gni")
13 import("//build/config/android/rules.gni")
tkchin2ddfdba2016-08-08 04:37:4514} else if (is_mac) {
15 import("//build/config/mac/rules.gni")
16} else if (is_ios) {
17 import("//build/config/ios/rules.gni")
Tom Anderson06e4fc52022-04-06 22:22:3318} else if (is_linux || is_chromeos) {
19 import("//build/config/linux/pkg_config.gni")
Sami Kalliomaki9c0c75b2016-06-29 12:55:0020}
21
22group("examples") {
kjellander6ceab082016-10-28 12:44:0323 # This target shall build all targets in examples.
24 testonly = true
Mirko Bonadei1a339c32017-12-14 12:06:1025 deps = []
Sami Kalliomaki9c0c75b2016-06-29 12:55:0026
tkchin2ddfdba2016-08-08 04:37:4527 if (is_android) {
Mirko Bonadei1a339c32017-12-14 12:06:1028 deps += [
kjellander6ceab082016-10-28 12:44:0329 ":AppRTCMobile",
Sami Kalliomäkid54f5f52018-08-03 11:23:0530 ":AppRTCMobile_test_apk",
Christoffer Janssonbbde8b62023-04-18 10:26:0831
32 #TODO(https://bugs.webrtc.org/15095) - Fix or remove this target.
33 #":libwebrtc_unity",
Jason Long00b84622020-07-20 21:52:1234 "androidvoip",
kjellander6ceab082016-10-28 12:44:0335 ]
Sami Kalliomäki3e77afd2018-03-08 15:43:1636
37 # TODO(sakal): We include some code from the tests. Remove this dependency
38 # and remove this if-clause.
39 if (rtc_include_tests) {
Artem Titov94b57c02019-03-21 12:35:1040 deps += [ "androidnativeapi" ]
Sami Kalliomäki3e77afd2018-03-08 15:43:1641 }
kjellander6ceab082016-10-28 12:44:0342 }
43
charujainaca3a242016-11-01 10:09:1544 if (!build_with_chromium) {
Mirko Bonadei1a339c32017-12-14 12:06:1045 deps += [ ":stun_prober" ]
charujainaca3a242016-11-01 10:09:1546 }
47
kjellander6ceab082016-10-28 12:44:0348 if (is_ios || (is_mac && target_cpu != "x86")) {
Mirko Bonadei1a339c32017-12-14 12:06:1049 deps += [ ":AppRTCMobile" ]
Sami Kalliomaki9c0c75b2016-06-29 12:55:0050 }
kjellander6ceab082016-10-28 12:44:0351
Hidehiko Abef264e702020-09-10 09:10:1152 if (is_linux || is_chromeos || is_win) {
Mirko Bonadei1a339c32017-12-14 12:06:1053 deps += [
kthelgason0727f152016-08-08 16:03:2354 ":peerconnection_server",
kthelgason0727f152016-08-08 16:03:2355 ":stunserver",
56 ":turnserver",
57 ]
Robin Raymondce1b1402018-11-23 01:10:1158 if (current_os != "winuwp") {
59 deps += [ ":peerconnection_client" ]
60 }
kthelgason0727f152016-08-08 16:03:2361 }
George Zhou2770c3d2018-03-07 17:58:5462
63 if (is_android || is_win) {
64 deps += [ ":webrtc_unity_plugin" ]
65 }
Sami Kalliomaki9c0c75b2016-06-29 12:55:0066}
67
Mirko Bonadei86d053c2019-10-17 19:32:0468rtc_library("read_auth_file") {
Niels Möller9862c2e2018-10-30 11:20:0369 testonly = true
70 sources = [
71 "turnserver/read_auth_file.cc",
72 "turnserver/read_auth_file.h",
73 ]
Ali Tofighfd6a4d62022-03-31 08:36:4874 deps = [
75 "../api:array_view",
Florent Castelli57aa81b2022-04-04 15:14:0276 "../rtc_base:stringutils",
Ali Tofighfd6a4d62022-03-31 08:36:4877 ]
78 absl_deps = [ "//third_party/abseil-cpp/absl/strings:strings" ]
Niels Möller9862c2e2018-10-30 11:20:0379}
80
81if (rtc_include_tests) {
82 rtc_test("examples_unittests") {
83 testonly = true
Mirko Bonadeiccbe95f2020-01-21 11:10:1084 sources = [ "turnserver/read_auth_file_unittest.cc" ]
Niels Möller9862c2e2018-10-30 11:20:0385 deps = [
86 ":read_auth_file",
87 "../test:test_main",
88 "//test:test_support",
89 "//testing/gtest",
90 ]
91 }
92}
93
tkchin2ddfdba2016-08-08 04:37:4594if (is_android) {
Mirko Bonadeifbb3b7d2017-11-07 15:36:3395 rtc_android_apk("AppRTCMobile") {
kjellander1993b1d2017-03-06 08:29:2196 testonly = true
Magnus Jedvertc1815cf2016-09-27 08:10:4197 apk_name = "AppRTCMobile"
Sami Kalliomaki9c0c75b2016-06-29 12:55:0098 android_manifest = "androidapp/AndroidManifest.xml"
Jeremy Leconteb19cfee2020-06-25 20:57:4999 min_sdk_version = 21
Yaowen Guo9406c222022-05-25 23:39:36100 target_sdk_version = 31
Sami Kalliomaki9c0c75b2016-06-29 12:55:00101
102 deps = [
Magnus Jedvertc1815cf2016-09-27 08:10:41103 ":AppRTCMobile_javalib",
104 ":AppRTCMobile_resources",
jianjun.zhuc0247402017-07-11 13:20:45105 "../rtc_base:base_java",
Sami Kalliomaki9c0c75b2016-06-29 12:55:00106 ]
107
jianjun.zhuc0247402017-07-11 13:20:45108 shared_libraries = [ "../sdk/android:libjingle_peerconnection_so" ]
Sami Kalliomaki9c0c75b2016-06-29 12:55:00109 }
110
Mirko Bonadeifbb3b7d2017-11-07 15:36:33111 rtc_android_library("AppRTCMobile_javalib") {
kjellander1993b1d2017-03-06 08:29:21112 testonly = true
Courtney Edwards35c87b62020-05-19 11:44:42113 android_manifest = "androidapp/AndroidManifest.xml"
sakal07a050f2017-02-13 13:58:27114
Natalie Chouinard65bbcab2019-12-23 22:02:25115 sources = [
Sami Kalliomaki9c0c75b2016-06-29 12:55:00116 "androidapp/src/org/appspot/apprtc/AppRTCAudioManager.java",
henrikac3c2f312016-12-14 15:36:56117 "androidapp/src/org/appspot/apprtc/AppRTCBluetoothManager.java",
Sami Kalliomaki9c0c75b2016-06-29 12:55:00118 "androidapp/src/org/appspot/apprtc/AppRTCClient.java",
119 "androidapp/src/org/appspot/apprtc/AppRTCProximitySensor.java",
120 "androidapp/src/org/appspot/apprtc/CallActivity.java",
121 "androidapp/src/org/appspot/apprtc/CallFragment.java",
122 "androidapp/src/org/appspot/apprtc/CaptureQualityController.java",
123 "androidapp/src/org/appspot/apprtc/ConnectActivity.java",
124 "androidapp/src/org/appspot/apprtc/CpuMonitor.java",
125 "androidapp/src/org/appspot/apprtc/DirectRTCClient.java",
126 "androidapp/src/org/appspot/apprtc/HudFragment.java",
127 "androidapp/src/org/appspot/apprtc/PeerConnectionClient.java",
Natalie Chouinard65bbcab2019-12-23 22:02:25128 "androidapp/src/org/appspot/apprtc/RecordedAudioToFileController.java",
Sami Kalliomaki9c0c75b2016-06-29 12:55:00129 "androidapp/src/org/appspot/apprtc/RoomParametersFetcher.java",
Qingsi Wanga4e72b72018-02-12 18:34:18130 "androidapp/src/org/appspot/apprtc/RtcEventLog.java",
Sami Kalliomaki9c0c75b2016-06-29 12:55:00131 "androidapp/src/org/appspot/apprtc/SettingsActivity.java",
132 "androidapp/src/org/appspot/apprtc/SettingsFragment.java",
133 "androidapp/src/org/appspot/apprtc/TCPChannelClient.java",
134 "androidapp/src/org/appspot/apprtc/UnhandledExceptionHandler.java",
135 "androidapp/src/org/appspot/apprtc/WebSocketChannelClient.java",
136 "androidapp/src/org/appspot/apprtc/WebSocketRTCClient.java",
137 "androidapp/src/org/appspot/apprtc/util/AppRTCUtils.java",
138 "androidapp/src/org/appspot/apprtc/util/AsyncHttpURLConnection.java",
Sami Kalliomaki9c0c75b2016-06-29 12:55:00139 ]
140
Mohamed Heikal3f94fc52020-09-01 19:51:12141 resources_package = "org.appspot.apprtc"
Sami Kalliomaki9c0c75b2016-06-29 12:55:00142 deps = [
Magnus Jedvertc1815cf2016-09-27 08:10:41143 ":AppRTCMobile_resources",
jianjun.zhuc0247402017-07-11 13:20:45144 "../rtc_base:base_java",
Sami Kalliomäki7d8f5942018-04-23 13:07:34145 "../sdk/android:audio_api_java",
Sami Kalliomäki725c1062018-03-28 08:49:18146 "../sdk/android:base_java",
Sami Kalliomäki1641ca32018-04-04 13:59:31147 "../sdk/android:camera_java",
Anders Carlsson1e06d882018-07-10 07:33:30148 "../sdk/android:default_video_codec_factory_java",
Sami Kalliomäki1641ca32018-04-04 13:59:31149 "../sdk/android:filevideo_java",
Sami Kalliomäki725c1062018-03-28 08:49:18150 "../sdk/android:hwcodecs_java",
Sami Kalliomäki7d8f5942018-04-23 13:07:34151 "../sdk/android:java_audio_device_module_java",
jianjun.zhuc0247402017-07-11 13:20:45152 "../sdk/android:libjingle_peerconnection_java",
153 "../sdk/android:libjingle_peerconnection_metrics_default_java",
Sami Kalliomäki1641ca32018-04-04 13:59:31154 "../sdk/android:peerconnection_java",
155 "../sdk/android:screencapturer_java",
156 "../sdk/android:surfaceviewrenderer_java",
Sami Kalliomäki725c1062018-03-28 08:49:18157 "../sdk/android:swcodecs_java",
Sami Kalliomäki1641ca32018-04-04 13:59:31158 "../sdk/android:video_api_java",
Sami Kalliomäki903bd412018-07-24 08:53:28159 "../sdk/android:video_java",
jianjun.zhuc0247402017-07-11 13:20:45160 "androidapp/third_party/autobanh:autobanh_java",
Byoungchan Lee02334e02021-08-14 02:41:59161 "//third_party/androidx:androidx_annotation_annotation_java",
Sami Kalliomaki9c0c75b2016-06-29 12:55:00162 ]
163 }
164
Magnus Jedvertc1815cf2016-09-27 08:10:41165 android_resources("AppRTCMobile_resources") {
kjellander1993b1d2017-03-06 08:29:21166 testonly = true
Andrew Grieved4262df2020-03-25 16:59:50167 sources = [
168 "androidapp/res/drawable-hdpi/disconnect.png",
169 "androidapp/res/drawable-hdpi/ic_action_full_screen.png",
170 "androidapp/res/drawable-hdpi/ic_action_return_from_full_screen.png",
171 "androidapp/res/drawable-hdpi/ic_launcher.png",
172 "androidapp/res/drawable-hdpi/ic_loopback_call.png",
173 "androidapp/res/drawable-ldpi/disconnect.png",
174 "androidapp/res/drawable-ldpi/ic_action_full_screen.png",
175 "androidapp/res/drawable-ldpi/ic_action_return_from_full_screen.png",
176 "androidapp/res/drawable-ldpi/ic_launcher.png",
177 "androidapp/res/drawable-ldpi/ic_loopback_call.png",
178 "androidapp/res/drawable-mdpi/disconnect.png",
179 "androidapp/res/drawable-mdpi/ic_action_full_screen.png",
180 "androidapp/res/drawable-mdpi/ic_action_return_from_full_screen.png",
181 "androidapp/res/drawable-mdpi/ic_launcher.png",
182 "androidapp/res/drawable-mdpi/ic_loopback_call.png",
183 "androidapp/res/drawable-xhdpi/disconnect.png",
184 "androidapp/res/drawable-xhdpi/ic_action_full_screen.png",
185 "androidapp/res/drawable-xhdpi/ic_action_return_from_full_screen.png",
186 "androidapp/res/drawable-xhdpi/ic_launcher.png",
187 "androidapp/res/drawable-xhdpi/ic_loopback_call.png",
188 "androidapp/res/layout/activity_call.xml",
189 "androidapp/res/layout/activity_connect.xml",
190 "androidapp/res/layout/fragment_call.xml",
191 "androidapp/res/layout/fragment_hud.xml",
192 "androidapp/res/menu/connect_menu.xml",
Andrew Grieved4262df2020-03-25 16:59:50193 "androidapp/res/values-v17/styles.xml",
194 "androidapp/res/values-v21/styles.xml",
Artem Titova4dfe242020-06-03 14:42:57195 "androidapp/res/values/arrays.xml",
196 "androidapp/res/values/strings.xml",
Andrew Grieved4262df2020-03-25 16:59:50197 "androidapp/res/xml/preferences.xml",
198 ]
Andrew Grieved4262df2020-03-25 16:59:50199
200 # Needed for Bazel converter.
Mohamed Heikal3f94fc52020-09-01 19:51:12201 custom_package = "org.appspot.apprtc"
Andrew Grieved4262df2020-03-25 16:59:50202 resource_dirs = [ "androidapp/res" ]
203 assert(resource_dirs != []) # Mark as used.
Sami Kalliomaki9c0c75b2016-06-29 12:55:00204 }
205
Sami Kalliomäkid54f5f52018-08-03 11:23:05206 rtc_instrumentation_test_apk("AppRTCMobile_test_apk") {
Magnus Jedvertc1815cf2016-09-27 08:10:41207 apk_name = "AppRTCMobileTest"
Sami Kalliomaki9c0c75b2016-06-29 12:55:00208 android_manifest = "androidtests/AndroidManifest.xml"
Jeremy Leconteb19cfee2020-06-25 20:57:49209 min_sdk_version = 21
Yaowen Guo9406c222022-05-25 23:39:36210 target_sdk_version = 31
Sami Kalliomaki9c0c75b2016-06-29 12:55:00211
Natalie Chouinard65bbcab2019-12-23 22:02:25212 sources = [
Patrik Höglunda8005cf2017-12-13 15:05:42213 "androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java",
214 ]
Sami Kalliomaki9c0c75b2016-06-29 12:55:00215
Magnus Jedvertc1815cf2016-09-27 08:10:41216 apk_under_test = ":AppRTCMobile"
Sami Kalliomaki9c0c75b2016-06-29 12:55:00217
218 deps = [
Magnus Jedvertc1815cf2016-09-27 08:10:41219 ":AppRTCMobile_javalib",
Mirko Bonadei5e987422020-07-10 08:36:04220 "../sdk/android:base_java",
Artem Titova4dfe242020-06-03 14:42:57221 "../sdk/android:camera_java",
jianjun.zhuc0247402017-07-11 13:20:45222 "../sdk/android:libjingle_peerconnection_java",
Artem Titova4dfe242020-06-03 14:42:57223 "../sdk/android:peerconnection_java",
224 "../sdk/android:video_api_java",
Sami Kalliomäki903bd412018-07-24 08:53:28225 "../sdk/android:video_java",
landreya3ff3342023-04-04 12:39:37226 "//third_party/androidx:androidx_test_monitor_java",
Mirko Bonadei56c24062021-07-30 08:21:30227 "//third_party/androidx:androidx_test_runner_java",
sakalcb79d512017-01-11 14:21:26228 "//third_party/junit",
Sami Kalliomaki9c0c75b2016-06-29 12:55:00229 ]
230 }
Sami Kalliomaki9c0c75b2016-06-29 12:55:00231}
tkchin2ddfdba2016-08-08 04:37:45232
233if (is_ios || (is_mac && target_cpu != "x86")) {
tkchin2ddfdba2016-08-08 04:37:45234 config("apprtc_common_config") {
Magnus Jedvertc1815cf2016-09-27 08:10:41235 include_dirs = [ "objc/AppRTCMobile/common" ]
tkchin2ddfdba2016-08-08 04:37:45236 }
237
Mirko Bonadei86d053c2019-10-17 19:32:04238 rtc_library("apprtc_common") {
kjellander1993b1d2017-03-06 08:29:21239 testonly = true
tkchin2ddfdba2016-08-08 04:37:45240 sources = [
Magnus Jedvertc1815cf2016-09-27 08:10:41241 "objc/AppRTCMobile/common/ARDUtilities.h",
242 "objc/AppRTCMobile/common/ARDUtilities.m",
tkchin2ddfdba2016-08-08 04:37:45243 ]
ehmaldonadoe9cc6862016-09-05 13:10:18244 public_configs = [ ":apprtc_common_config" ]
Mirko Bonadei19640aa2020-10-19 14:12:43245 deps = [ "../sdk:base_objc" ]
tkchin2ddfdba2016-08-08 04:37:45246 }
247
248 config("apprtc_signaling_config") {
Magnus Jedvertc1815cf2016-09-27 08:10:41249 include_dirs = [ "objc/AppRTCMobile" ]
tkchin2ddfdba2016-08-08 04:37:45250 }
251
Mirko Bonadei86d053c2019-10-17 19:32:04252 rtc_library("apprtc_signaling") {
kjellander1993b1d2017-03-06 08:29:21253 testonly = true
tkchin2ddfdba2016-08-08 04:37:45254 sources = [
Magnus Jedvertc1815cf2016-09-27 08:10:41255 "objc/AppRTCMobile/ARDAppClient+Internal.h",
256 "objc/AppRTCMobile/ARDAppClient.h",
257 "objc/AppRTCMobile/ARDAppClient.m",
258 "objc/AppRTCMobile/ARDAppEngineClient.h",
259 "objc/AppRTCMobile/ARDAppEngineClient.m",
sakalc522e752017-04-05 19:17:48260 "objc/AppRTCMobile/ARDCaptureController.h",
261 "objc/AppRTCMobile/ARDCaptureController.m",
Anders Carlsson358f2e02018-06-04 08:24:37262 "objc/AppRTCMobile/ARDExternalSampleCapturer.h",
263 "objc/AppRTCMobile/ARDExternalSampleCapturer.m",
Magnus Jedvertc1815cf2016-09-27 08:10:41264 "objc/AppRTCMobile/ARDJoinResponse+Internal.h",
265 "objc/AppRTCMobile/ARDJoinResponse.h",
266 "objc/AppRTCMobile/ARDJoinResponse.m",
267 "objc/AppRTCMobile/ARDMessageResponse+Internal.h",
268 "objc/AppRTCMobile/ARDMessageResponse.h",
269 "objc/AppRTCMobile/ARDMessageResponse.m",
270 "objc/AppRTCMobile/ARDRoomServerClient.h",
sakalc4adacf2017-03-28 08:22:48271 "objc/AppRTCMobile/ARDSettingsModel+Private.h",
272 "objc/AppRTCMobile/ARDSettingsModel.h",
273 "objc/AppRTCMobile/ARDSettingsModel.m",
274 "objc/AppRTCMobile/ARDSettingsStore.h",
275 "objc/AppRTCMobile/ARDSettingsStore.m",
Magnus Jedvertc1815cf2016-09-27 08:10:41276 "objc/AppRTCMobile/ARDSignalingChannel.h",
277 "objc/AppRTCMobile/ARDSignalingMessage.h",
278 "objc/AppRTCMobile/ARDSignalingMessage.m",
279 "objc/AppRTCMobile/ARDStatsBuilder.h",
280 "objc/AppRTCMobile/ARDStatsBuilder.m",
kthelgasoncc882af2017-01-13 13:59:46281 "objc/AppRTCMobile/ARDTURNClient+Internal.h",
Magnus Jedvertc1815cf2016-09-27 08:10:41282 "objc/AppRTCMobile/ARDTURNClient.h",
kthelgasoncc882af2017-01-13 13:59:46283 "objc/AppRTCMobile/ARDTURNClient.m",
Magnus Jedvertc1815cf2016-09-27 08:10:41284 "objc/AppRTCMobile/ARDWebSocketChannel.h",
285 "objc/AppRTCMobile/ARDWebSocketChannel.m",
286 "objc/AppRTCMobile/RTCIceCandidate+JSON.h",
287 "objc/AppRTCMobile/RTCIceCandidate+JSON.m",
288 "objc/AppRTCMobile/RTCIceServer+JSON.h",
289 "objc/AppRTCMobile/RTCIceServer+JSON.m",
Magnus Jedvertc1815cf2016-09-27 08:10:41290 "objc/AppRTCMobile/RTCSessionDescription+JSON.h",
291 "objc/AppRTCMobile/RTCSessionDescription+JSON.m",
tkchin2ddfdba2016-08-08 04:37:45292 ]
ehmaldonadoe9cc6862016-09-05 13:10:18293 public_configs = [ ":apprtc_signaling_config" ]
tkchin2ddfdba2016-08-08 04:37:45294 deps = [
295 ":apprtc_common",
296 ":socketrocket",
Mirko Bonadei19640aa2020-10-19 14:12:43297 "../sdk:base_objc",
298 "../sdk:default_codec_factory_objc",
299 "../sdk:file_logger_objc",
300 "../sdk:helpers_objc",
301 "../sdk:mediaconstraints_objc",
302 "../sdk:peerconnectionfactory_base_objc",
303 "../sdk:videocapture_objc",
304 "../sdk:videoframebuffer_objc",
305 "../sdk:videosource_objc",
tkchin2ddfdba2016-08-08 04:37:45306 ]
Sylvain Defresnec7f0dff2020-07-03 08:19:30307 frameworks = [
Kári Tristan Helgason8a1e35c2019-03-07 09:44:26308 "CoreMedia.framework",
309 "QuartzCore.framework",
310 ]
tkchin2ddfdba2016-08-08 04:37:45311 }
312
313 if (is_ios) {
Mirko Bonadei86d053c2019-10-17 19:32:04314 rtc_library("AppRTCMobile_lib") {
Mirko Bonadeicbaaaed2018-02-19 14:14:04315 # iOS must use WebRTC.framework which is dynamically linked.
kjellander1993b1d2017-03-06 08:29:21316 testonly = true
tkchin2ddfdba2016-08-08 04:37:45317 sources = [
Patrik Höglund49acb1e2018-01-02 13:41:54318 "objc/AppRTCMobile/ios/ARDAppDelegate.h",
Magnus Jedvertc1815cf2016-09-27 08:10:41319 "objc/AppRTCMobile/ios/ARDAppDelegate.m",
Daniela012b56b2017-11-15 12:15:24320 "objc/AppRTCMobile/ios/ARDFileCaptureController.h",
321 "objc/AppRTCMobile/ios/ARDFileCaptureController.m",
Magnus Jedvertc1815cf2016-09-27 08:10:41322 "objc/AppRTCMobile/ios/ARDMainView.h",
323 "objc/AppRTCMobile/ios/ARDMainView.m",
324 "objc/AppRTCMobile/ios/ARDMainViewController.h",
325 "objc/AppRTCMobile/ios/ARDMainViewController.m",
denicijad17d5362016-11-02 09:56:09326 "objc/AppRTCMobile/ios/ARDSettingsViewController.h",
327 "objc/AppRTCMobile/ios/ARDSettingsViewController.m",
Magnus Jedvertc1815cf2016-09-27 08:10:41328 "objc/AppRTCMobile/ios/ARDStatsView.h",
329 "objc/AppRTCMobile/ios/ARDStatsView.m",
330 "objc/AppRTCMobile/ios/ARDVideoCallView.h",
331 "objc/AppRTCMobile/ios/ARDVideoCallView.m",
332 "objc/AppRTCMobile/ios/ARDVideoCallViewController.h",
333 "objc/AppRTCMobile/ios/ARDVideoCallViewController.m",
Anders Carlsson6bf43d22017-10-16 11:51:43334 "objc/AppRTCMobile/ios/RTCVideoCodecInfo+HumanReadable.h",
335 "objc/AppRTCMobile/ios/RTCVideoCodecInfo+HumanReadable.m",
Magnus Jedvertc1815cf2016-09-27 08:10:41336 "objc/AppRTCMobile/ios/UIImage+ARDUtilities.h",
337 "objc/AppRTCMobile/ios/UIImage+ARDUtilities.m",
denicija77bfd7c2016-11-15 08:41:26338 ]
denicija77bfd7c2016-11-15 08:41:26339
Anders Carlsson96fccfe2019-02-21 15:11:40340 configs += [ "..:common_objc" ]
341
denicija77bfd7c2016-11-15 08:41:26342 deps = [
343 ":apprtc_common",
344 ":apprtc_signaling",
Mirko Bonadei19640aa2020-10-19 14:12:43345 "../sdk:audio_session_objc",
346 "../sdk:base_objc",
347 "../sdk:helpers_objc",
348 "../sdk:mediaconstraints_objc",
Jake Bromberg28e582d2021-06-22 18:34:29349 "../sdk:metal_objc",
Mirko Bonadei19640aa2020-10-19 14:12:43350 "../sdk:peerconnectionfactory_base_objc",
351 "../sdk:peerconnectionfactory_base_objc",
Mirko Bonadei19640aa2020-10-19 14:12:43352 "../sdk:videocapture_objc",
353 "../sdk:videocodec_objc",
denicija77bfd7c2016-11-15 08:41:26354 ]
Kári Tristan Helgasonba50cb32023-06-28 12:32:04355 if (rtc_ios_use_opengl_rendering) {
Jordan Rose53d3fc92021-07-06 19:16:41356 deps += [ "../sdk:opengl_ui_objc" ]
357 }
Kári Tristan Helgason8a1e35c2019-03-07 09:44:26358
Sylvain Defresnec7f0dff2020-07-03 08:19:30359 frameworks = [ "AVFoundation.framework" ]
denicija77bfd7c2016-11-15 08:41:26360 }
361
362 ios_app_bundle("AppRTCMobile") {
kjellander1993b1d2017-03-06 08:29:21363 testonly = true
Mirko Bonadeiccbe95f2020-01-21 11:10:10364 sources = [ "objc/AppRTCMobile/ios/main.m" ]
tkchin2ddfdba2016-08-08 04:37:45365
Magnus Jedvertc1815cf2016-09-27 08:10:41366 info_plist = "objc/AppRTCMobile/ios/Info.plist"
tkchin2ddfdba2016-08-08 04:37:45367
denicija77bfd7c2016-11-15 08:41:26368 configs += [ "..:common_config" ]
tkchin2ddfdba2016-08-08 04:37:45369 public_configs = [ "..:common_inherited_config" ]
370
371 deps = [
Magnus Jedvertc1815cf2016-09-27 08:10:41372 ":AppRTCMobile_ios_bundle_data",
denicija77bfd7c2016-11-15 08:41:26373 ":AppRTCMobile_lib",
Mirko Bonadei1a339c32017-12-14 12:06:10374 "../sdk:framework_objc",
Anders Carlsson7bca8ca2018-08-30 07:30:29375 "../sdk:ios_framework_bundle",
tkchin2ddfdba2016-08-08 04:37:45376 ]
377
Anders Carlsson358f2e02018-06-04 08:24:37378 if (rtc_apprtcmobile_broadcast_extension) {
379 deps += [
380 ":AppRTCMobileBroadcastSetupUI_extension_bundle",
381 ":AppRTCMobileBroadcastUpload_extension_bundle",
382 ]
383 }
384
tkchin2ddfdba2016-08-08 04:37:45385 if (target_cpu == "x86") {
Artem Titov94b57c02019-03-21 12:35:10386 deps += [ "//testing/iossim" ]
tkchin2ddfdba2016-08-08 04:37:45387 }
388 }
389
Anders Carlsson358f2e02018-06-04 08:24:37390 if (rtc_apprtcmobile_broadcast_extension) {
391 bundle_data("AppRTCMobileBroadcastUpload_extension_bundle") {
392 testonly = true
Artem Titova4dfe242020-06-03 14:42:57393 public_deps = [ # no-presubmit-check TODO(webrtc:8603)
394 ":AppRTCMobileBroadcastUpload", # prevent code format
395 ]
Mirko Bonadeiccbe95f2020-01-21 11:10:10396 sources = [ "$root_out_dir/AppRTCMobileBroadcastUpload.appex" ]
397 outputs = [ "{{bundle_contents_dir}}/Plugins/{{source_file_part}}" ]
Anders Carlsson358f2e02018-06-04 08:24:37398 }
399
400 bundle_data("AppRTCMobileBroadcastSetupUI_extension_bundle") {
401 testonly = true
Artem Titova4dfe242020-06-03 14:42:57402 public_deps = [ # no-presubmit-check TODO(webrtc:8603)
403 ":AppRTCMobileBroadcastSetupUI", # prevent code format
404 ]
Mirko Bonadeiccbe95f2020-01-21 11:10:10405 sources = [ "$root_out_dir/AppRTCMobileBroadcastSetupUI.appex" ]
406 outputs = [ "{{bundle_contents_dir}}/Plugins/{{source_file_part}}" ]
Anders Carlsson358f2e02018-06-04 08:24:37407 }
408
Mirko Bonadei86d053c2019-10-17 19:32:04409 rtc_library("AppRTCMobileBroadcastUpload_lib") {
Anders Carlsson358f2e02018-06-04 08:24:37410 testonly = true
411 sources = [
412 "objc/AppRTCMobile/ios/broadcast_extension/ARDBroadcastSampleHandler.h",
413 "objc/AppRTCMobile/ios/broadcast_extension/ARDBroadcastSampleHandler.m",
414 ]
415
416 deps = [
Anders Carlsson358f2e02018-06-04 08:24:37417 ":apprtc_signaling",
Anders Carlsson7bca8ca2018-08-30 07:30:29418 "../sdk:framework_objc+link",
419 "../sdk:ios_framework_bundle",
Anders Carlsson358f2e02018-06-04 08:24:37420 ]
421
Sylvain Defresnec7f0dff2020-07-03 08:19:30422 frameworks = [ "ReplayKit.framework" ]
Anders Carlsson358f2e02018-06-04 08:24:37423 }
424
425 ios_appex_bundle("AppRTCMobileBroadcastUpload") {
426 testonly = true
427 configs += [ "..:common_config" ]
428 public_configs = [ "..:common_inherited_config" ]
429
430 info_plist = "objc/AppRTCMobile/ios/broadcast_extension/BroadcastUploadInfo.plist"
431
432 deps = [
433 ":AppRTCMobileBroadcastUpload_lib",
434 "../sdk:framework_objc",
435 ]
436 }
437
438 ios_appex_bundle("AppRTCMobileBroadcastSetupUI") {
439 sources = [
440 "objc/AppRTCMobile/ios/broadcast_extension/ARDBroadcastSetupViewController.h",
441 "objc/AppRTCMobile/ios/broadcast_extension/ARDBroadcastSetupViewController.m",
442 ]
443
444 info_plist = "objc/AppRTCMobile/ios/broadcast_extension/BroadcastSetupUIInfo.plist"
445
Sylvain Defresnec7f0dff2020-07-03 08:19:30446 frameworks = [ "ReplayKit.framework" ]
Anders Carlsson358f2e02018-06-04 08:24:37447
Mirko Bonadeiccbe95f2020-01-21 11:10:10448 deps = [ ":AppRTCMobile_ios_bundle_data" ]
Anders Carlsson358f2e02018-06-04 08:24:37449 }
450 }
451
Magnus Jedvertc1815cf2016-09-27 08:10:41452 bundle_data("AppRTCMobile_ios_bundle_data") {
tkchin2ddfdba2016-08-08 04:37:45453 sources = [
Magnus Jedvertc1815cf2016-09-27 08:10:41454 "objc/AppRTCMobile/ios/resources/Roboto-Regular.ttf",
Daniela012b56b2017-11-15 12:15:24455
456 # Sample video taken from https://media.xiph.org/video/derf/
457 "objc/AppRTCMobile/ios/resources/foreman.mp4",
Magnus Jedvertc1815cf2016-09-27 08:10:41458 "objc/AppRTCMobile/ios/resources/iPhone5@2x.png",
459 "objc/AppRTCMobile/ios/resources/iPhone6@2x.png",
460 "objc/AppRTCMobile/ios/resources/iPhone6p@3x.png",
461 "objc/AppRTCMobile/ios/resources/ic_call_end_black_24dp.png",
462 "objc/AppRTCMobile/ios/resources/ic_call_end_black_24dp@2x.png",
463 "objc/AppRTCMobile/ios/resources/ic_clear_black_24dp.png",
464 "objc/AppRTCMobile/ios/resources/ic_clear_black_24dp@2x.png",
denicija6d6762c2016-10-28 11:53:16465 "objc/AppRTCMobile/ios/resources/ic_settings_black_24dp.png",
466 "objc/AppRTCMobile/ios/resources/ic_settings_black_24dp@2x.png",
Magnus Jedvertc1815cf2016-09-27 08:10:41467 "objc/AppRTCMobile/ios/resources/ic_surround_sound_black_24dp.png",
468 "objc/AppRTCMobile/ios/resources/ic_surround_sound_black_24dp@2x.png",
469 "objc/AppRTCMobile/ios/resources/ic_switch_video_black_24dp.png",
470 "objc/AppRTCMobile/ios/resources/ic_switch_video_black_24dp@2x.png",
471 "objc/AppRTCMobile/ios/resources/mozart.mp3",
anderscb5ed9052017-08-15 11:07:12472 "objc/Icon-120.png",
473 "objc/Icon-180.png",
tkchin2ddfdba2016-08-08 04:37:45474 "objc/Icon.png",
475 ]
Mirko Bonadeiccbe95f2020-01-21 11:10:10476 outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
tkchin2ddfdba2016-08-08 04:37:45477 }
Anders Carlsson73119182018-03-15 08:41:03478
Mirko Bonadei86d053c2019-10-17 19:32:04479 rtc_library("ObjCNativeAPIDemo_lib") {
Anders Carlsson73119182018-03-15 08:41:03480 testonly = true
481 sources = [
482 "objcnativeapi/objc/NADAppDelegate.h",
483 "objcnativeapi/objc/NADAppDelegate.m",
484 "objcnativeapi/objc/NADViewController.h",
485 "objcnativeapi/objc/NADViewController.mm",
Steve Anton10542f22019-01-11 17:11:00486 "objcnativeapi/objc/objc_call_client.h",
487 "objcnativeapi/objc/objc_call_client.mm",
Anders Carlsson73119182018-03-15 08:41:03488 ]
489
Anders Carlsson73119182018-03-15 08:41:03490 deps = [
491 "../api:libjingle_peerconnection_api",
Mirko Bonadeid9708072019-01-25 19:26:48492 "../api:scoped_refptr",
Florent Castelli8d4e9fb2022-04-04 15:18:21493 "../api:sequence_checker",
Anders Carlsson73119182018-03-15 08:41:03494 "../api/audio_codecs:builtin_audio_decoder_factory",
495 "../api/audio_codecs:builtin_audio_encoder_factory",
Danil Chapovalov4ba04b72019-06-26 13:49:47496 "../api/rtc_event_log:rtc_event_log_factory",
Danil Chapovalovaaa11432019-05-17 11:20:14497 "../api/task_queue:default_task_queue_factory",
Anders Carlsson73119182018-03-15 08:41:03498 "../media:rtc_audio_video",
Artem Titov94b57c02019-03-21 12:35:10499 "../modules/audio_processing",
Alessio Bazzicab768e882018-11-07 14:29:54500 "../modules/audio_processing:api",
Anders Carlsson73119182018-03-15 08:41:03501 "../pc:libjingle_peerconnection",
Markus Handell06d034f2020-07-07 07:17:56502 "../rtc_base/synchronization:mutex",
Anders Carlsson7bca8ca2018-08-30 07:30:29503 "../sdk:base_objc",
Anders Carlsson73119182018-03-15 08:41:03504 "../sdk:default_codec_factory_objc",
Anders Carlsson7bca8ca2018-08-30 07:30:29505 "../sdk:helpers_objc",
Jake Bromberg28e582d2021-06-22 18:34:29506 "../sdk:metal_objc",
Anders Carlsson73119182018-03-15 08:41:03507 "../sdk:native_api",
Anders Carlsson7bca8ca2018-08-30 07:30:29508 "../sdk:videocapture_objc",
Anders Carlsson73119182018-03-15 08:41:03509 "../sdk:videotoolbox_objc",
Anders Carlsson73119182018-03-15 08:41:03510 ]
511
Kári Tristan Helgasonba50cb32023-06-28 12:32:04512 if (rtc_ios_use_opengl_rendering) {
Jordan Rose53d3fc92021-07-06 19:16:41513 deps += [ "../sdk:opengl_ui_objc" ]
Anders Carlsson73119182018-03-15 08:41:03514 }
515 }
516
517 ios_app_bundle("ObjCNativeAPIDemo") {
518 testonly = true
Mirko Bonadeiccbe95f2020-01-21 11:10:10519 sources = [ "objcnativeapi/objc/main.m" ]
Anders Carlsson73119182018-03-15 08:41:03520
521 info_plist = "objcnativeapi/Info.plist"
522
523 configs += [ "..:common_config" ]
524 public_configs = [ "..:common_inherited_config" ]
525
Mirko Bonadeiccbe95f2020-01-21 11:10:10526 deps = [ ":ObjCNativeAPIDemo_lib" ]
Anders Carlsson73119182018-03-15 08:41:03527
528 if (target_cpu == "x86") {
Artem Titov94b57c02019-03-21 12:35:10529 deps += [ "//testing/iossim" ]
Anders Carlsson73119182018-03-15 08:41:03530 }
531 }
tkchin2ddfdba2016-08-08 04:37:45532 }
533
534 if (is_mac) {
Mirko Bonadei86d053c2019-10-17 19:32:04535 rtc_library("AppRTCMobile_lib") {
kjellander1993b1d2017-03-06 08:29:21536 testonly = true
tkchin2ddfdba2016-08-08 04:37:45537 sources = [
Magnus Jedvertc1815cf2016-09-27 08:10:41538 "objc/AppRTCMobile/mac/APPRTCAppDelegate.h",
539 "objc/AppRTCMobile/mac/APPRTCAppDelegate.m",
540 "objc/AppRTCMobile/mac/APPRTCViewController.h",
541 "objc/AppRTCMobile/mac/APPRTCViewController.m",
tkchin2ddfdba2016-08-08 04:37:45542 ]
jianjun.zhuc0247402017-07-11 13:20:45543 configs += [ "..:common_objc" ]
tkchin2ddfdba2016-08-08 04:37:45544 deps = [
545 ":apprtc_common",
546 ":apprtc_signaling",
Mirko Bonadei19640aa2020-10-19 14:12:43547 "../sdk:base_objc",
548 "../sdk:helpers_objc",
549 "../sdk:mediaconstraints_objc",
550 "../sdk:metal_objc",
551 "../sdk:peerconnectionfactory_base_objc",
552 "../sdk:peerconnectionfactory_base_objc",
Mirko Bonadei19640aa2020-10-19 14:12:43553 "../sdk:videocapture_objc",
554 "../sdk:videocodec_objc",
tkchin2ddfdba2016-08-08 04:37:45555 ]
556 }
557
Magnus Jedvertc1815cf2016-09-27 08:10:41558 mac_app_bundle("AppRTCMobile") {
kjellander1993b1d2017-03-06 08:29:21559 testonly = true
Magnus Jedvertc1815cf2016-09-27 08:10:41560 output_name = "AppRTCMobile"
tkchin2ddfdba2016-08-08 04:37:45561
Mirko Bonadeiccbe95f2020-01-21 11:10:10562 sources = [ "objc/AppRTCMobile/mac/main.m" ]
tkchin2ddfdba2016-08-08 04:37:45563
564 public_configs = [ "..:common_inherited_config" ]
565
Magnus Jedvertc1815cf2016-09-27 08:10:41566 info_plist = "objc/AppRTCMobile/mac/Info.plist"
tkchin2ddfdba2016-08-08 04:37:45567
Sylvain Defresnec7f0dff2020-07-03 08:19:30568 frameworks = [ "AppKit.framework" ]
tkchin2ddfdba2016-08-08 04:37:45569
Anders Carlsson24d8ec32018-12-10 13:04:12570 ldflags = [
571 "-rpath",
572 "@executable_path/../Frameworks",
573 ]
574
tkchin2ddfdba2016-08-08 04:37:45575 deps = [
denicija77bfd7c2016-11-15 08:41:26576 ":AppRTCMobile_lib",
Anders Carlsson7bca8ca2018-08-30 07:30:29577 "../sdk:mac_framework_bundle",
578 "../sdk:mac_framework_objc+link",
tkchin2ddfdba2016-08-08 04:37:45579 ]
580 }
581 }
582
583 config("socketrocket_include_config") {
Magnus Jedvertc1815cf2016-09-27 08:10:41584 include_dirs = [ "objc/AppRTCMobile/third_party/SocketRocket" ]
tkchin2ddfdba2016-08-08 04:37:45585 }
586
587 config("socketrocket_warning_config") {
588 # GN orders flags on a target before flags from configs. The default config
589 # adds these flags so to cancel them out they need to come from a config and
590 # cannot be on the target directly.
591 cflags = [
592 "-Wno-deprecated-declarations",
593 "-Wno-nonnull",
tkchin2ddfdba2016-08-08 04:37:45594 "-Wno-semicolon-before-method-body",
kthelgasone47de1a2017-02-24 09:56:01595 "-Wno-unused-variable",
tkchin2ddfdba2016-08-08 04:37:45596 ]
597
henrika27d8b612016-09-21 11:13:00598 cflags_objc = [
599 # Enabled for cflags_objc in build/config/compiler/BUILD.gn.
600 "-Wno-objc-missing-property-synthesis",
henrika27d8b612016-09-21 11:13:00601 ]
tkchin2ddfdba2016-08-08 04:37:45602 }
603
Mirko Bonadei86d053c2019-10-17 19:32:04604 rtc_library("socketrocket") {
kjellander1993b1d2017-03-06 08:29:21605 testonly = true
tkchin2ddfdba2016-08-08 04:37:45606 sources = [
Magnus Jedvertc1815cf2016-09-27 08:10:41607 "objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.h",
608 "objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.m",
tkchin2ddfdba2016-08-08 04:37:45609 ]
kthelgasonc0977102017-04-24 07:57:16610 configs += [ ":socketrocket_warning_config" ]
ehmaldonadoe9cc6862016-09-05 13:10:18611 public_configs = [ ":socketrocket_include_config" ]
tkchin2ddfdba2016-08-08 04:37:45612
Sylvain Defresnec7f0dff2020-07-03 08:19:30613 libs = [ "icucore" ]
614 frameworks = [
tkchin2ddfdba2016-08-08 04:37:45615 "CFNetwork.framework",
Oleh Prypinb3f78de2019-07-18 20:25:48616 "Security.framework",
tkchin2ddfdba2016-08-08 04:37:45617 ]
618 }
adam.fedorbcc5d872016-11-07 22:53:28619
620 if (rtc_include_tests) {
kthelgason4065a5762017-02-14 12:58:56621 # TODO(kthelgason): compile xctests on mac when chromium supports it.
622 if (is_ios) {
Mirko Bonadei86d053c2019-10-17 19:32:04623 rtc_library("apprtcmobile_test_sources") {
Mirko Bonadeicbaaaed2018-02-19 14:14:04624 # iOS must use WebRTC.framework which is dynamically linked.
kjellander1993b1d2017-03-06 08:29:21625 testonly = true
kthelgason4065a5762017-02-14 12:58:56626 include_dirs = [
627 "objc/AppRTCMobile",
628 "objc/AppRTCMobile/ios",
629 ]
kthelgason4065a5762017-02-14 12:58:56630 sources = [
631 "objc/AppRTCMobile/tests/ARDAppClient_xctest.mm",
Daniela012b56b2017-11-15 12:15:24632 "objc/AppRTCMobile/tests/ARDFileCaptureController_xctest.mm",
kthelgason4065a5762017-02-14 12:58:56633 "objc/AppRTCMobile/tests/ARDSettingsModel_xctest.mm",
634 ]
kjellander1993b1d2017-03-06 08:29:21635 deps = [
kthelgason4065a5762017-02-14 12:58:56636 ":AppRTCMobile_lib",
Mirko Bonadeicbaaaed2018-02-19 14:14:04637 ":apprtc_signaling",
Florent Castellia138c6c2023-01-04 11:01:09638 "../rtc_base:ssl",
Mirko Bonadei19640aa2020-10-19 14:12:43639 "../sdk:mediaconstraints_objc",
640 "../sdk:peerconnectionfactory_base_objc",
641 "../sdk:videocapture_objc",
kthelgason4065a5762017-02-14 12:58:56642 "//build/config/ios:xctest",
643 "//third_party/ocmock",
644 ]
adam.fedorbcc5d872016-11-07 22:53:28645 }
646
Mirko Bonadeiaef8a212020-09-16 13:09:53647 rtc_test("apprtcmobile_tests") {
648 is_xctest = true
kthelgason4065a5762017-02-14 12:58:56649 info_plist = "objc/AppRTCMobile/ios/Info.plist"
Mirko Bonadeiccbe95f2020-01-21 11:10:10650 sources = [ "objc/AppRTCMobile/tests/main.mm" ]
kthelgason4065a5762017-02-14 12:58:56651 deps = [
Mirko Bonadeicbaaaed2018-02-19 14:14:04652 ":AppRTCMobile_lib",
kthelgason4065a5762017-02-14 12:58:56653 ":apprtcmobile_test_sources",
Mirko Bonadei1a339c32017-12-14 12:06:10654 "../sdk:framework_objc",
Artem Titarenko34fc3462018-11-06 11:29:29655 "//test:test_support",
kthelgason4065a5762017-02-14 12:58:56656 ]
657 ldflags = [ "-all_load" ]
658 }
adam.fedorbcc5d872016-11-07 22:53:28659 }
660 }
tkchin2ddfdba2016-08-08 04:37:45661}
kthelgason0727f152016-08-08 16:03:23662
Hidehiko Abef264e702020-09-10 09:10:11663if (is_linux || is_chromeos || is_win) {
Tom Anderson06e4fc52022-04-06 22:22:33664 if (is_linux || is_chromeos) {
665 pkg_config("gtk_config") {
666 packages = [
667 # Gtk requires gmodule, but it does not list it as a dependency in some
668 # misconfigured systems.
669 "gmodule-2.0",
670 "gthread-2.0",
671 "gtk+-3.0",
672 ]
673 }
674 }
675
ehmaldonado38a21322016-09-02 11:10:34676 rtc_executable("peerconnection_client") {
kjellander1993b1d2017-03-06 08:29:21677 testonly = true
kthelgason0727f152016-08-08 16:03:23678 sources = [
679 "peerconnection/client/conductor.cc",
680 "peerconnection/client/conductor.h",
681 "peerconnection/client/defaults.cc",
682 "peerconnection/client/defaults.h",
683 "peerconnection/client/peer_connection_client.cc",
684 "peerconnection/client/peer_connection_client.h",
685 ]
ehmaldonado7a2ce0b2016-09-05 08:35:44686
Patrik Höglundb5b5bce2017-11-13 09:19:58687 deps = [
Yves Gerey3e707812018-11-28 15:47:49688 "../api:audio_options_api",
Mirko Bonadei2ff3f492018-11-22 08:00:13689 "../api:create_peerconnection_factory",
Mirko Bonadei34814c72018-01-11 09:13:56690 "../api:libjingle_peerconnection_api",
Niels Möllere942b142019-09-17 12:30:41691 "../api:media_stream_interface",
Florent Castelliacabb362022-10-18 15:05:16692 "../api:rtp_sender_interface",
Mirko Bonadeid9708072019-01-25 19:26:48693 "../api:scoped_refptr",
Yves Gerey3e707812018-11-28 15:47:49694 "../api/audio:audio_mixer_api",
695 "../api/audio_codecs:audio_codecs_api",
Danil Chapovalovb9201b02022-08-17 15:12:29696 "../api/task_queue:pending_task_safety_flag",
697 "../api/units:time_delta",
Ilya Nikolaevskiy38e9b062020-10-08 14:36:33698 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38699 "../api/video:video_rtp_headers",
Yves Gerey3e707812018-11-28 15:47:49700 "../api/video_codecs:video_codecs_api",
Harald Alvestrand794d5992022-12-16 09:54:57701 "../media:media_channel",
Yves Gerey3e707812018-11-28 15:47:49702 "../media:rtc_media_base",
703 "../p2p:rtc_p2p",
Harald Alvestrand445e6b02020-09-29 14:21:47704 "../pc:video_track_source",
Patrik Höglunda8005cf2017-12-13 15:05:42705 "../rtc_base:checks",
Florent Castelli0af55ba2022-04-04 13:06:30706 "../rtc_base:logging",
Florent Castelli4467ad72022-04-04 13:18:46707 "../rtc_base:macromagic",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01708 "../rtc_base:net_helpers",
Florent Castellif86f6f92022-04-05 00:54:12709 "../rtc_base:refcount",
Florent Castellia138c6c2023-01-04 11:01:09710 "../rtc_base:rtc_certificate_generator",
711 "../rtc_base:ssl",
Florent Castelli57aa81b2022-04-04 15:14:02712 "../rtc_base:stringutils",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01713 "../rtc_base:threading",
Artem Titove41c4332018-07-25 13:04:28714 "../rtc_base/third_party/sigslot",
Bjorn Terelius3e676762018-10-29 14:26:27715 "../system_wrappers:field_trial",
716 "../test:field_trial",
Kári Tristan Helgasonede7cb22019-03-06 09:34:09717 "../test:platform_video_capturer",
Tommi25eb47c2019-08-29 14:39:05718 "../test:rtp_test_utils",
Niels Möllerb76be9a2018-12-20 15:28:23719 "//third_party/abseil-cpp/absl/memory",
Yves Gerey3e707812018-11-28 15:47:49720 "//third_party/abseil-cpp/absl/types:optional",
Patrik Höglundb5b5bce2017-11-13 09:19:58721 ]
kthelgason0727f152016-08-08 16:03:23722 if (is_win) {
723 sources += [
Steve Anton10542f22019-01-11 17:11:00724 "peerconnection/client/flag_defs.h",
kthelgason0727f152016-08-08 16:03:23725 "peerconnection/client/main.cc",
726 "peerconnection/client/main_wnd.cc",
727 "peerconnection/client/main_wnd.h",
728 ]
kthelgason0727f152016-08-08 16:03:23729 configs += [ "//build/config/win:windowed" ]
Tommi16db7ff2020-09-26 09:57:26730 deps += [
731 "../media:rtc_media_base",
732 "../rtc_base:win32",
Florent Castellia138c6c2023-01-04 11:01:09733 "../rtc_base:win32_socket_init",
Tommi16db7ff2020-09-26 09:57:26734 ]
kthelgason0727f152016-08-08 16:03:23735 }
Hidehiko Abef264e702020-09-10 09:10:11736 if (is_linux || is_chromeos) {
kthelgason0727f152016-08-08 16:03:23737 sources += [
738 "peerconnection/client/linux/main.cc",
739 "peerconnection/client/linux/main_wnd.cc",
740 "peerconnection/client/linux/main_wnd.h",
741 ]
Henrik Kjellanderefbde2c2017-03-27 06:28:27742 cflags = [ "-Wno-deprecated-declarations" ]
kthelgason0727f152016-08-08 16:03:23743 libs = [
744 "X11",
745 "Xcomposite",
746 "Xext",
747 "Xrender",
748 ]
Tom Anderson06e4fc52022-04-06 22:22:33749 configs += [ ":gtk_config" ]
kthelgason0727f152016-08-08 16:03:23750 }
kjellander1993b1d2017-03-06 08:29:21751
752 deps += [
Niels Möller8366e172018-02-14 11:20:13753 "../api:libjingle_peerconnection_api",
Karl Wiberg1b0eae32017-10-17 12:48:54754 "../api/audio_codecs:builtin_audio_decoder_factory",
755 "../api/audio_codecs:builtin_audio_encoder_factory",
Niels Möllerc6ce9c52018-05-11 09:15:30756 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38757 "../api/video:video_rtp_headers",
philipel2bac7ef2023-03-31 13:14:20758 "../api/video_codecs:video_decoder_factory_template",
759 "../api/video_codecs:video_decoder_factory_template_dav1d_adapter",
760 "../api/video_codecs:video_decoder_factory_template_libvpx_vp8_adapter",
761 "../api/video_codecs:video_decoder_factory_template_libvpx_vp9_adapter",
762 "../api/video_codecs:video_decoder_factory_template_open_h264_adapter",
763 "../api/video_codecs:video_encoder_factory_template",
764 "../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter",
765 "../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter",
766 "../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter",
767 "../api/video_codecs:video_encoder_factory_template_open_h264_adapter",
Mirko Bonadei75baa492018-01-11 16:07:30768 "../media:rtc_audio_video",
Artem Titov94b57c02019-03-21 12:35:10769 "../modules/audio_device",
770 "../modules/audio_processing",
Alessio Bazzicab768e882018-11-07 14:29:54771 "../modules/audio_processing:api",
jianjun.zhuc0247402017-07-11 13:20:45772 "../modules/video_capture:video_capture_module",
773 "../pc:libjingle_peerconnection",
ehmaldonadof6a861a2017-07-19 17:40:47774 "../rtc_base:rtc_json",
Niels Möllerb76be9a2018-12-20 15:28:23775 "../test:video_test_common",
Mirko Bonadei0be40bf2019-07-16 16:40:05776 "//third_party/abseil-cpp/absl/flags:flag",
777 "//third_party/abseil-cpp/absl/flags:parse",
kjellander1993b1d2017-03-06 08:29:21778 "//third_party/libyuv",
kjellander1993b1d2017-03-06 08:29:21779 ]
kthelgason0727f152016-08-08 16:03:23780 }
kjellanderd4626e52016-09-07 09:33:01781
ehmaldonado38a21322016-09-02 11:10:34782 rtc_executable("peerconnection_server") {
kjellander1993b1d2017-03-06 08:29:21783 testonly = true
kthelgason0727f152016-08-08 16:03:23784 sources = [
785 "peerconnection/server/data_socket.cc",
786 "peerconnection/server/data_socket.h",
787 "peerconnection/server/main.cc",
788 "peerconnection/server/peer_channel.cc",
789 "peerconnection/server/peer_channel.h",
790 "peerconnection/server/utils.cc",
791 "peerconnection/server/utils.h",
792 ]
793 deps = [
Mirko Bonadei25ab3222021-07-08 18:08:20794 "../rtc_base:checks",
Florent Castelli57aa81b2022-04-04 15:14:02795 "../rtc_base:stringutils",
Bjorn Terelius3e676762018-10-29 14:26:27796 "../system_wrappers:field_trial",
797 "../test:field_trial",
Mirko Bonadei04cffe32019-06-25 13:43:23798 "//third_party/abseil-cpp/absl/flags:flag",
799 "//third_party/abseil-cpp/absl/flags:parse",
Mirko Bonadei76c89da2019-07-19 10:12:14800 "//third_party/abseil-cpp/absl/flags:usage",
kthelgason0727f152016-08-08 16:03:23801 ]
kthelgason0727f152016-08-08 16:03:23802 }
ehmaldonado38a21322016-09-02 11:10:34803 rtc_executable("turnserver") {
kjellander1993b1d2017-03-06 08:29:21804 testonly = true
Mirko Bonadeiccbe95f2020-01-21 11:10:10805 sources = [ "turnserver/turnserver_main.cc" ]
kthelgason0727f152016-08-08 16:03:23806 deps = [
Niels Möller9862c2e2018-10-30 11:20:03807 ":read_auth_file",
Niels Möllera1342042018-11-08 15:47:14808 "../p2p:p2p_server_utils",
jianjun.zhuc0247402017-07-11 13:20:45809 "../p2p:rtc_p2p",
810 "../pc:rtc_pc",
Florent Castellia138c6c2023-01-04 11:01:09811 "../rtc_base:async_udp_socket",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01812 "../rtc_base:ip_address",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01813 "../rtc_base:socket_address",
814 "../rtc_base:socket_server",
815 "../rtc_base:threading",
Ali Tofighde2ac5a2022-06-30 09:58:26816 "//third_party/abseil-cpp/absl/strings:strings",
kthelgason0727f152016-08-08 16:03:23817 ]
kthelgason0727f152016-08-08 16:03:23818 }
ehmaldonado38a21322016-09-02 11:10:34819 rtc_executable("stunserver") {
kjellander1993b1d2017-03-06 08:29:21820 testonly = true
Mirko Bonadeiccbe95f2020-01-21 11:10:10821 sources = [ "stunserver/stunserver_main.cc" ]
kthelgason0727f152016-08-08 16:03:23822 deps = [
Niels Möllera1342042018-11-08 15:47:14823 "../p2p:p2p_server_utils",
jianjun.zhuc0247402017-07-11 13:20:45824 "../p2p:rtc_p2p",
825 "../pc:rtc_pc",
Florent Castellia138c6c2023-01-04 11:01:09826 "../rtc_base:async_udp_socket",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01827 "../rtc_base:socket_address",
828 "../rtc_base:socket_server",
829 "../rtc_base:threading",
kthelgason0727f152016-08-08 16:03:23830 ]
kthelgason0727f152016-08-08 16:03:23831 }
832}
charujainaca3a242016-11-01 10:09:15833
qiangchen42f96d52017-08-09 00:08:03834if (is_win || is_android) {
gyzhouad7cad82017-05-11 23:10:03835 rtc_shared_library("webrtc_unity_plugin") {
836 testonly = true
837 sources = [
838 "unityplugin/simple_peer_connection.cc",
839 "unityplugin/simple_peer_connection.h",
840 "unityplugin/unity_plugin_apis.cc",
841 "unityplugin/unity_plugin_apis.h",
gyzhoub38f3862017-07-25 23:04:31842 "unityplugin/video_observer.cc",
843 "unityplugin/video_observer.h",
gyzhouad7cad82017-05-11 23:10:03844 ]
qiangchen42f96d52017-08-09 00:08:03845
846 if (is_android) {
847 sources += [
Steve Anton10542f22019-01-11 17:11:00848 "unityplugin/class_reference_holder.cc",
849 "unityplugin/class_reference_holder.h",
qiangchen42f96d52017-08-09 00:08:03850 "unityplugin/jni_onload.cc",
851 ]
Qiang Chen43fb9122017-12-20 18:47:36852 suppressed_configs += [ "//build/config/android:hide_all_but_jni_onload" ]
qiangchen42f96d52017-08-09 00:08:03853 }
854
qiangchen42f96d52017-08-09 00:08:03855 if (is_win) {
Mirko Bonadeif957dd92018-07-11 08:47:42856 configs += [ "//build/config/win:windowed" ]
qiangchen42f96d52017-08-09 00:08:03857 }
gyzhouad7cad82017-05-11 23:10:03858 deps = [
Mirko Bonadei2ff3f492018-11-22 08:00:13859 "../api:create_peerconnection_factory",
Mirko Bonadei34814c72018-01-11 09:13:56860 "../api:libjingle_peerconnection_api",
Niels Möllere942b142019-09-17 12:30:41861 "../api:media_stream_interface",
Qiang Chen51e20462017-12-05 19:11:21862 "../api/audio_codecs:builtin_audio_decoder_factory",
863 "../api/audio_codecs:builtin_audio_encoder_factory",
Niels Möllerc6ce9c52018-05-11 09:15:30864 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38865 "../api/video:video_rtp_headers",
Mirko Bonadei75baa492018-01-11 16:07:30866 "../media:rtc_audio_video",
Anders Carlssona114c882018-01-04 14:10:22867 "../media:rtc_internal_video_codecs",
jianjun.zhuc0247402017-07-11 13:20:45868 "../media:rtc_media",
869 "../media:rtc_media_base",
Artem Titov94b57c02019-03-21 12:35:10870 "../modules/audio_device",
871 "../modules/audio_processing",
Alessio Bazzicab768e882018-11-07 14:29:54872 "../modules/audio_processing:api",
jianjun.zhuc0247402017-07-11 13:20:45873 "../modules/video_capture:video_capture_module",
874 "../pc:libjingle_peerconnection",
Harald Alvestrand445e6b02020-09-29 14:21:47875 "../pc:video_track_source",
Florent Castellia138c6c2023-01-04 11:01:09876 "../rtc_base:ssl",
Kári Tristan Helgasonede7cb22019-03-06 09:34:09877 "../test:platform_video_capturer",
Niels Möller0a595352019-01-02 14:12:38878 "../test:video_test_common",
Karl Wiberg918f50c2018-07-05 09:40:33879 "//third_party/abseil-cpp/absl/memory",
gyzhouad7cad82017-05-11 23:10:03880 ]
qiangchen42f96d52017-08-09 00:08:03881 if (is_android) {
George Zhou2770c3d2018-03-07 17:58:54882 deps += [
Artem Titov94b57c02019-03-21 12:35:10883 "../modules/utility",
George Zhou2770c3d2018-03-07 17:58:54884 "../sdk/android:libjingle_peerconnection_jni",
Yaowen Guo82cbae42022-05-17 08:10:15885 "../sdk/android:native_api_jni",
George Zhou2770c3d2018-03-07 17:58:54886 ]
qiangchen42f96d52017-08-09 00:08:03887 }
888 }
889}
890
891if (is_android) {
Mirko Bonadeifbb3b7d2017-11-07 15:36:33892 rtc_android_library("webrtc_unity_java") {
Mirko Bonadeiccbe95f2020-01-21 11:10:10893 sources = [ "unityplugin/java/src/org/webrtc/UnityUtility.java" ]
qiangchen42f96d52017-08-09 00:08:03894 deps = [
895 "../rtc_base:base_java",
Artem Titarenko69540f42018-12-10 11:30:46896 "../sdk/android:camera_java",
qiangchen42f96d52017-08-09 00:08:03897 "../sdk/android:libjingle_peerconnection_java",
Artem Titarenko69540f42018-12-10 11:30:46898 "../sdk/android:peerconnection_java",
Mirko Bonadei5e987422020-07-10 08:36:04899 "../sdk/android:video_api_java",
Artem Titarenko69540f42018-12-10 11:30:46900 "../sdk/android:video_java",
Byoungchan Lee02334e02021-08-14 02:41:59901 "//third_party/androidx:androidx_annotation_annotation_java",
qiangchen42f96d52017-08-09 00:08:03902 ]
903 }
904
Christoffer Janssonbbde8b62023-04-18 10:26:08905 # TODO(https://bugs.webrtc.org/15095) - Fix or remove this target.
906 #dist_jar("libwebrtc_unity") {
907 # _target_dir_name = get_label_info(":$target_name", "dir")
908 # output = "${root_out_dir}/lib.java${_target_dir_name}/${target_name}.jar"
909 # direct_deps_only = false
910 # use_interface_jars = false
911 # use_unprocessed_jars = false
912 # requires_android = true
913 # deps = [
914 # ":webrtc_unity_java",
915 # "../rtc_base:base_java",
916 # "../sdk/android:libjingle_peerconnection_java",
917 # "../sdk/android:libjingle_peerconnection_metrics_default_java",
918 # "//third_party/androidx:androidx_annotation_annotation_java",
919 # ]
920 #}
Mirko Bonadei73aa2de2020-01-20 14:28:57921
Mirko Bonadei9ea1ef62022-06-30 07:39:44922 robolectric_binary("android_examples_junit_tests") {
Mirko Bonadei73aa2de2020-01-20 14:28:57923 sources = [
924 "androidjunit/src/org/appspot/apprtc/BluetoothManagerTest.java",
925 "androidjunit/src/org/appspot/apprtc/DirectRTCClientTest.java",
926 "androidjunit/src/org/appspot/apprtc/TCPChannelClientTest.java",
927 ]
928
929 deps = [
930 ":AppRTCMobile_javalib",
Artem Titova4dfe242020-06-03 14:42:57931 "../sdk/android:peerconnection_java",
Artem Titovebc563e2021-02-17 10:56:28932 "//third_party/androidx:androidx_test_core_java",
Mirko Bonadei73aa2de2020-01-20 14:28:57933 "//third_party/google-truth:google_truth_java",
934 ]
935
936 additional_jar_files = [ [
937 "../sdk/android/tests/resources/robolectric.properties",
938 "robolectric.properties",
939 ] ]
940 }
gyzhouad7cad82017-05-11 23:10:03941}
942
charujainaca3a242016-11-01 10:09:15943if (!build_with_chromium) {
944 # Doesn't build within Chrome on Win.
945 rtc_executable("stun_prober") {
kjellander1993b1d2017-03-06 08:29:21946 testonly = true
Mirko Bonadeiccbe95f2020-01-21 11:10:10947 sources = [ "stunprober/main.cc" ]
charujainaca3a242016-11-01 10:09:15948 deps = [
949 "../p2p:libstunprober",
950 "../p2p:rtc_p2p",
Patrik Höglunda8005cf2017-12-13 15:05:42951 "../rtc_base:checks",
Florent Castelli0af55ba2022-04-04 13:06:30952 "../rtc_base:logging",
Florent Castellia138c6c2023-01-04 11:01:09953 "../rtc_base:network",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01954 "../rtc_base:socket_address",
Florent Castellia138c6c2023-01-04 11:01:09955 "../rtc_base:ssl",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01956 "../rtc_base:threading",
Florent Castellidd837e22022-04-04 15:16:15957 "../rtc_base:timeutils",
Jonas Orelandc06fe8b2022-03-28 12:58:26958 "../test:scoped_key_value_config",
Mirko Bonadei0be40bf2019-07-16 16:40:05959 "//third_party/abseil-cpp/absl/flags:flag",
960 "//third_party/abseil-cpp/absl/flags:parse",
charujainaca3a242016-11-01 10:09:15961 ]
962 }
963}