Import('use');

def isWindows():
    import re
    import sys
    return "win32" in sys.platform

obj_files = []

def addFiles(files):
    obj_files.append(map(lambda x: x.replace('src/', ''), files))

import sys
sys.path.append("../scons")
import helpers

obj_files = []

filelist = helpers.read_cmake_list("../cmake/FileList.cmake")

def unique(lst):
    m = []
    for item in lst:
        if not item in m:
            m.append(item)
    return m

for i in filelist:
    # print "%s = %s" % (i, filelist[i])
    # meh, kind of a hack
    if i == 'SCRIPT_SRC':
        # call the python and ruby checks here
        env = use.Clone()
        # config = env.Configure()
        # Ugly way to pass the custom tests in
        config = env.Configure(custom_tests = env['PAINTOWN_TESTS'])
        config.CheckRuby()
        config.CheckPython()
        env = config.Finish()
        use.Append(LIBS = env['LIBS'])
        use.Replace(LIBS = unique(use['LIBS']))
        files = filelist[i]
        # abstract this so we don't duplicate code
        obj_files.append(map(lambda x: env.StaticObject(x.replace('src/', '')), files))
    else:
        addFiles(filelist[i])

# obj_files.append(parser('air'))
# obj_files.append(parser('cns'))
# obj_files.append(parser('cmd'))
# obj_files.append(parser('def'))

def icon():
    if isWindows():
        return ['windows/game.res']
    else:
        return []

x = []
x.append(use.Program('paintown', obj_files + ['xmain.cpp'] + icon()))
#x.append( use.Program( 'test', obj_files + ['test.cpp'] ) )
#x.append( use.Program( 'menutest', obj_files + ['menu/menutest.cpp'] ) )
x.append(use.Program('mugentest', obj_files + ['mugen/test.cpp']))
# x.append( use.Program( 'mugentest2', obj_files + ['mugen/test2.cpp'] ) )

SConscript('mugen/parser/SConstruct', exports = ['use']);
SConscript('test/SConstruct', exports = ['use'])

Return('x')
