###############################################################
# SConscript for fluxus-engine
#
# This is the main PLT module for fluxus, containing all core
# graphics functions

Import("env", "BinaryModulesLocation", "MZDYN", "static_modules")

if env['PLATFORM'] == 'darwin':
	Target = "fluxus-engine_ss.dylib"
elif env['PLATFORM'] == 'win32':
	Target = "fluxus-engine_ss.dll"
else:
	Target = "fluxus-engine_ss.so"

if static_modules: Target = "fluxus-engine_ss"

Libs = Split("GLEW fluxus png ode tiff jpeg freetype")
Install = BinaryModulesLocation
if env['PLATFORM'] != 'darwin':
	    Libs += Split("GL GLU glut")

if env['PLATFORM'] == 'win32':
	    Libs = Split("libmzsch3m_6mqxfs fluxus glu32 glew32 glut32 opengl32 png ode tiff jpeg freetype")

# link libraries statically when making an os x app
if env['PLATFORM'] == 'darwin' and GetOption('app'):
	for l in ['png', 'tiff', 'GLEW', 'freetype', 'ode', 'z', 'jpeg']:
		if l in Libs:
			Libs.remove(l)
		Libs.append(File('/opt/local/lib/lib%s.a' % l))

Source = Split("src/Engine.cpp \
		src/FluxusEngine.cpp \
		src/SchemeHelper.cpp \
        src/GlobalStateFunctions.cpp \
		src/LocalStateFunctions.cpp \
		src/MathsFunctions.cpp \
		src/PrimitiveFunctions.cpp \
		src/PDataFunctions.cpp \
		src/UtilFunctions.cpp \
		src/TurtleFunctions.cpp \
		src/LightFunctions.cpp \
		src/PhysicsFunctions.cpp \
		src/TurtleBuilder.cpp \
		src/PFuncContainer.cpp") + \
		[MZDYN]
		
if static_modules:
	env.StaticLibrary(source = Source, 
				  target = Target,
				  LIBS = Libs)
else:
	env.SharedLibrary(source = Source, 
				  target = Target, 
		  		  LIBS = Libs,
		  		  SHLIBPREFIX = "")
						  
if not static_modules: env.Install(Install, Target)
