a0916ef368
https://waf.io/book/ says By default, the project name and version are set to noname and 1.0. To change them, it is necessary to provide two additional variables in the top-level project file - and waf code inspection confirms that waf itself only will use the top level APPNAME. Also, the 'waf dist' comment doesn't seem relevant - especially after this change - and is removed too. (Note: libs/evoral/wscript and libs/temporal/wscript still use APPNAME for other purposes.)
116 lines
3.6 KiB
Python
116 lines
3.6 KiB
Python
#!/usr/bin/env python
|
|
from waflib.extras import autowaf as autowaf
|
|
import os
|
|
|
|
# Mandatory variables
|
|
top = '.'
|
|
out = 'build'
|
|
|
|
# Version of this package (even if built as a child)
|
|
MAJOR = '0'
|
|
MINOR = '0'
|
|
MICRO = '0'
|
|
TEMPORAL_VERSION = "%s.%s.%s" % (MAJOR, MINOR, MICRO)
|
|
|
|
# Library version (UNIX style major, minor, micro)
|
|
# major increment <=> incompatible changes
|
|
# minor increment <=> compatible changes (additions)
|
|
# micro increment <=> no interface changes
|
|
TEMPORAL_LIB_VERSION = '0.0.0'
|
|
|
|
APPNAME = 'temporal'
|
|
I18N_PACKAGE = 'libtemporal'
|
|
|
|
temporal_sources = [
|
|
'debug.cc',
|
|
'bbt_time.cc',
|
|
'beats.cc',
|
|
'domain.cc',
|
|
'enums.cc',
|
|
'range.cc',
|
|
'superclock.cc',
|
|
'tempo.cc',
|
|
'time.cc',
|
|
'timeline.cc',
|
|
]
|
|
|
|
def options(opt):
|
|
autowaf.set_options(opt)
|
|
|
|
def configure(conf):
|
|
pass
|
|
|
|
def build(bld):
|
|
# Library
|
|
if bld.is_defined ('INTERNAL_SHARED_LIBS'):
|
|
obj = bld.shlib(features = 'cxx cxxshlib', source=temporal_sources)
|
|
obj.defines = [ 'LIBTEMPORAL_DLL_EXPORTS=1' ]
|
|
else:
|
|
obj = bld.stlib(features = 'cxx cxxstlib', source=temporal_sources)
|
|
obj.cxxflags = [ bld.env['compiler_flags_dict']['pic'] ]
|
|
obj.cflags = [ bld.env['compiler_flags_dict']['pic'] ]
|
|
obj.defines = [ ]
|
|
|
|
obj.export_includes = ['.']
|
|
obj.includes = ['.']
|
|
obj.name = 'libtemporal'
|
|
obj.target = 'temporal'
|
|
obj.vnum = TEMPORAL_LIB_VERSION
|
|
obj.install_path = bld.env['LIBDIR']
|
|
obj.defines += [ 'PACKAGE="' + I18N_PACKAGE + '"' ]
|
|
obj.uselib = [ 'GLIBMM', 'XML', 'OSX' ]
|
|
obj.use = [ 'libpbd' ]
|
|
|
|
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 = temporal_sources
|
|
obj.export_includes = ['.']
|
|
obj.includes = ['.']
|
|
obj.name = 'libtemporal_static'
|
|
obj.target = 'temporal_static'
|
|
obj.uselib = 'GLIBMM GTHREAD XML LIBPBD'
|
|
obj.use = 'libpbd'
|
|
obj.vnum = TEMPORAL_LIB_VERSION
|
|
obj.install_path = ''
|
|
if bld.env['TEST_COVERAGE']:
|
|
obj.linkflags = ['--coverage']
|
|
obj.cflags = ['--coverage']
|
|
obj.cxxflags = ['--coverage']
|
|
obj.defines = ['PACKAGE="libtemporal"']
|
|
|
|
# Unit tests
|
|
obj = bld(features = 'cxx cxxprogram')
|
|
obj.source = [
|
|
'test/BeatTest.cc',
|
|
'test/BBTTest.cc',
|
|
'test/TempoMapTest.cc',
|
|
'test/TempoMapCutBufferTest.cc',
|
|
'test/TimelineTest.cc',
|
|
'test/RangeTest.cc',
|
|
'test/testrunner.cc',
|
|
]
|
|
obj.includes = ['.']
|
|
obj.use = 'libtemporal_static'
|
|
obj.uselib = 'GLIBMM GTHREAD XML LIBPBD CPPUNIT'
|
|
obj.target = 'run-tests'
|
|
obj.name = 'libtemporal-tests'
|
|
obj.install_path = ''
|
|
obj.defines = ['PACKAGE="libtemporaltest"']
|
|
if bld.env['TEST_COVERAGE']:
|
|
obj.linkflags = ['--coverage']
|
|
obj.cflags = ['--coverage']
|
|
obj.cxxflags = ['--coverage']
|
|
if bld.is_defined('NEED_INTL'):
|
|
obj.linkflags = ' -lintl'
|
|
|
|
def test(ctx):
|
|
autowaf.pre_test(ctx, APPNAME)
|
|
print(os.getcwd())
|
|
os.environ['EVORAL_TEST_PATH'] = os.path.abspath('../test/testdata/')
|
|
autowaf.run_tests(ctx, APPNAME, ['./run-tests'])
|
|
autowaf.post_test(ctx, APPNAME)
|
|
|
|
def shutdown():
|
|
autowaf.shutdown()
|