# This is basically the overall name of the project in Visual Studio this is the name of the Solution File


# For every executable you have with a main method you should have an add_executable line below.
# For every add executable line you should list every .cpp and .h file you have associated with that executable.  


# This is the variable for Windows.  I use this to define the root of my directory structure.
SET(GLUT_ROOT ${BULLET_PHYSICS_SOURCE_DIR}/Glut)

# You shouldn't have to modify anything below this line 
########################################################

INCLUDE_DIRECTORIES(
"./"
"./OpenGLEx"
"./OpenGLEx/Optionals"
${BULLET_PHYSICS_SOURCE_DIR}/src 
${BULLET_PHYSICS_SOURCE_DIR}/Demos/OpenGL 
# TODO: please add here the include folder of your HACD SVN library (NOT the one in ${BULLET_PHYSICS_SOURCE_DIR}/Extras/HACD, at least at the time of writing)
# and be sure to link to the CORRECT HACD SVN library (and NOT the one from the Bullet Extra folder).
${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize
${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletFileLoader
${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletWorldImporter
)

IF (USE_GLUT)

	LINK_LIBRARIES(
	OpenGLSupport  BulletWorldImporter  BulletSoftBody  BulletDynamics  BulletCollision LinearMath  BulletFileLoader HACD ${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
	)

	ADD_EXECUTABLE(AppHACDDemo
		main.cpp
		HACDDemo.cpp 
		HACDDemo.h
		btHACDCompoundShapeParamsLoader.cpp
		btVHACDCompoundShapeParamsLoader.cpp
		README.txt
		OpenGLEx/Optionals/btHACDCompoundShape.h
		OpenGLEx/Optionals/btVHACDCompoundShape.h
		OpenGLEx/btCollisionShapeGarbageCollector.h
		OpenGLEx/btCollisionShapeGarbageCollector.cpp
		OpenGLEx/btTriangleMeshEx.h
		OpenGLEx/btTriangleMeshEx.cpp
		OpenGLEx/GlutDemoApplicationEx.h
		OpenGLEx/GlutDemoApplicationEx.cpp
		OpenGLEx/GlutStuffEx.cpp
		OpenGLEx/BunnyMesh.inl
		OpenGLEx/TorusMesh.inl
	)
	IF (WIN32)
		IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
			IF (CMAKE_CL_64)
				ADD_CUSTOM_COMMAND(
					TARGET AppHACDDemo
					POST_BUILD
					COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/glut64.dll ${CMAKE_CURRENT_BINARY_DIR}
				)
			ELSE(CMAKE_CL_64)
				ADD_CUSTOM_COMMAND(
					TARGET AppHACDDemo
					POST_BUILD
					COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/GLUT32.DLL ${CMAKE_CURRENT_BINARY_DIR}
				)
			ENDIF(CMAKE_CL_64)
		ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
	ENDIF(WIN32)
ELSE (USE_GLUT)

LINK_LIBRARIES(
	OpenGLSupport  BulletWorldImporter BulletSoftBody  BulletDynamics  BulletCollision LinearMath  BulletFileLoader HACD ${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
	)

	ADD_EXECUTABLE(AppHACDDemo
		WIN32
		main.cpp
		HACDDemo.cpp 
		HACDDemo.h
		btHACDCompoundShapeParamsLoader.cpp
		btVHACDCompoundShapeParamsLoader.cpp
		README.txt
		OpenGLEx/Optionals/btHACDCompoundShape.h
		OpenGLEx/Optionals/btVHACDCompoundShape.h
		OpenGLEx/btCollisionShapeGarbageCollector.h
		OpenGLEx/btCollisionShapeGarbageCollector.cpp
		OpenGLEx/btTriangleMeshEx.h
		OpenGLEx/btTriangleMeshEx.cpp
		OpenGLEx/GlutDemoApplicationEx.h
		OpenGLEx/GlutDemoApplicationEx.cpp
		OpenGLEx/GlutStuffEx.cpp
		OpenGLEx/BunnyMesh.inl
		OpenGLEx/TorusMesh.inl
	)
	
ENDIF (USE_GLUT)

IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
	ADD_CUSTOM_COMMAND(
	TARGET AppHACDDemo
	POST_BUILD
	COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/HACDDemo/Release/appHACDDemo.exe.cmdlineParams.txt  ${CMAKE_CURRENT_BINARY_DIR}/appHACDDemo.exe.cmdlineParams.txt
	COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/HACDDemo/Release/appHACDDemo.exe.cmdlineParams.txt  ${CMAKE_CURRENT_BINARY_DIR}/appHACDDemo.exe.cmdlineParamsVHACD.txt	COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/HACDDemo/Release/appHACDDemoMeshes/chair.obj ${CMAKE_CURRENT_BINARY_DIR}/appHACDDemoMeshes/chair.obj
	COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/HACDDemo/Release/appHACDDemoMeshes/chair.mtl ${CMAKE_CURRENT_BINARY_DIR}/appHACDDemoMeshes/chair.mtl
	COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/HACDDemo/Release/appHACDDemoMeshes/chair.jpg ${CMAKE_CURRENT_BINARY_DIR}/appHACDDemoMeshes/chair.jpg
	COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/HACDDemo/Release/appHACDDemoMeshes/table.obj ${CMAKE_CURRENT_BINARY_DIR}/appHACDDemoMeshes/table.obj
	COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/HACDDemo/Release/appHACDDemoMeshes/table.mtl ${CMAKE_CURRENT_BINARY_DIR}/appHACDDemoMeshes/table.mtl
	COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/HACDDemo/Release/appHACDDemoMeshes/table.jpg ${CMAKE_CURRENT_BINARY_DIR}/appHACDDemoMeshes/table.jpg
	COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/HACDDemo/Release/appHACDDemoMeshes/sledge.obj ${CMAKE_CURRENT_BINARY_DIR}/appHACDDemoMeshes/sledge.obj
	COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/HACDDemo/Release/appHACDDemoMeshes/sledge.mtl ${CMAKE_CURRENT_BINARY_DIR}/appHACDDemoMeshes/sledge.mtl
	COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/HACDDemo/Release/appHACDDemoMeshes/ground.jpg ${CMAKE_CURRENT_BINARY_DIR}/appHACDDemoMeshes/ground.jpg
	COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/HACDDemo/Release/appHACDDemoMeshes/MeshesFromAppGImpactTestDemo/BulletDefaultBunnyMesh.off ${CMAKE_CURRENT_BINARY_DIR}/appHACDDemoMeshes/MeshesFromAppGImpactTestDemo/BulletDefaultBunnyMesh.off
	COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/HACDDemo/Release/appHACDDemoMeshes/MeshesFromAppGImpactTestDemo/BulletDefaultTorusMesh.off ${CMAKE_CURRENT_BINARY_DIR}/appHACDDemoMeshes/MeshesFromAppGImpactTestDemo/BulletDefaultTorusMesh.off
	)
ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)



IF (INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES)
			SET_TARGET_PROPERTIES(AppHACDDemo PROPERTIES  DEBUG_POSTFIX "_Debug")
			SET_TARGET_PROPERTIES(AppHACDDemo PROPERTIES  MINSIZEREL_POSTFIX "_MinsizeRel")
			SET_TARGET_PROPERTIES(AppHACDDemo PROPERTIES  RELWITHDEBINFO_POSTFIX "_RelWithDebugInfo")
ENDIF(INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES)
