[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35019] trunk/blender/build_files/cmake/ macros.cmake: better macro for getting the blender version from BKE_blender .h, also re-run CMake if BKE_blender.h changes.

Campbell Barton ideasman42 at gmail.com
Mon Feb 21 09:31:01 CET 2011


Revision: 35019
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35019
Author:   campbellbarton
Date:     2011-02-21 08:31:00 +0000 (Mon, 21 Feb 2011)
Log Message:
-----------
better macro for getting the blender version from BKE_blender.h, also re-run CMake if BKE_blender.h changes.

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

Modified: trunk/blender/build_files/cmake/macros.cmake
===================================================================
--- trunk/blender/build_files/cmake/macros.cmake	2011-02-21 07:43:15 UTC (rev 35018)
+++ trunk/blender/build_files/cmake/macros.cmake	2011-02-21 08:31:00 UTC (rev 35019)
@@ -332,35 +332,39 @@
 endmacro()
 
 macro(get_blender_version)
-	file(READ ${CMAKE_SOURCE_DIR}/source/blender/blenkernel/BKE_blender.h CONTENT)
-	string(REGEX REPLACE "\n" ";" CONTENT "${CONTENT}")
-	string(REGEX REPLACE "\t" ";" CONTENT "${CONTENT}")
-	string(REGEX REPLACE " " ";" CONTENT "${CONTENT}")
+	# So cmake depends on BKE_blender.h, beware of inf-loops!
+	CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/source/blender/blenkernel/BKE_blender.h ${CMAKE_BINARY_DIR}/source/blender/blenkernel/BKE_blender.h.done)
 
-	foreach(ITEM ${CONTENT})
-		if(LASTITEM MATCHES "^BLENDER_VERSION$")
-			MATH(EXPR BLENDER_VERSION_MAJOR "${ITEM} / 100")
-			MATH(EXPR BLENDER_VERSION_MINOR "${ITEM} % 100")
-			set(BLENDER_VERSION "${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}")
-		endif()
+	file(STRINGS ${CMAKE_SOURCE_DIR}/source/blender/blenkernel/BKE_blender.h _contents REGEX "^#define[ \t]+BLENDER_.*$")
 
-		if(LASTITEM MATCHES "^BLENDER_SUBVERSION$")
-			set(BLENDER_SUBVERSION ${ITEM})
-		endif()
+	string(REGEX REPLACE ".*#define[ \t]+BLENDER_VERSION[ \t]+([0-9]+).*" "\\1" _out_version "${_contents}")
+	string(REGEX REPLACE ".*#define[ \t]+BLENDER_SUBVERSION[ \t]+([0-9]+).*" "\\1" _out_subversion "${_contents}")
+	string(REGEX REPLACE ".*#define[ \t]+BLENDER_VERSION_CHAR[ \t]+([a-z]+).*" "\\1" _out_version_char "${_contents}")
+	string(REGEX REPLACE ".*#define[ \t]+BLENDER_VERSION_CYCLE[ \t]+([a-z]+).*" "\\1" _out_version_cycle "${_contents}")
 
-		if(LASTITEM MATCHES "^BLENDER_MINVERSION$")
-			MATH(EXPR BLENDER_MINVERSION_MAJOR "${ITEM} / 100")
-			MATH(EXPR BLENDER_MINVERSION_MINOR "${ITEM} % 100")
-			set(BLENDER_MINVERSION "${BLENDER_MINVERSION_MAJOR}.${BLENDER_MINVERSION_MINOR}")
-		endif()
+	if(NOT ${_out_version} MATCHES "[0-9]+")
+		message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION")
+	endif()
 
-		if(LASTITEM MATCHES "^BLENDER_MINSUBVERSION$")
-			set(BLENDER_MINSUBVERSION ${ITEM})
-		endif()
+	if(NOT ${_out_subversion} MATCHES "[0-9]+")
+		message(FATAL_ERROR "Version parsing failed for BLENDER_SUBVERSION")
+	endif()
 
-		set(LASTITEM ${ITEM})
-	endforeach()
+	if(NOT ${_out_version_char} MATCHES "[a-z]+")
+		message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_CHAR")
+	endif()
 
-	# message(STATUS "Version major: ${BLENDER_VERSION_MAJOR}, Version minor: ${BLENDER_VERSION_MINOR}, Subversion: ${BLENDER_SUBVERSION}, Version: ${BLENDER_VERSION}")
-	# message(STATUS "Minversion major: ${BLENDER_MINVERSION_MAJOR}, Minversion minor: ${BLENDER_MINVERSION_MINOR}, MinSubversion: ${BLENDER_MINSUBVERSION}, Minversion: ${BLENDER_MINVERSION}")
+	if(NOT ${_out_version_cycle} MATCHES "[a-z]+")
+		message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_CYCLE")
+	endif()
+
+	MATH(EXPR BLENDER_VERSION_MAJOR "${_out_version} / 100")
+	MATH(EXPR BLENDER_VERSION_MINOR "${_out_version} % 100")
+	set(BLENDER_VERSION "${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}")
+
+	set(BLENDER_SUBVERSION ${_out_subversion})
+	set(BLENDER_VERSION_CHAR ${_out_version_char})
+	set(BLENDER_VERSION_CYCLE ${_out_version_cycle})
+
+	# message(STATUS "Version (Internal): ${BLENDER_VERSION}.${BLENDER_SUBVERSION}, Version (external): ${BLENDER_VERSION}${BLENDER_VERSION_CHAR}-${BLENDER_VERSION_CYCLE}")
 endmacro()




More information about the Bf-blender-cvs mailing list