includedir = join_paths(libsoup_api_name, meson.project_name())
subdir('include')
pkg = import('pkgconfig')
soup_sources = [
'auth/soup-auth.c',
'auth/soup-auth-basic.c',
'auth/soup-auth-digest.c',
'auth/soup-auth-ntlm.c',
'auth/soup-auth-negotiate.c',
'auth/soup-auth-manager.c',
'auth/soup-connection-auth.c',
'auth/soup-tls-interaction.c',
'cache/soup-cache.c',
'cache/soup-cache-client-input-stream.c',
'cache/soup-cache-input-stream.c',
'content-decoder/soup-content-decoder.c',
'content-decoder/soup-content-processor.c',
'content-decoder/soup-converter-wrapper.c',
'content-sniffer/soup-content-sniffer.c',
'content-sniffer/soup-content-sniffer-stream.c',
'cookies/soup-cookie.c',
'cookies/soup-cookie-jar.c',
'cookies/soup-cookie-jar-db.c',
'cookies/soup-cookie-jar-text.c',
'hsts/soup-hsts-enforcer.c',
'hsts/soup-hsts-enforcer-db.c',
'hsts/soup-hsts-policy.c',
'http1/soup-client-message-io-http1.c',
'http1/soup-body-input-stream.c',
'http1/soup-body-output-stream.c',
'http1/soup-message-io-data.c',
'http1/soup-message-io-source.c',
'http2/soup-client-message-io-http2.c',
'http2/soup-body-input-stream-http2.c',
'server/http1/soup-server-message-io-http1.c',
'server/http2/soup-server-message-io-http2.c',
'server/soup-auth-domain.c',
'server/soup-auth-domain-basic.c',
'server/soup-auth-domain-digest.c',
'server/soup-listener.c',
'server/soup-message-body.c',
'server/soup-path-map.c',
'server/soup-server.c',
'server/soup-server-connection.c',
'server/soup-server-message.c',
'server/soup-server-message-io.c',
'websocket/soup-websocket.c',
'websocket/soup-websocket-connection.c',
'websocket/soup-websocket-extension.c',
'websocket/soup-websocket-extension-deflate.c',
'websocket/soup-websocket-extension-manager.c',
'soup-client-input-stream.c',
'soup-client-message-io.c',
'soup-connection.c',
'soup-connection-manager.c',
'soup-date-utils.c',
'soup-filter-input-stream.c',
'soup-form.c',
'soup-headers.c',
'soup-header-names.c',
'soup-http2-utils.c',
'soup-init.c',
'soup-io-stream.c',
'soup-logger.c',
'soup-logger-input-stream.c',
'soup-message.c',
'soup-message-headers.c',
'soup-message-metrics.c',
'soup-message-queue-item.c',
'soup-method.c',
'soup-misc.c',
'soup-multipart.c',
'soup-multipart-input-stream.c',
'soup-session.c',
'soup-session-feature.c',
'soup-socket-properties.c',
'soup-status.c',
'soup-tld.c',
'soup-uri-utils.c',
'soup-version.c',
]
soup_private_enum_headers = [
'soup-connection.h',
]
soup_introspection_headers = [
'auth/soup-auth.h',
'auth/soup-auth-manager.h',
'cache/soup-cache.h',
'content-decoder/soup-content-decoder.h',
'content-sniffer/soup-content-sniffer.h',
'cookies/soup-cookie.h',
'cookies/soup-cookie-jar.h',
'cookies/soup-cookie-jar-db.h',
'cookies/soup-cookie-jar-text.h',
'hsts/soup-hsts-enforcer.h',
'hsts/soup-hsts-enforcer-db.h',
'hsts/soup-hsts-policy.h',
'server/soup-auth-domain.h',
'server/soup-auth-domain-basic.h',
'server/soup-auth-domain-digest.h',
'server/soup-message-body.h',
'server/soup-server.h',
'server/soup-server-message.h',
'websocket/soup-websocket.h',
'websocket/soup-websocket-connection.h',
'websocket/soup-websocket-extension.h',
'websocket/soup-websocket-extension-deflate.h',
'websocket/soup-websocket-extension-manager.h',
'soup-date-utils.h',
'soup-form.h',
'soup-headers.h',
'soup-logger.h',
'soup-message.h',
'soup-message-headers.h',
'soup-message-metrics.h',
'soup-method.h',
'soup-multipart.h',
'soup-multipart-input-stream.h',
'soup-session.h',
'soup-session-feature.h',
'soup-status.h',
'soup-tld.h',
'soup-types.h',
'soup-uri-utils.h',
]
soup_installed_headers = soup_introspection_headers
if brotlidec_dep.found()
soup_sources += 'content-decoder/soup-brotli-decompressor.c'
endif
install_headers(soup_installed_headers, subdir : includedir)
soup_version_h = configure_file(
input : 'soup-version.h.in',
output : 'soup-version.h',
install_dir : join_paths(get_option('includedir'), includedir),
command : [find_program('generate-version-header.py'), '@INPUT@', '@OUTPUT@', meson.project_version()]
)
enum_types = 'soup-enum-types'
soup_enums = gnome.mkenums('soup-enum-types',
sources : soup_installed_headers,
h_template : enum_types + '.h.template',
c_template : enum_types + '.c.template',
install_header : true,
install_dir : join_paths(get_option('includedir'), includedir))
soup_enum_h = soup_enums[1]
soup_enum_c = soup_enums[0]
soup_private_enums = gnome.mkenums_simple('soup-private-enum-types',
sources : soup_private_enum_headers,
)
libsoup_c_args = [
'-DG_LOG_DOMAIN="@0@"'.format(meson.project_name()),
'-DLIBSOUP_COMPILATION'
]
deps = [
libsysprof_capture_dep,
glib_deps,
sqlite_dep,
libpsl_dep,
brotlidec_dep,
platform_deps,
gssapi_dep,
libz_dep,
libnghttp2_dep,
]
libsoup_includes = [
configinc,
include_directories([
'auth',
'cookies',
'content-decoder',
'hsts',
'http1',
'http2',
'server',
'server/http1',
'server/http2',
'websocket',
'.'
]),
]
libsoup = library('soup-@0@'.format(apiversion),
sources : [
soup_sources,
soup_private_enums,
soup_enums,
],
version : libversion,
darwin_versions: darwin_versions,
c_args : libsoup_c_args,
include_directories : libsoup_includes,
gnu_symbol_visibility: 'hidden',
install : true,
dependencies : deps)
libsoup_static = static_library('soup-@0@-static'.format(apiversion),
sources : [
soup_sources,
soup_private_enums,
soup_enums,
],
c_args : libsoup_c_args,
include_directories : libsoup_includes,
dependencies : deps,
)
pkg.generate(libsoup,
libraries : glib_deps,
name : meson.project_name(),
description : 'A glib-based HTTP library',
filebase : libsoup_api_name,
subdirs: libsoup_api_name,
variables: 'exec_prefix=${prefix}')
libsoup_dep = declare_dependency(link_with : libsoup,
include_directories : libsoup_includes,
sources : soup_enum_h,
dependencies : [ platform_deps, gssapi_dep, glib_deps ]
)
meson.override_dependency('libsoup-3.0', libsoup_dep)
libsoup_static_dep = declare_dependency(link_with : libsoup_static,
include_directories : libsoup_includes,
sources : soup_enum_h,
dependencies : [ platform_deps, gssapi_dep, glib_deps ]
)
if enable_introspection or enable_vapi
soup_ns = 'Soup'
soup_gir_gen_sources = gnome.generate_gir(libsoup,
sources : [
soup_sources,
soup_introspection_headers,
soup_enum_h,
soup_version_h
],
dependencies : libsoup_dep,
nsversion : apiversion,
namespace : soup_ns,
symbol_prefix : soup_ns.to_lower(),
identifier_prefix : soup_ns,
export_packages : libsoup_api_name,
extra_args : libsoup_c_args,
includes : 'Gio-2.0',
install : true,
header: join_paths(meson.project_name(), 'soup.h'),
)
soup_gir_gen_dep = declare_dependency(
dependencies : libsoup_dep,
sources : soup_gir_gen_sources)
if enable_vapi
soup_ns_version = '@0@-@1@'.format(soup_ns, apiversion)
gnome.generate_vapi(libsoup_api_name,
sources : [
soup_gir_gen_sources[0],
soup_ns_version + '-custom.vala'
],
packages : 'gio-2.0',
install : true,
)
endif
endif