Import( 'context' )
import addons

configs = []

def CheckOpenAL(context):
    context.Message("Checking for OpenAL... ")

    ret = context.TryAction('openal-config --cflags --libs')[0]
    if ret:
        tmpEnv = context.env.Copy()
        context.env.ParseConfig('openal-config --cflags --libs')
        ret = context.TryLink("""
            #include <AL/al.h>
                int main(){
                ALenum al_error;
                return 0;
            }
            """, ".c");
        context.sconf.env = tmpEnv
    context.Result(ret)
    return ret

def CheckAlsa(context):
    context.Message("Checking for Alsa... ")

    ret = context.TryAction('pkg-config --libs --cflags alsa')[0]
    if ret:
        tmpEnv = context.env.Copy()
        context.env.ParseConfig('pkg-config --libs --cflags alsa')
        ret = context.TryLink("""
            #include <alsa/asoundlib.h>
            int main(){
                snd_pcm_t * x;
                return 0;
            }
            """, ".c");
        context.sconf.env = tmpEnv
    context.Result(ret)
    return ret

can_build = True

tests = { "CheckOpenAL": CheckOpenAL,
          "CheckAlsa" : CheckAlsa,
        }

config = context.getLibraryEnv().Configure(custom_tests = tests)

can_build = can_build and config.CheckOpenAL()
can_build = can_build and config.CheckAlsa()
config.Finish()

if can_build:
    configs.extend(['openal-config --libs'])
    configs.extend(['pkg-config --libs alsa'])

    addons.do_build(
        context = context,
        source = Split("""
            alsa.c
            audio.c
            openal.c
        """),
        dir = 'audio',
        name = 'audio',
        install_headers = ['allegro5/audio.h','allegro5/internal/aintern_audio.h'],
        configs = configs
     )

Return('can_build')
