summaryrefslogtreecommitdiff
path: root/libs/evoral/wscript
blob: 24a5f4dd1fc120e16fc3d1062f18eb20826a71d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/usr/bin/env python
from waflib.extras import autowaf as autowaf
import Options
import os

# Version of this package (even if built as a child)
EVORAL_VERSION = '0.0.0'

# Library version (UNIX style major, minor, micro)
# major increment <=> incompatible changes
# minor increment <=> compatible changes (additions)
# micro increment <=> no interface changes
# Version history:
#   0.0.0 = 0,0,0
EVORAL_LIB_VERSION = '0.0.0'

# Variables for 'waf dist'
APPNAME = 'evoral'
VERSION = EVORAL_VERSION

# Mandatory variables
top = '.'
out = 'build'

def options(opt):
    autowaf.set_options(opt)
    opt.add_option('--test', action='store_true', default=False, dest='build_tests',
                    help="Build unit tests")

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, 'cxx', 'boost/shared_ptr.hpp')
    autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp')

    conf.env['BUILD_TESTS'] = Options.options.build_tests

    #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(features = 'c cshlib')
    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.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(features = 'cxx cxxshlib')
    obj.source         = lib_source
    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   = os.path.join(bld.env['LIBDIR'], 'ardour3')
    obj.defines = ['PACKAGE="libevoral"' ]

    if bld.env['BUILD_TESTS'] and bld.env['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   = ''
        obj.cflags         = [ '-fprofile-arcs',  '-ftest-coverage' ]
        obj.cxxflags       = [ '-fprofile-arcs',  '-ftest-coverage' ]
        obj.defines        = ['PACKAGE="libevoral"' ]

        # Unit tests
        obj              = bld(features = 'cxx cxxprogram')
        obj.source       = '''
                test/SequenceTest.cpp
                test/SMFTest.cpp
                test/testrunner.cpp
        '''
        obj.includes     = ['.', './src']
        obj.use          = 'libevoral_static'
        obj.uselib       = 'CPPUNIT SNDFILE'
        obj.libs         = 'gcov'
        obj.target       = 'run-tests'
        obj.name         = 'libevoral-tests'
        obj.install_path = ''
        obj.cflags       = [ '-fprofile-arcs',  '-ftest-coverage' ]
        obj.cxxflags     = [ '-fprofile-arcs',  '-ftest-coverage' ]

def shutdown():
    autowaf.shutdown()