[libsoup] Meson: Use feature options for optional dependencies
- From: Xavier Claessens <xclaesse src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libsoup] Meson: Use feature options for optional dependencies
- Date: Tue, 20 Aug 2019 12:20:04 +0000 (UTC)
commit b41763354c9458d36d88e6757cc027dc6253717f
Author: Xavier Claessens <xavier claessens collabora com>
Date: Wed Jul 24 12:32:54 2019 -0400
Meson: Use feature options for optional dependencies
Auto features makes easier to build libsoup without having to check all
the options that must be disabled. Distributors have a global option
'auto_features' to turn them all to enabled and not have surprises.
meson.build | 91 ++++++++++++++++++++++++++-----------------------------
meson_options.txt | 21 +++++++------
2 files changed, 54 insertions(+), 58 deletions(-)
---
diff --git a/meson.build b/meson.build
index 11e8aeec..aa9a23fc 100644
--- a/meson.build
+++ b/meson.build
@@ -113,11 +113,9 @@ endif
cdata = configuration_data()
-if get_option('brotli')
- brotlidec_dep = dependency('libbrotlidec')
+brotlidec_dep = dependency('libbrotlidec', required : get_option('brotli'))
+if brotlidec_dep.found()
cdata.set('WITH_BROTLI', true)
-else
- brotlidec_dep = dependency('', required: false)
endif
platform_deps = []
@@ -272,39 +270,38 @@ cdata.set('HAVE_CURL', find_program('curl', required : false).found())
##################
# GSSAPI support #
##################
-enable_gssapi = get_option('gssapi')
-if enable_gssapi
- if cc.get_id() == 'msvc'
- if host_machine.cpu_family() == 'x86'
- gssapi_lib_type = '32'
- else
- gssapi_lib_type = '64'
- endif
- if cc.has_header('gssapi/gssapi.h', required: false)
- gssapi_lib = cc.find_library('gssapi' + gssapi_lib_type, required: false)
- assert(gssapi_lib.found(), 'GSSAPI support requested, but the MIT Kerberos 5 headers and libraries are
not found')
+gssapi_opt = get_option('gssapi')
+enable_gssapi = false
+if cc.get_id() == 'msvc'
+ if host_machine.cpu_family() == 'x86'
+ gssapi_lib_type = '32'
+ else
+ gssapi_lib_type = '64'
+ endif
+ gssapi_lib = cc.find_library('gssapi' + gssapi_lib_type,
+ has_headers: 'gssapi/gssapi.h',
+ required: gssapi_opt)
+ if gssapi_lib.found()
+ enable_gssapi = true
add_project_link_arguments('gssapi@0@.lib'.format(gssapi_lib_type), language : 'c')
+ endif
+else
+ krb5_config_option = get_option('krb5_config')
+ krb5_config_path = krb5_config_option != '' ? krb5_config_option : 'krb5-config'
+ krb5_config = find_program(krb5_config_path, required : gssapi_opt)
+ if krb5_config.found()
+ libs_output = run_command (krb5_config, '--libs', 'gssapi', check: gssapi_opt.enabled())
+ cflags_output = run_command (krb5_config, '--cflags', 'gssapi', check: gssapi_opt.enabled())
+ if libs_output.returncode() == 0 and cflags_output.returncode() == 0
+ enable_gssapi = true
+ add_project_link_arguments(libs_output.stdout().split(), language : 'c')
+ add_project_arguments(cflags_output.stdout().split(), language : 'c')
endif
- else
- krb5_config_option = get_option('krb5_config')
-
- krb5_config_path = krb5_config_option != '' ? krb5_config_option : 'krb5-config'
- krb5_config = find_program(krb5_config_path, required : false)
-
- assert(krb5_config.found(), 'GSSAPI support requested, but krb5-config not found. Please specify its
path with -Dkrb5-config=PATH')
-
- krb5_config_output = run_command (krb5_config, '--libs', 'gssapi')
- assert(krb5_config_output.returncode() == 0, 'Failed to obtain cflags for GSSAPI from krb5-config')
- add_project_link_arguments(krb5_config_output.stdout().split(), language : 'c')
-
- krb5_config_output = run_command (krb5_config, '--cflags', 'gssapi')
- assert(krb5_config_output.returncode() == 0, 'Failed to obtain cflags for GSSAPI from krb5-config')
- add_project_arguments(krb5_config_output.stdout().split(), language : 'c')
endif
+endif
- if enable_gssapi
- add_project_arguments('-DLIBSOUP_HAVE_GSSAPI=1', language : 'c')
- endif
+if enable_gssapi
+ add_project_arguments('-DLIBSOUP_HAVE_GSSAPI=1', language : 'c')
endif
################
@@ -312,14 +309,11 @@ endif
################
# NTLM not supported on Windows
if host_machine.system() != 'windows'
- enable_ntlm = get_option('ntlm')
- if enable_ntlm
- ntlm_auth = find_program(get_option('ntlm_auth'), required: false)
+ ntlm_auth = find_program(get_option('ntlm_auth'), required: get_option('ntlm'))
- if ntlm_auth.found()
- add_project_arguments('-DUSE_NTLM_AUTH=1', language : 'c')
- add_project_arguments('-DNTLM_AUTH=' + ntlm_auth.path(), language : 'c')
- endif
+ if ntlm_auth.found()
+ add_project_arguments('-DUSE_NTLM_AUTH=1', language : 'c')
+ add_project_arguments('-DNTLM_AUTH=' + ntlm_auth.path(), language : 'c')
endif
endif
@@ -331,18 +325,19 @@ enable_gnome = get_option('gnome') and host_machine.system() != 'windows'
#########################
# GObject introspection #
#########################
-# FIXME: once we start to require meson 0.49.0+ and gnome-introspection 1.58.1+
-# the we can enable the introspection even for the static build. See
-# https://github.com/mesonbuild/meson/pull/4478.
-enable_introspection = get_option('introspection') and find_program('g-ir-scanner', required: false).found()
and not meson.is_cross_build() and not is_static_library
+gir = find_program('g-ir-scanner', required: get_option('introspection'))
+enable_introspection = gir.found() and not meson.is_cross_build()
############
# Vala API #
############
-enable_vapi = get_option('vapi')
-if enable_vapi
- assert(enable_introspection, 'vapi support was requested, but introspection support is mandatory.')
- assert(add_languages('vala', required: false), 'vapi support was requested, but vala not found.')
+vapi_opt = get_option('vapi')
+enable_vapi = add_languages('vala', required: vapi_opt)
+if enable_vapi and not enable_introspection
+ enable_vapi = false
+ if vapi_opt.enabled()
+ error('vapi support was requested, but introspection support is mandatory.')
+ endif
endif
configinc = include_directories('.')
diff --git a/meson_options.txt b/meson_options.txt
index fa033bf2..4f14e378 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,6 +1,6 @@
option('gssapi',
- type : 'boolean',
- value : true,
+ type : 'feature',
+ value : 'auto',
description : 'Build with GSSAPI support'
)
@@ -11,8 +11,8 @@ option('krb5_config',
)
option('ntlm',
- type : 'boolean',
- value : false,
+ type : 'feature',
+ value : 'auto',
description : 'Build with NTLM support'
)
@@ -23,8 +23,8 @@ option('ntlm_auth',
)
option('brotli',
- type : 'boolean',
- value : true,
+ type : 'feature',
+ value : 'auto',
description : 'Build with Brotli decompression support'
)
@@ -41,14 +41,15 @@ option('gnome',
)
option('introspection',
- type : 'boolean',
- value : true,
+ type : 'feature',
+ value : 'auto',
+ yield : true,
description : 'Build GObject Introspection data'
)
option('vapi',
- type : 'boolean',
- value : true,
+ type : 'feature',
+ value : 'auto',
description : 'Build Vala bindings'
)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]