Add a newly introduced header file to our MSVC project (libevoral)
[ardour.git] / libs / evoral / wscript
index 9f220c80c8ec20d399cf354908dd7d92eec0bd94..4b798f504d5df931ef91da9f50389b6dce41fd80 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
-import autowaf
-import Options
+from waflib.extras import autowaf as autowaf
+from waflib import Options
 import os
 
 # Version of this package (even if built as a child)
@@ -19,29 +19,32 @@ APPNAME = 'evoral'
 VERSION = EVORAL_VERSION
 
 # Mandatory variables
-srcdir = '.'
-blddir = 'build'
+top = '.'
+out = 'build'
 
-def set_options(opt):
+def options(opt):
     autowaf.set_options(opt)
     opt.add_option('--test', action='store_true', default=False, dest='build_tests',
                     help="Build unit tests")
+    opt.add_option('--test-coverage', action='store_true', default=False, dest='test_coverage',
+                    help="Use gcov to test for code coverage")
 
 def configure(conf):
+    conf.load('compiler_cxx')
     autowaf.configure(conf)
     #autowaf.display_header('Evoral Configuration')
 
-    conf.check_tool('compiler_cxx')
     autowaf.check_pkg(conf, 'cppunit', uselib_store='CPPUNIT', atleast_version='1.12.0', mandatory=False)
     autowaf.check_pkg(conf, 'glib-2.0', uselib_store='GLIB', atleast_version='2.2')
     autowaf.check_pkg(conf, 'glibmm-2.4', uselib_store='GLIBMM', atleast_version='2.14.0')
     autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD', atleast_version='2.14.0')
 
     # Boost headers
-    autowaf.check_header(conf, 'boost/shared_ptr.hpp')
-    autowaf.check_header(conf, 'boost/weak_ptr.hpp')
+    autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp')
+    autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp')
 
     conf.env['BUILD_TESTS'] = Options.options.build_tests
+    conf.env['TEST_COVERAGE'] = Options.options.test_coverage
 
     #autowaf.display_msg(conf, "Unit tests", str(conf.env['BUILD_TESTS']))
     #print
@@ -54,7 +57,7 @@ def build(bld):
     # Pkgconfig file
     #autowaf.build_pc(bld, 'EVORAL', EVORAL_VERSION, 'GLIBMM GTHREAD')
 
-    libsmf = bld.new_task_gen('cc', 'shlib')
+    libsmf = bld(features = 'c cstlib')
     libsmf.source = '''
             src/libsmf/smf.c
             src/libsmf/smf_decode.c
@@ -62,13 +65,15 @@ def build(bld):
             src/libsmf/smf_save.c
             src/libsmf/smf_tempo.c
     '''
-    libsmf.export_incdirs = ['./src/libsmf']
-    libsmf.defines      = 'SMF_VERSION="1.2"'
+    libsmf.export_includes = ['./src/libsmf']
+    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.cxxflags     = [ '-fPIC' ]
+    libsmf.cflags       = [ '-fPIC' ]
+    libsmf.install_path = bld.env['LIBDIR']
 
     lib_source = '''
             src/Control.cpp
@@ -81,54 +86,70 @@ def build(bld):
             src/Note.cpp
             src/SMF.cpp
             src/Sequence.cpp
+            src/TimeConverter.cpp
             src/debug.cpp
+            src/types.cpp
     '''
 
     # Library
-    obj = bld.new_task_gen('cxx', 'shlib')
-    obj.source         = lib_source
-    obj.export_incdirs = ['.']
+    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'
     obj.target         = 'evoral'
     obj.uselib         = 'GLIBMM GTHREAD SMF'
-    obj.uselib_local   = 'libsmf libpbd'
+    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.env['HAVE_CPPUNIT']:
+    if bld.env['BUILD_TESTS'] and bld.is_defined('HAVE_CPPUNIT'):
         # Static library (for unit test code coverage)
-        obj = bld.new_task_gen('cxx', 'staticlib')
+        obj = bld(features = 'cxx cstlib')
         obj.source       = lib_source
         obj.source         = lib_source
-        obj.export_incdirs = ['.']
+        obj.export_includes = ['.']
         obj.includes       = ['.', './src']
         obj.name           = 'libevoral_static'
         obj.target         = 'evoral_static'
         obj.uselib         = 'GLIBMM GTHREAD SMF'
-        obj.uselib_local   = 'libsmf libpbd'
+        obj.use            = 'libsmf libpbd'
         obj.vnum           = EVORAL_LIB_VERSION
         obj.install_path   = ''
-        obj.ccflags        = [ '-fprofile-arcs',  '-ftest-coverage' ]
-        obj.cxxflags       = [ '-fprofile-arcs',  '-ftest-coverage' ]
+        if bld.env['TEST_COVERAGE']:
+            obj.linkflags      = '-lgcov'
+            obj.cflags         = [ '-fprofile-arcs',  '-ftest-coverage' ]
+            obj.cxxflags       = [ '-fprofile-arcs',  '-ftest-coverage' ]
+        obj.defines        = ['PACKAGE="libevoral"', 'EVORAL_MIDI_XML=1' ]
 
         # Unit tests
-        obj              = bld.new_task_gen('cxx', 'program')
+        obj              = bld(features = 'cxx cxxprogram')
         obj.source       = '''
                 test/SequenceTest.cpp
                 test/SMFTest.cpp
+                test/RangeTest.cpp
                 test/testrunner.cpp
         '''
         obj.includes     = ['.', './src']
-        obj.uselib_local = 'libevoral_static'
+        obj.use          = 'libevoral_static'
         obj.uselib       = 'CPPUNIT SNDFILE'
-        obj.libs         = 'gcov'
         obj.target       = 'run-tests'
         obj.name         = 'libevoral-tests'
         obj.install_path = ''
-        obj.ccflags      = [ '-fprofile-arcs',  '-ftest-coverage' ]
-        obj.cxxflags     = [ '-fprofile-arcs',  '-ftest-coverage' ]
+        obj.defines      = ['PACKAGE="libevoraltest"']
+        if bld.env['TEST_COVERAGE']:
+            obj.linkflags      = '-lgcov'
+            obj.cflags         = [ '-fprofile-arcs',  '-ftest-coverage' ]
+            obj.cxxflags       = [ '-fprofile-arcs',  '-ftest-coverage' ]
 
 def shutdown():
     autowaf.shutdown()