File: CMakeLists.txt

package info (click to toggle)
libftdi1 1.6~rc1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 932 kB
  • sloc: ansic: 6,297; cpp: 875; python: 537; sh: 116; makefile: 48
file content (74 lines) | stat: -rw-r--r-- 2,979 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# workaround for cmake bug #0013449
if (NOT DEFINED CMAKE_FIND_ROOT_PATH OR NOT CMAKE_VERSION VERSION_LESS 3.0.0)
    find_package(SWIG REQUIRED)
else ()
    find_program(SWIG_EXECUTABLE NAMES swig2.0 swig)
    if (SWIG_EXECUTABLE)
        set(SWIG_USE_FILE ${CMAKE_ROOT}/Modules/UseSWIG.cmake)
        set(SWIG_FOUND TRUE)
    endif ()
endif ()
find_package(Python3 COMPONENTS Interpreter Development)

include(UseSWIG)
include_directories(BEFORE ${PROJECT_SOURCE_DIR}/src)
include_directories(${Python3_INCLUDE_DIRS})
link_directories(${CMAKE_CURRENT_BINARY_DIR}/../src)

if (DOCUMENTATION)
    set(CMAKE_SWIG_FLAGS -DDOXYGEN=${DOXYGEN_FOUND})
    # manually add dependency for new cmake / swig versions
    set_property(SOURCE ftdi1.i PROPERTY DEPENDS doc_i)
endif ()
swig_add_library(pyftdi1 LANGUAGE python SOURCES ftdi1.i)
swig_link_libraries(pyftdi1 ftdi1)

if (LINK_PYTHON_LIBRARY)
    swig_link_libraries(pyftdi1 ${PYTHON_LIBRARIES})
elseif (APPLE)
    set_target_properties(pyftdi1 PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
endif ()

set_target_properties(pyftdi1 PROPERTIES NO_SONAME ON)

execute_process(COMMAND ${Python3_EXECUTABLE} -c "import sysconfig; print( sysconfig.get_path( 'platlib', vars={'platbase': '${CMAKE_INSTALL_PREFIX}'} ) )"
        OUTPUT_VARIABLE _ABS_PYTHON_MODULE_PATH
        OUTPUT_STRIP_TRAILING_WHITESPACE)

get_filename_component(_ABS_PYTHON_MODULE_PATH ${_ABS_PYTHON_MODULE_PATH} ABSOLUTE)
file(RELATIVE_PATH _REL_PYTHON_MODULE_PATH ${CMAKE_INSTALL_PREFIX} ${_ABS_PYTHON_MODULE_PATH})

set(PYTHON_MODULE_PATH ${_REL_PYTHON_MODULE_PATH})

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ftdi1.py DESTINATION ${PYTHON_MODULE_PATH})
install(TARGETS pyftdi1 LIBRARY DESTINATION ${PYTHON_MODULE_PATH})

if (DOCUMENTATION)
    # Run doxygen to only generate the xml
    add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/doc/xml/ftdi_8c.xml
            COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/doc/Doxyfile.xml
            WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
            COMMENT "Generating ftdi_8c.xml"
            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 ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doxy2swig.py -n
            ${PROJECT_BINARY_DIR}/doc/xml/ftdi_8c.xml
            ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i
            COMMENT "Generating ftdi1_doc.i from ftdi_8c.xml"
            DEPENDS ${PROJECT_BINARY_DIR}/doc/xml/ftdi_8c.xml
    )
    add_custom_target(doc_i
            COMMENT "Python API bindings documentation"
            DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i
    )
    add_dependencies(pyftdi1 doc_i)

endif (DOCUMENTATION)

set(LIBFTDI_PYTHON_MODULE_PATH ${CMAKE_INSTALL_PREFIX}/${PYTHON_MODULE_PATH})
set(LIBFTDI_PYTHON_MODULE_PATH ${LIBFTDI_PYTHON_MODULE_PATH} PARENT_SCOPE) # for ftdiconfig.cmake

add_subdirectory(examples)