File: wscript

package info (click to toggle)
patchage 0.4.4-1.2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 792 kB
  • ctags: 576
  • sloc: cpp: 5,084; python: 545; makefile: 22
file content (177 lines) | stat: -rw-r--r-- 6,714 bytes parent folder | download
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#!/usr/bin/env python
# Licensed under the GNU GPL v2 or later, see COPYING file for details.
# Copyright (C) 2008 Dave Robillard
# Copyright (C) 2008 Nedko Arnaudov
import os
import autowaf
import Options

# Version of this package (even if built as a child)
PATCHAGE_VERSION = '0.4.4'

# Variables for 'waf dist'
APPNAME = 'patchage'
VERSION = PATCHAGE_VERSION
APP_HUMAN_NAME = 'Patchage'

# Mandatory variables
srcdir = '.'
blddir = 'build'

def set_options(opt):
	autowaf.set_options(opt)
	opt.add_option('--patchage-install-name', type='string', default=APPNAME,
			dest='patchage_install_name',
			help="Patchage install name. [Default: '" + APPNAME + "']")
	opt.add_option('--patchage-human-name', type='string', default=APP_HUMAN_NAME,
			dest='patchage_human_name',
			help="Patchage human name [Default: '" + APP_HUMAN_NAME + "']")
	opt.add_option('--jack-dbus', action='store_true', default=False, dest='jack_dbus',
			help="Use Jack via D-Bus [Default: False (use libjack)]")
	opt.add_option('--no-lash', action='store_true', default=False, dest='no_lash',
			help="Do not build Lash support")
	opt.add_option('--no-alsa', action='store_true', default=False, dest='no_alsa',
			help="Do not build Alsa Sequencer support")

def configure(conf):
	autowaf.configure(conf)
	conf.check_tool('compiler_cxx')
	autowaf.check_pkg(conf, 'dbus-1', uselib_store='DBUS', mandatory=False)
	autowaf.check_pkg(conf, 'dbus-glib-1', uselib_store='DBUS_GLIB', mandatory=False)
	autowaf.check_pkg(conf, 'flowcanvas', uselib_store='FLOWCANVAS', atleast_version='0.5.1', mandatory=True)
	autowaf.check_pkg(conf, 'libglademm-2.4', uselib_store='GLADEMM', atleast_version='2.6.0', mandatory=True)
	autowaf.check_pkg(conf, 'glibmm-2.4', uselib_store='GLIBMM', atleast_version='2.14.0', mandatory=True)
	autowaf.check_pkg(conf, 'libgnomecanvasmm-2.6', uselib_store='GNOMECANVASMM', mandatory=True)
	autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD', atleast_version='2.14.0', mandatory=True)
	autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GTKMM', atleast_version='2.11.12', mandatory=True)
	autowaf.check_pkg(conf, 'raul', uselib_store='RAUL', atleast_version='0.5.1', mandatory=True)

	# Use Jack D-Bus if requested (only one jack driver is allowed)
	conf.env['HAVE_JACK_DBUS'] = conf.env['HAVE_DBUS'] == 1 and Options.options.jack_dbus

	if conf.env['HAVE_JACK_DBUS']:
		conf.define('HAVE_JACK_DBUS', conf.env['HAVE_JACK_DBUS'])
	else:
		autowaf.check_pkg(conf, 'jack', uselib_store='JACK', atleast_version='0.107.0', mandatory=False)
		conf.define('USE_LIBJACK', int(conf.env['HAVE_JACK'] == 1))

	conf.define('HAVE_JACK_MIDI', int(conf.env['HAVE_JACK'] == 1 or conf.env['HAVE_JACK_DBUS'] == 1))

	# Use Alsa if present unless --no-alsa
	if not Options.options.no_alsa and conf.env['HAVE_ALSA'] != 1:
		autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA', mandatory=False)
		if conf.env['HAVE_ALSA']:
			conf.define('HAVE_ALSA', 1)

	# Use LASH if we have DBUS unless --no-lash
	if not Options.options.no_lash and conf.env['HAVE_DBUS_GLIB']:
		conf.env['HAVE_LASH'] = 1
		conf.define('HAVE_LASH', 1)
	else:
		conf.env['HAVE_LASH'] = False

	conf.check_tool('misc') # subst tool

	# Boost headers
	autowaf.check_header(conf, 'boost/shared_ptr.hpp', mandatory=True)
	autowaf.check_header(conf, 'boost/weak_ptr.hpp', mandatory=True)

	conf.env['PATCHAGE_VERSION'] = PATCHAGE_VERSION

	conf.env['APP_INSTALL_NAME'] = Options.options.patchage_install_name
	conf.env['APP_HUMAN_NAME'] = Options.options.patchage_human_name
	if conf.env['BUNDLE']:
		conf.define('PATCHAGE_DATA_DIR', os.path.join(
				conf.env['DATADIR'], conf.env['APP_INSTALL_NAME']))
	else:
		conf.define('PATCHAGE_DATA_DIR', os.path.join(
				conf.env['DATADIR'], conf.env['APP_INSTALL_NAME']))

	conf.write_config_header('patchage-config.h')

	autowaf.print_summary(conf)
	autowaf.display_header('Patchage Configuration')
	autowaf.display_msg(conf, "Install name", "'" + conf.env['APP_INSTALL_NAME'] + "'", 'CYAN')
	autowaf.display_msg(conf, "App human name", "'" + conf.env['APP_HUMAN_NAME'] + "'", 'CYAN')
	autowaf.display_msg(conf, "Jack (D-Bus)", str(conf.env['HAVE_JACK_DBUS']))
	autowaf.display_msg(conf, "LASH (D-Bus)", str(conf.env['HAVE_LASH'] == 1))
	autowaf.display_msg(conf, "Jack (libjack)", str(bool(conf.env['USE_LIBJACK'])))
	autowaf.display_msg(conf, "Alsa Sequencer", str(conf.env['HAVE_ALSA'] == 1))
	print

def build(bld):
	# Program
	prog = bld.new_task_gen('cxx', 'program')
	prog.includes = ['.', 'src']
	prog.target = bld.env['APP_INSTALL_NAME']
	prog.install_path = '${BINDIR}'
	autowaf.use_lib(bld, prog, 'DBUS FLOWCANVAS GLADEMM DBUS_GLIB GNOMECANVASMM GTHREAD RAUL')
	prog.source = '''
		src/LashClient.cpp
		src/Patchage.cpp
		src/PatchageCanvas.cpp
		src/PatchageEvent.cpp
		src/StateManager.cpp
		src/main.cpp
	'''
	if bld.env['HAVE_JACK_DBUS']:
		prog.source += '''
			src/JackDbusDriver.cpp
		'''
	if bld.env['HAVE_LASH']:
		prog.source += '''
			src/LashProxy.cpp
			src/LoadProjectDialog.cpp
			src/Project.cpp
			src/ProjectList.cpp
			src/ProjectPropertiesDialog.cpp
			src/Session.cpp
		'''
	if bld.env['HAVE_LASH'] or bld.env['HAVE_JACK_DBUS']:
		prog.source += ' src/DBus.cpp '
	if bld.env['USE_LIBJACK']:
		prog.source += ' src/JackDriver.cpp '
		prog.uselib += ' JACK '
	if bld.env['HAVE_ALSA'] == 1:
		prog.source += ' src/AlsaDriver.cpp '
		prog.uselib += ' ALSA '

	# Glade UI definitions (XML)
	bld.install_files('${DATADIR}/' + bld.env['APP_INSTALL_NAME'], 'src/patchage.glade')

	# 'Desktop' file (menu entry, icon, etc)
	obj = bld.new_task_gen('subst')
	obj.source = 'patchage.desktop.in'
	obj.target = 'patchage.desktop'
	obj.dict = {
		'BINDIR'           : os.path.normpath(bld.env['BINDIR']),
		'APP_INSTALL_NAME' : bld.env['APP_INSTALL_NAME'],
		'APP_HUMAN_NAME'   : bld.env['APP_HUMAN_NAME'],
	}
	obj.install_path = '${DATADIR}/applications'

	# Icons
	#
	# Installation layout (with /usr prefix)
	# /usr/bin/patchage
	# /usr/share/applications/patchage.desktop
	# /usr/share/icons/hicolor/16x16/apps/patchage.png
	# /usr/share/icons/hicolor/22x22/apps/patchage.png
	# /usr/share/icons/hicolor/24x24/apps/patchage.png
	# /usr/share/icons/hicolor/32x32/apps/patchage.png
	# /usr/share/icons/hicolor/48x48/apps/patchage.png
	# /usr/share/icons/hicolor/scalable/apps/patchage.svg
	# /usr/share/patchage/patchage.glade
	#
	# icon cache is updated using:
	# gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
	icon_sizes = ['16x16', '22x22', '24x24', '32x32', '48x48']
	for s in icon_sizes:
		bld.install_as(
			os.path.join(bld.env['DATADIR'], 'icons', 'hicolor', s, 'apps',
					bld.env['APP_INSTALL_NAME'] + '.png'),
			'icons/' + s + '/patchage.png')

def shutdown():
	autowaf.shutdown()