X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fmidi%2B%2B2%2Fwscript;h=10a37466e197f77c8ca8157e0f5a1fcf5aae6241;hb=d3b341d5c242755d4fa69463d36c78f861856045;hp=9d25ac9930c3d683db84424fe0b97742dc4d8069;hpb=3804e3bc497f68d4b68f51794815db3ffe5e7a91;p=ardour.git diff --git a/libs/midi++2/wscript b/libs/midi++2/wscript index 9d25ac9930..10a37466e1 100644 --- a/libs/midi++2/wscript +++ b/libs/midi++2/wscript @@ -1,6 +1,8 @@ #!/usr/bin/env python -import autowaf +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' @@ -19,63 +21,72 @@ APPNAME = 'libmidipp' VERSION = LIBMIDIPP_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' path_prefix = 'libs/midi++2/' -def set_options(opt): - autowaf.set_options(opt) -def configure(conf): - autowaf.build_version_files(path_prefix+'midi++/version.h', path_prefix+'version.cc', - 'midipp', MAJOR, MINOR, MICRO) - autowaf.configure(conf) - conf.check_tool('compiler_cxx') - autowaf.check_pkg(conf, 'jack', uselib_store='JACK', atleast_version='0.109.0') - autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML') - autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP', atleast_version='2.0') +libmidi_sources = [ + 'midi.cc', + 'channel.cc', + 'ipmidi_port.cc', + 'parser.cc', + 'port.cc', + 'midnam_patch.cc', + 'mmc.cc', + 'mtc.cc', +] + +def options(opt): + autowaf.set_options(opt) + opt.add_option('--test', action='store_true', default=False, dest='build_tests', + help="Build unit tests") - # TODO - conf.env['SYSMIDI'] = 'JACK MIDI' - conf.env.append_value('CXXFLAGS', '-DWITH_JACK_MIDI') +def configure(conf): + conf.load('compiler_cxx') + autowaf.configure(conf) + autowaf.check_pkg(conf, 'cppunit', uselib_store='CPPUNIT', atleast_version='1.12.0', mandatory=False) + 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, 'boost/shared_ptr.hpp') - autowaf.check_header(conf, 'boost/weak_ptr.hpp') + # Boost headers + 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.source = ''' - fd_midiport.cc - fifomidi.cc - midi.cc - midichannel.cc - midifactory.cc - midimanager.cc - midiparser.cc - midiport.cc - midnam_patch.cc - mmc.cc - mtc.cc - version.cc - ''' - if bld.env['SYSMIDI'] == 'JACK MIDI': - obj.source += ' jack_midiport.cc ' - elif bld.env['SYSMIDI'] == 'Alsa Sequencer': - obj.source += ' alsa_sequencer_midiport.cc ' - elif bld.env['SYSMIDI'] == 'CoreMIDI': - obj.source += ' coremidi_midiport.cc ' - obj.export_incdirs = ['.'] - obj.includes = ['.'] - obj.name = 'libmidipp' - obj.target = 'midipp' - obj.uselib = 'GLIBMM SIGCPP XML JACK' - obj.uselib_local = 'libpbd libevoral' - obj.vnum = LIBMIDIPP_LIB_VERSION - obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') + # Library + if bld.is_defined ('INTERNAL_SHARED_LIBS'): + obj = bld.shlib(features = 'cxx cxxshlib', source=libmidi_sources) + obj.defines = [ 'LIBMIDIPP_DLL_EXPORTS=1' ] + else: + obj = bld.stlib(features = 'cxx cxxstlib', source=libmidi_sources) + obj.cxxflags = [ '-fPIC' ] + obj.defines = [] -def shutdown(): - autowaf.shutdown() + # everybody loves JACK + obj.export_includes = ['.'] + obj.includes = ['.', '../surfaces/control_protocol', '../ardour' ] + obj.name = 'libmidipp' + obj.target = 'midipp' + obj.uselib = 'GLIBMM SIGCPP XML OSX' + obj.use = 'libpbd libevoral libtimecode' + obj.vnum = LIBMIDIPP_LIB_VERSION + obj.install_path = bld.env['LIBDIR'] + + 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()