import os, glob

### General environment

commonEnv = Environment()
commonEnv.ParseConfig('sdl-config --cflags')
commonEnv.ParseConfig('sdl-config --libs')

### Check for debug or release
if ARGUMENTS.get('release', '0') == '1':
	print "*** Release build..."
	buildroot = 'release'
	commonEnv.Append(CXXFLAGS = ' -O3')
else:
	print "*** Debug build..."
	buildroot = 'debug'
	commonEnv.Append(CXXFLAGS = ' -g')

commonEnv.BuildDir(buildroot + '/src', 'src')
commonEnv.BuildDir(buildroot + '/sdlwidgets', 'sdlwidgets')

### Building the sdlwidgets library

sdlwidgetsSrcFiles = glob.glob('sdlwidgets/*.cpp')
sdlwidgetsSrcFiles = [buildroot+'/'+src for src in sdlwidgetsSrcFiles]
sdlwidgetsSrcFiles.sort()

sdlwidgetsEnv = commonEnv.Copy()
sdlwidgetsEnv.Append(CXXFLAGS = ' -Wall -Wshadow -Wsign-compare -Wparentheses -Wconversion')
sdlwidgetsEnv.Append(CXXFLAGS = ' -ansi')
sdlwidgetsEnv.StaticLibrary(buildroot+'/sdlwidgets/sdlwidgets', sdlwidgetsSrcFiles)

# SConscript(buildroot + '/sdlwidgets/SConscript', exports='commonEnv')

### Building the wop executable

logLevel   = 4
debugLevel = 4

programSrcFiles = glob.glob('src/*.cpp')
programSrcFiles = [buildroot+'/'+src for src in programSrcFiles]
programSrcFiles.sort()

programEnv = commonEnv.Copy()
programEnv.Append(CXXFLAGS = ' -Wall -Wshadow -Wsign-compare -Wparentheses -Wconversion')
programEnv.Append(CXXFLAGS = ' -ansi -fno-exceptions -fno-strict-aliasing -ffloat-store')
programEnv.Append(CPPDEFINES = [('LOG_LEVEL', logLevel),
                                ('DBG_LEVEL', debugLevel),
                                'USE_SDL',
                                ('NEW', 'new\(std::nothrow\)')
])
programEnv.Append(CPPPATH = 'sdlwidgets')
programEnv.Append(LIBPATH=[buildroot+'/sdlwidgets'])
programEnv.Append(LIBS=['sdlwidgets', 'm', 'z',
                        'SDL_net', 'SDL_mixer', 'SDL_ttf', 'SDL_image'])

programEnv.Program(buildroot+'/bin/wop', programSrcFiles)
