Skip to content
Snippets Groups Projects
Commit 4a218cf5 authored by Nicolas Mansard's avatar Nicolas Mansard Committed by Valenza Florian
Browse files

Added conditionnal compilation of urdf and python. Added precompilation of pyc file.

parent 2f34210b
No related branches found
No related tags found
No related merge requests found
...@@ -27,18 +27,16 @@ ELSE(WIN32) ...@@ -27,18 +27,16 @@ ELSE(WIN32)
SET(LINK create_symlink) SET(LINK create_symlink)
ENDIF(WIN32) ENDIF(WIN32)
# --- OPTIONS ----------------------------------------
OPTION (BUILD_BENCHMARK "Build the benchmarks" OFF)
# ---------------------------------------------------- # ----------------------------------------------------
# --- DEPENDANCIES ----------------------------------- # --- DEPENDANCIES -----------------------------------
# ---------------------------------------------------- # ----------------------------------------------------
ADD_REQUIRED_DEPENDENCY("eigenpy >= v1.2.0") ADD_REQUIRED_DEPENDENCY("eigen3 >= 3.0.5")
ADD_REQUIRED_DEPENDENCY("urdfdom >= v0.3.0") ADD_OPTIONAL_DEPENDENCY("eigenpy >= 1.2.0")
ADD_REQUIRED_DEPENDENCY("eigen3 >= v3.0.5") ADD_OPTIONAL_DEPENDENCY("metapod >= 1.0.7")
ADD_OPTIONAL_DEPENDENCY("urdfdom >= 0.2.10")
# ----------------------------------------------------
# --- BENCHMARKS -------------------------------------
# ----------------------------------------------------
OPTION (BUILD_BENCHMARK "Build the benchmarks" OFF)
# ---------------------------------------------------- # ----------------------------------------------------
# --- INCLUDE ---------------------------------------- # --- INCLUDE ----------------------------------------
...@@ -66,7 +64,6 @@ SET(HEADERS ...@@ -66,7 +64,6 @@ SET(HEADERS
multibody/joint/joint-generic.hpp multibody/joint/joint-generic.hpp
multibody/model.hpp multibody/model.hpp
multibody/visitor.hpp multibody/visitor.hpp
multibody/parser/urdf.hpp
multibody/parser/sample-models.hpp multibody/parser/sample-models.hpp
algorithm/rnea.hpp algorithm/rnea.hpp
algorithm/crba.hpp algorithm/crba.hpp
...@@ -87,6 +84,10 @@ SET(HEADERS ...@@ -87,6 +84,10 @@ SET(HEADERS
python/parsers.hpp python/parsers.hpp
) )
IF(URDFDOM_FOUND)
LIST(APPEND HEADERS multibody/parser/urdf.hpp)
ENDIF(URDFDOM_FOUND)
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio") MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/math") MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/math")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/spatial") MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/spatial")
...@@ -111,60 +112,68 @@ ENDFOREACH(header) ...@@ -111,60 +112,68 @@ ENDFOREACH(header)
# ---------------------------------------------------- # ----------------------------------------------------
# --- PYTHON ----------------------------------------- # --- PYTHON -----------------------------------------
# ---------------------------------------------------- # ----------------------------------------------------
FINDPYTHON()
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}")
# --- COMPILE WRAPPER
SET(PYWRAP ${PROJECT_NAME}_pywrap)
ADD_LIBRARY(${PYWRAP} SHARED src/python/module.cpp src/python/python.cpp)
PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} eigenpy)
PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} urdfdom)
TARGET_LINK_LIBRARIES(${PYWRAP} ${Boost_LIBRARIES} eigenpy)
SET_TARGET_PROPERTIES(${PYWRAP} PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/python/${PROJECT_NAME}")
INSTALL(FILES
"${CMAKE_BINARY_DIR}/lib/python/${PROJECT_NAME}/lib${PYWRAP}.so"
DESTINATION ${PYTHON_SITELIB}/${PROJECT_NAME})
# --- INSTALL SCRIPTS
SET(PYTHON_FILES
python/__init__.py
python/utils.py
python/robot_wrapper.py
python/rpy.py
python/explog.py
)
FOREACH(python ${PYTHON_FILES})
GET_FILENAME_COMPONENT(pythonFile ${python} NAME)
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E ${LINK}
${${PROJECT_NAME}_SOURCE_DIR}/src/${python}
${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile})
# Tag pyc file as generated.
SET_SOURCE_FILES_PROPERTIES(
"${CMAKE_CURRENT_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c"
PROPERTIES GENERATED TRUE)
EXECUTE_PROCESS(COMMAND
${PYTHON_EXECUTABLE} -m py_compile
${CMAKE_CURRENT_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile} )
# Clean generated files.
SET_PROPERTY(
DIRECTORY APPEND PROPERTY
ADDITIONAL_MAKE_CLEAN_FILES
"${CMAKE_CURRENT_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c")
IF(EIGENPY_FOUND)
FINDPYTHON()
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}")
# --- COMPILE WRAPPER
SET(PYWRAP ${PROJECT_NAME}_pywrap)
ADD_LIBRARY(${PYWRAP} SHARED src/python/module.cpp src/python/python.cpp)
PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} eigenpy)
IF(URDFDOM_FOUND)
PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} urdfdom)
ENDIF(URDFDOM_FOUND)
TARGET_LINK_LIBRARIES(${PYWRAP} ${Boost_LIBRARIES} eigenpy)
SET_TARGET_PROPERTIES(${PYWRAP} PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/python/${PROJECT_NAME}")
INSTALL(FILES INSTALL(FILES
"${CMAKE_CURRENT_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}" "${CMAKE_BINARY_DIR}/lib/python/${PROJECT_NAME}/lib${PYWRAP}.so"
"${CMAKE_CURRENT_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c"
DESTINATION ${PYTHON_SITELIB}/${PROJECT_NAME}) DESTINATION ${PYTHON_SITELIB}/${PROJECT_NAME})
ENDFOREACH(python)
# --- INSTALL SCRIPTS
SET(PYTHON_FILES
python/__init__.py
python/utils.py
python/robot_wrapper.py
python/rpy.py
python/explog.py
)
FOREACH(python ${PYTHON_FILES})
GET_FILENAME_COMPONENT(pythonFile ${python} NAME)
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E ${LINK}
${${PROJECT_NAME}_SOURCE_DIR}/src/${python}
${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile})
# Tag pyc file as generated.
SET_SOURCE_FILES_PROPERTIES(
"${CMAKE_CURRENT_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c"
PROPERTIES GENERATED TRUE)
EXECUTE_PROCESS(COMMAND
${PYTHON_EXECUTABLE} -m py_compile
${CMAKE_CURRENT_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile} )
# Clean generated files.
SET_PROPERTY(
DIRECTORY APPEND PROPERTY
ADDITIONAL_MAKE_CLEAN_FILES
"${CMAKE_CURRENT_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c")
INSTALL(FILES
"${CMAKE_CURRENT_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}"
"${CMAKE_CURRENT_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c"
DESTINATION ${PYTHON_SITELIB}/${PROJECT_NAME})
ENDFOREACH(python)
ENDIF(EIGENPY_FOUND)
# --- EXECUTABLES --------------------------------------------------------------
# --- EXECUTABLES --------------------------------------------------------------
# --- EXECUTABLES --------------------------------------------------------------
ADD_SUBDIRECTORY(unittest) ADD_SUBDIRECTORY(unittest)
IF (BUILD_BENCHMARK) IF (BUILD_BENCHMARK)
ADD_SUBDIRECTORY (benchmark) ADD_SUBDIRECTORY (benchmark)
ENDIF (BUILD_BENCHMARK) ENDIF (BUILD_BENCHMARK)
SETUP_PROJECT_FINALIZE() SETUP_PROJECT_FINALIZE()
......
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