-
Notifications
You must be signed in to change notification settings - Fork 0
/
wscript~
93 lines (77 loc) · 2.96 KB
/
wscript~
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
#!/usr/bin/env python
from waflib.extras import autowaf as autowaf
import waflib.Options as Options
import re
# Variables for 'waf dist'
APPNAME = 'minaton.lv2'
VERSION = '0.2.0'
# Mandatory variables
top = '.'
out = 'build'
def options(opt):
opt.load('compiler_c')
opt.load('lv2')
if Options.platform == 'win32':
opt.load('compiler_cxx')
autowaf.set_options(opt)
def configure(conf):
conf.load('compiler_c')
conf.load('lv2')
if conf.env.DEST_OS == 'win32':
conf.load('compiler_cxx')
autowaf.configure(conf)
autowaf.set_c99_mode(conf)
autowaf.display_header('minaton Configuration')
autowaf.check_pkg(conf, 'lv2', atleast_version='1.4.1',
uselib_store='LV2_1_4_1')
autowaf.display_msg(conf, "LV2 bundle directory", conf.env.LV2DIR)
print('')
def build(bld):
bundle = 'minaton.lv2'
# Make a pattern for shared objects without the 'lib' prefix
module_pat = re.sub('^lib', '', bld.env.cshlib_PATTERN)
module_ext = module_pat[module_pat.rfind('.'):]
# Determine platform options
ui_framework = []
ui_libs = []
ui_lang = 'c'
if bld.env.DEST_OS == 'win32':
pugl_impl = 'pugl/pugl_win.cpp'
ui_type = 'http://lv2plug.in/ns/extensions/ui#WindowsUI'
ui_libs = ['gdi32', 'user32']
ui_lang = 'cxx'
elif bld.env.DEST_OS == 'darwin':
pugl_impl = 'pugl/pugl_osx.m'
ui_type = 'http://lv2plug.in/ns/extensions/ui#CocoaUI'
ui_framework = ['Cocoa']
else:
pugl_impl = 'pugl/pugl_x11.c'
ui_type = 'http://lv2plug.in/ns/extensions/ui#X11UI'
ui_libs = ['X11']
# Build Turtle files by substitution
for i in ['manifest.ttl', 'minaton.ttl']:
bld(features = 'subst',
source = i + '.in',
target = '%s/%s' % (bundle, i),
install_path = '${LV2DIR}/%s' % bundle,
LIB_EXT = module_ext,
UI_TYPE = ui_type)
# Build plugin library
obj = bld(features = 'c cshlib',
source = 'minaton.c',
name = 'minaton',
target = '%s/minaton' % bundle,
install_path = '${LV2DIR}/%s' % bundle,
use = 'LV2_1_4_1',
lib = ['m'])
obj.env.cshlib_PATTERN = module_pat
# Build UI library
obj = bld(features = '%s %sshlib' % (ui_lang, ui_lang),
source = ['minaton_ui.c', "deliriumUI/deliriumUI.c", "deliriumUI/button.c", "deliriumUI/knob.c", "deliriumUI/microknob.c", "deliriumUI/fader.c", pugl_impl],
name = 'minaton_ui',
target = '%s/minaton_ui' % bundle,
install_path = '${LV2DIR}/%s' % bundle,
lib = ui_libs + ['m', 'pthread', 'cairo' ],
framework = ui_framework,
use = 'LV2_1_4_1')
obj.env['%sshlib_PATTERN' % ui_lang] = module_pat