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