Meson: Change extra-checks to feature option and make it yielding
[platform/upstream/gstreamer.git] / meson.build
index 6622049..60d844f 100644 (file)
@@ -1,6 +1,6 @@
 project('gstreamer', 'c',
-  version : '1.15.1',
-  meson_version : '>= 0.47',
+  version : '1.17.0.1',
+  meson_version : '>= 0.48',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
 
@@ -114,6 +114,8 @@ cdata.set_quoted('PLUGINDIR', join_paths(get_option('prefix'), get_option('libdi
 cdata.set_quoted('VERSION', gst_version)
 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_SUBDIR', get_option('libdir'),
+  description: 'plugin directory path component, used to find plugins on relocatable builds on windows')
 cdata.set_quoted('GST_PLUGIN_SCANNER_SUBDIR', libexecdir,
   description: 'libexecdir path component, used to find plugin-scanner on relocatable builds on windows')
 cdata.set('GST_DISABLE_OPTION_PARSING', not get_option('option-parsing'))
@@ -199,6 +201,7 @@ check_headers = [
   'unistd.h',
   'valgrind/valgrind.h',
   'sys/resource.h',
+  'sys/uio.h',
 ]
 
 if host_system == 'windows'
@@ -227,6 +230,7 @@ check_functions = [
   'pselect',
   'getpagesize',
   'clock_gettime',
+  'strnlen',
   # These are needed by libcheck
   'getline',
   'mkstemp',
@@ -254,7 +258,7 @@ if cc.links('''#include <pthread.h>
   cdata.set('HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID', 1)
 endif
 
-# Check for posix timers and the monotonic clock
+# Check for posix timers and monotonic clock
 time_prefix = '#include <time.h>\n'
 if cdata.has('HAVE_UNISTD_H')
   time_prefix += '#include <unistd.h>'
@@ -348,19 +352,33 @@ endif
 backtrace_deps = []
 unwind_dep = dependency('libunwind', required : get_option('libunwind'))
 dw_dep = dependency('libdw', required: get_option('libdw'))
-backtrace_deps = [unwind_dep, dw_dep]
-if unwind_dep.found()
+dbghelp_dep = dependency('DbgHelp', required : get_option('dbghelp'))
+backtrace_deps = [unwind_dep, dw_dep, dbghelp_dep]
+backtrace_source_info = false
+backtrace_minimal = false
+# MSVC debug stack trace support
+if host_system == 'windows' and dbghelp_dep.found()
+  cdata.set('HAVE_DBGHELP', 1)
+  backtrace_source_info = true
+# DWARF stack trace support with libunwind and elf-utils
+elif 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.')
+    backtrace_source_info = true
   endif
-else
-  if cc.has_function('backtrace')
-    cdata.set('HAVE_BACKTRACE', 1)
+  backtrace_minimal = true
+# Basic backtrace() stack trace support
+elif cc.has_function('backtrace')
+  cdata.set('HAVE_BACKTRACE', 1)
+  backtrace_minimal = true
+endif
+# Print messages about what was enabled
+if not backtrace_source_info
+  if not backtrace_minimal
+    message('NO support for stack traces.')
   else
-      message('NO backtraces support.')
+    message('Minimal support for stack traces, no source info.')
   endif
 endif
 
@@ -396,7 +414,6 @@ warning_flags = [
   '-Waddress',
   '-Waggregate-return',
   '-Wno-multichar',
-  '-Wnested-externs',
   '-Wdeclaration-after-statement',
   '-Wvla',
   '-Wpointer-arith',
@@ -419,7 +436,7 @@ test_deps = [gmp_dep, gsl_dep, gslcblas_dep]
 # Used by gstinfo.c
 dl_dep = cc.find_library('dl', required : false)
 cdata.set('HAVE_DLADDR', cc.has_function('dladdr', dependencies : dl_dep))
-cdata.set('GST_ENABLE_EXTRA_CHECKS', get_option('extra-checks'))
+cdata.set('GST_ENABLE_EXTRA_CHECKS', not get_option('extra-checks').disabled())
 cdata.set('USE_POISONING', get_option('poisoning'))
 
 configinc = include_directories('.')
@@ -427,7 +444,7 @@ libsinc = include_directories('libs')
 privinc = include_directories('gst')
 
 # Find dependencies
-glib_dep = dependency('glib-2.0', version : '>=2.40.0',
+glib_dep = dependency('glib-2.0', version : '>=2.44.0',
   fallback: ['glib', 'libglib_dep'])
 gobject_dep = dependency('gobject-2.0',
   fallback: ['glib', 'libgobject_dep'])
@@ -451,14 +468,14 @@ rt_lib = cc.find_library('rt', required : false)
 gir = find_program('g-ir-scanner', required : get_option('introspection'))
 gnome = import('gnome')
 
-build_gir = gir.found() and not meson.is_cross_build()
+build_gir = gir.found() and (not meson.is_cross_build() or get_option('introspection').enabled())
 
 gir_init_section = [ '--add-init-section=extern void gst_init(gint*,gchar**);' + \
     'g_setenv("GST_REGISTRY_DISABLE", "yes", TRUE);' + \
     'g_setenv("GST_REGISTRY_1.0", "/no/way/this/exists.reg", TRUE);' + \
     'g_setenv("GST_PLUGIN_PATH_1_0", "", TRUE);' + \
     'g_setenv("GST_PLUGIN_SYSTEM_PATH_1_0", "", TRUE);' + \
-    'gst_init(NULL,NULL);' ]
+    'gst_init(NULL,NULL);', '--quiet']
 
 gst_c_args = ['-DHAVE_CONFIG_H']
 
@@ -521,6 +538,7 @@ endif
 subdir('pkgconfig')
 subdir('tests')
 subdir('data')
+subdir('docs')
 
 # xgettext is optional (on Windows for instance)
 if find_program('xgettext', required : get_option('nls')).found()
@@ -529,17 +547,5 @@ if find_program('xgettext', required : get_option('nls')).found()
 endif
 
 configure_file(output : 'config.h', configuration : cdata)
-
-if build_machine.system() == 'windows'
-  message('Disabling gtk-doc while building on Windows')
-else
-  if find_program('gtkdoc-scan', required : get_option('gtk_doc')).found()
-    subdir('docs')
-  else
-    message('Not building documentation as gtk-doc was not found')
-  endif
-endif
-
 run_command(python3, '-c', 'import shutil; shutil.copy("hooks/pre-commit.hook", ".git/hooks/pre-commit")')
-
 install_data('gst-element-check-1.0.m4', install_dir : join_paths(get_option('datadir'), 'aclocal'))