from waflib import Logs, Errors
from waftools import tool

def build(bld):
    source = """
    collection.c
    collparser.c
    bindata.c
    config.c
    c2c.c
    ipc.c
    medialib.c
    playback.c
    playlist.c
    result.c
    service/client.c
    service/common.c
    service/interface_entity.c
    service/service.c
    stats.c
    xmmsclient.c
    xform.c
    xqueue.c
    visualization/client.c
    visualization/udp.c
    """.split()

    if bld.env.have_semtimedop:
        source.extend(["visualization/unixshm.c"])
    else:
        source.extend(["visualization/dummy.c"])

    obj = bld(features = 'c cshlib visibilityhidden',
        target = 'xmmsclient',
        includes = '../../../.. ../../../include ../../../includepriv',
        source = source,
        uselib = 'socket time',
        use = 'xmmsipc xmmssocket xmmsutils xmmstypes xmmsvisualization',
        vnum = '6.0.0',
        defines = [
            'XMMSC_LOG_DOMAIN="xmmsclient"',
            "HAVE_SEMTIMEDOP=%d" % int(bld.env.have_semtimedop),
        ]
        )

    tool.add_install_flag(bld, obj)

def configure(conf):
    conf.env.XMMS_PKGCONF_FILES.append(("xmms2-client", "-lxmmsclient"))

    try:
        semtimedop_fragment = """
        #include <sys/sem.h>
        int main(void) {
            return semtimedop(0,0,0,0);
        }
        """
        conf.check_cc(fragment=semtimedop_fragment,
                header_name=["sys/types.h", "sys/ipc.h", "sys/sem.h"],
                defines=["_GNU_SOURCE=1"])
    except Errors.ConfigurationError:
        Logs.warn("Compiling visualization without shm support!")
        conf.env.have_semtimedop = False
    else:
        conf.env.have_semtimedop = True

    return True

def options(opt):
    pass
