#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
import SCons
import shutil

Import('build')


# On Posix default SCons.LIBPREFIX = 'lib', on Windows default SCons.LIBPREFIX = ''

wv_sources = [
    "soundsourcewv.cpp",
    "sources/audiosource.cpp",
    "sources/metadatasourcetaglib.cpp",
    "sources/soundsource.cpp",
    "sources/soundsourceplugin.cpp",
    "util/audiosignal.cpp",
    "util/samplebuffer.cpp",
    "util/readaheadsamplebuffer.cpp",
    "util/sample.cpp",
    "util/logger.cpp",
    "util/indexrange.cpp",
    "track/albuminfo.cpp",
    "track/trackinfo.cpp",
    "track/trackmetadata.cpp",
    "track/trackmetadatataglib.cpp",
    "track/tracknumbers.cpp",
    "track/replaygain.cpp",
    "track/bpm.cpp"
]


#Tell SCons to build the SoundSourceWV plugin
#=========================
if int(build.flags['wv']):
    SHLIBPREFIX='lib' #Makes the filename "libsoundsourcewv" consistently across platforms to make our lives easier.

    env = build.env.Clone()
    conf = Configure(env)
    have_wv = conf.CheckLib(['wavpack', 'wv'])
    env = conf.Finish()

    results = []
    if build.platform_is_windows:
        env["LINKFLAGS"].remove("/entry:mainCRTStartup")
        # TODO(rryan): Why do we do this?
        if build.machine_is_64bit:
            env["LINKFLAGS"].remove("/subsystem:windows,5.02")
        else:
            env["LINKFLAGS"].remove("/subsystem:windows,5.01")
        sswv_bin = env.SharedLibrary('soundsourcewv', wv_sources, LINKCOM  = [env['LINKCOM'], 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;1'])
        results.append('sswv_bin')
        if build.bundle_pdbs:
            sswv_pdb = env.SideEffect('soundsourcewv.pdb', sswv_bin)
            results.append('sswv_pdb')
    else:
        sswv_bin = env.SharedLibrary('soundsourcewv', wv_sources)
        results.append('sswv_bin')

    #Pass this soundsourcewv library object file back to the SConscript above us.
    Return(results)
else:
    Return("")
