Codebase list guitarix / debian/0.28.2-4 pygxw / wscript
debian/0.28.2-4

Tree @debian/0.28.2-4 (Download .tar.gz)

wscript @debian/0.28.2-4raw · history · blame

# -*- python -*-
# -*- coding: utf-8 -*-

import Logs, Utils, Options

def set_options(opt):
    grp = opt.get_option_group("--shared-lib")
    grp.add_option('--python-wrapper',
                   action='store_const',
                   default=False,
                   const=True,
                   help=('build python wrapper for library (Developers only!!)'),
                   )

def configure(conf):
    if not Options.options.python_wrapper:
        return
    conf.env["GX_PYTHON_WRAPPER"] = True
    conf.env["GXW_SHARED"] = True
    conf.check_python_headers()
    conf.check_cfg(package='pygtk-2.0', args='--cflags --libs', uselib_store='PYGTK' ,mandatory=True)
    conf.cfg_get_variable(package='pygtk-2.0', variable='defsdir')
    conf.check_python_module("numpy")

def h2defs(task):
    sources = " ".join(["'%s'" % v.srcpath(task.env) for v in task.inputs])
    path = task.generator.path
    lib = path.find_resource(task.generator.lib).srcpath(task.env)
    fltr = path.find_resource(task.generator.filter).srcpath(task.env)
    dst = task.outputs[0].bldpath(task.env)
    cmd = ("python '%s'/defsgen.py -m gx -l %s -f '%s' %s > '%s' && cat '%s' >> '%s'"
           % (task.env["CODEGENDIR"], lib, fltr, sources, dst, fltr, dst))
    Logs.debug("runner: system command -> %s" % cmd)
    return Utils.exec_command(cmd, shell=True)

def defs2c(task):
    ovr = task.inputs[0].srcpath(task.env)
    src = task.inputs[1].srcpath(task.env)
    dst = task.outputs[0].bldpath(task.env)
    defsdir = task.env["DEFSDIR"]
    cmd = ("pygobject-codegen-2.0"
           " --prefix gxw"
           " --register '%s'/gdk-types.defs"
           " --register '%s'/gtk-types.defs"
           " --override '%s'"
           " --outfilename '%s'"
           " '%s'"
           " > '%s'"
           % (defsdir, defsdir, ovr, dst, src, dst))
    Logs.debug("runner: system command -> %s" % cmd)
    return Utils.exec_command(cmd,shell=True)

def build(bld):
    if not bld.env["GX_PYTHON_WRAPPER"]:
        return
    bld.add_group()
    sources = ["GxTuner.h",
               "GxFastMeter.h",
               "GxWaveView.h",
               "GxRegler.h",
               "GxSelector.h",
               "GxSwitch.h",
               "GxToggleImage.h",
               "GxControlParameter.h",
               "GxIREdit.h",
               "GxRadioButton.h",
               "GxWheel.h",
               "GxWheelVertical.h",
               "GxKnob.h",
               "GxBigKnob.h",
               "GxSmallKnob.h",
               "GxSmallKnobR.h",
               "GxHSlider.h",
               "GxMiniSlider.h",
               "GxVSlider.h",
               "GxEQSlider.h",
               "GxLevelSlider.h",
               "GxPaintBox.h",
               "GxMeterScale.h",
               "GxGradient.h",
               "GxValueDisplay.h",
               "GxRackTuner.h",
               ]
    bld(name = "h2defs",
        target = "gxw.defs",
        rule = h2defs,
        source = ["../libgxw/gxw/"+v for v in sources],
        lib = "../libgxw/gxw/libgxw.so",
        filter = "gxw-manual.defs",
        )
    bld(name="defs2c",
        target = "gxw.c",
        rule = defs2c,
        source = ['gxw.override','gxw.defs'],
        after = "h2defs",
        )
    bld.add_group()
    prog = bld(
        features = ['cc','cxx','pyext','cshlib'],
        source = ['gxw.c','gxw-module.c'],
        target = 'gxw',
        uselib = ['PYGOBJECT','PYGTK','GTK2'],
        ccflags = ["-g"],
        includes = ['../libgxw'],
        )
    if bld.env["GX_LIB_SHARED"]:
        prog.libpath = [bld.path.find_dir("../libgxw/gxw").bldpath(bld.env)]
        prog.lib = ["gxw"]
    else:
        prog.uselib_local = ['gxw']