aboutsummaryrefslogtreecommitdiffstats
path: root/wscript
blob: 483dd11e6cb0ff19b4d3d8d743f6369255391803 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/usr/bin/env python
import datetime
import os

from waflib.extras import autowaf as autowaf
import waflib.Logs as Logs

# Version of this package (even if built as a child)
LV2EXT_VERSION = datetime.date.isoformat(datetime.datetime.now()).replace('-', '.')

# Variables for 'waf dist'
APPNAME = 'lv2plug.in'
VERSION = LV2EXT_VERSION

# Mandatory variables
top = '.'
out = 'build'

def options(opt):
    autowaf.set_options(opt)
    opt.load('compiler_cc')
    opt.load('compiler_cxx')
    for i in ['core.lv2', 'plugins/eg-amp.lv2', 'plugins/eg-sampler.lv2']:
        opt.recurse(i)

def configure(conf):
    autowaf.set_recursive()
    autowaf.configure(conf)
    for i in ['core.lv2', 'plugins/eg-amp.lv2', 'plugins/eg-sampler.lv2']:
        conf.recurse(i)
    conf.load('compiler_cc')
    conf.load('compiler_cxx')
    conf.env.append_value('CFLAGS', '-std=c99')
    pat = conf.env['cshlib_PATTERN']
    ext = pat[pat.rfind('.'):]
    conf.env.append_value('cshlib_EXTENSION', ext)
    conf.write_config_header('lv2-config.h', remove=False)

def build_extension(bld, name, dir):
    data_file     = '%s/%s.lv2/%s.ttl' % (dir, name, name)
    manifest_file = '%s/%s.lv2/manifest.ttl' % (dir, name)
    header_files  = '%s/%s.lv2/*.h' % (dir, name)
    bld.install_files('${LV2DIR}/' + name + '.lv2', bld.path.ant_glob(data_file))
    bld.install_files('${LV2DIR}/' + name + '.lv2', bld.path.ant_glob(manifest_file))
    bld.install_files('${LV2DIR}/' + name + '.lv2', bld.path.ant_glob(header_files))

def build(bld):
    autowaf.set_recursive()
    bld.recurse('core.lv2')
    ext = '''
            atom
            contexts
            data-access
            dyn-manifest
            event
            files
            host-info
            instance-access
            midi
            osc
            parameter
            persist
            port-groups
            presets
            pui
            pui-event
            pui-gtk
            resize-port
            string-port
            uri-map
            uri-unmap
    '''
    for e in ext.split():
        build_extension(bld, e, 'ext')

    extensions = '''
            ui
            units
    '''
    for e in extensions.split():
        build_extension(bld, e, 'extensions')

    bld.add_post_fun(warn_lv2config)

    for i in ['plugins/eg-amp.lv2', 'plugins/eg-sampler.lv2']:
        bld.recurse(i)

def warn_lv2config(ctx):
    if ctx.cmd == 'install':
        Logs.warn('''
* LV2 Extension(s) Installed
* You need to run lv2config to update extension headers
''')