Skip to content

Commit 016cea4

Browse files
committed
CMake: project is not viable without python interface
1 parent 9cb49dd commit 016cea4

File tree

4 files changed

+72
-92
lines changed

4 files changed

+72
-92
lines changed

CMakeLists.txt

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,10 @@ SET(PROJECT_DESCRIPTION "Hierarchical task solver plug-in for dynamic-graph.")
1010
SET(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}")
1111

1212
# Project options
13-
OPTION(BUILD_PYTHON_INTERFACE "Build the python bindings" ON)
14-
OPTION(INSTALL_PYTHON_INTERFACE_ONLY "Install *ONLY* the python bindings" OFF)
1513
OPTION(SUFFIX_SO_VERSION "Suffix library name with its version" ON)
1614

1715
# Project configuration
18-
IF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
19-
SET(PROJECT_USE_CMAKE_EXPORT TRUE)
20-
ENDIF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
16+
SET(PROJECT_USE_CMAKE_EXPORT TRUE)
2117
SET(CUSTOM_HEADER_DIR "sot/core")
2218
SET(CXX_DISABLE_WERROR TRUE)
2319
SET(DOXYGEN_USE_MATHJAX YES)
@@ -38,6 +34,8 @@ ADD_PROJECT_DEPENDENCY(dynamic-graph REQUIRED)
3834
ADD_PROJECT_DEPENDENCY(dynamic-graph-python 4.0.6 REQUIRED)
3935
ADD_PROJECT_DEPENDENCY(pinocchio REQUIRED)
4036
ADD_PROJECT_DEPENDENCY(Boost REQUIRED COMPONENTS regex program_options)
37+
ADD_PROJECT_DEPENDENCY(eigenpy REQUIRED)
38+
include(cmake/python.cmake) # TODO: overwriting eigenpy/python.cmake
4139
IF(BUILD_TESTING)
4240
ADD_PROJECT_DEPENDENCY(example-robot-data 3.8.0)
4341
FIND_PACKAGE(Boost REQUIRED COMPONENTS unit_test_framework)
@@ -49,11 +47,7 @@ IF(Boost_VERSION GREATER 107299 OR Boost_VERSION_MACRO GREATER 107299)
4947
ADD_DEFINITIONS(-DBOOST_BIND_GLOBAL_PLACEHOLDERS)
5048
ENDIF()
5149

52-
IF(BUILD_PYTHON_INTERFACE)
53-
STRING(REGEX REPLACE "-" "_" PYTHON_DIR ${CUSTOM_HEADER_DIR})
54-
ADD_PROJECT_DEPENDENCY(eigenpy REQUIRED)
55-
include(cmake/python.cmake) # TODO: overwriting eigenpy/python.cmake
56-
ENDIF(BUILD_PYTHON_INTERFACE)
50+
STRING(REGEX REPLACE "-" "_" PYTHON_DIR ${CUSTOM_HEADER_DIR})
5751

5852
# Verbosity level
5953
IF(NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
@@ -187,16 +181,12 @@ IF(SUFFIX_SO_VERSION)
187181
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
188182
ENDIF(SUFFIX_SO_VERSION)
189183

190-
IF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
191-
INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib)
192-
ENDIF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
184+
INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib)
193185

194186
ADD_SUBDIRECTORY(src)
195187
IF(BUILD_TESTING)
196188
ADD_SUBDIRECTORY(tests)
197189
ENDIF(BUILD_TESTING)
198190
ADD_SUBDIRECTORY(doc)
199191

200-
IF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
201-
INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME})
202-
ENDIF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
192+
INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME})

doc/CMakeLists.txt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@
55

66
# get the python script install path
77

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

src/CMakeLists.txt

Lines changed: 59 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -102,72 +102,66 @@ FOREACH(plugin ${plugins})
102102

103103
TARGET_LINK_LIBRARIES(${LIBRARY_NAME} PUBLIC ${PROJECT_NAME} ${${LIBRARY_NAME}_deps})
104104

105-
IF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
106-
INSTALL(TARGETS ${LIBRARY_NAME} EXPORT ${TARGETS_EXPORT_NAME}
107-
DESTINATION ${DYNAMIC_GRAPH_PLUGINDIR})
108-
ENDIF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
109-
110-
IF(BUILD_PYTHON_INTERFACE)
111-
STRING(REPLACE - _ PYTHON_LIBRARY_NAME ${LIBRARY_NAME})
112-
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${plugin}-python-module-py.cc")
113-
DYNAMIC_GRAPH_PYTHON_MODULE("${PYTHON_DIR}/${PYTHON_LIBRARY_NAME}"
114-
${LIBRARY_NAME} ${PROJECT_NAME}-${PYTHON_LIBRARY_NAME}-wrap
115-
SOURCE_PYTHON_MODULE "${CMAKE_CURRENT_SOURCE_DIR}/${plugin}-python-module-py.cc")
116-
else()
117-
DYNAMIC_GRAPH_PYTHON_MODULE("${PYTHON_DIR}/${PYTHON_LIBRARY_NAME}"
118-
${LIBRARY_NAME} ${PROJECT_NAME}-${PYTHON_LIBRARY_NAME}-wrap
119-
MODULE_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/${plugin}-python.h")
120-
endif()
121-
target_link_libraries(${PROJECT_NAME}-${PYTHON_LIBRARY_NAME}-wrap eigenpy::eigenpy)
122-
ENDIF(BUILD_PYTHON_INTERFACE)
105+
INSTALL(TARGETS ${LIBRARY_NAME} EXPORT ${TARGETS_EXPORT_NAME}
106+
DESTINATION ${DYNAMIC_GRAPH_PLUGINDIR})
107+
108+
STRING(REPLACE - _ PYTHON_LIBRARY_NAME ${LIBRARY_NAME})
109+
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${plugin}-python-module-py.cc")
110+
DYNAMIC_GRAPH_PYTHON_MODULE("${PYTHON_DIR}/${PYTHON_LIBRARY_NAME}"
111+
${LIBRARY_NAME} ${PROJECT_NAME}-${PYTHON_LIBRARY_NAME}-wrap
112+
SOURCE_PYTHON_MODULE "${CMAKE_CURRENT_SOURCE_DIR}/${plugin}-python-module-py.cc")
113+
else()
114+
DYNAMIC_GRAPH_PYTHON_MODULE("${PYTHON_DIR}/${PYTHON_LIBRARY_NAME}"
115+
${LIBRARY_NAME} ${PROJECT_NAME}-${PYTHON_LIBRARY_NAME}-wrap
116+
MODULE_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/${plugin}-python.h")
117+
endif()
118+
target_link_libraries(${PROJECT_NAME}-${PYTHON_LIBRARY_NAME}-wrap eigenpy::eigenpy)
123119
ENDFOREACH(plugin)
124120

125-
IF(BUILD_PYTHON_INTERFACE)
126-
DYNAMIC_GRAPH_PYTHON_MODULE("${PYTHON_DIR}"
127-
${PROJECT_NAME} ${PROJECT_NAME}-wrap
128-
SOURCE_PYTHON_MODULE "${CMAKE_CURRENT_SOURCE_DIR}/python-module.cc")
129-
130-
INSTALL(FILES
131-
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/__init__.py
132-
DESTINATION ${PYTHON_SITELIB}/dynamic_graph/sot)
133-
134-
SET(${PROJECT_NAME}_PYTHON
135-
__init__.py
136-
math_small_entities.py
137-
feature_position.py
138-
feature_position_relative.py
139-
matrix_util.py
140-
meta_tasks.py
141-
meta_task_6d.py
142-
meta_tasks_kine.py
143-
meta_tasks_kine_relative.py
144-
meta_task_posture.py
145-
meta_task_visual_point.py
146-
)
121+
DYNAMIC_GRAPH_PYTHON_MODULE("${PYTHON_DIR}"
122+
${PROJECT_NAME} ${PROJECT_NAME}-wrap
123+
SOURCE_PYTHON_MODULE "${CMAKE_CURRENT_SOURCE_DIR}/python-module.cc")
124+
125+
INSTALL(FILES
126+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/__init__.py
127+
DESTINATION ${PYTHON_SITELIB}/dynamic_graph/sot)
128+
129+
SET(${PROJECT_NAME}_PYTHON
130+
__init__.py
131+
math_small_entities.py
132+
feature_position.py
133+
feature_position_relative.py
134+
matrix_util.py
135+
meta_tasks.py
136+
meta_task_6d.py
137+
meta_tasks_kine.py
138+
meta_tasks_kine_relative.py
139+
meta_task_posture.py
140+
meta_task_visual_point.py
141+
)
147142

148-
FOREACH(file ${${PROJECT_NAME}_PYTHON})
149-
PYTHON_INSTALL_ON_SITE("dynamic_graph/${PYTHON_DIR}" ${file})
150-
ENDFOREACH(file ${${PROJECT_NAME}_PYTHON})
151-
152-
SET(${PY_NAME}_PYTHON_UTILS
153-
__init__.py
154-
attime.py
155-
history.py
156-
thread_interruptible_loop.py
157-
viewer_loger.py
158-
viewer_helper.py
159-
)
143+
FOREACH(file ${${PROJECT_NAME}_PYTHON})
144+
PYTHON_INSTALL_ON_SITE("dynamic_graph/${PYTHON_DIR}" ${file})
145+
ENDFOREACH(file ${${PROJECT_NAME}_PYTHON})
146+
147+
SET(${PY_NAME}_PYTHON_UTILS
148+
__init__.py
149+
attime.py
150+
history.py
151+
thread_interruptible_loop.py
152+
viewer_loger.py
153+
viewer_helper.py
154+
)
160155

161-
FOREACH(file ${${PY_NAME}_PYTHON_UTILS})
162-
PYTHON_INSTALL_ON_SITE("dynamic_graph/${PYTHON_DIR}/utils" ${file})
163-
ENDFOREACH(file ${${PY_NAME}_PYTHON_UTILS})
164-
165-
# **********************************
166-
# Robot_utils_sot_py PYTHON module *
167-
# **********************************
168-
ADD_LIBRARY(robot_utils_sot_py SHARED tools/robot-utils-py.cpp)
169-
TARGET_LINK_LIBRARIES(robot_utils_sot_py PUBLIC ${PROJECT_NAME})
170-
TARGET_LINK_BOOST_PYTHON(robot_utils_sot_py PRIVATE)
171-
SET_TARGET_PROPERTIES(robot_utils_sot_py PROPERTIES PREFIX "")
172-
INSTALL(TARGETS robot_utils_sot_py DESTINATION "${PYTHON_SITELIB}/dynamic_graph/${PYTHON_DIR}")
173-
ENDIF(BUILD_PYTHON_INTERFACE)
156+
FOREACH(file ${${PY_NAME}_PYTHON_UTILS})
157+
PYTHON_INSTALL_ON_SITE("dynamic_graph/${PYTHON_DIR}/utils" ${file})
158+
ENDFOREACH(file ${${PY_NAME}_PYTHON_UTILS})
159+
160+
# **********************************
161+
# Robot_utils_sot_py PYTHON module *
162+
# **********************************
163+
ADD_LIBRARY(robot_utils_sot_py SHARED tools/robot-utils-py.cpp)
164+
TARGET_LINK_LIBRARIES(robot_utils_sot_py PUBLIC ${PROJECT_NAME})
165+
TARGET_LINK_BOOST_PYTHON(robot_utils_sot_py PRIVATE)
166+
SET_TARGET_PROPERTIES(robot_utils_sot_py PROPERTIES PREFIX "")
167+
INSTALL(TARGETS robot_utils_sot_py DESTINATION "${PYTHON_SITELIB}/dynamic_graph/${PYTHON_DIR}")

tests/CMakeLists.txt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,4 @@ FOREACH(path ${tests})
134134
ENDIF(UNIX)
135135
ENDFOREACH(path ${tests})
136136

137-
IF(BUILD_PYTHON_INTERFACE)
138-
ADD_SUBDIRECTORY(python)
139-
ENDIF(BUILD_PYTHON_INTERFACE)
137+
ADD_SUBDIRECTORY(python)

0 commit comments

Comments
 (0)