Skip to content
Snippets Groups Projects
Commit 016cea45 authored by Guilhem Saurel's avatar Guilhem Saurel
Browse files

CMake: project is not viable without python interface

parent 9cb49dd3
No related branches found
No related tags found
No related merge requests found
......@@ -10,14 +10,10 @@ SET(PROJECT_DESCRIPTION "Hierarchical task solver plug-in for dynamic-graph.")
SET(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}")
# Project options
OPTION(BUILD_PYTHON_INTERFACE "Build the python bindings" ON)
OPTION(INSTALL_PYTHON_INTERFACE_ONLY "Install *ONLY* the python bindings" OFF)
OPTION(SUFFIX_SO_VERSION "Suffix library name with its version" ON)
# Project configuration
IF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
SET(PROJECT_USE_CMAKE_EXPORT TRUE)
ENDIF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
SET(PROJECT_USE_CMAKE_EXPORT TRUE)
SET(CUSTOM_HEADER_DIR "sot/core")
SET(CXX_DISABLE_WERROR TRUE)
SET(DOXYGEN_USE_MATHJAX YES)
......@@ -38,6 +34,8 @@ ADD_PROJECT_DEPENDENCY(dynamic-graph REQUIRED)
ADD_PROJECT_DEPENDENCY(dynamic-graph-python 4.0.6 REQUIRED)
ADD_PROJECT_DEPENDENCY(pinocchio REQUIRED)
ADD_PROJECT_DEPENDENCY(Boost REQUIRED COMPONENTS regex program_options)
ADD_PROJECT_DEPENDENCY(eigenpy REQUIRED)
include(cmake/python.cmake) # TODO: overwriting eigenpy/python.cmake
IF(BUILD_TESTING)
ADD_PROJECT_DEPENDENCY(example-robot-data 3.8.0)
FIND_PACKAGE(Boost REQUIRED COMPONENTS unit_test_framework)
......@@ -49,11 +47,7 @@ IF(Boost_VERSION GREATER 107299 OR Boost_VERSION_MACRO GREATER 107299)
ADD_DEFINITIONS(-DBOOST_BIND_GLOBAL_PLACEHOLDERS)
ENDIF()
IF(BUILD_PYTHON_INTERFACE)
STRING(REGEX REPLACE "-" "_" PYTHON_DIR ${CUSTOM_HEADER_DIR})
ADD_PROJECT_DEPENDENCY(eigenpy REQUIRED)
include(cmake/python.cmake) # TODO: overwriting eigenpy/python.cmake
ENDIF(BUILD_PYTHON_INTERFACE)
STRING(REGEX REPLACE "-" "_" PYTHON_DIR ${CUSTOM_HEADER_DIR})
# Verbosity level
IF(NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
......@@ -187,9 +181,7 @@ IF(SUFFIX_SO_VERSION)
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
ENDIF(SUFFIX_SO_VERSION)
IF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib)
ENDIF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib)
ADD_SUBDIRECTORY(src)
IF(BUILD_TESTING)
......@@ -197,6 +189,4 @@ IF(BUILD_TESTING)
ENDIF(BUILD_TESTING)
ADD_SUBDIRECTORY(doc)
IF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME})
ENDIF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME})
......@@ -5,11 +5,9 @@
# get the python script install path
IF(BUILD_PYTHON_INTERFACE)
IF(INSTALL_DOCUMENTATION)
INSTALL (FILES
pictures/feature.png
pictures/task.png
DESTINATION ${_PKG_CONFIG_DOXYGENDOCDIR}/pictures)
ENDIF(INSTALL_DOCUMENTATION)
ENDIF(BUILD_PYTHON_INTERFACE)
IF(INSTALL_DOCUMENTATION)
INSTALL (FILES
pictures/feature.png
pictures/task.png
DESTINATION ${_PKG_CONFIG_DOXYGENDOCDIR}/pictures)
ENDIF(INSTALL_DOCUMENTATION)
......@@ -102,72 +102,66 @@ FOREACH(plugin ${plugins})
TARGET_LINK_LIBRARIES(${LIBRARY_NAME} PUBLIC ${PROJECT_NAME} ${${LIBRARY_NAME}_deps})
IF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
INSTALL(TARGETS ${LIBRARY_NAME} EXPORT ${TARGETS_EXPORT_NAME}
DESTINATION ${DYNAMIC_GRAPH_PLUGINDIR})
ENDIF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
IF(BUILD_PYTHON_INTERFACE)
STRING(REPLACE - _ PYTHON_LIBRARY_NAME ${LIBRARY_NAME})
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${plugin}-python-module-py.cc")
DYNAMIC_GRAPH_PYTHON_MODULE("${PYTHON_DIR}/${PYTHON_LIBRARY_NAME}"
${LIBRARY_NAME} ${PROJECT_NAME}-${PYTHON_LIBRARY_NAME}-wrap
SOURCE_PYTHON_MODULE "${CMAKE_CURRENT_SOURCE_DIR}/${plugin}-python-module-py.cc")
else()
DYNAMIC_GRAPH_PYTHON_MODULE("${PYTHON_DIR}/${PYTHON_LIBRARY_NAME}"
${LIBRARY_NAME} ${PROJECT_NAME}-${PYTHON_LIBRARY_NAME}-wrap
MODULE_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/${plugin}-python.h")
endif()
target_link_libraries(${PROJECT_NAME}-${PYTHON_LIBRARY_NAME}-wrap eigenpy::eigenpy)
ENDIF(BUILD_PYTHON_INTERFACE)
INSTALL(TARGETS ${LIBRARY_NAME} EXPORT ${TARGETS_EXPORT_NAME}
DESTINATION ${DYNAMIC_GRAPH_PLUGINDIR})
STRING(REPLACE - _ PYTHON_LIBRARY_NAME ${LIBRARY_NAME})
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${plugin}-python-module-py.cc")
DYNAMIC_GRAPH_PYTHON_MODULE("${PYTHON_DIR}/${PYTHON_LIBRARY_NAME}"
${LIBRARY_NAME} ${PROJECT_NAME}-${PYTHON_LIBRARY_NAME}-wrap
SOURCE_PYTHON_MODULE "${CMAKE_CURRENT_SOURCE_DIR}/${plugin}-python-module-py.cc")
else()
DYNAMIC_GRAPH_PYTHON_MODULE("${PYTHON_DIR}/${PYTHON_LIBRARY_NAME}"
${LIBRARY_NAME} ${PROJECT_NAME}-${PYTHON_LIBRARY_NAME}-wrap
MODULE_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/${plugin}-python.h")
endif()
target_link_libraries(${PROJECT_NAME}-${PYTHON_LIBRARY_NAME}-wrap eigenpy::eigenpy)
ENDFOREACH(plugin)
IF(BUILD_PYTHON_INTERFACE)
DYNAMIC_GRAPH_PYTHON_MODULE("${PYTHON_DIR}"
${PROJECT_NAME} ${PROJECT_NAME}-wrap
SOURCE_PYTHON_MODULE "${CMAKE_CURRENT_SOURCE_DIR}/python-module.cc")
INSTALL(FILES
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/__init__.py
DESTINATION ${PYTHON_SITELIB}/dynamic_graph/sot)
SET(${PROJECT_NAME}_PYTHON
__init__.py
math_small_entities.py
feature_position.py
feature_position_relative.py
matrix_util.py
meta_tasks.py
meta_task_6d.py
meta_tasks_kine.py
meta_tasks_kine_relative.py
meta_task_posture.py
meta_task_visual_point.py
)
DYNAMIC_GRAPH_PYTHON_MODULE("${PYTHON_DIR}"
${PROJECT_NAME} ${PROJECT_NAME}-wrap
SOURCE_PYTHON_MODULE "${CMAKE_CURRENT_SOURCE_DIR}/python-module.cc")
INSTALL(FILES
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/sot/__init__.py
DESTINATION ${PYTHON_SITELIB}/dynamic_graph/sot)
SET(${PROJECT_NAME}_PYTHON
__init__.py
math_small_entities.py
feature_position.py
feature_position_relative.py
matrix_util.py
meta_tasks.py
meta_task_6d.py
meta_tasks_kine.py
meta_tasks_kine_relative.py
meta_task_posture.py
meta_task_visual_point.py
)
FOREACH(file ${${PROJECT_NAME}_PYTHON})
PYTHON_INSTALL_ON_SITE("dynamic_graph/${PYTHON_DIR}" ${file})
ENDFOREACH(file ${${PROJECT_NAME}_PYTHON})
SET(${PY_NAME}_PYTHON_UTILS
__init__.py
attime.py
history.py
thread_interruptible_loop.py
viewer_loger.py
viewer_helper.py
)
FOREACH(file ${${PROJECT_NAME}_PYTHON})
PYTHON_INSTALL_ON_SITE("dynamic_graph/${PYTHON_DIR}" ${file})
ENDFOREACH(file ${${PROJECT_NAME}_PYTHON})
SET(${PY_NAME}_PYTHON_UTILS
__init__.py
attime.py
history.py
thread_interruptible_loop.py
viewer_loger.py
viewer_helper.py
)
FOREACH(file ${${PY_NAME}_PYTHON_UTILS})
PYTHON_INSTALL_ON_SITE("dynamic_graph/${PYTHON_DIR}/utils" ${file})
ENDFOREACH(file ${${PY_NAME}_PYTHON_UTILS})
# **********************************
# Robot_utils_sot_py PYTHON module *
# **********************************
ADD_LIBRARY(robot_utils_sot_py SHARED tools/robot-utils-py.cpp)
TARGET_LINK_LIBRARIES(robot_utils_sot_py PUBLIC ${PROJECT_NAME})
TARGET_LINK_BOOST_PYTHON(robot_utils_sot_py PRIVATE)
SET_TARGET_PROPERTIES(robot_utils_sot_py PROPERTIES PREFIX "")
INSTALL(TARGETS robot_utils_sot_py DESTINATION "${PYTHON_SITELIB}/dynamic_graph/${PYTHON_DIR}")
ENDIF(BUILD_PYTHON_INTERFACE)
FOREACH(file ${${PY_NAME}_PYTHON_UTILS})
PYTHON_INSTALL_ON_SITE("dynamic_graph/${PYTHON_DIR}/utils" ${file})
ENDFOREACH(file ${${PY_NAME}_PYTHON_UTILS})
# **********************************
# Robot_utils_sot_py PYTHON module *
# **********************************
ADD_LIBRARY(robot_utils_sot_py SHARED tools/robot-utils-py.cpp)
TARGET_LINK_LIBRARIES(robot_utils_sot_py PUBLIC ${PROJECT_NAME})
TARGET_LINK_BOOST_PYTHON(robot_utils_sot_py PRIVATE)
SET_TARGET_PROPERTIES(robot_utils_sot_py PROPERTIES PREFIX "")
INSTALL(TARGETS robot_utils_sot_py DESTINATION "${PYTHON_SITELIB}/dynamic_graph/${PYTHON_DIR}")
......@@ -134,6 +134,4 @@ FOREACH(path ${tests})
ENDIF(UNIX)
ENDFOREACH(path ${tests})
IF(BUILD_PYTHON_INTERFACE)
ADD_SUBDIRECTORY(python)
ENDIF(BUILD_PYTHON_INTERFACE)
ADD_SUBDIRECTORY(python)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment