#!/usr/bin/python
import sys
solid_env = Environment()

# Import the C flags set in the SConstruct file
Import ('cflags')
#Import ('cxxflags')
#Import ('defines')
Import ('user_options_dict')
#defines = ['QHULL', '_LIB']
defines = ['USE_DOUBLES','QHULL', '_LIB']
#cflags = []
cxxflags = []

if sys.platform=='win32':
	defines += ['WIN32','NDEBUG', '_WINDOWS', '_LIB']
	#cflags += ['/MT', '/W3', '/GX', '/O2', '/Op']
	cflags += ['/MT', '/W3', '/GX', '/Og', '/Ot', '/Ob1', '/Op', '/G6']
elif sys.platform=='linux2' or sys.platform=='linux-i386':
	defines += ['NDEBUG']
	cflags += ['-O2']
elif sys.platform=='darwin' :
	defines += ['NDEBUG']
	cflags += ['-O3','-pipe', '-fPIC', '-funsigned-char', '-ffast-math', '-mpowerpc' ]

else:
    print "################################################"
    print 
    print "Check if solid builds on your platform correctly"
    print "Add your platform specific defines"
    print "and cflags / cxxflags to the"
    print "extern/solid/SConscript file"

solid_env.Append (CCFLAGS = cflags)
solid_env.Append (CPPFLAGS = cxxflags)

solid_env.Append (CPPDEFINES = defines)

solid_sources = ['src/DT_C-api.cpp',
                'src/DT_Encounter.cpp',
                'src/DT_Object.cpp',
                'src/DT_RespTable.cpp',
                'src/DT_Scene.cpp']

convex_sources = ['src/convex/DT_Accuracy.cpp',
                'src/convex/DT_Box.cpp',
                'src/convex/DT_Cone.cpp',
                'src/convex/DT_Convex.cpp',
                'src/convex/DT_Cylinder.cpp',
                'src/convex/DT_Facet.cpp',
                'src/convex/DT_LineSegment.cpp',
                'src/convex/DT_PenDepth.cpp',
                'src/convex/DT_Point.cpp',
                'src/convex/DT_Polyhedron.cpp',
                'src/convex/DT_Polytope.cpp',
                'src/convex/DT_Sphere.cpp',
                'src/convex/DT_Triangle.cpp']
                
complex_sources = ['src/complex/DT_BBoxTree.cpp',
                'src/complex/DT_Complex.cpp']

broad_sources = ['src/broad/BP_C-api.cpp',
                'src/broad/BP_EndpointList.cpp',
                'src/broad/BP_Proxy.cpp',
                'src/broad/BP_Scene.cpp']

solid_env.Append (CPPPATH = ['include',
                             'src',
                             'src/broad',
                             'src/complex',
                             'src/convex',
                             '../qhull/include'])
source_files = solid_sources + convex_sources + complex_sources + broad_sources

solid_env.Library (target='#'+user_options_dict['BUILD_DIR']+'/lib/extern_solid', source=source_files)
