import os

#-------------#
# Import Vars #
#-------------#
Import('*')

#----------------#
# Subdirectories #
#----------------#
vamosobjs = SConscript('vamos/SConscript', exports=['env', 'src_dir'])
guiobjs = SConscript('gui/SConscript', exports=['env', 'src_dir'])

#---------#
# Sources #
#---------#
src = Split("""main.cpp
               backdrop.cpp
               camera.cpp
               controls.cc
               font.cpp
               forcefeedback.cpp
               gamestate.cpp
               keyman.cpp
               logo.cpp
               messageq.cpp
               model.cpp
               mouse.cpp
               multiplay.cpp
               net.cpp
               objects.cpp
               particles.cpp
               quat.cpp
               replay.cpp
               settings.cpp
               sound.cpp
               textures.cpp
               timer.cpp
               utility.cpp
               vamosworld.cc
               weather.cpp
               ai.cpp
               configfile.cpp
               bezier.cpp
               joepack.cpp
               cardinfo.cpp
               binreloc.c
               trackmap.cpp
               track.cpp""")

#------------------------#
# Copy Build Environment #
#------------------------#
local_env = env.Copy()
SConsignFile()

#--------------------------#
# Modify Build Environment #
#--------------------------#
local_env.ParseConfig('sdl-config --cflags --libs')

libs_link = ['GL', 'GLU', 'SDL_image', 'SDL_net', 'SDL_gfx']

if not local_env['old_openal']:
    libs_link.append('alut')

#if local_env['use_apbuild']:
#    libs_static = 'libgcc_1 libstdc++ libSDL_gfx libopenal'
#    if not local_env['old_openal']:
#        libs_static += ' libalut'
#    cmd = 'export APBUILD_STATIC="%s"' % libs_static
#    print 'Executing command \'' + cmd + '\'...'
#    os.system(cmd)

local_env.ParseConfig('openal-config --cflags --libs')
local_env.Append(LIBS = libs_link)
local_env.Append(LIBPATH = ['/usr/X11R6/lib'])

#if libs_static is not '':
#local_env.ParseConfig('openal-config --cflags --libs')
#local_env.Append(CPPDEFINES = [('DATA_DIR', '\\"$data_directory\\"'),
#                               ('SETTINGS_DIR', '\\"$settings\\"')])
#local_env.Append(LIBS = ['GL', 'GLU', 'SDL_image', 'SDL_net', 'SDL_gfx'])
#libsdl_gfx_static = local_env.Command('libSDL_gfx.a',None,Action('ln -sf `g++ -print-file-name=libSDL_gfx.a` build/'));
#libopenal_static = local_env.Command('libopenal.a',None,Action('ln -sf `g++ -print-file-name=libopenal.a` build/'));
#libalut_static = local_env.Command('libalut.a',None,Action('ln -sf `g++ -print-file-name=libalut.a` build/'));
#libsdl_gfx = local_env.StaticLibrary(target='mylib',source='mylib.cpp',LIBPATH='.',LINKFLAGS='-static-libgcc',LIBS=[static]);
#local_env.Append(LIBS = ['GL', 'GLU', 'SDL_image', 'SDL_net', libsdl_gfx_static, libopenal_static, libalut_static])
#local_env.Append(LIBS = ['GL', 'GLU', 'SDL_image', 'SDL_net'], APBUILD_STATIC="libopenal libalut libSDL_gfx")
#local_env.Append(CPPDEFINES = [('APBUILD_STATIC', '\\"libopenal libalut libSDL_gfx\\"')])
#if not local_env['old_openal']:
#    local_env.Append(LIBS = ['alut'])
#else:
#    local_env.Append(CPPDEFINES = [('OLD_OPENAL')])


#-----------------------#
# Distribute to src_dir #
#-----------------------#
dist_files = ['SConscript'] + src

env.Distribute (src_dir, dist_files)

#--------------------#
# Compile Executable #
#--------------------#
vdrift = local_env.Program(target='vdrift', source=[src, vamosobjs, guiobjs])

Default(vdrift)

#---------#
# Install #
#---------#
install = env.Install(Dir(env.subst("$destdir$prefix/$bindir")), vdrift)
env.Alias("install", install)

