
# FIXME: For OS X, need flag for Framework or dylib
IF   (DYNAMIC_OPENSCENEGRAPH)
	ADD_DEFINITIONS(-DOSG_LIBRARY)
ELSE (DYNAMIC_OPENSCENEGRAPH)
	ADD_DEFINITIONS(-DOSG_LIBRARY_STATIC)
ENDIF(DYNAMIC_OPENSCENEGRAPH)

SET(LIB_NAME osg)

SET(HEADER_PATH ${OpenSceneGraph_SOURCE_DIR}/include/${LIB_NAME})
SET(LIB_PUBLIC_HEADERS
	${HEADER_PATH}/AlphaFunc
	${HEADER_PATH}/AnimationPath
	${HEADER_PATH}/ApplicationUsage
	${HEADER_PATH}/ArgumentParser
	${HEADER_PATH}/Array
	${HEADER_PATH}/AutoTransform
	${HEADER_PATH}/Billboard
	${HEADER_PATH}/BlendColor
	${HEADER_PATH}/BlendEquation
	${HEADER_PATH}/BlendFunc
	${HEADER_PATH}/BoundingBox
	${HEADER_PATH}/BoundingSphere
	${HEADER_PATH}/BoundsChecking
	${HEADER_PATH}/BufferObject
	${HEADER_PATH}/Camera
	${HEADER_PATH}/CameraNode
	${HEADER_PATH}/CameraView
	${HEADER_PATH}/ClampColor
	${HEADER_PATH}/ClearNode
	${HEADER_PATH}/ClipNode
	${HEADER_PATH}/ClipPlane
	${HEADER_PATH}/ClusterCullingCallback
	${HEADER_PATH}/CollectOccludersVisitor
	${HEADER_PATH}/ColorMask
	${HEADER_PATH}/ColorMatrix
	${HEADER_PATH}/ComputeBoundsVisitor
	${HEADER_PATH}/ConvexPlanarOccluder
	${HEADER_PATH}/ConvexPlanarPolygon
	${HEADER_PATH}/CoordinateSystemNode
	${HEADER_PATH}/CopyOp
	${HEADER_PATH}/CullFace
	${HEADER_PATH}/CullSettings
	${HEADER_PATH}/CullStack
	${HEADER_PATH}/CullingSet
	${HEADER_PATH}/DeleteHandler
	${HEADER_PATH}/Depth
	${HEADER_PATH}/DisplaySettings
	${HEADER_PATH}/DrawPixels
	${HEADER_PATH}/Drawable
	${HEADER_PATH}/Endian
	${HEADER_PATH}/Export
	${HEADER_PATH}/Fog
	${HEADER_PATH}/FragmentProgram
	${HEADER_PATH}/FrameBufferObject
	${HEADER_PATH}/FrameStamp
	${HEADER_PATH}/FrontFace
	${HEADER_PATH}/GL
	${HEADER_PATH}/GL2Extensions
	${HEADER_PATH}/GLExtensions
	${HEADER_PATH}/GLU
	${HEADER_PATH}/Geode
	${HEADER_PATH}/Geometry
	${HEADER_PATH}/GraphicsContext
	${HEADER_PATH}/GraphicsThread
	${HEADER_PATH}/Group
	${HEADER_PATH}/Hint
	${HEADER_PATH}/Image
	${HEADER_PATH}/ImageStream
	${HEADER_PATH}/LOD
	${HEADER_PATH}/Light
	${HEADER_PATH}/LightModel
	${HEADER_PATH}/LightSource
	${HEADER_PATH}/LineSegment
	${HEADER_PATH}/LineStipple
	${HEADER_PATH}/LineWidth
	${HEADER_PATH}/LogicOp
	${HEADER_PATH}/Material
	${HEADER_PATH}/Math
	${HEADER_PATH}/Matrix
	${HEADER_PATH}/MatrixTransform
	${HEADER_PATH}/Matrixd
	${HEADER_PATH}/Matrixf
	${HEADER_PATH}/Multisample
	${HEADER_PATH}/Node
	${HEADER_PATH}/NodeCallback
	${HEADER_PATH}/NodeTrackerCallback
	${HEADER_PATH}/NodeVisitor
	${HEADER_PATH}/Notify
	${HEADER_PATH}/Object
	${HEADER_PATH}/OccluderNode
	${HEADER_PATH}/PagedLOD
	${HEADER_PATH}/Plane
	${HEADER_PATH}/Point
	${HEADER_PATH}/PointSprite
	${HEADER_PATH}/PolygonMode
	${HEADER_PATH}/PolygonOffset
	${HEADER_PATH}/PolygonStipple
	${HEADER_PATH}/Polytope
	${HEADER_PATH}/PositionAttitudeTransform
	${HEADER_PATH}/PrimitiveSet
	${HEADER_PATH}/Program
	${HEADER_PATH}/Projection
	${HEADER_PATH}/ProxyNode
	${HEADER_PATH}/Quat
	${HEADER_PATH}/Referenced
	${HEADER_PATH}/RenderInfo
	${HEADER_PATH}/Scissor
	${HEADER_PATH}/Sequence
	${HEADER_PATH}/ShadeModel
	${HEADER_PATH}/Shader
	${HEADER_PATH}/ShadowVolumeOccluder
	${HEADER_PATH}/Shape
	${HEADER_PATH}/ShapeDrawable
	${HEADER_PATH}/State
	${HEADER_PATH}/StateAttribute
	${HEADER_PATH}/StateSet
	${HEADER_PATH}/Stats
	${HEADER_PATH}/Stencil
	${HEADER_PATH}/StencilTwoSided
	${HEADER_PATH}/Switch
	${HEADER_PATH}/TexEnv
	${HEADER_PATH}/TexEnvCombine
	${HEADER_PATH}/TexEnvFilter
	${HEADER_PATH}/TexGen
	${HEADER_PATH}/TexGenNode
	${HEADER_PATH}/TexMat
	${HEADER_PATH}/Texture
	${HEADER_PATH}/Texture1D
	${HEADER_PATH}/Texture2D
	${HEADER_PATH}/Texture3D
	${HEADER_PATH}/TextureCubeMap
	${HEADER_PATH}/TextureRectangle
	${HEADER_PATH}/Timer
	${HEADER_PATH}/Transform
	${HEADER_PATH}/TriangleFunctor
	${HEADER_PATH}/TriangleIndexFunctor
	${HEADER_PATH}/TransferFunction
	${HEADER_PATH}/Uniform
	${HEADER_PATH}/Vec2
	${HEADER_PATH}/Vec2b
	${HEADER_PATH}/Vec2d
	${HEADER_PATH}/Vec2f
	${HEADER_PATH}/Vec2s
	${HEADER_PATH}/Vec3
	${HEADER_PATH}/Vec3b
	${HEADER_PATH}/Vec3d
	${HEADER_PATH}/Vec3f
	${HEADER_PATH}/Vec3s
	${HEADER_PATH}/Vec4
	${HEADER_PATH}/Vec4b
	${HEADER_PATH}/Vec4d
	${HEADER_PATH}/Vec4f
	${HEADER_PATH}/Vec4s
	${HEADER_PATH}/Vec4ub
	${HEADER_PATH}/Version
	${HEADER_PATH}/VertexProgram
	${HEADER_PATH}/View
	${HEADER_PATH}/Viewport
	${HEADER_PATH}/buffered_value
	${HEADER_PATH}/fast_back_stack
	${HEADER_PATH}/io_utils
	${HEADER_PATH}/observer_ptr
	${HEADER_PATH}/ref_ptr
)

ADD_LIBRARY(${LIB_NAME}
	${OPENSCENEGRAPH_USER_DEFINED_DYNAMIC_OR_STATIC}
	${LIB_PUBLIC_HEADERS}
	AlphaFunc.cpp
	AnimationPath.cpp
	ApplicationUsage.cpp
	ArgumentParser.cpp
	Array.cpp
	AutoTransform.cpp
	Billboard.cpp
	BlendColor.cpp
	BlendEquation.cpp
	BlendFunc.cpp
	BoundingBox.cpp
	BoundingSphere.cpp
	BufferObject.cpp
	Camera.cpp
	CameraView.cpp
	ClampColor.cpp
	ClearNode.cpp
	ClipNode.cpp
	ClipPlane.cpp
	ClusterCullingCallback.cpp
	CollectOccludersVisitor.cpp
	ColorMask.cpp
	ColorMatrix.cpp
	ComputeBoundsVisitor.cpp
	ConvexPlanarOccluder.cpp
	ConvexPlanarPolygon.cpp
	CoordinateSystemNode.cpp
	CopyOp.cpp
	CullFace.cpp
	CullSettings.cpp
	CullStack.cpp
	CullingSet.cpp
	DeleteHandler.cpp
	Depth.cpp
	DisplaySettings.cpp
	DrawPixels.cpp
	Drawable.cpp
	Fog.cpp
	FragmentProgram.cpp
	FrameBufferObject.cpp
	FrameStamp.cpp
	FrontFace.cpp
	GLExtensions.cpp
	Geode.cpp
	Geometry.cpp
	GraphicsContext.cpp
	GraphicsThread.cpp
	Group.cpp
	Hint.cpp
	Image.cpp
	ImageStream.cpp
	LOD.cpp
	Light.cpp
	LightModel.cpp
	LightSource.cpp
	LineSegment.cpp
	LineStipple.cpp
	LineWidth.cpp
	LogicOp.cpp
	Material.cpp
	MatrixDecomposition.cpp
	MatrixTransform.cpp
	# We don't build this one
	#	Matrix_implementation.cpp
	Matrixd.cpp
	Matrixf.cpp
	Multisample.cpp
	Node.cpp
	NodeCallback.cpp
	NodeTrackerCallback.cpp
	NodeVisitor.cpp
	Notify.cpp
	Object.cpp
	OccluderNode.cpp
	PagedLOD.cpp
	Point.cpp
	PointSprite.cpp
	PolygonMode.cpp
	PolygonOffset.cpp
	PolygonStipple.cpp
	PositionAttitudeTransform.cpp
	PrimitiveSet.cpp
	Program.cpp
	Projection.cpp
	ProxyNode.cpp
	Quat.cpp
	Referenced.cpp
	Scissor.cpp
	Sequence.cpp
	ShadeModel.cpp
	Shader.cpp
	ShadowVolumeOccluder.cpp
	Shape.cpp
	ShapeDrawable.cpp
	State.cpp
	StateAttribute.cpp
	StateSet.cpp
	Stats.cpp
	Stencil.cpp
	StencilTwoSided.cpp
	Switch.cpp
	TexEnv.cpp
	TexEnvCombine.cpp
	TexEnvFilter.cpp
	TexGen.cpp
	TexGenNode.cpp
	TexMat.cpp
	Texture.cpp
	Texture1D.cpp
	Texture2D.cpp
	Texture3D.cpp
	TextureCubeMap.cpp
	TextureRectangle.cpp
	TransferFunction.cpp
	Timer.cpp
	Transform.cpp
	Uniform.cpp
	Version.cpp
	VertexProgram.cpp
	View.cpp
	Viewport.cpp
	dxtctool.cpp
	dxtctool.h
)

LINK_INTERNAL(${LIB_NAME} 	
	OpenThreads
)
LINK_EXTERNAL(${LIB_NAME} ${CMAKE_THREAD_LIBS_INIT}	${MATH_LIBRARY} )
LINK_CORELIB_DEFAULT(${LIB_NAME} ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIBRARY} )

INCLUDE(ModuleInstall OPTIONAL)
