#!/usr/bin/env python from waflib.extras import autowaf as autowaf from waflib import Options import os import sys # Version of this package (even if built as a child) MAJOR = '2' MINOR = '1' MICRO = '1' LIBMIDIPP_VERSION = "%s.%s.%s" % (MAJOR, MINOR, MICRO) # Library version (UNIX style major, minor, micro) # major increment <=> incompatible changes # minor increment <=> compatible changes (additions) # micro increment <=> no interface changes LIBMIDIPP_LIB_VERSION = '4.1.0' # Variables for 'waf dist' APPNAME = 'libmidipp' VERSION = LIBMIDIPP_VERSION # Mandatory variables top = '.' out = 'build' path_prefix = 'libs/midi++2/' libmidi_sources = [ 'midi.cc', 'channel.cc', 'ipmidi_port.cc', 'parser.cc', 'port.cc', 'midnam_patch.cc', 'mmc.cc', 'mtc.cc', 'version.cc', ] def options(opt): autowaf.set_options(opt) opt.add_option('--test', action='store_true', default=False, dest='build_tests', help="Build unit tests") def configure(conf): conf.load('compiler_cxx') autowaf.build_version_files(path_prefix+'midi++/version.h', path_prefix+'version.cc', 'midipp', MAJOR, MINOR, MICRO) autowaf.configure(conf) autowaf.check_pkg(conf, 'cppunit', uselib_store='CPPUNIT', atleast_version='1.12.0', mandatory=False) autowaf.check_pkg(conf, 'jack', uselib_store='JACK', atleast_version='0.118.2') autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML') autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP', atleast_version='2.0') # Boost headers autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp') autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp') def build(bld): # Library if bld.is_defined ('INTERNAL_SHARED_LIBS'): obj = bld.shlib(features = 'cxx cxxshlib', source=libmidi_sources) obj.defines = [ 'LIBMIDIPP_DLL=1', 'LIBMIDIPP_DLL_EXPORTS=1' ] obj.defines += [ 'LIBPBD_DLL=1' ] else: obj = bld.stlib(features = 'cxx cxxstlib', source=libmidi_sources) obj.cxxflags = [ '-fPIC', '-DWITH_JACK_MIDI' ] obj.defines = [] # everybody loves JACK obj.export_includes = ['.'] obj.includes = ['.', '../surfaces/control_protocol', '../ardour' ] obj.name = 'libmidipp' obj.target = 'midipp' obj.uselib = 'GLIBMM SIGCPP XML JACK OSX' obj.use = 'libpbd libevoral libtimecode' obj.vnum = LIBMIDIPP_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') if bld.env['BUILD_TESTS'] and bld.is_defined('HAVE_CPPUNIT'): # Unit tests obj = bld(features = 'cxx cxxprogram') obj.source = ''' test/MidnamTest.cpp test/testrunner.cpp ''' obj.includes = ['.', './src'] obj.use = 'libmidipp' obj.uselib = 'CPPUNIT XML' obj.target = 'run-tests' obj.name = 'libmidipp-tests' obj.install_path = '' def shutdown(): autowaf.shutdown()