X-Git-Url: http://developer.intra2net.com/git/?a=blobdiff_plain;f=bindings%2FCMakeLists.txt;h=8f14c1a22bb47e71340a7e246e81cdab8c9fe5d4;hb=f9e62be7d02503877cc042833ae24ce1093bf38b;hp=4d6f94d1d073cf3c19710332f4cf2020db64727d;hpb=a4eac20496c663784e2a655712ec6459dac244dc;p=libftdi diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt index 4d6f94d..8f14c1a 100644 --- a/bindings/CMakeLists.txt +++ b/bindings/CMakeLists.txt @@ -1,24 +1,59 @@ include(FindSWIG) include(FindPythonLibs) +include(FindPythonInterp) include(UseSWIG) option(PYTHON_BINDINGS "Build python bindings via swig" ON) -if(PYTHON_BINDINGS AND SWIG_FOUND AND PYTHONLIBS_FOUND) +if(PYTHON_BINDINGS AND SWIG_FOUND AND PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND) INCLUDE_DIRECTORIES(BEFORE ${CMAKE_SOURCE_DIR}/src) INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH}) LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../src) - SWIG_ADD_MODULE(ftdi python ftdi.i) - SWIG_LINK_LIBRARIES(ftdi ftdi ${PYTHON_LIBRARIES}) + if(DOCUMENTATION AND DOXYGEN_FOUND) + set(SWIG_MODULE_ftdi1_EXTRA_DEPS ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i) + set(CMAKE_SWIG_FLAGS -DDOXYGEN=${DOXYGEN_FOUND}) - GET_FILENAME_COMPONENT(PYTHON_LIB_INSTALL ${PYTHON_LIBRARY} PATH) - GET_FILENAME_COMPONENT(SITEPACKAGE ${PYTHON_LIB_INSTALL}/../site-packages ABSOLUTE) + # Run doxygen to only generate the xml + add_custom_command( + OUTPUT ${CMAKE_BINARY_DIR}/doc/xml/ftdi_8c.xml + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/doc + COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile.xml + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + DEPENDS ${c_headers};${c_sources};${cpp_sources};${cpp_headers} + ) + add_custom_target(doc_xml ALL DEPENDS ${CMAKE_BINARY_DIR}/doc/xml/ftdi_8c.xml) - INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/_ftdi.so DESTINATION ${SITEPACKAGE}) - INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ftdi.py DESTINATION ${SITEPACKAGE}) + # generate .i from doxygen .xml + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doxy2swig.py -n + ${CMAKE_BINARY_DIR}/doc/xml/ftdi_8c.xml + ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i + DEPENDS doc_xml + ) - message(STATUS "Building python bindings via swig. Will be installed under ${SITEPACKAGE}") -else(PYTHON_BINDINGS AND SWIG_FOUND AND PYTHONLIBS_FOUND) + endif(DOCUMENTATION AND DOXYGEN_FOUND) + + swig_add_module ( ftdi1 python ftdi1.i ) + swig_link_libraries ( ftdi1 ftdi1 ) + + # do not link python modules on debian + # http://www.debian.org/doc/packaging-manuals/python-policy/ch-module_packages.html + if ( NOT UNIX OR ( UNIX AND NOT EXISTS "/etc/debian_version" ) ) + swig_link_libraries ( ftdi1 ${PYTHON_LIBRARIES} ) + endif () + + execute_process ( COMMAND ${PYTHON_EXECUTABLE} -c "import sys; print( '%d.%d' % ( sys.version_info[0], sys.version_info[1] ) )" + OUTPUT_VARIABLE PYTHON_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE ) + + set ( SITEPACKAGE lib${LIB_SUFFIX}/python${PYTHON_VERSION}/site-packages ) + + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/_ftdi1.so DESTINATION ${SITEPACKAGE}) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ftdi1.py DESTINATION ${SITEPACKAGE}) + + message(STATUS "Building python bindings via swig. Will be installed under ${CMAKE_INSTALL_PREFIX}/${SITEPACKAGE}") +else(PYTHON_BINDINGS AND SWIG_FOUND AND PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND) message(STATUS "Not building python bindings") -endif(PYTHON_BINDINGS AND SWIG_FOUND AND PYTHONLIBS_FOUND) +endif(PYTHON_BINDINGS AND SWIG_FOUND AND PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND)