# c) Tokuo Tsuji (Kyushu univ./AIST) and Kensuke Harada (AIST)

set(libname CnoidGraspPlugin)

set(sources
  GraspPlugin.cpp
  PlanBase.cpp
  PlanInterface.cpp
  GraspController.cpp
  PlaceController.cpp
  Finger.cpp
  Arm.cpp
  readtext.cpp
  ConvexAnalysis.cpp 
  VectorMath.cpp
  ForceClosureTest.cpp
  GraspBar.cpp
  GraspPluginManager.cpp
  InterObject.cpp
  ExtCollisionPairInserter.cpp
  ExtTriOverlap.cpp
)

set(headers
	Arm.h
	Finger.h
	ConvexAnalysis.h
	ForceClosureTest.h
	GraspBar.h
	PlanBase.h
    PlanInterface.h
	GraspController.h
    PlaceController.h
	GraspSceneBody.h
	VectorMath.h
	readtext.h
	GraspPluginManager.h
	exportdef.h
	DrawUtility.h
	InterObject.h
	ExtCollisionPairInserter.h
)

if(MSVC)
  set(sources ${sources}   DrawUtility.cpp ../../../src/Collision/TriOverlap.cpp)
endif()

 include(FindPythonLibs)

if(ENABLE_OSG)
  add_cnoid_plugin(${libname} SHARED ${sources} DrawUtility.cpp ${headers})
else()
  add_cnoid_plugin(${libname} SHARED ${sources} ${headers})
endif(ENABLE_OSG)

add_definitions(-g)
set_target_properties(${libname} PROPERTIES VERSION 0.0.0 SOVERSION 0)
#set_target_properties(${libname} PROPERTIES DEFINE_SYMBOL "EXCADE_OPENHRP_MAKE_DLL")
include_directories(${PYTHON_INCLUDE_PATH})

if(UNIX)

	target_link_libraries(${libname} CnoidBodyPlugin qhull ${PYTHON_LIBRARIES} boost_regex boost_python)
    apply_common_setting_for_plugin(${libname})

elseif(MSVC)  
  source_group("Header Files" FILES ${headers})

  add_definitions(-DEXCADE_GRASPLOT_MAKE_DLL -Dqh_QHpointer_dllimport -Dqh_QHpointer)

  include(FindPythonLibs)

  target_link_libraries(${libname}
  general CnoidBodyPlugin
#    Excade${EXCADE_VERSION_SUFFIX}
#    optimized hrpUtil-${OPENHRP_VERSION} debug hrpUtil-${OPENHRP_VERSION}d
#    optimized hrpModel-${OPENHRP_VERSION} debug hrpModel-${OPENHRP_VERSION}d
#    optimized hrpCollision-${OPENHRP_VERSION} debug hrpCollision-${OPENHRP_VERSION}d
#    optimized hrpCorbaStubSkel-${OPENHRP_VERSION} debug hrpCorbaStubSkel-${OPENHRP_VERSION}d
    ${LAPACK_LIBRARIES}
	${PYTHON_LIBRARIES}
	optimized
	${QHULL_NAME}
	debug
	${QHULL_NAME}_d
#	ExcadeRobotics${EXCADE_VERSION_SUFFIX}
  )

  set_target_properties(${libname} PROPERTIES LINK_FLAGS /NODEFAULTLIB:LIBCMT )
  set_target_properties(${libname} PROPERTIES DEBUG_POSTFIX d )
  set_target_properties(${libname} PROPERTIES COMPILE_FLAGS "/wd4250 /wd4275")

  apply_common_setting_for_plugin(${libname})

  if(INSTALL_SDK)
    install(TARGETS ${libname}
      RUNTIME DESTINATION bin CONFIGURATIONS Release Debug
      LIBRARY DESTINATION lib CONFIGURATIONS Release Debug
      ARCHIVE DESTINATION lib CONFIGURATIONS Release Debug)
  else()
    #install(TARGETS ${libname}
    #  RUNTIME DESTINATION bin CONFIGURATIONS Release Debug
	#  LIBRARY DESTINATION lib CONFIGURATIONS Release Debug)
  endif()
    
  find_package(Boost 1.36.0 REQUIRED COMPONENTS python)
  install_external_libraries(${Boost_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS}
  ${Boost_REGEX_LIBRARY}   ${Boost_PYTHON_LIBRARY} )
  install(PROGRAMS "${QHULL_BIN_DIRS}/${QHULL_NAME}.dll" DESTINATION bin CONFIGURATIONS Release)
  install(PROGRAMS "${QHULL_BIN_DIRS}/${QHULL_NAME}_d.dll" DESTINATION bin CONFIGURATIONS Debug)
endif(UNIX)


if(ENABLE_INSTALL_RPATH)
  SET(CMAKE_INSTALL_RPATH "$ORIGIN/..")
endif()

if(UNIX)
  if(CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION LESS 5)
    set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/${RELATIVE_PLUGINS_INSTALL_PATH})
  else()
    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${RELATIVE_PLUGINS_INSTALL_PATH})
  endif()
endif()

# check qhull
#find_package(qhull REQUIRED)

#include_directories(${QHULL_INCLUDE_DIRS})
#link_directories(${QHULL_LIBRARY_DIRS})

if(INSTALL_SDK)
  install(FILES ${headers} DESTINATION ${CNOID_HEADER_SUBDIR}/extplugin/graspPlugin/Grasp)
endif()

    

