[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35443] trunk/blender: CMake should find python now without manual options being set on linux.

Campbell Barton ideasman42 at gmail.com
Thu Mar 10 01:25:35 CET 2011


Revision: 35443
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35443
Author:   campbellbarton
Date:     2011-03-10 00:25:35 +0000 (Thu, 10 Mar 2011)
Log Message:
-----------
CMake should find python now without manual options being set on linux.

cmake on *nix detects python ABI flags for debug and release mode.
searches /usr /usr/local /opt/py32

Modified Paths:
--------------
    trunk/blender/CMakeLists.txt

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

Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt	2011-03-10 00:21:36 UTC (rev 35442)
+++ trunk/blender/CMakeLists.txt	2011-03-10 00:25:35 UTC (rev 35443)
@@ -265,43 +265,19 @@
 
 
 	if(WITH_PYTHON)
-		# No way to set py31. remove for now.
+		# No way to set py32. remove for now.
 		# find_package(PythonLibs)
-		# set(PYTHON_BINARY python) # not used yet
 
-		set(PYTHON /usr)
+		# defines...
+		
+		#  PYTHON_VERSION
+		#  PYTHON_INCLUDE_DIRS
+		#  PYTHON_LIBRARY
+		#  PYTHON_LIBPATH
+		#  PYTHON_LINKFLAGS
 
-		# ABI can be any of these chars in this order 'dmu', debug/pymalloc/unicode
-		# TODO, detect available ABI's, may want to make this a module and detect this better
-		if(CMAKE_BUILD_TYPE STREQUAL Debug)
-			set(PYTHON_ABI_FLAGS "d")
-		else()
-			set(PYTHON_ABI_FLAGS "m")
-		endif()
+		include(build_files/cmake/FindPythonLibsUnix.cmake)
 
-		set(PYTHON_VERSION 3.2 CACHE STRING "")
-		mark_as_advanced(PYTHON_VERSION)
-		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)
-		# find_package(PythonInterp) # not used yet
-		# set(PYTHON_BINARY ${PYTHON_EXECUTABLE} CACHE STRING "")
-
-		set(PYTHON_LINKFLAGS "-Xlinker -export-dynamic")
-		mark_as_advanced(PYTHON_LINKFLAGS)
-
-		find_file(
-			_Found_PYTHON_H
-			Python.h
-			${PYTHON_INCLUDE_DIRS}
-		)
-
-		if(NOT _Found_PYTHON_H)
-			message(FATAL_ERROR "Python.h not found in  ${PYTHON_INCLUDE_DIRS}")
-		endif()
 	endif()
 
 	if(WITH_SDL)

Added: trunk/blender/build_files/cmake/FindPythonLibsUnix.cmake
===================================================================
--- trunk/blender/build_files/cmake/FindPythonLibsUnix.cmake	                        (rev 0)
+++ trunk/blender/build_files/cmake/FindPythonLibsUnix.cmake	2011-03-10 00:25:35 UTC (rev 35443)
@@ -0,0 +1,72 @@
+# - Find python libraries
+#
+#  PYTHON_VERSION
+#  PYTHON_INCLUDE_DIRS
+#  PYTHON_LIBRARY
+#  PYTHON_LIBPATH
+#  PYTHON_LINKFLAGS
+
+#=============================================================================
+
+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
+	"m;mu;u; ")
+
+string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
+set(_Python_PATHS
+  "/opt/py${_PYTHON_VERSION_NO_DOTS}" "/usr" "/usr/local")
+
+if(NOT DEFINED PYTHON_INCLUDE_DIRS)
+	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)
+			break()
+		endif()
+	endforeach()
+
+	if(NOT _Found_PYTHON_H)
+		message(FATAL_ERROR "Python.h not found")
+	endif()
+endif()
+
+#=============================================================================
+# now the python versions are found
+
+
+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 "")
+
+if(NOT EXISTS "${PYTHON_INCLUDE_DIRS}/Python.h")
+	message(FATAL_ERROR " Missing python header: ${PYTHON_INCLUDE_DIRS}/Python.h")
+endif()




More information about the Bf-blender-cvs mailing list