| Index: webrtc/api/api.gyp
 | 
| diff --git a/webrtc/api/api.gyp b/webrtc/api/api.gyp
 | 
| index 5f848d7663c71d77c90737b01d9156e86c9fc358..e4fa732296108a67e7ce394bd5ae0d11b3a1c667 100644
 | 
| --- a/webrtc/api/api.gyp
 | 
| +++ b/webrtc/api/api.gyp
 | 
| @@ -9,6 +9,271 @@
 | 
|  {
 | 
|    'includes': [ '../build/common.gypi', ],
 | 
|    'conditions': [
 | 
| +    ['os_posix == 1 and OS != "mac" and OS != "ios"', {
 | 
| +      'conditions': [
 | 
| +        ['sysroot!=""', {
 | 
| +          'variables': {
 | 
| +            'pkg-config': '../../../build/linux/pkg-config-wrapper "<(sysroot)" "<(target_arch)"',
 | 
| +          },
 | 
| +        }, {
 | 
| +          'variables': {
 | 
| +            'pkg-config': 'pkg-config'
 | 
| +          },
 | 
| +        }],
 | 
| +      ],
 | 
| +    }],
 | 
| +    ['OS=="linux" or OS=="android"', {
 | 
| +      'targets': [
 | 
| +        {
 | 
| +          'target_name': 'libjingle_peerconnection_jni',
 | 
| +          'type': 'static_library',
 | 
| +          'dependencies': [
 | 
| +            '<(webrtc_root)/system_wrappers/system_wrappers.gyp:field_trial_default',
 | 
| +            'libjingle_peerconnection',
 | 
| +          ],
 | 
| +          'sources': [
 | 
| +            'java/jni/classreferenceholder.cc',
 | 
| +            'java/jni/classreferenceholder.h',
 | 
| +            'java/jni/jni_helpers.cc',
 | 
| +            'java/jni/jni_helpers.h',
 | 
| +            'java/jni/native_handle_impl.cc',
 | 
| +            'java/jni/native_handle_impl.h',
 | 
| +            'java/jni/peerconnection_jni.cc',
 | 
| +          ],
 | 
| +          'include_dirs': [
 | 
| +            '<(libyuv_dir)/include',
 | 
| +          ],
 | 
| +          # TODO(kjellander): Make the code compile without disabling these flags.
 | 
| +          # See https://bugs.chromium.org/p/webrtc/issues/detail?id=3307
 | 
| +          'cflags': [
 | 
| +            '-Wno-sign-compare',
 | 
| +            '-Wno-unused-variable',
 | 
| +          ],
 | 
| +          'cflags!': [
 | 
| +            '-Wextra',
 | 
| +          ],
 | 
| +          'cflags_cc!': [
 | 
| +            '-Wnon-virtual-dtor',
 | 
| +            '-Woverloaded-virtual',
 | 
| +          ],
 | 
| +          'msvs_disabled_warnings': [
 | 
| +            4245,  # conversion from 'int' to 'size_t', signed/unsigned mismatch.
 | 
| +            4267,  # conversion from 'size_t' to 'int', possible loss of data.
 | 
| +            4389,  # signed/unsigned mismatch.
 | 
| +          ],
 | 
| +          'conditions': [
 | 
| +            ['OS=="linux"', {
 | 
| +              'include_dirs': [
 | 
| +                '<(java_home)/include',
 | 
| +                '<(java_home)/include/linux',
 | 
| +              ],
 | 
| +            }],
 | 
| +           ['build_json==1', {
 | 
| +              'dependencies': [
 | 
| +                '<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
 | 
| +              ],
 | 
| +              'export_dependent_settings': [
 | 
| +                '<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
 | 
| +              ],
 | 
| +            }],
 | 
| +            ['OS=="android"', {
 | 
| +              'sources': [
 | 
| +                'androidvideocapturer.cc',
 | 
| +                'androidvideocapturer.h',
 | 
| +                'java/jni/androidmediacodeccommon.h',
 | 
| +                'java/jni/androidmediadecoder_jni.cc',
 | 
| +                'java/jni/androidmediadecoder_jni.h',
 | 
| +                'java/jni/androidmediaencoder_jni.cc',
 | 
| +                'java/jni/androidmediaencoder_jni.h',
 | 
| +                'java/jni/androidnetworkmonitor_jni.cc',
 | 
| +                'java/jni/androidnetworkmonitor_jni.h',
 | 
| +                'java/jni/androidvideocapturer_jni.cc',
 | 
| +                'java/jni/androidvideocapturer_jni.h',
 | 
| +                'java/jni/surfacetexturehelper_jni.cc',
 | 
| +                'java/jni/surfacetexturehelper_jni.h',
 | 
| +              ]
 | 
| +            }],
 | 
| +          ],
 | 
| +        },
 | 
| +        {
 | 
| +          'target_name': 'libjingle_peerconnection_so',
 | 
| +          'type': 'shared_library',
 | 
| +          'dependencies': [
 | 
| +            'libjingle_peerconnection',
 | 
| +            'libjingle_peerconnection_jni',
 | 
| +          ],
 | 
| +          'sources': [
 | 
| +           'java/jni/jni_onload.cc',
 | 
| +          ],
 | 
| +          'variables': {
 | 
| +            # This library uses native JNI exports; tell GYP so that the
 | 
| +            # required symbols will be kept.
 | 
| +            'use_native_jni_exports': 1,
 | 
| +          },
 | 
| +          'conditions': [
 | 
| +            ['OS=="linux"', {
 | 
| +              'defines': [
 | 
| +                'HAVE_GTK',
 | 
| +              ],
 | 
| +              'include_dirs': [
 | 
| +                '<(java_home)/include',
 | 
| +                '<(java_home)/include/linux',
 | 
| +              ],
 | 
| +              'conditions': [
 | 
| +                ['use_gtk==1', {
 | 
| +                  'link_settings': {
 | 
| +                    'libraries': [
 | 
| +                      '<!@(pkg-config --libs-only-l gobject-2.0 gthread-2.0'
 | 
| +                          ' gtk+-2.0)',
 | 
| +                    ],
 | 
| +                  },
 | 
| +                }],
 | 
| +              ],
 | 
| +            }],
 | 
| +          ],
 | 
| +        },
 | 
| +        {
 | 
| +          'target_name': 'libjingle_peerconnection_jar',
 | 
| +          'type': 'none',
 | 
| +          'actions': [
 | 
| +            {
 | 
| +              # TODO(jiayl): extract peerconnection_java_files and android_java_files into a webrtc
 | 
| +              # gyp var that can be included here, or better yet, build a proper .jar in webrtc
 | 
| +              # and include it here.
 | 
| +              'variables': {
 | 
| +                'java_src_dir': 'java/src',
 | 
| +                'webrtc_base_dir': '<(webrtc_root)/base',
 | 
| +                'webrtc_modules_dir': '<(webrtc_root)/modules',
 | 
| +                'build_jar_log': '<(INTERMEDIATE_DIR)/build_jar.log',
 | 
| +                'peerconnection_java_files': [
 | 
| +                  'java/src/org/webrtc/AudioSource.java',
 | 
| +                  'java/src/org/webrtc/AudioTrack.java',
 | 
| +                  'java/src/org/webrtc/CallSessionFileRotatingLogSink.java',
 | 
| +                  'java/src/org/webrtc/DataChannel.java',
 | 
| +                  'java/src/org/webrtc/IceCandidate.java',
 | 
| +                  'java/src/org/webrtc/MediaConstraints.java',
 | 
| +                  'java/src/org/webrtc/MediaSource.java',
 | 
| +                  'java/src/org/webrtc/MediaStream.java',
 | 
| +                  'java/src/org/webrtc/MediaStreamTrack.java',
 | 
| +                  'java/src/org/webrtc/PeerConnectionFactory.java',
 | 
| +                  'java/src/org/webrtc/PeerConnection.java',
 | 
| +                  'java/src/org/webrtc/RtpReceiver.java',
 | 
| +                  'java/src/org/webrtc/RtpSender.java',
 | 
| +                  'java/src/org/webrtc/SdpObserver.java',
 | 
| +                  'java/src/org/webrtc/StatsObserver.java',
 | 
| +                  'java/src/org/webrtc/StatsReport.java',
 | 
| +                  'java/src/org/webrtc/SessionDescription.java',
 | 
| +                  'java/src/org/webrtc/VideoCapturer.java',
 | 
| +                  'java/src/org/webrtc/VideoRenderer.java',
 | 
| +                  'java/src/org/webrtc/VideoSource.java',
 | 
| +                  'java/src/org/webrtc/VideoTrack.java',
 | 
| +                  '<(webrtc_base_dir)/java/src/org/webrtc/Logging.java',
 | 
| +                ],
 | 
| +                'android_java_files': [
 | 
| +                  'java/android/org/webrtc/Camera2Enumerator.java',
 | 
| +                  'java/android/org/webrtc/CameraEnumerationAndroid.java',
 | 
| +                  'java/android/org/webrtc/CameraEnumerator.java',
 | 
| +                  'java/android/org/webrtc/EglBase.java',
 | 
| +                  'java/android/org/webrtc/EglBase10.java',
 | 
| +                  'java/android/org/webrtc/EglBase14.java',
 | 
| +                  'java/android/org/webrtc/GlRectDrawer.java',
 | 
| +                  'java/android/org/webrtc/GlShader.java',
 | 
| +                  'java/android/org/webrtc/GlUtil.java',
 | 
| +                  'java/android/org/webrtc/GlTextureFrameBuffer.java',
 | 
| +                  'java/android/org/webrtc/NetworkMonitor.java',
 | 
| +                  'java/android/org/webrtc/NetworkMonitorAutoDetect.java',
 | 
| +                  'java/android/org/webrtc/RendererCommon.java',
 | 
| +                  'java/android/org/webrtc/SurfaceTextureHelper.java',
 | 
| +                  'java/android/org/webrtc/SurfaceViewRenderer.java',
 | 
| +                  'java/android/org/webrtc/ThreadUtils.java',
 | 
| +                  'java/android/org/webrtc/VideoCapturerAndroid.java',
 | 
| +                  'java/android/org/webrtc/VideoRendererGui.java',
 | 
| +                  'java/src/org/webrtc/MediaCodecVideoDecoder.java',
 | 
| +                  'java/src/org/webrtc/MediaCodecVideoEncoder.java',
 | 
| +                  '<(webrtc_modules_dir)/video_render/android/java/src/org/webrtc/videoengine/ViEAndroidGLES20.java',
 | 
| +                  '<(webrtc_modules_dir)/video_render/android/java/src/org/webrtc/videoengine/ViERenderer.java',
 | 
| +                  '<(webrtc_modules_dir)/video_render/android/java/src/org/webrtc/videoengine/ViESurfaceRenderer.java',
 | 
| +                  '<(webrtc_modules_dir)/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java',
 | 
| +                  '<(webrtc_modules_dir)/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java',
 | 
| +                  '<(webrtc_modules_dir)/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java',
 | 
| +                  '<(webrtc_modules_dir)/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java',
 | 
| +                  '<(webrtc_modules_dir)/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java',
 | 
| +                  '<(webrtc_modules_dir)/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java',
 | 
| +                ],
 | 
| +              },
 | 
| +              'action_name': 'create_jar',
 | 
| +              'inputs': [
 | 
| +                '../build/build_jar.sh',
 | 
| +                '<@(java_files)',
 | 
| +              ],
 | 
| +              'outputs': [
 | 
| +                '<(PRODUCT_DIR)/libjingle_peerconnection.jar',
 | 
| +              ],
 | 
| +              'conditions': [
 | 
| +                ['OS=="android"', {
 | 
| +                  'variables': {
 | 
| +                    'java_files': ['<@(peerconnection_java_files)', '<@(android_java_files)'],
 | 
| +                    'build_classpath': '<(java_src_dir):<(DEPTH)/third_party/android_tools/sdk/platforms/android-<(android_sdk_version)/android.jar',
 | 
| +                  },
 | 
| +                }, {
 | 
| +                  'variables': {
 | 
| +                    'java_files': ['<@(peerconnection_java_files)'],
 | 
| +                    'build_classpath': '<(java_src_dir)',
 | 
| +                  },
 | 
| +                }],
 | 
| +              ],
 | 
| +              'action': [
 | 
| +                'bash', '-ec',
 | 
| +                'mkdir -p <(INTERMEDIATE_DIR) && '
 | 
| +                '{ ../build/build_jar.sh <(java_home) <@(_outputs) '
 | 
| +                '      <(INTERMEDIATE_DIR)/build_jar.tmp '
 | 
| +                '      <(build_classpath) <@(java_files) '
 | 
| +                '      > <(build_jar_log) 2>&1 || '
 | 
| +                '  { cat <(build_jar_log) ; exit 1; } }'
 | 
| +              ],
 | 
| +            },
 | 
| +          ],
 | 
| +          'dependencies': [
 | 
| +            'libjingle_peerconnection_so',
 | 
| +          ],
 | 
| +        },
 | 
| +      ],
 | 
| +    }],
 | 
| +    ['OS=="android"', {
 | 
| +      'targets': [
 | 
| +        {
 | 
| +          # |libjingle_peerconnection_java| builds a jar file with name
 | 
| +          # libjingle_peerconnection_java.jar using Chromes build system.
 | 
| +          # It includes all Java files needed to setup a PeeerConnection call
 | 
| +          # from Android.
 | 
| +          # TODO(perkj): Consider replacing the use of
 | 
| +          # libjingle_peerconnection_jar with this target everywhere.
 | 
| +          'target_name': 'libjingle_peerconnection_java',
 | 
| +          'type': 'none',
 | 
| +          'dependencies': [
 | 
| +            'libjingle_peerconnection_so',
 | 
| +          ],
 | 
| +          'variables': {
 | 
| +            # Designate as Chromium code and point to our lint settings to
 | 
| +            # enable linting of the WebRTC code (this is the only way to make
 | 
| +            # lint_action invoke the Android linter).
 | 
| +            'android_manifest_path': '<(webrtc_root)/build/android/AndroidManifest.xml',
 | 
| +            'suppressions_file': '<(webrtc_root)/build/android/suppressions.xml',
 | 
| +            'chromium_code': 1,
 | 
| +            'java_in_dir': 'java',
 | 
| +            'webrtc_base_dir': '<(webrtc_root)/base',
 | 
| +            'webrtc_modules_dir': '<(webrtc_root)/modules',
 | 
| +            'additional_src_dirs' : [
 | 
| +              'java/android',
 | 
| +              '<(webrtc_base_dir)/java/src',
 | 
| +              '<(webrtc_modules_dir)/audio_device/android/java/src',
 | 
| +              '<(webrtc_modules_dir)/video_render/android/java/src',
 | 
| +            ],
 | 
| +          },
 | 
| +          'includes': ['../../build/java.gypi'],
 | 
| +        }, # libjingle_peerconnection_java
 | 
| +      ]
 | 
| +    }],
 | 
|      ['OS=="ios"', {
 | 
|        'targets': [
 | 
|          {
 | 
| @@ -16,7 +281,7 @@
 | 
|            'type': 'static_library',
 | 
|            'dependencies': [
 | 
|              '<(webrtc_root)/base/base.gyp:rtc_base_objc',
 | 
| -            '../../talk/libjingle.gyp:libjingle_peerconnection',
 | 
| +            'libjingle_peerconnection',
 | 
|            ],
 | 
|            'sources': [
 | 
|              'objc/RTCAVFoundationVideoSource+Private.h',
 | 
| @@ -82,7 +347,17 @@
 | 
|                      '-framework QuartzCore',
 | 
|                    ]
 | 
|                  }
 | 
| -              }
 | 
| +              },
 | 
| +              # TODO(kjellander): Make the code compile without disabling these.
 | 
| +              # See https://bugs.chromium.org/p/webrtc/issues/detail?id=3307
 | 
| +              'cflags': [
 | 
| +                '-Wno-return-type',
 | 
| +              ],
 | 
| +              'xcode_settings': {
 | 
| +                'WARNING_CFLAGS': [
 | 
| +                  '-Wno-return-type',
 | 
| +                ],
 | 
| +              },
 | 
|              }],
 | 
|              ['OS=="mac"', {
 | 
|                'sources': [
 | 
| @@ -98,6 +373,129 @@
 | 
|            },
 | 
|          }
 | 
|        ],
 | 
| -    }], # OS=="ios"
 | 
| -  ],
 | 
| +    }],  # OS=="ios"
 | 
| +  ],  # conditions
 | 
| +  'targets': [
 | 
| +    {
 | 
| +      'target_name': 'libjingle_peerconnection',
 | 
| +      'type': 'static_library',
 | 
| +      'dependencies': [
 | 
| +        '../../talk/libjingle.gyp:libjingle',
 | 
| +        '../../talk/libjingle.gyp:libjingle_media',
 | 
| +        '../../talk/libjingle.gyp:libjingle_p2p',
 | 
| +      ],
 | 
| +      'sources': [
 | 
| +        'audiotrack.cc',
 | 
| +        'audiotrack.h',
 | 
| +        'datachannel.cc',
 | 
| +        'datachannel.h',
 | 
| +        'datachannelinterface.h',
 | 
| +        'dtlsidentitystore.cc',
 | 
| +        'dtlsidentitystore.h',
 | 
| +        'dtmfsender.cc',
 | 
| +        'dtmfsender.h',
 | 
| +        'dtmfsenderinterface.h',
 | 
| +        'jsep.h',
 | 
| +        'jsepicecandidate.cc',
 | 
| +        'jsepicecandidate.h',
 | 
| +        'jsepsessiondescription.cc',
 | 
| +        'jsepsessiondescription.h',
 | 
| +        'localaudiosource.cc',
 | 
| +        'localaudiosource.h',
 | 
| +        'mediaconstraintsinterface.cc',
 | 
| +        'mediaconstraintsinterface.h',
 | 
| +        'mediacontroller.cc',
 | 
| +        'mediacontroller.h',
 | 
| +        'mediastream.cc',
 | 
| +        'mediastream.h',
 | 
| +        'mediastreaminterface.h',
 | 
| +        'mediastreamobserver.cc',
 | 
| +        'mediastreamobserver.h',
 | 
| +        'mediastreamprovider.h',
 | 
| +        'mediastreamproxy.h',
 | 
| +        'mediastreamtrack.h',
 | 
| +        'mediastreamtrackproxy.h',
 | 
| +        'notifier.h',
 | 
| +        'peerconnection.cc',
 | 
| +        'peerconnection.h',
 | 
| +        'peerconnectionfactory.cc',
 | 
| +        'peerconnectionfactory.h',
 | 
| +        'peerconnectionfactoryproxy.h',
 | 
| +        'peerconnectioninterface.h',
 | 
| +        'peerconnectionproxy.h',
 | 
| +        'proxy.h',
 | 
| +        'remoteaudiosource.cc',
 | 
| +        'remoteaudiosource.h',
 | 
| +        'remotevideocapturer.cc',
 | 
| +        'remotevideocapturer.h',
 | 
| +        'rtpreceiver.cc',
 | 
| +        'rtpreceiver.h',
 | 
| +        'rtpreceiverinterface.h',
 | 
| +        'rtpsender.cc',
 | 
| +        'rtpsender.h',
 | 
| +        'rtpsenderinterface.h',
 | 
| +        'sctputils.cc',
 | 
| +        'sctputils.h',
 | 
| +        'statscollector.cc',
 | 
| +        'statscollector.h',
 | 
| +        'statstypes.cc',
 | 
| +        'statstypes.h',
 | 
| +        'streamcollection.h',
 | 
| +        'videosource.cc',
 | 
| +        'videosource.h',
 | 
| +        'videosourceinterface.h',
 | 
| +        'videosourceproxy.h',
 | 
| +        'videotrack.cc',
 | 
| +        'videotrack.h',
 | 
| +        'videotrackrenderers.cc',
 | 
| +        'videotrackrenderers.h',
 | 
| +        'webrtcsdp.cc',
 | 
| +        'webrtcsdp.h',
 | 
| +        'webrtcsession.cc',
 | 
| +        'webrtcsession.h',
 | 
| +        'webrtcsessiondescriptionfactory.cc',
 | 
| +        'webrtcsessiondescriptionfactory.h',
 | 
| +      ],
 | 
| +      # TODO(kjellander): Make the code compile without disabling these flags.
 | 
| +      # See https://bugs.chromium.org/p/webrtc/issues/detail?id=3307
 | 
| +      'cflags': [
 | 
| +        '-Wno-sign-compare',
 | 
| +      ],
 | 
| +      'cflags_cc!': [
 | 
| +        '-Wnon-virtual-dtor',
 | 
| +        '-Woverloaded-virtual',
 | 
| +      ],
 | 
| +      'conditions': [
 | 
| +        ['clang==1', {
 | 
| +          'cflags!': [
 | 
| +            '-Wextra',
 | 
| +          ],
 | 
| +          'xcode_settings': {
 | 
| +            'WARNING_CFLAGS!': ['-Wextra'],
 | 
| +          },
 | 
| +        }, {
 | 
| +          'cflags': [
 | 
| +            '-Wno-maybe-uninitialized',  # Only exists for GCC.
 | 
| +          ],
 | 
| +        }],
 | 
| +        ['OS=="win"', {
 | 
| +          # Disable warning for signed/unsigned mismatch.
 | 
| +          'msvs_settings': {
 | 
| +            'VCCLCompilerTool': {
 | 
| +              'AdditionalOptions!': ['/we4389'],
 | 
| +            },
 | 
| +          },
 | 
| +        }],
 | 
| +        ['OS=="win" and clang==1', {
 | 
| +          'msvs_settings': {
 | 
| +            'VCCLCompilerTool': {
 | 
| +              'AdditionalOptions': [
 | 
| +                '-Wno-sign-compare',
 | 
| +              ],
 | 
| +            },
 | 
| +          },
 | 
| +        }],
 | 
| +      ],
 | 
| +    },  # target libjingle_peerconnection
 | 
| +  ],  # targets
 | 
|  }
 | 
| 
 |