aboutsummaryrefslogtreecommitdiffstats
path: root/wscript
diff options
context:
space:
mode:
Diffstat (limited to 'wscript')
-rw-r--r--wscript121
1 files changed, 121 insertions, 0 deletions
diff --git a/wscript b/wscript
new file mode 100644
index 0000000..4e27445
--- /dev/null
+++ b/wscript
@@ -0,0 +1,121 @@
+#!/usr/bin/env python
+import os
+import re
+import shutil
+import waflib.extras.autowaf as autowaf
+
+MDA_VERSION = '1.2.2'
+
+# Mandatory waf variables
+APPNAME = 'mda-lv2' # Package name for waf dist
+VERSION = MDA_VERSION # Package version for waf dist
+top = '.' # Source directory
+out = 'build' # Build directory
+
+def options(opt):
+ opt.load('compiler_cxx')
+ opt.load('lv2')
+ autowaf.set_options(opt)
+
+def configure(conf):
+ autowaf.display_header('MDA.lv2 Configuration')
+ conf.load('compiler_cxx', cache=True)
+ conf.load('lv2', cache=True)
+ conf.load('autowaf', cache=True)
+ autowaf.set_c_lang(conf, 'c99')
+
+ autowaf.check_pkg(conf, 'lv2', atleast_version='1.2.0', uselib_store='LV2')
+
+ autowaf.display_summary(conf)
+ autowaf.display_msg(conf, "LV2 bundle directory", conf.env.LV2DIR)
+ print('')
+
+def build(bld):
+ bundle = 'mda.lv2'
+
+ for i in bld.path.ant_glob('mda.lv2/[A-Z]*.ttl'):
+ bld(features = 'subst',
+ is_copy = True,
+ source = i,
+ target = 'mda.lv2/%s' % i.name,
+ install_path = '${LV2DIR}/mda.lv2')
+
+ # Make a pattern for shared objects without the 'lib' prefix
+ module_pat = re.sub('^lib', '', bld.env.cxxshlib_PATTERN)
+ module_ext = module_pat[module_pat.rfind('.'):]
+
+ # Build manifest by substitution
+ bld(features = 'subst',
+ source = 'mda.lv2/manifest.ttl.in',
+ target = bld.path.get_bld().make_node('mda.lv2/manifest.ttl'),
+ LIB_EXT = module_ext,
+ install_path = '${LV2DIR}/mda.lv2')
+
+ plugins = '''
+ Ambience
+ Bandisto
+ BeatBox
+ Combo
+ DX10
+ DeEss
+ Degrade
+ Delay
+ Detune
+ Dither
+ DubDelay
+ Dynamics
+ EPiano
+ Image
+ JX10
+ Leslie
+ Limiter
+ Loudness
+ MultiBand
+ Overdrive
+ Piano
+ RePsycho
+ RezFilter
+ RingMod
+ RoundPan
+ Shepard
+ Splitter
+ Stereo
+ SubSynth
+ TalkBox
+ TestTone
+ ThruZero
+ Tracker
+ Transient
+ VocInput
+ Vocoder
+ '''.split()
+
+ for p in plugins:
+ # Build plugin library
+ obj = bld(features = 'cxx cxxshlib',
+ source = ['src/mda%s.cpp' % p, 'lvz/wrapper.cpp'],
+ includes = ['.', './lvz', './src'],
+ name = p,
+ target = os.path.join(bundle, p),
+ install_path = '${LV2DIR}/' + bundle,
+ uselib = ['LV2'],
+ defines = ['PLUGIN_CLASS=mda%s' % p,
+ 'URI_PREFIX="http://drobilla.net/plugins/mda/"',
+ 'PLUGIN_URI_SUFFIX="%s"' % p,
+ 'PLUGIN_HEADER="src/mda%s.h"' % p])
+ obj.env.cxxshlib_PATTERN = module_pat
+
+ # Install data file
+ bld.install_files('${LV2DIR}/' + bundle, os.path.join(bundle, p + '.ttl'))
+
+def posts(ctx):
+ path = str(ctx.path.abspath())
+ autowaf.news_to_posts(
+ os.path.join(path, 'NEWS'),
+ {'title' : 'MDA.LV2',
+ 'description' : autowaf.get_blurb(os.path.join(path, 'README')),
+ 'dist_pattern' : 'http://download.drobilla.net/mda-lv2-%s.tar.bz2'},
+ { 'Author' : 'drobilla',
+ 'Tags' : 'LV2, MDA.lv2' },
+ os.path.join(out, 'posts'))
+