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