blob: 377a6cb4ac7f477b29581010745dbe8ff321524e [file] [log] [blame]
#
# CMakeLists.txt for plugins/swig/python
#
enable_testing()
add_subdirectory(tests)
SET (BUILD_SHARED_LIBS ON)
FIND_PACKAGE(PythonInterp REQUIRED)
EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib())" OUTPUT_VARIABLE PYTHON_LIB_DIR)
IF (NOT PYTHON_SITE_DIR)
SET (PYTHON_SITE_DIR ${PYTHON_LIB_DIR})
ENDIF (NOT PYTHON_SITE_DIR)
MESSAGE(STATUS "Python executable: ${PYTHON_EXECUTABLE}")
MESSAGE(STATUS "Python inc dir: ${PYTHON_INCLUDE_DIRS}")
MESSAGE(STATUS "Python lib dir: ${PYTHON_LIB_DIR}")
#MESSAGE(STATUS "Python libraries: ${PYTHON_LIBRARIES}")
MESSAGE(STATUS "Python site dir: ${PYTHON_SITE_DIR}")
SET( SWIG_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/swig_wrap.c" )
SET( SWIG_INPUT "${CMAKE_CURRENT_SOURCE_DIR}/../plugin.i" )
ADD_CUSTOM_COMMAND (
OUTPUT ${SWIG_OUTPUT}
COMMAND ${CMAKE_COMMAND} -E echo_append "Creating wrapper code for Python ..."
COMMAND ${SWIG_EXECUTABLE} -python -threads -features autodoc -I${CMAKE_SOURCE_DIR}/include -I${CMAKE_SOURCE_DIR}/bindings -o ${SWIG_OUTPUT} ${SWIG_INPUT}
COMMAND ${CMAKE_COMMAND} -E echo "Done."
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../*.i
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../src/*.c
DEPENDS ${CMAKE_SOURCE_DIR}/bindings/*.i
)
SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -g" )
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/../src )
INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/bindings )
# wsman_config.h is generated
INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR} )
# all other wsman includes
INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/include )
INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_DIRS} )
#
# wsman_python_plugin.so
#
SET( NAME wsman_python_plugin )
ADD_LIBRARY( ${NAME} SHARED ${SWIG_OUTPUT})
#TARGET_LINK_LIBRARIES( ${NAME} ${PYTHON_LIBRARIES} )
TARGET_LINK_LIBRARIES( ${NAME} python${PYTHON_MAJOR_VERSION}.${PYTHON_MINOR_VERSION} )
TARGET_LINK_LIBRARIES( ${NAME} pthread )
INSTALL(TARGETS ${NAME} LIBRARY DESTINATION ${PACKAGE_PLUGIN_DIR})
# .py: swig generated
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/wsman_plugin.py DESTINATION ${PYTHON_SITE_DIR} )
#
# pywsmanplugin.py: plugin implementation
#
INSTALL(FILES pywsmanplugin.py DESTINATION ${PYTHON_SITE_DIR} )
# compile to .pyc
INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c \"from py_compile import compile; compile('\$ENV{DESTDIR}${PYTHON_SITE_DIR}/wsman_plugin.py', dfile='${PYTHON_SITE_DIR}/wsman_plugin.py')\")")
INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c \"from py_compile import compile; compile('\$ENV{DESTDIR}${PYTHON_SITE_DIR}/pywsmanplugin.py', dfile='${PYTHON_SITE_DIR}/pywsmanplugin.py')\")")