File: CMakeLists.txt

package info (click to toggle)
uhd 4.9.0.0%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 184,180 kB
  • sloc: cpp: 262,887; python: 112,011; ansic: 102,670; vhdl: 57,031; tcl: 19,924; xml: 8,581; makefile: 3,028; sh: 2,812; pascal: 230; javascript: 120; csh: 94; asm: 20; perl: 11
file content (171 lines) | stat: -rw-r--r-- 6,050 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#
# Copyright 2017-2018 Ettus Research, a National Instruments Company
#
# SPDX-License-Identifier: GPL-3.0-or-later
#

########################################################################
# This file included, use CMake directory variables
########################################################################

# Check installation status of Python modules required by MPM unit tests
set(GEVENT_MIN_VERSION "1.4.0")
set(PYUDEV_MIN_VERSION "0.21.0")

UHD_PYTHON_CHECK_MODULE_VERSION(
    "gevent module"
    "gevent"
    "gevent.__version__"
    ${GEVENT_MIN_VERSION}
    HAVE_PYTHON_MODULE_GEVENT
)

# mprpc does not expose a __version__ attribute, so merely check for its
# presence
UHD_PYTHON_CHECK_MODULE(
    "mprpc module"
    "mprpc"
    "True"
    HAVE_PYTHON_MODULE_MPRPC
)

UHD_PYTHON_CHECK_MODULE_VERSION(
    "pyudev module"
    "pyudev"
    "pyudev.__version__"
    ${PYUDEV_MIN_VERSION}
    HAVE_PYTHON_MODULE_PYUDEV
)

# Older versions of pyroute2 (e.g. 0.5.2) do not expose a __version__
# attribute, so merely check for its presence.
UHD_PYTHON_CHECK_MODULE(
    "pyroute2 module"
    "pyroute2"
    "True"
    HAVE_PYTHON_MODULE_PYROUTE2
)

if (HAVE_PYTHON_MODULE_GEVENT AND HAVE_PYTHON_MODULE_MPRPC AND HAVE_PYTHON_MODULE_PYUDEV AND HAVE_PYTHON_MODULE_PYROUTE2)
    set(HAVE_MPM_TEST_PREREQS TRUE)
    MESSAGE(STATUS "MPM unit test Python package prerequisites met!")
else()
    set(HAVE_MPM_TEST_PREREQS FALSE)
    MESSAGE(STATUS "MPM unit test Python package prerequisites not met; skipping")
endif()
MESSAGE(STATUS "")

if(MPM_DEVICE STREQUAL "n3xx")
    add_library(pyusrp_periphs SHARED pyusrp_periphs/n3xx/pyusrp_periphs.cpp)
elseif(MPM_DEVICE STREQUAL "e320")
    add_library(pyusrp_periphs SHARED pyusrp_periphs/e320/pyusrp_periphs.cpp)
elseif(MPM_DEVICE STREQUAL "e31x")
    add_library(pyusrp_periphs SHARED pyusrp_periphs/e31x/pyusrp_periphs.cpp)
elseif(MPM_DEVICE STREQUAL "x4xx")
    add_library(pyusrp_periphs SHARED pyusrp_periphs/x4xx/pyusrp_periphs.cpp)
endif(MPM_DEVICE STREQUAL "n3xx")

if(NOT ENABLE_SIM)
    target_include_directories(pyusrp_periphs PUBLIC
        ${PYTHON_INCLUDE_DIRS}
        ${CMAKE_SOURCE_DIR}/lib/
        ${UHD_SOURCE_DIR}/lib/usrp/common
        ${UHD_SOURCE_DIR}/lib/usrp/common/ad9361_driver
        ${UHD_SOURCE_DIR}/lib/deps/pybind11/include
    )
    target_link_libraries(pyusrp_periphs ${Boost_LIBRARIES} usrp-periphs)
    message(STATUS "Determining on-target Python version...")
    # The sysconfig module in the SDK provides the environment on the target.
    # Therefore sysconfig.get_python_version() returns the Python version on the
    # target.
    execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import sysconfig
print(sysconfig.get_python_version())"
        OUTPUT_VARIABLE UHD_PYTHON_VERSION_ON_TARGET
        OUTPUT_STRIP_TRAILING_WHITESPACE)
    message(STATUS "On-target Python version: ${UHD_PYTHON_VERSION_ON_TARGET}")
    # Now install the Python module from the build directory to the final destination.
    set(UHD_PYTHON_DIR "${CMAKE_INSTALL_LIBDIR}/python${UHD_PYTHON_VERSION_ON_TARGET}/site-packages")
    UHD_PYTHON_INSTALL_MODULE(
        MODULE "usrp_mpm"
        LIBTARGET pyusrp_periphs
    )
endif(NOT ENABLE_SIM)

set(USRP_MPM_FILES "")
add_subdirectory(usrp_mpm)

set(OUTPUT      "${CMAKE_CURRENT_BINARY_DIR}/build/timestamp")
set(SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in")
set(SETUP_PY    "${CMAKE_CURRENT_BINARY_DIR}/setup.py")
set(PERIPH_MGR_INIT_IN "${CMAKE_CURRENT_SOURCE_DIR}/usrp_mpm/periph_manager/__init__.py.in")
set(PERIPH_MGR_INIT "${CMAKE_CURRENT_BINARY_DIR}/usrp_mpm/periph_manager/__init__.py")
set(USRP_MPM_INIT_IN "${CMAKE_CURRENT_SOURCE_DIR}/usrp_mpm/__init__.py.in")
set(USRP_MPM_INIT "${CMAKE_CURRENT_BINARY_DIR}/usrp_mpm/__init__.py")

configure_file(${SETUP_PY_IN} ${SETUP_PY})
configure_file(${PERIPH_MGR_INIT_IN} ${PERIPH_MGR_INIT})
configure_file(${USRP_MPM_INIT_IN} ${USRP_MPM_INIT})
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/usrp_hwd.py" "${CMAKE_CURRENT_BINARY_DIR}/usrp_hwd.py" COPYONLY)

add_custom_command(OUTPUT ${OUTPUT}
     COMMAND ${CMAKE_COMMAND}  -DSOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}" -DBINARY_DIR="${CMAKE_CURRENT_BINARY_DIR}"  -P ${CMAKE_CURRENT_SOURCE_DIR}/copy_python_module.cmake
     COMMAND ${PYTHON_EXECUTABLE} ${SETUP_PY} -q build
     COMMAND ${CMAKE_COMMAND} -E touch ${OUTPUT}
     DEPENDS ${USRP_MPM_FILES} pyusrp_periphs)
add_custom_target(usrp_mpm ALL DEPENDS ${OUTPUT} pyusrp_periphs)

if(NOT DEFINED USRP_MPM_PYTHON_DIR)
    execute_process(COMMAND ${PYTHON_EXECUTABLE} -c
        "import os,sysconfig;\
        platlib = sysconfig.get_path(name='platlib');\
        prefix = sysconfig.get_config_var('prefix');\
        print(os.path.relpath(platlib, prefix));"
        OUTPUT_VARIABLE USRP_MPM_PYTHON_DIR OUTPUT_STRIP_TRAILING_WHITESPACE
    )
endif(NOT DEFINED USRP_MPM_PYTHON_DIR)

install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/build/lib/usrp_mpm DESTINATION ${USRP_MPM_PYTHON_DIR})
install(PROGRAMS
    usrp_hwd.py
    DESTINATION ${CMAKE_INSTALL_BINDIR}
)

if(NOT ENABLE_SIM)
    install(PROGRAMS
        aurora_bist_test.py
        usrp_update_fs
        DESTINATION ${CMAKE_INSTALL_BINDIR}
    )

    if (ENABLE_MYKONOS)
        install(PROGRAMS
            n3xx_bist
            DESTINATION ${CMAKE_INSTALL_BINDIR}
        )
    elseif (ENABLE_E320)
        install(PROGRAMS
            e320_bist
            DESTINATION ${CMAKE_INSTALL_BINDIR}
        )
    elseif (ENABLE_X400)
        install(PROGRAMS
            x4xx_bist
            DESTINATION ${CMAKE_INSTALL_BINDIR}
        )
        install(PROGRAMS
            usrp_mpm/dboard_manager/zbx_update_cpld.py
            DESTINATION ${CMAKE_INSTALL_BINDIR}
            RENAME zbx_update_cpld
        )
        install(PROGRAMS
            usrp_mpm/periph_manager/x4xx_update_cpld.py
            DESTINATION ${CMAKE_INSTALL_BINDIR}
            RENAME x4xx_update_cpld
        )
    endif (ENABLE_MYKONOS)
endif()

if (HAVE_MPM_TEST_PREREQS)
    add_subdirectory(tests)
endif (HAVE_MPM_TEST_PREREQS)