From 723ab60b39aed9a9190e047fc5803c1f4e1adac3 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Thu, 29 Sep 2011 19:17:54 +0000 Subject: [PATCH] Upgrade to waf 1.6.7 and autowaf r52. git-svn-id: svn://localhost/ardour2/branches/3.0@10162 d708f5d6-7413-0410-9779-e7cbd77b26cf --- autowaf.py | 480 ------------------------- export/wscript | 11 +- gtk2_ardour/arcall | 2 +- gtk2_ardour/ardbg | 2 +- gtk2_ardour/ardev | 2 +- gtk2_ardour/ardev_common.sh.in | 4 +- gtk2_ardour/arldd | 2 +- gtk2_ardour/arval | 2 +- gtk2_ardour/wscript | 106 +++--- libs/appleutility/wscript | 9 +- libs/ardour/wscript | 39 +- libs/audiographer/autowaf.py | 439 ---------------------- libs/audiographer/wscript | 22 +- libs/clearlooks-newer/wscript | 12 +- libs/evoral/wscript | 36 +- libs/gnomecanvas/wscript | 12 +- libs/gtkmm2ext/wscript | 19 +- libs/midi++2/wscript | 18 +- libs/panners/1in2out/wscript | 14 +- libs/panners/2in2out/wscript | 14 +- libs/panners/vbap/wscript | 14 +- libs/panners/wscript | 8 +- libs/pbd/wscript | 26 +- libs/qm-dsp/wscript | 12 +- libs/rubberband/wscript | 16 +- libs/surfaces/control_protocol/wscript | 14 +- libs/surfaces/frontier/wscript | 14 +- libs/surfaces/generic_midi/wscript | 14 +- libs/surfaces/mackie/wscript | 14 +- libs/surfaces/osc/wscript | 14 +- libs/surfaces/powermate/wscript | 14 +- libs/surfaces/tranzport/wscript | 14 +- libs/surfaces/wiimote/wscript | 14 +- libs/surfaces/wscript | 14 +- libs/taglib/wscript | 48 ++- libs/timecode/wscript | 12 +- libs/vamp-plugins/wscript | 16 +- libs/vamp-sdk/wscript | 16 +- templates/wscript | 16 +- tools/sanity_check/wscript | 10 +- waf | Bin 92583 -> 91073 bytes wscript | 95 ++--- 42 files changed, 374 insertions(+), 1286 deletions(-) delete mode 100644 autowaf.py delete mode 100644 libs/audiographer/autowaf.py diff --git a/autowaf.py b/autowaf.py deleted file mode 100644 index c9ac680c7b..0000000000 --- a/autowaf.py +++ /dev/null @@ -1,480 +0,0 @@ -#!/usr/bin/env python -# Waf utilities for easily building standard unixey packages/libraries -# Licensed under the GNU GPL v2 or later, see COPYING file for details. -# Copyright (C) 2008 David Robillard -# Copyright (C) 2008 Nedko Arnaudov - -import Configure -import Options -import Utils -import misc -import os -import subprocess -import sys -import glob - -from TaskGen import feature, before, after - -global g_is_child -g_is_child = False - -# Only run autowaf hooks once (even if sub projects call several times) -global g_step -g_step = 0 - -# Compute dependencies globally -#import preproc -#preproc.go_absolute = True - -@feature('cc', 'cxx') -@after('apply_lib_vars') -@before('apply_obj_vars_cc', 'apply_obj_vars_cxx') -def include_config_h(self): - self.env.append_value('INC_PATHS', self.bld.srcnode) - -def set_options(opt): - "Add standard autowaf options if they havn't been added yet" - global g_step - if g_step > 0: - return - opt.tool_options('compiler_cc') - opt.tool_options('compiler_cxx') - opt.add_option('--debug', action='store_true', default=True, dest='debug', - help="Build debuggable binaries [Default: True]") - opt.add_option('--optimize', action='store_false', default=True, dest='debug', - help="Build optimized binaries [Default: False]") - opt.add_option('--strict', action='store_true', default=False, dest='strict', - help="Use strict compiler flags and show all warnings [Default: False]") - opt.add_option('--docs', action='store_true', default=False, dest='docs', - help="Build documentation - requires doxygen [Default: False]") - opt.add_option('--bundle', action='store_true', default=False, - help="Build a self-contained bundle [Default: False]") - opt.add_option('--bindir', type='string', - help="Executable programs [Default: PREFIX/bin]") - opt.add_option('--libdir', type='string', - help="Libraries [Default: PREFIX/lib]") - opt.add_option('--includedir', type='string', - help="Header files [Default: PREFIX/include]") - opt.add_option('--datadir', type='string', - help="Shared data [Default: PREFIX/share]") - opt.add_option('--configdir', type='string', - help="Configuration data [Default: PREFIX/etc]") - opt.add_option('--mandir', type='string', - help="Manual pages [Default: DATADIR/man]") - opt.add_option('--htmldir', type='string', - help="HTML documentation [Default: DATADIR/doc/PACKAGE]") - opt.add_option('--lv2-user', action='store_true', default=False, dest='lv2_user', - help="Install LV2 bundles to user-local location [Default: False]") - if sys.platform == "darwin": - opt.add_option('--lv2dir', type='string', - help="LV2 bundles [Default: /Library/Audio/Plug-Ins/LV2]") - else: - opt.add_option('--lv2dir', type='string', - help="LV2 bundles [Default: LIBDIR/lv2]") - g_step = 1 - -def check_header(conf, name, define='', mandatory=False): - "Check for a header iff it hasn't been checked for yet" - if type(conf.env['AUTOWAF_HEADERS']) != dict: - conf.env['AUTOWAF_HEADERS'] = {} - - checked = conf.env['AUTOWAF_HEADERS'] - if not name in checked: - checked[name] = True - includes = '' # search default system include paths - if sys.platform == "darwin": - includes = '/opt/local/include' - if define != '': - conf.check(header_name=name, includes=includes, define_name=define, mandatory=mandatory) - else: - conf.check(header_name=name, includes=includes, mandatory=mandatory) - -def nameify(name): - return name.replace('/', '_').replace('++', 'PP').replace('-', '_').replace('.', '_') - -def check_pkg(conf, name, **args): - if not 'mandatory' in args: - args['mandatory'] = True - "Check for a package iff it hasn't been checked for yet" - var_name = 'HAVE_' + nameify(args['uselib_store']) - check = not var_name in conf.env - if not check and 'atleast_version' in args: - # Re-check if version is newer than previous check - checked_version = conf.env['VERSION_' + name] - if checked_version and checked_version < args['atleast_version']: - check = True; - if check: - conf.check_cfg(package=name, args="--cflags --libs", **args) - found = bool(conf.env[var_name]) - if found: - conf.define(var_name, int(found)) - if 'atleast_version' in args: - conf.env['VERSION_' + name] = args['atleast_version'] - else: - conf.undefine(var_name) - if args['mandatory'] == True: - conf.fatal("Required package " + name + " not found") - -def configure(conf): - global g_step - if g_step > 1: - return - def append_cxx_flags(vals): - conf.env.append_value('CCFLAGS', vals.split()) - conf.env.append_value('CXXFLAGS', vals.split()) - display_header('Global Configuration') - conf.check_tool('misc') - conf.check_tool('compiler_cc') - conf.check_tool('compiler_cxx') - conf.env['DOCS'] = Options.options.docs - conf.env['DEBUG'] = Options.options.debug - conf.env['STRICT'] = Options.options.strict - conf.env['PREFIX'] = os.path.abspath(os.path.expanduser(os.path.normpath(conf.env['PREFIX']))) - if Options.options.bundle: - conf.env['BUNDLE'] = True - conf.define('BUNDLE', 1) - conf.env['BINDIR'] = conf.env['PREFIX'] - conf.env['INCLUDEDIR'] = os.path.join(conf.env['PREFIX'], 'Headers') - conf.env['LIBDIR'] = os.path.join(conf.env['PREFIX'], 'Libraries') - conf.env['DATADIR'] = os.path.join(conf.env['PREFIX'], 'Resources') - conf.env['HTMLDIR'] = os.path.join(conf.env['PREFIX'], 'Resources/Documentation') - conf.env['MANDIR'] = os.path.join(conf.env['PREFIX'], 'Resources/Man') - conf.env['LV2DIR'] = os.path.join(conf.env['PREFIX'], 'PlugIns') - else: - conf.env['BUNDLE'] = False - if Options.options.bindir: - conf.env['BINDIR'] = Options.options.bindir - else: - conf.env['BINDIR'] = os.path.join(conf.env['PREFIX'], 'bin') - if Options.options.includedir: - conf.env['INCLUDEDIR'] = Options.options.includedir - else: - conf.env['INCLUDEDIR'] = os.path.join(conf.env['PREFIX'], 'include') - if Options.options.libdir: - conf.env['LIBDIR'] = Options.options.libdir - else: - conf.env['LIBDIR'] = os.path.join(conf.env['PREFIX'], 'lib') - if Options.options.datadir: - conf.env['DATADIR'] = Options.options.datadir - else: - conf.env['DATADIR'] = os.path.join(conf.env['PREFIX'], 'share') - if Options.options.configdir: - conf.env['CONFIGDIR'] = Options.options.configdir - else: - conf.env['CONFIGDIR'] = os.path.join(conf.env['PREFIX'], 'etc') - if Options.options.htmldir: - conf.env['HTMLDIR'] = Options.options.htmldir - else: - conf.env['HTMLDIR'] = os.path.join(conf.env['DATADIR'], 'doc', Utils.g_module.APPNAME) - if Options.options.mandir: - conf.env['MANDIR'] = Options.options.mandir - else: - conf.env['MANDIR'] = os.path.join(conf.env['DATADIR'], 'man') - if Options.options.lv2dir: - conf.env['LV2DIR'] = Options.options.lv2dir - else: - if Options.options.lv2_user: - if sys.platform == "darwin": - conf.env['LV2DIR'] = os.path.join(os.getenv('HOME'), 'Library/Audio/Plug-Ins/LV2') - else: - conf.env['LV2DIR'] = os.path.join(os.getenv('HOME'), '.lv2') - else: - if sys.platform == "darwin": - conf.env['LV2DIR'] = '/Library/Audio/Plug-Ins/LV2' - else: - conf.env['LV2DIR'] = os.path.join(conf.env['LIBDIR'], 'lv2') - - conf.env['BINDIRNAME'] = os.path.basename(conf.env['BINDIR']) - conf.env['LIBDIRNAME'] = os.path.basename(conf.env['LIBDIR']) - conf.env['DATADIRNAME'] = os.path.basename(conf.env['DATADIR']) - conf.env['CONFIGDIRNAME'] = os.path.basename(conf.env['CONFIGDIR']) - conf.env['LV2DIRNAME'] = os.path.basename(conf.env['LV2DIR']) - - if Options.options.docs: - doxygen = conf.find_program('doxygen') - if not doxygen: - conf.fatal("Doxygen is required to build documentation, configure without --docs") - - dot = conf.find_program('dot') - if not dot: - conf.fatal("Graphviz (dot) is required to build documentation, configure without --docs") - - if Options.options.debug: - conf.env['CCFLAGS'] = [ '-O0', '-g' ] - conf.env['CXXFLAGS'] = [ '-O0', '-g' ] - else: - append_cxx_flags('-DNDEBUG') - - if Options.options.strict: - conf.env.append_value('CCFLAGS', [ '-std=c99', '-pedantic' ]) - conf.env.append_value('CXXFLAGS', [ '-ansi', '-Woverloaded-virtual', '-Wnon-virtual-dtor']) - append_cxx_flags('-Wall -Wextra -Wno-unused-parameter') - - append_cxx_flags('-fPIC -DPIC -fshow-column') - - display_msg(conf, "Install prefix", conf.env['PREFIX']) - display_msg(conf, "Debuggable build", str(conf.env['DEBUG'])) - display_msg(conf, "Strict compiler flags", str(conf.env['STRICT'])) - display_msg(conf, "Build documentation", str(conf.env['DOCS'])) - print() - - g_step = 2 - -def set_local_lib(conf, name, has_objects): - conf.define('HAVE_' + nameify(name.upper()), 1) - if has_objects: - if type(conf.env['AUTOWAF_LOCAL_LIBS']) != dict: - conf.env['AUTOWAF_LOCAL_LIBS'] = {} - conf.env['AUTOWAF_LOCAL_LIBS'][name.lower()] = True - else: - if type(conf.env['AUTOWAF_LOCAL_HEADERS']) != dict: - conf.env['AUTOWAF_LOCAL_HEADERS'] = {} - conf.env['AUTOWAF_LOCAL_HEADERS'][name.lower()] = True - -def use_lib(bld, obj, libs): - abssrcdir = os.path.abspath('.') - libs_list = libs.split() - for l in libs_list: - in_headers = l.lower() in bld.env['AUTOWAF_LOCAL_HEADERS'] - in_libs = l.lower() in bld.env['AUTOWAF_LOCAL_LIBS'] - if in_libs: - if hasattr(obj, 'uselib_local'): - obj.uselib_local += ' lib' + l.lower() + ' ' - else: - obj.uselib_local = 'lib' + l.lower() + ' ' - - if in_headers or in_libs: - inc_flag = '-iquote ' + os.path.join(abssrcdir, l.lower()) - for f in ['CCFLAGS', 'CXXFLAGS']: - if not inc_flag in bld.env[f]: - bld.env.append_value(f, inc_flag) - else: - if hasattr(obj, 'uselib'): - obj.uselib += ' ' + l - else: - obj.uselib = l - - -def display_header(title): - Utils.pprint('BOLD', title) - -def display_msg(conf, msg, status = None, color = None): - color = 'CYAN' - if type(status) == bool and status or status == "True": - color = 'GREEN' - elif type(status) == bool and not status or status == "False": - color = 'YELLOW' - Utils.pprint('BOLD', "%s :" % msg.ljust(conf.line_just), sep='') - Utils.pprint(color, status) - -def link_flags(env, lib): - return ' '.join(map(lambda x: env['LIB_ST'] % x, env['LIB_' + lib])) - -def compile_flags(env, lib): - return ' '.join(map(lambda x: env['CPPPATH_ST'] % x, env['CPPPATH_' + lib])) - -def set_recursive(): - global g_is_child - g_is_child = True - -def is_child(): - global g_is_child - return g_is_child - -# Pkg-config file -def build_pc(bld, name, version, libs): - '''Build a pkg-config file for a library. - name -- uppercase variable name (e.g. 'SOMENAME') - version -- version string (e.g. '1.2.3') - libs -- string/list of dependencies (e.g. 'LIBFOO GLIB') - ''' - - obj = bld.new_task_gen('subst') - obj.source = name.lower() + '.pc.in' - obj.target = name.lower() + '.pc' - obj.install_path = '${PREFIX}/${LIBDIRNAME}/pkgconfig' - pkg_prefix = bld.env['PREFIX'] - if pkg_prefix[-1] == '/': - pkg_prefix = pkg_prefix[:-1] - obj.dict = { - 'prefix' : pkg_prefix, - 'exec_prefix' : '${prefix}', - 'libdir' : '${prefix}/' + bld.env['LIBDIRNAME'], - 'includedir' : '${prefix}/include', - name + '_VERSION' : version, - } - if type(libs) != list: - libs = libs.split() - for i in libs: - obj.dict[i + '_LIBS'] = link_flags(bld.env, i) - obj.dict[i + '_CFLAGS'] = compile_flags(bld.env, i) - -# Doxygen API documentation -def build_dox(bld, name, version, srcdir, blddir): - if not bld.env['DOCS']: - return - obj = bld.new_task_gen('subst') - obj.source = 'doc/reference.doxygen.in' - obj.target = 'doc/reference.doxygen' - if is_child(): - src_dir = os.path.join(srcdir, name.lower()) - doc_dir = os.path.join(blddir, 'default', name.lower(), 'doc') - else: - src_dir = srcdir - doc_dir = os.path.join(blddir, 'default', 'doc') - obj.dict = { - name + '_VERSION' : version, - name + '_SRCDIR' : os.path.abspath(src_dir), - name + '_DOC_DIR' : os.path.abspath(doc_dir) - } - obj.install_path = '' - out1 = bld.new_task_gen('command-output') - out1.dependencies = [obj] - out1.stdout = '/doc/doxygen.out' - out1.stdin = '/doc/reference.doxygen' # whatever.. - out1.command = 'doxygen' - out1.argv = [os.path.abspath(doc_dir) + '/reference.doxygen'] - out1.command_is_external = True - -# Version code file generation -def build_version_files(header_path, source_path, domain, major, minor, micro): - header_path = os.path.abspath(header_path) - source_path = os.path.abspath(source_path) - text = "int " + domain + "_major_version = " + str(major) + ";\n" - text += "int " + domain + "_minor_version = " + str(minor) + ";\n" - text += "int " + domain + "_micro_version = " + str(micro) + ";\n" - try: - o = open(source_path, 'w') - o.write(text) - o.close() - except IOError: - print("Could not open %s for writing\n", source_path) - sys.exit(-1) - - text = "#ifndef __" + domain + "_version_h__\n" - text += "#define __" + domain + "_version_h__\n" - text += "extern const char* " + domain + "_revision;\n" - text += "extern int " + domain + "_major_version;\n" - text += "extern int " + domain + "_minor_version;\n" - text += "extern int " + domain + "_micro_version;\n" - text += "#endif /* __" + domain + "_version_h__ */\n" - try: - o = open(header_path, 'w') - o.write(text) - o.close() - except IOError: - print("Could not open %s for writing\n", header_path) - sys.exit(-1) - - return None - -def run_tests(ctx, appname, tests): - orig_dir = os.path.abspath(os.curdir) - failures = 0 - base = '..' - - top_level = os.path.abspath(ctx.curdir) != os.path.abspath(os.curdir) - if top_level: - os.chdir('./build/default/' + appname) - base = '../..' - else: - os.chdir('./build/default') - - lcov = True - lcov_log = open('lcov.log', 'w') - try: - # Clear coverage data - subprocess.call('lcov -d ./src -z'.split(), - stdout=lcov_log, stderr=lcov_log) - except: - lcov = False - print("Failed to run lcov, no coverage report will be generated") - - - # Run all tests - for i in tests: - print() - Utils.pprint('BOLD', 'Running %s test %s' % (appname, i)) - if subprocess.call(i) == 0: - Utils.pprint('GREEN', 'Passed %s %s' % (appname, i)) - else: - failures += 1 - Utils.pprint('RED', 'Failed %s %s' % (appname, i)) - - if lcov: - # Generate coverage data - coverage_lcov = open('coverage.lcov', 'w') - subprocess.call(('lcov -c -d ./src -d ./test -b ' + base).split(), - stdout=coverage_lcov, stderr=lcov_log) - coverage_lcov.close() - - # Strip out unwanted stuff - coverage_stripped_lcov = open('coverage-stripped.lcov', 'w') - subprocess.call('lcov --remove coverage.lcov *boost* c++*'.split(), - stdout=coverage_stripped_lcov, stderr=lcov_log) - coverage_stripped_lcov.close() - - # Generate HTML coverage output - if not os.path.isdir('./coverage'): - os.makedirs('./coverage') - subprocess.call('genhtml -o coverage coverage-stripped.lcov'.split(), - stdout=lcov_log, stderr=lcov_log) - - lcov_log.close() - - print() - Utils.pprint('BOLD', 'Summary:', sep=''), - if failures == 0: - Utils.pprint('GREEN', 'All ' + appname + ' tests passed') - else: - Utils.pprint('RED', str(failures) + ' ' + appname + ' test(s) failed') - - Utils.pprint('BOLD', 'Coverage:', sep='') - print(os.path.abspath('coverage/index.html')) - - os.chdir(orig_dir) - -def shutdown(): - # This isn't really correct (for packaging), but people asking is annoying - if Options.commands['install']: - try: os.popen("/sbin/ldconfig") - except: pass - -def build_i18n(bld,srcdir,dir,name,sources): - pwd = os.getcwd() - os.chdir(os.path.join (srcdir, dir)) - - pot_file = '%s.pot' % name - - args = [ 'xgettext', - '--keyword=_', - '--keyword=N_', - '--from-code=UTF-8', - '-o', pot_file, - '--copyright-holder="Paul Davis"' ] - args += sources - print 'Updating ', pot_file - os.spawnvp (os.P_WAIT, 'xgettext', args) - - po_files = glob.glob ('po/*.po') - languages = [ po.replace ('.po', '') for po in po_files ] - - for po_file in po_files: - args = [ 'msgmerge', - '--update', - po_file, - pot_file ] - print 'Updating ', po_file - os.spawnvp (os.P_WAIT, 'msgmerge', args) - - for po_file in po_files: - mo_file = po_file.replace ('.po', '.mo') - args = [ 'msgfmt', - '-c', - '-f', - '-o', - mo_file, - po_file ] - print 'Generating ', po_file - os.spawnvp (os.P_WAIT, 'msgfmt', args) - os.chdir (pwd) diff --git a/export/wscript b/export/wscript index 2ab87c4cd9..2dce68a01b 100644 --- a/export/wscript +++ b/export/wscript @@ -1,19 +1,18 @@ #!/usr/bin/python import os -import glob -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' def configure(conf): pass def build(bld): - presets = glob.glob (os.path.join(bld.get_curdir(), '*.preset')) - formats = glob.glob (os.path.join(bld.get_curdir(), '*.format')) + presets = bld.path.ant_glob ('*.preset') + formats = bld.path.ant_glob ('*.format') bld.install_files (os.path.join(bld.env['DATADIR'], 'ardour3', 'export'), presets + formats) -def set_options(opt): +def options(opt): pass diff --git a/gtk2_ardour/arcall b/gtk2_ardour/arcall index 6e5d31784b..703bc741fd 100755 --- a/gtk2_ardour/arcall +++ b/gtk2_ardour/arcall @@ -1,5 +1,5 @@ #!/bin/sh -. `dirname "$0"`/../build/default/gtk2_ardour/ardev_common_waf.sh +. `dirname "$0"`/../build/gtk2_ardour/ardev_common_waf.sh LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH export ARDOUR_RUNNING_UNDER_VALGRIND=TRUE exec valgrind --error-limit=no --num-callers=50 --tool=callgrind $TOP/$EXECUTABLE --novst "$@" diff --git a/gtk2_ardour/ardbg b/gtk2_ardour/ardbg index 5e19b2bde8..f0c092cab2 100755 --- a/gtk2_ardour/ardbg +++ b/gtk2_ardour/ardbg @@ -1,5 +1,5 @@ #!/bin/sh -. `dirname "$0"`/../build/default/gtk2_ardour/ardev_common_waf.sh +. `dirname "$0"`/../build/gtk2_ardour/ardev_common_waf.sh LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH export ARDOUR_INSIDE_GDB=1 exec gdb --args $TOP/$EXECUTABLE $@ diff --git a/gtk2_ardour/ardev b/gtk2_ardour/ardev index 8f0af37d15..aee9a48102 100755 --- a/gtk2_ardour/ardev +++ b/gtk2_ardour/ardev @@ -1,4 +1,4 @@ #!/bin/sh -. `dirname "$0"`/../build/default/gtk2_ardour/ardev_common_waf.sh +. `dirname "$0"`/../build/gtk2_ardour/ardev_common_waf.sh LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH exec $TOP/$EXECUTABLE "$@" diff --git a/gtk2_ardour/ardev_common.sh.in b/gtk2_ardour/ardev_common.sh.in index 0931bef583..dc5926aae9 100644 --- a/gtk2_ardour/ardev_common.sh.in +++ b/gtk2_ardour/ardev_common.sh.in @@ -4,10 +4,10 @@ TOP=`dirname "$0"`/.. libs=$TOP/@LIBS@ -export ARDOUR_PATH=$TOP/gtk2_ardour/icons:$TOP/gtk2_ardour/pixmaps:$TOP/build/default/gtk2_ardour:$TOP/gtk2_ardour:. +export ARDOUR_PATH=$TOP/gtk2_ardour/icons:$TOP/gtk2_ardour/pixmaps:$TOP/build/gtk2_ardour:$TOP/gtk2_ardour:. export ARDOUR_SURFACES_PATH=$libs/surfaces/osc:$libs/surfaces/generic_midi:$libs/surfaces/tranzport:$libs/surfaces/powermate:$libs/surfaces/mackie export ARDOUR_PANNER_PATH=$libs/panners/2in2out:$libs/panners/1in2out:$libs/panners/vbap -export ARDOUR_DATA_PATH=$TOP/gtk2_ardour:build/default/gtk2_ardour:. +export ARDOUR_DATA_PATH=$TOP/gtk2_ardour:build/gtk2_ardour:. if test -d $HOME/gtk/inst ; then export GTK_PATH=~/.ardour3:$libs/clearlooks-newer diff --git a/gtk2_ardour/arldd b/gtk2_ardour/arldd index 3d0457d266..43899e9ab6 100755 --- a/gtk2_ardour/arldd +++ b/gtk2_ardour/arldd @@ -1,4 +1,4 @@ #!/bin/sh -. `dirname "$0"`/../build/default/gtk2_ardour/ardev_common_waf.sh +. `dirname "$0"`/../build/gtk2_ardour/ardev_common_waf.sh LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH exec ldd $TOP/$EXECUTABLE diff --git a/gtk2_ardour/arval b/gtk2_ardour/arval index cdd709dbb5..e563d7800c 100755 --- a/gtk2_ardour/arval +++ b/gtk2_ardour/arval @@ -1,5 +1,5 @@ #!/bin/sh -. `dirname "$0"`/../build/default/gtk2_ardour/ardev_common_waf.sh +. `dirname "$0"`/../build/gtk2_ardour/ardev_common_waf.sh LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH export ARDOUR_RUNNING_UNDER_VALGRIND=TRUE exec valgrind --error-limit=no --num-callers=50 --tool=memcheck $TOP/$EXECUTABLE --novst "$@" diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index 8f1468c600..12af400800 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -1,7 +1,7 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf +import waflib.Logs as Logs, waflib.Utils as Utils import os -import glob import Options import sys import TaskGen @@ -18,8 +18,8 @@ APPNAME = 'gtk2_ardour' VERSION = GTK2_ARDOUR_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' path_prefix = 'gtk2_ardour/' @@ -233,10 +233,11 @@ gtk2_ardour_sources = [ 'window_proxy.cc' ] -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): + conf.load('misc') autowaf.build_version_files( path_prefix + 'version.h', path_prefix + 'version.cc', @@ -261,13 +262,11 @@ def configure(conf): uselib_store='GNOMECANVASMM', atleast_version='2.16') autowaf.check_pkg(conf, 'ogg', uselib_store='OGG', atleast_version='1.1.2') - conf.check_tool('misc') # subst tool - - conf.write_config_header('gtk2ardour-config.h') + conf.write_config_header('gtk2ardour-config.h', remove=False) # Boost headers - autowaf.check_header(conf, 'boost/shared_ptr.hpp') - autowaf.check_header(conf, 'boost/weak_ptr.hpp') + autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp') + autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp') # Add a waf `feature' to allow compilation of things using winegcc from TaskGen import feature @@ -305,12 +304,13 @@ def _doPyp(infileName): outStr += _doPyp(incName) else: outStr += line + # done return outStr def include_processor(task): - infileName = task.inputs[0].srcpath(task.env) - outfileName = task.outputs[0].bldpath(task.env) + infileName = task.inputs[0].srcpath() + outfileName = os.path.join(out, task.outputs[0].bldpath()) fdOut = file (outfileName, "w") fdOut.write (_doPyp(infileName)) fdOut.close () @@ -338,9 +338,9 @@ def build(bld): # GTK front-end; if we're using VST we build this as a shared library, # otherwise it's a normal executabale if bld.env['VST_SUPPORT']: - obj = bld.new_task_gen(features = 'cxx cc cshlib') + obj = bld(features = 'cxx c cxxshlib') else: - obj = bld.new_task_gen(features = 'cxx cc cprogram') + obj = bld(features = 'cxx c cxxprogram') obj.includes = ['.'] obj.source = gtk2_ardour_sources @@ -355,15 +355,15 @@ def build(bld): obj.uselib = 'UUID FLAC GLIBMM GTHREAD GTK OGG ALSA CURL DL' obj.uselib += ' GTKMM GNOMECANVASMM ' obj.uselib += ' AUDIOUNITS OSX GTKOSX ' - obj.uselib_local = '''libpbd libmidipp libtaglib libardour libardour_cp + obj.use = '''libpbd libmidipp libtaglib libardour libardour_cp libgtkmm2ext libtaglib libgnomecanvas-2''' if sys.platform == 'darwin': - obj.uselib_local + ' libappleutility' + obj.use += ' libappleutility' obj.defines = [ 'PACKAGE="gtk2_ardour"', 'VERSIONSTRING="' + bld.env['VERSION'] + '"', 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"', - 'CONFIG_DIR="' + os.path.normpath(bld.env['CONFIGDIR']) + '"', + 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"', 'MODULE_DIR="' + os.path.normpath(bld.env['LIBDIR']) + '"', 'LOCALEDIR="' + os.path.join(os.path.normpath(bld.env['DATADIR']), 'locale') + '"', @@ -397,12 +397,12 @@ def build(bld): if bld.env['COREAUDIO']: TaskGen.task_gen.mappings['.mm'] = TaskGen.task_gen.mappings['.cc'] obj.source += [ 'cocoacarbon.mm', 'au_pluginui.mm' ] - obj.uselib_local += ' libappleutility ' + obj.use += ' libappleutility ' if bld.env['VST_SUPPORT']: # If we require VST support we build a stub main() and the FST library # here using winegcc, and link it to the GTK front-end library - obj = bld.new_task_gen (features = 'cxx cc cprogram wine') + obj = bld(features = 'cxx c cxxprogram wine') obj.source = ''' ../libs/fst/fst.c ../libs/fst/fstinfofile.c @@ -415,7 +415,7 @@ def build(bld): obj.linkflags += ['-mwindows', '-Wl,--export-dynamic', '-lpthread'] obj.defines = ['_POSIX_SOURCE', 'USE_WS_PREFIX'] obj.uselib = 'ALSA' - obj.uselib_local = ['libpbd','libmidipp','libtaglib','libardour', + obj.use = ['libpbd','libmidipp','libtaglib','libardour', 'libardour_cp','libgtkmm2ext','libtaglib', 'gtk2_ardour'] @@ -423,24 +423,30 @@ def build(bld): wrapper_subst_dict = { 'INSTALL_PREFIX' : bld.env['PREFIX'], - 'LIBDIR' : os.path.normpath(bld.env['LIBDIRNAME']), - 'LIBS' : 'build/default/libs', + 'LIBDIR' : os.path.normpath(bld.env['LIBDIR']), + 'LIBS' : 'build/libs', 'VERSION' : '3.0', - 'EXECUTABLE' : 'build/default/gtk2_ardour/ardour-3.0' + 'EXECUTABLE' : 'build/gtk2_ardour/ardour-3.0' } - obj = bld.new_task_gen('subst') + def set_subst_dict(obj, dict): + for i in dict: + setattr(obj, i, dict[i]) + + obj = bld(features = 'subst', rule= 'chmod 0755 ${TGT}') obj.source = 'ardev_common.sh.in' obj.target = 'ardev_common_waf.sh' - obj.chmod = 0755 + obj.chmod = Utils.O755 obj.dict = wrapper_subst_dict + set_subst_dict(obj, wrapper_subst_dict) - obj = bld.new_task_gen('subst') + obj = bld(features = 'subst') obj.source = 'ardour.sh.in' obj.target = 'ardour3' - obj.chmod = 0755 + obj.chmod = Utils.O755 obj.dict = wrapper_subst_dict obj.install_path = bld.env['BINDIR'] + set_subst_dict(obj, wrapper_subst_dict) # Font configuration @@ -507,49 +513,47 @@ def build(bld): 'gtk2_ardour/ardour3_ui_light.rc.in', 'ARDOUR_LIGHT') light_rc_subst_dict['COLPREFIX'] = 'ARDOUR_LIGHT' - obj = bld.new_task_gen('subst') + obj = bld(features = 'subst') obj.source = [ 'ardour3_ui_dark.rc.in' ] obj.target = 'ardour3_ui_dark.rc.pre' - obj.dict = dark_rc_subst_dict obj.install_path = None + set_subst_dict(obj, dark_rc_subst_dict) - obj = bld.new_task_gen('subst') + obj = bld(features = 'subst') obj.source = [ 'ardour3_ui_light.rc.in' ] obj.target = 'ardour3_ui_light.rc.pre' - obj.dict = light_rc_subst_dict obj.install_path = None + set_subst_dict(obj, light_rc_subst_dict) - obj = bld.new_task_gen('subst') + obj = bld(features = 'subst') obj.source = [ 'ardour3_styles.rc.in' ] obj.target = 'ardour3_dark_styles.rc' - obj.dict = dark_rc_subst_dict obj.install_path = None + set_subst_dict(obj, dark_rc_subst_dict) - obj = bld.new_task_gen('subst') + obj = bld(features = 'subst') obj.source = [ 'ardour3_styles.rc.in' ] obj.target = 'ardour3_light_styles.rc' - obj.dict = light_rc_subst_dict obj.install_path = None + set_subst_dict(obj, light_rc_subst_dict) - obj = bld.new_task_gen('subst') + obj = bld(features = 'subst') obj.source = [ 'ardour3_fonts.rc.in' ] obj.target = 'ardour3_dark_fonts.rc' - obj.dict = dark_rc_subst_dict obj.install_path = None + set_subst_dict(obj, dark_rc_subst_dict) - obj = bld.new_task_gen('subst') + obj = bld(features = 'subst') obj.source = [ 'ardour3_fonts.rc.in' ] obj.target = 'ardour3_light_fonts.rc' - obj.dict = light_rc_subst_dict obj.install_path = None + set_subst_dict(obj, light_rc_subst_dict) - obj = bld.new_task_gen('copy') + obj = bld(rule = 'cp ${SRC} ${TGT}') obj.source = [ 'ardour3_widget_list.rc' ] obj.target = 'ardour3_widgets.rc' obj.install_path = None - bld.use_the_magic() - bld ( rule = include_processor, source = 'ardour3_ui_dark.rc.pre', @@ -568,14 +572,14 @@ def build(bld): menus_argv = [ '-E', '-P', '-DGTKOSX' ] else: menus_argv = [ '-E', '-P' ] - obj = bld.new_task_gen('command-output') + obj = bld(features = 'command-output') obj.command = 'cpp' obj.command_is_external = True obj.no_inputs = True obj.argv = menus_argv obj.stdin = 'ardour.menus.in' obj.stdout = 'ardour.menus' - bld.install_files(os.path.join(bld.env['CONFIGDIR'], 'ardour3'), + bld.install_files(os.path.join(bld.env['SYSCONFDIR'], 'ardour3'), 'ardour.menus') # Keybindings @@ -584,15 +588,15 @@ def build(bld): # 'SAE-us-nokeypad', 'ergonomic-us' for b in [ 'mnemonic-us' ] : - obj = bld.new_task_gen ( + obj = bld( target = b + '.bindings', source = b + '.bindings.in', rule = '../tools/fmt-bindings --winkey="%s" --accelmap <${SRC} >${TGT}' % bld.env['WINDOWS_KEY'] ) - obj.install_path = os.path.join(bld.env['CONFIGDIR'], 'ardour3') + obj.install_path = os.path.join(bld.env['SYSCONFDIR'], 'ardour3') # not modified at present - bld.install_files(os.path.join(bld.env['CONFIGDIR'], 'ardour3'), + bld.install_files(os.path.join(bld.env['SYSCONFDIR'], 'ardour3'), 'step_editing.bindings') # Icons/Images @@ -601,16 +605,16 @@ def build(bld): bld.install_files('${DATADIR}/ardour3', 'splash.png') # Default UI configuration - bld.install_files('${CONFIGDIR}/ardour3', 'ardour3_ui_default.conf') + bld.install_files('${SYSCONFDIR}/ardour3', 'ardour3_ui_default.conf') # Generic widget style mappings - bld.install_files('${CONFIGDIR}/ardour3', 'ardour3_widgets.rc') + bld.install_files('${SYSCONFDIR}/ardour3', 'ardour3_widgets.rc') # Default export stuff - bld.install_files('${CONFIGDIR}/ardour3/export', 'export/*.format') + bld.install_files('${SYSCONFDIR}/ardour3/export', 'export/*.format') # i18n if bld.env['ENABLE_NLS']: - mo_files = glob.glob (os.path.join (bld.get_curdir(), 'po/*.mo')) + mo_files = bld.path.ant_glob ('po/*.mo') for mo in mo_files: lang = os.path.basename (mo).replace ('.mo', '') bld.install_as (os.path.join(bld.env['PREFIX'], 'share', 'locale', diff --git a/libs/appleutility/wscript b/libs/appleutility/wscript index 50e7e0200f..e9968f80e8 100644 --- a/libs/appleutility/wscript +++ b/libs/appleutility/wscript @@ -1,4 +1,5 @@ -import autowaf +#!/usr/bin/env python +from waflib.extras import autowaf as autowaf import os libappleutility_sources = [ @@ -20,17 +21,17 @@ libappleutility_sources = [ 'CAXException.cpp' ] -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): autowaf.configure(conf) def build(bld): - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.uselib = 'AUDIOUNITS OSX' obj.source = libappleutility_sources - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.includes = ['.'] obj.name = 'libappleutility' obj.target = 'appleutility' diff --git a/libs/ardour/wscript b/libs/ardour/wscript index 1b71f58298..45ef1a5ff8 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -1,7 +1,6 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os -import glob import Options import re import subprocess @@ -26,8 +25,8 @@ APPNAME = 'libardour' VERSION = LIBARDOUR_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' path_prefix = 'libs/ardour/' @@ -233,7 +232,7 @@ def ogg_supported(): out = cmd.communicate()[0].decode('utf-8'); return re.search ('unknown format', out) == None -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -292,7 +291,7 @@ def configure(conf): conf.check_cc(fragment = ''' #include -void callback(int code, const char* reason, void* arg) { return; } +void callback(jack_status_t code, const char* reason, void* arg) { return; } int main(int argc, char **argv) { jack_client_t* c; jack_on_info_shutdown(c, callback, (void*) 0); @@ -341,27 +340,27 @@ int main(int argc, char **argv) { if conf.env['HAVE_LILV'] or conf.env['HAVE_SLV2']: conf.define ('LV2_SUPPORT', 1) - conf.write_config_header('libardour-config.h') + conf.write_config_header('libardour-config.h', remove=False) # Boost headers - autowaf.check_header(conf, 'boost/shared_ptr.hpp') - autowaf.check_header(conf, 'boost/weak_ptr.hpp') - autowaf.check_header(conf, 'boost/scoped_ptr.hpp') - autowaf.check_header(conf, 'boost/ptr_container/ptr_list.hpp') + autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp') + autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp') + autowaf.check_header(conf, 'cxx', 'boost/scoped_ptr.hpp') + autowaf.check_header(conf, 'cxx', 'boost/ptr_container/ptr_list.hpp') def build(bld): # Library - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'c cxx cshlib cxxshlib') obj.source = libardour_sources - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.includes = ['.', '../surfaces/control_protocol', '..'] obj.name = 'libardour' obj.target = 'ardour' obj.uselib = ['GLIBMM','GTHREAD','AUBIO','SIGCPP','XML','UUID', 'JACK','SNDFILE','SAMPLERATE','LRDF','AUDIOUNIT', 'OSX','BOOST','CURL','DL'] - obj.uselib_local = ['libpbd','libmidipp','libevoral','libvamphost', + obj.use = ['libpbd','libmidipp','libevoral','libvamphost', 'libvampplugin','libtaglib','librubberband', 'libaudiographer'] obj.vnum = LIBARDOUR_LIB_VERSION @@ -369,7 +368,7 @@ def build(bld): obj.defines = [ 'PACKAGE="libardour3"', 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"', - 'CONFIG_DIR="' + os.path.normpath(bld.env['CONFIGDIR']) + '"', + 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"', 'MODULE_DIR="' + os.path.normpath(bld.env['LIBDIR']) + '"', 'LOCALEDIR="' + os.path.join( os.path.normpath(bld.env['DATADIR']), 'locale') + '"', @@ -405,7 +404,7 @@ def build(bld): if bld.env['COREAUDIO']: obj.source += [ 'coreaudiosource.cc', 'caimportable.cc' ] - obj.uselib_local += ['libappleutility'] + obj.use += ['libappleutility'] obj.source += [ 'audio_unit.cc' ] if bld.env['FPU_OPTIMIZATION']: @@ -417,7 +416,7 @@ def build(bld): # i18n if bld.env['ENABLE_NLS']: - mo_files = glob.glob(os.path.join(bld.get_curdir(), 'po/*.mo')) + mo_files = bld.path.ant_glob('po/*.mo') for mo in mo_files: lang = os.path.basename(mo).replace('.mo', '') bld.install_as(os.path.join(bld.env['PREFIX'], 'share', 'locale', @@ -426,7 +425,7 @@ def build(bld): if bld.env['BUILD_TESTS'] and bld.env['HAVE_CPPUNIT']: # Unit tests - testobj = bld.new_task_gen('cxx', 'program') + testobj = bld(features = 'cxx cxxprogram') testobj.source = ''' test/bbt_test.cpp test/interpolation_test.cpp @@ -438,14 +437,14 @@ def build(bld): testobj.includes = obj.includes + ['test', '../pbd'] testobj.uselib = ['CPPUNIT','SIGCPP','JACK','GLIBMM','GTHREAD', 'SAMPLERATE','XML','LRDF','COREAUDIO'] - testobj.uselib_local = ['libpbd','libmidipp','libardour'] + testobj.use = ['libpbd','libmidipp','libardour'] testobj.name = 'libardour-tests' testobj.target = 'run-tests' testobj.install_path = '' testobj.defines = [ 'PACKAGE="libardour3test"', 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"', - 'CONFIG_DIR="' + os.path.normpath(bld.env['CONFIGDIR']) + '"', + 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"', 'MODULE_DIR="' + os.path.normpath(bld.env['LIBDIR']) + '"', 'LOCALEDIR="' + os.path.join( os.path.normpath(bld.env['DATADIR']), 'locale') + '"', diff --git a/libs/audiographer/autowaf.py b/libs/audiographer/autowaf.py deleted file mode 100644 index cee80a587b..0000000000 --- a/libs/audiographer/autowaf.py +++ /dev/null @@ -1,439 +0,0 @@ -#!/usr/bin/env python -# Waf utilities for easily building standard unixey packages/libraries -# Licensed under the GNU GPL v2 or later, see COPYING file for details. -# Copyright (C) 2008 David Robillard -# Copyright (C) 2008 Nedko Arnaudov - -import Configure -import Options -import Utils -import misc -import os -import subprocess -import sys -from TaskGen import feature, before, after - -global g_is_child -g_is_child = False - -# Only run autowaf hooks once (even if sub projects call several times) -global g_step -g_step = 0 - -# Compute dependencies globally -#import preproc -#preproc.go_absolute = True - -@feature('cc', 'cxx') -@after('apply_lib_vars') -@before('apply_obj_vars_cc', 'apply_obj_vars_cxx') -def include_config_h(self): - self.env.append_value('INC_PATHS', self.bld.srcnode) - -def set_options(opt): - "Add standard autowaf options if they havn't been added yet" - global g_step - if g_step > 0: - return - opt.tool_options('compiler_cc') - opt.tool_options('compiler_cxx') - opt.add_option('--debug', action='store_true', default=False, dest='debug', - help="Build debuggable binaries [Default: False]") - opt.add_option('--strict', action='store_true', default=False, dest='strict', - help="Use strict compiler flags and show all warnings [Default: False]") - opt.add_option('--docs', action='store_true', default=False, dest='docs', - help="Build documentation - requires doxygen [Default: False]") - opt.add_option('--bundle', action='store_true', default=False, - help="Build a self-contained bundle [Default: False]") - opt.add_option('--bindir', type='string', - help="Executable programs [Default: PREFIX/bin]") - opt.add_option('--libdir', type='string', - help="Libraries [Default: PREFIX/lib]") - opt.add_option('--includedir', type='string', - help="Header files [Default: PREFIX/include]") - opt.add_option('--datadir', type='string', - help="Shared data [Default: PREFIX/share]") - opt.add_option('--configdir', type='string', - help="Configuration data [Default: PREFIX/etc]") - opt.add_option('--mandir', type='string', - help="Manual pages [Default: DATADIR/man]") - opt.add_option('--htmldir', type='string', - help="HTML documentation [Default: DATADIR/doc/PACKAGE]") - opt.add_option('--lv2-user', action='store_true', default=False, dest='lv2_user', - help="Install LV2 bundles to user-local location [Default: False]") - if sys.platform == "darwin": - opt.add_option('--lv2dir', type='string', - help="LV2 bundles [Default: /Library/Audio/Plug-Ins/LV2]") - else: - opt.add_option('--lv2dir', type='string', - help="LV2 bundles [Default: LIBDIR/lv2]") - g_step = 1 - -def check_header(conf, name, define='', mandatory=False): - "Check for a header iff it hasn't been checked for yet" - if type(conf.env['AUTOWAF_HEADERS']) != dict: - conf.env['AUTOWAF_HEADERS'] = {} - - checked = conf.env['AUTOWAF_HEADERS'] - if not name in checked: - checked[name] = True - includes = '' # search default system include paths - if sys.platform == "darwin": - includes = '/opt/local/include' - if define != '': - conf.check(header_name=name, includes=includes, define_name=define, mandatory=mandatory) - else: - conf.check(header_name=name, includes=includes, mandatory=mandatory) - -def nameify(name): - return name.replace('/', '_').replace('++', 'PP').replace('-', '_').replace('.', '_') - -def check_pkg(conf, name, **args): - if not 'mandatory' in args: - args['mandatory'] = True - "Check for a package iff it hasn't been checked for yet" - var_name = 'HAVE_' + nameify(args['uselib_store']) - check = not var_name in conf.env - if not check and 'atleast_version' in args: - # Re-check if version is newer than previous check - checked_version = conf.env['VERSION_' + name] - if checked_version and checked_version < args['atleast_version']: - check = True; - if check: - conf.check_cfg(package=name, args="--cflags --libs", **args) - found = bool(conf.env[var_name]) - if found: - conf.define(var_name, int(found)) - if 'atleast_version' in args: - conf.env['VERSION_' + name] = args['atleast_version'] - else: - conf.undefine(var_name) - if args['mandatory'] == True: - conf.fatal("Required package " + name + " not found") - -def configure(conf): - global g_step - if g_step > 1: - return - def append_cxx_flags(vals): - conf.env.append_value('CCFLAGS', vals.split()) - conf.env.append_value('CXXFLAGS', vals.split()) - conf.line_just = 43 - display_header('Global Configuration') - conf.check_tool('misc') - conf.check_tool('compiler_cc') - conf.check_tool('compiler_cxx') - conf.env['DOCS'] = Options.options.docs - conf.env['DEBUG'] = Options.options.debug - conf.env['STRICT'] = Options.options.strict - conf.env['PREFIX'] = os.path.abspath(os.path.expanduser(os.path.normpath(conf.env['PREFIX']))) - if Options.options.bundle: - conf.env['BUNDLE'] = True - conf.define('BUNDLE', 1) - conf.env['BINDIR'] = conf.env['PREFIX'] - conf.env['INCLUDEDIR'] = os.path.join(conf.env['PREFIX'], 'Headers') - conf.env['LIBDIR'] = os.path.join(conf.env['PREFIX'], 'Libraries') - conf.env['DATADIR'] = os.path.join(conf.env['PREFIX'], 'Resources') - conf.env['HTMLDIR'] = os.path.join(conf.env['PREFIX'], 'Resources/Documentation') - conf.env['MANDIR'] = os.path.join(conf.env['PREFIX'], 'Resources/Man') - conf.env['LV2DIR'] = os.path.join(conf.env['PREFIX'], 'PlugIns') - else: - conf.env['BUNDLE'] = False - if Options.options.bindir: - conf.env['BINDIR'] = Options.options.bindir - else: - conf.env['BINDIR'] = os.path.join(conf.env['PREFIX'], 'bin') - if Options.options.includedir: - conf.env['INCLUDEDIR'] = Options.options.includedir - else: - conf.env['INCLUDEDIR'] = os.path.join(conf.env['PREFIX'], 'include') - if Options.options.libdir: - conf.env['LIBDIR'] = Options.options.libdir - else: - conf.env['LIBDIR'] = os.path.join(conf.env['PREFIX'], 'lib') - if Options.options.datadir: - conf.env['DATADIR'] = Options.options.datadir - else: - conf.env['DATADIR'] = os.path.join(conf.env['PREFIX'], 'share') - if Options.options.configdir: - conf.env['CONFIGDIR'] = Options.options.configdir - else: - conf.env['CONFIGDIR'] = os.path.join(conf.env['PREFIX'], 'etc') - if Options.options.htmldir: - conf.env['HTMLDIR'] = Options.options.htmldir - else: - conf.env['HTMLDIR'] = os.path.join(conf.env['DATADIR'], 'doc', Utils.g_module.APPNAME) - if Options.options.mandir: - conf.env['MANDIR'] = Options.options.mandir - else: - conf.env['MANDIR'] = os.path.join(conf.env['DATADIR'], 'man') - if Options.options.lv2dir: - conf.env['LV2DIR'] = Options.options.lv2dir - else: - if Options.options.lv2_user: - if sys.platform == "darwin": - conf.env['LV2DIR'] = os.path.join(os.getenv('HOME'), 'Library/Audio/Plug-Ins/LV2') - else: - conf.env['LV2DIR'] = os.path.join(os.getenv('HOME'), '.lv2') - else: - if sys.platform == "darwin": - conf.env['LV2DIR'] = '/Library/Audio/Plug-Ins/LV2' - else: - conf.env['LV2DIR'] = os.path.join(conf.env['LIBDIR'], 'lv2') - - conf.env['BINDIRNAME'] = os.path.basename(conf.env['BINDIR']) - conf.env['LIBDIRNAME'] = os.path.basename(conf.env['LIBDIR']) - conf.env['DATADIRNAME'] = os.path.basename(conf.env['DATADIR']) - conf.env['CONFIGDIRNAME'] = os.path.basename(conf.env['CONFIGDIR']) - conf.env['LV2DIRNAME'] = os.path.basename(conf.env['LV2DIR']) - - if Options.options.docs: - doxygen = conf.find_program('doxygen') - if not doxygen: - conf.fatal("Doxygen is required to build documentation, configure without --docs") - - dot = conf.find_program('dot') - if not dot: - conf.fatal("Graphviz (dot) is required to build documentation, configure without --docs") - - if Options.options.debug: - conf.env['CCFLAGS'] = [ '-O0', '-g' ] - conf.env['CXXFLAGS'] = [ '-O0', '-g' ] - else: - append_cxx_flags('-DNDEBUG') - - if Options.options.strict: - conf.env.append_value('CCFLAGS', [ '-std=c99', '-pedantic' ]) - conf.env.append_value('CXXFLAGS', [ '-ansi', '-Woverloaded-virtual', '-Wnon-virtual-dtor']) - append_cxx_flags('-Wall -Wextra -Wno-unused-parameter') - - append_cxx_flags('-fPIC -DPIC -fshow-column') - - display_msg(conf, "Install prefix", conf.env['PREFIX']) - display_msg(conf, "Debuggable build", str(conf.env['DEBUG'])) - display_msg(conf, "Strict compiler flags", str(conf.env['STRICT'])) - display_msg(conf, "Build documentation", str(conf.env['DOCS'])) - print - - g_step = 2 - -def set_local_lib(conf, name, has_objects): - conf.define('HAVE_' + nameify(name.upper()), 1) - if has_objects: - if type(conf.env['AUTOWAF_LOCAL_LIBS']) != dict: - conf.env['AUTOWAF_LOCAL_LIBS'] = {} - conf.env['AUTOWAF_LOCAL_LIBS'][name.lower()] = True - else: - if type(conf.env['AUTOWAF_LOCAL_HEADERS']) != dict: - conf.env['AUTOWAF_LOCAL_HEADERS'] = {} - conf.env['AUTOWAF_LOCAL_HEADERS'][name.lower()] = True - -def use_lib(bld, obj, libs): - abssrcdir = os.path.abspath('.') - libs_list = libs.split() - for l in libs_list: - in_headers = l.lower() in bld.env['AUTOWAF_LOCAL_HEADERS'] - in_libs = l.lower() in bld.env['AUTOWAF_LOCAL_LIBS'] - if in_libs: - if hasattr(obj, 'uselib_local'): - obj.uselib_local += ' lib' + l.lower() + ' ' - else: - obj.uselib_local = 'lib' + l.lower() + ' ' - - if in_headers or in_libs: - inc_flag = '-iquote ' + os.path.join(abssrcdir, l.lower()) - for f in ['CCFLAGS', 'CXXFLAGS']: - if not inc_flag in bld.env[f]: - bld.env.append_value(f, inc_flag) - else: - if hasattr(obj, 'uselib'): - obj.uselib += ' ' + l - else: - obj.uselib = l - - -def display_header(title): - Utils.pprint('BOLD', title) - -def display_msg(conf, msg, status = None, color = None): - color = 'CYAN' - if type(status) == bool and status or status == "True": - color = 'GREEN' - elif type(status) == bool and not status or status == "False": - color = 'YELLOW' - Utils.pprint('BOLD', "%s :" % msg.ljust(conf.line_just), sep='') - Utils.pprint(color, status) - -def link_flags(env, lib): - return ' '.join(map(lambda x: env['LIB_ST'] % x, env['LIB_' + lib])) - -def compile_flags(env, lib): - return ' '.join(map(lambda x: env['CPPPATH_ST'] % x, env['CPPPATH_' + lib])) - -def set_recursive(): - global g_is_child - g_is_child = True - -def is_child(): - global g_is_child - return g_is_child - -# Pkg-config file -def build_pc(bld, name, version, libs): - '''Build a pkg-config file for a library. - name -- uppercase variable name (e.g. 'SOMENAME') - version -- version string (e.g. '1.2.3') - libs -- string/list of dependencies (e.g. 'LIBFOO GLIB') - ''' - - obj = bld.new_task_gen('subst') - obj.source = name.lower() + '.pc.in' - obj.target = name.lower() + '.pc' - obj.install_path = '${PREFIX}/${LIBDIRNAME}/pkgconfig' - pkg_prefix = bld.env['PREFIX'] - if pkg_prefix[-1] == '/': - pkg_prefix = pkg_prefix[:-1] - obj.dict = { - 'prefix' : pkg_prefix, - 'exec_prefix' : '${prefix}', - 'libdir' : '${prefix}/' + bld.env['LIBDIRNAME'], - 'includedir' : '${prefix}/include', - name + '_VERSION' : version, - } - if type(libs) != list: - libs = libs.split() - for i in libs: - obj.dict[i + '_LIBS'] = link_flags(bld.env, i) - obj.dict[i + '_CFLAGS'] = compile_flags(bld.env, i) - -# Doxygen API documentation -def build_dox(bld, name, version, srcdir, blddir): - if not bld.env['DOCS']: - return - obj = bld.new_task_gen('subst') - obj.source = 'doc/reference.doxygen.in' - obj.target = 'doc/reference.doxygen' - if is_child(): - src_dir = os.path.join(srcdir, name.lower()) - doc_dir = os.path.join(blddir, 'default', name.lower(), 'doc') - else: - src_dir = srcdir - doc_dir = os.path.join(blddir, 'default', 'doc') - obj.dict = { - name + '_VERSION' : version, - name + '_SRCDIR' : os.path.abspath(src_dir), - name + '_DOC_DIR' : os.path.abspath(doc_dir) - } - obj.install_path = '' - out1 = bld.new_task_gen('command-output') - out1.dependencies = [obj] - out1.stdout = '/doc/doxygen.out' - out1.stdin = '/doc/reference.doxygen' # whatever.. - out1.command = 'doxygen' - out1.argv = [os.path.abspath(doc_dir) + '/reference.doxygen'] - out1.command_is_external = True - -# Version code file generation -def build_version_files(header_path, source_path, domain, major, minor, micro): - header_path = os.path.abspath(header_path) - source_path = os.path.abspath(source_path) - text = "int " + domain + "_major_version = " + str(major) + ";\n" - text += "int " + domain + "_minor_version = " + str(minor) + ";\n" - text += "int " + domain + "_micro_version = " + str(micro) + ";\n" - try: - o = file(source_path, 'w') - o.write(text) - o.close() - except IOError: - print "Could not open", source_path, " for writing\n" - sys.exit(-1) - - text = "#ifndef __" + domain + "_version_h__\n" - text += "#define __" + domain + "_version_h__\n" - text += "extern const char* " + domain + "_revision;\n" - text += "extern int " + domain + "_major_version;\n" - text += "extern int " + domain + "_minor_version;\n" - text += "extern int " + domain + "_micro_version;\n" - text += "#endif /* __" + domain + "_version_h__ */\n" - try: - o = file(header_path, 'w') - o.write(text) - o.close() - except IOError: - print "Could not open", header_path, " for writing\n" - sys.exit(-1) - - return None - -def run_tests(ctx, appname, tests): - orig_dir = os.path.abspath(os.curdir) - failures = 0 - base = '..' - - top_level = os.path.abspath(ctx.curdir) != os.path.abspath(os.curdir) - if top_level: - os.chdir('./build/default/' + appname) - base = '../..' - else: - os.chdir('./build/default') - - lcov = True - lcov_log = open('lcov.log', 'w') - try: - # Clear coverage data - subprocess.call('lcov -d ./src -z'.split(), - stdout=lcov_log, stderr=lcov_log) - except: - lcov = False - print "Failed to run lcov, no coverage report will be generated" - - - # Run all tests - for i in tests: - print - Utils.pprint('BOLD', 'Running %s test %s' % (appname, i)) - if subprocess.call(i) == 0: - Utils.pprint('GREEN', 'Passed %s %s' % (appname, i)) - else: - failures += 1 - Utils.pprint('RED', 'Failed %s %s' % (appname, i)) - - if lcov: - # Generate coverage data - coverage_lcov = open('coverage.lcov', 'w') - subprocess.call(('lcov -c -d ./src -d ./test -b ' + base).split(), - stdout=coverage_lcov, stderr=lcov_log) - coverage_lcov.close() - - # Strip out unwanted stuff - coverage_stripped_lcov = open('coverage-stripped.lcov', 'w') - subprocess.call('lcov --remove coverage.lcov *boost* c++*'.split(), - stdout=coverage_stripped_lcov, stderr=lcov_log) - coverage_stripped_lcov.close() - - # Generate HTML coverage output - if not os.path.isdir('./coverage'): - os.makedirs('./coverage') - subprocess.call('genhtml -o coverage coverage-stripped.lcov'.split(), - stdout=lcov_log, stderr=lcov_log) - - lcov_log.close() - - print - Utils.pprint('BOLD', 'Summary:', sep=''), - if failures == 0: - Utils.pprint('GREEN', 'All ' + appname + ' tests passed') - else: - Utils.pprint('RED', str(failures) + ' ' + appname + ' test(s) failed') - - Utils.pprint('BOLD', 'Coverage:', sep='') - print os.path.abspath('coverage/index.html') - - os.chdir(orig_dir) - -def shutdown(): - # This isn't really correct (for packaging), but people asking is annoying - if Options.commands['install']: - try: os.popen("/sbin/ldconfig") - except: pass - diff --git a/libs/audiographer/wscript b/libs/audiographer/wscript index 31103b3095..1c651e834a 100644 --- a/libs/audiographer/wscript +++ b/libs/audiographer/wscript @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -import autowaf +from waflib.extras import autowaf as autowaf import os # Version of this package (even if built as a child) @@ -19,10 +19,10 @@ APPNAME = 'audiographer' VERSION = AUDIOGRAPHER_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -39,8 +39,8 @@ def configure(conf): autowaf.check_pkg(conf, 'sndfile', uselib_store='SNDFILE', atleast_version='1.0.18', mandatory=False) # Boost headers - autowaf.check_header(conf, 'boost/shared_ptr.hpp') - autowaf.check_header(conf, 'boost/format.hpp') + autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp') + autowaf.check_header(conf, 'cxx', 'boost/format.hpp') def build(bld): @@ -53,7 +53,7 @@ def build(bld): #bld.env['BUILD_TESTS'] = True bld.env['HAVE_ALL_GTHREAD'] = bld.env['HAVE_GLIB'] and bld.env['HAVE_GLIBMM'] and bld.env['HAVE_GTHREAD'] - audiographer = bld.new_task_gen('cxx', 'shlib') + audiographer = bld(features = 'cxx cxxshlib') audiographer.source = ''' private/gdither/gdither.cc src/general/sample_format_converter.cc @@ -69,17 +69,17 @@ def build(bld): audiographer.name = 'libaudiographer' audiographer.target = 'audiographer' - audiographer.export_incdirs = ['.', './src'] + audiographer.export_includes = ['.', './src'] audiographer.includes = ['.', './src'] audiographer.uselib = 'GLIB GLIBMM GTHREAD SAMPLERATE SNDFILE' - audiographer.uselib_local = 'libpbd' + audiographer.use = 'libpbd' audiographer.vnum = AUDIOGRAPHER_LIB_VERSION audiographer.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') if bld.env['BUILD_TESTS'] and bld.env['HAVE_CPPUNIT']: # Unit tests - obj = bld.new_task_gen('cxx', 'program') + obj = bld(features = 'cxx cxxprogram') obj.source = ''' tests/test_runner.cc tests/type_utils_test.cc @@ -109,7 +109,7 @@ def build(bld): tests/general/sr_converter_test.cc ''' - obj.uselib_local = 'libaudiographer' + obj.use = 'libaudiographer' obj.uselib = 'CPPUNIT GLIBMM' obj.target = 'run-tests' obj.install_path = '' diff --git a/libs/clearlooks-newer/wscript b/libs/clearlooks-newer/wscript index b3ba10c5e2..d446275d49 100644 --- a/libs/clearlooks-newer/wscript +++ b/libs/clearlooks-newer/wscript @@ -1,14 +1,14 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os import sys -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' path_prefix = 'libs/clearlooks-newer' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -16,7 +16,7 @@ def configure(conf): conf.check_tool('compiler_cc') def build(bld): - obj = bld.new_task_gen('cc', 'shlib') + obj = bld(features = 'c cshlib') obj.source = ''' animation.c cairo-support.c @@ -40,7 +40,7 @@ def build(bld): if sys.platform == 'darwin': # Bit of a hack: make a symlink to the .dylib that meets GTK's criteria for finding it (namely that the library must be a *.so # and that it must reside in a directory called `engines') - obj = bld.new_task_gen(target = 'engines', rule = 'mkdir -p ${TGT} && rm -f ${TGT}/libclearlooks.so && ln -s ../libclearlooks.dylib ${TGT}/libclearlooks.so') + obj = bld(target = 'engines', rule = 'mkdir -p ${TGT} && rm -f ${TGT}/libclearlooks.so && ln -s ../libclearlooks.dylib ${TGT}/libclearlooks.so') def shutdown(): diff --git a/libs/evoral/wscript b/libs/evoral/wscript index e1b729c826..24a5f4dd1f 100644 --- a/libs/evoral/wscript +++ b/libs/evoral/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import Options import os @@ -19,10 +19,10 @@ APPNAME = 'evoral' VERSION = EVORAL_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) opt.add_option('--test', action='store_true', default=False, dest='build_tests', help="Build unit tests") @@ -38,8 +38,8 @@ def configure(conf): autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD', atleast_version='2.14.0') # Boost headers - autowaf.check_header(conf, 'boost/shared_ptr.hpp') - autowaf.check_header(conf, 'boost/weak_ptr.hpp') + autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp') + autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp') conf.env['BUILD_TESTS'] = Options.options.build_tests @@ -54,7 +54,7 @@ def build(bld): # Pkgconfig file #autowaf.build_pc(bld, 'EVORAL', EVORAL_VERSION, 'GLIBMM GTHREAD') - libsmf = bld.new_task_gen('cc', 'shlib') + libsmf = bld(features = 'c cshlib') libsmf.source = ''' src/libsmf/smf.c src/libsmf/smf_decode.c @@ -62,7 +62,7 @@ def build(bld): src/libsmf/smf_save.c src/libsmf/smf_tempo.c ''' - libsmf.export_incdirs = ['./src/libsmf'] + libsmf.export_includes = ['./src/libsmf'] libsmf.defines = 'SMF_VERSION="1.2"' libsmf.includes = ['./src'] libsmf.name = 'libsmf' @@ -85,50 +85,50 @@ def build(bld): ''' # Library - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = lib_source - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.includes = ['.', './src'] obj.name = 'libevoral' obj.target = 'evoral' obj.uselib = 'GLIBMM GTHREAD SMF' - obj.uselib_local = 'libsmf libpbd' + obj.use = 'libsmf libpbd' obj.vnum = EVORAL_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') obj.defines = ['PACKAGE="libevoral"' ] if bld.env['BUILD_TESTS'] and bld.env['HAVE_CPPUNIT']: # Static library (for unit test code coverage) - obj = bld.new_task_gen('cxx', 'staticlib') + obj = bld(features = 'cxx cstlib') obj.source = lib_source obj.source = lib_source - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.includes = ['.', './src'] obj.name = 'libevoral_static' obj.target = 'evoral_static' obj.uselib = 'GLIBMM GTHREAD SMF' - obj.uselib_local = 'libsmf libpbd' + obj.use = 'libsmf libpbd' obj.vnum = EVORAL_LIB_VERSION obj.install_path = '' - obj.ccflags = [ '-fprofile-arcs', '-ftest-coverage' ] + obj.cflags = [ '-fprofile-arcs', '-ftest-coverage' ] obj.cxxflags = [ '-fprofile-arcs', '-ftest-coverage' ] obj.defines = ['PACKAGE="libevoral"' ] # Unit tests - obj = bld.new_task_gen('cxx', 'program') + obj = bld(features = 'cxx cxxprogram') obj.source = ''' test/SequenceTest.cpp test/SMFTest.cpp test/testrunner.cpp ''' obj.includes = ['.', './src'] - obj.uselib_local = 'libevoral_static' + obj.use = 'libevoral_static' obj.uselib = 'CPPUNIT SNDFILE' obj.libs = 'gcov' obj.target = 'run-tests' obj.name = 'libevoral-tests' obj.install_path = '' - obj.ccflags = [ '-fprofile-arcs', '-ftest-coverage' ] + obj.cflags = [ '-fprofile-arcs', '-ftest-coverage' ] obj.cxxflags = [ '-fprofile-arcs', '-ftest-coverage' ] def shutdown(): diff --git a/libs/gnomecanvas/wscript b/libs/gnomecanvas/wscript index e3085065dc..64ade4a189 100644 --- a/libs/gnomecanvas/wscript +++ b/libs/gnomecanvas/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Version of this package (even if built as a child) @@ -19,8 +19,8 @@ APPNAME = 'libgnomecanvas' VERSION = LIBGNOMECANVAS_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' path_prefix = 'libs/gnomecanvas/' @@ -41,7 +41,7 @@ libgnomecanvas_sources = [ 'libgnomecanvas/libgnomecanvastypes.c' ] -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -52,9 +52,9 @@ def configure(conf): def build(bld): # Library - obj = bld.new_task_gen('cc', 'shlib') + obj = bld(features = 'c cshlib') obj.source = libgnomecanvas_sources - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.includes = ['.'] obj.name = 'libgnomecanvas-2' obj.target = 'gnomecanvas-2' diff --git a/libs/gtkmm2ext/wscript b/libs/gtkmm2ext/wscript index fa5dea50e0..3103ebd9b8 100644 --- a/libs/gtkmm2ext/wscript +++ b/libs/gtkmm2ext/wscript @@ -1,7 +1,6 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os -import glob # Version of this package (even if built as a child) MAJOR = '0' @@ -60,12 +59,12 @@ gtkmm2ext_sources = [ ] # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' path_prefix = 'libs/gtkmm2ext/' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -78,20 +77,20 @@ def configure(conf): def build(bld): - obj = bld.new_task_gen(features = 'cc cxx cshlib') + obj = bld(features = 'c cxx cxxshlib cshlib') obj.source = gtkmm2ext_sources - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.includes = ['.'] obj.name = 'libgtkmm2ext' obj.target = 'gtkmm2ext' obj.uselib = 'GTKMM GTK GTKOSX OSX GDK' - obj.uselib_local = 'libpbd' + obj.use = 'libpbd' obj.vnum = GTKMM2EXT_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') obj.cxxflags = [ '-DPACKAGE="libgtkmm2ext"', '-DLOCALEDIR="' + os.path.join( - os.path.normpath(bld.env['DATADIRNAME']), 'locale') + '"'] + os.path.normpath(bld.env['DATADIR']), 'locale') + '"'] if bld.env['GTKOSX']: obj.source += ['gtkapplication_quartz.mm'] else: @@ -99,7 +98,7 @@ def build(bld): # i18n if bld.env['ENABLE_NLS']: - mo_files = glob.glob (os.path.join (bld.get_curdir(), 'po/*.mo')) + mo_files = bld.path.ant_glob ('po/*.mo') for mo in mo_files: lang = os.path.basename (mo).replace ('.mo', '') bld.install_as (os.path.join(bld.env['PREFIX'], 'share', 'locale', diff --git a/libs/midi++2/wscript b/libs/midi++2/wscript index f236d0a8cd..e4dbf1eab6 100644 --- a/libs/midi++2/wscript +++ b/libs/midi++2/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os import sys @@ -20,12 +20,12 @@ APPNAME = 'libmidipp' VERSION = LIBMIDIPP_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' path_prefix = 'libs/midi++2/' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -38,12 +38,12 @@ def configure(conf): autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP', atleast_version='2.0') # Boost headers - autowaf.check_header(conf, 'boost/shared_ptr.hpp') - autowaf.check_header(conf, 'boost/weak_ptr.hpp') + autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp') + autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp') def build(bld): # Library - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = ''' midi.cc channel.cc @@ -57,12 +57,12 @@ def build(bld): ''' # everybody loves JACK obj.cxxflags = [ '-DWITH_JACK_MIDI' ] - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.includes = ['.', '../surfaces/control_protocol'] obj.name = 'libmidipp' obj.target = 'midipp' obj.uselib = 'GLIBMM SIGCPP XML JACK OSX' - obj.uselib_local = 'libpbd libevoral libtimecode' + obj.use = 'libpbd libevoral libtimecode' obj.vnum = LIBMIDIPP_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') diff --git a/libs/panners/1in2out/wscript b/libs/panners/1in2out/wscript index 2238124dc7..70c34d0779 100644 --- a/libs/panners/1in2out/wscript +++ b/libs/panners/1in2out/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Library version (UNIX style major, minor, micro) @@ -9,24 +9,24 @@ import os LIBARDOUR_PAN1IN2OUT_LIB_VERSION = '1.0.0' # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): autowaf.configure(conf) def build(bld): - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = [ 'panner_1in2out.cc' ] - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.cxxflags = '-DPACKAGE="libardour_pan1in2out"' obj.includes = ['.'] obj.name = 'libardour_pan1in2out' obj.target = 'pan1in2out' - obj.uselib_local = 'libardour libardour_cp libpbd' + obj.use = 'libardour libardour_cp libpbd' obj.vnum = LIBARDOUR_PAN1IN2OUT_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3', 'panners') diff --git a/libs/panners/2in2out/wscript b/libs/panners/2in2out/wscript index 2891dfd6f7..8288ef28f7 100644 --- a/libs/panners/2in2out/wscript +++ b/libs/panners/2in2out/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Library version (UNIX style major, minor, micro) @@ -9,24 +9,24 @@ import os LIBARDOUR_PAN2IN2OUT_LIB_VERSION = '1.0.0' # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): autowaf.configure(conf) def build(bld): - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = [ 'panner_2in2out.cc' ] - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.cxxflags = '-DPACKAGE="libardour_pan2in2out"' obj.includes = ['.'] obj.name = 'libardour_pan2in2out' obj.target = 'pan2in2out' - obj.uselib_local = 'libardour libardour_cp libpbd' + obj.use = 'libardour libardour_cp libpbd' obj.vnum = LIBARDOUR_PAN2IN2OUT_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3', 'panners') diff --git a/libs/panners/vbap/wscript b/libs/panners/vbap/wscript index bd311272b5..c6ba94261f 100644 --- a/libs/panners/vbap/wscript +++ b/libs/panners/vbap/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Library version (UNIX style major, minor, micro) @@ -9,24 +9,24 @@ import os LIBARDOUR_PANVBAP_LIB_VERSION = '1.0.0' # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): autowaf.configure(conf) def build(bld): - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = [ 'vbap_speakers.cc', 'vbap.cc' ] - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.cxxflags = '-DPACKAGE="libardour_panvbap"' obj.includes = ['.'] obj.name = 'libardour_panvbap' obj.target = 'panvbap' - obj.uselib_local = 'libardour libardour_cp libpbd' + obj.use = 'libardour libardour_cp libpbd' obj.vnum = LIBARDOUR_PANVBAP_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3', 'panners') diff --git a/libs/panners/wscript b/libs/panners/wscript index 3c1a013732..76f14e6fa1 100644 --- a/libs/panners/wscript +++ b/libs/panners/wscript @@ -1,14 +1,14 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' panners = [ '2in2out', '1in2out', 'vbap' ] -def set_options(opt): +def options(opt): autowaf.set_options(opt) def sub_config_and_use(conf, name, has_objects = True): diff --git a/libs/pbd/wscript b/libs/pbd/wscript index 66b63c999e..c2be9849a9 100644 --- a/libs/pbd/wscript +++ b/libs/pbd/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os import sys import TaskGen @@ -21,12 +21,12 @@ APPNAME = 'libpbd' VERSION = LIBPBD_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' path_prefix = 'libs/pbd/' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -42,19 +42,19 @@ def configure(conf): conf.check(function_name='getmntent', header_name='mntent.h', define_name='HAVE_GETMNTENT') conf.check(header_name='execinfo.h', define_name='HAVE_EXECINFO') conf.check(header_name='unistd.h', define_name='HAVE_UNISTD') - if conf.check_cc(function_name='posix_memalign', header_name='stdlib.h', ccflags='-D_XOPEN_SOURCE=600') == False: + if conf.check_cc(function_name='posix_memalign', header_name='stdlib.h', cflags='-D_XOPEN_SOURCE=600') == False: conf.define ('NO_POSIX_MEMALIGN',1) - conf.write_config_header('libpbd-config.h') + conf.write_config_header('libpbd-config.h', remove=False) # Boost headers - autowaf.check_header(conf, 'boost/shared_ptr.hpp') - autowaf.check_header(conf, 'boost/weak_ptr.hpp') - # autowaf.check_header(conf, 'boost/uuid/uuid.hpp') + autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp') + autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp') + # autowaf.check_header(conf, 'cxx', 'boost/uuid/uuid.hpp') def build(bld): # Library - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = ''' basename.cc base_ui.cc @@ -111,7 +111,7 @@ def build(bld): if bld.env['DEBUG_RT_ALLOC']: obj.source += 'debug_rt_alloc.c' - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.includes = ['.'] obj.name = 'libpbd' obj.target = 'pbd' @@ -129,7 +129,7 @@ def build(bld): if bld.env['BUILD_TESTS'] and bld.env['HAVE_CPPUNIT']: # Unit tests - testobj = bld.new_task_gen('cxx', 'program') + testobj = bld(features = 'cxx cxxprogram') testobj.source = ''' test/testrunner.cc test/xpath.cc @@ -139,7 +139,7 @@ def build(bld): testobj.target = 'run-tests' testobj.includes = obj.includes + ['test', '../pbd'] testobj.uselib = 'CPPUNIT XML SNDFILE' - testobj.uselib_local = 'libpbd' + testobj.use = 'libpbd' def shutdown(): diff --git a/libs/qm-dsp/wscript b/libs/qm-dsp/wscript index a77822abac..db759c69db 100644 --- a/libs/qm-dsp/wscript +++ b/libs/qm-dsp/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Version of this package (even if built as a child) @@ -16,10 +16,10 @@ APPNAME = 'qm-dsp' VERSION = QM_DSP_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -28,7 +28,7 @@ def configure(conf): def build(bld): # Host Library - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = ''' dsp/onsets/DetectionFunction.cpp dsp/onsets/PeakPicking.cpp @@ -47,7 +47,7 @@ def build(bld): maths/MathUtilities.cpp base/Pitch.cpp ''' - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.includes = ['.'] obj.name = 'libqmdsp' obj.target = 'qmdsp' diff --git a/libs/rubberband/wscript b/libs/rubberband/wscript index 011a858aca..15fb9b2ade 100644 --- a/libs/rubberband/wscript +++ b/libs/rubberband/wscript @@ -1,7 +1,7 @@ #!/usr/bin/env python -import autowaf -import glob +from waflib.extras import autowaf as autowaf import os +import glob # Version of this package (even if built as a child) LIBRUBBERBAND_VERSION = '0.0.0' @@ -17,10 +17,10 @@ APPNAME = 'librubberband' VERSION = LIBRUBBERBAND_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -29,18 +29,18 @@ def configure(conf): def build(bld): # Library - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') prefix = 'libs/rubberband/' sources = glob.glob(prefix + 'src/*.cpp') obj.source = [ ] for i in sources: obj.source += [ i.replace(prefix, '') ] - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.includes = ['.', 'rubberband'] obj.name = 'librubberband' obj.target = 'rubberband' obj.uselib = 'FFTW3 FFTW3F SAMPLERATE SNDFILE' - obj.uselib_local = 'libvamphost' + obj.use = 'libvamphost' obj.vnum = LIBRUBBERBAND_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') obj.cxxflags = '-DPACKAGE="librubberband"' diff --git a/libs/surfaces/control_protocol/wscript b/libs/surfaces/control_protocol/wscript index a4afd68539..8c083ba9ec 100644 --- a/libs/surfaces/control_protocol/wscript +++ b/libs/surfaces/control_protocol/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Library version (UNIX style major, minor, micro) @@ -10,27 +10,27 @@ APPNAME = 'libardour_cp' LIBARDOUR_CP_LIB_VERSION = '4.1.0' # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): autowaf.configure(conf) def build(bld): - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = ''' basic_ui.cc control_protocol.cc ''' - obj.export_incdirs = ['.', './control_protocol' ] + obj.export_includes = ['.', './control_protocol' ] obj.cxxflags = '-DPACKAGE="ardour_cp"' obj.includes = ['.', './control_protocol'] obj.name = 'libardour_cp' obj.target = 'ardourcp' - obj.uselib_local = 'libardour libtimecode' + obj.use = 'libardour libtimecode' obj.vnum = LIBARDOUR_CP_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') diff --git a/libs/surfaces/frontier/wscript b/libs/surfaces/frontier/wscript index cd388b8bff..c23b3cf3c9 100644 --- a/libs/surfaces/frontier/wscript +++ b/libs/surfaces/frontier/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Version of this package (even if built as a child) @@ -16,10 +16,10 @@ APPNAME = 'libsurfaces' VERSION = LIBSURFACES_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -27,18 +27,18 @@ def configure(conf): def build(bld): # Generic MIDI - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = ''' generic_midi_control_protocol.cc interface.cc midicontrollable.cc ''' - obj.export_incdirs = ['./generic_midi'] + obj.export_includes = ['./generic_midi'] obj.cxxflags = '-DPACKAGE="ardour_genericmidi"' obj.includes = ['.', './generic_midi'] obj.name = 'libgeneric_midi' obj.target = 'generic_midi' - obj.uselib_local = 'libardour libsurfaces' + obj.use = 'libardour libsurfaces' obj.vnum = LIBSURFACES_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3', 'surfaces') diff --git a/libs/surfaces/generic_midi/wscript b/libs/surfaces/generic_midi/wscript index 9111df5982..6daf413b66 100644 --- a/libs/surfaces/generic_midi/wscript +++ b/libs/surfaces/generic_midi/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Library version (UNIX style major, minor, micro) @@ -9,17 +9,17 @@ import os LIBARDOUR_GENERIC_MIDI_LIB_VERSION = '4.1.0' # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): autowaf.configure(conf) def build(bld): - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = ''' generic_midi_control_protocol.cc gmcp_gui.cc @@ -29,13 +29,13 @@ def build(bld): midifunction.cc midiaction.cc ''' - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.cxxflags = '-DPACKAGE="ardour_genericmidi"' obj.includes = ['.', './generic_midi'] obj.name = 'libardour_generic_midi' obj.target = 'ardour_generic_midi' obj.uselib = 'GTKMM GTK GDK' - obj.uselib_local = 'libardour libardour_cp libgtkmm2ext libpbd' + obj.use = 'libardour libardour_cp libgtkmm2ext libpbd' obj.vnum = LIBARDOUR_GENERIC_MIDI_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3', 'surfaces') diff --git a/libs/surfaces/mackie/wscript b/libs/surfaces/mackie/wscript index f091acb148..ba8b8e5b4b 100644 --- a/libs/surfaces/mackie/wscript +++ b/libs/surfaces/mackie/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Library version (UNIX style major, minor, micro) @@ -9,17 +9,17 @@ import os LIBARDOUR_MCP_LIB_VERSION = '4.1.0' # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): autowaf.configure(conf) def build(bld): - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = ''' bcf_surface.cc bcf_surface_generated.cc @@ -41,13 +41,13 @@ def build(bld): surface_port.cc types.cc ''' - obj.export_incdirs = ['./mackie'] + obj.export_includes = ['./mackie'] obj.cxxflags = '-DPACKAGE="ardour_mackie"' obj.includes = ['.', './mackie'] obj.name = 'libardour_mcp' obj.target = 'ardour_mcp' obj.uselib = 'GTKMM' - obj.uselib_local = 'libardour libardour_cp libgtkmm2ext' + obj.use = 'libardour libardour_cp libgtkmm2ext' obj.vnum = LIBARDOUR_MCP_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3', 'surfaces') diff --git a/libs/surfaces/osc/wscript b/libs/surfaces/osc/wscript index 4d62bda7bc..1ab9bf42a7 100644 --- a/libs/surfaces/osc/wscript +++ b/libs/surfaces/osc/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Library version (UNIX style major, minor, micro) @@ -9,10 +9,10 @@ import os LIBARDOUR_OSC_LIB_VERSION = '4.1.0' # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -20,20 +20,20 @@ def configure(conf): autowaf.check_pkg(conf, 'liblo', uselib_store='LO', linkflags='-llo') def build(bld): - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = ''' osc.cc osc_controllable.cc osc_route_observer.cc interface.cc ''' - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.cxxflags = '-DPACKAGE="ardour_cp"' obj.includes = ['.', './osc'] obj.name = 'libardour_osc' obj.target = 'ardour_osc' obj.uselib = ' LO ' - obj.uselib_local = 'libardour libardour_cp libpbd' + obj.use = 'libardour libardour_cp libpbd' obj.vnum = LIBARDOUR_OSC_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3', 'surfaces') diff --git a/libs/surfaces/powermate/wscript b/libs/surfaces/powermate/wscript index 6f263fc9a0..fb97607169 100644 --- a/libs/surfaces/powermate/wscript +++ b/libs/surfaces/powermate/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Library version (UNIX style major, minor, micro) @@ -9,27 +9,27 @@ import os LIBARDOUR_POWERMATE_LIB_VERSION = '4.1.0' # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): autowaf.configure(conf) def build(bld): - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = ''' interface.cc powermate.cc ''' - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.cxxflags = '-DPACKAGE="ardour_powermate"' obj.includes = ['.' ] obj.name = 'libpowermate' obj.target = 'powermate' - obj.uselib_local = 'libardour libardour_cp' + obj.use = 'libardour libardour_cp' obj.vnum = LIBARDOUR_POWERMATE_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3', 'surfaces') diff --git a/libs/surfaces/tranzport/wscript b/libs/surfaces/tranzport/wscript index 7a7d5d2a05..311a9a2045 100644 --- a/libs/surfaces/tranzport/wscript +++ b/libs/surfaces/tranzport/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Library version (UNIX style major, minor, micro) @@ -9,17 +9,17 @@ import os LIBARDOUR_TRANZPORT_LIB_VERSION = '4.1.0' # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): autowaf.configure(conf) def build(bld): - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = ''' button_events.cc buttons.cc @@ -38,12 +38,12 @@ def build(bld): wheel.cc wheel_modes.cc ''' - obj.export_incdirs = ['./tranzport'] + obj.export_includes = ['./tranzport'] obj.cxxflags = '-DPACKAGE="ardour_tranzport"' obj.includes = ['.', './tranzport'] obj.name = 'libardour_tranzport' obj.target = 'ardour_tranzport' - obj.uselib_local = 'libardour libardour_cp' + obj.use = 'libardour libardour_cp' obj.vnum = LIBARDOUR_TRANZPORT_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3', 'surfaces') diff --git a/libs/surfaces/wiimote/wscript b/libs/surfaces/wiimote/wscript index 3c4650ca9b..3fbea7e248 100644 --- a/libs/surfaces/wiimote/wscript +++ b/libs/surfaces/wiimote/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Library version (UNIX style major, minor, micro) @@ -9,27 +9,27 @@ import os LIBARDOUR_WIIMOTE_LIB_VERSION = '4.1.0' # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): autowaf.configure(conf) def build(bld): - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = ''' wiimote.cc interface.cc ''' - obj.export_incdirs = ['./wiimote'] + obj.export_includes = ['./wiimote'] obj.cxxflags = '-DPACKAGE="ardour_wiimote"' obj.includes = ['.', './wiimote'] obj.name = 'libwiimote' obj.target = 'wiimote' - obj.uselib_local = 'libardour libardour_cp' + obj.use = 'libardour libardour_cp' obj.vnum = LIBARDOUR_WIIMOTE_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3', 'surfaces') diff --git a/libs/surfaces/wscript b/libs/surfaces/wscript index 1b9d5c7091..9f5c4749e7 100644 --- a/libs/surfaces/wscript +++ b/libs/surfaces/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import Options # Version of this package (even if built as a child) @@ -16,8 +16,8 @@ APPNAME = 'libsurfaces' VERSION = LIBSURFACES_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' children = [ 'control_protocol', @@ -30,7 +30,7 @@ children = [ 'wiimote' ] -def set_options(opt): +def options(opt): autowaf.set_options(opt) def sub_config_and_use(conf, name, has_objects = True): @@ -44,7 +44,11 @@ def configure(conf): for i in children: sub_config_and_use(conf, i) - conf.check_cc (lib='libusb', header_name='libusb.h', function_name='usb_interrupt_write', define_name='BUILD_TRANZPORT') + autowaf.check_pkg(conf, 'libusb-1.0', uselib_store='USB', mandatory=False) + if conf.env['HAVE_USB']: + conf.define('BUILD_TRANZPORT', 1) + + #conf.check_cc (lib='libusb', header_name='libusb.h', function_name='usb_interrupt_write', define_name='BUILD_TRANZPORT') conf.check_cc (header_name='linux/input.h', define_name='BUILD_POWERMATE') conf.check_cc (lib='lo', header_name='lo/lo.h', function_name='lo_server_new', define_name='BUILD_OSC') diff --git a/libs/taglib/wscript b/libs/taglib/wscript index b7276d01c5..986f8302ab 100644 --- a/libs/taglib/wscript +++ b/libs/taglib/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import glob import os @@ -17,12 +17,10 @@ APPNAME = 'libtaglib' VERSION = LIBTAGLIB_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -path_prefix = 'libs/taglib/' - -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -31,25 +29,23 @@ def configure(conf): def build(bld): # Library - obj = bld.new_task_gen('cxx', 'shlib') - sources = glob.glob(path_prefix + 'taglib/*.cpp') - sources += glob.glob(path_prefix + 'taglib/flac/*.cpp') - sources += glob.glob(path_prefix + 'taglib/mpc/*.cpp') - sources += glob.glob(path_prefix + 'taglib/mpeg/*.cpp') - sources += glob.glob(path_prefix + 'taglib/mpeg/id3v1/*.cpp') - sources += glob.glob(path_prefix + 'taglib/mpeg/id3v2/*.cpp') - sources += glob.glob(path_prefix + 'taglib/mpeg/id3v2/frames/*.cpp') - sources += glob.glob(path_prefix + 'taglib/ogg/*.cpp') - sources += glob.glob(path_prefix + 'taglib/ogg/vorbis/*.cpp') - sources += glob.glob(path_prefix + 'taglib/ogg/speex/*.cpp') - sources += glob.glob(path_prefix + 'taglib/ogg/flac/*.cpp') - sources += glob.glob(path_prefix + 'taglib/trueaudio/*.cpp') - sources += glob.glob(path_prefix + 'taglib/wavpack/*.cpp') - sources += glob.glob(path_prefix + 'taglib/ape/*.cpp') - sources += glob.glob(path_prefix + 'taglib/toolkit/*.cpp') - obj.source = [] - for i in sources: - obj.source += [ i.replace(path_prefix, '') ] + obj = bld(features = 'cxx cxxshlib') + sources = bld.path.ant_glob('taglib/*.cpp') + sources += bld.path.ant_glob('taglib/flac/*.cpp') + sources += bld.path.ant_glob('taglib/mpc/*.cpp') + sources += bld.path.ant_glob('taglib/mpeg/*.cpp') + sources += bld.path.ant_glob('taglib/mpeg/id3v1/*.cpp') + sources += bld.path.ant_glob('taglib/mpeg/id3v2/*.cpp') + sources += bld.path.ant_glob('taglib/mpeg/id3v2/frames/*.cpp') + sources += bld.path.ant_glob('taglib/ogg/*.cpp') + sources += bld.path.ant_glob('taglib/ogg/vorbis/*.cpp') + sources += bld.path.ant_glob('taglib/ogg/speex/*.cpp') + sources += bld.path.ant_glob('taglib/ogg/flac/*.cpp') + sources += bld.path.ant_glob('taglib/trueaudio/*.cpp') + sources += bld.path.ant_glob('taglib/wavpack/*.cpp') + sources += bld.path.ant_glob('taglib/ape/*.cpp') + sources += bld.path.ant_glob('taglib/toolkit/*.cpp') + obj.source = sources include_dirs = ''' taglib @@ -67,7 +63,7 @@ def build(bld): taglib/ogg/speex taglib/ogg/flac '''.split() - obj.export_incdirs = ['.', 'taglib', 'taglib/toolkit'] + obj.export_includes = ['.', 'taglib', 'taglib/toolkit'] obj.includes = include_dirs obj.name = 'libtaglib' obj.target = 'taglib' diff --git a/libs/timecode/wscript b/libs/timecode/wscript index be84a4b940..f919649e25 100644 --- a/libs/timecode/wscript +++ b/libs/timecode/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import Options import os @@ -19,10 +19,10 @@ APPNAME = 'timecode' VERSION = TIMECODE_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -32,9 +32,9 @@ def configure(conf): def build(bld): # Library - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = [ 'src/time.cc', 'src/bbt_time.cc' ] - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.includes = ['.', './src'] obj.name = 'libtimecode' obj.target = 'timecode' diff --git a/libs/vamp-plugins/wscript b/libs/vamp-plugins/wscript index 4fde44ea34..4ec6c198b3 100644 --- a/libs/vamp-plugins/wscript +++ b/libs/vamp-plugins/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Version of this package (even if built as a child) @@ -16,10 +16,10 @@ APPNAME = 'libardourvampplugins' VERSION = LIBARDOURVAMPPLUGINS_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -27,11 +27,11 @@ def configure(conf): conf.check_tool('compiler_cxx') autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW3F', mandatory=True) autowaf.check_pkg(conf, 'aubio', uselib_store='AUBIO', mandatory=False) - conf.write_config_header('libvampplugins-config.h') + conf.write_config_header('libvampplugins-config.h', remove=False) def build(bld): # Library - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = ''' plugins.cpp AmplitudeFollower.cpp @@ -40,12 +40,12 @@ def build(bld): SpectralCentroid.cpp ZeroCrossing.cpp ''' - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.includes = ['.'] obj.name = 'libardourvampplugins' obj.target = 'ardourvampplugins' obj.uselib = 'FFTW3F' - obj.uselib_local = 'libvampplugin libqmdsp' + obj.use = 'libvampplugin libqmdsp' if bld.env['HAVE_AUBIO']: obj.source += ' Onset.cpp ' obj.uselib += ' AUBIO ' diff --git a/libs/vamp-sdk/wscript b/libs/vamp-sdk/wscript index 7ea25d71b2..aabac61ea1 100644 --- a/libs/vamp-sdk/wscript +++ b/libs/vamp-sdk/wscript @@ -1,5 +1,5 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import os # Version of this package (even if built as a child) @@ -16,10 +16,10 @@ APPNAME = 'libvamp' VERSION = LIBVAMP_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -31,7 +31,7 @@ def configure(conf): def build(bld): # Host Library - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = ''' src/vamp-hostsdk/PluginHostAdapter.cpp src/vamp-hostsdk/PluginBufferingAdapter.cpp @@ -41,7 +41,7 @@ def build(bld): src/vamp-hostsdk/PluginWrapper.cpp src/vamp-hostsdk/RealTime.cpp ''' - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.includes = ['.'] obj.name = 'libvamphost' obj.target = 'vamphost' @@ -50,12 +50,12 @@ def build(bld): obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') # Plugin Library - obj = bld.new_task_gen('cxx', 'shlib') + obj = bld(features = 'cxx cxxshlib') obj.source = ''' src/vamp-sdk/PluginAdapter.cpp src/vamp-sdk/RealTime.cpp ''' - obj.export_incdirs = ['.'] + obj.export_includes = ['.'] obj.includes = ['.'] obj.name = 'libvampplugin' obj.target = 'vampplugin' diff --git a/templates/wscript b/templates/wscript index 62ed37e5a2..4e1bb0fd6b 100644 --- a/templates/wscript +++ b/templates/wscript @@ -1,10 +1,9 @@ #!/usr/bin/python import os -import glob -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' def configure(conf): pass @@ -19,14 +18,13 @@ def build(bld): subst_dict['%JACK_INPUT%'] = 'alsa_pcm:playback_' subst_dict['%JACK_OUTPUT%'] = 'alsa_pcm:capture_' - templates = glob.glob(os.path.join(bld.get_curdir(), '*.template.in')) + templates = bld.path.ant_glob('*.template.in') for t in templates: - b = os.path.basename(t) - obj = bld.new_task_gen('subst') - obj.source = [ b ] - obj.target = [ b.replace('.in', '') ] + obj = bld(features = 'subst') + obj.source = [ t ] + obj.target = [ os.path.basename(t.srcpath()).replace('.in', '') ] obj.dict = subst_dict obj.install_path = os.path.join(bld.env['DATADIR'], 'ardour3', 'templates') -def set_options(opt): +def options(opt): pass diff --git a/tools/sanity_check/wscript b/tools/sanity_check/wscript index 1ada9e4725..fdfd7cfc2c 100644 --- a/tools/sanity_check/wscript +++ b/tools/sanity_check/wscript @@ -1,13 +1,13 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import Options import os # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): @@ -15,7 +15,7 @@ def configure(conf): conf.check_tool('compiler_cxx') def build(bld): - obj = bld.new_task_gen(features = 'cxx cprogram') + obj = bld(features = 'cxx cxxprogram') obj.includes = [ '.' ] obj.source = [ 'main.cpp', 'systemtest.cpp' ] obj.target = 'sanityCheck' diff --git a/waf b/waf index ce1e4b3061eb6b15fbe73a37d365242a1deed2de..c71880baa01c1c8fcc9285f95ca508f886e094c7 100755 GIT binary patch delta 88527 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 RP81|M3BM>n3L`u{Jqp`R@E8C9 delta 90073 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%0A0W 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 QNMd;-Elq$5BRoAl3KN{$M*si- diff --git a/wscript b/wscript index 7e3a68d2be..0b4fd56282 100644 --- a/wscript +++ b/wscript @@ -1,20 +1,19 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf import Options import os import re import string import subprocess import sys -import glob # Variables for 'waf dist' VERSION = '3.0alpha10' APPNAME = 'Ardour' # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' children = [ 'libs/pbd', @@ -139,22 +138,22 @@ def set_compiler_flags (conf,opt): if config[config_arch] == 'apple': # The [.] matches to the dot after the major version, "." would match any character if re.search ("darwin[0-7][.]", config[config_kernel]) != None: - conf.define ('build_target', 'panther') + conf.env['build_target'] = 'panther' elif re.search ("darwin8[.]", config[config_kernel]) != None: - conf.define ('build_target', 'tiger') + conf.env['build_target'] = 'tiger' else: - conf.define ('build_target', 'leopard') + conf.env['build_target'] = 'leopard' else: if re.search ("x86_64", config[config_cpu]) != None: - conf.define ('build_target', 'x86_64') + conf.env['build_target'] = 'x86_64' elif re.search("i[0-5]86", config[config_cpu]) != None: - conf.define ('build_target', 'i386') + conf.env['build_target'] = 'i386' elif re.search("powerpc", config[config_cpu]) != None: - conf.define ('build_target', 'powerpc') + conf.env['build_target'] = 'powerpc' else: - conf.define ('build_target', 'i686') + conf.env['build_target'] = 'i686' else: - conf.define ('build_target', opt.dist_target) + conf.env['build_target'] = opt.dist_target if config[config_cpu] == 'powerpc' and conf.env['build_target'] != 'none': # @@ -246,7 +245,7 @@ def set_compiler_flags (conf,opt): print("\nIt is theoretically possible to build a 32 bit host on a 64 bit system.") print("However, this is tricky and not recommended for beginners.") sys.exit (-1) - + if opt.lxvst: if conf.env['build_target'] == 'x86_64': print("\n\n********************************************************") @@ -264,7 +263,7 @@ def set_compiler_flags (conf,opt): conf.define ('IS_OSX', 1) # force tiger or later, to avoid issues on PPC which defaults # back to 10.1 if we don't tell it otherwise. - conf.env.append_value('CCFLAGS', "-DMAC_OS_X_VERSION_MIN_REQUIRED=1040") + conf.env.append_value('CFLAGS', "-DMAC_OS_X_VERSION_MIN_REQUIRED=1040") else: conf.define ('IS_OSX', 0) @@ -294,11 +293,11 @@ def set_compiler_flags (conf,opt): ] if opt.debug: - conf.env.append_value('CCFLAGS', debug_flags) + conf.env.append_value('CFLAGS', debug_flags) conf.env.append_value('CXXFLAGS', debug_flags) conf.env.append_value('LINKFLAGS', debug_flags) else: - conf.env.append_value('CCFLAGS', optimization_flags) + conf.env.append_value('CFLAGS', optimization_flags) conf.env.append_value('CXXFLAGS', optimization_flags) conf.env.append_value('LINKFLAGS', optimization_flags) @@ -306,12 +305,12 @@ def set_compiler_flags (conf,opt): conf.env.append_value('CXXFLAGS', "-D_GLIBCXX_DEBUG") if conf.env['DEBUG_RT_ALLOC']: - conf.env.append_value('CCFLAGS', '-DDEBUG_RT_ALLOC') + conf.env.append_value('CFLAGS', '-DDEBUG_RT_ALLOC') conf.env.append_value('CXXFLAGS', '-DDEBUG_RT_ALLOC') conf.env.append_value('LINKFLAGS', '-ldl') if opt.universal: - conf.env.append_value('CCFLAGS', "-arch i386 -arch ppc") + conf.env.append_value('CFLAGS', "-arch i386 -arch ppc") conf.env.append_value('CXXFLAGS', "-arch i386 -arch ppc") conf.env.append_value('LINKFLAGS', "-arch i386 -arch ppc") @@ -319,21 +318,21 @@ def set_compiler_flags (conf,opt): # warnings flags # - conf.env.append_value('CCFLAGS', "-Wall") + conf.env.append_value('CFLAGS', "-Wall") conf.env.append_value('CXXFLAGS', [ '-Wall', '-Woverloaded-virtual']) if opt.extra_warn: flags = [ '-Wextra' ] - conf.env.append_value('CCFLAGS', flags ) - conf.env.append_value('CXXFLAGS', flags ) + conf.env.append_value('CFLAGS', flags) + conf.env.append_value('CXXFLAGS', flags) # # more boilerplate # - conf.env.append_value('CCFLAGS', '-D_LARGEFILE64_SOURCE') - conf.env.append_value('CCFLAGS', '-D_FILE_OFFSET_BITS=64') + conf.env.append_value('CFLAGS', '-D_LARGEFILE64_SOURCE') + conf.env.append_value('CFLAGS', '-D_FILE_OFFSET_BITS=64') conf.env.append_value('CXXFLAGS', '-D_LARGEFILE64_SOURCE') conf.env.append_value('CXXFLAGS', '-D_FILE_OFFSET_BITS=64') @@ -342,13 +341,15 @@ def set_compiler_flags (conf,opt): if opt.nls: conf.env.append_value('CXXFLAGS', '-DENABLE_NLS') - conf.env.append_value('CCFLAGS', '-DENABLE_NLS') + conf.env.append_value('CFLAGS', '-DENABLE_NLS') #---------------------------------------------------------------- # Waf stages -def set_options(opt): +def options(opt): + opt.load('compiler_c') + opt.load('compiler_cxx') autowaf.set_options(opt) opt.add_option('--program-name', type='string', action='store', default='Ardour', dest='program_name', help='The user-visible name of the program being built') @@ -410,6 +411,8 @@ def sub_config_and_use(conf, name, has_objects = True): autowaf.set_local_lib(conf, name, has_objects) def configure(conf): + conf.load('compiler_c') + conf.load('compiler_cxx') if not Options.options.noconfirm: print ('\n\nThis is an alpha version of Ardour 3.0.\n\n' + 'You are respectfully requested NOT to ask for assistance with build issues\n' + @@ -446,20 +449,20 @@ def configure(conf): # on Darwin to add all applicable flags at once # conf.env.append_value('CXXFLAGS_OSX', '-DMAC_OS_X_VERSION_MIN_REQUIRED=1040') - conf.env.append_value('CCFLAGS_OSX', '-DMAC_OS_X_VERSION_MIN_REQUIRED=1040') + conf.env.append_value('CFLAGS_OSX', '-DMAC_OS_X_VERSION_MIN_REQUIRED=1040') conf.env.append_value('CXXFLAGS_OSX', '-mmacosx-version-min=10.4') - conf.env.append_value('CCFLAGS_OSX', '-mmacosx-version-min=10.4') + conf.env.append_value('CFLAGS_OSX', '-mmacosx-version-min=10.4') #conf.env.append_value('CXXFLAGS_OSX', "-isysroot /Developer/SDKs/MacOSX10.4u.sdk") - #conf.env.append_value('CCFLAGS_OSX', "-isysroot /Developer/SDKs/MacOSX10.4u.sdk") + #conf.env.append_value('CFLAGS_OSX', "-isysroot /Developer/SDKs/MacOSX10.4u.sdk") #conf.env.append_value('LINKFLAGS_OSX', "-isysroot /Developer/SDKs/MacOSX10.4u.sdk") #conf.env.append_value('LINKFLAGS_OSX', "-sysroot /Developer/SDKs/MacOSX10.4u.sdk") conf.env.append_value('CXXFLAGS_OSX', "-msse") - conf.env.append_value('CCFLAGS_OSX', "-msse") + conf.env.append_value('CFLAGS_OSX', "-msse") conf.env.append_value('CXXFLAGS_OSX', "-msse2") - conf.env.append_value('CCFLAGS_OSX', "-msse2") + conf.env.append_value('CFLAGS_OSX', "-msse2") # # TODO: The previous sse flags NEED to be based # off processor type. Need to add in a check @@ -486,14 +489,14 @@ def configure(conf): if Options.options.boost_include != '': conf.env.append_value('CPPPATH', Options.options.boost_include) - autowaf.check_header(conf, 'boost/signals2.hpp', mandatory = True) + autowaf.check_header(conf, 'cxx', 'boost/signals2.hpp', mandatory = True) if Options.options.boost_sp_debug: conf.env.append_value('CXXFLAGS', '-DBOOST_SP_ENABLE_DEBUG_HOOKS') - autowaf.check_header(conf, 'jack/session.h', define="JACK_SESSION", mandatory = False) + autowaf.check_header(conf, 'cxx', 'jack/session.h', define="JACK_SESSION", mandatory = False) - conf.check_cc(fragment = "#include \nint main(void) { return (BOOST_VERSION >= 103900 ? 0 : 1); }\n", + conf.check_cxx(fragment = "#include \nint main(void) { return (BOOST_VERSION >= 103900 ? 0 : 1); }\n", execute = "1", mandatory = True, msg = 'Checking for boost library >= 1.39', @@ -512,43 +515,47 @@ def configure(conf): sub_config_and_use(conf, i) # Fix utterly braindead FLAC include path to not smash assert.h - conf.env['CPPPATH_FLAC'] = [] + conf.env['INCLUDES_FLAC'] = [] conf.check_cc(function_name='dlopen', header_name='dlfcn.h', linkflags='-ldl', uselib_store='DL') conf.check_cc(function_name='curl_global_init', header_name='curl/curl.h', linkflags='-lcurl', uselib_store='CURL') # Tell everyone that this is a waf build - conf.env.append_value('CCFLAGS', '-DWAF_BUILD') + conf.env.append_value('CFLAGS', '-DWAF_BUILD') conf.env.append_value('CXXFLAGS', '-DWAF_BUILD') - # Set up waf environment + # Set up waf environment and C defines opts = Options.options if opts.debug: opts.phone_home = False; # debug builds should not call home if opts.phone_home: conf.env['PHONE_HOME'] = opts.phone_home if opts.fpu_optimization: - conf.define('FPU_OPTIMIZATION', 1) + conf.env['FPU_OPTIMIZATION'] = True if opts.freesound: conf.define('FREESOUND',1) + conf.env['FREESOUND'] = True if opts.nls: - conf.define ('ENABLE_NLS', 1) + conf.define('ENABLE_NLS', 1) + conf.env['ENABLE_NLS'] = True if opts.build_tests: conf.env['BUILD_TESTS'] = opts.build_tests if opts.tranzport: - conf.define('TRANZPORT', 1) + conf.env['TRANZPORT'] = 1 if opts.vst: conf.define('VST_SUPPORT', 1) + conf.env['VST_SUPPORT'] = True conf.env.append_value('CPPPATH', Options.options.wine_include) - autowaf.check_header(conf, 'windows.h', mandatory = True) + autowaf.check_header(conf, 'cxx', 'windows.h', mandatory = True) if opts.lxvst: conf.define('LXVST_SUPPORT', 1) conf.env['LXVST_SUPPORT'] = True if bool(conf.env['JACK_SESSION']): conf.define ('HAVE_JACK_SESSION', 1) if opts.wiimote: - conf.define('WIIMOTE',1) + conf.define('WIIMOTE', 1) + conf.env['WIIMOTE'] = True conf.define('WINDOWS_KEY', opts.windows_key) conf.env['PROGRAM_NAME'] = opts.program_name if opts.rt_alloc_debug: @@ -601,7 +608,7 @@ const char* const ardour_config_info = "\\n\\ write_config_text('Wiimote support', opts.wiimote) write_config_text('Windows key', opts.windows_key) - write_config_text('C compiler flags', conf.env['CCFLAGS']) + write_config_text('C compiler flags', conf.env['CFLAGS']) write_config_text('C++ compiler flags', conf.env['CXXFLAGS']) config_text.write ('";\n}\n') @@ -644,11 +651,11 @@ def build(bld): 'JACK_INPUT' : 'auditioner' } - obj = bld.new_task_gen('subst') + obj = bld(features = 'subst') obj.source = 'ardour.rc.in' obj.target = 'ardour_system.rc' obj.dict = rc_subst_dict - obj.install_path = '${CONFIGDIR}/ardour3' + obj.install_path = '${SYSCONF}/ardour3' def i18n(bld): bld.recurse (i18n_children)