Tim Mayberry
dc81ab8640
This allows us to remove PathScanner source file and keep PathScanner class as header only until it is removed
181 lines
5.5 KiB
Python
181 lines
5.5 KiB
Python
#!/usr/bin/env python
|
|
from waflib.extras import autowaf as autowaf
|
|
from waflib import Options
|
|
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/'
|
|
|
|
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',
|
|
'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',
|
|
'system_exec.cc',
|
|
'textreceiver.cc',
|
|
'transmitter.cc',
|
|
'undo.cc',
|
|
'uuid.cc',
|
|
'version.cc',
|
|
'whitespace.cc',
|
|
'xml++.cc',
|
|
]
|
|
|
|
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, 'LIBPBD_API', 'pbd/libpbd_visibility.h')
|
|
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')
|
|
|
|
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)
|
|
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')
|
|
if Options.options.dist_target == 'mingw':
|
|
conf.check(compiler='cxx',
|
|
lib='ole32',
|
|
mandatory=True,
|
|
uselib_store='OLE')
|
|
|
|
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
|
|
if bld.is_defined ('INTERNAL_SHARED_LIBS'):
|
|
print('BUILD SHARED LIB')
|
|
obj = bld.shlib(features = 'cxx cxxshlib', source=libpbd_sources)
|
|
obj.defines = [ 'LIBPBD_DLL_EXPORTS=1' ]
|
|
else:
|
|
print('BUILD STATIC LIB')
|
|
obj = bld.stlib(features = 'cxx cxxstlib', source=libpbd_sources)
|
|
obj.cxxflags = [ '-fPIC' ]
|
|
obj.cflags = [ '-fPIC' ]
|
|
obj.defines = []
|
|
|
|
if bld.is_defined('DEBUG_RT_ALLOC'):
|
|
obj.source += 'debug_rt_alloc.c'
|
|
|
|
if bld.env['build_target'] != 'mingw':
|
|
obj.source += [ 'crossthread.cc' ]
|
|
|
|
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']
|
|
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 = bld.env['LIBDIR']
|
|
obj.defines += [ 'PACKAGE="' + I18N_PACKAGE + '"',
|
|
]
|
|
|
|
if bld.env['build_target'] == 'x86_64':
|
|
obj.defines += [ 'USE_X86_64_ASM' ]
|
|
if bld.env['build_target'] == 'mingw':
|
|
obj.source += [ 'windows_special_dirs.cc' ]
|
|
obj.uselib += ' OLE'
|
|
|
|
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/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():
|
|
autowaf.shutdown()
|