summaryrefslogtreecommitdiff
path: root/libs/evoral/wscript
blob: 4293fd88d16c4daa55f412311ad817e430e1b918 (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
#!/usr/bin/env python
import 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
srcdir = '.'
blddir = '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 configure(conf):
	autowaf.configure(conf)
	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.print_summary(conf)
	autowaf.display_header('Evoral Configuration')
	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
	'''

	# 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'
		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'
		obj.libs         = 'gcov'
		obj.target       = 'run-tests'
		obj.install_path = ''
		obj.ccflags      = [ '-fprofile-arcs',  '-ftest-coverage' ]
		obj.cxxflags     = [ '-fprofile-arcs',  '-ftest-coverage' ]

def shutdown():
	autowaf.shutdown()