Optimize automation-event process splitting
[ardour.git] / session_utils / wscript
1 #!/usr/bin/env python
2 from waflib.extras import autowaf as autowaf
3 from waflib import Options, TaskGen
4 import waflib.Logs as Logs, waflib.Utils as Utils
5 import os
6 import shutil
7 import sys
8 import re
9 import time
10 from waflib.Task import Task
11
12 # Mandatory variables
13 top = '.'
14 out = 'build'
15
16 def options(opt):
17     autowaf.set_options(opt)
18
19 def configure(conf):
20     if not "dummy" in conf.env['BACKENDS']:
21         print ('session-utils depend on the dummy backend.')
22         autowaf.display_msg(conf, 'build session-utils', 'no')
23         return
24     # no wine
25     if Options.options.windows_vst and Options.options.dist_target != 'mingw':
26         autowaf.display_msg(conf, 'build session-utils', 'no')
27         return
28     autowaf.display_msg(conf, 'build session-utils', 'yes')
29     conf.load('misc')
30     conf.load('compiler_cxx')
31     autowaf.configure(conf)
32
33 def build_ardour_util(bld, util):
34     pgmprefix = bld.env['PROGRAM_NAME'].lower() + str(bld.env['MAJOR'])
35
36     # just the normal executable version of the GTK GUI
37     obj = bld (features = 'cxx c cxxprogram')
38     # this program does not do the whole hidden symbols thing
39     obj.cxxflags = [ '-fvisibility=default' ]
40     obj.source   = ['common.cc', util + '.cc' ]
41     obj.target   = pgmprefix + '-' + util
42     obj.includes = ['.']
43     obj.use      = [ 'libpbd',
44                      'libardour',
45                      'libardour_cp',
46                      'libtemporal',
47                      'libmidipp',
48                      ]
49     obj.defines = [
50         'VERSIONSTRING="' + str(bld.env['VERSION']) + '"',
51         'UTILNAME="'   + str(pgmprefix + '-' + util) + '"',
52         'DATA_DIR="'   + os.path.normpath(bld.env['DATADIR']) + '"',
53         'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
54         'LOCALEDIR="'  + os.path.join(os.path.normpath(bld.env['DATADIR']), 'locale') + '"',
55         'PACKAGE="'    + "ARDOURUTILS" + '"',
56         ]
57     obj.install_path = bld.env['LIBDIR'] + '/utils'
58     obj.uselib       = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD OGG CURL DL XML'
59     obj.uselib       += ' FFTW3F'
60     obj.uselib       += ' AUDIOUNITS OSX LO '
61     obj.uselib       += ' TAGLIB '
62
63     if sys.platform == 'darwin':
64         obj.uselib += ' AUDIOUNITS OSX'
65         obj.use    += ' libappleutility'
66     obj.includes += ['../libs']
67
68     if bld.env['build_target'] == 'mingw':
69         obj.install_path = bld.env['BINDIR']
70
71     if bld.is_defined('NEED_INTL'):
72         obj.linkflags = ' -lintl'
73
74
75 def build(bld):
76     VERSION = "%s.%s" % (bld.env['MAJOR'], bld.env['MINOR'])
77     # session-utils depend on the dummy backend
78     if not "dummy" in bld.env['BACKENDS']:
79         return
80     # no wine
81     if bld.is_defined('WINDOWS_VST_SUPPORT') and bld.env['build_target'] != 'mingw':
82         return
83
84     pgmprefix = bld.env['PROGRAM_NAME'].lower() + str(bld.env['MAJOR'])
85
86     utils = bld.path.ant_glob('*.cc', excl=['example.cc', 'common.cc'])
87
88     for util in utils:
89         fn = str(util)[:-3]
90         build_ardour_util(bld, fn)
91         if bld.env['build_target'] != 'mingw':
92             bld.symlink_as(bld.env['BINDIR'] + '/' + pgmprefix + "-" + fn, bld.env['LIBDIR'] + '/utils/ardour-util.sh')
93
94     if bld.env['build_target'] == 'mingw':
95         return
96
97     obj              = bld(features = 'subst')
98     obj.source       = 'ardour-util.sh.in'
99     obj.target       = 'ardour-util.sh'
100     obj.chmod        = Utils.O755
101     obj.install_path = bld.env['LIBDIR']  + '/utils'
102     obj.LIBDIR       = os.path.normpath(bld.env['DLLDIR'])
103     obj.DATADIR      = os.path.normpath(bld.env['DATADIR'])
104     obj.CONFDIR      = os.path.normpath(bld.env['CONFDIR'])