-Dgst-plugins-base:pango=enabled
-Dgst-plugins-good:cairo=enabled
-Dgst-plugins-good:soup=enabled
- -Dgst-plugins-good:soup-lookup-dep=true
-Dgst-plugins-bad:d3d11-wgc=enabled
rules:
- !reference [.upstream-branch-rules, rules]
MESON_CROSS_ARGS: >-
-Dgst-plugins-base:pango=disabled
-Dgst-plugins-good:cairo=disabled
- -Dgst-plugins-good:soup-lookup-dep=false
-Dgst-devtools:cairo=disabled
-Dpython=disabled
-Dintrospection=disabled
-Dgst-plugins-base:pango=enabled
-Dgst-plugins-good:cairo=enabled
-Dgst-plugins-good:soup=enabled
- -Dgst-plugins-good:soup-lookup-dep=true
# ---- Tests ----- #
"adaptivedemux2");
g_once_init_leave (&res, TRUE);
}
-#ifndef STATIC_SOUP
+#ifndef LINK_SOUP
if (!gst_soup_load_library ()) {
GST_WARNING ("Failed to load libsoup library");
return FALSE;
adaptivedemux2_dep = dependency('', required : false)
adaptivedemux2_opt = get_option('adaptivedemux2')
+soup_ver_opt = get_option('soup-version')
if adaptivedemux2_opt.disabled()
message('Not building adaptivedemux2 plugin because it was disabled')
subdir_done()
plugin_sources += smoothstreaming_sources
plugin_sources += hls_sources
+libdl = cc.find_library('dl', required: false)
soup_loader_args = ['-DBUILDING_ADAPTIVEDEMUX2']
+soup_link_args = []
+soup_link_deps = []
default_library = get_option('default_library')
-if default_library in ['static', 'both']
- libsoup2_dep = dependency('libsoup-2.4', version : '>=2.48',
- required : false, fallback : ['libsoup', 'libsoup_dep'],
- default_options: ['sysprof=disabled'])
- libsoup3_dep = dependency('libsoup-3.0', required : false,
- fallback : ['libsoup3', 'libsoup_dep'])
+if host_system != 'linux' or default_library in ['static', 'both']
+ if soup_ver_opt in ['auto', '3']
+ libsoup3_dep = dependency('libsoup-3.0', allow_fallback: true,
+ required: soup_ver_opt == '3' and soup_opt.enabled())
+ endif
+ if soup_ver_opt in ['auto', '2']
+ libsoup2_dep = dependency('libsoup-2.4', version : '>=2.48', allow_fallback: true,
+ default_options: ['sysprof=disabled'],
+ required: soup_ver_opt == '2' and soup_opt.enabled())
+ endif
if libsoup3_dep.found()
- soup_dep = libsoup3_dep
- static_soup_loader_args = ['-DSTATIC_SOUP=3']
+ soup_link_deps += [libsoup3_dep]
+ soup_link_args = ['-DLINK_SOUP=3']
elif libsoup2_dep.found()
- soup_dep = libsoup2_dep
- static_soup_loader_args = ['-DSTATIC_SOUP=2']
+ soup_link_deps += [libsoup2_dep]
+ soup_link_args = ['-DLINK_SOUP=2']
else
if adaptivedemux2_opt.enabled()
- error(f'adaptivedemux2: Either libsoup2 or libsoup3 is needed for build with default_library=@default_library@')
+ error(f'adaptivedemux2: Either libsoup2 or libsoup3 is needed')
endif
-
- message(f'Not building adaptivedemux2 plugin: either libsoup2 or libsoup3 is needed for build with default_library=@default_library@')
+ message(f'Not building adaptivedemux2 plugin: either libsoup2 or libsoup3 is needed')
subdir_done()
endif
-
- # Static plugin links to libsoup directly at build time
- adaptivedemux2_static = static_library('gstadaptivedemux2',
- plugin_sources,
- include_directories: [configinc, libsinc],
- c_args: [gst_plugins_good_args, soup_loader_args, soup_loader_args, hls_cargs,
- '-DGST_ISOFF_API=G_GNUC_INTERNAL'],
- dependencies: [gst_dep, gsttag_dep, gstnet_dep, gstbase_dep,
- gstpbutils_dep, gstapp_dep, soup_dep,
- gio_dep, adaptive_xml2_dep,
- hls_crypto_dep, libm],
- install: true,
- install_dir: plugins_install_dir)
endif
-if default_library in ['shared', 'both']
- # Shared plugin doesn't link to libsoup but dlopen()s it at runtime
- libdl = cc.find_library('dl', required: false)
-
- adaptivedemux2_shared = shared_library('gstadaptivedemux2',
- plugin_sources,
- include_directories: [configinc, libsinc],
- c_args: [gst_plugins_good_args, soup_loader_args, hls_cargs,
- '-DGST_ISOFF_API=G_GNUC_INTERNAL'],
- dependencies: [gsttag_dep, gstnet_dep, gstbase_dep,
- gstpbutils_dep, gstapp_dep, gio_dep,
- gmodule_dep, adaptive_xml2_dep,
- hls_crypto_dep, libm, libdl],
- install: true,
- install_dir: plugins_install_dir)
+# Shared plugin doesn't link to libsoup but dlopen()s it at runtime
+adaptive_kwargs = {
+ 'sources': plugin_sources,
+ 'include_directories': [configinc, libsinc],
+ 'install': true,
+ 'install_dir': plugins_install_dir,
+}
+adaptive_deps = [gmodule_dep, gst_dep, gsttag_dep, gstnet_dep, gstbase_dep, gstpbutils_dep,
+ gstapp_dep, gio_dep, adaptive_xml2_dep, hls_crypto_dep, libdl, libm]
+adaptive_args = [gst_plugins_good_args, soup_loader_args, hls_cargs,
+ '-DGST_ISOFF_API=G_GNUC_INTERNAL']
+
+if host_system != 'linux'
+ adaptivedemux2 = library('gstadaptivedemux2',
+ c_args: [adaptive_args, soup_link_args],
+ dependencies: [adaptive_deps, soup_link_deps],
+ kwargs: adaptive_kwargs)
+ adaptivedemux2_static = adaptivedemux2
+ adaptivedemux2_shared = adaptivedemux2
+else
+ if default_library in ['static', 'both']
+ # Static plugin links to libsoup directly at build time
+ adaptivedemux2_static = static_library('gstadaptivedemux2',
+ c_args: [adaptive_args, soup_link_args],
+ dependencies: [adaptive_deps, soup_link_deps],
+ kwargs: adaptive_kwargs)
+ endif
+ if default_library in ['shared', 'both']
+ adaptivedemux2_shared = shared_library('gstadaptivedemux2',
+ c_args: adaptive_args,
+ dependencies: adaptive_deps,
+ kwargs: adaptive_kwargs)
+ endif
endif
# Use the static library to generate the .pc file if it's available. The shared
g_once_init_leave (&res, TRUE);
}
-#ifndef STATIC_SOUP
+#ifndef LINK_SOUP
if (!gst_soup_load_library ()) {
GST_WARNING ("Failed to load libsoup library");
return FALSE;
NULL);
g_object_unref (proxy_resolver);
}
-#if !defined(STATIC_SOUP) || STATIC_SOUP == 2
+#if !defined(LINK_SOUP) || LINK_SOUP == 2
} else {
g_object_set (session->session, "ssl-strict", src->ssl_strict, NULL);
if (src->proxy != NULL) {
- /* Need #if because there's no proxy->soup_uri when STATIC_SOUP == 3 */
+ /* Need #if because there's no proxy->soup_uri when LINK_SOUP == 3 */
g_object_set (session->session, "proxy-uri", src->proxy->soup_uri, NULL);
}
#endif
}
/* SOUP_STATUS_IS_TRANSPORT_ERROR was replaced with GError in libsoup-3.0 */
-#if !defined(STATIC_SOUP) || STATIC_SOUP == 2
+#if !defined(LINK_SOUP) || LINK_SOUP == 2
if (SOUP_STATUS_IS_TRANSPORT_ERROR (status_code)) {
switch (status_code) {
case SOUP_STATUS_CANT_RESOLVE:
/* SOUP_MESSAGE_OVERWRITE_CHUNKS is gone in libsoup-3.0, and
* soup_message_body_set_accumulate() requires SoupMessageBody, which
* can only be fetched from SoupServerMessage, not SoupMessage */
-#if !defined(STATIC_SOUP) || STATIC_SOUP == 2
+#if !defined(LINK_SOUP) || LINK_SOUP == 2
if (gst_soup_loader_get_api_version () == 2)
flags |= SOUP_MESSAGE_OVERWRITE_CHUNKS;
#endif
#include <dlfcn.h>
#endif
-#ifdef G_OS_WIN32
-#include <windows.h>
-#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
-#define GST_WINAPI_ONLY_APP
-#endif
-#endif /* G_OS_WIN32 */
-
#ifdef BUILDING_ADAPTIVEDEMUX2
GST_DEBUG_CATEGORY (gst_adaptivedemux_soup_debug);
#define GST_CAT_DEFAULT gst_adaptivedemux_soup_debug
#endif
-#ifndef STATIC_SOUP
+#ifndef LINK_SOUP
-/* G_OS_WIN32 is handled separately below */
-#ifdef __APPLE__
-#define LIBSOUP_3_SONAME "libsoup-3.0.0.dylib"
-#define LIBSOUP_2_SONAME "libsoup-2.4.1.dylib"
-#else
-#define LIBSOUP_3_SONAME "libsoup-3.0.so.0"
-#define LIBSOUP_2_SONAME "libsoup-2.4.so.1"
+#if defined(__APPLE__) || defined(G_OS_WIN32)
+#error "dlopen of libsoup is only supported on Linux"
#endif
+#define LIBSOUP_3_SONAME "libsoup-3.0.so.0"
+#define LIBSOUP_2_SONAME "libsoup-2.4.so.1"
#define LOAD_SYMBOL(name) G_STMT_START { \
if (!g_module_symbol (module, G_STRINGIFY (name), (gpointer *) &G_PASTE (vtable->_, name))) { \
g_clear_pointer (&handle, dlclose);
}
-#else /* !HAVE_RTLD_NOLOAD */
-
-#ifdef G_OS_WIN32
-
-#define LIBSOUP2_MSVC_DLL "soup-2.4-1.dll"
-#define LIBSOUP3_MSVC_DLL "soup-3.0-0.dll"
-#define LIBSOUP2_MINGW_DLL "libsoup-2.4-1.dll"
-#define LIBSOUP3_MINGW_DLL "libsoup-3.0-0.dll"
-
- {
-#ifdef _MSC_VER
- const char *candidates[5] = { LIBSOUP3_MSVC_DLL, LIBSOUP2_MSVC_DLL,
- LIBSOUP3_MINGW_DLL, LIBSOUP2_MINGW_DLL, 0
- };
-#else
- const char *candidates[5] = { LIBSOUP3_MINGW_DLL, LIBSOUP2_MINGW_DLL,
- LIBSOUP3_MSVC_DLL, LIBSOUP2_MSVC_DLL, 0
- };
-#endif /* _MSC_VER */
-
- guint len = g_strv_length ((gchar **) candidates);
-#if !GST_WINAPI_ONLY_APP
- for (guint i = 0; i < len; i++) {
- HMODULE phModule;
- BOOL loaded =
- GetModuleHandleExA (GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
- candidates[i], &phModule);
- if (loaded) {
- GST_DEBUG ("%s is resident. Using it.", candidates[i]);
- libsoup_sonames[0] = candidates[i];
- break;
- }
- }
-#endif
- if (libsoup_sonames[0] == NULL) {
- GST_DEBUG ("No resident libsoup, trying them all");
- for (guint i = 0; i < len; i++) {
- libsoup_sonames[i] = candidates[i];
- }
- }
- }
-#else /* !G_OS_WIN32 */
+#else
libsoup_sonames[0] = LIBSOUP_3_SONAME;
libsoup_sonames[1] = LIBSOUP_2_SONAME;
-#endif /* G_OS_WIN32 */
-
#endif /* HAVE_RTLD_NOLOAD */
vtable = &gst_soup_vtable;
return vtable->loaded;
}
-#endif /* !STATIC_SOUP */
+#endif /* !LINK_SOUP */
guint
gst_soup_loader_get_api_version (void)
{
-#ifdef STATIC_SOUP
- return STATIC_SOUP;
+#ifdef LINK_SOUP
+ return LINK_SOUP;
#else
return gst_soup_vtable.lib_version;
#endif
SoupLogger *
_soup_logger_new (SoupLoggerLogLevel level)
{
-#ifdef STATIC_SOUP
-#if STATIC_SOUP == 2
+#ifdef LINK_SOUP
+#if LINK_SOUP == 2
return soup_logger_new (level, -1);
-#elif STATIC_SOUP == 3
+#elif LINK_SOUP == 3
return soup_logger_new (level);
#endif
#else
_soup_logger_set_printer (SoupLogger * logger, SoupLoggerPrinter printer,
gpointer printer_data, GDestroyNotify destroy)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
soup_logger_set_printer (logger, printer, printer_data, destroy);
#else
g_assert (gst_soup_vtable._soup_logger_set_printer != NULL);
void
_soup_session_add_feature (SoupSession * session, SoupSessionFeature * feature)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
soup_session_add_feature (session, feature);
#else
g_assert (gst_soup_vtable._soup_session_add_feature != NULL);
gst_soup_uri_new (const char *uri_string)
{
GstSoupUri *uri = g_new0 (GstSoupUri, 1);
-#ifdef STATIC_SOUP
-#if STATIC_SOUP == 2
+#ifdef LINK_SOUP
+#if LINK_SOUP == 2
uri->soup_uri = soup_uri_new (uri_string);
#else
uri->uri = g_uri_parse (uri_string, SOUP_HTTP_URI_FLAGS, NULL);
void
gst_soup_uri_free (GstSoupUri * uri)
{
-#if (defined(STATIC_SOUP) && STATIC_SOUP == 3) || (!defined(STATIC_SOUP) && GLIB_CHECK_VERSION(2, 66, 0))
+#if (defined(LINK_SOUP) && LINK_SOUP == 3) || (!defined(LINK_SOUP) && GLIB_CHECK_VERSION(2, 66, 0))
if (uri->uri) {
g_uri_unref (uri->uri);
}
#endif
-#if defined(STATIC_SOUP)
-#if STATIC_SOUP == 2
+#if defined(LINK_SOUP)
+#if LINK_SOUP == 2
if (uri->soup_uri) {
soup_uri_free (uri->soup_uri);
}
#endif
-#else /* !STATIC_SOUP */
+#else /* !LINK_SOUP */
if (uri->soup_uri) {
g_assert (gst_soup_vtable._soup_uri_free_2 != NULL);
gst_soup_vtable._soup_uri_free_2 (uri->soup_uri);
}
-#endif /* STATIC_SOUP */
+#endif /* LINK_SOUP */
g_free (uri);
}
char *
gst_soup_uri_to_string (GstSoupUri * uri)
{
-#if (defined(STATIC_SOUP) && STATIC_SOUP == 3) || (!defined(STATIC_SOUP) && GLIB_CHECK_VERSION(2, 66, 0))
+#if (defined(LINK_SOUP) && LINK_SOUP == 3) || (!defined(LINK_SOUP) && GLIB_CHECK_VERSION(2, 66, 0))
if (uri->uri) {
return g_uri_to_string_partial (uri->uri, G_URI_HIDE_PASSWORD);
}
#endif
-#if defined(STATIC_SOUP)
-#if STATIC_SOUP == 2
+#if defined(LINK_SOUP)
+#if LINK_SOUP == 2
if (uri->soup_uri) {
return soup_uri_to_string (uri->soup_uri, FALSE);
}
#endif
-#else /* !STATIC_SOUP */
+#else /* !LINK_SOUP */
if (uri->soup_uri) {
g_assert (gst_soup_vtable._soup_uri_to_string_2 != NULL);
return gst_soup_vtable._soup_uri_to_string_2 (uri->soup_uri, FALSE);
}
-#endif /* STATIC_SOUP */
+#endif /* LINK_SOUP */
g_assert_not_reached ();
return NULL;
char *
gst_soup_message_uri_to_string (SoupMessage * msg)
{
-#ifdef STATIC_SOUP
-#if STATIC_SOUP == 2
+#ifdef LINK_SOUP
+#if LINK_SOUP == 2
SoupURI *uri = NULL;
uri = soup_message_get_uri (msg);
return soup_uri_to_string (uri, FALSE);
-#elif STATIC_SOUP == 3
+#elif LINK_SOUP == 3
GUri *uri = NULL;
uri = soup_message_get_uri (msg);
return g_uri_to_string_partial (uri, G_URI_HIDE_PASSWORD);
guint
_soup_get_major_version (void)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_get_major_version ();
#else
g_assert (gst_soup_vtable._soup_get_major_version != NULL);
guint
_soup_get_minor_version (void)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_get_minor_version ();
#else
g_assert (gst_soup_vtable._soup_get_minor_version != NULL);
guint
_soup_get_micro_version (void)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_get_micro_version ();
#else
g_assert (gst_soup_vtable._soup_get_micro_version != NULL);
_soup_message_set_request_body_from_bytes (SoupMessage * msg,
const char *content_type, GBytes * bytes)
{
-#ifdef STATIC_SOUP
-#if STATIC_SOUP == 2
+#ifdef LINK_SOUP
+#if LINK_SOUP == 2
gsize size;
gconstpointer data = g_bytes_get_data (bytes, &size);
soup_message_body_append (msg->request_body, SOUP_MEMORY_COPY, data, size);
-#elif STATIC_SOUP == 3
+#elif LINK_SOUP == 3
soup_message_set_request_body_from_bytes (msg, content_type, bytes);
#endif
#else
GType
_soup_session_get_type (void)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_session_get_type ();
#else
g_assert (gst_soup_vtable._soup_session_get_type != NULL);
GType
_soup_logger_log_level_get_type (void)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_logger_log_level_get_type ();
#else
g_assert (gst_soup_vtable._soup_logger_log_level_get_type != NULL);
GType
_soup_content_decoder_get_type (void)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_content_decoder_get_type ();
#else
g_assert (gst_soup_vtable._soup_content_decoder_get_type != NULL);
GType
_soup_cookie_jar_get_type (void)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_cookie_jar_get_type ();
#else
g_assert (gst_soup_vtable._soup_cookie_jar_get_type != NULL);
void
_soup_session_abort (SoupSession * session)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
soup_session_abort (session);
#else
g_assert (gst_soup_vtable._soup_session_abort != NULL);
SoupMessage *
_soup_message_new (const char *method, const char *uri_string)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_message_new (method, uri_string);
#else
g_assert (gst_soup_vtable._soup_message_new != NULL);
SoupMessageHeaders *
_soup_message_get_request_headers (SoupMessage * msg)
{
-#ifdef STATIC_SOUP
-#if STATIC_SOUP == 2
+#ifdef LINK_SOUP
+#if LINK_SOUP == 2
return msg->request_headers;
-#elif STATIC_SOUP == 3
+#elif LINK_SOUP == 3
return soup_message_get_request_headers (msg);
#endif
#else
SoupMessageHeaders *
_soup_message_get_response_headers (SoupMessage * msg)
{
-#ifdef STATIC_SOUP
-#if STATIC_SOUP == 2
+#ifdef LINK_SOUP
+#if LINK_SOUP == 2
return msg->response_headers;
-#elif STATIC_SOUP == 3
+#elif LINK_SOUP == 3
return soup_message_get_response_headers (msg);
#endif
#else
void
_soup_message_headers_remove (SoupMessageHeaders * hdrs, const char *name)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
soup_message_headers_remove (hdrs, name);
#else
g_assert (gst_soup_vtable._soup_message_headers_remove != NULL);
_soup_message_headers_append (SoupMessageHeaders * hdrs, const char *name,
const char *value)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
soup_message_headers_append (hdrs, name, value);
#else
g_assert (gst_soup_vtable._soup_message_headers_append != NULL);
void
_soup_message_set_flags (SoupMessage * msg, SoupMessageFlags flags)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
soup_message_set_flags (msg, flags);
#else
g_assert (gst_soup_vtable._soup_message_set_flags != NULL);
void
_soup_session_add_feature_by_type (SoupSession * session, GType feature_type)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
soup_session_add_feature_by_type (session, feature_type);
#else
g_assert (gst_soup_vtable._soup_session_add_feature_by_type != NULL);
_soup_message_headers_foreach (SoupMessageHeaders * hdrs,
SoupMessageHeadersForeachFunc func, gpointer user_data)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
soup_message_headers_foreach (hdrs, func, user_data);
#else
g_assert (gst_soup_vtable._soup_message_headers_foreach != NULL);
SoupEncoding
_soup_message_headers_get_encoding (SoupMessageHeaders * hdrs)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_message_headers_get_encoding (hdrs);
#else
g_assert (gst_soup_vtable._soup_message_headers_get_encoding != NULL);
goffset
_soup_message_headers_get_content_length (SoupMessageHeaders * hdrs)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_message_headers_get_content_length (hdrs);
#else
g_assert (gst_soup_vtable._soup_message_headers_get_content_length != NULL);
SoupStatus
_soup_message_get_status (SoupMessage * msg)
{
-#ifdef STATIC_SOUP
-#if STATIC_SOUP == 2
+#ifdef LINK_SOUP
+#if LINK_SOUP == 2
return msg->status_code;
-#elif STATIC_SOUP == 3
+#elif LINK_SOUP == 3
return soup_message_get_status (msg);
#endif
#else
const char *
_soup_message_get_reason_phrase (SoupMessage * msg)
{
-#ifdef STATIC_SOUP
-#if STATIC_SOUP == 2
+#ifdef LINK_SOUP
+#if LINK_SOUP == 2
return msg->reason_phrase;
-#elif STATIC_SOUP == 3
+#elif LINK_SOUP == 3
return soup_message_get_reason_phrase (msg);
#endif
#else
const char *
_soup_message_headers_get_one (SoupMessageHeaders * hdrs, const char *name)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_message_headers_get_one (hdrs, name);
#else
g_assert (gst_soup_vtable._soup_message_headers_get_one != NULL);
void
_soup_message_disable_feature (SoupMessage * msg, GType feature_type)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
soup_message_disable_feature (msg, feature_type);
#else
g_assert (gst_soup_vtable._soup_message_disable_feature != NULL);
_soup_message_headers_get_content_type (SoupMessageHeaders * hdrs,
GHashTable ** params)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_message_headers_get_content_type (hdrs, params);
#else
g_assert (gst_soup_vtable._soup_message_headers_get_content_type != NULL);
_soup_message_headers_get_content_range (SoupMessageHeaders * hdrs,
goffset * start, goffset * end, goffset * total_length)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_message_headers_get_content_range (hdrs, start, end,
total_length);
#else
_soup_message_headers_set_range (SoupMessageHeaders * hdrs, goffset start,
goffset end)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
soup_message_headers_set_range (hdrs, start, end);
#else
g_assert (gst_soup_vtable._soup_message_headers_set_range != NULL);
_soup_auth_authenticate (SoupAuth * auth, const char *username,
const char *password)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
soup_auth_authenticate (auth, username, password);
#else
g_assert (gst_soup_vtable._soup_auth_authenticate != NULL);
const char *
_soup_message_get_method (SoupMessage * msg)
{
-#ifdef STATIC_SOUP
-#if STATIC_SOUP == 2
+#ifdef LINK_SOUP
+#if LINK_SOUP == 2
return msg->method;
-#elif STATIC_SOUP == 3
+#elif LINK_SOUP == 3
return soup_message_get_method (msg);
#endif
#else
GCancellable * cancellable, GAsyncReadyCallback callback,
gpointer user_data)
{
-#ifdef STATIC_SOUP
-#if STATIC_SOUP == 2
+#ifdef LINK_SOUP
+#if LINK_SOUP == 2
soup_session_send_async (session, msg, cancellable, callback, user_data);
#else
soup_session_send_async (session, msg, G_PRIORITY_DEFAULT, cancellable,
_soup_session_send_finish (SoupSession * session,
GAsyncResult * result, GError ** error)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_session_send_finish (session, result, error);
#else
g_assert (gst_soup_vtable._soup_session_send_finish != NULL);
_soup_session_send (SoupSession * session, SoupMessage * msg,
GCancellable * cancellable, GError ** error)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_session_send (session, msg, cancellable, error);
#else
g_assert (gst_soup_vtable._soup_session_send != NULL);
gst_soup_session_cancel_message (SoupSession * session, SoupMessage * msg,
GCancellable * cancellable)
{
-#ifdef STATIC_SOUP
-#if STATIC_SOUP == 3
+#ifdef LINK_SOUP
+#if LINK_SOUP == 3
g_cancellable_cancel (cancellable);
#else
soup_session_cancel_message (session, msg, SOUP_STATUS_CANCELLED);
SoupCookie *
_soup_cookie_parse (const char *header)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
return soup_cookie_parse (header, NULL);
#else
g_assert (gst_soup_vtable._soup_cookie_parse != NULL);
void
_soup_cookies_to_request (GSList * cookies, SoupMessage * msg)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
soup_cookies_to_request (cookies, msg);
#else
g_assert (gst_soup_vtable._soup_cookies_to_request != NULL);
void
_soup_cookies_free (GSList * cookies)
{
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
soup_cookies_free (cookies);
#else
g_assert (gst_soup_vtable._soup_cookies_free != NULL);
#ifndef __GST_SOUP_LOADER_H__
#define __GST_SOUP_LOADER_H__
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
#include <libsoup/soup.h>
#else
#include "stub/soup.h"
void _soup_session_add_feature_by_type (SoupSession *session, GType feature_type);
typedef struct _GstSoupUri {
-#if (defined(STATIC_SOUP) && STATIC_SOUP == 3) || (!defined(STATIC_SOUP) && GLIB_CHECK_VERSION(2, 66, 0))
+#if (defined(LINK_SOUP) && LINK_SOUP == 3) || (!defined(LINK_SOUP) && GLIB_CHECK_VERSION(2, 66, 0))
GUri *uri;
#endif
-#if (defined(STATIC_SOUP) && STATIC_SOUP == 2) || !defined(STATIC_SOUP)
+#if (defined(LINK_SOUP) && LINK_SOUP == 2) || !defined(LINK_SOUP)
SoupURI *soup_uri;
#endif
} GstSoupUri;
#include <glib.h>
#include <gst/gst.h>
-#ifdef STATIC_SOUP
+#ifdef LINK_SOUP
#include <libsoup/soup.h>
#else
#include "stub/soup.h"
]
soup_opt = get_option('soup')
+soup_ver_opt = get_option('soup-version')
if soup_opt.disabled()
subdir_done()
endif
libdl_dep = cc.find_library('dl', required: false)
-static_args = []
-static_deps = []
+soup_link_args = []
+soup_link_deps = []
+libsoup2_dep = disabler()
+libsoup3_dep = disabler()
default_library = get_option('default_library')
-if default_library in ['static', 'both'] or get_option('soup-lookup-dep')
- libsoup2_dep = dependency('libsoup-2.4', version : '>=2.48',
- required : false, fallback : ['libsoup', 'libsoup_dep'],
- default_options: ['sysprof=disabled'])
- libsoup3_dep = dependency('libsoup-3.0', required : false,
- fallback : ['libsoup3', 'libsoup_dep'])
- if not libsoup2_dep.found() and not libsoup3_dep.found()
+if host_system != 'linux' or default_library in ['static', 'both']
+ if soup_ver_opt in ['auto', '3']
+ libsoup3_dep = dependency('libsoup-3.0', allow_fallback: true,
+ required: soup_ver_opt == '3' and soup_opt.enabled())
+ endif
+ if soup_ver_opt in ['auto', '2']
+ libsoup2_dep = dependency('libsoup-2.4', version : '>=2.48', allow_fallback: true,
+ default_options: ['sysprof=disabled'],
+ required: soup_ver_opt == '2' and soup_opt.enabled())
+ endif
+
+ if libsoup3_dep.found()
+ soup_link_deps += libsoup3_dep
+ soup_link_args += '-DLINK_SOUP=3'
+ message('soup plugin: linking to libsoup-3.0')
+ elif libsoup2_dep.found()
+ soup_link_deps += libsoup2_dep
+ soup_link_args += '-DLINK_SOUP=2'
+ message('soup plugin: linking to libsoup-2.4')
+ else
if soup_opt.enabled()
error('Either libsoup2 or libsoup3 is needed')
endif
subdir_done()
endif
- if libsoup3_dep.found()
- static_deps += libsoup3_dep
- static_args += '-DSTATIC_SOUP=3'
- message('soup plugin: using libsoup-3.0 for static build')
- elif libsoup2_dep.found()
- static_deps += libsoup2_dep
- static_args += '-DSTATIC_SOUP=2'
- message('soup plugin: using libsoup-2.4 for static build')
- endif
endif
soup_library_kwargs = {
soup_library_deps = [gst_dep, gstbase_dep, gsttag_dep, gmodule_dep, gio_dep, libdl_dep]
soup_library_c_args = gst_plugins_good_args
-if default_library in ['shared', 'both']
- gstsouphttpsrc_shared = shared_library('gstsoup',
- c_args : soup_library_c_args,
- dependencies : soup_library_deps,
- kwargs: soup_library_kwargs,
- )
-endif
-
-if default_library in ['static', 'both']
- gstsouphttpsrc_static = static_library('gstsoup',
- c_args : soup_library_c_args + static_args,
- dependencies : soup_library_deps + static_deps,
+if host_system != 'linux'
+ gstsouphttpsrc = library('gstsoup',
+ c_args : soup_library_c_args + soup_link_args,
+ dependencies : soup_library_deps + soup_link_deps,
kwargs: soup_library_kwargs,
)
+ gstsouphttpsrc_shared = gstsouphttpsrc
+ gstsouphttpsrc_static = gstsouphttpsrc
+else
+ if default_library in ['static', 'both']
+ gstsouphttpsrc_static = static_library('gstsoup',
+ c_args : soup_library_c_args + soup_link_args,
+ dependencies : soup_library_deps + soup_link_deps,
+ kwargs: soup_library_kwargs,
+ )
+ endif
+ if default_library in ['shared', 'both']
+ gstsouphttpsrc_shared = shared_library('gstsoup',
+ c_args : soup_library_c_args,
+ dependencies : soup_library_deps,
+ kwargs: soup_library_kwargs,
+ )
+ endif
endif
-# Use the static library to generate the .pc file if it's available. The shared
-# library .pc file does not have a Requires: on libsoup-2.4, and we use plugin
-# .pc files to generate dependencies for linking plugins statically.
+# Use the static library to generate the .pc file on Linux if it's available.
+# In that case, the shared library .pc file does not have a Requires: on
+# libsoup-2.4, and we use plugin .pc files to generate dependencies for linking
+# plugins statically.
if default_library == 'shared'
pkgconfig.generate(gstsouphttpsrc_shared, install_dir : plugins_pkgconfig_install_dir)
else
# soup plugin options
option('soup', type : 'feature', value : 'auto', description : 'libsoup HTTP client source/sink plugin')
-option('soup-lookup-dep', type : 'boolean', value : false,
- description : 'Lookup libsoup dep at build time even when building a shared plugin')
+option('soup-version', type : 'combo', value : 'auto', choices : ['auto', '2', '3'],
+ description: 'Force a specific libsoup version if linking to it (N/A for shared builds on Linux)')
# Qt plugin options
option('qt-method', type: 'combo', value: 'auto', choices: ['auto', 'pkg-config', 'qmake'],
endif
if get_option('soup').allowed()
- libsoup3_dep = dependency('libsoup-3.0', required : false,
- fallback : ['libsoup3', 'libsoup_dep'])
- libsoup2_dep = dependency('libsoup-2.4', version : '>=2.48',
- required : false, fallback : ['libsoup', 'libsoup_dep'],
- default_options: ['sysprof=disabled'])
-
if libsoup3_dep.found()
good_tests += [['elements/souphttpsrc', false, [libsoup3_dep], []]]
elif libsoup2_dep.found()
source_fallback_url = https://ftp.acc.umu.se/pub/gnome/sources/libsoup/2.74/libsoup-2.74.3.tar.xz
source_filename = libsoup-2.74.3.tar.xz
source_hash = e4b77c41cfc4c8c5a035fcdc320c7bc6cfb75ef7c5a034153df1413fa1d92f13
+
+[provide]
+libsoup-2.4 = libsoup_dep
+libsoup-gnome-2.4 = libsoup_gnome_dep