Changeset: 344c27cb75f9 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=344c27cb75f9
Modified Files:
        CMakeLists.txt
Branch: cmake-fun
Log Message:

Find python libraries on Windows via the conventional way.


diffs (169 lines):

diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -661,8 +661,8 @@ if(NOT ${PYTHON2} STREQUAL "NO")
 
        if(HAVE_PYTHON2)
                string(LENGTH "${PY2_OUPUT_RES}" PY2_OUPUT_LENGTH)
-               string(SUBSTRING "${PY2_OUPUT_RES}" 7 ${PY2_OUPUT_LENGTH} 
PY2_VERSION) # Remove "Python "
-               if(PY2_VERSION LESS 2.6)
+               string(SUBSTRING "${PY2_OUPUT_RES}" 9 ${PY2_OUPUT_LENGTH} 
PY2_VERSION) # Remove "Python 2."
+               if(PY2_VERSION LESS 6)
                        set(HAVE_PYTHON2 NO)
                        if(${PYTHON2} STREQUAL "YES")
                                message(FATAL_ERROR "Python 2 executable is too 
old (<2.6)")
@@ -742,8 +742,8 @@ if(NOT ${PYTHON3} STREQUAL "NO")
 
        if(HAVE_PYTHON3)
                string(LENGTH "${PY3_OUPUT_RES}" PY3_OUPUT_LENGTH)
-               string(SUBSTRING "${PY3_OUPUT_RES}" 7 PY3_OUPUT_LENGTH 
PY3_VERSION) # Remove "Python "
-               if(PY3_VERSION LESS 3.5)
+               string(SUBSTRING "${PY3_OUPUT_RES}" 9 PY3_OUPUT_LENGTH 
PY3_VERSION) # Remove "Python 3."
+               if(PY3_VERSION LESS 5)
                        set(HAVE_PYTHON3 NO)
                        if(${PYTHON3} STREQUAL "YES")
                                message(FATAL_ERROR "Python 3 executable is too 
old (<3.5)")
@@ -1315,28 +1315,30 @@ if(NOT ${ENABLE_RINTEGRATION} STREQUAL "
        endif()
 endif()
 
-function(testPythonIntegration HAVE_NUMPY PY_INCLUDE_DIR PY_LIBRARIES 
PY_VERSION INTEGRATION_ENABLED INTERPRETER_PATH INTERPRETER_CONFIG)
-       if(NOT HAVE_PYTHON${PY_VERSION})
-               if(${INTEGRATION_ENABLED} STREQUAL "AUTO")
-                       message(WARNING "A valid python${PY_VERSION} 
interpreter is required for Python${PY_VERSION} integration")
+function(testPythonIntegration HAVE_NUMPY 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)
+                       set(${PY_LIBRARIES} "${PYTHON_LIBRARY}" PARENT_SCOPE)
+               elseif(${INTEGRATION_ENABLED} STREQUAL "AUTO")
+                       message(WARNING "Python library 
(python${PY_MAJOR_VERSION}${PY_MINOR_VERSION}) not found")
                else()
-                       message(FATAL_ERROR "A valid python${PY_VERSION} 
interpreter is required for Python${PY_VERSION} integration")
+                       message(FATAL_ERROR "Python library 
(python${PY_MAJOR_VERSION}${PY_MINOR_VERSION}) not found")
                endif()
-       endif()
-
-       if(${INTERPRETER_CONFIG} STREQUAL "AUTO")
-               set(PY_CONFIG_FILE "python${PY_VERSION}-config")
        else()
-               set(PY_CONFIG_FILE "${INTERPRETER_CONFIG}")
-       endif()
-
-       message(STATUS "Checking python${PY_VERSION}-config program")
-       exec_program("${PY_CONFIG_FILE}" ARGS "--ldflags" OUTPUT_VARIABLE 
PC_OUTPUT RETURN_VALUE PC_RETURN_CODE)
-       if(NOT PC_RETURN_CODE EQUAL 0)
-               if(${INTEGRATION_ENABLED} STREQUAL "AUTO")
-                       message(WARNING "python${PY_VERSION}-config library 
required for Python ${PY_VERSION} integration support")
+               if(${INTERPRETER_CONFIG} STREQUAL "AUTO")
+                       set(PY_CONFIG_FILE "python${PY_MAJOR_VERSION}-config")
                else()
-                       message(FATAL_ERROR "python${PY_VERSION}-config library 
required for Python ${PY_VERSION} integration support")
+                       set(PY_CONFIG_FILE "${INTERPRETER_CONFIG}")
+               endif()
+               message(STATUS "Checking python${PY_MAJOR_VERSION}-config 
program")
+               exec_program("${PY_CONFIG_FILE}" ARGS "--ldflags" 
OUTPUT_VARIABLE PYTHON_LD_FLAGS RETURN_VALUE PYTHON_LD_RC)
+               if(PYTHON_LD_RC EQUAL 0)
+                       set(${PY_LIBRARIES} "${PYTHON_LD_FLAGS}" PARENT_SCOPE)
+               elseif(${INTEGRATION_ENABLED} STREQUAL "AUTO")
+                       message(WARNING "python${PY_MAJOR_VERSION}-config 
library required for Python ${PY_MAJOR_VERSION} integration support (does not 
exist or returned an error)")
+               else()
+                       message(FATAL_ERROR "python${PY_MAJOR_VERSION}-config 
library required for Python ${PY_MAJOR_VERSION} integration support (does not 
exist or returned an error)")
                endif()
        endif()
 
@@ -1354,12 +1356,10 @@ function(testPythonIntegration HAVE_NUMP
                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)
-                       exec_program("${PY_CONFIG_FILE}" ARGS "--ldflags" 
OUTPUT_VARIABLE PYTHON_LD_FLAGS RETURN_VALUE PYTHON_LD_RC)
-                       if(PYTHON_HEADERS_RC EQUAL 0 AND PYTHON_HEADERS 
STREQUAL "True" AND PYTHON_HEADERS_RC EQUAL 0 AND PYTHON_CPP_RC EQUAL 0 AND 
PYTHON_LD_RC EQUAL 0)
+                       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)
-                               set(${PY_LIBRARIES} "${PYTHON_LD_FLAGS}" 
PARENT_SCOPE)
                        elseif(${INTEGRATION_ENABLED} STREQUAL "AUTO")
                                message(WARNING "Python.h not found")
                        else()
@@ -1371,26 +1371,29 @@ function(testPythonIntegration HAVE_NUMP
                        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_VERSION} integration support")
+               message(WARNING "numpy version >= 1.7.0 required for Python 
${PY_MAJOR_VERSION} integration support")
        else()
-               message(FATAL_ERROR "numpy version >= 1.7.0 required for Python 
${PY_VERSION} integration support")
+               message(FATAL_ERROR "numpy version >= 1.7.0 required for Python 
${PY_MAJOR_VERSION} integration support")
        endif()
 endfunction()
 
+if(NOT WIN32)
+       set(PYTHON2_CONFIG "AUTO" CACHE FILEPATH "python2-config is installed 
as FILE")
+       set(PYTHON3_CONFIG "AUTO" CACHE FILEPATH "python3-config is installed 
as FILE")
+endif()
+
 set(PY2_INCLUDE_DIR "")
 set(PY2_LIBRARIES "")
-set(PYTHON2_CONFIG "AUTO" CACHE FILEPATH "python2-config is installed as FILE")
 set(ENABLE_PY2INTEGRATION "AUTO" CACHE STRING "Enable support for Python 2 
integration into MonetDB (default=AUTO)") # Check with HAVE_LIBPY
-if(NOT ${ENABLE_PY2INTEGRATION} STREQUAL "NO")
-       testPythonIntegration(HAVE_LIBPY PY2_INCLUDE_DIR PY2_LIBRARIES "2" 
${ENABLE_PY2INTEGRATION} ${PYTHON2_INTERPRETER} ${PYTHON2_CONFIG})
+if(HAVE_PYTHON2 AND NOT ${ENABLE_PY2INTEGRATION} STREQUAL "NO")
+       testPythonIntegration(HAVE_LIBPY PY2_INCLUDE_DIR PY2_LIBRARIES "2" 
PY2_VERSION ${ENABLE_PY2INTEGRATION} ${PYTHON2_INTERPRETER} "${PYTHON2_CONFIG}")
 endif()
 
 set(PY3_INCLUDE_DIR "")
 set(PY3_LIBRARIES "")
-set(PYTHON3_CONFIG "AUTO" CACHE FILEPATH "python3-config is installed as FILE")
 set(ENABLE_PY3INTEGRATION "AUTO" CACHE STRING "enable support for Python 3 
integration into MonetDB (default=AUTO)") # Check with HAVE_LIBPY3
-if(NOT ${ENABLE_PY3INTEGRATION} STREQUAL "NO")
-       testPythonIntegration(HAVE_LIBPY3 PY3_INCLUDE_DIR PY3_LIBRARIES "3" 
${ENABLE_PY3INTEGRATION} ${PYTHON3_INTERPRETER} ${PYTHON3_CONFIG})
+if(HAVE_PYTHON3 AND NOT ${ENABLE_PY3INTEGRATION} STREQUAL "NO")
+       testPythonIntegration(HAVE_LIBPY3 PY3_INCLUDE_DIR PY3_LIBRARIES "3" 
PY3_VERSION ${ENABLE_PY3INTEGRATION} ${PYTHON3_INTERPRETER} "${PYTHON3_CONFIG}")
 endif()
 
 set(ODBC_INCLUDE_DIR "")
@@ -1411,7 +1414,7 @@ if(NOT ${ENABLE_ODBC} STREQUAL "NO")
                find_path(ODBCINST_INCLUDE odbcinst.h)
                if(ODBCINST_INCLUDE)
                        set(HAVE_ODBCINST_H YES)
-                       find_library(ODBCCP32_LIBRARY NAMES odbccp32)
+                       find_library(ODBCCP32_LIBRARY odbccp32)
                        if(ODBCCP32_LIBRARY)
                                set(ODBCINST_LIBRARIES 
"${ODBCINST_LIBRARIES};odbccp32")
                        endif()
@@ -1419,12 +1422,12 @@ if(NOT ${ENABLE_ODBC} STREQUAL "NO")
                        if(USER32_LIBRARY)
                                set(ODBCINST_LIBRARIES 
"${ODBCINST_LIBRARIES};${USER32_LIBRARY}")
                        endif()
-                       find_library(LEGACY_STDIO_LIBRARY NAMES 
legacy_stdio_definitions)
+                       find_library(LEGACY_STDIO_LIBRARY 
legacy_stdio_definitions)
                        if(LEGACY_STDIO_LIBRARY)
                                set(ODBCINST_LIBRARIES 
"${ODBCINST_LIBRARIES};legacy_stdio_definitions")
                        endif()
 
-                       find_library(ODBC32_LIBRARY NAMES odbc32)
+                       find_library(ODBC32_LIBRARY odbc32)
                        if(ODBC32_LIBRARY)
                                set(ODBC_LIBRARIES odbc32)
                        endif()
@@ -1462,7 +1465,7 @@ if(NOT ${ENABLE_ODBC} STREQUAL "NO")
                                endif()
                        endif()
 
-                       find_library(ODBCINST_LIBRARY NAMES odbcinst)
+                       find_library(ODBCINST_LIBRARY odbcinst)
                        if(ODBCINST_LIBRARY)
                                set(CMAKE_REQUIRED_LIBRARIES 
"${CMAKE_REQUIRED_LIBRARIES};odbcinst")
                                
check_symbol_exists("SQLGetPrivateProfileString" "odbcinst.h" 
HAVE_SQLGETPRIVATEPROFILESTRING)
@@ -1477,7 +1480,7 @@ if(NOT ${ENABLE_ODBC} STREQUAL "NO")
                                endif()
                        endif()
 
-                       find_library(ODBC_LIBRARY NAMES odbc)
+                       find_library(ODBC_LIBRARY odbc)
                        if(ODBC_LIBRARY)
                                set(CMAKE_REQUIRED_LIBRARIES 
"${CMAKE_REQUIRED_LIBRARIES};odbc")
                                check_symbol_exists("SQLGetDiagRec" 
"odbcinst.h" HAVE_SQLGETDIAGREC)
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to