87 lines
2.7 KiB
CMake
87 lines
2.7 KiB
CMake
IF (RBDL_USE_PYTHON_2)
|
|
FIND_PROGRAM ( PYTHON "python2" )
|
|
SET (Python_ADDITIONAL_VERSIONS 2.7)
|
|
INCLUDE ( FindNumPy2 )
|
|
MESSAGE(STATUS ${PYTHON_NUMPY_2_INCLUDE_DIR})
|
|
SET( PYTHON_BIN python2)
|
|
ELSE(RBDL_USE_PYTHON_2)
|
|
FIND_PROGRAM ( PYTHON "python3" )
|
|
SET (Python_ADDITIONAL_VERSIONS 3.7)
|
|
INCLUDE ( FindNumPy3 )
|
|
MESSAGE(STATUS ${PYTHON_NUMPY_3_INCLUDE_DIR})
|
|
SET( PYTHON_BIN python3)
|
|
ENDIF (RBDL_USE_PYTHON_2)
|
|
|
|
INCLUDE ( UseCython )
|
|
|
|
|
|
FILE( COPY "crbdl.pxd" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
|
|
|
|
CONFIGURE_FILE (
|
|
${CMAKE_CURRENT_SOURCE_DIR}/setup.py.cmake
|
|
${CMAKE_CURRENT_BINARY_DIR}/setup.py
|
|
)
|
|
|
|
# Process the rbdl-wrapper.pyx to generate rbdl.pyx BEFORE build time
|
|
# else cython_add_module will complain on configuration
|
|
EXECUTE_PROCESS (
|
|
OUTPUT_VARIABLE WRAPPERGEN_OUT
|
|
COMMAND ${PYTHON_BIN}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/wrappergen.py
|
|
${CMAKE_CURRENT_SOURCE_DIR}/rbdl-wrapper.pyx
|
|
${CMAKE_CURRENT_BINARY_DIR}/rbdl.pyx
|
|
)
|
|
MESSAGE (STATUS ${WRAPPERGEN_OUT})
|
|
|
|
|
|
# Enable C++11 (or C++0x for older compilers)
|
|
include(CheckCXXCompilerFlag)
|
|
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
|
|
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
|
|
if(COMPILER_SUPPORTS_CXX11)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
|
elseif(COMPILER_SUPPORTS_CXX0X)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
|
|
else()
|
|
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
|
|
endif()
|
|
|
|
# If the pyx file is a C++ file, we should specify that here.
|
|
set_source_files_properties( ${CMAKE_CURRENT_BINARY_DIR}/rbdl.pyx PROPERTIES CYTHON_IS_CXX TRUE )
|
|
|
|
# Multi-file cython modules do not appear to be working at the moment.
|
|
# NOTE there is some directory property problem in UseCython when build
|
|
# from CMAKE_CURRENT_BINARY_DIR
|
|
cython_add_module( rbdl-python ${CMAKE_CURRENT_BINARY_DIR}/rbdl.pyx )
|
|
|
|
#SET_TARGET_PROPERTIES ( rbdl-python PROPERTIES PREFIX "")
|
|
SET_TARGET_PROPERTIES ( rbdl-python PROPERTIES OUTPUT_NAME "rbdl")
|
|
|
|
IF (RBDL_USE_PYTHON_2)
|
|
INCLUDE_DIRECTORIES (
|
|
${PROJECT_SOURCE_DIR}/include
|
|
${PROJECT_SOURCE_DIR}/python
|
|
${PROJECT_SOURCE_DIR}
|
|
${PYTHON_NUMPY_2_INCLUDE_DIR}
|
|
)
|
|
ELSE(RBDL_USE_PYTHON_2)
|
|
INCLUDE_DIRECTORIES (
|
|
${PROJECT_SOURCE_DIR}/include
|
|
${PROJECT_SOURCE_DIR}/python
|
|
${PROJECT_SOURCE_DIR}
|
|
${PYTHON_NUMPY_3_INCLUDE_DIR}
|
|
)
|
|
ENDIF (RBDL_USE_PYTHON_2)
|
|
|
|
TARGET_LINK_LIBRARIES (rbdl-python rbdl )
|
|
|
|
IF (RBDL_BUILD_ADDON_LUAMODEL)
|
|
TARGET_LINK_LIBRARIES (rbdl-python rbdl_luamodel )
|
|
ENDIF()
|
|
|
|
IF (RBDL_BUILD_ADDON_URDFREADER)
|
|
TARGET_LINK_LIBRARIES (rbdl-python rbdl_urdfreader )
|
|
ENDIF()
|
|
|
|
INSTALL ( CODE "EXECUTE_PROCESS(WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${PYTHON_BIN} setup.py install)")
|