[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35131] trunk/blender: fix for cmake not having the correct svn revision in buildinfo, now generate a header every build with the time, date, svn revision.

Campbell Barton ideasman42 at gmail.com
Thu Feb 24 18:57:36 CET 2011


Revision: 35131
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35131
Author:   campbellbarton
Date:     2011-02-24 17:57:35 +0000 (Thu, 24 Feb 2011)
Log Message:
-----------
fix for cmake not having the correct svn revision in buildinfo, now generate a header every build with the time, date, svn revision.

Modified Paths:
--------------
    trunk/blender/CMakeLists.txt
    trunk/blender/source/blender/editors/sculpt_paint/paint_utils.c
    trunk/blender/source/creator/CMakeLists.txt
    trunk/blender/source/creator/buildinfo.c
    trunk/blender/source/creator/creator.c

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

Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt	2011-02-24 17:22:45 UTC (rev 35130)
+++ trunk/blender/CMakeLists.txt	2011-02-24 17:57:35 UTC (rev 35131)
@@ -916,28 +916,6 @@
 	endif()
 endif()
 
-
-# buildinfo
-if(WITH_BUILDINFO)
-	# BUILD_PLATFORM and BUILD_PLATFORM are taken from CMake
-	if(UNIX)
-		execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
-		execute_process(COMMAND date "+%H:%M:%S" OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE)  
-		execute_process(COMMAND svnversion ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE BUILD_REV RESULT_VARIABLE BUILD_REV_RETURN OUTPUT_STRIP_TRAILING_WHITESPACE)
-		if(BUILD_REV_RETURN)
-			set(BUILD_REV "unknown")
-		endif()
-	endif()
-	
-	if(WIN32)
-		execute_process(COMMAND cmd /c date /t OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
-		execute_process(COMMAND cmd /c time /t OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE)  
-		execute_process(COMMAND svnversion ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE BUILD_REV RESULT_VARIABLE BUILD_REV_RETURN OUTPUT_STRIP_TRAILING_WHITESPACE)
-		if(BUILD_REV_RETURN)
-			set(BUILD_REV "unknown")
-		endif()
-	endif()
-endif()
 #-----------------------------------------------------------------------------
 # Common.
 

Added: trunk/blender/build_files/cmake/buildinfo.cmake
===================================================================
--- trunk/blender/build_files/cmake/buildinfo.cmake	                        (rev 0)
+++ trunk/blender/build_files/cmake/buildinfo.cmake	2011-02-24 17:57:35 UTC (rev 35131)
@@ -0,0 +1,34 @@
+# this is called by cmake as an extermal process from
+# ./source/creator/CMakeLists.txt to write ./source/creator/buildinfo.h
+
+# the FindSubversion.cmake module is part of the standard distribution
+include(FindSubversion)
+# extract working copy information for SOURCE_DIR into MY_XXX variables
+if(Subversion_FOUND)
+	Subversion_WC_INFO(${SOURCE_DIR} MY)
+else()
+	set(MY_WC_REVISION "unknown")
+endif()
+
+# BUILD_PLATFORM and BUILD_PLATFORM are taken from CMake
+if(UNIX)
+	execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
+	execute_process(COMMAND date "+%H:%M:%S" OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE)  
+endif()
+
+if(WIN32)
+	execute_process(COMMAND cmd /c date /t OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
+	execute_process(COMMAND cmd /c time /t OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE)  
+endif()
+
+# write a file with the SVNVERSION define
+file(WRITE buildinfo.h.txt
+	"#define BUILD_REV ${MY_WC_REVISION}\n"
+	"#define BUILD_DATE ${BUILD_DATE}\n"
+	"#define BUILD_TIME ${BUILD_TIME}\n"
+)
+
+# copy the file to the final header only if the version changes
+# reduces needless rebuilds
+execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
+                        buildinfo.h.txt buildinfo.h)

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_utils.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_utils.c	2011-02-24 17:22:45 UTC (rev 35130)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_utils.c	2011-02-24 17:57:35 UTC (rev 35131)
@@ -395,7 +395,7 @@
 	RNA_def_boolean(ot->srna, "unselected", 0, "Unselected", "Hide unselected rather than selected objects.");
 }
 
-static int face_select_reveal_exec(bContext *C, wmOperator *op)
+static int face_select_reveal_exec(bContext *C, wmOperator *UNUSED(op))
 {
 	Object *ob= CTX_data_active_object(C);
 	paintface_reveal(ob);

Modified: trunk/blender/source/creator/CMakeLists.txt
===================================================================
--- trunk/blender/source/creator/CMakeLists.txt	2011-02-24 17:22:45 UTC (rev 35130)
+++ trunk/blender/source/creator/CMakeLists.txt	2011-02-24 17:57:35 UTC (rev 35131)
@@ -107,13 +107,17 @@
 endif()
 
 if(WITH_BUILDINFO)
+	# --------------------------------------------------------------------------
+	# These defines could all be moved into the header below
 	string(REPLACE " " "\ " BUILDINFO_CFLAGS "${CMAKE_C_FLAGS}")
 	string(REPLACE " " "\ " BUILDINFO_CXXFLAGS "${CMAKE_CXX_FLAGS}")
 	string(REPLACE " " "\ " BUILDINFO_LINKFLAGS "${PLATFORM_LINKFLAGS}")
 	add_definitions(
-		-DBUILD_DATE="${BUILD_DATE}"
-		-DBUILD_TIME="${BUILD_TIME}"
-		-DBUILD_REV="${BUILD_REV}"
+		# # define in header now, else these get out of date on rebuilds.
+		# -DBUILD_DATE="${BUILD_DATE}"
+		# -DBUILD_TIME="${BUILD_TIME}"
+		# -DBUILD_REV="${BUILD_REV}"
+		-DWITH_BUILDINFO_HEADER # alternative to lines above
 		-DBUILD_PLATFORM="${CMAKE_SYSTEM_NAME}"
 		-DBUILD_TYPE="${CMAKE_BUILD_TYPE}"
 		-DBUILD_CFLAGS="${BUILDINFO_CFLAGS}"
@@ -122,6 +126,32 @@
 		-DBUILD_SYSTEM="CMake"
 	)
 
+	# --------------------------------------------------------------------------
+	# write header for values that change each build
+	# note, generaed file is in build dir's source/creator
+	#       except when used as an include path.
+
+	# include the output directory, where the buildinfo.h file is generated
+	include_directories(${CMAKE_BINARY_DIR}/source/creator)
+	message(WARNING "${CMAKE_CURRENT_SOURCE_DIR}")
+	# a custom target that is always built
+	add_custom_target(buildinfo ALL
+		DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/buildinfo.h)
+
+	# creates svnheader.h using cmake script
+	add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/buildinfo.h
+		COMMAND ${CMAKE_COMMAND}
+		-DSOURCE_DIR=${CMAKE_SOURCE_DIR}
+		-P ${CMAKE_SOURCE_DIR}/build_files/cmake/buildinfo.cmake)
+
+	# buildinfo.h is a generated file
+	set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/buildinfo.h
+		PROPERTIES GENERATED TRUE
+		HEADER_FILE_ONLY TRUE)
+		
+	# add deps below
+	# -------------- done with header values.
+
 	list(APPEND SRC
 		buildinfo.c
 	)
@@ -144,6 +174,11 @@
 	add_executable(blender ${EXETYPE} ${SRC})
 endif()
 
+if(WITH_BUILDINFO)
+	# explicitly say that the executable depends on the buildinfo
+	add_dependencies(blender buildinfo)
+endif()
+
 # Post build steps for bundling/packaging.
 
 set(TARGETDIR ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR})

Modified: trunk/blender/source/creator/buildinfo.c
===================================================================
--- trunk/blender/source/creator/buildinfo.c	2011-02-24 17:22:45 UTC (rev 35130)
+++ trunk/blender/source/creator/buildinfo.c	2011-02-24 17:57:35 UTC (rev 35131)
@@ -27,15 +27,21 @@
  * ***** END GPL LICENSE BLOCK *****
  */
 
+#ifdef WITH_BUILDINFO_HEADER
+#include "buildinfo.h"
+#endif
+
 #ifdef BUILD_DATE
 
 /* copied from BLI_utildefines.h */
 #define STRINGIFY_ARG(x) #x
 #define STRINGIFY(x) STRINGIFY_ARG(x)
 
+/* currently only these are defined in the header */
 char build_date[]= STRINGIFY(BUILD_DATE);
 char build_time[]= STRINGIFY(BUILD_TIME);
 char build_rev[]= STRINGIFY(BUILD_REV);
+
 char build_platform[]= STRINGIFY(BUILD_PLATFORM);
 char build_type[]= STRINGIFY(BUILD_TYPE);
 

Modified: trunk/blender/source/creator/creator.c
===================================================================
--- trunk/blender/source/creator/creator.c	2011-02-24 17:22:45 UTC (rev 35130)
+++ trunk/blender/source/creator/creator.c	2011-02-24 17:57:35 UTC (rev 35131)
@@ -97,6 +97,10 @@
 #include "GPU_draw.h"
 #include "GPU_extensions.h"
 
+#ifdef WITH_BUILDINFO_HEADER
+#define BUILD_DATE
+#endif
+
 /* for passing information between creator and gameengine */
 #ifdef WITH_GAMEENGINE
 #include "GEN_messaging.h"
@@ -141,7 +145,7 @@
 char bprogname[FILE_MAX]; /* from blenpluginapi:pluginapi.c */
 char btempdir[FILE_MAX];
 
-#define BLEND_VERSION_STRING_FMT "Blender %d.%02d (sub %d) Build\n", BLENDER_VERSION/100, BLENDER_VERSION%100, BLENDER_SUBVERSION
+#define BLEND_VERSION_STRING_FMT "Blender %d.%02d (sub %d)\n", BLENDER_VERSION/100, BLENDER_VERSION%100, BLENDER_SUBVERSION
 
 /* Initialise callbacks for the modules that need them */
 static void setCallbacks(void); 




More information about the Bf-blender-cvs mailing list