Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <bastien@blender.org>2020-12-07 17:28:24 +0300
committerBastien Montagne <bastien@blender.org>2020-12-14 13:00:28 +0300
commit5d570c875eda8fb9aa3635f7f4edac0dc1eaedc8 (patch)
treec25cf569dd78fcacab71fc1fea1d1eed11bad276 /build_files/cmake/macros.cmake
parent53ed96641c60531e2ece17230879088df899f8a5 (diff)
Fix several issues with handling of numpy in CMake.
Issues were: * Abusing of `WITH_PYTHON_INSTALL_NUMPY` by both Audaspace and Mantaflow. - `PYTHON_INSTALL` options only decide whether we copy python (and some extra modules) in our Blender installation. On linux it makes much more sense to use global python installation. - Now we have instead a proper `WITH_PYTHON_NUMPY` * Bad assumptions regarding path of headers relative to path of python module. - In current Debian testing, modules are under `python3.9` directory, while headers are under `python3` directory. - Now we properly `find_path` for headers as well, modifying `find_python_package` to take an optional argument for headers. Note that the required changes done to `extern` libraries are in blender-specific files that do not exist upstream. Differential Revision: https://developer.blender.org/D9773
Diffstat (limited to 'build_files/cmake/macros.cmake')
-rw-r--r--build_files/cmake/macros.cmake40
1 files changed, 40 insertions, 0 deletions
diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake
index 202b44f611c..aeedcf30c31 100644
--- a/build_files/cmake/macros.cmake
+++ b/build_files/cmake/macros.cmake
@@ -1139,6 +1139,7 @@ endfunction()
function(find_python_package
package
+ relative_include_dir
)
string(TOUPPER ${package} _upper_package)
@@ -1170,7 +1171,10 @@ function(find_python_package
dist-packages
vendor-packages
NO_DEFAULT_PATH
+ DOC
+ "Path to python site-packages or dist-packages containing '${package}' module"
)
+ mark_as_advanced(PYTHON_${_upper_package}_PATH)
if(NOT EXISTS "${PYTHON_${_upper_package}_PATH}")
message(WARNING
@@ -1188,6 +1192,42 @@ function(find_python_package
set(WITH_PYTHON_INSTALL_${_upper_package} OFF PARENT_SCOPE)
else()
message(STATUS "${package} found at '${PYTHON_${_upper_package}_PATH}'")
+
+ if(NOT "${relative_include_dir}" STREQUAL "")
+ unset(PYTHON_${_upper_package}_INCLUDE_DIRS CACHE)
+ find_path(PYTHON_${_upper_package}_INCLUDE_DIRS
+ NAMES
+ "${package}/${relative_include_dir}"
+ HINTS
+ "${PYTHON_LIBPATH}/"
+ "${PYTHON_LIBPATH}/python${PYTHON_VERSION}/"
+ "${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/"
+ PATH_SUFFIXES
+ "site-packages/"
+ "dist-packages/"
+ "vendor-packages/"
+ NO_DEFAULT_PATH
+ DOC
+ "Path to python site-packages or dist-packages containing '${package}' module header files"
+ )
+ mark_as_advanced(PYTHON_${_upper_package}_INCLUDE_DIRS)
+
+ if(NOT EXISTS "${PYTHON_${_upper_package}_INCLUDE_DIRS}")
+ message(WARNING
+ "Python package '${package}' include dir path could not be found in:\n"
+ "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/${package}/${relative_include_dir}', "
+ "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/site-packages/${package}/${relative_include_dir}', "
+ "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/${package}/${relative_include_dir}', "
+ "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/${package}/${relative_include_dir}', "
+ "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/vendor-packages/${package}/${relative_include_dir}', "
+ "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/vendor-packages/${package}/${relative_include_dir}', "
+ "\n"
+ "The 'WITH_PYTHON_${_upper_package}' option will be disabled.\n"
+ "The build will be usable, only add-ons that depend on this package won't be functional."
+ )
+ set(WITH_PYTHON_${_upper_package} OFF PARENT_SCOPE)
+ endif()
+ endif()
endif()
endif()
endfunction()