aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-08-02 18:37:57 +0000
committerDavid Robillard <d@drobilla.net>2012-08-02 18:37:57 +0000
commitbd1ba4a37fcd3f74935099127c0ed6c234ab7e5a (patch)
tree3737885f169ed4575deafeb86b89b09139b521df
parent5defc8ead1e8d996005b94741ecaf0fcec4e1482 (diff)
downloadlv2-bd1ba4a37fcd3f74935099127c0ed6c234ab7e5a.tar.xz
Clean up wscript files and use a simpler method of chopping 'lib' prefix.
-rw-r--r--ext.wscript22
-rw-r--r--lv2/lv2plug.in/ns/lv2core/wscript8
-rw-r--r--plugins/eg-amp.lv2/wscript27
-rw-r--r--plugins/eg-sampler.lv2/wscript30
-rw-r--r--plugins/eg-synth.lv2/wscript26
-rw-r--r--wscript63
6 files changed, 75 insertions, 101 deletions
diff --git a/ext.wscript b/ext.wscript
index e1d71c7..197f82e 100644
--- a/ext.wscript
+++ b/ext.wscript
@@ -39,11 +39,11 @@ def build(bld):
# Copy headers to URI-style include paths in build directory
for i in bld.path.ant_glob('*.h'):
- obj = bld(rule = link,
- name = 'link',
- cwd = 'build/lv2/%s' % path,
- source = '%s' % i,
- target = 'lv2/%s/%s' % (path, i))
+ bld(rule = link,
+ name = 'link',
+ cwd = 'build/lv2/%s' % path,
+ source = '%s' % i,
+ target = 'lv2/%s/%s' % (path, i))
if bld.env['BUILD_TESTS'] and bld.path.find_node('%s-test.c' % name):
test_lib = []
@@ -53,12 +53,12 @@ def build(bld):
test_cflags += ['-fprofile-arcs', '-ftest-coverage']
# Unit test program
- obj = bld(features = 'c cprogram',
- source = '%s-test.c' % name,
- lib = test_lib,
- target = '%s-test' % name,
- install_path = '',
- cflags = test_cflags)
+ bld(features = 'c cprogram',
+ source = '%s-test.c' % name,
+ lib = test_lib,
+ target = '%s-test' % name,
+ install_path = '',
+ cflags = test_cflags)
# Install bundle
bld.install_files(bundle_dir,
diff --git a/lv2/lv2plug.in/ns/lv2core/wscript b/lv2/lv2plug.in/ns/lv2core/wscript
index 85f0428..79f8bc2 100644
--- a/lv2/lv2plug.in/ns/lv2core/wscript
+++ b/lv2/lv2plug.in/ns/lv2core/wscript
@@ -3,8 +3,6 @@ import os
from waflib.extras import autowaf as autowaf
import waflib.Options as Options
-import waflib.Context as Context
-import waflib.Scripting as Scripting
import glob
# Version of this package (even if built as a child)
@@ -41,9 +39,9 @@ def configure(conf):
def build(bld):
# Header "library"
- obj = bld(export_includes = ['.'],
- name = 'liblv2core',
- target = 'lv2core')
+ bld(export_includes = ['.'],
+ name = 'liblv2core',
+ target = 'lv2core')
# Bundle (data)
bld.install_files('${LV2DIR}/lv2core.lv2', bld.path.ant_glob('*.ttl'))
diff --git a/plugins/eg-amp.lv2/wscript b/plugins/eg-amp.lv2/wscript
index b9c3c3a..615077b 100644
--- a/plugins/eg-amp.lv2/wscript
+++ b/plugins/eg-amp.lv2/wscript
@@ -1,5 +1,6 @@
#!/usr/bin/env python
from waflib.extras import autowaf as autowaf
+import re
# Variables for 'waf dist'
APPNAME = 'eg-amp.lv2'
@@ -26,51 +27,43 @@ def configure(conf):
if not autowaf.is_child():
autowaf.check_pkg(conf, 'lv2core', uselib_store='LV2CORE')
- # Set env['pluginlib_PATTERN']
- pat = conf.env['cshlib_PATTERN']
- if pat.startswith('lib'):
- pat = pat[3:]
- conf.env['pluginlib_PATTERN'] = pat
- conf.env['pluginlib_EXT'] = pat[pat.rfind('.'):]
-
autowaf.display_msg(conf, "LV2 bundle directory", conf.env['LV2DIR'])
print('')
def build(bld):
bundle = 'eg-amp.lv2'
+ # Make a pattern for shared objects without the 'lib' prefix
+ module_pat = re.sub('^lib', '', bld.env['cshlib_PATTERN'])
+ module_ext = module_pat[module_pat.rfind('.'):]
+
# Build manifest.ttl by substitution (for portable lib extension)
bld(features = 'subst',
source = 'manifest.ttl.in',
target = '%s/%s' % (bundle, 'manifest.ttl'),
install_path = '${LV2DIR}/%s' % bundle,
- LIB_EXT = bld.env['pluginlib_EXT'])
+ LIB_EXT = module_ext)
# Copy other data files to build bundle (build/eg-amp.lv2)
- for i in [ 'amp.ttl' ]:
+ for i in ['amp.ttl']:
bld(features = 'subst',
source = i,
target = '%s/%s' % (bundle, i),
install_path = '${LV2DIR}/%s' % bundle,
- LIB_EXT = bld.env['pluginlib_EXT'])
-
- # Create a build environment that builds module-style library names
- # e.g. eg-amp.so instead of libeg-amp.so
- # Note for C++ you must set cxxshlib_PATTERN instead
- penv = bld.env.derive()
- penv['cshlib_PATTERN'] = bld.env['pluginlib_PATTERN']
+ LIB_EXT = module_ext)
+ # Use LV2 headers from parent directory if building as a sub-project
includes = None
if autowaf.is_child:
includes = '../..'
# Build plugin library
obj = bld(features = 'c cshlib',
- env = penv,
source = 'amp.c',
name = 'amp',
target = '%s/amp' % bundle,
install_path = '${LV2DIR}/%s' % bundle,
uselib = 'LV2CORE',
includes = includes)
+ obj.env['cshlib_PATTERN'] = module_pat
diff --git a/plugins/eg-sampler.lv2/wscript b/plugins/eg-sampler.lv2/wscript
index 282c844..72717b8 100644
--- a/plugins/eg-sampler.lv2/wscript
+++ b/plugins/eg-sampler.lv2/wscript
@@ -1,5 +1,6 @@
#!/usr/bin/env python
from waflib.extras import autowaf as autowaf
+import re
# Variables for 'waf dist'
APPNAME = 'eg-sampler.lv2'
@@ -31,61 +32,52 @@ def configure(conf):
autowaf.check_pkg(conf, 'gtk+-2.0', uselib_store='GTK2',
atleast_version='2.18.0', mandatory=False)
- # Set env['pluginlib_PATTERN']
- pat = conf.env['cshlib_PATTERN']
- if pat.startswith('lib'):
- pat = pat[3:]
- conf.env['pluginlib_PATTERN'] = pat
- conf.env['pluginlib_EXT'] = pat[pat.rfind('.'):]
-
autowaf.display_msg(conf, "LV2 bundle directory", conf.env['LV2DIR'])
print('')
def build(bld):
bundle = 'eg-sampler.lv2'
+ # Make a pattern for shared objects without the 'lib' prefix
+ module_pat = re.sub('^lib', '', bld.env['cshlib_PATTERN'])
+ module_ext = module_pat[module_pat.rfind('.'):]
+
# Build manifest.ttl by substitution (for portable lib extension)
bld(features = 'subst',
source = 'manifest.ttl.in',
target = '%s/%s' % (bundle, 'manifest.ttl'),
install_path = '${LV2DIR}/%s' % bundle,
- LIB_EXT = bld.env['pluginlib_EXT'])
+ LIB_EXT = module_ext)
# Copy other data files to build bundle (build/eg-sampler.lv2)
- for i in [ 'sampler.ttl', 'click.wav' ]:
+ for i in ['sampler.ttl', 'click.wav']:
bld(rule = 'cp ${SRC} ${TGT}',
source = i,
target = '%s/%s' % (bundle, i),
install_path = '${LV2DIR}/%s' % bundle)
- # Create a build environment that builds module-style library names
- # e.g. eg-sampler.so instead of libeg-sampler.so
- # Note for C++ you must set cxxshlib_PATTERN instead
- penv = bld.env.derive()
- penv['cshlib_PATTERN'] = bld.env['pluginlib_PATTERN']
-
+ # Use LV2 headers from parent directory if building as a sub-project
includes = ['.']
if autowaf.is_child:
includes += ['../..']
# Build plugin library
obj = bld(features = 'c cshlib',
- env = penv,
- source = ['sampler.c'],
+ source = 'sampler.c',
name = 'sampler',
target = '%s/sampler' % bundle,
install_path = '${LV2DIR}/%s' % bundle,
use = 'SNDFILE LV2',
includes = includes)
+ obj.env['cshlib_PATTERN'] = module_pat
# Build UI library
if bld.is_defined('HAVE_GTK2'):
obj = bld(features = 'c cshlib',
- env = penv,
source = 'sampler_ui.c',
name = 'sampler_ui',
target = '%s/sampler_ui' % bundle,
install_path = '${LV2DIR}/%s' % bundle,
use = 'GTK2 LV2',
includes = includes)
-
+ obj.env['cshlib_PATTERN'] = module_pat
diff --git a/plugins/eg-synth.lv2/wscript b/plugins/eg-synth.lv2/wscript
index f1b8e2d..45e0c13 100644
--- a/plugins/eg-synth.lv2/wscript
+++ b/plugins/eg-synth.lv2/wscript
@@ -1,5 +1,6 @@
#!/usr/bin/env python
from waflib.extras import autowaf as autowaf
+import re
# Variables for 'waf dist'
APPNAME = 'eg-synth.lv2'
@@ -26,51 +27,42 @@ def configure(conf):
if not autowaf.is_child():
autowaf.check_pkg(conf, 'lv2core', uselib_store='LV2CORE')
- # Set env['pluginlib_PATTERN']
- pat = conf.env['cshlib_PATTERN']
- if pat.startswith('lib'):
- pat = pat[3:]
- conf.env['pluginlib_PATTERN'] = pat
- conf.env['pluginlib_EXT'] = pat[pat.rfind('.'):]
-
autowaf.display_msg(conf, "LV2 bundle directory", conf.env['LV2DIR'])
print('')
def build(bld):
bundle = APPNAME
+ # Make a pattern for shared objects without the 'lib' prefix
+ module_pat = re.sub('^lib', '', bld.env['cshlib_PATTERN'])
+ module_ext = module_pat[module_pat.rfind('.'):]
+
# Build manifest.ttl by substitution (for portable lib extension)
bld(features = 'subst',
source = 'manifest.ttl.in',
target = '%s/%s' % (bundle, 'manifest.ttl'),
install_path = '${LV2DIR}/%s' % bundle,
- LIB_EXT = bld.env['pluginlib_EXT'])
+ LIB_EXT = module_ext)
# Copy other data files to build bundle (build/eg-amp.lv2)
- for i in [ 'synth.ttl' ]:
+ for i in ['synth.ttl']:
bld(features = 'subst',
source = i,
target = '%s/%s' % (bundle, i),
install_path = '${LV2DIR}/%s' % bundle,
LIB_EXT = bld.env['pluginlib_EXT'])
- # Create a build environment that builds module-style library names
- # e.g. eg-amp.so instead of libeg-amp.so
- # Note for C++ you must set cxxshlib_PATTERN instead
- penv = bld.env.derive()
- penv['cshlib_PATTERN'] = bld.env['pluginlib_PATTERN']
-
+ # Use LV2 headers from parent directory if building as a sub-project
includes = None
if autowaf.is_child:
includes = '../..'
# Build plugin library
obj = bld(features = 'c cshlib',
- env = penv,
source = 'synth.c',
name = 'synth',
target = '%s/synth' % bundle,
install_path = '${LV2DIR}/%s' % bundle,
uselib = 'LV2CORE',
includes = includes)
-
+ obj.env['cshlib_PATTERN'] = module_pat
diff --git a/wscript b/wscript
index 5bafa90..61dd66c 100644
--- a/wscript
+++ b/wscript
@@ -110,14 +110,13 @@ def specgen(task):
spec = task.inputs[0]
path = os.path.dirname(spec.srcpath())
- indir = os.path.dirname(spec.abspath())
outdir = os.path.abspath(os.path.join(out, chop_lv2_prefix(path)))
bundle = str(outdir)
b = os.path.basename(outdir)
if not os.access(spec.abspath(), os.R_OK):
- print('warning: extension %s has no %s.ttl file' % (root, root))
+ print('warning: extension %s has no %s.ttl file' % (b, b))
return
try:
@@ -242,23 +241,23 @@ def build(bld):
bld.recurse(i)
# LV2 pkgconfig file
- obj = bld(features = 'subst',
- source = 'lv2.pc.in',
- target = 'lv2.pc',
- install_path = '${LIBDIR}/pkgconfig',
- PREFIX = bld.env['PREFIX'],
- INCLUDEDIR = bld.env['INCLUDEDIR'],
- VERSION = VERSION)
+ bld(features = 'subst',
+ source = 'lv2.pc.in',
+ target = 'lv2.pc',
+ install_path = '${LIBDIR}/pkgconfig',
+ PREFIX = bld.env['PREFIX'],
+ INCLUDEDIR = bld.env['INCLUDEDIR'],
+ VERSION = VERSION)
if bld.env['DOCS']:
# Build Doxygen documentation (and tags file)
autowaf.build_dox(bld, 'LV2', VERSION, top, out)
# Copy stylesheet to build directory
- obj = bld(rule = copy,
- name = 'copy',
- source = 'doc/style.css',
- target = 'aux/style.css')
+ bld(rule = copy,
+ name = 'copy',
+ source = 'doc/style.css',
+ target = 'aux/style.css')
index_files = []
@@ -267,21 +266,21 @@ def build(bld):
if i.startswith('lv2/lv2plug.in'):
# Copy spec files to build dir
for f in bld.path.ant_glob(i + '*.*'):
- obj = bld(rule = copy,
- name = 'copy',
- source = f,
- target = chop_lv2_prefix(f.srcpath()))
+ bld(rule = copy,
+ name = 'copy',
+ source = f,
+ target = chop_lv2_prefix(f.srcpath()))
base = i[len('lv2/lv2plug.in'):]
name = os.path.basename(i[:len(i)-1])
# Generate .htaccess file
- obj = bld(features = 'subst',
- source = 'doc/htaccess.in',
- target = os.path.join(base, '.htaccess'),
- install_path = None,
- NAME = name,
- BASE = base)
+ bld(features = 'subst',
+ source = 'doc/htaccess.in',
+ target = os.path.join(base, '.htaccess'),
+ install_path = None,
+ NAME = name,
+ BASE = base)
# Call lv2specgen for each spec
for i in bld.env['LV2_SUBDIRS']:
@@ -293,20 +292,20 @@ def build(bld):
bld.add_group() # Barrier (don't call lv2specgen in parallel)
# Call lv2specgen to generate spec docs
- obj = bld(rule = specgen,
- name = 'specgen',
- source = os.path.join(i, name + '.ttl'),
- target = ['%s%s.html' % (chop_lv2_prefix(i), name),
- index_file])
+ bld(rule = specgen,
+ name = 'specgen',
+ source = os.path.join(i, name + '.ttl'),
+ target = ['%s%s.html' % (chop_lv2_prefix(i), name),
+ index_file])
index_files.sort()
bld.add_group() # Barrier (wait for lv2specgen to build index)
# Build extension index
- obj = bld(rule = build_index,
- name = 'index',
- source = ['lv2/lv2plug.in/ns/index.html.in'] + index_files,
- target = 'ns/index.html')
+ bld(rule = build_index,
+ name = 'index',
+ source = ['lv2/lv2plug.in/ns/index.html.in'] + index_files,
+ target = 'ns/index.html')
def lint(ctx):
for i in (['lv2/lv2plug.in/ns/lv2core/lv2.h']