Paul Davis
683496c501
This is slightly awkward. It is important that we only link once to the static lib. Doing this at executable link time did not work, possibly because waf insisted on putting the two static libraries at the front of the link list. So instead libardour is now the point where linkage to these libraries occurs (and nowhere else). This should never be changed unless the change just moves the linkage point to another location. Also fix a bug with the libardour version tha was picked up by waf 1.7
100 lines
3.3 KiB
Python
100 lines
3.3 KiB
Python
#!/usr/bin/env python
|
|
from waflib.extras import autowaf as autowaf
|
|
from waflib import Options
|
|
import os
|
|
import sys
|
|
|
|
# Version of this package (even if built as a child)
|
|
MAJOR = '2'
|
|
MINOR = '1'
|
|
MICRO = '1'
|
|
LIBMIDIPP_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
|
|
LIBMIDIPP_LIB_VERSION = '4.1.0'
|
|
|
|
# Variables for 'waf dist'
|
|
APPNAME = 'libmidipp'
|
|
VERSION = LIBMIDIPP_VERSION
|
|
|
|
# Mandatory variables
|
|
top = '.'
|
|
out = 'build'
|
|
|
|
path_prefix = 'libs/midi++2/'
|
|
|
|
|
|
libmidi_sources = [
|
|
'midi.cc',
|
|
'channel.cc',
|
|
'ipmidi_port.cc',
|
|
'parser.cc',
|
|
'port.cc',
|
|
'midnam_patch.cc',
|
|
'mmc.cc',
|
|
'mtc.cc',
|
|
'version.cc',
|
|
]
|
|
|
|
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):
|
|
conf.load('compiler_cxx')
|
|
autowaf.build_version_files(path_prefix+'midi++/version.h', path_prefix+'version.cc',
|
|
'midipp', MAJOR, MINOR, MICRO, 'LIBMIDIPP_API', 'midi++/libmidi_visibility.h')
|
|
autowaf.configure(conf)
|
|
autowaf.check_pkg(conf, 'cppunit', uselib_store='CPPUNIT', atleast_version='1.12.0', mandatory=False)
|
|
autowaf.check_pkg(conf, 'jack', uselib_store='JACK', atleast_version='0.118.2')
|
|
autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML')
|
|
autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP', atleast_version='2.0')
|
|
|
|
# Boost headers
|
|
autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp')
|
|
autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp')
|
|
|
|
def build(bld):
|
|
# Library
|
|
if bld.is_defined ('INTERNAL_SHARED_LIBS'):
|
|
obj = bld.shlib(features = 'cxx cxxshlib', source=libmidi_sources)
|
|
obj.defines = [ 'LIBMIDIPP_DLL=1', 'LIBMIDIPP_DLL_EXPORTS=1' ]
|
|
obj.defines += [ 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ]
|
|
obj.cxxflags = [ '-fvisibility=hidden' ]
|
|
obj.cflags = [ '-fvisibility=hidden' ]
|
|
else:
|
|
obj = bld.stlib(features = 'cxx cxxstlib', source=libmidi_sources)
|
|
obj.cxxflags = [ '-fPIC', '-DWITH_JACK_MIDI' ]
|
|
obj.defines = []
|
|
|
|
# everybody loves JACK
|
|
obj.export_includes = ['.']
|
|
obj.includes = ['.', '../surfaces/control_protocol', '../ardour' ]
|
|
obj.name = 'libmidipp'
|
|
obj.target = 'midipp'
|
|
obj.uselib = 'GLIBMM SIGCPP XML JACK OSX'
|
|
obj.use = 'libpbd libevoral timecode_includes'
|
|
obj.vnum = LIBMIDIPP_LIB_VERSION
|
|
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
|
|
|
|
if bld.env['BUILD_TESTS'] and bld.is_defined('HAVE_CPPUNIT'):
|
|
# Unit tests
|
|
obj = bld(features = 'cxx cxxprogram')
|
|
obj.source = '''
|
|
test/MidnamTest.cpp
|
|
test/testrunner.cpp
|
|
'''
|
|
obj.includes = ['.', './src']
|
|
obj.use = 'libmidipp'
|
|
obj.uselib = 'CPPUNIT XML'
|
|
obj.target = 'run-tests'
|
|
obj.name = 'libmidipp-tests'
|
|
obj.install_path = ''
|
|
|
|
def shutdown():
|
|
autowaf.shutdown()
|