speed-up smf_track_delete() from O(N^2) to O(n)
[ardour.git] / libs / evoral / wscript
index 9cc0356c7f4814df45cc45ec60667112e1c40f07..12ebffe1d2341d336349089b4e7c4bceb14d8b26 100644 (file)
@@ -57,7 +57,7 @@ def build(bld):
     # Pkgconfig file
     #autowaf.build_pc(bld, 'EVORAL', EVORAL_VERSION, 'GLIBMM GTHREAD')
 
-    libsmf = bld(features = 'c cshlib')
+    libsmf = bld(features = 'c cstlib')
     libsmf.source = '''
             src/libsmf/smf.c
             src/libsmf/smf_decode.c
@@ -66,12 +66,15 @@ def build(bld):
             src/libsmf/smf_tempo.c
     '''
     libsmf.export_includes = ['./src/libsmf']
-    libsmf.defines      = 'SMF_VERSION="1.2"'
+    libsmf.defines      = ['SMF_VERSION="1.2"', 'LIBSMF_DLL_EXPORTS']
     libsmf.includes     = ['./src']
     libsmf.name         = 'libsmf'
     libsmf.target       = 'smf'
     libsmf.uselib       = 'GLIB'
-    libsmf.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
+    libsmf.install_path = None
+    if bld.env['build_target'] != 'mingw':
+        libsmf.cxxflags     = [ '-fPIC' ]
+        libsmf.cflags       = [ '-fPIC' ]
 
     lib_source = '''
             src/Control.cpp
@@ -84,12 +87,22 @@ def build(bld):
             src/Note.cpp
             src/SMF.cpp
             src/Sequence.cpp
+            src/TimeConverter.cpp
             src/debug.cpp
+            src/types.cpp
     '''
 
     # Library
-    obj = bld(features = 'cxx cxxshlib')
-    obj.source         = lib_source
+    if bld.is_defined ('INTERNAL_SHARED_LIBS'):
+        obj              = bld.shlib(features = 'c cxx cshlib cxxshlib', source=lib_source)
+        # DLL exports for this library
+        obj.defines      = [ 'LIBEVORAL_DLL_EXPORTS' ]
+    else:
+        obj              = bld.stlib(features = 'c cxx cstlib cxxstlib', source=lib_source)
+        obj.cxxflags     = [ '-fPIC' ]
+        obj.cflags       = [ '-fPIC' ]
+        obj.defines      = [ ]
+
     obj.export_includes = ['.']
     obj.includes       = ['.', './src']
     obj.name           = 'libevoral'
@@ -97,8 +110,8 @@ def build(bld):
     obj.uselib         = 'GLIBMM GTHREAD SMF'
     obj.use            = 'libsmf libpbd'
     obj.vnum           = EVORAL_LIB_VERSION
-    obj.install_path   = os.path.join(bld.env['LIBDIR'], 'ardour3')
-    obj.defines = ['PACKAGE="libevoral"' ]
+    obj.install_path   = bld.env['LIBDIR']
+    obj.defines       += [ 'PACKAGE="libevoral"', 'EVORAL_MIDI_XML=1' ]
 
     if bld.env['BUILD_TESTS'] and bld.is_defined('HAVE_CPPUNIT'):
         # Static library (for unit test code coverage)
@@ -117,7 +130,7 @@ def build(bld):
             obj.linkflags      = '-lgcov'
             obj.cflags         = [ '-fprofile-arcs',  '-ftest-coverage' ]
             obj.cxxflags       = [ '-fprofile-arcs',  '-ftest-coverage' ]
-        obj.defines        = ['PACKAGE="libevoral"' ]
+        obj.defines        = ['PACKAGE="libevoral"', 'EVORAL_MIDI_XML=1' ]
 
         # Unit tests
         obj              = bld(features = 'cxx cxxprogram')
@@ -125,6 +138,7 @@ def build(bld):
                 test/SequenceTest.cpp
                 test/SMFTest.cpp
                 test/RangeTest.cpp
+                test/CurveTest.cpp
                 test/testrunner.cpp
         '''
         obj.includes     = ['.', './src']
@@ -133,6 +147,7 @@ def build(bld):
         obj.target       = 'run-tests'
         obj.name         = 'libevoral-tests'
         obj.install_path = ''
+        obj.defines      = ['PACKAGE="libevoraltest"']
         if bld.env['TEST_COVERAGE']:
             obj.linkflags      = '-lgcov'
             obj.cflags         = [ '-fprofile-arcs',  '-ftest-coverage' ]