Skip to content

Commit d776d94

Browse files
nim65sGuilhem Saurel
authored and
Guilhem Saurel
committed
[CMake] Add BUILD_PYTHON_INTERFACE option, fix #57
1 parent d4b0e0e commit d776d94

File tree

4 files changed

+69
-57
lines changed

4 files changed

+69
-57
lines changed

CMakeLists.txt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ INCLUDE(cmake/boost.cmake)
2020
INCLUDE(cmake/eigen.cmake)
2121
INCLUDE(cmake/lapack.cmake)
2222
INCLUDE(cmake/cpack.cmake)
23+
INCLUDE(cmake/python.cmake)
2324

2425
SET(PROJECT_NAME sot-core)
2526
SET(PROJECT_DESCRIPTION "Hierarchical task solver plug-in for dynamic-graph.")
@@ -43,11 +44,20 @@ PKG_CONFIG_APPEND_LIBS("sot-core")
4344
# Search for dependencies.
4445
# Boost
4546
SET(BOOST_COMPONENTS thread filesystem program_options unit_test_framework system regex )
46-
SEARCH_FOR_BOOST()
4747
SEARCH_FOR_EIGEN()
4848

4949
ADD_REQUIRED_DEPENDENCY("dynamic-graph >= 3.0.0")
50-
ADD_REQUIRED_DEPENDENCY("dynamic-graph-python >= 3.0.0")
50+
51+
OPTION (BUILD_PYTHON_INTERFACE "Build the python binding" ON)
52+
IF(BUILD_PYTHON_INTERFACE)
53+
FINDPYTHON()
54+
STRING(REGEX REPLACE "-" "_" PY_NAME ${PROJECT_NAME})
55+
SET(${PY_NAME}_INSTALL_DIR ${PYTHON_SITELIB}/${PY_NAME})
56+
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS})
57+
ADD_REQUIRED_DEPENDENCY("dynamic-graph-python >= 3.0.0")
58+
ENDIF(BUILD_PYTHON_INTERFACE)
59+
60+
SEARCH_FOR_BOOST()
5161

5262
ADD_SUBDIRECTORY(include)
5363
ADD_SUBDIRECTORY(src)

doc/CMakeLists.txt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
#
55

66
# get the python script install path
7-
INCLUDE(../cmake/python.cmake)
8-
FINDPYTHON()
97

10-
INCLUDE(../cmake/sphinx.cmake)
11-
SPHINX_SETUP()
12-
SPHINX_FINALIZE()
13-
INSTALL (FILES
14-
pictures/feature.png
15-
pictures/task.png
16-
DESTINATION ${_PKG_CONFIG_DOXYGENDOCDIR}/pictures)
8+
IF(BUILD_PYTHON_INTERFACE)
9+
INCLUDE(../cmake/sphinx.cmake)
10+
SPHINX_SETUP()
11+
SPHINX_FINALIZE()
12+
INSTALL (FILES
13+
pictures/feature.png
14+
pictures/task.png
15+
DESTINATION ${_PKG_CONFIG_DOXYGENDOCDIR}/pictures)
16+
ENDIF(BUILD_PYTHON_INTERFACE)

src/CMakeLists.txt

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,13 @@
1313
# received a copy of the GNU Lesser General Public License along with
1414
# sot-core. If not, see <http://www.gnu.org/licenses/>.
1515

16-
INCLUDE(../cmake/python.cmake)
17-
FINDPYTHON()
18-
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
19-
2016
# Verbosity level
2117
IF (NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
2218
ADD_DEFINITIONS(-DVP_DEBUG_MODE=${CMAKE_VERBOSITY_LEVEL} -DVP_DEBUG)
2319
ENDIF (NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
2420

2521
# The main include dir
2622
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
27-
LINK_DIRECTORIES(${PYTHON_LIBRARY_DIRS})
2823

2924
#define DEBUG=2 if we're building in debug mode (what for?)
3025
IF("${CMAKE_BUILD_TYPE}" STREQUAL DEBUG)
@@ -167,7 +162,9 @@ SET_TARGET_PROPERTIES(${LIBRARY_NAME}
167162
SOVERSION ${PROJECT_VERSION})
168163

169164
PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} dynamic-graph)
170-
PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} dynamic-graph-python)
165+
IF(BUILD_PYTHON_INTERFACE)
166+
PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} dynamic-graph-python)
167+
ENDIF(BUILD_PYTHON_INTERFACE)
171168

172169
IF(UNIX)
173170
TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${CMAKE_DL_LIBS})
@@ -179,15 +176,15 @@ ENDIF(UNIX AND NOT APPLE)
179176

180177
TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${Boost_LIBRARIES})
181178

182-
INSTALL(TARGETS ${LIBRARY_NAME}
179+
INSTALL(TARGETS ${LIBRARY_NAME}
183180
DESTINATION ${CMAKE_INSTALL_LIBDIR})
184181

185182
#Plugins compilation, link, and installation
186183
#Compiles a plugin. The plugin library is ${LIBRARY_NAME}
187184
FOREACH(plugin ${plugins})
188185
#retrieve plugin name
189186
GET_FILENAME_COMPONENT(LIBRARY_NAME ${plugin} NAME)
190-
187+
191188
# only one source file per plugin
192189
ADD_LIBRARY(${LIBRARY_NAME}
193190
SHARED
@@ -212,8 +209,8 @@ FOREACH(plugin ${plugins})
212209
IF(ADDITIONAL_${LIBRARY_NAME}_LIBS)
213210
ADD_DEPENDENCIES(${LIBRARY_NAME} ${ADDITIONAL_${LIBRARY_NAME}_LIBS})
214211
TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${ADDITIONAL_${LIBRARY_NAME}_LIBS})
215-
ENDIF(ADDITIONAL_${LIBRARY_NAME}_LIBS)
216-
212+
ENDIF(ADDITIONAL_${LIBRARY_NAME}_LIBS)
213+
217214
# Linux dynamic loading library flags
218215
IF(UNIX)
219216
TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${CMAKE_DL_LIBS})
@@ -222,44 +219,47 @@ FOREACH(plugin ${plugins})
222219
PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} dynamic-graph)
223220

224221
# build python submodule
225-
STRING(REPLACE - _ PYTHON_LIBRARY_NAME ${LIBRARY_NAME})
226-
DYNAMIC_GRAPH_PYTHON_MODULE("sot/core/${PYTHON_LIBRARY_NAME}"
227-
${LIBRARY_NAME}
228-
sot-core-${PYTHON_LIBRARY_NAME}-wrap
229-
)
222+
IF(BUILD_PYTHON_INTERFACE)
223+
STRING(REPLACE - _ PYTHON_LIBRARY_NAME ${LIBRARY_NAME})
224+
DYNAMIC_GRAPH_PYTHON_MODULE("sot/core/${PYTHON_LIBRARY_NAME}"
225+
${LIBRARY_NAME}
226+
sot-core-${PYTHON_LIBRARY_NAME}-wrap
227+
)
228+
ENDIF(BUILD_PYTHON_INTERFACE)
230229
# Install plugins
231230
INSTALL(TARGETS ${LIBRARY_NAME}
232231
DESTINATION ${DYNAMIC_GRAPH_PLUGINDIR})
233232
ENDFOREACH(plugin)
234233

235-
# Bindings Python
236-
DYNAMIC_GRAPH_PYTHON_MODULE("sot/core" ${SOTCORE_LIB_NAME} wrap)
234+
IF(BUILD_PYTHON_INTERFACE)
235+
DYNAMIC_GRAPH_PYTHON_MODULE("sot/core" ${SOTCORE_LIB_NAME} wrap)
237236

238-
# Install empty __init__.py files in intermediate directories.
239-
INSTALL(FILES
240-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/__init__.py
241-
DESTINATION ${PYTHON_SITELIB}/dynamic_graph/sot
242-
)
243-
INSTALL(FILES
244-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/__init__.py
245-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/math_small_entities.py
246-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/feature_position.py
247-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/feature_position_relative.py
248-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/matrix_util.py
249-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/meta_tasks.py
250-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/meta_task_6d.py
251-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/meta_tasks_kine.py
252-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/meta_tasks_kine_relative.py
253-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/meta_task_posture.py
254-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/meta_task_visual_point.py
255-
DESTINATION ${PYTHON_SITELIB}/dynamic_graph/sot/core
256-
)
257-
INSTALL(FILES
258-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/utils/__init__.py
259-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/utils/attime.py
260-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/utils/history.py
261-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/utils/thread_interruptible_loop.py
262-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/utils/viewer_loger.py
263-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/utils/viewer_helper.py
264-
DESTINATION ${PYTHON_SITELIB}/dynamic_graph/sot/core/utils
265-
)
237+
# Install empty __init__.py files in intermediate directories.
238+
INSTALL(FILES
239+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/__init__.py
240+
DESTINATION ${PYTHON_SITELIB}/dynamic_graph/sot
241+
)
242+
INSTALL(FILES
243+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/__init__.py
244+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/math_small_entities.py
245+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/feature_position.py
246+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/feature_position_relative.py
247+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/matrix_util.py
248+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/meta_tasks.py
249+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/meta_task_6d.py
250+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/meta_tasks_kine.py
251+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/meta_tasks_kine_relative.py
252+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/meta_task_posture.py
253+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/meta_task_visual_point.py
254+
DESTINATION ${PYTHON_SITELIB}/dynamic_graph/sot/core
255+
)
256+
INSTALL(FILES
257+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/utils/__init__.py
258+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/utils/attime.py
259+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/utils/history.py
260+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/utils/thread_interruptible_loop.py
261+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/utils/viewer_loger.py
262+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/core/utils/viewer_helper.py
263+
DESTINATION ${PYTHON_SITELIB}/dynamic_graph/sot/core/utils
264+
)
265+
ENDIF(BUILD_PYTHON_INTERFACE)

unitTesting/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,9 @@ FOREACH(test ${tests})
137137
ENDIF(UNIX)
138138

139139
PKG_CONFIG_USE_DEPENDENCY(${EXECUTABLE_NAME} dynamic-graph)
140-
PKG_CONFIG_USE_DEPENDENCY(${EXECUTABLE_NAME} dynamic-graph-python)
140+
IF(BUILD_PYTHON_INTERFACE)
141+
PKG_CONFIG_USE_DEPENDENCY(${EXECUTABLE_NAME} dynamic-graph-python)
142+
ENDIF(BUILD_PYTHON_INTERFACE)
141143

142144
# Link against Boost.
143145
TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} ${Boost_LIBRARIES} ${Boost_SYSTEM_LIBRARY})

0 commit comments

Comments
 (0)