Add support for Meson as alternative/parallel build system
authorNirbheek Chauhan <nirbheek@centricular.com>
Fri, 12 Aug 2016 15:51:45 +0000 (21:21 +0530)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 9 Dec 2017 19:32:22 +0000 (19:32 +0000)
https://github.com/mesonbuild/meson

With contributions from:

Tim-Philipp Müller <tim@centricular.com>
Matej Knopp <matej.knopp@gmail.com>
Jussi Pakkanen <jpakkane@gmail.com> (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 [new file with mode: 0644]
gst-libs/gst/gl/meson.build [new file with mode: 0644]

diff --git a/gst-libs/gst/gl/gstglconfig.h.meson b/gst-libs/gst/gl/gstglconfig.h.meson
new file mode 100644 (file)
index 0000000..6726c84
--- /dev/null
@@ -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 <gst/gst.h>
+
+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 (file)
index 0000000..6c210de
--- /dev/null
@@ -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])