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...

This commit is contained in:
Bastien Montagne
2012-11-07 11:44:39 +00:00
parent 9a365d061f
commit fff3f95768

View File

@@ -9,6 +9,7 @@
# This module defines # This module defines
# PYTHON_VERSION # PYTHON_VERSION
# PYTHON_INCLUDE_DIRS # PYTHON_INCLUDE_DIRS
# PYTHON_INCLUDE_CONFIG_DIRS
# PYTHON_LIBRARIES # PYTHON_LIBRARIES
# PYTHON_LIBPATH, Used for installation # PYTHON_LIBPATH, Used for installation
# PYTHON_LINKFLAGS # PYTHON_LINKFLAGS
@@ -46,17 +47,25 @@ MARK_AS_ADVANCED(PYTHON_LINKFLAGS)
# if the user passes these defines as args, we dont want to overwrite # if the user passes these defines as args, we dont want to overwrite
SET(_IS_INC_DEF OFF) SET(_IS_INC_DEF OFF)
SET(_IS_INC_CONF_DEF OFF)
SET(_IS_LIB_DEF OFF) SET(_IS_LIB_DEF OFF)
SET(_IS_LIB_PATH_DEF OFF)
IF(DEFINED PYTHON_INCLUDE_DIR) IF(DEFINED PYTHON_INCLUDE_DIR)
SET(_IS_INC_DEF ON) SET(_IS_INC_DEF ON)
ENDIF() ENDIF()
IF(DEFINED PYTHON_INCLUDE_CONFIG_DIR)
SET(_IS_INC_CONF_DEF ON)
ENDIF()
IF(DEFINED PYTHON_LIBRARY) IF(DEFINED PYTHON_LIBRARY)
SET(_IS_LIB_DEF ON) SET(_IS_LIB_DEF ON)
ENDIF() ENDIF()
IF(DEFINED PYTHON_LIBPATH)
SET(_IS_LIB_PATH_DEF ON)
ENDIF()
# only search for the dirs if we havn't already # 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 SET(_python_ABI_FLAGS
"m;mu;u; " # release "m;mu;u; " # release
@@ -85,6 +94,19 @@ IF((NOT _IS_INC_DEF) OR (NOT _IS_LIB_DEF))
${_python_SEARCH_DIRS} ${_python_SEARCH_DIRS}
PATH_SUFFIXES PATH_SUFFIXES
include/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS} 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() ENDIF()
@@ -99,16 +121,33 @@ IF((NOT _IS_INC_DEF) OR (NOT _IS_LIB_DEF))
) )
ENDIF() 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() break()
ELSE() ELSE()
# ensure we dont find values from 2 different ABI versions # ensure we dont find values from 2 different ABI versions
IF(NOT _IS_INC_DEF) IF(NOT _IS_INC_DEF)
UNSET(PYTHON_INCLUDE_DIR CACHE) UNSET(PYTHON_INCLUDE_DIR CACHE)
ENDIF() ENDIF()
IF(NOT _IS_INC_CONF_DEF)
UNSET(PYTHON_INCLUDE_CONFIG_DIR CACHE)
ENDIF()
IF(NOT _IS_LIB_DEF) IF(NOT _IS_LIB_DEF)
UNSET(PYTHON_LIBRARY CACHE) UNSET(PYTHON_LIBRARY CACHE)
ENDIF() ENDIF()
IF(NOT _IS_LIB_PATH_DEF)
UNSET(PYTHON_LIBPATH CACHE)
ENDIF()
ENDIF() ENDIF()
ENDFOREACH() ENDFOREACH()
@@ -120,22 +159,25 @@ IF((NOT _IS_INC_DEF) OR (NOT _IS_LIB_DEF))
ENDIF() ENDIF()
UNSET(_IS_INC_DEF) UNSET(_IS_INC_DEF)
UNSET(_IS_INC_CONF_DEF)
UNSET(_IS_LIB_DEF) UNSET(_IS_LIB_DEF)
UNSET(_IS_LIB_PATH_DEF)
# handle the QUIETLY and REQUIRED arguments and SET PYTHONLIBSUNIX_FOUND to TRUE IF # handle the QUIETLY and REQUIRED arguments and SET PYTHONLIBSUNIX_FOUND to TRUE IF
# all listed variables are TRUE # all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs) INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonLibsUnix DEFAULT_MSG 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) IF(PYTHONLIBSUNIX_FOUND)
# Assign cache items # 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}) SET(PYTHON_LIBRARIES ${PYTHON_LIBRARY})
# we need this for installation # 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 # not used
# SET(PYTHON_BINARY ${PYTHON_EXECUTABLE} CACHE STRING "") # SET(PYTHON_BINARY ${PYTHON_EXECUTABLE} CACHE STRING "")
@@ -143,5 +185,6 @@ ENDIF()
MARK_AS_ADVANCED( MARK_AS_ADVANCED(
PYTHON_INCLUDE_DIR PYTHON_INCLUDE_DIR
PYTHON_INCLUDE_CONFIG_DIR
PYTHON_LIBRARY PYTHON_LIBRARY
) )