Changeset: 7ca7b3880630 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7ca7b3880630 Modified Files: CMakeLists.txt Branch: cmake-fun Log Message:
Simplify numpy module search. diffs (93 lines): diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -672,7 +672,7 @@ if(NOT ${PYTHON2} STREQUAL "NO") endif() set(PYTHON2_LIBDIR "AUTO" CACHE PATH "Path for Python 2 library directory (where Python 2 modules should be installed)") - if(${PYTHON2_LIBDIR} STREQUAL "YES" OR ${PYTHON2_LIBDIR} STREQUAL "AUTO") + if(HAVE_PYTHON2 AND ${PYTHON2_LIBDIR} STREQUAL "YES" OR ${PYTHON2_LIBDIR} STREQUAL "AUTO") if(CMAKE_CROSSCOMPILING) if(${PYTHON2} STREQUAL "YES") message(FATAL_ERROR "Must specify PYTHON2_LIBDIR when cross compiling") @@ -752,7 +752,7 @@ if(NOT ${PYTHON3} STREQUAL "NO") endif() set(PYTHON3_LIBDIR "AUTO" CACHE PATH "Path for Python 3 library directory (where Python 3 modules should be installed)") - if(${PYTHON3_LIBDIR} STREQUAL "YES" OR ${PYTHON3_LIBDIR} STREQUAL "AUTO") + if(HAVE_PYTHON3 AND ${PYTHON3_LIBDIR} STREQUAL "YES" OR ${PYTHON3_LIBDIR} STREQUAL "AUTO") if(CMAKE_CROSSCOMPILING) if(${PYTHON3} STREQUAL "YES") message(FATAL_ERROR "Must specify PYTHON3_LIBDIR when cross compiling") @@ -1297,7 +1297,7 @@ if(NOT ${ENABLE_RINTEGRATION} STREQUAL " endif() message(STATUS "Checking major version of R interpreter") - exec_program("${R_INTERPRETER}" ARGS "RHOME" OUTPUT_VARIABLE RHOME RETURN_VALUE R_HOME_RC) + exec_program("${R_INTERPRETER}" ARGS "RHOME" OUTPUT_VARIABLE R_HOME_OUTPUT RETURN_VALUE R_HOME_RC) exec_program("${R_INTERPRETER}" ARGS "CMD config --cppflags" OUTPUT_VARIABLE R_CPP_OUTPUT RETURN_VALUE R_CPP_RC) exec_program("${R_INTERPRETER}" ARGS "CMD config --ldflags" OUTPUT_VARIABLE R_LD_OUTPUT RETURN_VALUE R_LD_RC) if(R_HOME_RC EQUAL 0 AND R_CPP_RC EQUAL 0 AND R_LD_RC EQUAL 0) @@ -1306,6 +1306,7 @@ if(NOT ${ENABLE_RINTEGRATION} STREQUAL " string(REPLACE "-fopenmp=libgomp" "" R_LD_OUTPUT ${R_LD_OUTPUT}) set(R_LIBRARIES "${R_LD_OUTPUT}") set(HAVE_LIBR ON) + set(RHOME ${R_HOME_OUTPUT}) elseif(${ENABLE_RINTEGRATION} STREQUAL "YES") message(FATAL_ERROR "R executable required for R integration support") else() @@ -1313,7 +1314,7 @@ if(NOT ${ENABLE_RINTEGRATION} STREQUAL " endif() endif() -function(testPythonIntegration HAVE_NUMPY PY_INCLUDE_DIR PY_LIBRARIES PY_MAJOR_VERSION PY_MINOR_VERSION INTEGRATION_ENABLED INTERPRETER_PATH INTERPRETER_CONFIG) +function(testPythonIntegration HAVE_LIBPY PY_INCLUDE_DIR PY_LIBRARIES PY_MAJOR_VERSION PY_MINOR_VERSION INTEGRATION_ENABLED INTERPRETER_PATH INTERPRETER_CONFIG) if(WIN32) find_library(PYTHON_LIBRARY "python${PY_MAJOR_VERSION}${PY_MINOR_VERSION}") if(PYTHON_LIBRARY) @@ -1342,31 +1343,24 @@ function(testPythonIntegration HAVE_NUMP message(STATUS "Checking for numpy version") exec_program("${INTERPRETER_PATH}" ARGS "-c \"import numpy; print(int(numpy.__version__.split('.').__getitem__(1)) >= 7)\"" OUTPUT_VARIABLE NUMPY_OUTPUT RETURN_VALUE NUMPY_RETURN_CODE) - if(NUMPY_RETURN_CODE EQUAL 0 AND NUMPY_OUTPUT STREQUAL "True") - check_include_file("numpy/numpyconfig.h" NUMPY_HEADERS) - if(NUMPY_HEADERS) - set(NUMPY_HEADERS "True") + if(NUMPY_RETURN_CODE EQUAL 0 AND "${NUMPY_OUTPUT}" STREQUAL "True") + exec_program("${INTERPRETER_PATH}" ARGS "-c \"import distutils.sysconfig, os; print(os.path.isfile(os.path.join(distutils.sysconfig.get_python_inc(), 'Python.h')))\"" OUTPUT_VARIABLE PYTHON_HEADERS RETURN_VALUE PYTHON_HEADERS_RC) + exec_program("${INTERPRETER_PATH}" ARGS "-c \"from distutils.sysconfig import get_python_inc; import numpy; print(get_python_inc() + ';' + numpy.get_include())\"" OUTPUT_VARIABLE PYTHON_CPP_FLAGS RETURN_VALUE PYTHON_CPP_RC) + if("${PYTHON_HEADERS}" STREQUAL "True" AND PYTHON_HEADERS_RC EQUAL 0 AND PYTHON_CPP_RC EQUAL 0) + set(${HAVE_LIBPY} YES PARENT_SCOPE) + set(${PY_INCLUDE_DIR} "${PYTHON_CPP_FLAGS}" PARENT_SCOPE) + message(STATUS "numpy version >= 1.7.0 for Python ${PY_MAJOR_VERSION} found") else() - exec_program("${INTERPRETER_PATH}" ARGS "-c \"import numpy, os; print(os.path.isfile(os.path.join(numpy.get_include(), 'numpy/arrayobject.h')))\"" OUTPUT_VARIABLE NUMPY_HEADERS RETURN_VALUE NUMPY_HEADERS_RETURN_CODE) - if(NOT NUMPY_HEADERS_RETURN_CODE) - unset(NUMPY_HEADERS) + if(NOT PYTHON_HEADERS_RC EQUAL 0) + set(PYTHON_ERROR "Python.h not found") + else() + set(PYTHON_ERROR "Numpy includes not found") endif() - endif() - if(NUMPY_HEADERS) - exec_program("${INTERPRETER_PATH}" ARGS "-c \"import distutils.sysconfig, os; print(os.path.isfile(os.path.join(distutils.sysconfig.get_python_inc(), 'Python.h')))\"" OUTPUT_VARIABLE PYTHON_HEADERS RETURN_VALUE PYTHON_HEADERS_RC) - exec_program("${INTERPRETER_PATH}" ARGS "-c \"from distutils.sysconfig import get_python_inc; import numpy; print(get_python_inc() + ';' + numpy.get_include())\"" OUTPUT_VARIABLE PYTHON_CPP_FLAGS RETURN_VALUE PYTHON_CPP_RC) - if(PYTHON_HEADERS_RC EQUAL 0 AND PYTHON_HEADERS STREQUAL "True" AND PYTHON_HEADERS_RC EQUAL 0 AND PYTHON_CPP_RC EQUAL 0) - set(${HAVE_NUMPY} YES PARENT_SCOPE) - set(${PY_INCLUDE_DIR} "${PYTHON_CPP_FLAGS}" PARENT_SCOPE) - elseif(${INTEGRATION_ENABLED} STREQUAL "AUTO") - message(WARNING "Python.h not found") + if(${INTEGRATION_ENABLED} STREQUAL "AUTO") + message(WARNING "${PYTHON_ERROR}") else() - message(FATAL_ERROR "Python.h not found") + message(FATAL_ERROR "${PYTHON_ERROR}") endif() - elseif(${INTEGRATION_ENABLED} STREQUAL "AUTO") - message(STATUS "(numpy/arrayobject.h not found)") - else() - message(FATAL_ERROR "(numpy/arrayobject.h not found)") endif() elseif(${INTEGRATION_ENABLED} STREQUAL "AUTO") message(WARNING "numpy version >= 1.7.0 required for Python ${PY_MAJOR_VERSION} integration support") _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list