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

Reply via email to