#!/usr/bin/env python import os import sys from waflib.extras import autowaf as autowaf import waflib.Options as Options # Version of this package (even if built as a child) LV2CORE_VERSION = '4.1' # Variables for 'waf dist' APPNAME = 'lv2core' VERSION = LV2CORE_VERSION # Mandatory variables top = '.' out = 'build' def options(opt): opt.add_option('--default-lv2-path', type='string', default='', dest='default_lv2_path', help="Default LV2 path to use if $LV2_PATH is unset") opt.add_option('--bundle-only', action='store_true', default=False, dest='bundle_only', help="Only install LV2 bundle (not header or pkg-config file)") autowaf.set_options(opt) def configure(conf): autowaf.configure(conf) lv2core_path_sep = ':' lv2core_dir_sep = '/' if sys.platform == 'win32': lv2core_path_sep = ';' lv2core_dir_sep = '\\\\' autowaf.define(conf, 'LV2CORE_PATH_SEP', lv2core_path_sep) autowaf.define(conf, 'LV2CORE_DIR_SEP', lv2core_dir_sep) if Options.options.default_lv2_path == '': if Options.platform == 'darwin': Options.options.default_lv2_path = lv2core_path_sep.join([ '~/Library/Audio/Plug-Ins/LV2', '~/.lv2', '/usr/local/lib/lv2', '/usr/lib/lv2', '/Library/Audio/Plug-Ins/LV2']) elif Options.platform == 'haiku': Options.options.default_lv2_path = lv2core_path_sep.join([ '~/.lv2', '/boot/common/add-ons/lv2']) elif Options.platform == 'win32': Options.options.default_lv2_path = 'C:\\\\Program Files\\\\LV2' else: libdirname = os.path.basename(conf.env['LIBDIR']) Options.options.default_lv2_path = lv2core_path_sep.join([ '~/.lv2', '/usr/%s/lv2' % libdirname, '/usr/local/%s/lv2' % libdirname]) autowaf.define(conf, 'LV2CORE_DEFAULT_LV2_PATH', Options.options.default_lv2_path) conf.check(function_name='wordexp', header_name='wordexp.h', define_name='HAVE_WORDEXP', mandatory=False) conf.write_config_header('lv2-config.h', remove=False) autowaf.display_msg(conf, "Path expansion via wordexp", conf.is_defined('HAVE_WORDEXP')) autowaf.display_msg(conf, "Default LV2_PATH", conf.env['LV2CORE_DEFAULT_LV2_PATH']) autowaf.display_msg(conf, "LV2 bundle directory", conf.env['LV2DIR']) print('') def build(bld): # Header "library" obj = bld(export_includes = ['.'], name = 'liblv2core', target = 'lv2core') if not Options.options.bundle_only: # Header bld.install_files('${INCLUDEDIR}', 'lv2.h') bld.install_files('${LV2DIR}/lv2core.lv2', 'lv2.h') # Pkgconfig file autowaf.build_pc(bld, 'LV2CORE', LV2CORE_VERSION, '', []) # Bundle (data) bld.install_files('${LV2DIR}/lv2core.lv2', 'lv2.ttl manifest.ttl') # lv2config program obj = bld(features = 'c cprogram', source = 'lv2config.c serd-0.1.0.c', target = 'lv2config', install_path = '${BINDIR}', cflags = ['-std=c99', '-U__STRICT_ANSI__']) # Man page bld.install_files('${MANDIR}/man1', 'lv2config.1') def dist(): import Scripting Scripting.g_gz = 'gz' Scripting.dist()