#!/usr/bin/env python
from waflib.extras import autowaf as autowaf
+from waflib import Options
from waflib import TaskGen
import os
import sys
# Variables for 'waf dist'
APPNAME = 'libpbd'
VERSION = LIBPBD_VERSION
+I18N_PACKAGE = 'libpbd4'
# Mandatory variables
top = '.'
path_prefix = 'libs/pbd/'
+libpbd_sources = [
+ 'basename.cc',
+ 'base_ui.cc',
+ 'boost_debug.cc',
+ 'cartesian.cc',
+ 'command.cc',
+ 'convert.cc',
+ 'controllable.cc',
+ 'controllable_descriptor.cc',
+ 'clear_dir.cc',
+ 'cpus.cc',
+ 'debug.cc',
+ 'enumwriter.cc',
+ 'event_loop.cc',
+ 'enums.cc',
+ 'epa.cc',
+ 'error.cc',
+ 'ffs.cc',
+ 'file_manager.cc',
+ 'file_utils.cc',
+ 'fpu.cc',
+ 'glib_semaphore.cc',
+ 'id.cc',
+ 'locale_guard.cc',
+ 'localtime_r.cc',
+ 'malign.cc',
+ 'mountpoint.cc',
+ 'openuri.cc',
+ 'pathexpand.cc',
+ 'pathscanner.cc',
+ 'pbd.cc',
+ 'pool.cc',
+ 'property_list.cc',
+ 'pthread_utils.cc',
+ 'receiver.cc',
+ 'resource.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',
+]
+
def options(opt):
autowaf.set_options(opt)
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.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')
- # autowaf.check_header(conf, 'cxx', 'boost/uuid/uuid.hpp')
def build(bld):
+
+ # Make signals_generated.h using signals.py
+ bld(rule = 'python ${SRC} ${TGT}', source = 'pbd/signals.py', target = 'pbd/signals_generated.h')
+
# 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 ('INTERNAL_SHARED_LIBS'):
+ print('BUILD SHARED LIB')
+ obj = bld.shlib(features = 'cxx cxxshlib', source=libpbd_sources)
+ else:
+ print('BUILD STATIC LIB')
+ obj = bld.stlib(features = 'cxx cxxstlib', source=libpbd_sources)
+ obj.cxxflags = [ '-fPIC' ]
if bld.is_defined('DEBUG_RT_ALLOC'):
obj.source += 'debug_rt_alloc.c'
+ if bld.env['build_target'] != 'mingw':
+ obj.source += [ 'crossthread.cc' ]
+ else:
+ obj.source += [ 'mingw64/mingw64_pbd.cc' ]
+
obj.export_includes = ['.']
obj.includes = ['.']
obj.name = 'libpbd'
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'
+ if 'cocoa_open_uri.mm' not in obj.source:
+ 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.cxxflags = ['-DPACKAGE="libpbd"']
-
+ obj.defines = ['PACKAGE="' + I18N_PACKAGE + '"']
+
if bld.env['build_target'] == 'x86_64':
- obj.cxxflags += [ '-DUSE_X86_64_ASM' ]
+ obj.defines += [ 'USE_X86_64_ASM' ]
if bld.env['BUILD_TESTS'] and bld.is_defined('HAVE_CPPUNIT'):
# Unit tests
testobj.source = '''
test/testrunner.cc
test/xpath.cc
+ test/mutex_test.cc
test/scalar_properties.cc
test/signals_test.cc
+ test/convert_test.cc
+ test/filesystem_test.cc
+ test/test_common.cc
'''.split()
testobj.target = 'run-tests'
testobj.includes = obj.includes + ['test', '../pbd']
testobj.uselib = 'CPPUNIT XML SNDFILE'
testobj.use = 'libpbd'
+ testobj.name = 'libpbd-tests'
+ if sys.platform != 'darwin' and bld.env['build_target'] != 'mingw':
+ testobj.linkflags = ['-lrt']
def shutdown():