From 0925126286b9e01964e065452f4b16b43923c75c Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 30 Sep 2008 07:52:18 +0000 Subject: Wafify ingen. git-svn-id: http://svn.drobilla.net/lad/trunk/patchage@1548 a436a847-0d15-0410-975c-d299462d15a1 --- wscript | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 wscript diff --git a/wscript b/wscript new file mode 100644 index 0000000..a62d2f5 --- /dev/null +++ b/wscript @@ -0,0 +1,132 @@ +#! /usr/bin/env python +# encoding: utf-8 +# waf build system from LADI patchage courtesy Nedko Arnaudov + +import os +import Params +import commands +from Configure import g_maxlen +#g_maxlen = 40 +import shutil + +VERSION='0.4.3' +APPNAME='patchage' +APP_HUMAN_NAME='Patchage' + +# these variables are mandatory ('/' are converted automatically) +srcdir = '.' +blddir = 'build' + +def display_msg(msg, status = None, color = None): + sr = msg + global g_maxlen + g_maxlen = max(g_maxlen, len(msg)) + if status: + print "%s :" % msg.ljust(g_maxlen), + Params.pprint(color, status) + else: + print "%s" % msg.ljust(g_maxlen) + +def display_feature(msg, build): + if build: + display_msg(msg, "yes", 'GREEN') + else: + display_msg(msg, "no", 'YELLOW') + +def set_options(opt): + opt.tool_options('compiler_cxx') + + opt.add_option('--install-name', type='string', default=APPNAME, dest='app_install_name', help="Install name. [Default: '" + APPNAME + "']") + opt.add_option('--app-human-name', type='string', default=APP_HUMAN_NAME, dest='app_human_name', help="Human name for app. [Default: '" + APP_HUMAN_NAME + "']") + +def configure(conf): + conf.check_tool('compiler_cxx') + + conf.check_tool('misc') # subst tool + + conf.check_pkg('dbus-1', mandatory=True) + conf.check_pkg('dbus-glib-1', mandatory=True) + conf.check_pkg('glibmm-2.4', mandatory=True) + conf.check_pkg('gtkmm-2.4', mandatory=True, vnum='2.11.12') + conf.check_pkg('libgnomecanvasmm-2.6', mandatory=True) + conf.check_pkg('libglademm-2.4', mandatory=True) + + # You need the boost headers package (e.g. libboost-dev) + conf.check_header('boost/shared_ptr.hpp', mandatory=True) + conf.check_header('boost/weak_ptr.hpp', mandatory=True) + + conf.check_pkg('flowcanvas', mandatory=True, vnum='0.4.0') + + conf.env['APP_INSTALL_NAME'] = Params.g_options.app_install_name + conf.env['APP_HUMAN_NAME'] = Params.g_options.app_human_name + + conf.define('DATA_DIR', os.path.normpath(conf.env['PREFIX'] + '/share/' + conf.env['APP_INSTALL_NAME'])) + conf.write_config_header('config.h') + + print + display_msg("Install prefix", conf.env['PREFIX'], 'CYAN') + display_msg("Install name", "'" + conf.env['APP_INSTALL_NAME'] + "'", 'CYAN') + display_msg("App human name", "'" + conf.env['APP_HUMAN_NAME'] + "'", 'CYAN') + print + +def build(bld): + prog = bld.create_obj('cpp', 'program') + prog.defines = [ + 'CONFIG_H_PATH=\\"config.h\\"', + ] + prog.source = [ + 'src/main.cpp', + 'src/Patchage.cpp', + 'src/PatchageCanvas.cpp', + 'src/StateManager.cpp', + 'src/JackDriver.cpp', + 'src/JackDbusDriver.cpp', + 'src/LashClient.cpp', + 'src/LashProxy.cpp', + 'src/Project.cpp', + 'src/ProjectList.cpp', + 'src/ProjectPropertiesDialog.cpp', + 'src/Session.cpp' + ] + prog.includes = 'src' # make waf dependency tracking work + prog.target = bld.env()['APP_INSTALL_NAME'] + prog.uselib = 'DBUS-1 LIBGNOMECANVASMM-2.6 LIBGLADEMM-2.4 FLOWCANVAS DBUS-GLIB-1' + + # 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 + + install_files('PREFIX', '/share/' + bld.env()['APP_INSTALL_NAME'], 'src/patchage.glade') + + # process patchage.desktop.in -> patchage.desktop + #install_files('PREFIX', '/share/applications/', 'patchage.desktop') + obj = bld.create_obj('subst') + obj.source = 'patchage.desktop.in' + obj.target = 'patchage.desktop' + obj.dict = { + 'BINDIR': bld.env()['PREFIX'] + '/bin', + 'APP_INSTALL_NAME': bld.env()['APP_INSTALL_NAME'], + 'APP_HUMAN_NAME': bld.env()['APP_HUMAN_NAME'], + } + #obj.inst_var = os.path.normpath(bld.env()['PREFIX'] + '/share/applications/') + #obj.inst_dir = '/' + install_as(os.path.normpath(bld.env()['PREFIX'] + '/share/applications/'), bld.env()['APP_INSTALL_NAME'] + '.desktop', 'build/default/patchage.desktop') + + install_as(os.path.normpath(bld.env()['PREFIX'] + '/share/icons/hicolor/scalable/apps/'), bld.env()['APP_INSTALL_NAME'] + '.svg', 'icons/scalable/patchage.svg') + + icon_sizes = ['16x16', '22x22', '24x24', '32x32', '48x48'] + for icon_size in icon_sizes: + install_as(os.path.normpath(bld.env()['PREFIX'] + '/share/icons/hicolor/' + icon_size + '/apps/'), bld.env()['APP_INSTALL_NAME'] + '.png', 'icons/' + icon_size + '/patchage.png') + + # TODO: ask some packagers for best policy about updating icon cache here + # gtk-update-icon-cache -f -t $(datadir)/icons/hicolor -- cgit v1.2.1