From d6beb1c6d3b62a341e647b761dd93349beca3b5c Mon Sep 17 00:00:00 2001 From: Justin Carpentier <justin.carpentier@inria.fr> Date: Wed, 4 Dec 2019 21:58:41 +0100 Subject: [PATCH] cmake: refactor Python bindings to allow easy creation of wheels (pip) --- python/CMakeLists.txt | 27 ++++++++++++++++++++++++--- python/hppfcl/__init__.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 python/hppfcl/__init__.py diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 6521c301..6204ed71 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -1,7 +1,7 @@ # # Software License Agreement (BSD License) # -# Copyright (c) 2019 CNRS-LAAS +# Copyright (c) 2019 CNRS-LAAS INRIA # Author: Joseph Mirabel # All rights reserved. # @@ -34,6 +34,7 @@ ADD_REQUIRED_DEPENDENCY("eigenpy >= 1.2") +# Name of the Python library SET(LIBRARY_NAME hppfcl) INCLUDE_DIRECTORIES("${Boost_INCLUDE_DIRS}" ${PYTHON_INCLUDE_DIRS}) @@ -54,7 +55,27 @@ PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} eigenpy) SET_TARGET_PROPERTIES(${LIBRARY_NAME} PROPERTIES PREFIX "" SUFFIX "${PYTHON_EXT_SUFFIX}" - LIBRARY_OUTPUT_NAME ${LIBRARY_NAME}) + LIBRARY_OUTPUT_NAME ${LIBRARY_NAME} + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/python/${LIBRARY_NAME}" + ) + +IF(DEFINED HPP_FCL_SITELIB_ROOT AND HPP_FCL_SITELIB_ROOT) + SET(${LIBRARY_NAME}_INSTALL_DIR ${HPP_FCL_SITELIB_ROOT}/${PYTHON_SITELIB}/${LIBRARY_NAME}) +ELSE() + SET(${LIBRARY_NAME}_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/${PYTHON_SITELIB}/${LIBRARY_NAME}) +ENDIF() INSTALL(TARGETS ${LIBRARY_NAME} - DESTINATION ${PYTHON_SITELIB}) + DESTINATION ${${LIBRARY_NAME}_INSTALL_DIR}) + +# --- INSTALL SCRIPTS +SET(PYTHON_FILES + __init__.py + ) + +FOREACH(python ${PYTHON_FILES}) + PYTHON_BUILD(${LIBRARY_NAME} ${python}) + INSTALL(FILES + "${CMAKE_CURRENT_SOURCE_DIR}/${LIBRARY_NAME}/${python}" + DESTINATION ${${LIBRARY_NAME}_INSTALL_DIR}) +ENDFOREACH(python) diff --git a/python/hppfcl/__init__.py b/python/hppfcl/__init__.py new file mode 100644 index 00000000..257d4a9c --- /dev/null +++ b/python/hppfcl/__init__.py @@ -0,0 +1,34 @@ +# Software License Agreement (BSD License) +# +# Copyright (c) 2019 INRIA +# Author: Justin Carpentier +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# * Neither the name of CNRS-LAAS. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +from hppfcl import * -- GitLab