fix initial display of name/id on meterbridge
[ardour.git] / libs / midi++2 / wscript
index eccefe695d18d9c2003aa0d2771ad93cd8cbca32..ea8988110def73850b53a7ce86246af1af8d6ee1 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,14 +26,31 @@ out = 'build'
 
 path_prefix = 'libs/midi++2/'
 
+libmidi_sources = [
+        'midi.cc',
+        'channel.cc',
+        'ipmidi_port.cc',
+        'jack_midi_port.cc',
+        'manager.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')
@@ -43,21 +61,12 @@ def configure(conf):
 
 def build(bld):
     # Library
-    obj = bld(features = 'cxx cxxshlib')
-    obj.source = '''
-            midi.cc
-            channel.cc
-            manager.cc
-            parser.cc
-            port_base.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)
+    else:
+        obj              = bld.stlib(features = 'cxx cxxstlib', source=libmidi_sources)
+        obj.cxxflags = [ '-fPIC', '-DWITH_JACK_MIDI' ]
     # everybody loves JACK
-    obj.cxxflags = [ '-DWITH_JACK_MIDI' ]
     obj.export_includes = ['.']
     obj.includes     = ['.', '../surfaces/control_protocol']
     obj.name         = 'libmidipp'
@@ -67,5 +76,19 @@ def build(bld):
     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()