2017-07-28 10:26:53 +08:00
|
|
|
include(GtsamCythonWrap)
|
|
|
|
|
|
|
|
|
|
# Copy eigency's sources to the build folder
|
|
|
|
|
# so that the cython-generated header "conversions_api.h" can be found when cythonizing eigency's core
|
|
|
|
|
# and eigency's cython pxd headers can be found when cythonizing gtsam
|
|
|
|
|
file(COPY "." DESTINATION ".")
|
2020-07-02 01:13:53 +08:00
|
|
|
set(OUTPUT_DIR "${GTSAM_CYTHON_INSTALL_PATH}/gtsam_eigency")
|
2017-07-28 10:26:53 +08:00
|
|
|
set(EIGENCY_INCLUDE_DIR ${OUTPUT_DIR})
|
|
|
|
|
|
2017-07-29 03:26:19 +08:00
|
|
|
# This is to make the build/cython/gtsam_eigency folder a python package
|
2020-06-30 10:37:07 +08:00
|
|
|
configure_file(__init__.py.in ${OUTPUT_DIR}/__init__.py)
|
2017-07-28 10:26:53 +08:00
|
|
|
|
|
|
|
|
# include eigency headers
|
|
|
|
|
include_directories(${EIGENCY_INCLUDE_DIR})
|
|
|
|
|
|
|
|
|
|
# Cythonize and build eigency
|
|
|
|
|
message(STATUS "Cythonize and build eigency")
|
2017-07-29 03:26:19 +08:00
|
|
|
# Important trick: use "../gtsam_eigency/conversions.pyx" to let cython know that the conversions module is
|
2020-07-01 09:47:32 +08:00
|
|
|
# a part of the gtsam_eigency package and generate the function call import_gtsam_eigency__conversions()
|
|
|
|
|
# in conversions_api.h correctly!
|
2017-07-29 03:26:19 +08:00
|
|
|
cythonize(cythonize_eigency_conversions "../gtsam_eigency/conversions.pyx" "conversions"
|
2017-10-09 10:11:54 +08:00
|
|
|
"${OUTPUT_DIR}" "${EIGENCY_INCLUDE_DIR}" "" "" "")
|
2017-07-29 03:26:19 +08:00
|
|
|
cythonize(cythonize_eigency_core "../gtsam_eigency/core.pyx" "core"
|
2017-10-09 10:11:54 +08:00
|
|
|
${OUTPUT_DIR} "${EIGENCY_INCLUDE_DIR}" "" "" "")
|
2019-02-17 07:58:35 +08:00
|
|
|
|
|
|
|
|
# Include Eigen headers:
|
|
|
|
|
target_include_directories(cythonize_eigency_conversions PUBLIC
|
|
|
|
|
$<BUILD_INTERFACE:${GTSAM_EIGEN_INCLUDE_FOR_BUILD}>
|
|
|
|
|
$<INSTALL_INTERFACE:${GTSAM_EIGEN_INCLUDE_FOR_INSTALL}>
|
|
|
|
|
)
|
|
|
|
|
target_include_directories(cythonize_eigency_core PUBLIC
|
|
|
|
|
$<BUILD_INTERFACE:${GTSAM_EIGEN_INCLUDE_FOR_BUILD}>
|
|
|
|
|
$<INSTALL_INTERFACE:${GTSAM_EIGEN_INCLUDE_FOR_INSTALL}>
|
|
|
|
|
)
|
|
|
|
|
|
2017-07-28 10:26:53 +08:00
|
|
|
add_dependencies(cythonize_eigency_core cythonize_eigency_conversions)
|
|
|
|
|
add_custom_target(cythonize_eigency)
|
|
|
|
|
add_dependencies(cythonize_eigency cythonize_eigency_conversions cythonize_eigency_core)
|
2020-07-02 03:36:57 +08:00
|
|
|
|
2020-07-06 10:57:18 +08:00
|
|
|
if(TARGET ${python_install_target})
|
|
|
|
|
add_dependencies(${python_install_target} cythonize_eigency)
|
|
|
|
|
endif()
|