From fff3f9576850ddd24f128be7e63fb58a06c11564 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Wed, 7 Nov 2012 11:44:39 +0000 Subject: Update to make it work with new debian-like py3.3 packages. A bit hackish (this arch-dependent stuff makes things a bit complex), and probably only working for amd64 arch, but at least should not create any regression... --- build_files/cmake/Modules/FindPythonLibsUnix.cmake | 53 ++++++++++++++++++++-- 1 file changed, 48 insertions(+), 5 deletions(-) (limited to 'build_files') diff --git a/build_files/cmake/Modules/FindPythonLibsUnix.cmake b/build_files/cmake/Modules/FindPythonLibsUnix.cmake index 34394864861..5418fb00696 100644 --- a/build_files/cmake/Modules/FindPythonLibsUnix.cmake +++ b/build_files/cmake/Modules/FindPythonLibsUnix.cmake @@ -9,6 +9,7 @@ # This module defines # PYTHON_VERSION # PYTHON_INCLUDE_DIRS +# PYTHON_INCLUDE_CONFIG_DIRS # PYTHON_LIBRARIES # PYTHON_LIBPATH, Used for installation # PYTHON_LINKFLAGS @@ -46,17 +47,25 @@ MARK_AS_ADVANCED(PYTHON_LINKFLAGS) # if the user passes these defines as args, we dont want to overwrite SET(_IS_INC_DEF OFF) +SET(_IS_INC_CONF_DEF OFF) SET(_IS_LIB_DEF OFF) +SET(_IS_LIB_PATH_DEF OFF) IF(DEFINED PYTHON_INCLUDE_DIR) SET(_IS_INC_DEF ON) ENDIF() +IF(DEFINED PYTHON_INCLUDE_CONFIG_DIR) + SET(_IS_INC_CONF_DEF ON) +ENDIF() IF(DEFINED PYTHON_LIBRARY) SET(_IS_LIB_DEF ON) ENDIF() +IF(DEFINED PYTHON_LIBPATH) + SET(_IS_LIB_PATH_DEF ON) +ENDIF() # only search for the dirs if we havn't already -IF((NOT _IS_INC_DEF) OR (NOT _IS_LIB_DEF)) +IF((NOT _IS_INC_DEF) OR (NOT _IS_INC_CONF_DEF) OR (NOT _IS_LIB_DEF) OR (NOT _IS_LIB_PATH_DEF)) SET(_python_ABI_FLAGS "m;mu;u; " # release @@ -85,6 +94,19 @@ IF((NOT _IS_INC_DEF) OR (NOT _IS_LIB_DEF)) ${_python_SEARCH_DIRS} PATH_SUFFIXES include/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS} + include/x86_64-linux-gnu/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS} + ) + ENDIF() + + IF(NOT DEFINED PYTHON_INCLUDE_CONFIG_DIR) + FIND_PATH(PYTHON_INCLUDE_CONFIG_DIR + NAMES + pyconfig.h + HINTS + ${_python_SEARCH_DIRS} + PATH_SUFFIXES + include/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS} + include/x86_64-linux-gnu/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS} ) ENDIF() @@ -99,16 +121,33 @@ IF((NOT _IS_INC_DEF) OR (NOT _IS_LIB_DEF)) ) ENDIF() - IF(PYTHON_LIBRARY AND PYTHON_INCLUDE_DIR) + IF(NOT DEFINED PYTHON_LIBPATH) + FIND_PATH(PYTHON_LIBPATH + NAMES + "python${PYTHON_VERSION}/abc.py" # This is a bit hackish! :/ + HINTS + ${_python_SEARCH_DIRS} + PATH_SUFFIXES + lib64 lib + ) + ENDIF() + + IF(PYTHON_LIBRARY AND PYTHON_LIBPATH AND PYTHON_INCLUDE_DIR AND PYTHON_INCLUDE_CONFIG_DIR) break() ELSE() # ensure we dont find values from 2 different ABI versions IF(NOT _IS_INC_DEF) UNSET(PYTHON_INCLUDE_DIR CACHE) ENDIF() + IF(NOT _IS_INC_CONF_DEF) + UNSET(PYTHON_INCLUDE_CONFIG_DIR CACHE) + ENDIF() IF(NOT _IS_LIB_DEF) UNSET(PYTHON_LIBRARY CACHE) ENDIF() + IF(NOT _IS_LIB_PATH_DEF) + UNSET(PYTHON_LIBPATH CACHE) + ENDIF() ENDIF() ENDFOREACH() @@ -120,22 +159,25 @@ IF((NOT _IS_INC_DEF) OR (NOT _IS_LIB_DEF)) ENDIF() UNSET(_IS_INC_DEF) +UNSET(_IS_INC_CONF_DEF) UNSET(_IS_LIB_DEF) +UNSET(_IS_LIB_PATH_DEF) # handle the QUIETLY and REQUIRED arguments and SET PYTHONLIBSUNIX_FOUND to TRUE IF # all listed variables are TRUE INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonLibsUnix DEFAULT_MSG - PYTHON_LIBRARY PYTHON_INCLUDE_DIR) + PYTHON_LIBRARY PYTHON_LIBPATH PYTHON_INCLUDE_DIR PYTHON_INCLUDE_CONFIG_DIR) IF(PYTHONLIBSUNIX_FOUND) # Assign cache items - SET(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR}) + SET(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR} ${PYTHON_INCLUDE_CONFIG_DIR}) SET(PYTHON_LIBRARIES ${PYTHON_LIBRARY}) # we need this for installation - GET_FILENAME_COMPONENT(PYTHON_LIBPATH ${PYTHON_LIBRARY} PATH) + # XXX No more valid with debian-like py3.3 packages... +# GET_FILENAME_COMPONENT(PYTHON_LIBPATH ${PYTHON_LIBRARY} PATH) # not used # SET(PYTHON_BINARY ${PYTHON_EXECUTABLE} CACHE STRING "") @@ -143,5 +185,6 @@ ENDIF() MARK_AS_ADVANCED( PYTHON_INCLUDE_DIR + PYTHON_INCLUDE_CONFIG_DIR PYTHON_LIBRARY ) -- cgit v1.2.3