tor-browser

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

BUILD.gn (15027B)


      1 # Copyright (c) 2014 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 }
     15 
     16 config("audio_device_warnings_config") {
     17   if (is_win && is_clang) {
     18     cflags = [
     19       # Disable warnings failing when compiling with Clang on Windows.
     20       # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
     21       "-Wno-microsoft-goto",
     22     ]
     23   }
     24 }
     25 
     26 rtc_source_set("audio_device_default") {
     27   visibility = [ "*" ]
     28   sources = [ "include/audio_device_default.h" ]
     29   deps = [ "../../api/audio:audio_device" ]
     30 }
     31 
     32 rtc_source_set("audio_device") {
     33 if (!build_with_mozilla) { # See Bug 1820869.
     34   visibility = [ "*" ]
     35   public_deps += [  # no-presubmit-check TODO(webrtc:8603)
     36     ":audio_device_api",
     37 
     38     # Deprecated.
     39     # TODO(webrtc:7452): Remove this public dep. audio_device_impl should
     40     # be depended on directly if needed.
     41     ":audio_device_impl",
     42   ]
     43 }
     44 }
     45 
     46 rtc_source_set("audio_device_api") {
     47   visibility = [ "*" ]
     48   sources = [
     49     "include/audio_device.h",
     50     "include/audio_device_defines.h",
     51   ]
     52   deps = [ "../../api/audio:audio_device" ]
     53 }
     54 
     55 rtc_library("audio_device_buffer") {
     56 if (!build_with_mozilla) { # See Bug 1820869.
     57   sources = [
     58     "audio_device_buffer.cc",
     59     "audio_device_buffer.h",
     60     "fine_audio_buffer.cc",
     61     "fine_audio_buffer.h",
     62   ]
     63   deps = [
     64     "../../api:array_view",
     65     "../../api:sequence_checker",
     66     "../../api/audio:audio_device",
     67     "../../api/environment",
     68     "../../api/task_queue",
     69     "../../api/units:time_delta",
     70     "../../common_audio:common_audio_c",
     71     "../../rtc_base:buffer",
     72     "../../rtc_base:checks",
     73     "../../rtc_base:event_tracer",
     74     "../../rtc_base:logging",
     75     "../../rtc_base:macromagic",
     76     "../../rtc_base:safe_conversions",
     77     "../../rtc_base:timestamp_aligner",
     78     "../../rtc_base:timeutils",
     79     "../../rtc_base/synchronization:mutex",
     80     "../../rtc_base/system:no_unique_address",
     81     "../../system_wrappers",
     82     "../../system_wrappers:metrics",
     83   ]
     84 }
     85 }
     86 
     87 rtc_library("audio_device_generic") {
     88   sources = [
     89     "audio_device_generic.cc",
     90     "audio_device_generic.h",
     91   ]
     92   deps = [
     93     ":audio_device_buffer",
     94     "../../api/audio:audio_device",
     95     "../../rtc_base:logging",
     96   ]
     97 }
     98 
     99 rtc_library("audio_device_name") {
    100   sources = [
    101     "audio_device_name.cc",
    102     "audio_device_name.h",
    103   ]
    104   deps = [ "//third_party/abseil-cpp/absl/strings:string_view" ]
    105 }
    106 
    107 rtc_library("windows_core_audio_utility") {
    108   if (is_win && !build_with_chromium) {
    109     sources = [
    110       "win/core_audio_utility_win.cc",
    111       "win/core_audio_utility_win.h",
    112     ]
    113 
    114     deps = [
    115       ":audio_device_name",
    116       "../../api/audio:audio_device",
    117       "../../api/units:time_delta",
    118       "../../rtc_base:checks",
    119       "../../rtc_base:logging",
    120       "../../rtc_base:platform_thread_types",
    121       "../../rtc_base:stringutils",
    122       "../../rtc_base/win:windows_version",
    123       "//third_party/abseil-cpp/absl/strings",
    124     ]
    125 
    126     libs = [ "oleaut32.lib" ]
    127   }
    128 }
    129 
    130 # An ADM with a dedicated factory method which does not depend on the
    131 # audio_device_impl target. The goal is to use this new structure and
    132 # gradually phase out the old design.
    133 # TODO(henrika): currently only supported on Windows.
    134 rtc_library("audio_device_module_from_input_and_output") {
    135   visibility = [ "*" ]
    136   if (is_win && !build_with_chromium) {
    137     sources = [
    138       "include/audio_device_factory.cc",
    139       "include/audio_device_factory.h",
    140     ]
    141     sources += [
    142       "win/audio_device_module_win.cc",
    143       "win/audio_device_module_win.h",
    144       "win/core_audio_base_win.cc",
    145       "win/core_audio_base_win.h",
    146       "win/core_audio_input_win.cc",
    147       "win/core_audio_input_win.h",
    148       "win/core_audio_output_win.cc",
    149       "win/core_audio_output_win.h",
    150     ]
    151 
    152     deps = [
    153       ":audio_device_buffer",
    154       ":audio_device_name",
    155       ":windows_core_audio_utility",
    156       "../../api:array_view",
    157       "../../api:make_ref_counted",
    158       "../../api:scoped_refptr",
    159       "../../api:sequence_checker",
    160       "../../api/audio:audio_device",
    161       "../../api/environment",
    162       "../../api/task_queue",
    163       "../../api/units:time_delta",
    164       "../../rtc_base:checks",
    165       "../../rtc_base:logging",
    166       "../../rtc_base:platform_thread",
    167       "../../rtc_base:safe_conversions",
    168       "../../rtc_base:stringutils",
    169       "../../rtc_base:timeutils",
    170       "../../rtc_base:zero_memory",
    171       "../../rtc_base/win:scoped_com_initializer",
    172       "../../rtc_base/win:windows_version",
    173       "//third_party/abseil-cpp/absl/strings",
    174     ]
    175   }
    176 }
    177 
    178 if (!build_with_chromium) {
    179   rtc_library("test_audio_device_module") {
    180     visibility = [ "*" ]
    181     sources = [
    182       "include/test_audio_device.cc",
    183       "include/test_audio_device.h",
    184       "test_audio_device_impl.cc",
    185       "test_audio_device_impl.h",
    186     ]
    187 
    188     deps = [
    189       ":audio_device_buffer",
    190       ":audio_device_default",
    191       ":audio_device_generic",
    192       ":audio_device_impl",
    193       "../../api:array_view",
    194       "../../api:make_ref_counted",
    195       "../../api:scoped_refptr",
    196       "../../api/audio:audio_device",
    197       "../../api/environment",
    198       "../../api/task_queue",
    199       "../../api/units:time_delta",
    200       "../../common_audio",
    201       "../../rtc_base:buffer",
    202       "../../rtc_base:checks",
    203       "../../rtc_base:logging",
    204       "../../rtc_base:macromagic",
    205       "../../rtc_base:platform_thread",
    206       "../../rtc_base:random",
    207       "../../rtc_base:rtc_event",
    208       "../../rtc_base:safe_conversions",
    209       "../../rtc_base:timeutils",
    210       "../../rtc_base/synchronization:mutex",
    211       "../../rtc_base/system:file_wrapper",
    212       "../../rtc_base/task_utils:repeating_task",
    213       "//third_party/abseil-cpp/absl/strings:string_view",
    214     ]
    215   }
    216 }
    217 
    218 rtc_library("audio_device_dummy") {
    219   visibility = [ "*" ]
    220   sources = [
    221     "dummy/audio_device_dummy.cc",
    222     "dummy/audio_device_dummy.h",
    223   ]
    224   deps = [
    225     ":audio_device_buffer",
    226     ":audio_device_generic",
    227     "../../api/audio:audio_device",
    228   ]
    229 }
    230 
    231 if (!build_with_chromium) {
    232   rtc_library("file_audio_device") {
    233     visibility = [ "*" ]
    234     sources = [
    235       "dummy/file_audio_device.cc",
    236       "dummy/file_audio_device.h",
    237       "dummy/file_audio_device_factory.cc",
    238       "dummy/file_audio_device_factory.h",
    239     ]
    240     defines = []
    241     if (rtc_use_dummy_audio_file_devices) {
    242       defines += [ "WEBRTC_DUMMY_FILE_DEVICES" ]
    243     }
    244     deps = [
    245       ":audio_device_buffer",
    246       ":audio_device_generic",
    247       "../../api/audio:audio_device",
    248       "../../rtc_base:checks",
    249       "../../rtc_base:logging",
    250       "../../rtc_base:platform_thread",
    251       "../../rtc_base:stringutils",
    252       "../../rtc_base:threading",
    253       "../../rtc_base:timeutils",
    254       "../../rtc_base/synchronization:mutex",
    255       "../../rtc_base/system:file_wrapper",
    256       "//third_party/abseil-cpp/absl/strings:string_view",
    257     ]
    258   }
    259 }
    260 
    261 # Contains default implementations of webrtc::AudioDeviceModule for Windows,
    262 # Linux, Mac, iOS and Android.
    263 rtc_library("audio_device_impl") {
    264 if (!build_with_mozilla) { # See Bug 1820869.
    265   visibility = [ "*" ]
    266   deps = [
    267     ":audio_device_buffer",
    268     ":audio_device_default",
    269     ":audio_device_dummy",
    270     ":audio_device_generic",
    271     "../../api:array_view",
    272     "../../api:make_ref_counted",
    273     "../../api:ref_count",
    274     "../../api:refcountedbase",
    275     "../../api:scoped_refptr",
    276     "../../api:sequence_checker",
    277     "../../api/audio:audio_device",
    278     "../../api/environment",
    279     "../../api/task_queue",
    280     "../../api/units:time_delta",
    281     "../../common_audio",
    282     "../../common_audio:common_audio_c",
    283     "../../rtc_base:buffer",
    284     "../../rtc_base:checks",
    285     "../../rtc_base:logging",
    286     "../../rtc_base:macromagic",
    287     "../../rtc_base:platform_thread",
    288     "../../rtc_base:random",
    289     "../../rtc_base:rtc_event",
    290     "../../rtc_base:safe_conversions",
    291     "../../rtc_base:stringutils",
    292     "../../rtc_base:threading",
    293     "../../rtc_base:timeutils",
    294     "../../rtc_base/synchronization:mutex",
    295     "../../rtc_base/system:arch",
    296     "../../rtc_base/system:file_wrapper",
    297     "../../rtc_base/task_utils:repeating_task",
    298     "../../system_wrappers:metrics",
    299     "../utility",
    300     "//third_party/abseil-cpp/absl/base:core_headers",
    301     "//third_party/abseil-cpp/absl/base:nullability",
    302     "//third_party/abseil-cpp/absl/strings:string_view",
    303   ]
    304   if (rtc_include_internal_audio_device && is_ios) {
    305     deps += [ "../../sdk:audio_device" ]
    306   }
    307 
    308   sources = [ "include/fake_audio_device.h" ]
    309 
    310   if (build_with_mozilla) {
    311     sources -= [
    312       "include/test_audio_device.cc",
    313       "include/test_audio_device.h",
    314     ]
    315   }
    316 
    317   defines = []
    318   cflags = []
    319   if (rtc_audio_device_plays_sinus_tone) {
    320     defines += [ "AUDIO_DEVICE_PLAYS_SINUS_TONE" ]
    321   }
    322   if (rtc_enable_android_aaudio) {
    323     defines += [ "WEBRTC_AUDIO_DEVICE_INCLUDE_ANDROID_AAUDIO" ]
    324   }
    325   if (rtc_include_internal_audio_device) {
    326     sources += [
    327       "audio_device_data_observer.cc",
    328       "audio_device_impl.cc",
    329       "audio_device_impl.h",
    330       "include/audio_device_data_observer.h",
    331     ]
    332     if (is_android) {
    333       if (build_with_mozilla) {
    334         include_dirs += [
    335           "/config/external/nspr",
    336           "/nsprpub/lib/ds",
    337           "/nsprpub/pr/include",
    338         ]
    339       }
    340     }
    341     if (rtc_use_dummy_audio_file_devices) {
    342       defines += [ "WEBRTC_DUMMY_FILE_DEVICES" ]
    343     } else {
    344       if (is_linux || is_chromeos) {
    345         sources += [
    346           "linux/alsasymboltable_linux.cc",
    347           "linux/alsasymboltable_linux.h",
    348           "linux/audio_device_alsa_linux.cc",
    349           "linux/audio_device_alsa_linux.h",
    350           "linux/audio_mixer_manager_alsa_linux.cc",
    351           "linux/audio_mixer_manager_alsa_linux.h",
    352           "linux/latebindingsymboltable_linux.cc",
    353           "linux/latebindingsymboltable_linux.h",
    354         ]
    355         defines += [ "WEBRTC_ENABLE_LINUX_ALSA" ]
    356         libs = [ "dl" ]
    357         if (rtc_use_x11) {
    358           libs += [ "X11" ]
    359           defines += [ "WEBRTC_USE_X11" ]
    360         }
    361         if (rtc_include_pulse_audio) {
    362           defines += [ "WEBRTC_ENABLE_LINUX_PULSE" ]
    363         }
    364         sources += [
    365           "linux/audio_device_pulse_linux.cc",
    366           "linux/audio_device_pulse_linux.h",
    367           "linux/audio_mixer_manager_pulse_linux.cc",
    368           "linux/audio_mixer_manager_pulse_linux.h",
    369           "linux/pulseaudiosymboltable_linux.cc",
    370           "linux/pulseaudiosymboltable_linux.h",
    371         ]
    372       }
    373       if (is_mac) {
    374         sources += [
    375           "mac/audio_device_mac.cc",
    376           "mac/audio_device_mac.h",
    377           "mac/audio_mixer_manager_mac.cc",
    378           "mac/audio_mixer_manager_mac.h",
    379         ]
    380         deps += [
    381           ":audio_device_impl_frameworks",
    382           "../third_party/portaudio:mac_portaudio",
    383         ]
    384       }
    385       if (is_win) {
    386         sources += [
    387           "win/audio_device_core_win.cc",
    388           "win/audio_device_core_win.h",
    389         ]
    390         libs = [
    391           # Required for the built-in WASAPI AEC.
    392           "dmoguids.lib",
    393           "wmcodecdspuuid.lib",
    394           "amstrmid.lib",
    395           "msdmo.lib",
    396           "oleaut32.lib",
    397         ]
    398         deps += [
    399           "../../rtc_base:win32",
    400           "../../rtc_base/win:scoped_com_initializer",
    401         ]
    402       }
    403       configs += [ ":audio_device_warnings_config" ]
    404     }
    405   } else {
    406     defines = [ "WEBRTC_DUMMY_AUDIO_BUILD" ]
    407   }
    408 
    409   if (!build_with_chromium) {
    410     deps += [ ":file_audio_device" ]
    411 
    412     # TODO(titovartem): remove after downstream is fixed
    413     sources += [ "dummy/file_audio_device_factory.h" ]
    414   }
    415 }
    416 }
    417 
    418 if (is_mac) {
    419   rtc_source_set("audio_device_impl_frameworks") {
    420     visibility = [ ":*" ]
    421     frameworks = [
    422       # Needed for CoreGraphics:
    423       "ApplicationServices.framework",
    424 
    425       "AudioToolbox.framework",
    426       "CoreAudio.framework",
    427 
    428       # Needed for CGEventSourceKeyState in audio_device_mac.cc:
    429       "CoreGraphics.framework",
    430     ]
    431   }
    432 }
    433 
    434 if (!build_with_mozilla) { # See Bug 1820869.
    435 rtc_source_set("mock_audio_device") {
    436   visibility = [ "*" ]
    437   testonly = true
    438   sources = [
    439     "include/mock_audio_device.h",
    440     "include/mock_audio_transport.h",
    441     "mock_audio_device_buffer.h",
    442   ]
    443   deps = [
    444     ":audio_device",
    445     ":audio_device_buffer",
    446     ":audio_device_impl",
    447     "../../api:make_ref_counted",
    448     "../../api:scoped_refptr",
    449     "../../api/audio:audio_device",
    450     "../../test:test_support",
    451   ]
    452 }
    453 }
    454 
    455 # See Bug 1820869 for !build_with_mozilla.
    456 if (rtc_include_tests && !build_with_chromium && !build_with_mozilla) {
    457   rtc_library("audio_device_unittests") {
    458     testonly = true
    459 
    460     sources = [
    461       "fine_audio_buffer_unittest.cc",
    462       "include/test_audio_device_unittest.cc",
    463       "test_audio_device_impl_test.cc",
    464     ]
    465     deps = [
    466       ":audio_device",
    467       ":audio_device_buffer",
    468       ":audio_device_generic",
    469       ":audio_device_impl",
    470       ":mock_audio_device",
    471       ":test_audio_device_module",
    472       "../../api:array_view",
    473       "../../api:scoped_refptr",
    474       "../../api:sequence_checker",
    475       "../../api/audio:audio_device",
    476       "../../api/audio:create_audio_device_module",
    477       "../../api/environment",
    478       "../../api/environment:environment_factory",
    479       "../../api/task_queue",
    480       "../../api/task_queue:default_task_queue_factory",
    481       "../../api/units:time_delta",
    482       "../../api/units:timestamp",
    483       "../../common_audio",
    484       "../../rtc_base:buffer",
    485       "../../rtc_base:checks",
    486       "../../rtc_base:logging",
    487       "../../rtc_base:macromagic",
    488       "../../rtc_base:race_checker",
    489       "../../rtc_base:rtc_event",
    490       "../../rtc_base:safe_conversions",
    491       "../../rtc_base:task_queue_for_test",
    492       "../../rtc_base:timeutils",
    493       "../../rtc_base/synchronization:mutex",
    494       "../../system_wrappers",
    495       "../../test:create_test_environment",
    496       "../../test:fileutils",
    497       "../../test:test_support",
    498       "../../test/time_controller",
    499     ]
    500     if (is_linux || is_chromeos || is_mac || is_win) {
    501       sources += [ "audio_device_unittest.cc" ]
    502     }
    503     if (is_win) {
    504       sources += [ "win/core_audio_utility_win_unittest.cc" ]
    505       deps += [
    506         ":audio_device_module_from_input_and_output",
    507         ":windows_core_audio_utility",
    508         "../../rtc_base/win:scoped_com_initializer",
    509         "../../rtc_base/win:windows_version",
    510       ]
    511     }
    512     if (is_android) {
    513       deps += [
    514         "../../sdk/android:internal_jni",
    515         "../../sdk/android:libjingle_peerconnection_java",
    516         "../../sdk/android:native_api_jni",
    517         "../utility",
    518       ]
    519     }
    520     if (!rtc_include_internal_audio_device) {
    521       defines = [ "WEBRTC_DUMMY_AUDIO_BUILD" ]
    522     }
    523   }
    524 }