From e3454fe99e920126723c59e983c8ff78936dc9a6 Mon Sep 17 00:00:00 2001
From: Francois Bleibel <fbleibel@gmail.com>
Date: Wed, 23 Jun 2010 18:54:31 +0900
Subject: [PATCH] Added plugins compilation and installation to CMakeFiles.
 Started separating plugins from sot-core.

---
 CMakeLists.txt     | 11 ------
 src/CMakeLists.txt | 92 +++++++++++++++++++++++++++++++++++++++++-----
 2 files changed, 83 insertions(+), 20 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 59cbf88f..0b295e9e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -78,17 +78,6 @@ ELSE(PACKAGE_REQUIREMENTS STREQUAL "")
   SET(PACKAGE_REQUIREMENTS "${PACKAGE_REQUIREMENTS}, ${MATRIXABSTRACTLAYER_REQUIRED}")
 ENDIF(PACKAGE_REQUIREMENTS STREQUAL "")
 
-INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
-LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
-
-# --- BOOST NUMERIC BINDINGS-------------------------------------
-IF ("${Boost_VERSION}" STRLESS "104000")
-  INCLUDE(${CMAKE_MODULE_PATH}/FindBoostNumericBindings.cmake)
-  MESSAGE(STATUS "BoostNumericBindings_INCLUDE_DIR=${BoostNumericBindings_INCLUDE_DIR}")
-  INCLUDE_DIRECTORIES(${BoostNumericBindings_INCLUDE_DIR})
-  LIST(APPEND ${PROJECT_NAME}_CFLAGS -I${BoostNumericBindings_INCLUDE_DIR})
-ENDIF("${Boost_VERSION}" STRLESS "104000")
-
 #
 #  Dependency to package dynamic-graph
 #
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index aa9c8210..33263c24 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -2,11 +2,16 @@
 #  Copyright 
 # 
 
-SET(LIBRARY_NAME ${PROJECT_NAME})
+#This project will create many shared libraries as plugins, listed here
+SET(plugins 
+	sot/sot-qr
+	sot/weighted-sot
+	sot/sot-h
+	sot/sot
+)
 
-#Warning: compile order is VERY important (if you get a segfault, it's probably
-#the reason
-SET(${LIBRARY_NAME}_SOURCES
+#sot-core library sources
+SET(${PROJECT_NAME}_SOURCES
 	debug/debug.cpp
 	debug/contiifstream.cpp
 	
@@ -75,6 +80,7 @@ SET(${LIBRARY_NAME}_SOURCES
 	factory/command/import.cpp
 )
 
+SET(LIBRARY_NAME ${PROJECT_NAME})
 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
 
 ADD_DEFINITIONS(-DDEBUG=2)
@@ -94,10 +100,10 @@ SET_TARGET_PROPERTIES(${LIBRARY_NAME}
   SOVERSION ${PROJECT_VERSION}
   INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib)
 
-SET_TARGET_PROPERTIES(${PROJECT_NAME_LIB}
+SET_TARGET_PROPERTIES(${LIBRARY_NAME}
   PROPERTIES
-  COMPILE_FLAGS ${${PROJECT_NAME}_src_CXXFLAGS}
-  LINK_FLAGS ${${PROJECT_NAME}_src_LDFLAGS}
+  COMPILE_FLAGS "${${PROJECT_NAME}_src_CXXFLAGS}"
+  LINK_FLAGS "${${PROJECT_NAME}_src_LDFLAGS}"
 )
 
 # Add lapack compilation flags and link to library libLapack.so
@@ -130,10 +136,10 @@ ENDIF(WIN32)
 
 # Linux dynamic loading library flags
 IF(UNIX)
-  SET(${PROJECT_NAME}_src_LDFLAGS "${${PROJECT_NAME}_src_LDFLAGS} -ldl")
+  TARGET_LINK_LIBRARIES(${LIBRARY_NAME} dl)
 ENDIF(UNIX)
 
-
+MESSAGE(STATUS "ldflags ${${PROJECT_NAME}_src_LDFLAGS}" )
 SET_TARGET_PROPERTIES(${LIBRARY_NAME}
   PROPERTIES
   LINK_FLAGS "${${PROJECT_NAME}_src_LDFLAGS}"
@@ -141,3 +147,71 @@ SET_TARGET_PROPERTIES(${LIBRARY_NAME}
 
 INSTALL(TARGETS ${LIBRARY_NAME}
   DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
+
+#Plugins compilation, link, and installation
+FOREACH(plugin ${plugins})
+	#retrieve plugin name
+	GET_FILENAME_COMPONENT(LIBRARY_NAME ${plugin} NAME)
+	
+	INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+	
+	ADD_DEFINITIONS(-DDEBUG=2)
+	
+	# provide path to library libMatrixAbstractLayer.so
+	LINK_DIRECTORIES(${MATRIXABSTRACTLAYER_LIBRARY_DIRS})
+	
+	# provide path to library libdynamic-graph.so
+	LINK_DIRECTORIES(${DYNAMIC_GRAPH_LIBRARY_DIRS})
+	
+	# only one source file per plugin
+	ADD_LIBRARY(${LIBRARY_NAME} 
+	  SHARED
+	  ${plugin}.cpp)
+	
+	SET_TARGET_PROPERTIES(${LIBRARY_NAME} 
+	  PROPERTIES 
+	  SOVERSION ${PROJECT_VERSION}
+	  INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib/plugin)
+	
+	# Add lapack compilation flags and link to library libLapack.so
+	ADD_DEFINITIONS(${LAPACK_CFLAGS})
+	TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${LAPACK_LIBRARIES})
+		
+	# Add MatrixAbstractLayer compilation flags and link to library libMatrixAbstractLayer.so
+	ADD_DEFINITIONS(${MATRIXABSTRACTLAYER_CFLAGS})
+	IF(UNIX)
+	TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${MATRIXABSTRACTLAYER_LIBRARIES})
+	ENDIF(UNIX)
+	
+	IF(WIN32)
+	foreach(dlink ${MATRIXABSTRACTLAYER_LDFLAGS})
+		SET ( ${PROJECT_NAME}_src_LDFLAGS "${${PROJECT_NAME}_src_LDFLAGS}  ${dlink}")
+	endforeach(dlink)
+	ENDIF(WIN32)
+	
+	# Add dynamic-graph compilation flags and link to library libdynamic-graph.so
+	ADD_DEFINITIONS(${DYNAMIC_GRAPH_CFLAGS})
+	IF(UNIX)
+	TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${DYNAMIC_GRAPH_LIBRARIES})
+	ENDIF(UNIX)
+	
+	IF(WIN32)
+	foreach(dlink ${DYNAMIC_GRAPH_LDFLAGS})
+		SET ( ${PROJECT_NAME}_src_LDFLAGS "${${PROJECT_NAME}_src_LDFLAGS}  ${dlink}")
+	endforeach(dlink)
+	ENDIF(WIN32)
+	
+	# Linux dynamic loading library flags
+	IF(UNIX)
+		TARGET_LINK_LIBRARIES(${LIBRARY_NAME} dl)
+	ENDIF(UNIX)
+	
+	SET_TARGET_PROPERTIES(${LIBRARY_NAME}
+	  PROPERTIES
+	  COMPILE_FLAGS "${${PROJECT_NAME}_src_CXXFLAGS}"
+	  LINK_FLAGS "${${PROJECT_NAME}_src_LDFLAGS}"
+	)
+	
+	INSTALL(TARGETS ${LIBRARY_NAME}
+	  DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/plugin)
+ENDFOREACH(plugin)
-- 
GitLab