Fix deadlock.
[ardour.git] / libs / pbd / wscript
index 12a3791b648e84ef4b089912a2c2c59528d3a0bb..a2c880275034da4d23ffd2fdca1c8d98c43149b9 100644 (file)
@@ -1,8 +1,14 @@
 #!/usr/bin/env python
 import autowaf
+import os
+import sys
+import TaskGen
 
 # Version of this package (even if built as a child)
-LIBPBD_VERSION = '0.0.0'
+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
@@ -18,29 +24,32 @@ VERSION = LIBPBD_VERSION
 srcdir = '.'
 blddir = 'build'
 
+path_prefix = 'libs/pbd/'
+
 def set_options(opt):
        autowaf.set_options(opt)
 
 def configure(conf):
+       autowaf.build_version_files(path_prefix+'pbd/version.h', path_prefix+'version.cc',
+                       'libpbd', MAJOR, MINOR, MICRO)
        autowaf.configure(conf)
-       autowaf.check_tool(conf, 'compiler_cxx')
-       autowaf.check_pkg(conf, 'glib-2.0', uselib_store='GLIB', atleast_version='2.2', mandatory=True)
-       autowaf.check_pkg(conf, 'glibmm-2.4', uselib_store='GLIBMM', atleast_version='2.14.0', mandatory=True)
-       autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP', atleast_version='2.0', mandatory=True)
-       autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML', mandatory=True)
-       autowaf.check_pkg(conf, 'uuid', uselib_store='UUID', mandatory=True)
+       conf.check_tool('compiler_cxx')
+       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')
+       conf.check(header_name='execinfo.h', define_name='HAVE_EXECINFO')
+       conf.check(header_name='unistd.h', define_name='HAVE_UNISTD')
+       if conf.check_cc(function_name='posix_memalign', header_name='stdlib.h', ccflags='-D_XOPEN_SOURCE=600') == False:
+               conf.define ('NO_POSIX_MEMALIGN',1)
 
-       # This must be defined for libpbd only, it breaks ardour
-       conf.check(header_name='execinfo.h', define_name='PBD_HAVE_EXECINFO')
-
-       conf.env.append_value('CXXFLAGS', '-DHAVE_WAFCONFIG_H')
-       conf.write_config_header('wafconfig.h')
+       conf.write_config_header('libpbd-config.h')
 
        # Boost headers
-       autowaf.check_header(conf, 'boost/shared_ptr.hpp', mandatory=True)
-       autowaf.check_header(conf, 'boost/weak_ptr.hpp', mandatory=True)
+       autowaf.check_header(conf, 'boost/shared_ptr.hpp')
+       autowaf.check_header(conf, 'boost/weak_ptr.hpp')
 
 def build(bld):
        # Library
@@ -48,25 +57,43 @@ def build(bld):
        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
                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
@@ -79,16 +106,35 @@ def build(bld):
                xml++.cc
        '''
        obj.export_incdirs = ['.']
-       obj.cxxflags     = '-DPACKAGE=\\\"libpbd\\\"'
-       if bld.env['PBD_HAVE_EXECINFO']:
-               obj.cxxflags += ' -DHAVE_EXECINFO '
        obj.includes     = ['.']
        obj.name         = 'libpbd'
        obj.target       = 'pbd'
-       obj.uselib       = 'GLIBMM SIGCPP XML UUID'
+       obj.uselib       = 'GLIBMM SIGCPP XML UUID SNDFILE'
+       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 = ''
-       
+       obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
+       obj.cxxflags     = ['-DPACKAGE="libpbd"']
+
+       if bld.env['build_target'] == 'x86_64':
+               obj.cxxflags += [ '-DUSE_X86_64_ASM' ]
+
+       if bld.env['BUILD_TESTS'] and bld.env['HAVE_CPPUNIT']:
+               # Unit tests
+               testobj              = bld.new_task_gen('cxx', 'program')
+               testobj.source       = '''
+                        test/testrunner.cc
+                       test/xpath.cc
+                        test/scalar_properties.cc
+               '''.split()
+               testobj.target       = 'run-tests'
+               testobj.includes     = obj.includes + ['test', '../pbd']
+               testobj.uselib       = 'CPPUNIT XML SNDFILE'
+               testobj.uselib_local = 'libpbd'
+
+
 def shutdown():
        autowaf.shutdown()