diff options
Diffstat (limited to 'host/python/CMakeLists.txt')
-rw-r--r-- | host/python/CMakeLists.txt | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/host/python/CMakeLists.txt b/host/python/CMakeLists.txt new file mode 100644 index 000000000..f4effa1c4 --- /dev/null +++ b/host/python/CMakeLists.txt @@ -0,0 +1,83 @@ +# +# Copyright 2017 Ettus Research LLC +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +######################################################################## +# This file included, use CMake directory variables +######################################################################## + + +PYTHON_CHECK_MODULE( + "virtualenv" + "sys" "hasattr(sys, 'real_prefix')" + HAVE_PYTHON_VIRTUALENV + ) +# Get include dirs +INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS}) +EXECUTE_PROCESS( + COMMAND "${PYTHON_EXECUTABLE}" -c + "from __future__ import print_function\ntry:\n import numpy\n import os\n inc_path = numpy.get_include()\n if os.path.exists(os.path.join(inc_path, 'numpy', 'arrayobject.h')):\n print(inc_path, end='')\nexcept:\n pass" + OUTPUT_VARIABLE PYTHON_NUMPY_INCLUDE_DIR) + +# Build libpyuhd.so +ADD_LIBRARY(pyuhd SHARED pyuhd.cpp) +TARGET_INCLUDE_DIRECTORIES(pyuhd PUBLIC + ${PYTHON_NUMPY_INCLUDE_DIR} + ${CMAKE_SOURCE_DIR}/lib +) +TARGET_LINK_LIBRARIES(pyuhd ${BOOST_PYTHON_LIBRARY} ${Boost_LIBRARIES} ${PYTHON_LIBRARY} uhd) +# Copy pyuhd library to the staging directory +SET(PYUHD_LIBRARY_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}pyuhd${CMAKE_SHARED_LIBRARY_SUFFIX}) +ADD_CUSTOM_COMMAND(TARGET pyuhd + POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/libpyuhd.so ${CMAKE_CURRENT_BINARY_DIR}/uhd/libpyuhd.so) + +SET(PYUHD_FILES + ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py + ${CMAKE_CURRENT_SOURCE_DIR}/types.py + ${CMAKE_CURRENT_SOURCE_DIR}/usrp.py + ${CMAKE_CURRENT_SOURCE_DIR}/filters.py +) + +SET(SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in") +SET(SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py") +SET(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/build/timestamp") + + SET(PYUHD_FILES + ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py + ${CMAKE_CURRENT_SOURCE_DIR}/pyuhd.py + ) + SET(SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in") + SET(SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py") + SET(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/build/timestamp") + + CONFIGURE_FILE(${SETUP_PY_IN} ${SETUP_PY}) + + ADD_CUSTOM_COMMAND(OUTPUT ${OUTPUT} + COMMAND ${CMAKE_COMMAND} -E copy ${PYUHD_FILES} ${CMAKE_CURRENT_BINARY_DIR}/uhd + COMMAND ${PYTHON} ${SETUP_PY} -q build + COMMAND ${CMAKE_COMMAND} -E touch ${OUTPUT} + DEPENDS ${PYUHD_FILES}) + ADD_CUSTOM_TARGET(target ALL DEPENDS ${OUTPUT} pyuhd) + IF(HAVE_PYTHON_VIRTUALENV) + INSTALL(CODE "execute_process(COMMAND ${PYTHON} ${SETUP_PY} -q install --force)") + ELSE() + EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c + "from distutils import sysconfig; print sysconfig.get_python_lib(plat_specific=True, prefix='')" + OUTPUT_VARIABLE UHD_PYTHON_DIR OUTPUT_STRIP_TRAILING_WHITESPACE + ) + INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/build/lib/uhd DESTINATION ${CMAKE_INSTALL_PREFIX}/${UHD_PYTHON_DIR}) + ENDIF() + |