meson: build wildmidi plugin
authorTim-Philipp Müller <tim@centricular.com>
Sun, 16 Dec 2018 18:07:48 +0000 (18:07 +0000)
committerSebastian Dröge <slomo@coaxion.net>
Mon, 17 Dec 2018 09:12:53 +0000 (09:12 +0000)
ext/meson.build
ext/wildmidi/meson.build [new file with mode: 0644]
meson_options.txt

index 9e718e2..9a5230c 100644 (file)
@@ -52,7 +52,6 @@ subdir('spandsp')
 subdir('srt')
 subdir('srtp')
 #subdir('teletextdec')
-#subdir('wildmidi')
 subdir('ttml')
 subdir('voaacenc')
 #subdir('voamrwbenc')
@@ -61,6 +60,7 @@ subdir('wayland')
 subdir('webrtc')
 subdir('webrtcdsp')
 subdir('webp')
+subdir('wildmidi')
 subdir('wpe')
 subdir('x265')
 subdir('zbar')
diff --git a/ext/wildmidi/meson.build b/ext/wildmidi/meson.build
new file mode 100644 (file)
index 0000000..902e066
--- /dev/null
@@ -0,0 +1,32 @@
+if get_option('wildmidi').disabled()
+  subdir_done()
+endif
+
+# Recent versions ship a pkg-config file, so try that first
+wildmidi_dep = dependency('WildMIDI', version: '>= 0.4.2', required: false)
+
+if not wildmidi_dep.found() and cc.has_header ('wildmidi_lib.h')
+  wildmidi_ver_maj = cc.get_define('LIBWILDMIDI_VER_MAJOR', prefix: '#include <wildmidi_lib.h>')
+  wildmidi_ver_min = cc.get_define('LIBWILDMIDI_VER_MINOR', prefix: '#include <wildmidi_lib.h>')
+  wildmidi_ver_maj = ''.join(wildmidi_ver_maj.split('L')).to_int() # '0L' -> 0
+  wildmidi_ver_min = ''.join(wildmidi_ver_min.split('L')).to_int() # '4L' -> 4
+  if wildmidi_ver_maj == 0 and wildmidi_ver_min >= 4
+    wildmidi_dep = cc.find_library('WildMidi', required: false)
+  else
+    message('WildMidi version too old, need >= 0.4.x')
+  endif
+endif
+
+if wildmidi_dep.found()
+  gstwildmidi = library('gstwildmidi',
+    'gstwildmididec.c',
+    c_args: gst_plugins_bad_args,
+    include_directories: [configinc],
+    dependencies: [gstaudio_dep, gstbadaudio_dep, wildmidi_dep],
+    install: true,
+    install_dir: plugins_install_dir,
+  )
+  pkgconfig.generate(gstwildmidi, install_dir: plugins_pkgconfig_install_dir)
+elif get_option('wildmidi').enabled()
+  error('WildMidi plugin explicitly enabled, but required library or headers not found.')
+endif
index e8d2ca9..b2cadd6 100644 (file)
@@ -144,6 +144,7 @@ option('wasapi', type : 'feature', value : 'auto', description : 'Windows Audio
 option('webp', type : 'feature', value : 'auto', description : 'WebP image codec plugin')
 option('webrtc', type : 'feature', value : 'auto', description : 'WebRTC audio/video network bin plugin')
 option('webrtcdsp', type : 'feature', value : 'auto', description : 'Plugin with various audio filters provided by the WebRTC audio processing library')
+option('wildmidi', type : 'feature', value : 'auto', description : 'WildMidi midi soft synth plugin')
 option('winks', type : 'feature', value : 'auto', description : 'Windows Kernel Streaming video source plugin')
 option('winscreencap', type : 'feature', value : 'auto', description : 'Windows Screen Capture video source plugin')
 option('x265', type : 'feature', value : 'auto', description : 'HEVC/H.265 video encoder plugin')