Import("context")
Import("env")
import addons, helpers, os

def getArgumentOption(name, default):
    arg = ARGUMENTS.get(name,default)
    if arg == "yes" or arg == "1":
        return 1
    return 0

def setupPlatform(settings, config):
    settings["ALLEGRO_CFG_KCM_OPENAL"] = config.CheckOpenAL()
    settings["ALLEGRO_CFG_KCM_ALSA"] = config.CheckAlsa()
    a = settings["ALLEGRO_HAVE_SOUNDCARD_H"] = config.CheckCHeader("soundcard.h")
    b = settings["ALLEGRO_HAVE_SYS_SOUNDCARD_H"] = config.CheckCHeader("sys/soundcard.h")
    c = settings["ALLEGRO_HAVE_MACHINE_SOUNDCARD_H"] = config.CheckCHeader("machine/soundcard.h")
    d = settings["ALLEGRO_HAVE_LINUX_SOUNDCARD_H"] = config.CheckCHeader("linux/soundcard.h")
    settings["ALLEGRO_CFG_KCM_OSS"] = a or b or c or d
    return config.Finish()

source = ["audio.c", "kcm_mixer.c", "kcm_sample.c", "kcm_stream.c",
    "kcm_voice.c"]

settings, configure_env = helpers.do_configure('kcm_audio', context,
                            context.getTests(), setupPlatform,
                            'allegro5/internal/aintern_kcm_cfg.h.cmake',
                            'allegro5/internal/aintern_kcm_cfg.h',
                            getArgumentOption('config', 0))

# There should be a nicer way to do this
for merge in ["CPPPATH", "LIBS", "LIBPATH"]:
    try: env.Append(**{merge: configure_env[merge]})
    except KeyError: pass

if settings["ALLEGRO_CFG_KCM_ALSA"]:
    source.append("alsa.c")

if settings["ALLEGRO_CFG_KCM_OPENAL"]:
    source.append("openal.c")

if settings["ALLEGRO_CFG_KCM_OSS"]:
    source.append("oss.c")

configs = []
can_build = True

result = None
if can_build:
    result = addons.do_build(
        context = context,
        env = env,
        source = source,
        dir = "kcm_audio",
        name = "a5_kcm_audio",
        install_headers = [
            "allegro5/kcm_audio.h",
            "allegro5/internal/aintern_kcm_audio.h",
            "allegro5/internal/aintern_kcm_cfg.h"],
        configs = configs)

Return("result")
