tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }