Commit | Line | Data |
---|---|---|
68d2167b YY |
1 | # workaround for cmake bug #0013449 |
2 | if ( NOT DEFINED CMAKE_FIND_ROOT_PATH ) | |
3 | find_package ( SWIG REQUIRED ) | |
4 | else () | |
5 | find_program ( SWIG_EXECUTABLE NAMES swig2.0 swig ) | |
6 | if ( SWIG_EXECUTABLE ) | |
7 | set ( SWIG_USE_FILE ${CMAKE_ROOT}/Modules/UseSWIG.cmake ) | |
8 | set ( SWIG_FOUND TRUE ) | |
95d606d8 | 9 | endif () |
e4e406b4 | 10 | endif () |
68d2167b YY |
11 | find_package ( PythonLibs REQUIRED ) |
12 | find_package ( PythonInterp REQUIRED ) | |
e4e406b4 | 13 | |
68d2167b YY |
14 | include ( UseSWIG ) |
15 | include_directories ( BEFORE ${CMAKE_SOURCE_DIR}/src ) | |
16 | include_directories ( ${PYTHON_INCLUDE_DIRS} ) | |
17 | link_directories ( ${CMAKE_CURRENT_BINARY_DIR}/../src ) | |
e4e406b4 | 18 | |
68d2167b YY |
19 | if ( DOCUMENTATION ) |
20 | set(CMAKE_SWIG_FLAGS -DDOXYGEN=${DOXYGEN_FOUND}) | |
21 | endif() | |
22 | swig_add_module ( ftdi1 python ftdi1.i ) | |
23 | swig_link_libraries ( ftdi1 ftdi1 ) | |
e4e406b4 | 24 | |
68d2167b YY |
25 | if ( LINK_PYTHON_LIBRARY ) |
26 | swig_link_libraries ( ftdi1 ${PYTHON_LIBRARIES} ) | |
27 | elseif( APPLE ) | |
28 | set_target_properties ( ${SWIG_MODULE_ftdi1_REAL_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup" ) | |
29 | endif () | |
d0c11961 | 30 | |
68d2167b | 31 | set_target_properties ( ${SWIG_MODULE_ftdi1_REAL_NAME} PROPERTIES NO_SONAME ON ) |
d0c11961 | 32 | |
68d2167b YY |
33 | execute_process ( COMMAND ${PYTHON_EXECUTABLE} -c "from distutils import sysconfig; print( sysconfig.get_python_lib( plat_specific=True, prefix='${CMAKE_INSTALL_PREFIX}' ) )" |
34 | OUTPUT_VARIABLE _ABS_PYTHON_MODULE_PATH | |
35 | OUTPUT_STRIP_TRAILING_WHITESPACE ) | |
d0c11961 | 36 | |
68d2167b YY |
37 | get_filename_component ( _ABS_PYTHON_MODULE_PATH ${_ABS_PYTHON_MODULE_PATH} ABSOLUTE ) |
38 | file ( RELATIVE_PATH _REL_PYTHON_MODULE_PATH ${CMAKE_INSTALL_PREFIX} ${_ABS_PYTHON_MODULE_PATH} ) | |
d0c11961 | 39 | |
68d2167b | 40 | set ( PYTHON_MODULE_PATH ${_REL_PYTHON_MODULE_PATH} ) |
d0c11961 | 41 | |
68d2167b YY |
42 | install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/ftdi1.py DESTINATION ${PYTHON_MODULE_PATH} ) |
43 | install ( TARGETS ${SWIG_MODULE_ftdi1_REAL_NAME} LIBRARY DESTINATION ${PYTHON_MODULE_PATH} ) | |
e4e406b4 | 44 | |
68d2167b YY |
45 | if ( DOCUMENTATION ) |
46 | # Run doxygen to only generate the xml | |
47 | add_custom_command ( OUTPUT ${CMAKE_BINARY_DIR}/doc/xml/ftdi_8c.xml | |
48 | COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/doc | |
49 | COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile.xml | |
50 | WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
51 | DEPENDS ${c_headers};${c_sources};${cpp_sources};${cpp_headers} | |
52 | ) | |
e4e406b4 | 53 | |
68d2167b YY |
54 | # generate .i from doxygen .xml |
55 | add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i | |
56 | COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doxy2swig.py -n | |
57 | ${CMAKE_BINARY_DIR}/doc/xml/ftdi_8c.xml | |
58 | ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i | |
59 | DEPENDS ${CMAKE_BINARY_DIR}/doc/xml/ftdi_8c.xml | |
60 | ) | |
61 | add_custom_target ( doc_i DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i ) | |
62 | add_dependencies( ${SWIG_MODULE_ftdi1_REAL_NAME} doc_i ) | |
e4e406b4 | 63 | |
68d2167b | 64 | endif () |
d0c11961 | 65 | |
68d2167b YY |
66 | set ( LIBFTDI_PYTHON_MODULE_PATH ${CMAKE_INSTALL_PREFIX}/${PYTHON_MODULE_PATH} ) |
67 | set ( LIBFTDI_PYTHON_MODULE_PATH ${LIBFTDI_PYTHON_MODULE_PATH} PARENT_SCOPE ) # for ftdiconfig.cmake | |
c5285326 | 68 | |
68d2167b | 69 | add_subdirectory ( examples ) |