1# 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 9import("../webrtc.gni") 10 11if (is_android) { 12 import("//build/config/android/config.gni") 13 import("//build/config/android/rules.gni") 14} else if (is_mac) { 15 import("//build/config/mac/rules.gni") 16} else if (is_ios) { 17 import("//build/config/ios/rules.gni") 18} 19 20group("examples") { 21 # This target shall build all targets in examples. 22 testonly = true 23 deps = [] 24 25 if (is_android) { 26 deps += [ 27 ":AppRTCMobile", 28 ":AppRTCMobile_test_apk", 29 ":libwebrtc_unity", 30 "androidvoip", 31 ] 32 33 # TODO(sakal): We include some code from the tests. Remove this dependency 34 # and remove this if-clause. 35 if (rtc_include_tests) { 36 deps += [ "androidnativeapi" ] 37 } 38 } 39 40 if (!build_with_chromium) { 41 deps += [ ":stun_prober" ] 42 } 43 44 if (is_ios || (is_mac && target_cpu != "x86")) { 45 deps += [ ":AppRTCMobile" ] 46 } 47 48 if (is_linux || is_win) { 49 deps += [ 50 ":peerconnection_server", 51 ":stunserver", 52 ":turnserver", 53 ] 54 if (current_os != "winuwp") { 55 deps += [ ":peerconnection_client" ] 56 } 57 } 58 59 if (is_android || is_win) { 60 deps += [ ":webrtc_unity_plugin" ] 61 } 62} 63 64rtc_library("read_auth_file") { 65 testonly = true 66 sources = [ 67 "turnserver/read_auth_file.cc", 68 "turnserver/read_auth_file.h", 69 ] 70 deps = [ "../rtc_base" ] 71} 72 73if (rtc_include_tests) { 74 rtc_test("examples_unittests") { 75 testonly = true 76 sources = [ "turnserver/read_auth_file_unittest.cc" ] 77 deps = [ 78 ":read_auth_file", 79 "../test:test_main", 80 "//test:test_support", 81 "//testing/gtest", 82 ] 83 } 84} 85 86if (is_android) { 87 rtc_android_apk("AppRTCMobile") { 88 testonly = true 89 apk_name = "AppRTCMobile" 90 android_manifest = "androidapp/AndroidManifest.xml" 91 min_sdk_version = 21 92 target_sdk_version = 29 93 94 deps = [ 95 ":AppRTCMobile_javalib", 96 ":AppRTCMobile_resources", 97 "../rtc_base:base_java", 98 ] 99 100 shared_libraries = [ "../sdk/android:libjingle_peerconnection_so" ] 101 } 102 103 rtc_android_library("AppRTCMobile_javalib") { 104 testonly = true 105 android_manifest = "androidapp/AndroidManifest.xml" 106 107 sources = [ 108 "androidapp/src/org/appspot/apprtc/AppRTCAudioManager.java", 109 "androidapp/src/org/appspot/apprtc/AppRTCBluetoothManager.java", 110 "androidapp/src/org/appspot/apprtc/AppRTCClient.java", 111 "androidapp/src/org/appspot/apprtc/AppRTCProximitySensor.java", 112 "androidapp/src/org/appspot/apprtc/CallActivity.java", 113 "androidapp/src/org/appspot/apprtc/CallFragment.java", 114 "androidapp/src/org/appspot/apprtc/CaptureQualityController.java", 115 "androidapp/src/org/appspot/apprtc/ConnectActivity.java", 116 "androidapp/src/org/appspot/apprtc/CpuMonitor.java", 117 "androidapp/src/org/appspot/apprtc/DirectRTCClient.java", 118 "androidapp/src/org/appspot/apprtc/HudFragment.java", 119 "androidapp/src/org/appspot/apprtc/PeerConnectionClient.java", 120 "androidapp/src/org/appspot/apprtc/RecordedAudioToFileController.java", 121 "androidapp/src/org/appspot/apprtc/RoomParametersFetcher.java", 122 "androidapp/src/org/appspot/apprtc/RtcEventLog.java", 123 "androidapp/src/org/appspot/apprtc/SettingsActivity.java", 124 "androidapp/src/org/appspot/apprtc/SettingsFragment.java", 125 "androidapp/src/org/appspot/apprtc/TCPChannelClient.java", 126 "androidapp/src/org/appspot/apprtc/UnhandledExceptionHandler.java", 127 "androidapp/src/org/appspot/apprtc/WebSocketChannelClient.java", 128 "androidapp/src/org/appspot/apprtc/WebSocketRTCClient.java", 129 "androidapp/src/org/appspot/apprtc/util/AppRTCUtils.java", 130 "androidapp/src/org/appspot/apprtc/util/AsyncHttpURLConnection.java", 131 ] 132 133 deps = [ 134 ":AppRTCMobile_resources", 135 "../rtc_base:base_java", 136 "../sdk/android:audio_api_java", 137 "../sdk/android:base_java", 138 "../sdk/android:camera_java", 139 "../sdk/android:default_video_codec_factory_java", 140 "../sdk/android:filevideo_java", 141 "../sdk/android:hwcodecs_java", 142 "../sdk/android:java_audio_device_module_java", 143 "../sdk/android:libjingle_peerconnection_java", 144 "../sdk/android:libjingle_peerconnection_metrics_default_java", 145 "../sdk/android:peerconnection_java", 146 "../sdk/android:screencapturer_java", 147 "../sdk/android:surfaceviewrenderer_java", 148 "../sdk/android:swcodecs_java", 149 "../sdk/android:video_api_java", 150 "../sdk/android:video_java", 151 "androidapp/third_party/autobanh:autobanh_java", 152 "//third_party/android_deps:com_android_support_support_annotations_java", 153 ] 154 } 155 156 android_resources("AppRTCMobile_resources") { 157 testonly = true 158 sources = [ 159 "androidapp/res/drawable-hdpi/disconnect.png", 160 "androidapp/res/drawable-hdpi/ic_action_full_screen.png", 161 "androidapp/res/drawable-hdpi/ic_action_return_from_full_screen.png", 162 "androidapp/res/drawable-hdpi/ic_launcher.png", 163 "androidapp/res/drawable-hdpi/ic_loopback_call.png", 164 "androidapp/res/drawable-ldpi/disconnect.png", 165 "androidapp/res/drawable-ldpi/ic_action_full_screen.png", 166 "androidapp/res/drawable-ldpi/ic_action_return_from_full_screen.png", 167 "androidapp/res/drawable-ldpi/ic_launcher.png", 168 "androidapp/res/drawable-ldpi/ic_loopback_call.png", 169 "androidapp/res/drawable-mdpi/disconnect.png", 170 "androidapp/res/drawable-mdpi/ic_action_full_screen.png", 171 "androidapp/res/drawable-mdpi/ic_action_return_from_full_screen.png", 172 "androidapp/res/drawable-mdpi/ic_launcher.png", 173 "androidapp/res/drawable-mdpi/ic_loopback_call.png", 174 "androidapp/res/drawable-xhdpi/disconnect.png", 175 "androidapp/res/drawable-xhdpi/ic_action_full_screen.png", 176 "androidapp/res/drawable-xhdpi/ic_action_return_from_full_screen.png", 177 "androidapp/res/drawable-xhdpi/ic_launcher.png", 178 "androidapp/res/drawable-xhdpi/ic_loopback_call.png", 179 "androidapp/res/layout/activity_call.xml", 180 "androidapp/res/layout/activity_connect.xml", 181 "androidapp/res/layout/fragment_call.xml", 182 "androidapp/res/layout/fragment_hud.xml", 183 "androidapp/res/menu/connect_menu.xml", 184 "androidapp/res/values-v17/styles.xml", 185 "androidapp/res/values-v21/styles.xml", 186 "androidapp/res/values/arrays.xml", 187 "androidapp/res/values/strings.xml", 188 "androidapp/res/xml/preferences.xml", 189 ] 190 custom_package = "org.appspot.apprtc" 191 192 # Needed for Bazel converter. 193 resource_dirs = [ "androidapp/res" ] 194 assert(resource_dirs != []) # Mark as used. 195 } 196 197 rtc_instrumentation_test_apk("AppRTCMobile_test_apk") { 198 apk_name = "AppRTCMobileTest" 199 android_manifest = "androidtests/AndroidManifest.xml" 200 min_sdk_version = 21 201 target_sdk_version = 21 202 203 sources = [ 204 "androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java", 205 ] 206 207 apk_under_test = ":AppRTCMobile" 208 209 deps = [ 210 ":AppRTCMobile_javalib", 211 "../sdk/android:base_java", 212 "../sdk/android:camera_java", 213 "../sdk/android:libjingle_peerconnection_java", 214 "../sdk/android:peerconnection_java", 215 "../sdk/android:video_api_java", 216 "../sdk/android:video_java", 217 "//third_party/android_support_test_runner:runner_java", 218 "//third_party/junit", 219 ] 220 } 221} 222 223if (is_ios || (is_mac && target_cpu != "x86")) { 224 config("apprtc_common_config") { 225 include_dirs = [ "objc/AppRTCMobile/common" ] 226 } 227 228 rtc_library("apprtc_common") { 229 testonly = true 230 sources = [ 231 "objc/AppRTCMobile/common/ARDUtilities.h", 232 "objc/AppRTCMobile/common/ARDUtilities.m", 233 ] 234 public_configs = [ ":apprtc_common_config" ] 235 236 if (is_ios) { 237 # iOS must use WebRTC.framework which is dynamically linked. 238 deps = [ "../sdk:framework_objc+link" ] 239 } else { 240 deps = [ "../sdk:mac_framework_objc+link" ] 241 } 242 } 243 244 config("apprtc_signaling_config") { 245 include_dirs = [ "objc/AppRTCMobile" ] 246 cflags_objc = [ 247 # TODO(bugs.webrtc.org/10837): Remove this when usage of 248 # archivedDataWithRootObject will be removed. 249 "-Wno-unguarded-availability", 250 ] 251 } 252 253 rtc_library("apprtc_signaling") { 254 testonly = true 255 sources = [ 256 "objc/AppRTCMobile/ARDAppClient+Internal.h", 257 "objc/AppRTCMobile/ARDAppClient.h", 258 "objc/AppRTCMobile/ARDAppClient.m", 259 "objc/AppRTCMobile/ARDAppEngineClient.h", 260 "objc/AppRTCMobile/ARDAppEngineClient.m", 261 "objc/AppRTCMobile/ARDBitrateTracker.h", 262 "objc/AppRTCMobile/ARDBitrateTracker.m", 263 "objc/AppRTCMobile/ARDCaptureController.h", 264 "objc/AppRTCMobile/ARDCaptureController.m", 265 "objc/AppRTCMobile/ARDExternalSampleCapturer.h", 266 "objc/AppRTCMobile/ARDExternalSampleCapturer.m", 267 "objc/AppRTCMobile/ARDJoinResponse+Internal.h", 268 "objc/AppRTCMobile/ARDJoinResponse.h", 269 "objc/AppRTCMobile/ARDJoinResponse.m", 270 "objc/AppRTCMobile/ARDMessageResponse+Internal.h", 271 "objc/AppRTCMobile/ARDMessageResponse.h", 272 "objc/AppRTCMobile/ARDMessageResponse.m", 273 "objc/AppRTCMobile/ARDRoomServerClient.h", 274 "objc/AppRTCMobile/ARDSettingsModel+Private.h", 275 "objc/AppRTCMobile/ARDSettingsModel.h", 276 "objc/AppRTCMobile/ARDSettingsModel.m", 277 "objc/AppRTCMobile/ARDSettingsStore.h", 278 "objc/AppRTCMobile/ARDSettingsStore.m", 279 "objc/AppRTCMobile/ARDSignalingChannel.h", 280 "objc/AppRTCMobile/ARDSignalingMessage.h", 281 "objc/AppRTCMobile/ARDSignalingMessage.m", 282 "objc/AppRTCMobile/ARDStatsBuilder.h", 283 "objc/AppRTCMobile/ARDStatsBuilder.m", 284 "objc/AppRTCMobile/ARDTURNClient+Internal.h", 285 "objc/AppRTCMobile/ARDTURNClient.h", 286 "objc/AppRTCMobile/ARDTURNClient.m", 287 "objc/AppRTCMobile/ARDWebSocketChannel.h", 288 "objc/AppRTCMobile/ARDWebSocketChannel.m", 289 "objc/AppRTCMobile/RTCIceCandidate+JSON.h", 290 "objc/AppRTCMobile/RTCIceCandidate+JSON.m", 291 "objc/AppRTCMobile/RTCIceServer+JSON.h", 292 "objc/AppRTCMobile/RTCIceServer+JSON.m", 293 "objc/AppRTCMobile/RTCSessionDescription+JSON.h", 294 "objc/AppRTCMobile/RTCSessionDescription+JSON.m", 295 ] 296 public_configs = [ ":apprtc_signaling_config" ] 297 deps = [ 298 ":apprtc_common", 299 ":socketrocket", 300 ] 301 302 if (is_ios) { 303 # iOS must use WebRTC.framework which is dynamically linked. 304 deps += [ 305 "../sdk:framework_objc+link", 306 "../sdk:ios_framework_bundle", 307 ] 308 } else { 309 deps += [ "../sdk:mac_framework_objc+link" ] 310 } 311 frameworks = [ 312 "CoreMedia.framework", 313 "QuartzCore.framework", 314 ] 315 } 316 317 if (is_ios) { 318 rtc_library("AppRTCMobile_lib") { 319 # iOS must use WebRTC.framework which is dynamically linked. 320 testonly = true 321 sources = [ 322 "objc/AppRTCMobile/ios/ARDAppDelegate.h", 323 "objc/AppRTCMobile/ios/ARDAppDelegate.m", 324 "objc/AppRTCMobile/ios/ARDFileCaptureController.h", 325 "objc/AppRTCMobile/ios/ARDFileCaptureController.m", 326 "objc/AppRTCMobile/ios/ARDMainView.h", 327 "objc/AppRTCMobile/ios/ARDMainView.m", 328 "objc/AppRTCMobile/ios/ARDMainViewController.h", 329 "objc/AppRTCMobile/ios/ARDMainViewController.m", 330 "objc/AppRTCMobile/ios/ARDSettingsViewController.h", 331 "objc/AppRTCMobile/ios/ARDSettingsViewController.m", 332 "objc/AppRTCMobile/ios/ARDStatsView.h", 333 "objc/AppRTCMobile/ios/ARDStatsView.m", 334 "objc/AppRTCMobile/ios/ARDVideoCallView.h", 335 "objc/AppRTCMobile/ios/ARDVideoCallView.m", 336 "objc/AppRTCMobile/ios/ARDVideoCallViewController.h", 337 "objc/AppRTCMobile/ios/ARDVideoCallViewController.m", 338 "objc/AppRTCMobile/ios/RTCVideoCodecInfo+HumanReadable.h", 339 "objc/AppRTCMobile/ios/RTCVideoCodecInfo+HumanReadable.m", 340 "objc/AppRTCMobile/ios/UIImage+ARDUtilities.h", 341 "objc/AppRTCMobile/ios/UIImage+ARDUtilities.m", 342 ] 343 344 configs += [ "..:common_objc" ] 345 346 deps = [ 347 ":apprtc_common", 348 ":apprtc_signaling", 349 "../sdk:framework_objc+link", 350 "../sdk:ios_framework_bundle", 351 ] 352 353 frameworks = [ "AVFoundation.framework" ] 354 } 355 356 ios_app_bundle("AppRTCMobile") { 357 testonly = true 358 sources = [ "objc/AppRTCMobile/ios/main.m" ] 359 360 info_plist = "objc/AppRTCMobile/ios/Info.plist" 361 362 configs += [ "..:common_config" ] 363 public_configs = [ "..:common_inherited_config" ] 364 365 deps = [ 366 ":AppRTCMobile_ios_bundle_data", 367 ":AppRTCMobile_lib", 368 "../sdk:framework_objc", 369 "../sdk:ios_framework_bundle", 370 ] 371 372 if (rtc_apprtcmobile_broadcast_extension) { 373 deps += [ 374 ":AppRTCMobileBroadcastSetupUI_extension_bundle", 375 ":AppRTCMobileBroadcastUpload_extension_bundle", 376 ] 377 } 378 379 if (target_cpu == "x86") { 380 deps += [ "//testing/iossim" ] 381 } 382 } 383 384 if (rtc_apprtcmobile_broadcast_extension) { 385 bundle_data("AppRTCMobileBroadcastUpload_extension_bundle") { 386 testonly = true 387 public_deps = [ # no-presubmit-check TODO(webrtc:8603) 388 ":AppRTCMobileBroadcastUpload", # prevent code format 389 ] 390 sources = [ "$root_out_dir/AppRTCMobileBroadcastUpload.appex" ] 391 outputs = [ "{{bundle_contents_dir}}/Plugins/{{source_file_part}}" ] 392 } 393 394 bundle_data("AppRTCMobileBroadcastSetupUI_extension_bundle") { 395 testonly = true 396 public_deps = [ # no-presubmit-check TODO(webrtc:8603) 397 ":AppRTCMobileBroadcastSetupUI", # prevent code format 398 ] 399 sources = [ "$root_out_dir/AppRTCMobileBroadcastSetupUI.appex" ] 400 outputs = [ "{{bundle_contents_dir}}/Plugins/{{source_file_part}}" ] 401 } 402 403 rtc_library("AppRTCMobileBroadcastUpload_lib") { 404 testonly = true 405 sources = [ 406 "objc/AppRTCMobile/ios/broadcast_extension/ARDBroadcastSampleHandler.h", 407 "objc/AppRTCMobile/ios/broadcast_extension/ARDBroadcastSampleHandler.m", 408 ] 409 410 deps = [ 411 ":apprtc_signaling", 412 "../sdk:framework_objc+link", 413 "../sdk:ios_framework_bundle", 414 ] 415 416 frameworks = [ "ReplayKit.framework" ] 417 } 418 419 ios_appex_bundle("AppRTCMobileBroadcastUpload") { 420 testonly = true 421 configs += [ "..:common_config" ] 422 public_configs = [ "..:common_inherited_config" ] 423 424 info_plist = "objc/AppRTCMobile/ios/broadcast_extension/BroadcastUploadInfo.plist" 425 426 deps = [ 427 ":AppRTCMobileBroadcastUpload_lib", 428 "../sdk:framework_objc", 429 ] 430 } 431 432 ios_appex_bundle("AppRTCMobileBroadcastSetupUI") { 433 sources = [ 434 "objc/AppRTCMobile/ios/broadcast_extension/ARDBroadcastSetupViewController.h", 435 "objc/AppRTCMobile/ios/broadcast_extension/ARDBroadcastSetupViewController.m", 436 ] 437 438 info_plist = "objc/AppRTCMobile/ios/broadcast_extension/BroadcastSetupUIInfo.plist" 439 440 frameworks = [ "ReplayKit.framework" ] 441 442 deps = [ ":AppRTCMobile_ios_bundle_data" ] 443 } 444 } 445 446 bundle_data("AppRTCMobile_ios_bundle_data") { 447 sources = [ 448 "objc/AppRTCMobile/ios/resources/Roboto-Regular.ttf", 449 450 # Sample video taken from https://media.xiph.org/video/derf/ 451 "objc/AppRTCMobile/ios/resources/foreman.mp4", 452 "objc/AppRTCMobile/ios/resources/iPhone5@2x.png", 453 "objc/AppRTCMobile/ios/resources/iPhone6@2x.png", 454 "objc/AppRTCMobile/ios/resources/iPhone6p@3x.png", 455 "objc/AppRTCMobile/ios/resources/ic_call_end_black_24dp.png", 456 "objc/AppRTCMobile/ios/resources/ic_call_end_black_24dp@2x.png", 457 "objc/AppRTCMobile/ios/resources/ic_clear_black_24dp.png", 458 "objc/AppRTCMobile/ios/resources/ic_clear_black_24dp@2x.png", 459 "objc/AppRTCMobile/ios/resources/ic_settings_black_24dp.png", 460 "objc/AppRTCMobile/ios/resources/ic_settings_black_24dp@2x.png", 461 "objc/AppRTCMobile/ios/resources/ic_surround_sound_black_24dp.png", 462 "objc/AppRTCMobile/ios/resources/ic_surround_sound_black_24dp@2x.png", 463 "objc/AppRTCMobile/ios/resources/ic_switch_video_black_24dp.png", 464 "objc/AppRTCMobile/ios/resources/ic_switch_video_black_24dp@2x.png", 465 "objc/AppRTCMobile/ios/resources/mozart.mp3", 466 "objc/Icon-120.png", 467 "objc/Icon-180.png", 468 "objc/Icon.png", 469 ] 470 outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ] 471 } 472 473 rtc_library("ObjCNativeAPIDemo_lib") { 474 testonly = true 475 sources = [ 476 "objcnativeapi/objc/NADAppDelegate.h", 477 "objcnativeapi/objc/NADAppDelegate.m", 478 "objcnativeapi/objc/NADViewController.h", 479 "objcnativeapi/objc/NADViewController.mm", 480 "objcnativeapi/objc/objc_call_client.h", 481 "objcnativeapi/objc/objc_call_client.mm", 482 ] 483 484 deps = [ 485 "../api:libjingle_peerconnection_api", 486 "../api:scoped_refptr", 487 "../api/audio_codecs:builtin_audio_decoder_factory", 488 "../api/audio_codecs:builtin_audio_encoder_factory", 489 "../api/rtc_event_log:rtc_event_log_factory", 490 "../api/task_queue:default_task_queue_factory", 491 "../media:rtc_audio_video", 492 "../modules/audio_processing", 493 "../modules/audio_processing:api", 494 "../pc:libjingle_peerconnection", 495 "../rtc_base", 496 "../rtc_base/synchronization:mutex", 497 "../sdk:base_objc", 498 "../sdk:default_codec_factory_objc", 499 "../sdk:helpers_objc", 500 "../sdk:native_api", 501 "../sdk:ui_objc", 502 "../sdk:videocapture_objc", 503 "../sdk:videotoolbox_objc", 504 ] 505 506 if (current_cpu == "arm64") { 507 deps += [ "../sdk:metal_objc" ] 508 } 509 } 510 511 ios_app_bundle("ObjCNativeAPIDemo") { 512 testonly = true 513 sources = [ "objcnativeapi/objc/main.m" ] 514 515 info_plist = "objcnativeapi/Info.plist" 516 517 configs += [ "..:common_config" ] 518 public_configs = [ "..:common_inherited_config" ] 519 520 deps = [ ":ObjCNativeAPIDemo_lib" ] 521 522 if (target_cpu == "x86") { 523 deps += [ "//testing/iossim" ] 524 } 525 } 526 } 527 528 if (is_mac) { 529 rtc_library("AppRTCMobile_lib") { 530 testonly = true 531 sources = [ 532 "objc/AppRTCMobile/mac/APPRTCAppDelegate.h", 533 "objc/AppRTCMobile/mac/APPRTCAppDelegate.m", 534 "objc/AppRTCMobile/mac/APPRTCViewController.h", 535 "objc/AppRTCMobile/mac/APPRTCViewController.m", 536 ] 537 configs += [ "..:common_objc" ] 538 deps = [ 539 ":apprtc_common", 540 ":apprtc_signaling", 541 "../sdk:mac_framework_objc+link", 542 ] 543 } 544 545 mac_app_bundle("AppRTCMobile") { 546 testonly = true 547 output_name = "AppRTCMobile" 548 549 sources = [ "objc/AppRTCMobile/mac/main.m" ] 550 551 public_configs = [ "..:common_inherited_config" ] 552 553 info_plist = "objc/AppRTCMobile/mac/Info.plist" 554 555 frameworks = [ "AppKit.framework" ] 556 557 ldflags = [ 558 "-rpath", 559 "@executable_path/../Frameworks", 560 ] 561 562 deps = [ 563 ":AppRTCMobile_lib", 564 "../sdk:mac_framework_bundle", 565 "../sdk:mac_framework_objc+link", 566 ] 567 } 568 } 569 570 config("socketrocket_include_config") { 571 include_dirs = [ "objc/AppRTCMobile/third_party/SocketRocket" ] 572 } 573 574 config("socketrocket_warning_config") { 575 # GN orders flags on a target before flags from configs. The default config 576 # adds these flags so to cancel them out they need to come from a config and 577 # cannot be on the target directly. 578 cflags = [ 579 "-Wno-deprecated-declarations", 580 "-Wno-nonnull", 581 "-Wno-semicolon-before-method-body", 582 "-Wno-unused-variable", 583 ] 584 585 cflags_objc = [ 586 # Enabled for cflags_objc in build/config/compiler/BUILD.gn. 587 "-Wno-objc-missing-property-synthesis", 588 ] 589 } 590 591 rtc_library("socketrocket") { 592 testonly = true 593 sources = [ 594 "objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.h", 595 "objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.m", 596 ] 597 configs += [ ":socketrocket_warning_config" ] 598 public_configs = [ ":socketrocket_include_config" ] 599 600 libs = [ "icucore" ] 601 frameworks = [ 602 "CFNetwork.framework", 603 "Security.framework", 604 ] 605 } 606 607 if (rtc_include_tests) { 608 # TODO(kthelgason): compile xctests on mac when chromium supports it. 609 if (is_ios) { 610 rtc_library("apprtcmobile_test_sources") { 611 # iOS must use WebRTC.framework which is dynamically linked. 612 testonly = true 613 include_dirs = [ 614 "objc/AppRTCMobile", 615 "objc/AppRTCMobile/ios", 616 ] 617 sources = [ 618 "objc/AppRTCMobile/tests/ARDAppClient_xctest.mm", 619 "objc/AppRTCMobile/tests/ARDFileCaptureController_xctest.mm", 620 "objc/AppRTCMobile/tests/ARDSettingsModel_xctest.mm", 621 ] 622 deps = [ 623 ":AppRTCMobile_lib", 624 ":apprtc_signaling", 625 "../rtc_base", 626 "../sdk:framework_objc+link", 627 "../sdk:ios_framework_bundle", 628 "//build/config/ios:xctest", 629 "//third_party/ocmock", 630 ] 631 } 632 633 rtc_ios_xctest_test("apprtcmobile_tests") { 634 info_plist = "objc/AppRTCMobile/ios/Info.plist" 635 sources = [ "objc/AppRTCMobile/tests/main.mm" ] 636 deps = [ 637 ":AppRTCMobile_lib", 638 ":apprtcmobile_test_sources", 639 "../sdk:framework_objc", 640 "//test:test_support", 641 ] 642 ldflags = [ "-all_load" ] 643 } 644 } 645 } 646} 647 648if (is_linux || is_win) { 649 rtc_executable("peerconnection_client") { 650 testonly = true 651 sources = [ 652 "peerconnection/client/conductor.cc", 653 "peerconnection/client/conductor.h", 654 "peerconnection/client/defaults.cc", 655 "peerconnection/client/defaults.h", 656 "peerconnection/client/peer_connection_client.cc", 657 "peerconnection/client/peer_connection_client.h", 658 ] 659 660 deps = [ 661 "../api:audio_options_api", 662 "../api:create_peerconnection_factory", 663 "../api:libjingle_peerconnection_api", 664 "../api:media_stream_interface", 665 "../api:scoped_refptr", 666 "../api/audio:audio_mixer_api", 667 "../api/audio_codecs:audio_codecs_api", 668 "../api/video:video_frame_i420", 669 "../api/video:video_rtp_headers", 670 "../api/video_codecs:video_codecs_api", 671 "../media:rtc_media_base", 672 "../p2p:rtc_p2p", 673 "../rtc_base:checks", 674 "../rtc_base/third_party/sigslot", 675 "../system_wrappers:field_trial", 676 "../test:field_trial", 677 "../test:platform_video_capturer", 678 "../test:rtp_test_utils", 679 "//third_party/abseil-cpp/absl/memory", 680 "//third_party/abseil-cpp/absl/types:optional", 681 ] 682 if (is_win) { 683 sources += [ 684 "peerconnection/client/flag_defs.h", 685 "peerconnection/client/main.cc", 686 "peerconnection/client/main_wnd.cc", 687 "peerconnection/client/main_wnd.h", 688 ] 689 configs += [ "//build/config/win:windowed" ] 690 deps += [ "../media:rtc_media_base" ] 691 } 692 if (is_linux) { 693 sources += [ 694 "peerconnection/client/linux/main.cc", 695 "peerconnection/client/linux/main_wnd.cc", 696 "peerconnection/client/linux/main_wnd.h", 697 ] 698 cflags = [ "-Wno-deprecated-declarations" ] 699 libs = [ 700 "X11", 701 "Xcomposite", 702 "Xext", 703 "Xrender", 704 ] 705 deps += [ "//build/config/linux/gtk" ] 706 } 707 708 deps += [ 709 "../api:libjingle_peerconnection_api", 710 "../api/audio_codecs:builtin_audio_decoder_factory", 711 "../api/audio_codecs:builtin_audio_encoder_factory", 712 "../api/video:video_frame", 713 "../api/video:video_rtp_headers", 714 "../api/video_codecs:builtin_video_decoder_factory", 715 "../api/video_codecs:builtin_video_encoder_factory", 716 "../media:rtc_audio_video", 717 "../modules/audio_device", 718 "../modules/audio_processing", 719 "../modules/audio_processing:api", 720 "../modules/video_capture:video_capture_module", 721 "../pc:libjingle_peerconnection", 722 "../pc:peerconnection", 723 "../rtc_base", 724 "../rtc_base:rtc_base_approved", 725 "../rtc_base:rtc_json", 726 "../test:video_test_common", 727 "//third_party/abseil-cpp/absl/flags:flag", 728 "//third_party/abseil-cpp/absl/flags:parse", 729 "//third_party/libyuv", 730 ] 731 } 732 733 rtc_executable("peerconnection_server") { 734 testonly = true 735 sources = [ 736 "peerconnection/server/data_socket.cc", 737 "peerconnection/server/data_socket.h", 738 "peerconnection/server/main.cc", 739 "peerconnection/server/peer_channel.cc", 740 "peerconnection/server/peer_channel.h", 741 "peerconnection/server/utils.cc", 742 "peerconnection/server/utils.h", 743 ] 744 deps = [ 745 "../rtc_base:rtc_base_approved", 746 "../system_wrappers:field_trial", 747 "../test:field_trial", 748 "//third_party/abseil-cpp/absl/flags:flag", 749 "//third_party/abseil-cpp/absl/flags:parse", 750 "//third_party/abseil-cpp/absl/flags:usage", 751 ] 752 } 753 rtc_executable("turnserver") { 754 testonly = true 755 sources = [ "turnserver/turnserver_main.cc" ] 756 deps = [ 757 ":read_auth_file", 758 "../p2p:p2p_server_utils", 759 "../p2p:rtc_p2p", 760 "../pc:rtc_pc", 761 "../rtc_base", 762 "../rtc_base:rtc_base_approved", 763 ] 764 } 765 rtc_executable("stunserver") { 766 testonly = true 767 sources = [ "stunserver/stunserver_main.cc" ] 768 deps = [ 769 "../p2p:p2p_server_utils", 770 "../p2p:rtc_p2p", 771 "../pc:rtc_pc", 772 "../rtc_base", 773 "../rtc_base:rtc_base_approved", 774 ] 775 } 776} 777 778if (is_win || is_android) { 779 rtc_shared_library("webrtc_unity_plugin") { 780 testonly = true 781 sources = [ 782 "unityplugin/simple_peer_connection.cc", 783 "unityplugin/simple_peer_connection.h", 784 "unityplugin/unity_plugin_apis.cc", 785 "unityplugin/unity_plugin_apis.h", 786 "unityplugin/video_observer.cc", 787 "unityplugin/video_observer.h", 788 ] 789 790 if (is_android) { 791 sources += [ 792 "unityplugin/class_reference_holder.cc", 793 "unityplugin/class_reference_holder.h", 794 "unityplugin/jni_onload.cc", 795 ] 796 suppressed_configs += [ "//build/config/android:hide_all_but_jni_onload" ] 797 } 798 799 if (is_win) { 800 configs += [ "//build/config/win:windowed" ] 801 } 802 deps = [ 803 "../api:create_peerconnection_factory", 804 "../api:libjingle_peerconnection_api", 805 "../api:media_stream_interface", 806 "../api/audio_codecs:builtin_audio_decoder_factory", 807 "../api/audio_codecs:builtin_audio_encoder_factory", 808 "../api/video:video_frame", 809 "../api/video:video_rtp_headers", 810 "../media:rtc_audio_video", 811 "../media:rtc_internal_video_codecs", 812 "../media:rtc_media", 813 "../media:rtc_media_base", 814 "../modules/audio_device", 815 "../modules/audio_processing", 816 "../modules/audio_processing:api", 817 "../modules/video_capture:video_capture_module", 818 "../pc:libjingle_peerconnection", 819 "../pc:peerconnection", 820 "../rtc_base", 821 "../test:platform_video_capturer", 822 "../test:video_test_common", 823 "//third_party/abseil-cpp/absl/memory", 824 ] 825 if (is_android) { 826 deps += [ 827 "../modules/utility", 828 "../sdk/android:libjingle_peerconnection_jni", 829 ] 830 } 831 } 832} 833 834if (is_android) { 835 rtc_android_library("webrtc_unity_java") { 836 sources = [ "unityplugin/java/src/org/webrtc/UnityUtility.java" ] 837 deps = [ 838 "../rtc_base:base_java", 839 "../sdk/android:camera_java", 840 "../sdk/android:libjingle_peerconnection_java", 841 "../sdk/android:peerconnection_java", 842 "../sdk/android:video_api_java", 843 "../sdk/android:video_java", 844 "//third_party/android_deps:com_android_support_support_annotations_java", 845 ] 846 } 847 848 dist_jar("libwebrtc_unity") { 849 _target_dir_name = get_label_info(":$target_name", "dir") 850 output = "${root_out_dir}/lib.java${_target_dir_name}/${target_name}.jar" 851 direct_deps_only = false 852 use_interface_jars = false 853 use_unprocessed_jars = false 854 requires_android = true 855 deps = [ 856 ":webrtc_unity_java", 857 "../rtc_base:base_java", 858 "../sdk/android:libjingle_peerconnection_java", 859 "../sdk/android:libjingle_peerconnection_metrics_default_java", 860 "//third_party/android_deps:com_android_support_support_annotations_java", 861 ] 862 } 863 864 junit_binary("android_examples_junit_tests") { 865 sources = [ 866 "androidjunit/src/org/appspot/apprtc/BluetoothManagerTest.java", 867 "androidjunit/src/org/appspot/apprtc/DirectRTCClientTest.java", 868 "androidjunit/src/org/appspot/apprtc/TCPChannelClientTest.java", 869 ] 870 871 deps = [ 872 ":AppRTCMobile_javalib", 873 "../sdk/android:peerconnection_java", 874 "//base:base_java_test_support", 875 "//third_party/google-truth:google_truth_java", 876 ] 877 878 additional_jar_files = [ [ 879 "../sdk/android/tests/resources/robolectric.properties", 880 "robolectric.properties", 881 ] ] 882 } 883} 884 885if (!build_with_chromium) { 886 # Doesn't build within Chrome on Win. 887 rtc_executable("stun_prober") { 888 testonly = true 889 sources = [ "stunprober/main.cc" ] 890 deps = [ 891 "../p2p:libstunprober", 892 "../p2p:rtc_p2p", 893 "../rtc_base", 894 "../rtc_base:checks", 895 "../rtc_base:rtc_base_approved", 896 "//third_party/abseil-cpp/absl/flags:flag", 897 "//third_party/abseil-cpp/absl/flags:parse", 898 ] 899 } 900} 901