# -*- python -*-
# encoding: utf-8

import os
import Common
import Params

def set_options(opt):
    opt.add_option('--enable-metacity',
                   help=('Enable metacity bindings.'
                         ' WARNING: these bindings are not very well maintained '
                         'and may not work or even compile.'),
                   action="store_true", default=False,
                   dest='enable_metacity')
    
def configure(conf):
    if Params.g_options.enable_metacity:
        conf.env['ENABLE_METACITY'] = bool(conf.check_pkg(
                'libmetacity-private >= 2.19.8 pygobject-2.0 ',
                destvar='METACITY', mandatory=False))
    else:
        conf.env['ENABLE_METACITY'] = False

def codegen(bld, module):
    cmd = bld.create_obj('command-output')
    cmd.command = 'pygtk-codegen-2.0'
    cmd.command_is_external = True
    cmd.argv = [
        '--py_ssize_t-clean',
        '--register', os.path.join(cmd.env['PYGTK_DEFSDIR'], 'pango-types.defs'),
        '--register', os.path.join(cmd.env['PYGTK_DEFSDIR'], 'gdk-types.defs'),
        '--register', os.path.join(cmd.env['PYGTK_DEFSDIR'], 'gtk-types.defs'),
        '--prefix', 'py'+module,
        '--override', cmd.input_file("%s.override" % module),
        cmd.input_file("%s.defs" % module),
        ]
    cmd.stdout = '%s.c' % module
    return cmd


def build(bld):
    
    if bld.env()['ENABLE_METACITY']:
        codegen(bld, 'metacity')
        pyext = bld.create_obj('cc', 'shlib', 'pyext')
        pyext.source = 'metacitymodule.c metacity.c'
        pyext.target = 'metacity'
        pyext.uselib = 'METACITY'
        pyext.install_var = 'PYTHONDIR'
        pyext.install_subdir = 'gtk-2.0'

        defsdir = Common.install_files('DATADIR', os.path.join('pygtk', '2.0', 'defs'),
                                       ['metacity.defs'])

