Tweak comment.
[ardour.git] / libs / pbd / wscript
1 #!/usr/bin/env python
2 from waflib.extras import autowaf as autowaf
3 from waflib import TaskGen
4 import os
5 import sys
6
7 # Version of this package (even if built as a child)
8 MAJOR = '4'
9 MINOR = '1'
10 MICRO = '0'
11 LIBPBD_VERSION = "%s.%s.%s" % (MAJOR, MINOR, MICRO)
12
13 # Library version (UNIX style major, minor, micro)
14 # major increment <=> incompatible changes
15 # minor increment <=> compatible changes (additions)
16 # micro increment <=> no interface changes
17 LIBPBD_LIB_VERSION = '4.1.0'
18
19 # Variables for 'waf dist'
20 APPNAME = 'libpbd'
21 VERSION = LIBPBD_VERSION
22 I18N_PACKAGE = 'libpbd4'
23
24 # Mandatory variables
25 top = '.'
26 out = 'build'
27
28 path_prefix = 'libs/pbd/'
29
30 def options(opt):
31     autowaf.set_options(opt)
32
33 def configure(conf):
34     conf.load('compiler_cxx')
35     autowaf.build_version_files(path_prefix+'pbd/version.h', path_prefix+'version.cc',
36                     'libpbd', MAJOR, MINOR, MICRO)
37     autowaf.configure(conf)
38     autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML')
39     autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP', atleast_version='2.0')
40     if sys.platform != 'darwin':
41         autowaf.check_pkg(conf, 'uuid', uselib_store='UUID')
42
43     conf.check(function_name='getmntent', header_name='mntent.h', define_name='HAVE_GETMNTENT',mandatory=False)
44     conf.check(header_name='execinfo.h', define_name='HAVE_EXECINFO',mandatory=False)
45     conf.check(header_name='unistd.h', define_name='HAVE_UNISTD',mandatory=False)
46     if conf.check_cc(function_name='posix_memalign', header_name='stdlib.h', cflags='-D_XOPEN_SOURCE=600',mandatory=False) == False:
47         conf.define ('NO_POSIX_MEMALIGN',1)
48
49     conf.write_config_header('libpbd-config.h', remove=False)
50
51     # Boost headers
52     autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp')
53     autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp')
54     # autowaf.check_header(conf, 'cxx', 'boost/uuid/uuid.hpp')
55
56 def build(bld):
57     
58     # Make signals_generated.h using signals.py
59     bld(rule = 'python ${SRC} ${TGT}', source = 'pbd/signals.py', target = 'pbd/signals_generated.h')
60
61     # Library
62     obj = bld(features = 'cxx cxxshlib')
63     obj.source = '''
64             basename.cc
65             base_ui.cc
66             boost_debug.cc
67             cartesian.cc
68             command.cc
69             convert.cc
70             controllable.cc
71             controllable_descriptor.cc
72             clear_dir.cc
73             crossthread.cc
74             cpus.cc
75             debug.cc
76             enumwriter.cc
77             event_loop.cc
78             dmalloc.cc
79             enums.cc
80             epa.cc
81             error.cc
82             filesystem.cc
83             filesystem_paths.cc
84             file_manager.cc
85             file_utils.cc
86             fpu.cc
87             id.cc
88             locale_guard.cc
89             malign.cc
90             mountpoint.cc
91             openuri.cc
92             pathscanner.cc
93             pool.cc
94             property_list.cc
95             pthread_utils.cc
96             receiver.cc
97             search_path.cc
98             semutils.cc
99             shortpath.cc
100             signals.cc
101             sndfile_manager.cc
102             stacktrace.cc
103             stateful_diff_command.cc
104             stateful.cc
105             strreplace.cc
106             strsplit.cc
107             textreceiver.cc
108             transmitter.cc
109             undo.cc
110             uuid.cc
111             version.cc
112             whitespace.cc
113             xml++.cc
114     '''
115
116     if bld.is_defined('DEBUG_RT_ALLOC'):
117         obj.source += 'debug_rt_alloc.c'
118
119     obj.export_includes = ['.']
120     obj.includes     = ['.']
121     obj.name         = 'libpbd'
122     obj.target       = 'pbd'
123     obj.uselib       = 'GLIBMM SIGCPP XML UUID SNDFILE GIOMM'
124     if sys.platform == 'darwin':
125         TaskGen.task_gen.mappings['.mm'] = TaskGen.task_gen.mappings['.cc']
126         obj.source += 'cocoa_open_uri.mm'
127         obj.uselib += ' OSX'
128     obj.vnum         = LIBPBD_LIB_VERSION
129     obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
130     obj.defines     = ['PACKAGE="' + I18N_PACKAGE + '"']
131
132     if bld.env['build_target'] == 'x86_64':
133         obj.defines += [ 'USE_X86_64_ASM' ]
134
135     if bld.env['BUILD_TESTS'] and bld.is_defined('HAVE_CPPUNIT'):
136         # Unit tests
137         testobj              = bld(features = 'cxx cxxprogram')
138         testobj.source       = '''
139                 test/testrunner.cc
140                 test/xpath.cc
141                 test/scalar_properties.cc
142                 test/signals_test.cc
143                 test/convert_test.cc
144         '''.split()
145         testobj.target       = 'run-tests'
146         testobj.includes     = obj.includes + ['test', '../pbd']
147         testobj.uselib       = 'CPPUNIT XML SNDFILE'
148         testobj.use          = 'libpbd'
149         testobj.name         = 'libpbd-tests'
150         if sys.platform != 'darwin':
151             testobj.linkflags    = ['-lrt']
152
153
154 def shutdown():
155     autowaf.shutdown()