X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=meson.build;h=60d844fe2a294a58c7d1e960365f3ba8d6748828;hb=c18f9d4ad44bd3bfe1b9aeb5bce3a88274221ffc;hp=a0423375aeee650754fddf7d69be0f35461a5fe3;hpb=463663d4b4b7830a3721882f146949ed5d36eeab;p=platform%2Fupstream%2Fgstreamer.git diff --git a/meson.build b/meson.build index a042337..60d844f 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ project('gstreamer', 'c', - version : '1.15.0.1', - meson_version : '>= 0.47', + version : '1.17.0.1', + meson_version : '>= 0.48', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) @@ -14,6 +14,7 @@ if version_arr.length() == 4 else gst_version_nano = 0 endif +gst_version_is_dev = gst_version_minor % 2 == 1 and gst_version_micro < 90 host_system = host_machine.system() @@ -21,7 +22,9 @@ apiversion = '1.0' soversion = 0 # maintaining compatibility with the previous libtool versioning # current = minor * 100 + micro -libversion = '@0@.@1@.0'.format(soversion, gst_version_minor * 100 + gst_version_micro) +curversion = gst_version_minor * 100 + gst_version_micro +libversion = '@0@.@1@.0'.format(soversion, curversion) +osxversion = curversion + 1 prefix = get_option('prefix') @@ -30,6 +33,8 @@ helpers_install_dir = join_paths(libexecdir, 'gstreamer-1.0') cc = meson.get_compiler('c') +cdata = configuration_data() + # Ignore several spurious warnings for things gstreamer does very commonly # If a warning is completely useless and spammy, use '/wdXXXX' to suppress it # If a warning is harmless but hard to fix, use '/woXXXX' so it's shown once @@ -40,6 +45,7 @@ if cc.get_id() == 'msvc' '/wd4146', # unary minus on unsigned (beware INT_MIN) '/wd4244', # lossy type conversion (e.g. double -> int) '/wd4305', # truncating type conversion (e.g. double -> float) + cc.get_supported_arguments(['/utf-8']), # set the input encoding to utf-8 language : 'c') elif cc.has_link_argument('-Wl,-Bsymbolic-functions') # FIXME: Add an option for this if people ask for it @@ -47,17 +53,49 @@ elif cc.has_link_argument('-Wl,-Bsymbolic-functions') endif # Symbol visibility -have_visibility_hidden = cc.has_argument('-fvisibility=hidden') -if have_visibility_hidden +have_visibility_hidden = false +if cc.get_id() == 'msvc' + export_define = '__declspec(dllexport) extern' +elif cc.has_argument('-fvisibility=hidden') add_project_arguments('-fvisibility=hidden', language: 'c') + export_define = 'extern __attribute__ ((visibility ("default")))' + have_visibility_hidden = true +else + export_define = 'extern' endif +# Passing this through the command line would be too messy +cdata.set('GST_API_EXPORT', export_define) + # Disable strict aliasing if cc.has_argument('-fno-strict-aliasing') add_project_arguments('-fno-strict-aliasing', language: 'c') endif -cdata = configuration_data() +# Define G_DISABLE_DEPRECATED for development versions +if gst_version_is_dev + message('Disabling deprecated GLib API') + add_project_arguments('-DG_DISABLE_DEPRECATED', language: 'c') +endif + +cast_checks = get_option('gobject-cast-checks') +if cast_checks.disabled() or (cast_checks.auto() and not gst_version_is_dev) + message('Disabling GLib cast checks') + add_project_arguments('-DG_DISABLE_CAST_CHECKS', language: 'c') +endif + +glib_asserts = get_option('glib-asserts') +if glib_asserts.disabled() or (glib_asserts.auto() and not gst_version_is_dev) + message('Disabling GLib asserts') + add_project_arguments('-DG_DISABLE_ASSERT', language: 'c') +endif + +glib_checks = get_option('glib-checks') +if glib_checks.disabled() or (glib_checks.auto() and not gst_version_is_dev) + message('Disabling GLib checks') + add_project_arguments('-DG_DISABLE_CHECKS', language: 'c') +endif + cdata.set_quoted('GST_API_VERSION', apiversion) cdata.set_quoted('GST_DATADIR', join_paths(prefix, get_option('datadir'))) cdata.set_quoted('LOCALEDIR', join_paths(prefix, get_option('localedir'))) @@ -74,14 +112,24 @@ cdata.set_quoted('PACKAGE_URL', '') cdata.set_quoted('PACKAGE_VERSION', gst_version) cdata.set_quoted('PLUGINDIR', join_paths(get_option('prefix'), get_option('libdir'), 'gstreamer-1.0')) 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_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')) -if host_system == 'darwin' +mem_align_opt = get_option('memory-alignment') +if mem_align_opt == 'malloc' + cdata.set('MEMORY_ALIGNMENT_MALLOC', 1) +elif mem_align_opt == 'pagesize' + cdata.set('MEMORY_ALIGNMENT_PAGESIZE', 1) +else + cdata.set('MEMORY_ALIGNMENT', mem_align_opt.to_int()) +endif + +if ['darwin', 'ios'].contains(host_system) cdata.set_quoted('GST_EXTRA_MODULE_SUFFIX', '.dylib') endif @@ -153,6 +201,7 @@ check_headers = [ 'unistd.h', 'valgrind/valgrind.h', 'sys/resource.h', + 'sys/uio.h', ] if host_system == 'windows' @@ -181,6 +230,7 @@ check_functions = [ 'pselect', 'getpagesize', 'clock_gettime', + 'strnlen', # These are needed by libcheck 'getline', 'mkstemp', @@ -208,7 +258,7 @@ if cc.links('''#include 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 \n' if cdata.has('HAVE_UNISTD_H') time_prefix += '#include ' @@ -301,20 +351,34 @@ endif backtrace_deps = [] 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() +dw_dep = dependency('libdw', required: get_option('libdw')) +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 @@ -350,7 +414,6 @@ warning_flags = [ '-Waddress', '-Waggregate-return', '-Wno-multichar', - '-Wnested-externs', '-Wdeclaration-after-statement', '-Wvla', '-Wpointer-arith', @@ -373,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.set10('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('.') @@ -381,7 +444,7 @@ libsinc = include_directories('libs') privinc = include_directories('gst') # Find dependencies -glib_dep = dependency('glib-2.0', version : '>=2.32.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']) @@ -405,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'] @@ -424,7 +487,7 @@ if get_option('default_library') == 'static' endif # Used in gst/parse/meson.build and below -python3 = import('python3').find_python() +python3 = import('python').find_installation() bashcomp_option = get_option('bash-completion') bashcomp_dep = dependency('bash-completion', version : '>= 2.0', required : bashcomp_option) @@ -457,13 +520,25 @@ if bashcomp_dep.found() endif endif +plugins_install_dir = join_paths(get_option('libdir'), 'gstreamer-1.0') + +pkgconfig = import('pkgconfig') +plugins_pkgconfig_install_dir = join_paths(plugins_install_dir, 'pkgconfig') +if get_option('default_library') == 'shared' + # If we don't build static plugins there is no need to generate pc files + plugins_pkgconfig_install_dir = disabler() +endif + subdir('gst') subdir('libs') subdir('plugins') -subdir('tools') +if not get_option('tools').disabled() + subdir('tools') +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() @@ -472,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'))