X-Git-Url: http://developer.intra2net.com/git/?a=blobdiff_plain;f=bindings%2FCMakeLists.txt;h=0c335c8e02ccf456e85ab60bab2981f178f1b992;hb=e4e406b4f3a435b2768a2f46450c874a0a4e0712;hp=b17d8a8320209ab58b82fe69d28f53b6b4a2730c;hpb=e93b34879c5abefc8aab1c4bf020a01c9b75b21f;p=libftdi diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt index b17d8a8..0c335c8 100644 --- a/bindings/CMakeLists.txt +++ b/bindings/CMakeLists.txt @@ -1,28 +1,62 @@ -include(FindSWIG) -include(FindPythonLibs) -include(FindPythonInterp) -include(UseSWIG) +option ( PYTHON_BINDINGS "Build python bindings via swig" ON ) -option(PYTHON_BINDINGS "Build python bindings via swig" ON) +if ( PYTHON_BINDINGS ) + find_package ( SWIG ) + find_package ( PythonLibs ) + find_package ( PythonInterp ) +endif () -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) +if ( SWIG_FOUND AND PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND ) + include ( UseSWIG ) + include_directories ( BEFORE ${CMAKE_SOURCE_DIR}/src ) + include_directories ( ${PYTHON_INCLUDE_DIRS} ) + link_directories ( ${CMAKE_CURRENT_BINARY_DIR}/../src ) - SWIG_ADD_MODULE(ftdi python ftdi.i) - SWIG_LINK_LIBRARIES(ftdi ftdi ${PYTHON_LIBRARIES}) + swig_add_module ( ftdi1 python ftdi1.i ) + swig_link_libraries ( ftdi1 ftdi1 ) - 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 ) + # 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 () - set ( SITEPACKAGE lib${LIB_SUFFIX}/python${PYTHON_VERSION}/site-packages ) + 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 ) - INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/_ftdi.so DESTINATION ${SITEPACKAGE}) - INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ftdi.py DESTINATION ${SITEPACKAGE}) + set ( SITEPACKAGE lib${LIB_SUFFIX}/python${PYTHON_VERSION}/site-packages ) - 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 AND PYTHONINTERP_FOUND) + INSTALL ( FILES ${CMAKE_CURRENT_BINARY_DIR}/_ftdi1.so DESTINATION ${SITEPACKAGE} ) + INSTALL ( FILES ${CMAKE_CURRENT_BINARY_DIR}/ftdi1.py DESTINATION ${SITEPACKAGE} ) + + if ( DOCUMENTATION AND DOXYGEN_FOUND ) + + set(CMAKE_SWIG_FLAGS -DDOXYGEN=${DOXYGEN_FOUND}) + + # 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} + ) + + # 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 ${CMAKE_BINARY_DIR}/doc/xml/ftdi_8c.xml + ) + add_custom_target ( doc_i DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i ) + add_dependencies( ${SWIG_MODULE_ftdi1_REAL_NAME} doc_i ) + + endif () + + set ( LIBFTDI_PYTHON_MODULE_PATH ${CMAKE_INSTALL_PREFIX}/${SITEPACKAGE} ) + set ( LIBFTDI_PYTHON_MODULE_PATH ${LIBFTDI_PYTHON_MODULE_PATH} PARENT_SCOPE ) # for ftdiconfig.cmake + message(STATUS "Building python bindings via swig. Will be installed under ${LIBFTDI_PYTHON_MODULE_PATH}") +else () + message(STATUS "Not building python bindings") +endif ()