OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-atomspace / cmake / OpenCogCython.cmake

29 lines · cmake ref:
# Cythonizes one .pyx file into a .cpp file
# Additional arguments are dependencies

# Capture the directory where this .cmake file is located.
# This will work both in the source tree and when installed.
SET(_OPENCOG_CYTHON_WRAPPER "${CMAKE_CURRENT_LIST_DIR}/cython-wrapper.sh")

MACRO(CYTHON_ADD_MODULE_PYX name)
    SET(DEPENDS ${name}.pyx)

    IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${name}.pxd)
        SET(DEPENDS ${DEPENDS} ${name}.pxd)
    ENDIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${name}.pxd)

    # Allow the user to specify dependencies as optional arguments
    SET(DEPENDS ${DEPENDS} ${ARGN})

    ADD_CUSTOM_COMMAND(
        OUTPUT ${name}.cpp
        COMMAND ${_OPENCOG_CYTHON_WRAPPER}
                ${CYTHON_EXECUTABLE} ${CYTHON_FLAGS} -I ${PROJECT_BINARY_DIR}
                -I ${CMAKE_CURRENT_SOURCE_DIR} -o ${name}.cpp
                --cplus ${CMAKE_CURRENT_SOURCE_DIR}/${name}.pyx
        DEPENDS ${DEPENDS}
        COMMENT "Cythonizing ${name}.pyx")

    list(APPEND ADDITIONAL_MAKE_CLEAN_FILES "${name}.cpp")
ENDMACRO(CYTHON_ADD_MODULE_PYX)