13
0
livetrax/libs/pbd/wscript

151 lines
4.5 KiB
Plaintext
Raw Normal View History

#!/usr/bin/env python
from waflib.extras import autowaf as autowaf
from waflib import TaskGen
import os
import sys
# Version of this package (even if built as a child)
MAJOR = '4'
MINOR = '1'
MICRO = '0'
LIBPBD_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
LIBPBD_LIB_VERSION = '4.1.0'
# Variables for 'waf dist'
APPNAME = 'libpbd'
VERSION = LIBPBD_VERSION
I18N_PACKAGE = 'libpbd4'
# Mandatory variables
top = '.'
out = 'build'
path_prefix = 'libs/pbd/'
def options(opt):
autowaf.set_options(opt)
def configure(conf):
conf.load('compiler_cxx')
autowaf.build_version_files(path_prefix+'pbd/version.h', path_prefix+'version.cc',
'libpbd', MAJOR, MINOR, MICRO)
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')
if sys.platform != 'darwin':
autowaf.check_pkg(conf, 'uuid', uselib_store='UUID')
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)
conf.check(header_name='unistd.h', define_name='HAVE_UNISTD',mandatory=False)
if conf.check_cc(function_name='posix_memalign', header_name='stdlib.h', cflags='-D_XOPEN_SOURCE=600',mandatory=False) == False:
conf.define ('NO_POSIX_MEMALIGN',1)
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')
# autowaf.check_header(conf, 'cxx', 'boost/uuid/uuid.hpp')
def build(bld):
# Library
obj = bld(features = 'cxx cxxshlib')
obj.source = '''
basename.cc
base_ui.cc
boost_debug.cc
cartesian.cc
command.cc
convert.cc
controllable.cc
controllable_descriptor.cc
clear_dir.cc
crossthread.cc
cpus.cc
debug.cc
enumwriter.cc
event_loop.cc
dmalloc.cc
enums.cc
epa.cc
error.cc
filesystem.cc
filesystem_paths.cc
file_manager.cc
file_utils.cc
fpu.cc
id.cc
locale_guard.cc
malign.cc
mountpoint.cc
openuri.cc
pathscanner.cc
pool.cc
property_list.cc
pthread_utils.cc
receiver.cc
search_path.cc
semutils.cc
shortpath.cc
signals.cc
sndfile_manager.cc
stacktrace.cc
stateful_diff_command.cc
stateful.cc
strreplace.cc
strsplit.cc
textreceiver.cc
transmitter.cc
undo.cc
uuid.cc
version.cc
whitespace.cc
xml++.cc
'''
if bld.is_defined('DEBUG_RT_ALLOC'):
obj.source += 'debug_rt_alloc.c'
obj.export_includes = ['.']
obj.includes = ['.']
obj.name = 'libpbd'
obj.target = 'pbd'
obj.uselib = 'GLIBMM SIGCPP XML UUID SNDFILE GIOMM'
if sys.platform == 'darwin':
TaskGen.task_gen.mappings['.mm'] = TaskGen.task_gen.mappings['.cc']
obj.source += 'cocoa_open_uri.mm'
obj.uselib += ' OSX'
obj.vnum = LIBPBD_LIB_VERSION
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
obj.defines = ['PACKAGE="' + I18N_PACKAGE + '"']
if bld.env['build_target'] == 'x86_64':
obj.defines += [ 'USE_X86_64_ASM' ]
if bld.env['BUILD_TESTS'] and bld.is_defined('HAVE_CPPUNIT'):
# Unit tests
testobj = bld(features = 'cxx cxxprogram')
testobj.source = '''
test/testrunner.cc
test/xpath.cc
test/scalar_properties.cc
test/signals_test.cc
test/convert_test.cc
'''.split()
testobj.target = 'run-tests'
testobj.includes = obj.includes + ['test', '../pbd']
testobj.uselib = 'CPPUNIT XML SNDFILE'
testobj.use = 'libpbd'
if sys.platform != 'darwin':
testobj.linkflags = ['-lrt']
def shutdown():
autowaf.shutdown()