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:
		| @@ -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); | ||||
|   | ||||
| @@ -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': [ | ||||
|   | ||||
| @@ -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', | ||||
|       ], | ||||
|   | ||||
| @@ -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"', { | ||||
|   | ||||
| @@ -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': { | ||||
|   | ||||
| @@ -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, | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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', | ||||
|           ], | ||||
|         }], | ||||
|       ], | ||||
|     }, | ||||
|     { | ||||
|   | ||||
| @@ -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', | ||||
|   | ||||
| @@ -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', | ||||
|   | ||||
| @@ -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 = [ | ||||
|   | ||||
| @@ -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': [ | ||||
|   | ||||
| @@ -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. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Henrik Kjellander
					Henrik Kjellander