X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fevoral%2Fwscript;h=7649bb8000434e867b02a16690fa2553a757e5c6;hb=0fc4a61fa0cc94c08e8e63b2d2f6bca146f036f7;hp=e1b729c826a505cca87092b8c5351cb3f5f0b2c4;hpb=77f3fa0943e4b99d3575dfb34e0ef09f3eb4ead7;p=ardour.git diff --git a/libs/evoral/wscript b/libs/evoral/wscript index e1b729c826..7649bb8000 100644 --- a/libs/evoral/wscript +++ b/libs/evoral/wscript @@ -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,16 @@ 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.install_path = None + if bld.env['build_target'] != 'mingw': + libsmf.cxxflags = [ '-fPIC' ] + libsmf.cflags = [ '-fPIC' ] lib_source = ''' src/Control.cpp @@ -76,60 +82,75 @@ def build(bld): src/ControlSet.cpp src/Curve.cpp src/Event.cpp - src/midi_util.cpp src/MIDIEvent.cpp 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.uselib = 'GLIBMM GTHREAD SMF XML' + 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.uselib = 'GLIBMM GTHREAD SMF XML' + obj.use = 'libsmf libpbd' obj.vnum = EVORAL_LIB_VERSION obj.install_path = '' - obj.ccflags = [ '-fprofile-arcs', '-ftest-coverage' ] - obj.cxxflags = [ '-fprofile-arcs', '-ftest-coverage' ] - obj.defines = ['PACKAGE="libevoral"' ] + 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/CurveTest.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()