FindNumPy.cmake 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # - Find the NumPy libraries
  2. # This module finds if NumPy is installed, and sets the following variables
  3. # indicating where it is.
  4. #
  5. # TODO: Update to provide the libraries and paths for linking npymath lib.
  6. #
  7. # PYTHON_NUMPY_FOUND - was NumPy found
  8. # PYTHON_NUMPY_VERSION - the version of NumPy found as a string
  9. # PYTHON_NUMPY_VERSION_MAJOR - the major version number of NumPy
  10. # PYTHON_NUMPY_VERSION_MINOR - the minor version number of NumPy
  11. # PYTHON_NUMPY_VERSION_PATCH - the patch version number of NumPy
  12. # PYTHON_NUMPY_VERSION_DECIMAL - e.g. version 1.6.1 is 10601
  13. # PYTHON_NUMPY_INCLUDE_DIR - path to the NumPy include files
  14. unset(PYTHON_NUMPY_VERSION)
  15. unset(PYTHON_NUMPY_INCLUDE_DIR)
  16. if(PYTHONINTERP_FOUND)
  17. execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c"
  18. "import numpy as n; print(n.__version__); print(n.get_include());"
  19. RESULT_VARIABLE __result
  20. OUTPUT_VARIABLE __output
  21. OUTPUT_STRIP_TRAILING_WHITESPACE)
  22. if(__result MATCHES 0)
  23. string(REGEX REPLACE ";" "\\\\;" __values ${__output})
  24. string(REGEX REPLACE "\r?\n" ";" __values ${__values})
  25. list(GET __values 0 PYTHON_NUMPY_VERSION)
  26. list(GET __values 1 PYTHON_NUMPY_INCLUDE_DIR)
  27. string(REGEX MATCH "^([0-9])+\\.([0-9])+\\.([0-9])+" __ver_check "${PYTHON_NUMPY_VERSION}")
  28. if(NOT "${__ver_check}" STREQUAL "")
  29. set(PYTHON_NUMPY_VERSION_MAJOR ${CMAKE_MATCH_1})
  30. set(PYTHON_NUMPY_VERSION_MINOR ${CMAKE_MATCH_2})
  31. set(PYTHON_NUMPY_VERSION_PATCH ${CMAKE_MATCH_3})
  32. math(EXPR PYTHON_NUMPY_VERSION_DECIMAL
  33. "(${PYTHON_NUMPY_VERSION_MAJOR} * 10000) + (${PYTHON_NUMPY_VERSION_MINOR} * 100) + ${PYTHON_NUMPY_VERSION_PATCH}")
  34. string(REGEX REPLACE "\\\\" "/" PYTHON_NUMPY_INCLUDE_DIR ${PYTHON_NUMPY_INCLUDE_DIR})
  35. else()
  36. unset(PYTHON_NUMPY_VERSION)
  37. unset(PYTHON_NUMPY_INCLUDE_DIR)
  38. message(STATUS "Requested NumPy version and include path, but got instead:\n${__output}\n")
  39. endif()
  40. endif()
  41. else()
  42. message(STATUS "To find NumPy Python interpretor is required to be found.")
  43. endif()
  44. include(FindPackageHandleStandardArgs)
  45. find_package_handle_standard_args(NumPy REQUIRED_VARS PYTHON_NUMPY_INCLUDE_DIR PYTHON_NUMPY_VERSION
  46. VERSION_VAR PYTHON_NUMPY_VERSION)
  47. if(NUMPY_FOUND)
  48. set(PYTHON_NUMPY_FOUND TRUE)
  49. message(STATUS "NumPy ver. ${PYTHON_NUMPY_VERSION} found (include: ${PYTHON_NUMPY_INCLUDE_DIR})")
  50. endif()
  51. # caffe_clear_vars(__result __output __error_value __values __ver_check __error_value)