From 09f67fe76af76672fedd25846cecbe07f6750105 Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Wed, 25 Jul 2018 07:34:19 +0530 Subject: [PATCH] meson: Add feature options for optional deps Everything should be behind an option now. https://bugzilla.gnome.org/show_bug.cgi?id=795107 --- meson.build | 66 +++++++++++++++++++---------------- meson_options.txt | 26 +++++++------- tests/examples/controller/meson.build | 2 +- tests/examples/streams/meson.build | 5 ++- tests/meson.build | 2 +- 5 files changed, 53 insertions(+), 48 deletions(-) diff --git a/meson.build b/meson.build index 7bc2c83..42920c0 100644 --- a/meson.build +++ b/meson.build @@ -76,7 +76,6 @@ cdata.set_quoted('PLUGINDIR', join_paths(get_option('prefix'), get_option('libdi cdata.set_quoted('VERSION', gst_version) # FIXME: --with-memory-alignment],[8,N,malloc,pagesize (default is 32)]) option cdata.set('MEMORY_ALIGNMENT_MALLOC', 1) -cdata.set('ENABLE_NLS', get_option('nls')) cdata.set_quoted('GST_PLUGIN_SCANNER_INSTALLED', join_paths(prefix, helpers_install_dir, 'gst-plugin-scanner')) cdata.set_quoted('GST_PTP_HELPER_INSTALLED', join_paths(prefix, helpers_install_dir, 'gst-ptp-helper')) cdata.set_quoted('GST_PLUGIN_SCANNER_SUBDIR', libexecdir, @@ -301,23 +300,21 @@ if host_system == 'windows' endif backtrace_deps = [] -if get_option('libunwind') - unwind_dep = dependency('libunwind', required : false) - dw_dep = dependency('libdw', required: false) - backtrace_deps = [unwind_dep, dw_dep] - if unwind_dep.found() - cdata.set('HAVE_UNWIND', 1) - if dw_dep.found() - cdata.set('HAVE_DW', 1) - else - message('Support for backtraces is partial only.') - endif +unwind_dep = dependency('libunwind', required : get_option('libunwind')) +dw_dep = dependency('libdw', required: get_option('libunwind')) +backtrace_deps = [unwind_dep, dw_dep] +if unwind_dep.found() + cdata.set('HAVE_UNWIND', 1) + if dw_dep.found() + cdata.set('HAVE_DW', 1) else - if cc.has_function('backtrace') - cdata.set('HAVE_BACKTRACE', 1) - else - message('NO backtraces support.') - endif + message('Support for backtraces is partial only.') + endif +else + if cc.has_function('backtrace') + cdata.set('HAVE_BACKTRACE', 1) + else + message('NO backtraces support.') endif endif @@ -404,11 +401,10 @@ mathlib = cc.find_library('m', required : false) # Also provides clock_gettime in glibc < 2.17 rt_lib = cc.find_library('rt', required : false) -gir = find_program('g-ir-scanner', required : false) +gir = find_program('g-ir-scanner', required : get_option('introspection')) gnome = import('gnome') -# Fixme, not very elegant. -build_gir = gir.found() and not meson.is_cross_build() and get_option('introspection') +build_gir = gir.found() and not meson.is_cross_build() gir_init_section = [ '--add-init-section=extern void gst_init(gint*,gchar**);' + \ 'g_setenv("GST_REGISTRY_DISABLE", "yes", TRUE);' + \ @@ -429,22 +425,33 @@ endif # Used in gst/parse/meson.build and below python3 = import('python3').find_python() -bashcomp_dep = dependency('bash-completion', version : '>= 2.0', required : false) - -bashcomp_found = bashcomp_dep.found() +bashcomp_option = get_option('bash-completion') +bashcomp_dep = dependency('bash-completion', version : '>= 2.0', required : bashcomp_option) bash_completions_dir = '' bash_helpers_dir = '' -if bashcomp_found +bashcomp_found = false +if bashcomp_dep.found() + bashcomp_found = true bash_completions_dir = bashcomp_dep.get_pkgconfig_variable('completionsdir', define_variable: ['prefix', '.']) if bash_completions_dir == '' - message('Found bash-completion but the .pc file did not set \'completionsdir\'.') + msg = 'Found bash-completion but the .pc file did not set \'completionsdir\'.' + if bashcomp_option.enabled() + error(msg) + else + message(msg) + endif bashcomp_found = false endif bash_helpers_dir = bashcomp_dep.get_pkgconfig_variable('helpersdir', define_variable: ['prefix', '.']) if bash_helpers_dir == '' - message('Found bash-completion, but the .pc file did not set \'helpersdir\'.') + msg = 'Found bash-completion, but the .pc file did not set \'helpersdir\'.' + if bashcomp_option.enabled() + error(msg) + else + message(msg) + endif bashcomp_found = false endif endif @@ -458,7 +465,8 @@ subdir('tests') subdir('data') # xgettext is optional (on Windows for instance) -if get_option('nls') and find_program('xgettext', required : false).found() +if find_program('xgettext', required : get_option('nls')).found() + cdata.set('ENABLE_NLS', 1) subdir('po') endif @@ -466,10 +474,8 @@ configure_file(output : 'config.h', configuration : cdata) if build_machine.system() == 'windows' message('Disabling gtk-doc while building on Windows') -elif not get_option('gtk_doc') - message('gtk-doc is disabled via options') else - if find_program('gtkdoc-scan', required : false).found() + if find_program('gtkdoc-scan', required : get_option('gtk_doc')).found() subdir('docs') else message('Not building documentation as gtk-doc was not found') diff --git a/meson_options.txt b/meson_options.txt index 455b46f..0d51e7a 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -3,26 +3,26 @@ option('poisoning', type : 'boolean', value : false) option('gst_debug', type : 'boolean', value : true) option('registry', type : 'boolean', value : true) option('tracer_hooks', type : 'boolean', value : true) -option('libunwind', type : 'boolean', value : true, - description : 'Use libunwind to generate backtraces') option('ptp-helper-setuid-user', type : 'string', - description : 'User to switch to when installing gst-ptp-helper setuid root') + description : 'User to switch to when installing gst-ptp-helper setuid root') option('ptp-helper-setuid-group', type : 'string', - description : 'Group to switch to when installing gst-ptp-helper setuid root') + description : 'Group to switch to when installing gst-ptp-helper setuid root') option('ptp-helper-permissions', type : 'combo', choices : ['none', 'setuid-root', 'capabilities', 'auto'], value : 'auto') +option('extra-checks', type : 'boolean', value : true, description : 'Enable extra runtime checks') + +# Feature options +option('libunwind', type : 'feature', value : 'auto', description : 'Use libunwind to generate backtraces') +option('bash-completion', type : 'feature', value : 'auto', description : 'Install bash completion files') + +# Common feature options +option('examples', type : 'feature', value : 'auto', yield : true) +option('gtk_doc', type : 'feature', value : 'auto', yield : true, description : 'Generate API documentation with gtk-doc') +option('introspection', type : 'feature', value : 'auto', yield : true, description : 'Generate gobject-introspection bindings') +option('nls', type : 'feature', value : 'auto', yield: true, description : 'Enable native language support (translations)') # Common options -option('examples', type : 'boolean', value : true, yield : true) -option('gtk_doc', type : 'boolean', value : true, yield : true, - description : 'Generate API documentation with gtk-doc') -option('introspection', type : 'boolean', value : true, yield : true, - description : 'Generate gobject-introspection bindings') -option('nls', type : 'boolean', value : true, yield: true, - description : 'Enable native language support (translations)') option('package-name', type : 'string', yield : true, description : 'package name to use in plugins') option('package-origin', type : 'string', value : 'Unknown package origin', yield : true, description : 'package origin URL to use in plugins') -option('extra-checks', type : 'boolean', value : true, - description : 'Enable extra runtime checks') diff --git a/tests/examples/controller/meson.build b/tests/examples/controller/meson.build index da4ee04..52896ee 100644 --- a/tests/examples/controller/meson.build +++ b/tests/examples/controller/meson.build @@ -13,7 +13,7 @@ foreach prog : progs ) endforeach -gtk_dep = dependency('gtk+-3.0', required : false) +gtk_dep = dependency('gtk+-3.0', required : get_option('examples')) if gtk_dep.found() executable('controller-graph', 'controller-graph.c', install: false, diff --git a/tests/examples/streams/meson.build b/tests/examples/streams/meson.build index e087f41..88dcc11 100644 --- a/tests/examples/streams/meson.build +++ b/tests/examples/streams/meson.build @@ -4,9 +4,8 @@ executable('stream-status', 'stream-status.c', c_args: gst_c_args, ) -# we assume that if the header is there it actually found pthreads as thread lib -threads_dep = dependency('threads', required : false) -if threads_dep.found() and cc.has_header('pthread.h') +if cc.has_header('pthread.h') + threads_dep = dependency('threads') executable('rtpool-test', 'rtpool-test.c', 'testrtpool.c', install: false, dependencies : [glib_dep, gobject_dep, gmodule_dep, mathlib, gst_dep, threads_dep], diff --git a/tests/meson.build b/tests/meson.build index d7ced96..72b8cae 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -1,6 +1,6 @@ subdir('benchmarks') subdir('check') -if get_option('examples') +if not get_option('examples').disabled() subdir('examples') endif subdir('misc') -- 2.7.4