+ print ('No Carbon support available for this build\n')
+
+ if Options.options.boost_include != '':
+ conf.env.append_value('CXXFLAGS', '-I' + Options.options.boost_include)
+
+ if Options.options.also_include != '':
+ conf.env.append_value('CXXFLAGS', '-I' + Options.options.also_include)
+ conf.env.append_value('CFLAGS', '-I' + Options.options.also_include)
+
+ if Options.options.also_libdir != '':
+ conf.env.append_value('LDFLAGS', '-L' + Options.options.also_libdir)
+
+ if Options.options.boost_sp_debug:
+ conf.env.append_value('CXXFLAGS', '-DBOOST_SP_ENABLE_DEBUG_HOOKS')
+
+ autowaf.check_header(conf, 'cxx', 'jack/session.h', define="JACK_SESSION", mandatory = False)
+
+ conf.check_cxx(fragment = "#include <boost/version.hpp>\nint main(void) { return (BOOST_VERSION >= 103900 ? 0 : 1); }\n",
+ execute = "1",
+ mandatory = True,
+ msg = 'Checking for boost library >= 1.39',
+ okmsg = 'ok',
+ errmsg = 'too old\nPlease install boost version 1.39 or higher.')
+
+ autowaf.check_pkg(conf, 'cppunit', uselib_store='CPPUNIT', atleast_version='1.12.0', mandatory=False)
+ autowaf.check_pkg(conf, 'glib-2.0', uselib_store='GLIB', atleast_version='2.2')
+ autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD', atleast_version='2.2')
+ autowaf.check_pkg(conf, 'glibmm-2.4', uselib_store='GLIBMM', atleast_version='2.14.0')
+ autowaf.check_pkg(conf, 'sndfile', uselib_store='SNDFILE', atleast_version='1.0.18')
+ autowaf.check_pkg(conf, 'giomm-2.4', uselib_store='GIOMM', atleast_version='2.2')
+ autowaf.check_pkg(conf, 'libcurl', uselib_store='CURL', atleast_version='7.0.0')
+
+ conf.check_cc(function_name='dlopen', header_name='dlfcn.h', linkflags='-ldl', uselib_store='DL')
+
+ # Tell everyone that this is a waf build
+
+ conf.env.append_value('CFLAGS', '-DWAF_BUILD')
+ conf.env.append_value('CXXFLAGS', '-DWAF_BUILD')
+
+ # 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.env['FPU_OPTIMIZATION'] = True
+ if opts.freesound:
+ conf.define('FREESOUND',1)
+ conf.env['FREESOUND'] = True
+ if opts.nls:
+ 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.env['TRANZPORT'] = 1
+ if opts.windows_vst:
+ conf.define('WINDOWS_VST_SUPPORT', 1)
+ conf.env['WINDOWS_VST_SUPPORT'] = True
+ conf.env.append_value('CFLAGS', '-I' + Options.options.wine_include)
+ conf.env.append_value('CXXFLAGS', '-I' + Options.options.wine_include)
+ 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.env['WIIMOTE'] = True
+ conf.define('WINDOWS_KEY', opts.windows_key)
+ conf.env['PROGRAM_NAME'] = opts.program_name
+ if opts.rt_alloc_debug:
+ conf.define('DEBUG_RT_ALLOC', 1)
+ conf.env['DEBUG_RT_ALLOC'] = True
+ if opts.pt_timing:
+ conf.define('PT_TIMING', 1)
+ conf.env['PT_TIMING'] = True
+ if opts.denormal_exception:
+ conf.define('DEBUG_DENORMAL_EXCEPTION', 1)
+ conf.env['DEBUG_DENORMAL_EXCEPTION'] = True
+ if not conf.is_defined('HAVE_CPPUNIT'):
+ conf.env['BUILD_TESTS'] = False
+
+ set_compiler_flags (conf, Options.options)
+
+ for i in children:
+ sub_config_and_use(conf, i)
+
+ # Fix utterly braindead FLAC include path to not smash assert.h
+ conf.env['INCLUDES_FLAC'] = []
+
+ config_text = open('libs/ardour/config_text.cc', "w")
+ config_text.write('''#include "ardour/ardour.h"
+namespace ARDOUR {
+const char* const ardour_config_info = "\\n\\
+''')
+
+ def write_config_text(title, val):
+ autowaf.display_msg(conf, title, val)
+ config_text.write(title + ': ')
+ config_text.write(str(val))
+ config_text.write("\\n\\\n")
+
+ write_config_text('Build documentation', conf.env['DOCS'])
+ write_config_text('Debuggable build', conf.env['DEBUG'])
+ write_config_text('Install prefix', conf.env['PREFIX'])
+ write_config_text('Strict compiler flags', conf.env['STRICT'])
+
+ write_config_text('Architecture flags', opts.arch)
+ write_config_text('Aubio', conf.is_defined('HAVE_AUBIO'))
+ write_config_text('AudioUnits', conf.is_defined('AUDIOUNIT_SUPPORT'))
+ write_config_text('AU state support', conf.is_defined('AU_STATE_SUPPORT'))
+ write_config_text('Build target', conf.env['build_target'])
+ write_config_text('CoreAudio', conf.is_defined('HAVE_COREAUDIO'))
+ write_config_text('Debug RT allocations', conf.is_defined('DEBUG_RT_ALLOC'))
+ write_config_text('Process thread timing', conf.is_defined('PT_TIMING'))
+ write_config_text('Denormal exceptions', conf.is_defined('DEBUG_DENORMAL_EXCEPTION'))
+ write_config_text('FLAC', conf.is_defined('HAVE_FLAC'))
+ write_config_text('FPU optimization', opts.fpu_optimization)
+ write_config_text('Freedesktop files', opts.freedesktop)
+ write_config_text('Freesound', opts.freesound)
+ write_config_text('JACK session support', conf.is_defined('JACK_SESSION'))
+ write_config_text('LV2 UI embedding', conf.is_defined('HAVE_SUIL'))
+ write_config_text('LV2 support', conf.is_defined('LV2_SUPPORT'))
+ write_config_text('LXVST support', conf.is_defined('LXVST_SUPPORT'))
+ write_config_text('OGG', conf.is_defined('HAVE_OGG'))
+ write_config_text('Phone home', conf.is_defined('PHONE_HOME'))
+ write_config_text('Program name', opts.program_name)
+ write_config_text('Rubberband', conf.is_defined('HAVE_RUBBERBAND'))
+ write_config_text('Samplerate', conf.is_defined('HAVE_SAMPLERATE'))
+# write_config_text('Soundtouch', conf.is_defined('HAVE_SOUNDTOUCH'))
+ write_config_text('Translation', opts.nls)
+# write_config_text('Tranzport', opts.tranzport)
+ write_config_text('Unit tests', conf.env['BUILD_TESTS'])
+ write_config_text('Universal binary', opts.universal)
+ write_config_text('Generic x86 CPU', opts.generic)
+ write_config_text('Windows VST support', opts.windows_vst)
+ write_config_text('Wiimote support', opts.wiimote)
+ write_config_text('Windows key', opts.windows_key)
+
+ write_config_text('C compiler flags', conf.env['CFLAGS'])
+ write_config_text('C++ compiler flags', conf.env['CXXFLAGS'])
+
+ config_text.write ('";\n}\n')
+ config_text.close ()
+ print('')
+
+def build(bld):
+ create_stored_revision()
+
+ # add directories that contain only headers, to workaround an issue with waf
+
+ bld.path.find_dir ('libs/evoral/evoral')
+ bld.path.find_dir ('libs/vamp-sdk/vamp-sdk')
+ bld.path.find_dir ('libs/surfaces/control_protocol/control_protocol')
+ bld.path.find_dir ('libs/timecode/timecode')
+ bld.path.find_dir ('libs/rubberband/rubberband')
+ bld.path.find_dir ('libs/gtkmm2ext/gtkmm2ext')
+ bld.path.find_dir ('libs/ardour/ardour')
+ bld.path.find_dir ('libs/taglib/taglib')
+ bld.path.find_dir ('libs/pbd/pbd')
+
+ autowaf.set_recursive()
+
+ for i in children:
+ bld.recurse(i)
+
+ # ideally, we'd like to use the OS-provided MIDI API
+ # for default ports. that doesn't work on at least
+ # Fedora (Nov 9th, 2009) so use JACK MIDI on linux.
+
+ if sys.platform == 'darwin':
+ rc_subst_dict = {
+ 'MIDITAG' : 'control',
+ 'MIDITYPE' : 'coremidi',
+ 'JACK_INPUT' : 'auditioner'
+ }
+ else:
+ rc_subst_dict = {
+ 'MIDITAG' : 'control',
+ 'MIDITYPE' : 'jack',
+ 'JACK_INPUT' : 'auditioner'
+ }
+
+ obj = bld(features = 'subst')
+ obj.source = 'ardour.rc.in'
+ obj.target = 'ardour_system.rc'
+ obj.dict = rc_subst_dict
+ obj.install_path = '${SYSCONFDIR}/ardour3'