momo ip midi debugging
[ardour.git] / libs / midi++2 / wscript
index e4dbf1eab69c3304be5eab9fdec40a784d5148af..10a37466e197f77c8ca8157e0f5a1fcf5aae6241 100644 (file)
@@ -1,5 +1,6 @@
 #!/usr/bin/env python
 from waflib.extras import autowaf as autowaf
+from waflib import Options
 import os
 import sys
 
@@ -25,15 +26,27 @@ 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',
+]
+
 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):
-    autowaf.build_version_files(path_prefix+'midi++/version.h', path_prefix+'version.cc',
-                    'midipp', MAJOR, MINOR, MICRO)
+    conf.load('compiler_cxx')
     autowaf.configure(conf)
-    conf.check_tool('compiler_cxx')
-    autowaf.check_pkg(conf, 'jack', uselib_store='JACK', atleast_version='0.118.2')
+    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')
 
@@ -43,28 +56,37 @@ def configure(conf):
 
 def build(bld):
     # Library
-    obj = bld(features = 'cxx cxxshlib')
-    obj.source = '''
-            midi.cc
-            channel.cc
-            manager.cc
-            parser.cc
-            port.cc
-            midnam_patch.cc
-            mmc.cc
-            mtc.cc
-            version.cc
-    '''
+    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      = []
+
     # everybody loves JACK
-    obj.cxxflags = [ '-DWITH_JACK_MIDI' ]
     obj.export_includes = ['.']
-    obj.includes     = ['.', '../surfaces/control_protocol']
+    obj.includes     = ['.', '../surfaces/control_protocol', '../ardour' ]
     obj.name         = 'libmidipp'
     obj.target       = 'midipp'
-    obj.uselib       = 'GLIBMM SIGCPP XML JACK OSX'
+    obj.uselib       = 'GLIBMM SIGCPP XML OSX'
     obj.use          = 'libpbd libevoral libtimecode'
     obj.vnum         = LIBMIDIPP_LIB_VERSION
-    obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
+    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()