from waflib import Options, Errors, Utils

source = """
cli_context.c
cli_cache.c
command_trie.c
commands.c
commands_coll.c
commands_playback.c
commands_playlist.c
commands_server.c
matching_browse.c
command.c
cmdnames.c
configuration.c
status.c
currently_playing.c
utils.c
alias.c
column_display.c
readline.c
playlist_positions.c
""".split()

def build(bld):
    compat = ['compat_%s.c' % bld.env.CLI_COMPAT_IMPL]

    bld.objects(
        target = 'xmmscli',
        source = source + compat,
        includes = '. ../../../ ../../include',
        uselib = 'glib2 readline readline_ncurses',
        use = 'xmmsclient',
        defines = 'GETTEXT_PACKAGE=\"xmms2\"',
        install_path = None
    )

    bld(features = 'c cprogram',
        target = 'xmms2',
        source = 'main.c',
        includes = '. ../../../ ../../include',
        use = 'xmmscli'
    )

    bld(features = 'man',
        source = 'xmms2.1'
    )


def configure(conf):
    if Utils.unversioned_sys_platform() == 'win32':
        conf.env.CLI_COMPAT_IMPL = 'win32'
    else:
        conf.env.CLI_COMPAT_IMPL = 'unix'

    rl_headers=["stdio.h", "readline/readline.h"]

    conf.check_cc(header_name=rl_headers)

    fragment = """
    #include <stdio.h>
    #include <readline/readline.h>
    int main(void) {
        rl_filename_dequoting_function(0, 0);
        return 0;
    }
    """

    # first try just linking against libreadline
    try:
        conf.check_cc(lib="readline", header_name=rl_headers,
                fragment=fragment,
                uselib_store="readline", uselib="glib2")
    except Errors.ConfigurationError:
        pass
    else:
        return

    # then try ncurses
    conf.check_cc(lib="ncurses", uselib_store="readline_ncurses")
    conf.check_cc(lib="readline", header_name=rl_headers,
            fragment=fragment,
            uselib_store="readline", uselib="glib2 readline_ncurses")


def options(opt):
    pass
