1import os 2import sys 3 4from waflib import Logs 5from waflib import Options 6 7def options(opt): 8 conf_opts = opt.get_option_group('Configuration options') 9 conf_opts.add_option('--lv2-user', action='store_true', default=False, dest='lv2_user', 10 help='install LV2 bundles to user location') 11 conf_opts.add_option('--lv2dir', type='string', 12 help='LV2 bundles [Default: LIBDIR/lv2]') 13 14def register_lv2_path(conf, path): 15 """Return the default LV2_PATH to use for this system""" 16 if 'LV2_PATH' not in conf.run_env and 'LV2_PATH' not in os.environ: 17 conf.run_env['LV2_PATH'] = [conf.env['LV2DIR']] 18 19 conf.run_env.append_unique('LV2_PATH', path) 20 21def default_lv2_path(conf): 22 """Return the default LV2_PATH for the build target as a list""" 23 if conf.env.DEST_OS == 'darwin': 24 return ['~/Library/Audio/Plug-Ins/LV2', 25 '~/.lv2', 26 '/usr/local/lib/lv2', 27 '/usr/lib/lv2', 28 '/Library/Audio/Plug-Ins/LV2'] 29 elif conf.env.DEST_OS == 'haiku': 30 return ['~/.lv2', 31 '/boot/common/add-ons/lv2'] 32 elif conf.env.DEST_OS == 'win32': 33 return ['%APPDATA%\\\\LV2', 34 '%COMMONPROGRAMFILES%\\\\LV2'] 35 else: 36 libdirname = os.path.basename(conf.env.LIBDIR) 37 return ['~/.lv2', 38 '/usr/%s/lv2' % libdirname, 39 '/usr/local/%s/lv2' % libdirname] 40 41def configure(conf): 42 def env_path(parent_dir_var, name): 43 parent = os.getenv(parent_dir_var) 44 if parent: 45 return os.path.join(parent, name) 46 else: 47 Logs.warn('Environment variable %s unset, using LIBDIR\n' % parent_dir_var) 48 return os.path.join(conf.env['LIBDIR'], name) 49 50 def normpath(path): 51 if sys.platform == 'win32': 52 return os.path.normpath(path).replace('\\', '/') 53 else: 54 return os.path.normpath(path) 55 56 if Options.options.lv2dir: 57 conf.env['LV2DIR'] = Options.options.lv2dir 58 elif Options.options.lv2_user: 59 if conf.env.DEST_OS == 'darwin': 60 conf.env['LV2DIR'] = env_path('HOME', 'Library/Audio/Plug-Ins/LV2') 61 elif conf.env.DEST_OS == 'win32': 62 conf.env['LV2DIR'] = env_path('APPDATA', 'LV2') 63 else: 64 conf.env['LV2DIR'] = env_path('HOME', '.lv2') 65 else: 66 if conf.env.DEST_OS == 'darwin': 67 conf.env['LV2DIR'] = '/Library/Audio/Plug-Ins/LV2' 68 elif conf.env.DEST_OS == 'win32': 69 conf.env['LV2DIR'] = env_path('COMMONPROGRAMFILES', 'LV2') 70 else: 71 conf.env['LV2DIR'] = os.path.join(conf.env['LIBDIR'], 'lv2') 72 73 # Add default LV2_PATH to runtime environment for tests that use plugins 74 if 'LV2_PATH' not in os.environ: 75 conf.run_env['LV2_PATH'] = default_lv2_path(conf) 76