summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2016-12-04 15:15:11 -0500
committerDavid Robillard <d@drobilla.net>2016-12-04 15:15:11 -0500
commitb51321bd7dcf34055ba523506b35e2f38300cbb0 (patch)
tree9942fe92c6ba70f98feab07bc967b39fb0a96247
parent4c92d75cbe1689fac3158c775a15a3f693417d52 (diff)
Make libpbd and evoral capable of standalone build
Just an update to slightly rotten wscripts, shouldn't be any changes during an ardour build. Motivation being a short development cycle for working on evoral and/or its test suite.
-rw-r--r--libs/evoral/wscript41
-rw-r--r--libs/pbd/libpbd.pc.in8
-rw-r--r--libs/pbd/wscript32
3 files changed, 58 insertions, 23 deletions
diff --git a/libs/evoral/wscript b/libs/evoral/wscript
index 2cea267c46..84d822a4bd 100644
--- a/libs/evoral/wscript
+++ b/libs/evoral/wscript
@@ -23,13 +23,18 @@ top = '.'
out = 'build'
def options(opt):
+ opt.load('compiler_c')
+ opt.load('compiler_cxx')
autowaf.set_options(opt)
opt.add_option('--test', action='store_true', default=False, dest='build_tests',
help="Build unit tests")
opt.add_option('--test-coverage', action='store_true', default=False, dest='test_coverage',
help="Use gcov to test for code coverage")
+ opt.add_option('--internal-shared-libs', action='store_true', default=True, dest='internal_shared_libs',
+ help='Build internal libs as shared libraries')
def configure(conf):
+ conf.load('compiler_c')
conf.load('compiler_cxx')
autowaf.configure(conf)
#autowaf.display_header('Evoral Configuration')
@@ -38,6 +43,7 @@ def configure(conf):
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')
+ autowaf.check_pkg(conf, 'libpbd-4', uselib_store='LIBPBD', atleast_version='4.0.0', mandatory=True)
# Boost headers
autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp')
@@ -46,6 +52,8 @@ def configure(conf):
conf.env['BUILD_TESTS'] = Options.options.build_tests
conf.env['TEST_COVERAGE'] = Options.options.test_coverage
+ if Options.options.internal_shared_libs:
+ conf.define('INTERNAL_SHARED_LIBS', 1)
#autowaf.display_msg(conf, "Unit tests", str(conf.env['BUILD_TESTS']))
#print
@@ -105,7 +113,7 @@ def build(bld):
obj.includes = ['.', './src']
obj.name = 'libevoral'
obj.target = 'evoral'
- obj.uselib = 'GLIBMM GTHREAD SMF XML'
+ obj.uselib = 'GLIBMM GTHREAD SMF XML LIBPBD'
obj.use = 'libsmf libpbd'
obj.vnum = EVORAL_LIB_VERSION
obj.install_path = bld.env['LIBDIR']
@@ -114,20 +122,19 @@ def build(bld):
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 = 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 XML'
+ obj.uselib = 'GLIBMM GTHREAD SMF XML LIBPBD'
obj.use = 'libsmf libpbd'
obj.vnum = EVORAL_LIB_VERSION
obj.install_path = ''
if bld.env['TEST_COVERAGE']:
- obj.linkflags = '-lgcov'
- obj.cflags = [ '-fprofile-arcs', '-ftest-coverage' ]
- obj.cxxflags = [ '-fprofile-arcs', '-ftest-coverage' ]
+ obj.linkflags = ['--coverage']
+ obj.cflags = ['--coverage']
+ obj.cxxflags = ['--coverage']
obj.defines = ['PACKAGE="libevoral"']
# Unit tests
@@ -136,20 +143,26 @@ def build(bld):
test/SequenceTest.cpp
test/SMFTest.cpp
test/RangeTest.cpp
+ test/NoteTest.cpp
test/CurveTest.cpp
test/testrunner.cpp
'''
obj.includes = ['.', './src']
- obj.use = 'libevoral_static'
- obj.uselib = 'CPPUNIT SNDFILE'
+ obj.use = 'libevoral_static libboost_system'
+ obj.uselib = 'CPPUNIT SNDFILE LIBPBD'
obj.target = 'run-tests'
obj.name = 'libevoral-tests'
obj.install_path = ''
obj.defines = ['PACKAGE="libevoraltest"']
+ obj.linkflags = ['-lboost_system'] # FIXME: not sure why this is needed
if bld.env['TEST_COVERAGE']:
- obj.linkflags = '-lgcov'
- obj.cflags = [ '-fprofile-arcs', '-ftest-coverage' ]
- obj.cxxflags = [ '-fprofile-arcs', '-ftest-coverage' ]
-
-def shutdown():
- autowaf.shutdown()
+ obj.linkflags += ['--coverage']
+ obj.cflags = ['--coverage']
+ obj.cxxflags = ['--coverage']
+
+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)
diff --git a/libs/pbd/libpbd.pc.in b/libs/pbd/libpbd.pc.in
index 14d0208845..6a39382e09 100644
--- a/libs/pbd/libpbd.pc.in
+++ b/libs/pbd/libpbd.pc.in
@@ -1,11 +1,11 @@
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
-includedir=@includedir@/pbd
+includedir=@includedir@
Name: libpbd
-Version: @VERSION@
+Version: @LIBPBD_VERSION@
Description: libpbd, a library of useful, generic C++ objects
-Requires:
+Requires: libcurl libarchive
Libs: -L${libdir} -lpbd @NON_PKG_LIBS@
-Cflags: -I${includedir} @NON_PKG_CFLAGS@
+Cflags: -I${includedir}/pbd-@LIBPBD_MAJOR_VERSION@ @NON_PKG_CFLAGS@
diff --git a/libs/pbd/wscript b/libs/pbd/wscript
index d2271ccc2d..05c2deb1ae 100644
--- a/libs/pbd/wscript
+++ b/libs/pbd/wscript
@@ -16,6 +16,7 @@ LIBPBD_VERSION = "%s.%s.%s" % (MAJOR, MINOR, MICRO)
# minor increment <=> compatible changes (additions)
# micro increment <=> no interface changes
LIBPBD_LIB_VERSION = '4.1.0'
+LIBPBD_MAJOR_VERSION = '4'
# Variables for 'waf dist'
APPNAME = 'libpbd'
@@ -87,13 +88,24 @@ libpbd_sources = [
]
def options(opt):
+ opt.load('compiler_cxx')
autowaf.set_options(opt)
+ opt.add_option('--ppc', action='store_true', default=False, dest='ppc',
+ help='Compile with -arch ppc (OS X ONLY)')
+ opt.add_option('--dist-target', type='string', default='auto', dest='dist_target',
+ help='Specify the target for cross-compiling [auto,none,x86,i386,i686,x86_64,tiger,leopard,mingw,msvc]')
+ opt.add_option('--internal-shared-libs', action='store_true', default=True, dest='internal_shared_libs',
+ help='Build internal libs as shared libraries')
def configure(conf):
conf.load('compiler_cxx')
autowaf.configure(conf)
autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML')
autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP', atleast_version='2.0')
+ autowaf.check_pkg(conf, 'libcurl', uselib_store='CURL', atleast_version='7.0.0', mandatory=True)
+ autowaf.check_pkg(conf, 'libarchive', uselib_store='ARCHIVE', atleast_version='3.0.0', mandatory=True)
+ autowaf.check_pkg(conf, 'glibmm-2.4', uselib_store='GLIBMM', atleast_version='2.32.0', mandatory=True)
+ autowaf.check_pkg(conf, 'giomm-2.4', uselib_store='GIOMM', atleast_version='2.2', mandatory=True)
conf.check(function_name='getmntent', header_name='mntent.h', define_name='HAVE_GETMNTENT',mandatory=False)
conf.check(header_name='execinfo.h', define_name='HAVE_EXECINFO',mandatory=False)
@@ -102,8 +114,6 @@ def configure(conf):
conf.check_cc(function_name='posix_memalign', header_name='stdlib.h', cflags='-D_XOPEN_SOURCE=600', define_name='HAVE_POSIX_MEMALIGN', mandatory=False)
conf.check(function_name='localtime_r', header_name='time.h', define_name='HAVE_LOCALTIME_R',mandatory=False)
- conf.write_config_header('libpbd-config.h', remove=False)
-
# Boost headers
autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp')
autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp')
@@ -113,7 +123,22 @@ def configure(conf):
mandatory=True,
uselib_store='OLE')
+ if Options.options.internal_shared_libs:
+ conf.define('INTERNAL_SHARED_LIBS', 1)
+
+ conf.write_config_header('libpbd-config.h', remove=False)
+
def build(bld):
+ if not autowaf.is_child(): # Building standalone, install dev stuff
+ # C++ Headers
+ includedir = '${INCLUDEDIR}/pbd-%s/pbd' % LIBPBD_MAJOR_VERSION
+ bld.install_files(includedir, bld.path.ant_glob('pbd/*.h'))
+ bld.install_files(includedir, 'build/pbd/signals_generated.h')
+
+ # Pkgconfig file
+ autowaf.build_pc(bld, 'libpbd', LIBPBD_VERSION, LIBPBD_MAJOR_VERSION, [],
+ {'LIBPBD_VERSION' : LIBPBD_VERSION,
+ 'LIBPBD_MAJOR_VERSION' : LIBPBD_MAJOR_VERSION})
# Make signals_generated.h using signals.py
bld(rule = sys.executable + ' ${SRC} ${TGT}', source = 'pbd/signals.py', target = 'pbd/signals_generated.h')
@@ -183,6 +208,3 @@ def build(bld):
testobj.defines = [ 'PACKAGE="' + I18N_PACKAGE + '"' ]
if sys.platform != 'darwin' and bld.env['build_target'] != 'mingw':
testobj.linkflags = ['-lrt']
-
-def shutdown():
- autowaf.shutdown()