Building & Installing
----
-With meson:
meson build && ninja -C build/
+ I
+HACKING
+-------
-With Autotools:
+While hacking on the code generator or the `.metadata` files, you will
+need to force code regeneration with `ninja update-code`, a full rebuild
+is triggered right after.
- ./autogen.sh --prefix=/usr && make install
+Updating to new GStreamer version
+--------------------------------
+
+* Make sure [bindinator] is installed on the system
+
+Make sure you are in an environement where latest `.gir` files are available (either install
+or through the `$GI_TYPELIB_PATH` env var).
+
+ ninja -C update-all
+
+* Verify newly generated code and `git add` files in `sources/generated/` and `ges/generated`
+* Commit
Supported Platforms
----
----
gstreamer-sharp is licensed under the [LGPL 2.1](https://www.gnu.org/licenses/lgpl-2.1.html)
-[bindinator]:https://github.com/gtk-sharp/bindinator
-[gtk-sharp]:https://github.com/gtk-sharp/gtk-sharp
+[bindinator]:https://github.com/GLibSharp/bindinator
+[gtk-sharp]:https://github.com/GLibSharp/GtlSharp
[gstreamer]: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/
subdir('samples')
bindinate = find_program('bindinate', required: false)
-
if bindinate.found()
- run_target('update-bindings',
+ run_target('bindinate_gstreamer',
command: [bindinate,
'--name=gstreamer', '--regenerate=true',
'--merge-with=GstApp-1.0,GstAudio-1.0,GstBase-1.0,GstController-1.0,GstFft-1.0,GstNet-1.0,GstPbutils-1.0,GstRiff-1.0,GstRtp-1.0,GstRtsp-1.0,GstSdp-1.0,GstTag-1.0,GstVideo-1.0',
'--gir=Gst-1.0']
)
- python3 = import('python3').find_python()
- run_target('update-ges-bindings',
+ run_target('bindinate_ges',
command: ['sh', '-c',
'''bindinate --name=gst-editing-services --regenerate=true --gir=GES-1.0 && mv @0@/sources/gst-editing-services-sharp-api.raw @0@/ges/gst-editing-services-api.raw '''.format(
meson.current_source_dir())
]
)
+ python3 = import('python3').find_python()
+ run_target('update-code', command: [find_program('update_sources.py')])
+ run_target('update-all', command: [find_program('update_sources.py'), 'bindinate'])
endif
+
--- /dev/null
+#!/usr/bin/env python3
+
+import subprocess
+import os
+import sys
+import shutil
+
+def accept_command(commands):
+ """Search @commands and returns the first found absolute path."""
+ for command in commands:
+ command = shutil.which(command)
+ if command:
+ return command
+
+ return None
+
+if __name__ == "__main__":
+ ninja = accept_command(["ninja", "ninja-build"])
+ buildroot = os.environ["MESON_BUILD_ROOT"]
+
+ bindinate = False
+ if len(sys.argv) > 1 and sys.argv[1] == "bindinate":
+ bindinate = True
+
+ print("Building all code")
+ subprocess.check_call([ninja, "-C", buildroot])
+
+ if bindinate:
+ print("Bindinate GStreamer")
+ subprocess.check_call([ninja, "-C", buildroot, "bindinate_gstreamer"])
+
+ print("Update GStreamer bindings")
+ subprocess.check_call([ninja, "-C", buildroot, "update_gstreamer_code"])
+
+ if bindinate:
+ print("Bindinate GES")
+ subprocess.check_call([ninja, "-C", buildroot, "bindinate_ges"])
+ print("Update GES bindings")
+ subprocess.check_call([ninja, "-C", buildroot, "update_ges_code"])
+
+ print("Building all code")
+ subprocess.check_call([ninja, "-C", buildroot])
\ No newline at end of file