X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fevoral%2Fwscript;h=f97096b3299bdabc37241e6257dc9334de923e4e;hb=99260742d24001976a476959f725a461110a7575;hp=2c9c157bc8b7e358788ce03fe909a0e2658058ae;hpb=aaf6ea8d2844ed21c82560ba16364e804f3bbff1;p=ardour.git diff --git a/libs/evoral/wscript b/libs/evoral/wscript index 2c9c157bc8..f97096b329 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,116 +19,139 @@ APPNAME = 'evoral' VERSION = EVORAL_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): - autowaf.set_options(opt) - opt.add_option('--test', action='store_true', default=False, dest='build_tests', - help="Build unit tests") +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): - 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') - - conf.env['BUILD_TESTS'] = Options.options.build_tests - - #autowaf.display_msg(conf, "Unit tests", str(conf.env['BUILD_TESTS'])) - #print + conf.load('compiler_cxx') + autowaf.configure(conf) + #autowaf.display_header('Evoral Configuration') + + 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, '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 def build(bld): - # Headers - #bld.install_files('${INCLUDEDIR}/evoral', 'evoral/*.h') - #bld.install_files('${INCLUDEDIR}/evoral', 'evoral/*.hpp') - - # Pkgconfig file - #autowaf.build_pc(bld, 'EVORAL', EVORAL_VERSION, 'GLIBMM GTHREAD') - - libsmf = bld.new_task_gen('cc', 'shlib') - libsmf.source = ''' - src/libsmf/smf.c - src/libsmf/smf_decode.c - src/libsmf/smf_load.c - src/libsmf/smf_save.c - src/libsmf/smf_tempo.c - ''' - libsmf.export_incdirs = ['./src/libsmf'] - libsmf.defines = 'SMF_VERSION="1.2"' - libsmf.includes = ['./src'] - libsmf.name = 'libsmf' - libsmf.target = 'smf' - libsmf.uselib = 'GLIB' - libsmf.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') - - lib_source = ''' - src/Control.cpp - src/ControlList.cpp - 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/debug.cpp - ''' - - # Library - obj = bld.new_task_gen('cxx', 'shlib') - obj.source = lib_source - obj.export_incdirs = ['.'] - obj.includes = ['.', './src'] - obj.name = 'libevoral' - obj.target = 'evoral' - obj.uselib = 'GLIBMM GTHREAD SMF' - obj.uselib_local = 'libsmf libpbd' - obj.vnum = EVORAL_LIB_VERSION - obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') - - if bld.env['BUILD_TESTS'] and bld.env['HAVE_CPPUNIT']: - # Static library (for unit test code coverage) - obj = bld.new_task_gen('cxx', 'staticlib') - obj.source = lib_source - obj.source = lib_source - obj.export_incdirs = ['.'] - obj.includes = ['.', './src'] - obj.name = 'libevoral_static' - obj.target = 'evoral_static' - obj.uselib = 'GLIBMM GTHREAD SMF' - obj.uselib_local = 'libsmf libpbd' - obj.vnum = EVORAL_LIB_VERSION - obj.install_path = '' - obj.ccflags = [ '-fprofile-arcs', '-ftest-coverage' ] - obj.cxxflags = [ '-fprofile-arcs', '-ftest-coverage' ] - - # Unit tests - obj = bld.new_task_gen('cxx', 'program') - obj.source = ''' - test/SequenceTest.cpp - test/SMFTest.cpp - test/testrunner.cpp - ''' - obj.includes = ['.', './src'] - obj.uselib_local = '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' ] + # Headers + #bld.install_files('${INCLUDEDIR}/evoral', 'evoral/*.h') + #bld.install_files('${INCLUDEDIR}/evoral', 'evoral/*.hpp') + + # Pkgconfig file + #autowaf.build_pc(bld, 'EVORAL', EVORAL_VERSION, 'GLIBMM GTHREAD') + + libsmf = bld(features = 'c cstlib') + libsmf.source = ''' + src/libsmf/smf.c + src/libsmf/smf_decode.c + src/libsmf/smf_load.c + src/libsmf/smf_save.c + src/libsmf/smf_tempo.c + ''' + 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 = bld.env['LIBDIR'] + if bld.env['build_target'] != 'mingw': + libsmf.cxxflags = [ '-fPIC' ] + libsmf.cflags = [ '-fPIC' ] + + lib_source = ''' + src/Control.cpp + src/ControlList.cpp + 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 + 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.use = 'libsmf libpbd' + obj.vnum = EVORAL_LIB_VERSION + 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) + obj = bld(features = 'cxx cstlib') + obj.source = lib_source + obj.source = lib_source + obj.export_includes = ['.'] + obj.includes = ['.', './src'] + obj.name = 'libevoral_static' + obj.target = 'evoral_static' + obj.uselib = 'GLIBMM GTHREAD SMF' + obj.use = 'libsmf libpbd' + obj.vnum = EVORAL_LIB_VERSION + obj.install_path = '' + 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(features = 'cxx cxxprogram') + obj.source = ''' + test/SequenceTest.cpp + test/SMFTest.cpp + test/RangeTest.cpp + test/CurveTest.cpp + test/testrunner.cpp + ''' + obj.includes = ['.', './src'] + obj.use = 'libevoral_static' + obj.uselib = 'CPPUNIT SNDFILE' + 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' ] + obj.cxxflags = [ '-fprofile-arcs', '-ftest-coverage' ] def shutdown(): - autowaf.shutdown() - + autowaf.shutdown()