Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-06-18 19:15:31 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-06-18 19:15:31 +0400
commit5e59d0c8bbeafec203770f81755d04c526f98376 (patch)
tree5a14ec38fe4a637f4eba19122d8c8ddc66625552 /build_files
parent968b2a8afbef552988d10df38e358d97d273dc8c (diff)
make better use of cmake builtin funcitons for finding python library/header
Diffstat (limited to 'build_files')
-rw-r--r--build_files/cmake/FindPythonLibsUnix.cmake94
1 files changed, 54 insertions, 40 deletions
diff --git a/build_files/cmake/FindPythonLibsUnix.cmake b/build_files/cmake/FindPythonLibsUnix.cmake
index 90bd79a924a..4f75fffb5ce 100644
--- a/build_files/cmake/FindPythonLibsUnix.cmake
+++ b/build_files/cmake/FindPythonLibsUnix.cmake
@@ -5,21 +5,30 @@
# PYTHON_LIBRARY
# PYTHON_LIBPATH
# PYTHON_LINKFLAGS
+# PYTHON_ROOT_DIR, The base directory to search for Python.
+# This can also be an environment variable.
#=============================================================================
+# If PYTHON_ROOT_DIR was defined in the environment, use it.
+IF(NOT PYTHON_ROOT_DIR AND NOT $ENV{PYTHON_ROOT_DIR} STREQUAL "")
+ SET(PYTHON_ROOT_DIR $ENV{PYTHON_ROOT_DIR})
+ENDIF()
+
+
set(PYTHON_VERSION 3.2 CACHE STRING "")
mark_as_advanced(PYTHON_VERSION)
set(PYTHON_LINKFLAGS "-Xlinker -export-dynamic")
mark_as_advanced(PYTHON_LINKFLAGS)
-set(_Python_ABI_FLAGS
+set(_python_ABI_FLAGS
"m;mu;u; ")
string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
-set(_Python_PATHS
+set(_python_SEARCH_DIRS
+ ${PYTHON_ROOT_DIR}
"$ENV{HOME}/py${_PYTHON_VERSION_NO_DOTS}"
"/opt/py${_PYTHON_VERSION_NO_DOTS}"
"/usr"
@@ -31,54 +40,59 @@ if(NOT DEFINED PYTHON_INCLUDE_DIRS OR
NOT DEFINED PYTHON_LIBPATH)
message(STATUS "Looking for include Python.h")
- set(_Found_PYTHON_H OFF)
-
- foreach(_CURRENT_PATH ${_Python_PATHS})
- foreach(_CURRENT_ABI_FLAGS ${_Python_ABI_FLAGS})
- if(CMAKE_BUILD_TYPE STREQUAL Debug)
- set(_CURRENT_ABI_FLAGS "d${_CURRENT_ABI_FLAGS}")
- endif()
- string(REPLACE " " "" _CURRENT_ABI_FLAGS ${_CURRENT_ABI_FLAGS})
-
- set(_Python_HEADER "${_CURRENT_PATH}/include/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS}/Python.h")
-
- if(EXISTS ${_Python_HEADER})
- message(STATUS "Checking for header: ${_Python_HEADER} - found")
- set(_Found_PYTHON_H ON)
- set(PYTHON ${_CURRENT_PATH})
- set(PYTHON_ABI_FLAGS ${_CURRENT_ABI_FLAGS})
- break()
- else()
- message(STATUS "Checking for header: ${_Python_HEADER}")
- endif()
- endforeach()
-
- if(_Found_PYTHON_H)
+
+ foreach(_CURRENT_ABI_FLAGS ${_python_ABI_FLAGS})
+ if(CMAKE_BUILD_TYPE STREQUAL Debug)
+ set(_CURRENT_ABI_FLAGS "d${_CURRENT_ABI_FLAGS}")
+ endif()
+ string(REPLACE " " "" _CURRENT_ABI_FLAGS ${_CURRENT_ABI_FLAGS})
+
+ find_path(PYTHON_INCLUDE_DIR
+ NAMES Python.h
+ HINTS ${_python_SEARCH_DIRS}
+ PATH_SUFFIXES include/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS}
+ )
+
+ find_library(PYTHON_LIBRARY
+ NAMES "python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS}"
+ HINTS ${_python_SEARCH_DIRS}
+ PATH_SUFFIXES lib64 lib
+ )
+
+ if((EXISTS ${PYTHON_LIBRARY}) AND (EXISTS ${PYTHON_INCLUDE_DIR}))
+ message(STATUS "Checking for header: ${PYTHON_INCLUDE_DIR} - found")
break()
+ else()
+ message(STATUS "Checking for header: ${PYTHON_INCLUDE_DIR}")
endif()
+
+ # ensure we dont find values from 2 different ABI versions
+ unset(PYTHON_INCLUDE_DIR CACHE)
+ unset(PYTHON_LIBRARY CACHE)
endforeach()
- if(NOT _Found_PYTHON_H)
- message(FATAL_ERROR "Python.h not found")
+ if((EXISTS ${PYTHON_LIBRARY}) AND (EXISTS ${PYTHON_INCLUDE_DIR}))
+ # Assign cache items
+ set(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR} CACHE STRING "")
+ set(PYTHON_LIBRARY ${PYTHON_LIBRARY} CACHE STRING "")
+ # not used
+ # set(PYTHON_BINARY ${PYTHON_EXECUTABLE} CACHE STRING "")
+
+ mark_as_advanced(
+ PYTHON_INCLUDE_DIRS
+ PYTHON_INCLUDE_DIR
+ PYTHON_LIBRARY
+ )
+ else()
+ message(FATAL_ERROR "Python not found")
endif()
- unset(_Found_PYTHON_H)
- unset(_Python_HEADER)
unset(_CURRENT_ABI_FLAGS)
unset(_CURRENT_PATH)
-
-
- set(PYTHON_INCLUDE_DIRS "${PYTHON}/include/python${PYTHON_VERSION}${PYTHON_ABI_FLAGS}" CACHE STRING "")
- mark_as_advanced(PYTHON_INCLUDE_DIRS)
- set(PYTHON_LIBRARY "python${PYTHON_VERSION}${PYTHON_ABI_FLAGS}" CACHE STRING "")
- mark_as_advanced(PYTHON_LIBRARY)
- set(PYTHON_LIBPATH ${PYTHON}/lib CACHE STRING "")
- mark_as_advanced(PYTHON_LIBPATH)
- # set(PYTHON_BINARY ${PYTHON_EXECUTABLE} CACHE STRING "")
endif()
-unset(_Python_ABI_FLAGS)
-unset(_Python_PATHS)
+unset(_python_ABI_FLAGS)
+unset(_python_SEARCH_DIRS)
#=============================================================================
# now the python versions are found