Fairly major change to the way in which crossfades are handled;
[ardour.git] / libs / evoral / wscript
1 #!/usr/bin/env python
2 from waflib.extras import autowaf as autowaf
3 from waflib import Options
4 import os
5
6 # Version of this package (even if built as a child)
7 EVORAL_VERSION = '0.0.0'
8
9 # Library version (UNIX style major, minor, micro)
10 # major increment <=> incompatible changes
11 # minor increment <=> compatible changes (additions)
12 # micro increment <=> no interface changes
13 # Version history:
14 #   0.0.0 = 0,0,0
15 EVORAL_LIB_VERSION = '0.0.0'
16
17 # Variables for 'waf dist'
18 APPNAME = 'evoral'
19 VERSION = EVORAL_VERSION
20
21 # Mandatory variables
22 top = '.'
23 out = 'build'
24
25 def options(opt):
26     autowaf.set_options(opt)
27     opt.add_option('--test', action='store_true', default=False, dest='build_tests',
28                     help="Build unit tests")
29     opt.add_option('--test-coverage', action='store_true', default=False, dest='test_coverage',
30                     help="Use gcov to test for code coverage")
31
32 def configure(conf):
33     conf.load('compiler_cxx')
34     autowaf.configure(conf)
35     #autowaf.display_header('Evoral Configuration')
36
37     autowaf.check_pkg(conf, 'cppunit', uselib_store='CPPUNIT', atleast_version='1.12.0', mandatory=False)
38     autowaf.check_pkg(conf, 'glib-2.0', uselib_store='GLIB', atleast_version='2.2')
39     autowaf.check_pkg(conf, 'glibmm-2.4', uselib_store='GLIBMM', atleast_version='2.14.0')
40     autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD', atleast_version='2.14.0')
41
42     # Boost headers
43     autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp')
44     autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp')
45
46     conf.env['BUILD_TESTS'] = Options.options.build_tests
47     conf.env['TEST_COVERAGE'] = Options.options.test_coverage
48
49     #autowaf.display_msg(conf, "Unit tests", str(conf.env['BUILD_TESTS']))
50     #print
51
52 def build(bld):
53     # Headers
54     #bld.install_files('${INCLUDEDIR}/evoral', 'evoral/*.h')
55     #bld.install_files('${INCLUDEDIR}/evoral', 'evoral/*.hpp')
56
57     # Pkgconfig file
58     #autowaf.build_pc(bld, 'EVORAL', EVORAL_VERSION, 'GLIBMM GTHREAD')
59
60     libsmf = bld(features = 'c cshlib')
61     libsmf.source = '''
62             src/libsmf/smf.c
63             src/libsmf/smf_decode.c
64             src/libsmf/smf_load.c
65             src/libsmf/smf_save.c
66             src/libsmf/smf_tempo.c
67     '''
68     libsmf.export_includes = ['./src/libsmf']
69     libsmf.defines      = 'SMF_VERSION="1.2"'
70     libsmf.includes     = ['./src']
71     libsmf.name         = 'libsmf'
72     libsmf.target       = 'smf'
73     libsmf.uselib       = 'GLIB'
74     libsmf.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
75
76     lib_source = '''
77             src/Control.cpp
78             src/ControlList.cpp
79             src/ControlSet.cpp
80             src/Curve.cpp
81             src/Event.cpp
82             src/midi_util.cpp
83             src/MIDIEvent.cpp
84             src/Note.cpp
85             src/SMF.cpp
86             src/Sequence.cpp
87             src/debug.cpp
88     '''
89
90     # Library
91     obj = bld(features = 'cxx cxxshlib')
92     obj.source         = lib_source
93     obj.export_includes = ['.']
94     obj.includes       = ['.', './src']
95     obj.name           = 'libevoral'
96     obj.target         = 'evoral'
97     obj.uselib         = 'GLIBMM GTHREAD SMF'
98     obj.use            = 'libsmf libpbd'
99     obj.vnum           = EVORAL_LIB_VERSION
100     obj.install_path   = os.path.join(bld.env['LIBDIR'], 'ardour3')
101     obj.defines = ['PACKAGE="libevoral"' ]
102
103     if bld.env['BUILD_TESTS'] and bld.is_defined('HAVE_CPPUNIT'):
104         # Static library (for unit test code coverage)
105         obj = bld(features = 'cxx cstlib')
106         obj.source       = lib_source
107         obj.source         = lib_source
108         obj.export_includes = ['.']
109         obj.includes       = ['.', './src']
110         obj.name           = 'libevoral_static'
111         obj.target         = 'evoral_static'
112         obj.uselib         = 'GLIBMM GTHREAD SMF'
113         obj.use            = 'libsmf libpbd'
114         obj.vnum           = EVORAL_LIB_VERSION
115         obj.install_path   = ''
116         if bld.env['TEST_COVERAGE']:
117             obj.linkflags      = '-lgcov'
118             obj.cflags         = [ '-fprofile-arcs',  '-ftest-coverage' ]
119             obj.cxxflags       = [ '-fprofile-arcs',  '-ftest-coverage' ]
120         obj.defines        = ['PACKAGE="libevoral"' ]
121
122         # Unit tests
123         obj              = bld(features = 'cxx cxxprogram')
124         obj.source       = '''
125                 test/SequenceTest.cpp
126                 test/SMFTest.cpp
127                 test/RangeTest.cpp
128                 test/testrunner.cpp
129         '''
130         obj.includes     = ['.', './src']
131         obj.use          = 'libevoral_static'
132         obj.uselib       = 'CPPUNIT SNDFILE'
133         obj.target       = 'run-tests'
134         obj.name         = 'libevoral-tests'
135         obj.install_path = ''
136         if bld.env['TEST_COVERAGE']:
137             obj.linkflags      = '-lgcov'
138             obj.cflags         = [ '-fprofile-arcs',  '-ftest-coverage' ]
139             obj.cxxflags       = [ '-fprofile-arcs',  '-ftest-coverage' ]
140
141 def shutdown():
142     autowaf.shutdown()