Import( 'context' )
Import('env')
import addons
import helpers
import os

myEnv = env

def getOption(name, default = 0):
    return myEnv[name]

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

opts = helpers.Options(context, "options-addons-acodec.py", ARGUMENTS)
opts.Add('flac', 'Enable FLAC', 1)
opts.Add('sndfile', 'Enable sndfile', 1)
opts.Add('ogg', 'Enable ogg', 1)
opts.Update(myEnv)
opts.Save(myEnv)
Help(opts.GenerateHelpText(myEnv))

def setupPlatform(settings, config):
    settings["ALLEGRO_CFG_ACODEC_VORBIS"] = getOption('ogg', True) and config.CheckOgg()
    settings["ALLEGRO_CFG_ACODEC_FLAC"] = getOption('flac', True) and config.CheckFlac()
    settings["ALLEGRO_CFG_ACODEC_SNDFILE"] = getOption('sndfile', True) and config.CheckSndfile()
    return config.Finish()

source = ['acodec.c']
configs = []
settings, configure_env = helpers.do_configure('acodec', context,
                            context.getTests(), setupPlatform,
                            'allegro5/internal/aintern_acodec_cfg.h.cmake',
                            'allegro5/internal/aintern_acodec_cfg.h',
                            getArgumentOption('config', 0))

for merge in ['CCFLAGS', "CPPPATH", "LIBS", "LIBPATH"]:
    try: env.Append(**{merge: configure_env[merge]})
    except KeyError: pass

# This shouldn't be required, use env = config.Finish() above and make
# the Check* functions modify the environment
if settings['ALLEGRO_CFG_ACODEC_VORBIS']:
    source.extend(['ogg.c'])

if settings['ALLEGRO_CFG_ACODEC_FLAC']:
    source.extend(['flac.c'])

if settings['ALLEGRO_CFG_ACODEC_SNDFILE']:
    source.extend(['wav.c'])

install = addons.do_build(
    context = context,
    env = myEnv,
    source = source,
    dir = 'acodec',
    name = 'a5_acodec',
    install_headers = ['allegro5/acodec.h'],
    includes = ['../kcm_audio','../acodec'],
    configs = configs,
)

Return('install')
