GYP variables for building expat, icu, libsrtp, usrsctp

This makes the build more flexible when linking against
prebuilt external libraries.

Use existing build_* variables for libyuv and json in talk/
(already in use in webrtc/).

Also make it possible to avoid building the GTK parts of the Linux build.

BUG=4242
R=andrew@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/44179005

Cr-Commit-Position: refs/heads/master@{#9087}
This commit is contained in:
Henrik Kjellander 2015-04-27 14:39:04 +02:00
parent 61be2a4016
commit e6cefb60f8
13 changed files with 162 additions and 60 deletions

View File

@ -103,7 +103,7 @@ jint InitGlobalJniVariables(JavaVM *jvm) {
// Return thread ID as a string.
static std::string GetThreadId() {
char buf[21]; // Big enough to hold a kuint64max plus terminating NULL.
CHECK_LT(snprintf(buf, sizeof(buf), "%llu", syscall(__NR_gettid)),
CHECK_LT(snprintf(buf, sizeof(buf), "%ld", syscall(__NR_gettid)),
sizeof(buf))
<< "Thread id is bigger than uint64??";
return std::string(buf);

View File

@ -40,6 +40,18 @@
'java_home%': '<!(python -c "import os; dir=os.getenv(\'JAVA_HOME\', \'/usr/lib/jvm/java-7-openjdk-amd64\'); assert os.path.exists(os.path.join(dir, \'include/jni.h\')), \'Point \\$JAVA_HOME or the java_home gyp variable to a directory containing include/jni.h!\'; print dir")',
}],
],
# Disable these to not build components which can be externally provided.
'build_expat%': 1,
'build_icu%': 1,
'build_json%': 1,
'build_libsrtp%': 1,
'build_libyuv%': 1,
'build_usrsctp%': 1,
# Make it possible to provide custom locations for some libraries.
'libyuv_dir%': '<(DEPTH)/third_party/libyuv',
# Disable this to skip building source requiring GTK.
'use_gtk%': 1,
},
'target_defaults': {
'include_dirs': [

View File

@ -47,7 +47,6 @@
'type': 'shared_library',
'dependencies': [
'libjingle_peerconnection',
'<(DEPTH)/third_party/icu/icu.gyp:icuuc',
],
'sources': [
'app/webrtc/java/jni/classreferenceholder.cc',
@ -58,9 +57,14 @@
'app/webrtc/java/jni/peerconnection_jni.cc',
],
'include_dirs': [
'<(DEPTH)/third_party/libyuv/include',
'<(libyuv_dir)/include',
],
'conditions': [
['build_icu==1', {
'dependencies': [
'<(DEPTH)/third_party/icu/icu.gyp:icuuc',
],
}],
['OS=="linux"', {
'defines': [
'HAVE_GTK',
@ -69,12 +73,16 @@
'<(java_home)/include',
'<(java_home)/include/linux',
],
'link_settings': {
'libraries': [
'<!@(pkg-config --libs-only-l gobject-2.0 gthread-2.0'
' gtk+-2.0)',
],
},
'conditions': [
['use_gtk==1', {
'link_settings': {
'libraries': [
'<!@(pkg-config --libs-only-l gobject-2.0 gthread-2.0'
' gtk+-2.0)',
],
},
}],
],
}],
['OS=="android"', {
'sources': [
@ -358,26 +366,31 @@
'target_name': 'libjingle',
'type': 'none',
'dependencies': [
'<(DEPTH)/third_party/expat/expat.gyp:expat',
'<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
'<(webrtc_root)/base/base.gyp:rtc_base',
],
'export_dependent_settings': [
'<(DEPTH)/third_party/expat/expat.gyp:expat',
'<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
'conditions': [
['build_json==1', {
'dependencies': [
'<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
],
'export_dependent_settings': [
'<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
],
}],
['build_expat==1', {
'dependencies': [
'<(DEPTH)/third_party/expat/expat.gyp:expat',
],
'export_dependent_settings': [
'<(DEPTH)/third_party/expat/expat.gyp:expat',
],
}],
],
}, # target libjingle
{
'target_name': 'libjingle_media',
'type': 'static_library',
'include_dirs': [
# TODO(jiayl): move this into the direct_dependent_settings of
# usrsctp.gyp.
'<(DEPTH)/third_party/usrsctp',
],
'dependencies': [
'<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',
'<(DEPTH)/third_party/usrsctp/usrsctp.gyp:usrsctplib',
'<(webrtc_root)/common.gyp:webrtc_common',
'<(webrtc_root)/modules/modules.gyp:video_render_module',
'<(webrtc_root)/webrtc.gyp:webrtc',
@ -392,7 +405,7 @@
],
'direct_dependent_settings': {
'include_dirs': [
'<(DEPTH)/third_party/libyuv/include',
'<(libyuv_dir)/include',
],
},
'sources': [
@ -484,6 +497,19 @@
'media/webrtc/webrtcvoiceengine.h',
],
'conditions': [
['build_libyuv==1', {
'dependencies': ['<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',],
}],
['build_usrsctp==1', {
'include_dirs': [
# TODO(jiayl): move this into the direct_dependent_settings of
# usrsctp.gyp.
'<(DEPTH)/third_party/usrsctp',
],
'dependencies': [
'<(DEPTH)/third_party/usrsctp/usrsctp.gyp:usrsctplib',
],
}],
['build_with_chromium==1', {
'dependencies': [
'<(webrtc_root)/modules/modules.gyp:video_capture',
@ -497,8 +523,6 @@
}],
['OS=="linux"', {
'sources': [
'media/devices/gtkvideorenderer.cc',
'media/devices/gtkvideorenderer.h',
'media/devices/libudevsymboltable.cc',
'media/devices/libudevsymboltable.h',
'media/devices/linuxdeviceinfo.cc',
@ -507,12 +531,20 @@
'media/devices/v4llookup.cc',
'media/devices/v4llookup.h',
],
'conditions': [
['use_gtk==1', {
'sources': [
'media/devices/gtkvideorenderer.cc',
'media/devices/gtkvideorenderer.h',
],
'cflags': [
'<!@(pkg-config --cflags gobject-2.0 gthread-2.0 gtk+-2.0)',
],
}],
],
'include_dirs': [
'third_party/libudev'
],
'cflags': [
'<!@(pkg-config --cflags gobject-2.0 gthread-2.0 gtk+-2.0)',
],
'libraries': [
'-lrt',
'-lXext',
@ -601,10 +633,16 @@
'target_name': 'libjingle_p2p',
'type': 'static_library',
'dependencies': [
'<(DEPTH)/third_party/libsrtp/libsrtp.gyp:libsrtp',
'libjingle',
'libjingle_media',
],
'conditions': [
['build_libsrtp==1', {
'dependencies': [
'<(DEPTH)/third_party/libsrtp/libsrtp.gyp:libsrtp',
],
}],
],
'include_dirs': [
'<(DEPTH)/testing/gtest/include',
],

View File

@ -97,11 +97,15 @@
'examples/peerconnection/client/peer_connection_client.h',
],
'dependencies': [
'<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
'libjingle.gyp:libjingle_peerconnection',
'<@(libjingle_tests_additional_deps)',
],
'conditions': [
['build_json==1', {
'dependencies': [
'<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
],
}],
# TODO(ronghuawu): Move these files to a win/ directory then they
# can be excluded automatically.
['OS=="win"', {

View File

@ -31,17 +31,21 @@
'target_name': 'libjingle_unittest_main',
'type': 'static_library',
'dependencies': [
'<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',
'<(webrtc_root)/base/base_tests.gyp:rtc_base_tests_utils',
'<@(libjingle_tests_additional_deps)',
],
'direct_dependent_settings': {
'include_dirs': [
'<(DEPTH)/third_party/libyuv/include',
'<(libyuv_dir)/include',
'<(DEPTH)/testing/gtest/include',
'<(DEPTH)/testing/gtest',
],
},
'conditions': [
['build_libyuv==1', {
'dependencies': ['<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',],
}],
],
'include_dirs': [
'<(DEPTH)/testing/gtest/include',
'<(DEPTH)/testing/gtest',
@ -140,7 +144,6 @@
'target_name': 'libjingle_p2p_unittest',
'type': 'executable',
'dependencies': [
'<(DEPTH)/third_party/libsrtp/libsrtp.gyp:libsrtp',
'<(webrtc_root)/base/base_tests.gyp:rtc_base_tests_utils',
'libjingle.gyp:libjingle',
'libjingle.gyp:libjingle_p2p',
@ -160,6 +163,11 @@
'session/media/srtpfilter_unittest.cc',
],
'conditions': [
['build_libsrtp==1', {
'dependencies': [
'<(DEPTH)/third_party/libsrtp/libsrtp.gyp:libsrtp',
],
}],
['OS=="win"', {
'msvs_settings': {
'VCLinkerTool': {

View File

@ -84,14 +84,16 @@
'enable_protobuf%': 1,
# Disable these to not build components which can be externally provided.
'build_expat%': 1,
'build_icu%': 1,
'build_json%': 1,
'build_libjpeg%': 1,
'build_libyuv%': 1,
'build_libvpx%': 1,
'build_vp9%': 1,
'build_ssl%': 1,
'build_libyuv%': 1,
'build_openmax_dl%': 1,
'build_opus%': 1,
'build_ssl%': 1,
'build_vp9%': 1,
# Disable by default
'have_dbus_glib%': 0,

View File

@ -37,14 +37,16 @@ declare_args() {
rtc_enable_protobuf = true
# Disable these to not build components which can be externally provided.
rtc_build_expat = true
rtc_build_icu = true
rtc_build_json = true
rtc_build_libjpeg = true
rtc_build_libyuv = true
rtc_build_libvpx = true
rtc_build_vp9 = true
rtc_build_ssl = true
rtc_build_opus = true
rtc_build_libyuv = true
rtc_build_openmax_dl = true
rtc_build_opus = true
rtc_build_ssl = true
rtc_build_vp9 = true
# Disable by default.
rtc_have_dbus_glib = false

View File

@ -16,10 +16,16 @@
'target_name': 'libjingle_xmpphelp',
'type': 'static_library',
'dependencies': [
'<(DEPTH)/third_party/expat/expat.gyp:expat',
'<(talk_root)/libjingle.gyp:libjingle',
'<(talk_root)/libjingle.gyp:libjingle_p2p',
],
'conditions': [
['build_expat==1', {
'dependencies': [
'<(DEPTH)/third_party/expat/expat.gyp:expat',
],
}],
],
'sources': [
'xmpp/jingleinfotask.cc',
'xmpp/jingleinfotask.h',
@ -33,14 +39,10 @@
'<(webrtc_root)/base/base.gyp:rtc_base',
'<(webrtc_root)/common.gyp:webrtc_common',
'<(webrtc_root)/libjingle/xmpp/xmpp.gyp:rtc_xmpp',
'<(DEPTH)/third_party/expat/expat.gyp:expat',
],
'cflags_cc!': [
'-Wnon-virtual-dtor',
],
'export_dependent_settings': [
'<(DEPTH)/third_party/expat/expat.gyp:expat',
],
'sources': [
'session/constants.cc',
'session/constants.h',
@ -87,6 +89,14 @@
'FEATURE_ENABLE_PSTN',
],
}],
['build_expat==1', {
'dependencies': [
'<(DEPTH)/third_party/expat/expat.gyp:expat',
],
'export_dependent_settings': [
'<(DEPTH)/third_party/expat/expat.gyp:expat',
],
}],
],
},
{

View File

@ -14,10 +14,16 @@
'type': 'static_library',
'dependencies': [
'<(webrtc_root)/base/base.gyp:rtc_base',
'<(DEPTH)/third_party/expat/expat.gyp:expat',
],
'export_dependent_settings': [
'<(DEPTH)/third_party/expat/expat.gyp:expat',
'conditions': [
['build_expat==1', {
'dependencies': [
'<(DEPTH)/third_party/expat/expat.gyp:expat',
],
'export_dependent_settings': [
'<(DEPTH)/third_party/expat/expat.gyp:expat',
],
}],
],
'sources': [
'qname.cc',

View File

@ -15,7 +15,6 @@
'dependencies': [
'<(webrtc_root)/base/base.gyp:rtc_base',
'<(webrtc_root)/libjingle/xmllite/xmllite.gyp:rtc_xmllite',
'<(DEPTH)/third_party/expat/expat.gyp:expat',
],
'defines': [
'FEATURE_ENABLE_SSL',
@ -23,9 +22,6 @@
'cflags_cc!': [
'-Wnon-virtual-dtor',
],
'export_dependent_settings': [
'<(DEPTH)/third_party/expat/expat.gyp:expat',
],
'sources': [
'asyncsocket.h',
'chatroommodule.h',
@ -111,6 +107,14 @@
],
},
'conditions': [
['build_expat==1', {
'dependencies': [
'<(DEPTH)/third_party/expat/expat.gyp:expat',
],
'export_dependent_settings': [
'<(DEPTH)/third_party/expat/expat.gyp:expat',
],
}],
['build_with_chromium==0', {
'defines': [
'FEATURE_ENABLE_VOICEMAIL',

View File

@ -138,10 +138,12 @@ if (!build_with_chromium) {
"android/video_capture_android.h",
]
deps += [
"//third_party/icu:icuuc",
"//third_party/jsoncpp",
]
if (rtc_build_json) {
deps += [ "//third_party/jsoncpp" ]
}
if (rtc_build_icu) {
deps += [ "//third_party/icu:icuuc" ]
}
}
if (is_ios) {
sources = [

View File

@ -116,16 +116,24 @@
},
}], # win
['OS=="android"', {
'dependencies': [
'<(DEPTH)/third_party/icu/icu.gyp:icuuc',
'<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
],
'sources': [
'android/device_info_android.cc',
'android/device_info_android.h',
'android/video_capture_android.cc',
'android/video_capture_android.h',
],
'conditions': [
['build_json==1', {
'dependencies': [
'<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
],
}],
['build_icu==1', {
'dependencies': [
'<(DEPTH)/third_party/icu/icu.gyp:icuuc',
],
}],
],
}], # android
['OS=="ios"', {
'sources': [

View File

@ -15,7 +15,6 @@
'target_name': 'libwebrtcdemo-jni',
'type': 'loadable_module',
'dependencies': [
'<(DEPTH)/third_party/icu/icu.gyp:icuuc',
'<(webrtc_root)/common.gyp:webrtc_common',
'<(webrtc_root)/modules/modules.gyp:video_render_module_internal_impl',
'<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default',
@ -27,6 +26,13 @@
'examples/android/media_demo/jni/on_load.cc',
'examples/android/media_demo/jni/voice_engine_jni.cc',
],
'conditions': [
['build_icu==1', {
'dependencies': [
'<(DEPTH)/third_party/icu/icu.gyp:icuuc',
],
}],
],
'variables': {
# This library uses native JNI exports; tell GYP so that the
# required symbols will be kept.