mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 03:35:21 +00:00
Add support for Meson as alternative/parallel build system
https://github.com/mesonbuild/meson
This commit is contained in:
parent
e9cab27226
commit
a353e50747
9 changed files with 271 additions and 0 deletions
16
config.h.meson
Normal file
16
config.h.meson
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
#mesondefine ENABLE_NLS
|
||||||
|
#mesondefine GETTEXT_PACKAGE
|
||||||
|
#mesondefine GST_API_VERSION
|
||||||
|
#mesondefine GST_LICENSE
|
||||||
|
#mesondefine GST_PACKAGE_NAME
|
||||||
|
#mesondefine GST_PACKAGE_ORIGIN
|
||||||
|
#mesondefine GST_PACKAGE_RELEASE_DATETIME
|
||||||
|
#mesondefine LOCALEDIR
|
||||||
|
#mesondefine PACKAGE
|
||||||
|
#mesondefine PACKAGE_BUGREPORT
|
||||||
|
#mesondefine PACKAGE_NAME
|
||||||
|
#mesondefine PACKAGE_STRING
|
||||||
|
#mesondefine PACKAGE_TARNAME
|
||||||
|
#mesondefine PACKAGE_URL
|
||||||
|
#mesondefine PACKAGE_VERSION
|
||||||
|
#mesondefine VERSION
|
35
examples/meson.build
Normal file
35
examples/meson.build
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
examples = [
|
||||||
|
'test-appsrc',
|
||||||
|
'test-auth',
|
||||||
|
'test-launch',
|
||||||
|
'test-mp4',
|
||||||
|
'test-multicast2',
|
||||||
|
'test-multicast',
|
||||||
|
'test-netclock',
|
||||||
|
'test-netclock-client',
|
||||||
|
'test-ogg',
|
||||||
|
'test-readme',
|
||||||
|
'test-record-auth',
|
||||||
|
'test-record',
|
||||||
|
'test-sdp',
|
||||||
|
'test-uri',
|
||||||
|
'test-video',
|
||||||
|
'test-video-rtx',
|
||||||
|
]
|
||||||
|
|
||||||
|
foreach example : examples
|
||||||
|
executable(example, '@0@.c'.format(example),
|
||||||
|
c_args : rtspserver_args,
|
||||||
|
include_directories : rtspserver_incs,
|
||||||
|
dependencies : [glib_dep, gst_dep, gstnet_dep, gst_rtsp_server_dep],
|
||||||
|
install: false)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
cgroup_dep = dependency('libcgroup', version : '>= 0.26', required : false)
|
||||||
|
if cgroup_dep.found()
|
||||||
|
executable('test-cgroups', 'test-cgroups.c',
|
||||||
|
c_args : rtspserver_args,
|
||||||
|
include_directories : rtspserver_incs,
|
||||||
|
dependencies : [glib_dep, gst_dep, gstnet_dep, gst_rtsp_server_dep, cgroup_dep],
|
||||||
|
install: false)
|
||||||
|
endif
|
2
gst/meson.build
Normal file
2
gst/meson.build
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
subdir('rtsp-server')
|
||||||
|
subdir('rtsp-sink')
|
58
gst/rtsp-server/meson.build
Normal file
58
gst/rtsp-server/meson.build
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
rtsp_server_sources = [
|
||||||
|
'rtsp-address-pool.c',
|
||||||
|
'rtsp-auth.c',
|
||||||
|
'rtsp-client.c',
|
||||||
|
'rtsp-context.c',
|
||||||
|
'rtsp-media.c',
|
||||||
|
'rtsp-media-factory.c',
|
||||||
|
'rtsp-media-factory-uri.c',
|
||||||
|
'rtsp-mount-points.c',
|
||||||
|
'rtsp-params.c',
|
||||||
|
'rtsp-permissions.c',
|
||||||
|
'rtsp-sdp.c',
|
||||||
|
'rtsp-server.c',
|
||||||
|
'rtsp-session.c',
|
||||||
|
'rtsp-session-media.c',
|
||||||
|
'rtsp-session-pool.c',
|
||||||
|
'rtsp-stream.c',
|
||||||
|
'rtsp-stream-transport.c',
|
||||||
|
'rtsp-thread-pool.c',
|
||||||
|
'rtsp-token.c',
|
||||||
|
]
|
||||||
|
|
||||||
|
rtsp_server_headers = [
|
||||||
|
'rtsp-auth.h',
|
||||||
|
'rtsp-address-pool.h',
|
||||||
|
'rtsp-context.h',
|
||||||
|
'rtsp-params.h',
|
||||||
|
'rtsp-sdp.h',
|
||||||
|
'rtsp-thread-pool.h',
|
||||||
|
'rtsp-media.h',
|
||||||
|
'rtsp-media-factory.h',
|
||||||
|
'rtsp-media-factory-uri.h',
|
||||||
|
'rtsp-mount-points.h',
|
||||||
|
'rtsp-permissions.h',
|
||||||
|
'rtsp-stream.h',
|
||||||
|
'rtsp-stream-transport.h',
|
||||||
|
'rtsp-session.h',
|
||||||
|
'rtsp-session-media.h',
|
||||||
|
'rtsp-session-pool.h',
|
||||||
|
'rtsp-token.h',
|
||||||
|
'rtsp-client.h',
|
||||||
|
'rtsp-server.h',
|
||||||
|
]
|
||||||
|
install_headers(rtsp_server_headers, subdir : 'gstreamer-1.0/gst/rtsp-server')
|
||||||
|
|
||||||
|
gst_rtsp_server = library('gstrtspserver-@0@'.format(api_version),
|
||||||
|
rtsp_server_sources,
|
||||||
|
include_directories : rtspserver_incs,
|
||||||
|
c_args: rtspserver_args,
|
||||||
|
version : libversion,
|
||||||
|
soversion : soversion,
|
||||||
|
install : true,
|
||||||
|
dependencies : [gstrtsp_dep, gstrtp_dep, gstsdp_dep, gstnet_dep, gstapp_dep],
|
||||||
|
)
|
||||||
|
|
||||||
|
gst_rtsp_server_dep = declare_dependency(link_with : gst_rtsp_server,
|
||||||
|
include_directories : rtspserver_incs,
|
||||||
|
dependencies : [gstrtsp_dep, gstrtp_dep, gstsdp_dep, gstnet_dep, gstapp_dep])
|
12
gst/rtsp-sink/meson.build
Normal file
12
gst/rtsp-sink/meson.build
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
rtspsink_sources = [
|
||||||
|
'gstrtspclientsink.c',
|
||||||
|
'plugin.c',
|
||||||
|
]
|
||||||
|
|
||||||
|
rtspsink = library('gstrtspclientsink',
|
||||||
|
rtspsink_sources,
|
||||||
|
c_args : rtspserver_args,
|
||||||
|
include_directories : rtspserver_incs,
|
||||||
|
dependencies : [gstrtsp_dep, gstsdp_dep, gst_rtsp_server_dep],
|
||||||
|
install : true,
|
||||||
|
install_dir : plugins_install_dir)
|
58
meson.build
Normal file
58
meson.build
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
project('gst-rtsp-server', 'c',
|
||||||
|
version : '1.9.1.1',
|
||||||
|
meson_version : '>= 0.33.0',
|
||||||
|
default_options : ['warning_level=1', 'buildtype=debugoptimized'])
|
||||||
|
|
||||||
|
gst_version = meson.project_version()
|
||||||
|
version_arr = gst_version.split('.')
|
||||||
|
gst_version_major = version_arr[0]
|
||||||
|
gst_version_minor = version_arr[1]
|
||||||
|
gst_version_micro = version_arr[2]
|
||||||
|
if version_arr.length() == 4
|
||||||
|
gst_version_nano = version_arr[3]
|
||||||
|
else
|
||||||
|
gst_version_nano = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
glib_req = '>= 2.40.0'
|
||||||
|
gst_req = '>= @0@.@1@.0'.format(gst_version_major, gst_version_minor)
|
||||||
|
|
||||||
|
api_version = '1.0'
|
||||||
|
soversion = 0
|
||||||
|
# maintaining compatibility with the previous libtool versioning
|
||||||
|
# current = minor * 100 + micro
|
||||||
|
libversion = '@0@.@1@.0'.format(soversion, gst_version_minor.to_int() * 100 + gst_version_micro.to_int())
|
||||||
|
|
||||||
|
plugins_install_dir = '@0@/gstreamer-1.0'.format(get_option('libdir'))
|
||||||
|
|
||||||
|
cdata = configuration_data()
|
||||||
|
cdata.set('GETTEXT_PACKAGE', '"gst-rtsp-server-1.0"')
|
||||||
|
cdata.set('PACKAGE', '"gst-rtsp-server"')
|
||||||
|
cdata.set('VERSION', '"@0@"'.format(gst_version))
|
||||||
|
cdata.set('PACKAGE_VERSION', '"@0@"'.format(gst_version))
|
||||||
|
cdata.set('GST_PACKAGE_NAME', '"GStreamer RTSP Server Library"')
|
||||||
|
cdata.set('GST_PACKAGE_ORIGIN', '"Unknown package origin"')
|
||||||
|
#cdata.set('GST_API_VERSION', '"@0@"'.format(api_version))
|
||||||
|
cdata.set('GST_LICENSE', '"LGPL"')
|
||||||
|
|
||||||
|
configure_file(input : 'config.h.meson',
|
||||||
|
output : 'config.h',
|
||||||
|
configuration : cdata)
|
||||||
|
|
||||||
|
rtspserver_args = ['-DHAVE_CONFIG_H']
|
||||||
|
|
||||||
|
rtspserver_incs = include_directories('gst/rtsp-server', '.')
|
||||||
|
|
||||||
|
glib_dep = dependency('glib-2.0', version : glib_req)
|
||||||
|
gst_dep = dependency('gstreamer-1.0', version : gst_req)
|
||||||
|
gstcheck_dep = dependency('gstreamer-check-1.0', version : gst_req)
|
||||||
|
gstrtsp_dep = dependency('gstreamer-rtsp-1.0', version : gst_req)
|
||||||
|
gstrtp_dep = dependency('gstreamer-rtp-1.0', version : gst_req)
|
||||||
|
gstsdp_dep = dependency('gstreamer-sdp-1.0', version : gst_req)
|
||||||
|
gstapp_dep = dependency('gstreamer-app-1.0', version : gst_req)
|
||||||
|
gstnet_dep = dependency('gstreamer-net-1.0', version : gst_req)
|
||||||
|
|
||||||
|
subdir('gst')
|
||||||
|
subdir('tests')
|
||||||
|
subdir('examples')
|
||||||
|
subdir('pkgconfig')
|
17
pkgconfig/meson.build
Normal file
17
pkgconfig/meson.build
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
pkgconf = configuration_data()
|
||||||
|
|
||||||
|
pkgconf.set('prefix', get_option('prefix'))
|
||||||
|
pkgconf.set('exec_prefix', '${prefix}')
|
||||||
|
pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir')))
|
||||||
|
pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir')))
|
||||||
|
pkgconf.set('GST_API_VERSION', api_version)
|
||||||
|
pkgconf.set('VERSION', gst_version)
|
||||||
|
|
||||||
|
pkg_install_dir = '@0@/pkgconfig'.format(get_option('libdir'))
|
||||||
|
|
||||||
|
# FIXME: -uninstalled.pc files (if still needed?)
|
||||||
|
configure_file(input : 'gstreamer-rtsp-server.pc.in',
|
||||||
|
output : 'gstreamer-rtsp-server-1.0.pc',
|
||||||
|
configuration : pkgconf,
|
||||||
|
install_dir : pkg_install_dir,
|
||||||
|
)
|
72
tests/check/meson.build
Normal file
72
tests/check/meson.build
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
# FIXME: something is wrong with plugin paths / whitelisting here
|
||||||
|
|
||||||
|
test_plugins_modules = [
|
||||||
|
['gstreamer-1.0', true],
|
||||||
|
['gstreamer-plugins-base-1.0', true],
|
||||||
|
['gstreamer-plugins-good-1.0', false],
|
||||||
|
['gstreamer-plugins-bad-1.0', false],
|
||||||
|
]
|
||||||
|
test_plugin_path = ''
|
||||||
|
foreach m : test_plugins_modules
|
||||||
|
m_name = m[0]
|
||||||
|
m_required = m[1]
|
||||||
|
runcmd = run_command('pkg-config', '--variable=pluginsdir', m_name + ' ' + gst_req)
|
||||||
|
if runcmd.returncode() == 0
|
||||||
|
module_plugin_path = runcmd.stdout().strip()
|
||||||
|
message('Using '+ m_name + ' plugins in ' + module_plugin_path)
|
||||||
|
if test_plugin_path == ''
|
||||||
|
test_plugin_path = module_plugin_path
|
||||||
|
elif module_plugin_path != test_plugin_path
|
||||||
|
test_plugin_path = test_plugin_path + ':' + module_plugin_path
|
||||||
|
endif
|
||||||
|
elif m_required
|
||||||
|
error('Could not determine ' + m_name + ' plugins directory for unit tests.')
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
test_c_args = [
|
||||||
|
'-UG_DISABLE_ASSERT',
|
||||||
|
'-UG_DISABLE_CAST_CHECKS',
|
||||||
|
'-DGST_CHECK_TEST_ENVIRONMENT_BEACON="GST_PLUGIN_LOADING_WHITELIST"',
|
||||||
|
]
|
||||||
|
|
||||||
|
test_env = [
|
||||||
|
'GST_PLUGIN_SYSTEM_PATH_1_0=',
|
||||||
|
'GST_PLUGIN_PATH_1_0=' + meson.build_root() + '/gst/rtsp-sink:' + test_plugin_path,
|
||||||
|
'GST_PLUGIN_LOADING_WHITELIST=gstreamer:gst-plugins-base:gst-plugins-good:gst-plugins-bad:gst-rtsp-server',
|
||||||
|
'CK_DEFAULT_TIMEOUT=120',
|
||||||
|
]
|
||||||
|
|
||||||
|
rtsp_server_tests = [
|
||||||
|
'gst/addresspool',
|
||||||
|
'gst/client',
|
||||||
|
'gst/mountpoints',
|
||||||
|
'gst/mediafactory',
|
||||||
|
'gst/media',
|
||||||
|
'gst/permissions',
|
||||||
|
'gst/rtspserver',
|
||||||
|
'gst/rtspclientsink',
|
||||||
|
'gst/sessionmedia',
|
||||||
|
'gst/sessionpool',
|
||||||
|
'gst/stream',
|
||||||
|
'gst/threadpool',
|
||||||
|
'gst/token',
|
||||||
|
]
|
||||||
|
|
||||||
|
all_env = ''
|
||||||
|
foreach e : test_env
|
||||||
|
all_env = all_env + ' ' + e
|
||||||
|
endforeach
|
||||||
|
message('test env:' + all_env)
|
||||||
|
|
||||||
|
foreach test_name : rtsp_server_tests
|
||||||
|
exe = executable(test_name, '@0@.c'.format(test_name),
|
||||||
|
include_directories : rtspserver_incs,
|
||||||
|
c_args : rtspserver_args + test_c_args,
|
||||||
|
dependencies : [gstcheck_dep, gstrtsp_dep, gstrtp_dep, gst_rtsp_server_dep]
|
||||||
|
)
|
||||||
|
test(test_name, exe,
|
||||||
|
env : test_env + [ 'GST_REGISTRY=@0@/@1@.registry'.format(meson.current_build_dir(), test_name) ],
|
||||||
|
timeout : 120,
|
||||||
|
)
|
||||||
|
endforeach
|
1
tests/meson.build
Normal file
1
tests/meson.build
Normal file
|
@ -0,0 +1 @@
|
||||||
|
#subdir('check') # FIXME
|
Loading…
Reference in a new issue