X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fevoral%2Fwscript;h=f97096b3299bdabc37241e6257dc9334de923e4e;hb=99260742d24001976a476959f725a461110a7575;hp=02a71b3f48b451a2328b1b6092579ef5c1631fd6;hpb=947077c12e13a11d6a39b931bd21f288883568cd;p=ardour.git diff --git a/libs/evoral/wscript b/libs/evoral/wscript index 02a71b3f48..f97096b329 100644 --- a/libs/evoral/wscript +++ b/libs/evoral/wscript @@ -1,5 +1,7 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf +from waflib import Options +import os # Version of this package (even if built as a child) EVORAL_VERSION = '0.0.0' @@ -17,64 +19,139 @@ APPNAME = 'evoral' VERSION = EVORAL_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' -def set_options(opt): - autowaf.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): - autowaf.configure(conf) - autowaf.check_tool(conf, 'compiler_cxx') - autowaf.check_pkg(conf, 'glibmm-2.4', uselib_store='GLIBMM', atleast_version='2.14.0', mandatory=True) - autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD', atleast_version='2.14.0', mandatory=True) - autowaf.check_pkg(conf, 'cppunit', uselib_store='CPPUNIT', atleast_version='1.12.0', mandatory=False) - autowaf.check_pkg(conf, 'smf', uselib_store='SMF', atleast_version='1.2', mandatory=False) + 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') - - # Library - obj = bld.new_task_gen('cxx', 'shlib') - obj.source = ''' - src/Control.cpp - src/ControlList.cpp - src/ControlSet.cpp - src/Curve.cpp - src/Event.cpp - src/MIDIEvent.cpp - src/Note.cpp - src/SMF.cpp - src/SMFReader.cpp - src/LibSMF.cpp - src/Sequence.cpp - ''' - obj.export_incdirs = ['.'] - obj.includes = ['.', './src'] - obj.name = 'libevoral' - obj.target = 'evoral' - obj.uselib = 'GLIBMM GTHREAD SMF' - obj.vnum = EVORAL_LIB_VERSION - obj.install_path = '' - - # 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' - obj.uselib = 'CPPUNIT' - obj.target = 'run-tests' - obj.install_path = '' + # Headers + #bld.install_files('${INCLUDEDIR}/evoral', 'evoral/*.h') + #bld.install_files('${INCLUDEDIR}/evoral', 'evoral/*.hpp') -def shutdown(): - autowaf.shutdown() + # 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()