import os

Import('env')

env = env.Copy()

def Parse(lib, name):
    print 'Checking availability of %s ...' % name,
    if not ('pkg-config --cflags --libs %s' % lib):
        print 'FAILED!'
        return 0
    else:
        print 'OK'
        env.ParseConfig('pkg-config --cflags --libs %s' % lib)
        return 1


env.Append(LIBPATH = ['/usr/lib/lua5', '../core', '../common'])

#### Checking library availability
test = Parse('OGRE', 'OGRE 3D')
test &= Parse('CEGUI CEGUI-OGRE', "Crazy Eddie's GUI System (CEGUI)")

conf = Configure(env)
test &= conf.CheckLibWithHeader('log4cxx', 'log4cxx/logger.h', 'CXX')
test &= conf.CheckLib('xerces-c')
test &= conf.CheckLibWithHeader('fmod', 'fmod/fmod.h', 'CXX')
if conf.CheckLib('boost_program_options-gcc-mt'):
    boost = 'gcc'
elif conf.CheckLib('boost_program_options-intel-linux-mt'):
    boost = 'intel-linux'
else:
    print 'Unknown compiler used for boost or boost not installed!'
    test = 0

if not test:
    Exit(1)
env = conf.Finish()

env.Append(LIBS = [
		'CEGUILuaScriptModule', 'CEGUIluatoluapp',
		'boost_program_options-%s-mt' % boost,
		'boost_filesystem-%s-mt' % boost, 
		'boost_iostreams-%s-mt' % boost,
		'boost_signals-%s-mt' % boost, 
		'boost_serialization-%s-mt' % boost,
		'boost_regex-%s-mt' % boost, 
		'boost_date_time-%s-mt' % boost,
		'boost_thread-%s-mt' % boost,
		'xenocore', 'xenocommon', 'xenocore', 
		'lua', 'lualib', 'luabind'])

env.Append(CPPPATH = [
		'.', 
		'..', 
		'/usr/include/lua5',
		'/usr/include/fmod'])

client_files = [Split('''
			eventmap.cpp
			fadingmanager.cpp
			mainframelistener.cpp
			uimanager.cpp
			uirequisites.cpp
			uiscreen.cpp
			viewportsceneswitch.cpp
			xenocideapp.cpp
			xenocidemodule.cpp''')]
			#runninggamestate.cpp
misc_files = [Split('''
			misc/assetmapper.cpp
			misc/dynamiclines.cpp
			misc/dynamicrenderable.cpp''')]
audio_files = [Split('''
			audio/fmodaudios.cpp
			audio/nullaudios.cpp
			audio/fmodsample.cpp
			audio/audiosystem.cpp''')]
commonui_files = [Split('''
			commonui/actionmapdialog.cpp
			commonui/consoledialog.cpp
			commonui/loading.cpp
			commonui/luagui.cpp
			commonui/modaldialog.cpp
			commonui/optionsdialog.cpp
			commonui/startscreen.cpp
			commonui/uitest.cpp
			commonui/xnet.cpp''')]
			#commonui/movieplayer.cpp
geoscape_files = [Split('''
			geoscape/planetview.cpp
			geoscape/regiondefiner.cpp
			geoscape/globeiconrenderer.cpp
			geoscape/baseviewrenderer.cpp
			geoscape/baseview.cpp
			geoscape/statistics.cpp
			geoscape/globeiconmapper.cpp
			geoscape/earthpane.cpp
			geoscape/globeline.cpp''')]

xenoui_files = [client_files + commonui_files + geoscape_files +
			audio_files + misc_files]

xenoui = env.SharedLibrary('libxenoui', xenoui_files)
env.Install(['#bin/${VER}', '${gameDir}/game'], xenoui)

