aboutsummaryrefslogtreecommitdiffstats
path: root/host/python/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'host/python/CMakeLists.txt')
-rw-r--r--host/python/CMakeLists.txt83
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()
+