From 598f8e01215ac815c59f6b126a9468ed38f3897d Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Fri, 12 Aug 2016 21:21:45 +0530 Subject: [PATCH] Add support for Meson as alternative/parallel build system MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/mesonbuild/meson With contributions from: Tim-Philipp Müller Matej Knopp Jussi Pakkanen (original port) Highlights of the features provided are: * Faster builds on Linux (~40-50% faster) * The ability to build with MSVC on Windows * Generate Visual Studio project files * Generate XCode project files * Much faster builds on Windows (on-par with Linux) * Seriously fast configure and building on embedded ... and many more. For more details see: http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html Building with Meson should work on both Linux and Windows, but may need a few more tweaks on other operating systems. --- gst-libs/gst/gl/gstglconfig.h.meson | 40 +++++++++++++ gst-libs/gst/gl/meson.build | 92 +++++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 gst-libs/gst/gl/gstglconfig.h.meson create mode 100644 gst-libs/gst/gl/meson.build diff --git a/gst-libs/gst/gl/gstglconfig.h.meson b/gst-libs/gst/gl/gstglconfig.h.meson new file mode 100644 index 0000000000..6726c84384 --- /dev/null +++ b/gst-libs/gst/gl/gstglconfig.h.meson @@ -0,0 +1,40 @@ +/* gstglconfig.h + * + * This is a generated file. Please modify `configure.ac' + */ + +#ifndef __GST_GL_CONFIG_H__ +#define __GST_GL_CONFIG_H__ + +#include + +G_BEGIN_DECLS + + +#mesondefine GST_GL_HAVE_OPENGL +#mesondefine GST_GL_HAVE_GLES2 +#mesondefine GST_GL_HAVE_GLES3 + +#mesondefine GST_GL_HAVE_WINDOW_X11 +#mesondefine GST_GL_HAVE_WINDOW_COCOA +#mesondefine GST_GL_HAVE_WINDOW_WIN32 +#mesondefine GST_GL_HAVE_WINDOW_WAYLAND +#mesondefine GST_GL_HAVE_WINDOW_ANDROID +#mesondefine GST_GL_HAVE_WINDOW_DISPMANX +#mesondefine GST_GL_HAVE_WINDOW_EAGL + +#mesondefine GST_GL_HAVE_PLATFORM_EGL +#mesondefine GST_GL_HAVE_PLATFORM_GLX +#mesondefine GST_GL_HAVE_PLATFORM_WGL +#mesondefine GST_GL_HAVE_PLATFORM_CGL +#mesondefine GST_GL_HAVE_PLATFORM_EAGL + +#mesondefine GST_GL_HAVE_GLEGLIMAGEOES +#mesondefine GST_GL_HAVE_GLCHAR +#mesondefine GST_GL_HAVE_GLSIZEIPTR +#mesondefine GST_GL_HAVE_GLINTPTR + + +G_END_DECLS + +#endif /* __GST_GL_CONFIG_H__ */ diff --git a/gst-libs/gst/gl/meson.build b/gst-libs/gst/gl/meson.build new file mode 100644 index 0000000000..6c210de26e --- /dev/null +++ b/gst-libs/gst/gl/meson.build @@ -0,0 +1,92 @@ +gl_sources = [ + 'gstgldisplay.c', + 'gstglcontext.c', + 'gstglmemory.c', + 'gstglbufferpool.c', + 'gstglfilter.c', + 'gstglshader.c', + 'gstglshadervariables.c', + 'gstglcolorconvert.c', + 'gstgldownload.c', + 'gstglupload.c', + 'gstgluploadmeta.c', + 'gstglwindow.c', + 'gstglapi.c', + 'gstglfeature.c', + 'gstglutils.c', + 'gstglframebuffer.c', +] + +gl_headers = [ + 'gl.h', + 'gstgl_enums.h', + 'gstgl_fwd.h', + 'gstglapi.h', + 'gstglbasefilter.h', + 'gstglbasememory.h', + 'gstglbuffer.h', + 'gstglbufferpool.h', + 'gstglcolorconvert.h', + 'gstglcontext.h', + 'gstglcontrolbindingproxy.h', + 'gstgldebug.h', + 'gstgldisplay.h', + 'gstglfeature.h', + 'gstglfilter.h', + 'gstglformat.h', + 'gstglframebuffer.h', + 'gstglmemory.h', + 'gstglmemorypbo.h', + 'gstgloverlaycompositor.h', + 'gstglquery.h', + 'gstglshader.h', + 'gstglshaderstrings.h', + 'gstglsl.h', + 'gstglslstage.h', + 'gstglsyncmeta.h', + 'gstglupload.h', + 'gstglutils.h', + 'gstglviewconvert.h', + 'gstglwindow.h', +] +# FIXME: Install glprototypes +install_headers(gl_headers, subdir : 'gstreamer-1.0/gst/gl') + +glconf = configuration_data() + +glconf.set10('GST_GL_HAVE_OPENGL', gl_dep.found()) + +if x11_dep.found() + gl_sources += [ + 'x11/gstgldisplay_x11.c', + 'x11/gstglwindow_x11.c', + 'x11/x11_event_source.c', + 'x11/gstglcontext_glx.c', +] + glconf.set('GST_GL_HAVE_WINDOW_X11', 1) + glconf.set('GST_GL_HAVE_PLATFORM_GLX', 1) +endif + +# Add rest of gl config here. + +configure_file(input : 'gstglconfig.h.meson', + output : 'gstglconfig.h', + install_dir : get_option('libdir') + '/gstreamer-1.0/include/gst/gl', + configuration : glconf) + +gstgl = library('gstgl-' + api_version, + gl_sources, + c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API'], + include_directories : [configinc, libsinc], + version : libversion, + soversion : soversion, + install : true, + dependencies : [gstbase_dep, gstvideo_dep], + # FIXME: This symbol list is generated on Linux, so this is wrong for Windows + vs_module_defs: vs_module_defs_dir + 'libgstgl.def', +) +# TODO: generate gir + +gstgl_dep = declare_dependency(link_with : gstgl, + include_directories : [libsinc], + dependencies : [gstbase_dep, gstvideo_dep])