TEMPLATE = lib
TARGET = GLC_lib
DEFINES += GLC_LIB_LIBRARY
include(../../openpilotgcslibrary.pri)

# GLC_lib qmake configuration
TEMPLATE = lib
QT += opengl \
    core


#CONFIG += exceptions \
#    release \
#    warn_on
#TARGET = GLC_lib
#VERSION = 2.0.0

DEFINES += CREATE_GLC_LIB_DLL
DEFINES += LIB3DS_EXPORTS

DEFINES += _CRT_SECURE_NO_WARNINGS

unix:OBJECTS_DIR = ./Build
unix:MOC_DIR = ./Build
unix:UI_DIR = ./Build

DEPENDPATH += .
INCLUDEPATH += .
INCLUDEPATH += ./3rdparty/zlib

# Input					
HEADERS_QUAZIP +=	3rdparty/quazip/crypt.h \
					3rdparty/quazip/ioapi.h \
					3rdparty/quazip/quazip.h \
					3rdparty/quazip/quazipfile.h \
					3rdparty/quazip/quazipfileinfo.h \
					3rdparty/quazip/quazipnewinfo.h \
					3rdparty/quazip/unzip.h \
					3rdparty/quazip/zip.h

HEADERS_LIB3DS += 3rdparty/lib3ds/atmosphere.h \
           3rdparty/lib3ds/background.h \
           3rdparty/lib3ds/camera.h \
           3rdparty/lib3ds/chunk.h \
           3rdparty/lib3ds/chunktable.h \
           3rdparty/lib3ds/ease.h \
           3rdparty/lib3ds/file.h \
           3rdparty/lib3ds/io.h \
           3rdparty/lib3ds/light.h \
           3rdparty/lib3ds/material.h \
           3rdparty/lib3ds/matrix.h \
           3rdparty/lib3ds/mesh.h \
           3rdparty/lib3ds/node.h \
           3rdparty/lib3ds/quat.h \
           3rdparty/lib3ds/shadow.h \
           3rdparty/lib3ds/tcb.h \
           3rdparty/lib3ds/tracks.h \
           3rdparty/lib3ds/types.h \
           3rdparty/lib3ds/vector.h \
           3rdparty/lib3ds/viewport.h
           
HEADERS_GLEXT += 3rdparty/glext/glext.h

HEADERS_GLC_MATHS += 	maths/glc_utils_maths.h \
						maths/glc_vector2d.h \
						maths/glc_vector2df.h \
						maths/glc_vector3d.h \
						maths/glc_vector4d.h \
						maths/glc_vector3df.h \
						maths/glc_matrix4x4.h \
						maths/glc_interpolator.h \
						maths/glc_plane.h \
						maths/glc_geomtools.h \
						maths/glc_line3d.h
						
HEADERS_GLC_IO +=		io/glc_objmtlloader.h \
						io/glc_objtoworld.h \
						io/glc_stltoworld.h \
						io/glc_offtoworld.h \
						io/glc_3dstoworld.h \
						io/glc_3dxmltoworld.h \
						io/glc_colladatoworld.h \
						io/glc_worldto3dxml.h \
						io/glc_bsreptoworld.h

HEADERS_GLC_SCENEGRAPH +=	sceneGraph/glc_3dviewcollection.h \
							sceneGraph/glc_3dviewinstance.h \
							sceneGraph/glc_structreference.h \
							sceneGraph/glc_structinstance.h \
							sceneGraph/glc_structoccurence.h \
							sceneGraph/glc_world.h \
							sceneGraph/glc_attributes.h \
							sceneGraph/glc_worldhandle.h \
							sceneGraph/glc_spacepartitioning.h \
							sceneGraph/glc_octree.h \
							sceneGraph/glc_octreenode.h
							
HEADERS_GLC_GEOMETRY +=		geometry/glc_geometry.h \
							geometry/glc_circle.h \
							geometry/glc_cylinder.h \
							geometry/glc_point.h \
							geometry/glc_box.h \
							geometry/glc_meshdata.h \
							geometry/glc_primitivegroup.h \
							geometry/glc_mesh.h \
							geometry/glc_lod.h \
							geometry/glc_rectangle.h \
							geometry/glc_line.h \
							geometry/glc_rep.h \
							geometry/glc_3drep.h \
							geometry/glc_pointsprite.h \
							geometry/glc_bsrep.h \
							geometry/glc_wiredata.h \
							geometry/glc_arrow.h \
							geometry/glc_polylines.h \
							geometry/glc_disc.h \
							geometry/glc_cone.h \
							geometry/glc_sphere.h

HEADERS_GLC_SHADING +=	shading/glc_material.h \						
						shading/glc_texture.h \
						shading/glc_shader.h \
						shading/glc_selectionmaterial.h \
						shading/glc_light.h \
						shading/glc_renderproperties.h
						
HEADERS_GLC_VIEWPORT +=	viewport/glc_camera.h \
						viewport/glc_imageplane.h \
						viewport/glc_viewport.h \
						viewport/glc_movercontroller.h\
						viewport/glc_mover.h \
						viewport/glc_panmover.h \
						viewport/glc_repmover.h \
						viewport/glc_repcrossmover.h \
						viewport/glc_zoommover.h \
						viewport/glc_trackballmover.h \
						viewport/glc_reptrackballmover.h \
						viewport/glc_settargetmover.h \
						viewport/glc_turntablemover.h \
						viewport/glc_frustum.h \
						viewport/glc_flymover.h \
						viewport/glc_repflymover.h


HEADERS_GLC += glc_global.h \
           glc_object.h \
           glc_factory.h \
           glc_boundingbox.h \
           glc_exception.h \
           glc_openglexception.h \
           glc_fileformatexception.h \
           glc_ext.h \
           glc_state.h \
           glc_config.h \
           glc_cachemanager.h \
           glc_renderstatistics.h
           
HEADERS_GLC_3DWIDGET += 3DWidget/glc_3dwidget.h \
						3DWidget/glc_cuttingplane.h \
						3DWidget/glc_3dwidgetmanager.h \
						3DWidget/glc_3dwidgetmanagerhandle.h \
						3DWidget/glc_abstractmanipulator.h \
						3DWidget/glc_pullmanipulator.h \
						3DWidget/glc_rotationmanipulator.h \
						3DWidget/glc_axis.h


HEADERS += $${HEADERS_QUAZIP} $${HEADERS_LIB3DS} $${HEADERS_GLC_MATHS} $${HEADERS_GLC_IO}
HEADERS += $${HEADERS_GLC} $${HEADERS_GLEXT} $${HEADERS_GLC_SCENEGRAPH} $${HEADERS_GLC_GEOMETRY}
HEADERS += $${HEADERS_GLC_SHADING} $${HEADERS_GLC_VIEWPORT} $${HEADERS_GLC_3DWIDGET}
		   
SOURCES += 3rdparty/zlib/adler32.c \
           3rdparty/zlib/compress.c \
           3rdparty/zlib/crc32.c \
           3rdparty/zlib/deflate.c \
           3rdparty/zlib/gzio.c \
           3rdparty/zlib/inffast.c \
           3rdparty/zlib/inflate.c \
           3rdparty/zlib/inftrees.c \
           3rdparty/zlib/trees.c \
           3rdparty/zlib/uncompr.c \
           3rdparty/zlib/zutil.c

SOURCES += 3rdparty/quazip/ioapi.c \
           3rdparty/quazip/quazip.cpp \
           3rdparty/quazip/quazipfile.cpp \
           3rdparty/quazip/quazipnewinfo.cpp \
           3rdparty/quazip/unzip.c \
           3rdparty/quazip/zip.c

SOURCES += 3rdparty/lib3ds/atmosphere.c \
           3rdparty/lib3ds/background.c \
           3rdparty/lib3ds/camera.c \
           3rdparty/lib3ds/chunk.c \
           3rdparty/lib3ds/ease.c \
           3rdparty/lib3ds/file.c \
           3rdparty/lib3ds/io.c \
           3rdparty/lib3ds/light.c \
           3rdparty/lib3ds/material.c \
           3rdparty/lib3ds/matrix.c \
           3rdparty/lib3ds/mesh.c \
           3rdparty/lib3ds/node.c \
           3rdparty/lib3ds/quat.c \
           3rdparty/lib3ds/shadow.c \
           3rdparty/lib3ds/tcb.c \
           3rdparty/lib3ds/tracks.c \
           3rdparty/lib3ds/vector.c \
           3rdparty/lib3ds/viewport.c
   
SOURCES +=	maths/glc_matrix4x4.cpp \
			maths/glc_vector4d.cpp \
			maths/glc_interpolator.cpp \
			maths/glc_plane.cpp \
			maths/glc_geomtools.cpp \
			maths/glc_line3d.cpp

SOURCES +=	io/glc_objmtlloader.cpp \
			io/glc_objtoworld.cpp \
			io/glc_stltoworld.cpp \
			io/glc_offtoworld.cpp \
			io/glc_3dstoworld.cpp \
			io/glc_3dxmltoworld.cpp \
			io/glc_colladatoworld.cpp \
			io/glc_worldto3dxml.cpp \
			io/glc_bsreptoworld.cpp

SOURCES +=	sceneGraph/glc_3dviewcollection.cpp \
			sceneGraph/glc_3dviewinstance.cpp \
			sceneGraph/glc_structreference.cpp \
			sceneGraph/glc_structinstance.cpp \
			sceneGraph/glc_structoccurence.cpp \
			sceneGraph/glc_world.cpp \
			sceneGraph/glc_attributes.cpp \
			sceneGraph/glc_worldhandle.cpp \
			sceneGraph/glc_spacepartitioning.cpp \
			sceneGraph/glc_octree.cpp \
			sceneGraph/glc_octreenode.cpp

SOURCES +=	geometry/glc_geometry.cpp \
			geometry/glc_circle.cpp \
			geometry/glc_cylinder.cpp \
			geometry/glc_point.cpp \
			geometry/glc_box.cpp \
			geometry/glc_meshdata.cpp \
			geometry/glc_primitivegroup.cpp \
			geometry/glc_mesh.cpp \
			geometry/glc_lod.cpp \
			geometry/glc_rectangle.cpp \
			geometry/glc_line.cpp \
			geometry/glc_rep.cpp \
			geometry/glc_3drep.cpp \
			geometry/glc_pointsprite.cpp \
			geometry/glc_bsrep.cpp \
			geometry/glc_wiredata.cpp \
			geometry/glc_arrow.cpp \
			geometry/glc_polylines.cpp \
			geometry/glc_disc.cpp \
			geometry/glc_cone.cpp \
			geometry/glc_sphere.cpp


SOURCES +=	shading/glc_material.cpp \
			shading/glc_texture.cpp \
			shading/glc_light.cpp \
			shading/glc_selectionmaterial.cpp \
			shading/glc_shader.cpp \
			shading/glc_renderproperties.cpp

SOURCES +=	viewport/glc_camera.cpp \
			viewport/glc_imageplane.cpp \
			viewport/glc_viewport.cpp \
			viewport/glc_movercontroller.cpp\
			viewport/glc_mover.cpp \
			viewport/glc_panmover.cpp \
			viewport/glc_repmover.cpp \
			viewport/glc_repcrossmover.cpp \
			viewport/glc_zoommover.cpp \
			viewport/glc_trackballmover.cpp \
			viewport/glc_reptrackballmover.cpp \
			viewport/glc_settargetmover.cpp \
			viewport/glc_turntablemover.cpp \
			viewport/glc_frustum.cpp \
			viewport/glc_flymover.cpp \
			viewport/glc_repflymover.cpp
		
SOURCES +=	glc_global.cpp \
			glc_object.cpp \			
			glc_factory.cpp \
			glc_boundingbox.cpp \
			glc_exception.cpp \
			glc_openglexception.cpp \
			glc_fileformatexception.cpp \
			glc_ext.cpp \
			glc_state.cpp \
			glc_cachemanager.cpp \
			glc_renderstatistics.cpp

SOURCES +=	3DWidget/glc_3dwidget.cpp \
			3DWidget/glc_cuttingplane.cpp \
 			3DWidget/glc_3dwidgetmanager.cpp \
			3DWidget/glc_3dwidgetmanagerhandle.cpp \
			3DWidget/glc_abstractmanipulator.cpp \
			3DWidget/glc_pullmanipulator.cpp \
			3DWidget/glc_rotationmanipulator.cpp \
			3DWidget/glc_axis.cpp
			
         
# Windows compilation configuration
win32:CONFIG *= dll

# install header
HEADERS_INST = include/GLC_BoundingBox \
    		   include/GLC_Box \
    		   include/GLC_Camera \
    		   include/GLC_Circle \
    		   include/GLC_3DViewCollection \
    		   include/GLC_Cylinder \
    		   include/GLC_Exception \
    		   include/GLC_Factory \
    		   include/GLC_FileFormatException \
    		   include/GLC_Geometry \
    		   include/GLC_ImagePlane \
    		   include/GLC_3DViewInstance \
    		   include/GLC_Interpolator \
    		   include/GLC_Light \
    		   include/GLC_Material \
    		   include/GLC_Matrix4x4 \
    		   include/GLC_Node \
    		   include/GLC_Object \
    		   include/GLC_OpenGlException \
    		   include/GLC_Point \
    		   include/GLC_Point2d \
    		   include/GLC_Point2df \
    		   include/GLC_Point3d \
    		   include/GLC_Point3df \
    		   include/GLC_Texture \
    		   include/GLC_Vector2d \
    		   include/GLC_Vector2df \
    		   include/GLC_Vector3d \
    		   include/GLC_Vector3df \
    		   include/GLC_Vector4d \
    		   include/GLC_Viewport \
    		   include/GLC_World \
    		   include/GLC_Shader \
    		   include/GLC_SelectionMaterial \
    		   include/GLC_State \
    		   include/GLC_Mover \
    		   include/GLC_MoverController \
    		   include/GLC_PanMover \
    		   include/GLC_ZoomMover \
    		   include/GLC_TrackBallMover \
    		   include/GLC_RepMover \
    		   include/GLC_RepCrossMover \
    		   include/GLC_RepTrackBallMover \
    		   include/GLC_TurnTableMover \
    		   include/GLC_Attribute \
    		   include/GLC_Rectangle \
    		   include/GLC_Mesh \
    		   include/GLC_StructOccurence \
    		   include/GLC_StructInstance \
    		   include/GLC_StructReference \
    		   include/GLC_Line \
    		   include/GLC_Rep \
    		   include/GLC_3DRep \
    		   include/GLC_PointSprite \
    		   include/GLC_CacheManager \
    		   include/GLC_BSRep \
    		   include/GLC_RenderProperties \
    		   include/GLC_Global \
    		   include/GLC_SpacePartitioning \
    		   include/GLC_Octree \
    		   include/GLC_OctreeNode \
    		   include/GLC_Plane \
    		   include/GLC_Frustum \
    		   include/GLC_GeomTools \
    		   include/GLC_Line3d \
    		   include/GLC_3DWidget \
    		   include/GLC_CuttingPlane \
    		   include/GLC_3DWidgetManager \
    		   include/GLC_3DWidgetManagerHandle \
    		   include/GLC_Arrow \
    		   include/GLC_Polylines \
    		   include/GLC_Disc \
    		   include/GLC_AbstractManipulator \
    		   include/GLC_PullManipulator \
    		   include/GLC_RotationManipulator \
    		   include/GLC_FlyMover \
    		   include/GLC_RepFlyMover \
    		   include/GLC_WorldTo3dxml \
    		   include/GLC_RenderStatistics \
    		   include/GLC_Ext \
    		   include/GLC_Cone \
    		   include/GLC_Sphere \
    		   include/GLC_Axis
    		   
    			   
# Linux and macx install configuration
unix {
    # Location of HEADERS and library
    LIB_DIR = ./install/lib
    INCLUDE_DIR = ./install/include
    # Adds a -P to preserve link
	QMAKE_COPY_FILE = $${QMAKE_COPY_FILE} -P
	include.path = $${INCLUDE_DIR}/GLC_lib
	include_lib3ds.path = $${INCLUDE_DIR}/GLC_lib/3rdparty/lib3ds
	include_glext.path = $${INCLUDE_DIR}/GLC_lib/3rdparty/glext
	include_quazip.path = $${INCLUDE_DIR}/GLC_lib/3rdparty/quazip
	include_glc_maths.path = $${INCLUDE_DIR}/GLC_lib/maths
	include_glc_io.path = $${INCLUDE_DIR}/GLC_lib/io
	include_glc_scengraph.path = $${INCLUDE_DIR}/GLC_lib/sceneGraph
	include_glc_geometry.path = $${INCLUDE_DIR}/GLC_lib/geometry
	include_glc_shading.path = $${INCLUDE_DIR}/GLC_lib/shading
	include_glc_viewport.path = $${INCLUDE_DIR}/GLC_lib/viewport
	include_glc_3dwidget.path = $${INCLUDE_DIR}/GLC_lib/3DWidget
}

# Windows Install configuration
win32 { 
    # Location of HEADERS and library
    LIB_DIR = C:/GLC_lib/lib
    INCLUDE_DIR = C:/GLC_lib/include
    include.path = $${INCLUDE_DIR}
    include_lib3ds.path = $${INCLUDE_DIR}/3rdparty/lib3ds
    include_glext.path = $${INCLUDE_DIR}/3rdparty/glext
    include_quazip.path = $${INCLUDE_DIR}/3rdparty/quazip
    include_glc_maths.path = $${INCLUDE_DIR}/maths
    include_glc_io.path = $${INCLUDE_DIR}/io
    include_glc_scengraph.path = $${INCLUDE_DIR}/sceneGraph
    include_glc_geometry.path = $${INCLUDE_DIR}/geometry
    include_glc_shading.path = $${INCLUDE_DIR}/shading
    include_glc_viewport.path = $${INCLUDE_DIR}/viewport
    include_glc_3dwidget.path = $${INCLUDE_DIR}/3DWidget
}    

include.files = $${HEADERS_GLC} $${HEADERS_INST}
include_lib3ds.files = $${HEADERS_LIB3DS}
include_glext.files =$${HEADERS_GLEXT}
include_quazip.files = $${HEADERS_QUAZIP}
include_glc_maths.files= $${HEADERS_GLC_MATHS}
include_glc_io.files= $${HEADERS_GLC_IO}
include_glc_scengraph.files= $${HEADERS_GLC_SCENEGRAPH}
include_glc_geometry.files= $${HEADERS_GLC_GEOMETRY}
include_glc_shading.files = $${HEADERS_GLC_SHADING}
include_glc_viewport.files = $${HEADERS_GLC_VIEWPORT}
include_glc_3dwidget.files = $${HEADERS_GLC_3DWIDGET}

# install library
target.path = $${LIB_DIR}
   
# "make install" configuration options
#INSTALLS += include_lib3ds include_glext include_quazip include_glc_maths include_glc_io
#INSTALLS += include_glc_scengraph include_glc_geometry include_glc_shading include_glc_viewport
#INSTALLS += include_glc_3dwidget

#INSTALLS += target
#INSTALLS +=include

