mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-06-26 01:40:38 +00:00
We have notified application developers this would happen a long time ago and python2 is going to be deprecated very soon now, before 1.18 is going to be released.
97 lines
3.5 KiB
Meson
97 lines
3.5 KiB
Meson
project('gst-python', 'c', 'cpp',
|
|
version : '1.17.0.1',
|
|
meson_version : '>= 0.46.0',
|
|
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]
|
|
gst_version_minor = version_arr[1]
|
|
api_version = '@0@.0'.format(gst_version_major)
|
|
|
|
add_project_arguments('-DHAVE_CONFIG_H', language: 'c')
|
|
|
|
gst_req = '>= @0@.@1@.0'.format(gst_version_major, gst_version_minor)
|
|
|
|
gst_dep = dependency('gstreamer-1.0', version : gst_req,
|
|
fallback : ['gstreamer', 'gst_dep'])
|
|
gstbase_dep = dependency('gstreamer-base-1.0', version : gst_req,
|
|
fallback : ['gstreamer', 'gst_base_dep'])
|
|
gmodule_dep = dependency('gmodule-2.0')
|
|
pygobject_dep = dependency('pygobject-3.0', fallback: ['pygobject', 'pygobject_dep'], version : '>= 3.8')
|
|
|
|
pymod = import('python')
|
|
python = pymod.find_installation(get_option('python'))
|
|
if python.language_version().version_compare('<3.0')
|
|
error('Python2 is not supported anymore, please port your code to python3 (@0@ specified)'.format(python.language_version()))
|
|
endif
|
|
python_dep = python.dependency(required : true)
|
|
|
|
python_abi_flags = python.get_variable('ABIFLAGS', '')
|
|
pylib_loc = get_option('libpython-dir')
|
|
if pylib_loc == ''
|
|
check_path_exists = 'import os, sys; assert(os.path.exists(sys.argv[1]))'
|
|
pylib_loc = python.get_variable('LIBPL', '')
|
|
if host_machine.system() != 'windows'
|
|
pylib_ldlibrary = python.get_variable('LDLIBRARY', '')
|
|
if host_machine.system() == 'darwin'
|
|
# OSX is a pain. Python as shipped by apple installs libpython in /usr/lib
|
|
# so we hardcode that. Other systems can use -Dlibpythondir to
|
|
# override this.
|
|
pylib_loc = '/usr/lib'
|
|
else
|
|
if run_command(python, '-c', check_path_exists, join_paths(pylib_loc, pylib_ldlibrary)).returncode() != 0
|
|
# Workaround for Fedora
|
|
pylib_loc = python.get_variable('LIBDIR', '')
|
|
message('pylib_loc = @0@'.format(pylib_loc))
|
|
endif
|
|
endif
|
|
|
|
assert(
|
|
run_command(python, '-c', check_path_exists, join_paths(pylib_loc, pylib_ldlibrary)).returncode() == 0,
|
|
'Python dynamic library path could not be determined'
|
|
)
|
|
endif
|
|
endif
|
|
|
|
message('python_abi_flags = @0@'.format(python_abi_flags))
|
|
message('pylib_loc = @0@'.format(pylib_loc))
|
|
|
|
pygi_override_dir = get_option('pygi-overrides-dir')
|
|
|
|
if pygi_override_dir == ''
|
|
pygi_override_dir = python.get_install_dir(
|
|
subdir : join_paths('gi', 'overrides')
|
|
)
|
|
endif
|
|
|
|
message('pygobject overrides directory = @0@'.format(pygi_override_dir))
|
|
|
|
pylib_suffix = 'so'
|
|
if host_machine.system() == 'windows'
|
|
pylib_suffix = 'dll'
|
|
elif host_machine.system() == 'darwin'
|
|
pylib_suffix = 'dylib'
|
|
endif
|
|
cdata = configuration_data()
|
|
cdata.set('PACKAGE', '"gst-python"')
|
|
cdata.set('VERSION', '"@0@"'.format(gst_version))
|
|
cdata.set('GST_PACKAGE_NAME', '"GStreamer Python"')
|
|
cdata.set('PACKAGE_NAME', '"GStreamer Python"')
|
|
cdata.set('GST_API_VERSION', '"@0@"'.format(api_version))
|
|
cdata.set('PLUGINDIR', '"@0@/gstreamer-1.0"'.format(get_option('libdir')))
|
|
cdata.set('PY_LIB_LOC', '"@0@"'.format(pylib_loc))
|
|
cdata.set('PY_ABI_FLAGS', '"@0@"'.format(python_abi_flags))
|
|
cdata.set('PY_LIB_SUFFIX', '"@0@"'.format(pylib_suffix))
|
|
cdata.set('PYTHON_VERSION', '"@0@"'.format(python_dep.version()))
|
|
configure_file(output : 'config.h', configuration : cdata)
|
|
configinc = include_directories('.')
|
|
|
|
subdir('gi')
|
|
subdir('plugin')
|
|
subdir('testsuite')
|
|
|
|
run_command(python, '-c', 'import shutil; shutil.copy("hooks/pre-commit.hook", ".git/hooks/pre-commit")')
|