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

import os
import Common

def configure(conf):
    conf.env.append_value('MODULES_AVAILABLE', 'evolution.ebook')
    if 'evolution.ebook' in conf.env['ENABLE_MODULES'] or 'all' in conf.env['ENABLE_MODULES']:
        if conf.check_pkg('libebook-1.2 >= 1.4'
                          ' pygobject-2.0 gdk-pixbuf-2.0 pango',
                          destvar='EVOLUTION_EBOOK', mandatory=False):
            conf.env.append_value('MODULES_TO_BUILD', 'evolution.ebook')

    conf.env.append_value('MODULES_AVAILABLE', 'evolution.ecal')
    if 'evolution.ecal' in conf.env['ENABLE_MODULES'] or 'all' in conf.env['ENABLE_MODULES']:
        if conf.check_pkg('libecal-1.2 >= 1.4'
                          ' pygobject-2.0 gdk-pixbuf-2.0 pango',
                          destvar='EVOLUTION_ECAL', mandatory=False):
            conf.env.append_value('MODULES_TO_BUILD', 'evolution.ecal')            


def codegen(bld, module):
    cmd = bld.create_obj('command-output')
    cmd.command = bld.env()['CODEGEN']
    cmd.command_is_external = True
    cmd.prio = 5
    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):
    evolution_common = bld.create_obj('cc', 'objects', 'pyext')
    evolution_common.name = 'evolution_common'
    evolution_common.source = 'override_common.c'
    evolution_common.includes = '.'
    evolution_common.uselib = 'PYGTK'
    evolution_common.env.append_value('CCFLAGS', evolution_common.env['shlib_CCFLAGS'])
    
    if 'evolution.ebook' in bld.env()['MODULES_TO_BUILD']:
        codegen(bld, 'ebook')
        pyext = bld.create_pyext()
        pyext.includes = '.'
        pyext.source = '''
	ebookmodule.c
	ebook.c
	evo-ebook-environment.c
	evo-contact.c
	evo-addressbook.c
	ebook-enums.c
'''
        pyext.add_objects = 'evolution_common'
        pyext.target = 'ebook'
        pyext.uselib = 'EVOLUTION_EBOOK'
        pyext.inst_var = 'PYTHONDIR'
        pyext.inst_dir = os.path.join('gtk-2.0', 'evolution')

    if 'evolution.ecal' in bld.env()['MODULES_TO_BUILD']:
        codegen(bld, 'ecal')
        pyext = bld.create_pyext()
        pyext.includes = '.'
        pyext.source = '''
	ecalmodule.c
	ecal.c
	evo-ecal-environment.c
	evo-calendar.c
'''
        pyext.add_objects = 'evolution_common'
        pyext.target = 'ecal'
        pyext.uselib = 'EVOLUTION_ECAL'
        pyext.inst_var = 'PYTHONDIR'
        pyext.inst_dir = os.path.join('gtk-2.0', 'evolution')

    py = bld.create_obj('py')
    py.inst_dir = os.path.join('gtk-2.0', 'evolution')
    py.source = "__init__.py"

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

