# -*- 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']