mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-20 15:27:07 +00:00
d86fa2c44a
Get a sense of files and line numbers in the parsed GstStructure and take that information when reporting GstValidateAction errors by letting the user know where the action comes from in the messages. And accept non-literal string in printing formats.
158 lines
5.3 KiB
Meson
158 lines
5.3 KiB
Meson
project('gst-devtools', 'c',
|
|
version : '1.17.0.1',
|
|
meson_version : '>= 0.48',
|
|
default_options : [ 'warning_level=1',
|
|
'c_std=gnu99',
|
|
'buildtype=debugoptimized' ])
|
|
|
|
gst_version = meson.project_version()
|
|
version_arr = gst_version.split('.')
|
|
gst_version_major = version_arr[0].to_int()
|
|
gst_version_minor = version_arr[1].to_int()
|
|
gst_version_micro = version_arr[2].to_int()
|
|
if gst_version_minor.is_even()
|
|
TESTSUITE_VERSION = '@0@.@1@'.format(gst_version_major, gst_version_minor)
|
|
else
|
|
TESTSUITE_VERSION = 'master'
|
|
endif
|
|
|
|
apiversion = '1.0'
|
|
soversion = 0
|
|
# maintaining compatibility with the previous libtool versioning
|
|
# current = minor * 100 + micro
|
|
curversion = gst_version_minor * 100 + gst_version_micro
|
|
libversion = '@0@.@1@.0'.format(soversion, curversion)
|
|
osxversion = curversion + 1
|
|
|
|
prefix = get_option('prefix')
|
|
|
|
glib_req = '>= 2.44.0'
|
|
gst_req = '>= @0@.@1@.0'.format(gst_version_major, gst_version_minor)
|
|
|
|
cc = meson.get_compiler('c')
|
|
|
|
if cc.get_id() == 'msvc'
|
|
# 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
|
|
# NOTE: Only add warnings here if you are sure they're spurious
|
|
add_project_arguments(
|
|
'/wd4018', # implicit signed/unsigned conversion
|
|
'/wd4146', # unary minus on unsigned (beware INT_MIN)
|
|
'/wd4244', # lossy type conversion (e.g. double -> int)
|
|
'/wd4305', # truncating type conversion (e.g. double -> float)
|
|
language : 'c')
|
|
# Disable SAFESEH with MSVC for plugins and libs that use external deps that
|
|
# are built with MinGW
|
|
noseh_link_args = ['/SAFESEH:NO']
|
|
else
|
|
noseh_link_args = []
|
|
endif
|
|
|
|
# Symbol visibility
|
|
if cc.has_argument('-fvisibility=hidden')
|
|
add_project_arguments('-fvisibility=hidden', language: 'c')
|
|
endif
|
|
|
|
# Disable strict aliasing
|
|
if cc.has_argument('-fno-strict-aliasing')
|
|
add_project_arguments('-fno-strict-aliasing', language: 'c')
|
|
endif
|
|
|
|
gst_dep = dependency('gstreamer-' + apiversion, version : gst_req,
|
|
fallback : ['gstreamer', 'gst_dep'])
|
|
gstbase_dep = dependency('gstreamer-base-' + apiversion, version : gst_req,
|
|
fallback : ['gstreamer', 'gst_base_dep'])
|
|
gst_pbutils_dep = dependency('gstreamer-pbutils-' + apiversion, version : gst_req,
|
|
fallback : ['gst-plugins-base', 'pbutils_dep'])
|
|
gst_video_dep = dependency('gstreamer-video-' + apiversion, version : gst_req,
|
|
fallback : ['gst-plugins-base', 'video_dep'])
|
|
if host_machine.system() != 'windows'
|
|
gst_check_dep = dependency('gstreamer-check-1.0', version : gst_req,
|
|
required : get_option('tests'),
|
|
fallback : ['gstreamer', 'gst_check_dep'])
|
|
endif
|
|
|
|
glib_dep = dependency('glib-2.0', version : '>=2.32.0',
|
|
fallback: ['glib', 'libglib_dep'])
|
|
gmodule_dep = dependency('gmodule-2.0',
|
|
fallback: ['glib', 'libgmodule_dep'])
|
|
gio_dep = dependency('gio-2.0',
|
|
fallback: ['glib', 'libgio_dep'])
|
|
|
|
gtk_dep = dependency('gtk+-3.0', required: false)
|
|
mathlib = cc.find_library('m', required : false)
|
|
dl = cc.find_library('dl', required : false)
|
|
json_dep = dependency('json-glib-1.0',
|
|
fallback : ['json-glib', 'json_glib_dep'])
|
|
|
|
gst_c_args = ['-DHAVE_CONFIG_H', '-DGST_USE_UNSTABLE_API']
|
|
|
|
gir_init_section = [ '--add-init-section=extern void gst_init(gint*,gchar**);' + \
|
|
'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);', '--quiet']
|
|
gir = find_program('g-ir-scanner', required : get_option('introspection'))
|
|
build_gir = gir.found() and (not meson.is_cross_build() or get_option('introspection').enabled())
|
|
gnome = import('gnome')
|
|
|
|
if gst_dep.type_name() == 'internal'
|
|
gst_debug_disabled = not subproject('gstreamer').get_variable('gst_debug')
|
|
else
|
|
# We can't check that in the case of subprojects as we won't
|
|
# be able to build against an internal dependency (which is not built yet)
|
|
gst_debug_disabled = cc.has_header_symbol('gst/gstconfig.h', 'GST_DISABLE_GST_DEBUG', dependencies: gst_dep)
|
|
endif
|
|
|
|
if gst_debug_disabled and cc.has_argument('-Wno-unused')
|
|
add_project_arguments('-Wno-unused', language: 'c')
|
|
endif
|
|
|
|
warning_flags = [
|
|
'-Wmissing-declarations',
|
|
'-Wmissing-prototypes',
|
|
'-Wredundant-decls',
|
|
'-Wundef',
|
|
'-Wwrite-strings',
|
|
'-Wformat',
|
|
'-Wformat-security',
|
|
'-Winit-self',
|
|
'-Wmissing-include-dirs',
|
|
'-Waddress',
|
|
'-Wno-multichar',
|
|
'-Wdeclaration-after-statement',
|
|
'-Wvla',
|
|
'-Wpointer-arith',
|
|
]
|
|
|
|
foreach extra_arg : warning_flags
|
|
if cc.has_argument (extra_arg)
|
|
add_project_arguments([extra_arg], language: 'c')
|
|
endif
|
|
endforeach
|
|
|
|
pkgconfig = import('pkgconfig')
|
|
plugins_install_dir = join_paths(get_option('libdir'), 'gstreamer-1.0')
|
|
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
|
|
|
|
plugins = []
|
|
i18n = import('i18n')
|
|
|
|
python_mod = import('python')
|
|
python3 = python_mod.find_installation()
|
|
|
|
if get_option('validate')
|
|
subdir('validate')
|
|
endif
|
|
|
|
if get_option('debug_viewer')
|
|
subdir('debug-viewer')
|
|
endif
|
|
subdir('docs')
|
|
|
|
run_command(python3, '-c', 'import shutil; shutil.copy("hooks/multi-pre-commit.hook", ".git/hooks/pre-commit")')
|