From 66411afe0a28680d2f817d868341381d5db499e5 Mon Sep 17 00:00:00 2001 From: jcarpent <jcarpent@laas.fr> Date: Tue, 27 Sep 2016 10:18:32 +0200 Subject: [PATCH] [CMake] Move conditionnal to parent directory --- bindings/CMakeLists.txt | 4 +- bindings/python/CMakeLists.txt | 282 ++++++++++++++++----------------- 2 files changed, 143 insertions(+), 143 deletions(-) diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt index 5d9271606..30ad08b96 100644 --- a/bindings/CMakeLists.txt +++ b/bindings/CMakeLists.txt @@ -14,4 +14,6 @@ # pinocchio If not, see # <http://www.gnu.org/licenses/>. -ADD_SUBDIRECTORY(python) +IF(BUILD_PYTHON_INTERFACE) + ADD_SUBDIRECTORY(python) +ENDIF(BUILD_PYTHON_INTERFACE) diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt index 91db2d086..31013c2b5 100644 --- a/bindings/python/CMakeLists.txt +++ b/bindings/python/CMakeLists.txt @@ -51,149 +51,147 @@ MACRO(SYMLINK_AND_INSTALL_HEADERS HEADERS SUBPATH) ENDMACRO(SYMLINK_AND_INSTALL_HEADERS HEADERS SUBPATH) # --- LIBRARY --- # -IF(BUILD_PYTHON_INTERFACE) - - SET(${PROJECT_NAME}_PYTHON_HEADERS - eigen_container.hpp - handler.hpp - python.hpp - se3.hpp - force.hpp - motion.hpp - inertia.hpp - joints-models.hpp - joints-variant.hpp - joint.hpp - joint-derived.hpp - frame.hpp - model.hpp - data.hpp - algorithm/algorithms.hpp - parsers.hpp - explog.hpp - geometry-object.hpp - geometry-model.hpp - geometry-data.hpp - ) - - SET(${PROJECT_NAME}_PARSER_PYTHON_HEADERS - parsers/python.hpp - ) - - SET(${PROJECT_NAME}_PARSER_PYTHON_SOURCES - parsers/python/model.cpp - ) - - SET(${PROJECT_NAME}_PYTHON_SOURCES - module.cpp - expose-SE3.cpp - expose-motion.cpp - expose-force.cpp - expose-inertia.cpp - expose-explog.cpp - expose-joints.cpp - expose-frame.cpp - expose-model.cpp - expose-data.cpp - expose-parsers.cpp - algorithm/expose-algorithms.cpp - algorithm/expose-com.cpp - algorithm/expose-kinematics.cpp - algorithm/expose-dynamics.cpp - algorithm/expose-crba.cpp - algorithm/expose-rnea.cpp - algorithm/expose-aba.cpp - algorithm/expose-jacobian.cpp - algorithm/expose-joints.cpp - algorithm/expose-energy.cpp - algorithm/expose-frames.cpp - algorithm/expose-cat.cpp - ) - - LIST(APPEND ${PROJECT_NAME}_PYTHON_HEADERS - geometry-object.hpp - geometry-model.hpp - geometry-data.hpp - ) - - LIST(APPEND ${PROJECT_NAME}_PYTHON_SOURCES - expose-geometry.cpp - algorithm/expose-geometry.cpp - ) - - LIST(APPEND HEADERS ${${PROJECT_NAME}_PYTHON_HEADERS}) - LIST(REMOVE_DUPLICATES HEADERS) - - # Headers of the python binding - MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/bindings/python") - MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/bindings/python/algorithm") - SYMLINK_AND_INSTALL_HEADERS("${${PROJECT_NAME}_PYTHON_HEADERS}" "bindings/python") - - # Headers of the python parser - MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/parsers/python") - SYMLINK_AND_INSTALL_HEADERS("${${PROJECT_NAME}_PARSER_PYTHON_HEADERS}" "") - - # --- COMPILE WRAPPER - MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}") - SET(${PYWRAP}_SOURCES ${${PROJECT_NAME}_PYTHON_SOURCES} ${${PROJECT_NAME}_PARSER_PYTHON_SOURCES}) - SET(${PYWRAP}_HEADERS ${${PROJECT_NAME}_PYTHON_HEADERS} ${${PROJECT_NAME}_PARSER_PYTHON_HEADERS}) - - ADD_LIBRARY(${PYWRAP} SHARED ${${PYWRAP}_SOURCES} ${${PYWRAP}_HEADERS}) - ADD_HEADER_GROUP(${PYWRAP}_PYTHON_HEADERS) - ADD_SOURCE_GROUP(${PYWRAP}_PYTHON_SOURCES) - PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} eigenpy) - - TARGET_LINK_LIBRARIES(${PYWRAP} ${PROJECT_NAME}) - TARGET_LINK_BOOST_PYTHON(${PYWRAP}) - - IF(APPLE) - # We need to change the extension for python bindings - SET_TARGET_PROPERTIES(${PYWRAP} PROPERTIES SUFFIX ".so") - ENDIF(APPLE) - - SET_TARGET_PROPERTIES(${PYWRAP} PROPERTIES - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/python/${PROJECT_NAME}") +SET(${PROJECT_NAME}_PYTHON_HEADERS + eigen_container.hpp + handler.hpp + python.hpp + se3.hpp + force.hpp + motion.hpp + inertia.hpp + joints-models.hpp + joints-variant.hpp + joint.hpp + joint-derived.hpp + frame.hpp + model.hpp + data.hpp + algorithm/algorithms.hpp + parsers.hpp + explog.hpp + geometry-object.hpp + geometry-model.hpp + geometry-data.hpp + ) + +SET(${PROJECT_NAME}_PARSER_PYTHON_HEADERS + parsers/python.hpp + ) + +SET(${PROJECT_NAME}_PARSER_PYTHON_SOURCES + parsers/python/model.cpp + ) + +SET(${PROJECT_NAME}_PYTHON_SOURCES + module.cpp + expose-SE3.cpp + expose-motion.cpp + expose-force.cpp + expose-inertia.cpp + expose-explog.cpp + expose-joints.cpp + expose-frame.cpp + expose-model.cpp + expose-data.cpp + expose-parsers.cpp + algorithm/expose-algorithms.cpp + algorithm/expose-com.cpp + algorithm/expose-kinematics.cpp + algorithm/expose-dynamics.cpp + algorithm/expose-crba.cpp + algorithm/expose-rnea.cpp + algorithm/expose-aba.cpp + algorithm/expose-jacobian.cpp + algorithm/expose-joints.cpp + algorithm/expose-energy.cpp + algorithm/expose-frames.cpp + algorithm/expose-cat.cpp + ) + +LIST(APPEND ${PROJECT_NAME}_PYTHON_HEADERS + geometry-object.hpp + geometry-model.hpp + geometry-data.hpp + ) + +LIST(APPEND ${PROJECT_NAME}_PYTHON_SOURCES + expose-geometry.cpp + algorithm/expose-geometry.cpp + ) + +LIST(APPEND HEADERS ${${PROJECT_NAME}_PYTHON_HEADERS}) +LIST(REMOVE_DUPLICATES HEADERS) + +# Headers of the python binding +MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/bindings/python") +MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/bindings/python/algorithm") +SYMLINK_AND_INSTALL_HEADERS("${${PROJECT_NAME}_PYTHON_HEADERS}" "bindings/python") + +# Headers of the python parser +MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/parsers/python") +SYMLINK_AND_INSTALL_HEADERS("${${PROJECT_NAME}_PARSER_PYTHON_HEADERS}" "") + +# --- COMPILE WRAPPER +MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}") +SET(${PYWRAP}_SOURCES ${${PROJECT_NAME}_PYTHON_SOURCES} ${${PROJECT_NAME}_PARSER_PYTHON_SOURCES}) +SET(${PYWRAP}_HEADERS ${${PROJECT_NAME}_PYTHON_HEADERS} ${${PROJECT_NAME}_PARSER_PYTHON_HEADERS}) + +ADD_LIBRARY(${PYWRAP} SHARED ${${PYWRAP}_SOURCES} ${${PYWRAP}_HEADERS}) +ADD_HEADER_GROUP(${PYWRAP}_PYTHON_HEADERS) +ADD_SOURCE_GROUP(${PYWRAP}_PYTHON_SOURCES) +PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} eigenpy) + +TARGET_LINK_LIBRARIES(${PYWRAP} ${PROJECT_NAME}) +TARGET_LINK_BOOST_PYTHON(${PYWRAP}) + +IF(APPLE) + # We need to change the extension for python bindings + SET_TARGET_PROPERTIES(${PYWRAP} PROPERTIES SUFFIX ".so") +ENDIF(APPLE) + +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 + __init__.py + utils.py + robot_wrapper.py + romeo_wrapper.py + rpy.py + explog.py + ) + +FOREACH(python ${PYTHON_FILES}) + GET_FILENAME_COMPONENT(pythonFile ${python} NAME) + EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E ${LINK} + ${${PROJECT_NAME}_SOURCE_DIR}/bindings/python/${python} + ${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}) + + # Tag pyc file as generated. + SET_SOURCE_FILES_PROPERTIES( + "${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c" + PROPERTIES GENERATED TRUE) + + EXECUTE_PROCESS(COMMAND + ${PYTHON_EXECUTABLE} -m py_compile + ${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}) + + # Clean generated files. + SET_PROPERTY( + DIRECTORY APPEND PROPERTY + ADDITIONAL_MAKE_CLEAN_FILES + "${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c") + INSTALL(FILES - "${CMAKE_BINARY_DIR}/lib/python/${PROJECT_NAME}/lib${PYWRAP}.so" + "${${PROJECT_NAME}_SOURCE_DIR}/bindings/python/${python}" + "${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c" DESTINATION ${PYTHON_SITELIB}/${PROJECT_NAME}) - - # --- INSTALL SCRIPTS - SET(PYTHON_FILES - __init__.py - utils.py - robot_wrapper.py - romeo_wrapper.py - rpy.py - explog.py - ) - - FOREACH(python ${PYTHON_FILES}) - GET_FILENAME_COMPONENT(pythonFile ${python} NAME) - EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E ${LINK} - ${${PROJECT_NAME}_SOURCE_DIR}/bindings/python/${python} - ${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}) - - # Tag pyc file as generated. - SET_SOURCE_FILES_PROPERTIES( - "${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c" - PROPERTIES GENERATED TRUE) - - EXECUTE_PROCESS(COMMAND - ${PYTHON_EXECUTABLE} -m py_compile - ${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}) - - # Clean generated files. - SET_PROPERTY( - DIRECTORY APPEND PROPERTY - ADDITIONAL_MAKE_CLEAN_FILES - "${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c") - - INSTALL(FILES - "${${PROJECT_NAME}_SOURCE_DIR}/bindings/python/${python}" - "${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c" - DESTINATION ${PYTHON_SITELIB}/${PROJECT_NAME}) - ENDFOREACH(python) - -ENDIF(BUILD_PYTHON_INTERFACE) +ENDFOREACH(python) + -- GitLab