Revision: 37619
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37619
Author:   campbellbarton
Date:     2011-06-18 15:15:31 +0000 (Sat, 18 Jun 2011)
Log Message:
-----------
make better use of cmake builtin funcitons for finding python library/header

Modified Paths:
--------------
    trunk/blender/build_files/cmake/FindPythonLibsUnix.cmake

Modified: trunk/blender/build_files/cmake/FindPythonLibsUnix.cmake
===================================================================
--- trunk/blender/build_files/cmake/FindPythonLibsUnix.cmake    2011-06-18 
14:12:54 UTC (rev 37618)
+++ trunk/blender/build_files/cmake/FindPythonLibsUnix.cmake    2011-06-18 
15:15:31 UTC (rev 37619)
@@ -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 @@
    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})
+       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")
+               find_path(PYTHON_INCLUDE_DIR
+                       NAMES Python.h
+                       HINTS ${_python_SEARCH_DIRS}
+                       PATH_SUFFIXES 
include/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS}
+               )
 
-                       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)
+               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

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to