CMAKE_MINIMUM_REQUIRED(VERSION 2.4)

#PROJECT(MayaPlugin)
if(COMMAND cmake_policy)
     cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)


IF ( UNIX AND NOT APPLE )
	ADD_DEFINITIONS(-DLINUX)
ENDIF()

SET(CMAKE_CXX_WARNING_LEVEL 4)

#SET (CMAKE_VERBOSE_MAKEFILE TRUE)
FIND_PATH(MAYA_BASE_DIR include/maya/MFn.h PATH 
			/usr/autodesk/maya2009-x64
			/usr/autodesk/maya2008-x64 
			/usr/autodesk/maya 
			"C:/Program Files/Autodesk/Maya2008" 
			"C:/Program Files/Autodesk/Maya2009" 
			"C:/Program Files/Autodesk/Maya8.5"
			"C:/Program Files (x86)/Autodesk/Maya2010"
			)

IF (MAYA_BASE_DIR)
	message ("Maya found at location " ${MAYA_BASE_DIR})

	SET(MAYA_INC_DIR ${MAYA_BASE_DIR}/include)
	SET(MAYA_LIB_DIR ${MAYA_BASE_DIR}/lib)

	INCLUDE_DIRECTORIES(${MAYA_INC_DIR} ${BULLET_PHYSICS_SOURCE_DIR}/src ${BULLET_PHYSICS_SOURCE_DIR}/Extras/MayaPlugin )
	LINK_DIRECTORIES(${MAYA_LIB_DIR})

	ADD_DEFINITIONS(-D_BOOL)
	ADD_DEFINITIONS(-DREQUIRE_IOSTREAM)

	SET(TARGET_H 
	 box_shape.h             bt_sphere_shape.h         dSolverNode.h         rigid_body_impl.h
		box_shape_impl.h        collision_shape.h         mathUtils.h           rigidBodyNode.h
		bt_box_shape.h          collision_shape_impl.h    mayaUtils.h           solver.h
		bt_collision_shape.h    collisionShapeNode.h      mesh_shape.h          solver_impl.h
		bt_convex_hull_shape.h  convex_hull_shape.h       mesh_shape_impl.h     sphere_shape.h
		bt_mesh_shape.h         convex_hull_shape_impl.h  plane_shape.h         sphere_shape_impl.h
		bt_plane_shape.h        dRigidBodyArrayCmd.h      plane_shape_impl.h
		bt_rigid_body.h         dRigidBodyCmd.h           rigidBodyArrayNode.h
		bt_solver.h             dSolverCmd.h              rigid_body.h 		pdbIO.h
		shared_ptr.h		drawUtils.h
	)

	SET(TARGET_SRC 
		pluginMain.cpp bulletExport.cpp  rigidBodyNode.cpp rigidBodyArrayNode.cpp collisionShapeNode.cpp
		  solver.cpp bt_solver.cpp dSolverNode.cpp dSolverCmd.cpp dRigidBodyCmd.cpp dRigidBodyArrayCmd.cpp
		  pdbIO.cpp drawUtils.cpp  constraint/dHingeConstraintCmd.cpp	constraint/dSliderConstraintCmd.cpp
		constraint/hingeConstraintNode.cpp	constraint/sixdofConstraintNode.cpp constraint/dNailConstraintCmd.cpp
		constraint/dsixdofConstraintCmd.cpp	constraint/nailConstraintNode.cpp	constraint/sliderConstraintNode.cpp
	)	

	ADD_LIBRARY(BulletMayaPlugin SHARED ${TARGET_H} ${TARGET_SRC})



	IF (WIN32)
	   SET(MAYA_LIBS OpenMaya Foundation OpenMayaAnim OpenMayaFX OpenMayaUI)
		IF (CMAKE_CL_64)
		SET_TARGET_PROPERTIES(BulletMayaPlugin PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS /MACHINE:X64")
	   ELSE (CMAKE_CL_64)
	   SET_TARGET_PROPERTIES(BulletMayaPlugin PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS /MACHINE:X86")
	   ENDIF (CMAKE_CL_64)
	   SET_TARGET_PROPERTIES(BulletMayaPlugin PROPERTIES SUFFIX ".mll")

	   LINK_DIRECTORIES(${MAYA_LIB_DIR})
	   TARGET_LINK_LIBRARIES(BulletMayaPlugin BulletDynamics BulletCollision LinearMath ${MAYA_LIBS} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY})
	   SET(CMAKE_SHARED_LINKER_FLAGS "/export:initializePlugin /export:uninitializePlugin")  
	ELSE (WIN32)
	  SET(MAYA_LIBS OpenMayalib Foundation OpenMayaAnim OpenMayaFX OpenMayaUI)
	  LINK_DIRECTORIES(${MAYA_LIB_DIR})
	  TARGET_LINK_LIBRARIES(BulletMayaPlugin  BulletDynamics BulletCollision LinearMath ${MAYA_LIBS} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY})
	ENDIF(WIN32)

	#OPTION(BUILD_STANDALONE "Build a standalone exporter program")
	#
	#IF (BUILD_STANDALONE)
	#  IF (WIN32)
	#    
	#  ELSE (WIN32)
	#    SET(MAYA_LIBS OpenMayalib Foundation OpenMayaAnim)
	#    ADD_EXECUTABLE(me ${TARGET_H} ${TARGET_SRC} standalone.cpp)
	#    LINK_DIRECTORIES(${MAYA_LIB_DIR})
	#    TARGET_LINK_LIBRARIES(me ${MAYA_LIBS} pthread m imf)
	#  ENDIF (WIN32)      
	#ENDIF (BUILD_STANDALONE)

ELSE()
	MESSAGE("Maya not found, try adding your Maya path in Bullet/Extras/MayaPlugin/CMakeListst.txt under FIND_PATH(MAYA_BASE_DIR ...")
ENDIF()