summaryrefslogtreecommitdiffstats
path: root/extras/lv2.py
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-03-17 17:31:05 +0100
committerDavid Robillard <d@drobilla.net>2019-03-17 17:31:05 +0100
commit406f89271452fdb573c7e28113b1ed08ff2b4eda (patch)
treed2dcbaf61f3749f73dc7a5e10d3fc6cd5e6e129a /extras/lv2.py
parent7983a5aae615290d04fd43cbc2752f8cf4a46d10 (diff)
downloadsuil-406f89271452fdb573c7e28113b1ed08ff2b4eda.tar.gz
suil-406f89271452fdb573c7e28113b1ed08ff2b4eda.tar.bz2
suil-406f89271452fdb573c7e28113b1ed08ff2b4eda.zip
Squashed 'waflib/' changes from 915dcb1..e7a29b6
e7a29b6 Upgrade to waf 2.0.15 8280f9d Add command for running executables from the build directory 8073c1a Make make_simple_dox() safe in case of exception 70d03b8 Avoid use of global counter hacks for configuration display b7d689a Rewrite test framework 94deadf Automatically add options and move add_flags() to options context f4259ee Reduce system include path noise 927b608 Automatically display configuration header c44b8f3 Set line justification from a constant in the wscript a48e26f Automatically detect if wscript has a test hook ef66724 Save runtime variables in the environment 63bcbcd Clean up TestContext b1d9505 Add ExecutionContext for setting runtime environment 387c1df Add show_diff() and test_file_equals() utilities 29d4d29 Fix in-tree library paths 9fde01f Add custom configuration context 6d3612f Add lib_path_name constant git-subtree-dir: waflib git-subtree-split: e7a29b6b9b2f842314244c23c14d8f8f560904e1
Diffstat (limited to 'extras/lv2.py')
-rw-r--r--extras/lv2.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/extras/lv2.py b/extras/lv2.py
new file mode 100644
index 0000000..ffcb2e7
--- /dev/null
+++ b/extras/lv2.py
@@ -0,0 +1,75 @@
+import os
+import sys
+
+from waflib import Logs
+from waflib import Options
+
+def options(opt):
+ conf_opts = opt.get_option_group('Configuration options')
+ conf_opts.add_option('--lv2-user', action='store_true', default=False, dest='lv2_user',
+ help='install LV2 bundles to user location')
+ conf_opts.add_option('--lv2dir', type='string',
+ help='LV2 bundles [Default: LIBDIR/lv2]')
+
+def register_lv2_path(conf, path):
+ """Return the default LV2_PATH to use for this system"""
+ if 'LV2_PATH' not in conf.run_env and 'LV2_PATH' not in os.environ:
+ conf.run_env['LV2_PATH'] = [conf.env['LV2DIR']]
+
+ conf.run_env.append_unique('LV2_PATH', path)
+
+def default_lv2_path(conf):
+ """Return the default LV2_PATH for the build target as a list"""
+ if conf.env.DEST_OS == 'darwin':
+ return ['~/Library/Audio/Plug-Ins/LV2',
+ '~/.lv2',
+ '/usr/local/lib/lv2',
+ '/usr/lib/lv2',
+ '/Library/Audio/Plug-Ins/LV2']
+ elif conf.env.DEST_OS == 'haiku':
+ return ['~/.lv2',
+ '/boot/common/add-ons/lv2']
+ elif conf.env.DEST_OS == 'win32':
+ return ['%APPDATA%\\\\LV2',
+ '%COMMONPROGRAMFILES%\\\\LV2']
+ else:
+ libdirname = os.path.basename(conf.env.LIBDIR)
+ return ['~/.lv2',
+ '/usr/%s/lv2' % libdirname,
+ '/usr/local/%s/lv2' % libdirname]
+
+def configure(conf):
+ def env_path(parent_dir_var, name):
+ parent = os.getenv(parent_dir_var)
+ if parent:
+ return os.path.join(parent, name)
+ else:
+ Logs.warn('Environment variable %s unset, using LIBDIR\n' % parent_dir_var)
+ return os.path.join(conf.env['LIBDIR'], name)
+
+ def normpath(path):
+ if sys.platform == 'win32':
+ return os.path.normpath(path).replace('\\', '/')
+ else:
+ return os.path.normpath(path)
+
+ if Options.options.lv2dir:
+ conf.env['LV2DIR'] = Options.options.lv2dir
+ elif Options.options.lv2_user:
+ if conf.env.DEST_OS == 'darwin':
+ conf.env['LV2DIR'] = env_path('HOME', 'Library/Audio/Plug-Ins/LV2')
+ elif conf.env.DEST_OS == 'win32':
+ conf.env['LV2DIR'] = env_path('APPDATA', 'LV2')
+ else:
+ conf.env['LV2DIR'] = env_path('HOME', '.lv2')
+ else:
+ if conf.env.DEST_OS == 'darwin':
+ conf.env['LV2DIR'] = '/Library/Audio/Plug-Ins/LV2'
+ elif conf.env.DEST_OS == 'win32':
+ conf.env['LV2DIR'] = env_path('COMMONPROGRAMFILES', 'LV2')
+ else:
+ conf.env['LV2DIR'] = os.path.join(conf.env['LIBDIR'], 'lv2')
+
+ # Add default LV2_PATH to runtime environment for tests that use plugins
+ if 'LV2_PATH' not in os.environ:
+ conf.run_env['LV2_PATH'] = default_lv2_path(conf)