import os

Import('env cachegen headergen validategen')
aqsisdll_sources = Split("""
	attributes.cpp
	bound.cpp
	bucket.cpp
	bunny.cpp
	condition.cpp
	converter.cpp
	csgtree.cpp
	cubiccurves.cpp
	curves.cpp
	environment.cpp
	filters.cpp
	genpoly.cpp
	graphicsstate.cpp
	imagebuffer.cpp
	imagepixel.cpp
	imagers.cpp
	inlineparse.cpp
	lath.cpp
	lights.cpp
	linearcurves.cpp
	micropolygon.cpp
	mpdump.cpp
	nurbs.cpp
	occlusion.cpp
	options.cpp
	parameters.cpp
	patch.cpp
	points.cpp
	polygon.cpp
	procedural.cpp
	quadrics.cpp
	render.cpp
	renderer.cpp
	ri.cpp
	shaders.cpp
	shadowmap.cpp
	stats.cpp
	subdivision2.cpp
	surface.cpp
	symbols.cpp
	teapot.cpp
	texturemap.cpp
	transform.cpp
	blobby.cpp
	marchingcubes.cpp
	trimcurve.cpp""")


aqsisdll_headers = Split("""
	attributes.h            ilightsource.h          micropolygon.h          ri.h
	bilinear.h              imagebuffer.h           motion.h                ri_cache.h
	ri_debug.h
	bound.h                 imagepixel.h            mpdump.h                rifile.h

	bucket.h                bunny.h 	imagers.h               
	nurbs.h                 shadeop.h
	blobby.h		clippingvolume.h        inlineparse.h
        objectinstance.h        shaders.h

	condition.h             iraytrace.h             occlusion.h             stats.h
	converter.h             irenderer.h             options.h               subdivision2.h
	csgtree.h               ishader.h               parameters.h            surface.h
	curves.h                ishaderdata.h           patch.h                 symbols.h
	focus.h                 ishaderexecenv.h        plane.h                 teapot.h
	forwarddiff.h           isurface.h              points.h                texturemap.h
	genpoly.h               itexturemap.h           polygon.h               transform.h
	graphicsstate.h         itransform.h            procedural.h            trimcurve.h
	iattributes.h           kdtree.h                quadrics.h              ioptions.h
	iddmanager.h            lath.h                  render.h
	marchingcubes.h 	lookuptable.h
	idsoshadeops.h          lights.h                renderer.h""")

aqsis_install_headers = Split('''
	ri.h
	shadeop.h
	''')

aqsisenv = env.Copy()
aqsisenv.AppendUnique(CPPDEFINES=['RI_EXPORTS', 'RIB_EXPORTS'])
aqsisenv.AppendUnique(CPPPATH=['$tiff_include_path', '$zlib_include_path'])


if env.has_key('libaqsis_add_sources'):
	aqsisdll_sources = aqsisdll_sources + ['$libaqsis_add_sources']


aqsisenv.Replace(LIBS = ['shadervm', 'aqsistypes', '$tiff_lib', '$z_lib'])

aqsisenv.UseTargetOptions('libaqsis')

Import('ddmanager_objs raytrace_objs rib2_objs rib2ri_sources')

# compile rib2ri here to catch aqsisenv #defines
rib2ri_objs = aqsisenv.SharedObject('rib2ri', rib2ri_sources)

aqsisdll = aqsisenv.SharedLibrary('aqsis', [aqsisdll_sources, ddmanager_objs, raytrace_objs, rib2ri_objs, rib2_objs])
aqsisenv.PostBuildSharedLibrary(aqsisenv, aqsisdll)

Depends(aqsisdll, cachegen)
Depends(aqsisdll, validategen)
Depends(aqsisdll, headergen)

aqsisInstall = aqsisenv.InstallAs([os.path.join('${RENDERENGINEDIR}', '%s${SHLIB_VERSION_SUFFIX}') %(aqsisdll[0])], [aqsisdll[0]])
aqsisenv.Install('$INCLUDEDIR', aqsis_install_headers)

aqsisenv.PostInstallSharedLibrary(aqsisenv, '${RENDERENGINEDIR}', aqsisdll)

#aqsisproject = aqsisenv.MSVSProject(target = 'render' + env['MSVSPROJECTSUFFIX'],
#	srcs = aqsisdll_sources,
#	buildtarget = aqsisdll,
#	variant = 'Release')

#aqsisenv.Depends(aqsisdll, aqsisproject)


env.Distribute(aqsisdll_sources)
env.Distribute(aqsisdll_headers)
env.Distribute('SConscript')
