Home | History | Annotate | Download | only in base
      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 {
     10   'includes': [ '../build/common.gypi', ],
     11   'conditions': [
     12     ['os_posix == 1 and OS != "mac" and OS != "ios"', {
     13       'conditions': [
     14         ['sysroot!=""', {
     15           'variables': {
     16             'pkg-config': '../../../build/linux/pkg-config-wrapper "<(sysroot)" "<(target_arch)"',
     17           },
     18         }, {
     19           'variables': {
     20             'pkg-config': 'pkg-config'
     21           },
     22         }],
     23       ],
     24     }],
     25   ],
     26   'targets': [
     27     {
     28       'target_name': 'webrtc_base',
     29       'type': 'static_library',
     30       'defines': [
     31         'FEATURE_ENABLE_SSL',
     32         'GTEST_RELATIVE_PATH',
     33         'LOGGING=1',
     34         'USE_WEBRTC_DEV_BRANCH',
     35       ],
     36       'sources': [
     37         'asyncfile.cc',
     38         'asyncfile.h',
     39         'asynchttprequest.cc',
     40         'asynchttprequest.h',
     41         'asyncinvoker.cc',
     42         'asyncinvoker.h',
     43         'asyncinvoker-inl.h',
     44         'asyncpacketsocket.h',
     45         'asyncresolverinterface.h',
     46         'asyncsocket.cc',
     47         'asyncsocket.h',
     48         'asynctcpsocket.cc',
     49         'asynctcpsocket.h',
     50         'asyncudpsocket.cc',
     51         'asyncudpsocket.h',
     52         'atomicops.h',
     53         'autodetectproxy.cc',
     54         'autodetectproxy.h',
     55         'bandwidthsmoother.cc',
     56         'bandwidthsmoother.h',
     57         'base64.cc',
     58         'base64.h',
     59         'basicdefs.h',
     60         'basictypes.h',
     61         'bind.h',
     62         'bind.h.pump',
     63         'buffer.h',
     64         'bytebuffer.cc',
     65         'bytebuffer.h',
     66         'byteorder.h',
     67         'callback.h',
     68         'callback.h.pump',
     69         'checks.cc',
     70         'checks.h',
     71         'common.cc',
     72         'common.h',
     73         'constructormagic.h',
     74         'cpumonitor.cc',
     75         'cpumonitor.h',
     76         'crc32.cc',
     77         'crc32.h',
     78         'criticalsection.h',
     79         'cryptstring.h',
     80         'dbus.cc',
     81         'dbus.h',
     82         'diskcache.cc',
     83         'diskcache.h',
     84         'diskcache_win32.cc',
     85         'diskcache_win32.h',
     86         'event.cc',
     87         'event.h',
     88         'filelock.cc',
     89         'filelock.h',
     90         'fileutils.cc',
     91         'fileutils.h',
     92         'fileutils_mock.h',
     93         'firewallsocketserver.cc',
     94         'firewallsocketserver.h',
     95         'flags.cc',
     96         'flags.h',
     97         'gunit_prod.h',
     98         'helpers.cc',
     99         'helpers.h',
    100         'httpbase.cc',
    101         'httpbase.h',
    102         'httpclient.cc',
    103         'httpclient.h',
    104         'httpcommon-inl.h',
    105         'httpcommon.cc',
    106         'httpcommon.h',
    107         'httprequest.cc',
    108         'httprequest.h',
    109         'httpserver.cc',
    110         'httpserver.h',
    111         'ifaddrs-android.cc',
    112         'ifaddrs-android.h',
    113         'iosfilesystem.mm',
    114         'ipaddress.cc',
    115         'ipaddress.h',
    116         'json.cc',
    117         'json.h',
    118         'latebindingsymboltable.cc',
    119         'latebindingsymboltable.cc.def',
    120         'latebindingsymboltable.h',
    121         'latebindingsymboltable.h.def',
    122         'libdbusglibsymboltable.cc',
    123         'libdbusglibsymboltable.h',
    124         'linux.cc',
    125         'linux.h',
    126         'linuxfdwalk.c',
    127         'linuxfdwalk.h',
    128         'linuxwindowpicker.cc',
    129         'linuxwindowpicker.h',
    130         'linked_ptr.h',
    131         'logging.cc',
    132         'logging.h',
    133         'macasyncsocket.cc',
    134         'macasyncsocket.h',
    135         'maccocoasocketserver.h',
    136         'maccocoasocketserver.mm',
    137         'maccocoathreadhelper.h',
    138         'maccocoathreadhelper.mm',
    139         'macconversion.cc',
    140         'macconversion.h',
    141         'macsocketserver.cc',
    142         'macsocketserver.h',
    143         'macutils.cc',
    144         'macutils.h',
    145         'macwindowpicker.cc',
    146         'macwindowpicker.h',
    147         'mathutils.h',
    148         'md5.cc',
    149         'md5.h',
    150         'md5digest.h',
    151         'messagedigest.cc',
    152         'messagedigest.h',
    153         'messagehandler.cc',
    154         'messagehandler.h',
    155         'messagequeue.cc',
    156         'messagequeue.h',
    157         'multipart.cc',
    158         'multipart.h',
    159         'natserver.cc',
    160         'natserver.h',
    161         'natsocketfactory.cc',
    162         'natsocketfactory.h',
    163         'nattypes.cc',
    164         'nattypes.h',
    165         'nethelpers.cc',
    166         'nethelpers.h',
    167         'network.cc',
    168         'network.h',
    169         'nssidentity.cc',
    170         'nssidentity.h',
    171         'nssstreamadapter.cc',
    172         'nssstreamadapter.h',
    173         'nullsocketserver.h',
    174         'openssl.h',
    175         'openssladapter.cc',
    176         'openssladapter.h',
    177         'openssldigest.cc',
    178         'openssldigest.h',
    179         'opensslidentity.cc',
    180         'opensslidentity.h',
    181         'opensslstreamadapter.cc',
    182         'opensslstreamadapter.h',
    183         'optionsfile.cc',
    184         'optionsfile.h',
    185         'pathutils.cc',
    186         'pathutils.h',
    187         'physicalsocketserver.cc',
    188         'physicalsocketserver.h',
    189         'posix.cc',
    190         'posix.h',
    191         'profiler.cc',
    192         'profiler.h',
    193         'proxydetect.cc',
    194         'proxydetect.h',
    195         'proxyinfo.cc',
    196         'proxyinfo.h',
    197         'proxyserver.cc',
    198         'proxyserver.h',
    199         'ratelimiter.cc',
    200         'ratelimiter.h',
    201         'ratetracker.cc',
    202         'ratetracker.h',
    203         'refcount.h',
    204         'referencecountedsingletonfactory.h',
    205         'rollingaccumulator.h',
    206         'safe_conversions.h',
    207         'safe_conversions_impl.h',
    208         'schanneladapter.cc',
    209         'schanneladapter.h',
    210         'scoped_autorelease_pool.h',
    211         'scoped_autorelease_pool.mm',
    212         'scoped_ptr.h',
    213         'scoped_ref_ptr.h',
    214         'scopedptrcollection.h',
    215         'sec_buffer.h',
    216         'sha1.cc',
    217         'sha1.h',
    218         'sha1digest.h',
    219         'sharedexclusivelock.cc',
    220         'sharedexclusivelock.h',
    221         'signalthread.cc',
    222         'signalthread.h',
    223         'sigslot.h',
    224         'sigslotrepeater.h',
    225         'socket.h',
    226         'socketadapters.cc',
    227         'socketadapters.h',
    228         'socketaddress.cc',
    229         'socketaddress.h',
    230         'socketaddresspair.cc',
    231         'socketaddresspair.h',
    232         'socketfactory.h',
    233         'socketpool.cc',
    234         'socketpool.h',
    235         'socketserver.h',
    236         'socketstream.cc',
    237         'socketstream.h',
    238         'ssladapter.cc',
    239         'ssladapter.h',
    240         'sslconfig.h',
    241         'sslfingerprint.cc',
    242         'sslfingerprint.h',
    243         'sslidentity.cc',
    244         'sslidentity.h',
    245         'sslroots.h',
    246         'sslsocketfactory.cc',
    247         'sslsocketfactory.h',
    248         'sslstreamadapter.cc',
    249         'sslstreamadapter.h',
    250         'sslstreamadapterhelper.cc',
    251         'sslstreamadapterhelper.h',
    252         'stream.cc',
    253         'stream.h',
    254         'stringdigest.h',
    255         'stringencode.cc',
    256         'stringencode.h',
    257         'stringutils.cc',
    258         'stringutils.h',
    259         'systeminfo.cc',
    260         'systeminfo.h',
    261         'task.cc',
    262         'task.h',
    263         'taskparent.cc',
    264         'taskparent.h',
    265         'taskrunner.cc',
    266         'taskrunner.h',
    267         'testclient.cc',
    268         'testclient.h',
    269         'thread.cc',
    270         'thread.h',
    271         'thread_checker.h',
    272         'thread_checker_impl.cc',
    273         'thread_checker_impl.h',
    274         'timeutils.cc',
    275         'timeutils.h',
    276         'timing.cc',
    277         'timing.h',
    278         'transformadapter.cc',
    279         'transformadapter.h',
    280         'unixfilesystem.cc',
    281         'unixfilesystem.h',
    282         'urlencode.cc',
    283         'urlencode.h',
    284         'versionparsing.cc',
    285         'versionparsing.h',
    286         'virtualsocketserver.cc',
    287         'virtualsocketserver.h',
    288         'win32.cc',
    289         'win32.h',
    290         'win32filesystem.cc',
    291         'win32filesystem.h',
    292         'win32regkey.cc',
    293         'win32regkey.h',
    294         'win32securityerrors.cc',
    295         'win32socketinit.cc',
    296         'win32socketinit.h',
    297         'win32socketserver.cc',
    298         'win32socketserver.h',
    299         'win32window.cc',
    300         'win32window.h',
    301         'win32windowpicker.cc',
    302         'win32windowpicker.h',
    303         'window.h',
    304         'windowpicker.h',
    305         'windowpickerfactory.h',
    306         'winfirewall.cc',
    307         'winfirewall.h',
    308         'winping.cc',
    309         'winping.h',
    310         'worker.cc',
    311         'worker.h',
    312         '../overrides/webrtc/base/basictypes.h',
    313         '../overrides/webrtc/base/constructormagic.h',
    314         '../overrides/webrtc/base/logging.cc',
    315         '../overrides/webrtc/base/logging.h',
    316         '../overrides/webrtc/base/win32socketinit.cc',
    317       ],
    318       # TODO(henrike): issue 3307, make webrtc_base build without disabling
    319       # these flags.
    320       'cflags!': [
    321         '-Wextra',
    322         '-Wall',
    323       ],
    324       'cflags_cc!': [
    325         '-Wnon-virtual-dtor',
    326       ],
    327       'direct_dependent_settings': {
    328         'cflags_cc!': [
    329           '-Wnon-virtual-dtor',
    330         ],
    331         'defines': [
    332           'FEATURE_ENABLE_SSL',
    333           'GTEST_RELATIVE_PATH',
    334         ],
    335       },
    336       'include_dirs': [
    337         '../../third_party/jsoncpp/overrides/include',
    338         '../../third_party/jsoncpp/source/include',
    339       ],
    340       'conditions': [
    341         ['build_with_chromium==1', {
    342           'include_dirs': [
    343             '../overrides',
    344             '../../openssl/openssl/include',
    345           ],
    346           'sources!': [
    347             'asyncinvoker.cc',
    348             'asyncinvoker.h',
    349             'asyncinvoker-inl.h',
    350             'asyncresolverinterface.h',
    351             'atomicops.h',
    352             'bandwidthsmoother.cc',
    353             'bandwidthsmoother.h',
    354             'basictypes.h',
    355             'bind.h',
    356             'bind.h.pump',
    357             'buffer.h',
    358             'callback.h',
    359             'callback.h.pump',
    360             'constructormagic.h',
    361             'dbus.cc',
    362             'dbus.h',
    363             'diskcache_win32.cc',
    364             'diskcache_win32.h',
    365             'filelock.cc',
    366             'filelock.h',
    367             'fileutils_mock.h',
    368             'genericslot.h',
    369             'genericslot.h.pump',
    370             'httpserver.cc',
    371             'httpserver.h',
    372             'json.cc',
    373             'json.h',
    374             'latebindingsymboltable.cc',
    375             'latebindingsymboltable.cc.def',
    376             'latebindingsymboltable.h',
    377             'latebindingsymboltable.h.def',
    378             'libdbusglibsymboltable.cc',
    379             'libdbusglibsymboltable.h',
    380             'linuxfdwalk.c',
    381             'linuxfdwalk.h',
    382             'linuxwindowpicker.cc',
    383             'linuxwindowpicker.h',
    384             'logging.cc',
    385             'logging.h',
    386             'macasyncsocket.cc',
    387             'macasyncsocket.h',
    388             'maccocoasocketserver.h',
    389             'maccocoasocketserver.mm',
    390             'macsocketserver.cc',
    391             'macsocketserver.h',
    392             'macwindowpicker.cc',
    393             'macwindowpicker.h',
    394             'mathutils.h',
    395             'multipart.cc',
    396             'multipart.h',
    397             'natserver.cc',
    398             'natserver.h',
    399             'natsocketfactory.cc',
    400             'natsocketfactory.h',
    401             'nattypes.cc',
    402             'nattypes.h',
    403             'openssl.h',
    404             'optionsfile.cc',
    405             'optionsfile.h',
    406             'posix.cc',
    407             'posix.h',
    408             'profiler.cc',
    409             'profiler.h',
    410             'proxyserver.cc',
    411             'proxyserver.h',
    412             'refcount.h',
    413             'referencecountedsingletonfactory.h',
    414             'rollingaccumulator.h',
    415             'safe_conversions.h',
    416             'safe_conversions_impl.h',
    417             'scopedptrcollection.h',
    418             'scoped_ref_ptr.h',
    419             'sec_buffer.h',
    420             'sharedexclusivelock.cc',
    421             'sharedexclusivelock.h',
    422             'sslconfig.h',
    423             'sslroots.h',
    424             'stringdigest.h',
    425             'testbase64.h',
    426             'testclient.cc',
    427             'testclient.h',
    428             'transformadapter.cc',
    429             'transformadapter.h',
    430             'versionparsing.cc',
    431             'versionparsing.h',
    432             'virtualsocketserver.cc',
    433             'virtualsocketserver.h',
    434             'win32regkey.cc',
    435             'win32regkey.h',
    436             'win32socketinit.cc',
    437             'win32socketinit.h',
    438             'win32socketserver.cc',
    439             'win32socketserver.h',
    440             'window.h',
    441             'windowpickerfactory.h',
    442             'windowpicker.h',
    443           ],
    444           'defines': [
    445             'NO_MAIN_THREAD_WRAPPING',
    446             'SSL_USE_NSS',
    447           ],
    448           'direct_dependent_settings': {
    449             'defines': [
    450               'NO_MAIN_THREAD_WRAPPING',
    451               'SSL_USE_NSS',
    452             ],
    453           },
    454         }, {
    455           'conditions': [
    456             ['build_json==1', {
    457               'dependencies': [
    458                 '<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
    459               ],
    460             }, {
    461               'include_dirs': [
    462                 '<(json_root)',
    463               ],
    464               'defines': [
    465                 # When defined changes the include path for json.h to where it
    466                 # is expected to be when building json outside of the standalone
    467                 # build.
    468                 'WEBRTC_EXTERNAL_JSON',
    469               ],
    470             }],
    471           ],
    472           'sources!': [
    473             '../overrides/webrtc/base/basictypes.h',
    474             '../overrides/webrtc/base/constructormagic.h',
    475             '../overrides/webrtc/base/win32socketinit.cc',
    476             '../overrides/webrtc/base/logging.cc',
    477             '../overrides/webrtc/base/logging.h',
    478           ],
    479         }],
    480         ['use_openssl==1', {
    481           'defines': [
    482             'SSL_USE_OPENSSL',
    483             'HAVE_OPENSSL_SSL_H',
    484           ],
    485           'direct_dependent_settings': {
    486             'defines': [
    487               'SSL_USE_OPENSSL',
    488               'HAVE_OPENSSL_SSL_H',
    489             ],
    490           },
    491           'conditions': [
    492             ['build_ssl==1', {
    493               'dependencies': [
    494                 '<(DEPTH)/third_party/openssl/openssl.gyp:openssl',
    495               ],
    496             }, {
    497               'include_dirs': [
    498                 '<(ssl_root)',
    499               ],
    500             }],
    501           ],
    502         }, {
    503           'defines': [
    504             'SSL_USE_NSS',
    505             'HAVE_NSS_SSL_H',
    506             'SSL_USE_NSS_RNG',
    507           ],
    508           'direct_dependent_settings': {
    509             'defines': [
    510               'SSL_USE_NSS',
    511               'HAVE_NSS_SSL_H',
    512               'SSL_USE_NSS_RNG',
    513             ],
    514           },
    515         }],
    516         ['OS == "android"', {
    517           'defines': [
    518             'HAVE_OPENSSL_SSL_H'
    519           ],
    520           'direct_dependent_settings': {
    521             'defines': [
    522               'HAVE_OPENSSL_SSL_H'
    523             ],
    524           },
    525           'link_settings': {
    526             'libraries': [
    527               '-llog',
    528               '-lGLESv2',
    529             ],
    530           },
    531         }, {
    532           'defines': [
    533             'HAVE_NSS_SSL_H'
    534             'SSL_USE_NSS_RNG',
    535           ],
    536           'direct_dependent_settings': {
    537             'defines': [
    538               'HAVE_NSS_SSL_H'
    539               'SSL_USE_NSS_RNG',
    540             ],
    541           },
    542           'sources!': [
    543             'ifaddrs-android.cc',
    544             'ifaddrs-android.h',
    545           ],
    546         }],
    547         ['OS=="ios"', {
    548           'all_dependent_settings': {
    549             'xcode_settings': {
    550               'OTHER_LDFLAGS': [
    551                 '-framework Foundation',
    552                 '-framework Security',
    553                 '-framework SystemConfiguration',
    554                 '-framework UIKit',
    555               ],
    556             },
    557           },
    558            'conditions': [
    559             ['build_ssl==1', {
    560               'dependencies': [
    561                 '<(DEPTH)/net/third_party/nss/ssl.gyp:libssl',
    562               ]
    563             }, {
    564               'include_dirs': [
    565                 '<(ssl_root)',
    566               ],
    567             }],
    568           ],
    569         }],
    570         ['OS=="linux"', {
    571           'link_settings': {
    572             'libraries': [
    573               '-lcrypto',
    574               '-ldl',
    575               '-lrt',
    576               '-lXext',
    577               '-lX11',
    578               '-lXcomposite',
    579               '-lXrender',
    580               '<!@(<(pkg-config) --libs-only-l nss | sed -e "s/-lssl3//")',
    581             ],
    582           },
    583           'cflags': [
    584             '<!@(<(pkg-config) --cflags nss)',
    585           ],
    586           'ldflags': [
    587             '<!@(<(pkg-config) --libs-only-L --libs-only-other nss)',
    588           ],
    589         }, {
    590           'sources!': [
    591             'dbus.cc',
    592             'dbus.h',
    593             'libdbusglibsymboltable.cc',
    594             'libdbusglibsymboltable.h',
    595             'linuxfdwalk.c',
    596             'linuxwindowpicker.cc',
    597             'linuxwindowpicker.h',
    598           ],
    599         }],
    600         ['OS=="mac"', {
    601           'link_settings': {
    602             'libraries': [
    603               '$(SDKROOT)/usr/lib/libcrypto.dylib',
    604               '$(SDKROOT)/usr/lib/libssl.dylib',
    605             ],
    606           },
    607           'all_dependent_settings': {
    608             'link_settings': {
    609               'xcode_settings': {
    610                 'OTHER_LDFLAGS': [
    611                   '-framework Cocoa',
    612                   '-framework Foundation',
    613                   '-framework IOKit',
    614                   '-framework Security',
    615                   '-framework SystemConfiguration',
    616                 ],
    617               },
    618             },
    619           },
    620           'conditions': [
    621             ['target_arch=="ia32"', {
    622               'all_dependent_settings': {
    623                 'link_settings': {
    624                   'xcode_settings': {
    625                     'OTHER_LDFLAGS': [
    626                       '-framework Carbon',
    627                     ],
    628                   },
    629                 },
    630               },
    631             }],
    632           ],
    633         }, {
    634           'sources!': [
    635             'macasyncsocket.cc',
    636             'macasyncsocket.h',
    637             'maccocoasocketserver.h',
    638             'maccocoasocketserver.mm',
    639             'macconversion.cc',
    640             'macconversion.h',
    641             'macsocketserver.cc',
    642             'macsocketserver.h',
    643             'macutils.cc',
    644             'macutils.h',
    645             'macwindowpicker.cc',
    646             'macwindowpicker.h',
    647           ],
    648         }],
    649         ['OS=="win"', {
    650           'link_settings': {
    651             'libraries': [
    652               '-lcrypt32.lib',
    653               '-liphlpapi.lib',
    654               '-lsecur32.lib',
    655             ],
    656           },
    657           # Suppress warnings about WIN32_LEAN_AND_MEAN.
    658           'msvs_disabled_warnings': [4005, 4703],
    659           'defines': [
    660             '_CRT_NONSTDC_NO_DEPRECATE',
    661           ],
    662         }, {
    663           'sources/': [
    664             ['exclude', 'win32[a-z0-9]*\\.(h|cc)$'],
    665           ],
    666           'sources!': [
    667               'schanneladapter.cc',
    668               'schanneladapter.h',
    669               'winping.cc',
    670               'winping.h',
    671               'winfirewall.cc',
    672               'winfirewall.h',
    673             ],
    674         }],
    675         ['os_posix==0', {
    676           'sources!': [
    677             'latebindingsymboltable.cc',
    678             'latebindingsymboltable.h',
    679             'posix.cc',
    680             'posix.h',
    681             'unixfilesystem.cc',
    682             'unixfilesystem.h',
    683           ],
    684         }, {
    685           'configurations': {
    686             'Debug_Base': {
    687               'defines': [
    688                 # Chromium's build/common.gypi defines this for all posix
    689                 # _except_ for ios & mac.  We want it there as well, e.g.
    690                 # because ASSERT and friends trigger off of it.
    691                 '_DEBUG',
    692               ],
    693             },
    694           }
    695         }],
    696         ['OS=="ios" or (OS=="mac" and target_arch!="ia32")', {
    697           'defines': [
    698             'CARBON_DEPRECATED=YES',
    699           ],
    700         }],
    701         ['OS!="ios" and OS!="mac"', {
    702           'sources!': [
    703             'scoped_autorelease_pool.mm',
    704           ],
    705         }],
    706         ['OS=="ios" or os_posix==0', {
    707           'sources!': [
    708             'openssl.h',
    709             'openssladapter.cc',
    710             'openssladapter.h',
    711             'openssldigest.cc',
    712             'openssldigest.h',
    713             'opensslidentity.cc',
    714             'opensslidentity.h',
    715             'opensslstreamadapter.cc',
    716             'opensslstreamadapter.h',
    717           ],
    718         }],
    719         ['OS!="linux" and OS!="android"', {
    720           'sources!': [
    721             'linux.cc',
    722             'linux.h',
    723           ],
    724         }],
    725         ['OS == "mac" or OS == "ios" or OS == "win"', {
    726           'conditions': [
    727             ['build_ssl==1', {
    728               'dependencies': [
    729                 '<(DEPTH)/net/third_party/nss/ssl.gyp:libssl',
    730                 '<(DEPTH)/third_party/nss/nss.gyp:nspr',
    731                 '<(DEPTH)/third_party/nss/nss.gyp:nss',
    732               ],
    733             }, {
    734               'include_dirs': [
    735                 '<(ssl_root)',
    736               ],
    737             }],
    738           ],
    739         }],
    740         ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android"', {
    741           'conditions': [
    742             ['build_ssl==1', {
    743               'dependencies': [
    744                 '<(DEPTH)/build/linux/system.gyp:ssl',
    745               ],
    746             }, {
    747               'include_dirs': [
    748                 '<(ssl_root)',
    749               ],
    750             }],
    751           ],
    752         }],
    753       ],
    754     },
    755   ],
    756 }
    757