fix for cmake not having the correct svn revision in buildinfo, now generate a header...
authorCampbell Barton <ideasman42@gmail.com>
Thu, 24 Feb 2011 17:57:35 +0000 (17:57 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 24 Feb 2011 17:57:35 +0000 (17:57 +0000)
CMakeLists.txt
build_files/cmake/buildinfo.cmake [new file with mode: 0644]
source/blender/editors/sculpt_paint/paint_utils.c
source/creator/CMakeLists.txt
source/creator/buildinfo.c
source/creator/creator.c

index 68a1b0e6fae5a4ae4bfe6a9f6163ee0108b771f8..53d96c9fdcd40516536844bb9f3bf8b67e0b86ad 100644 (file)
@@ -916,28 +916,6 @@ elseif(APPLE)
        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.
 
diff --git a/build_files/cmake/buildinfo.cmake b/build_files/cmake/buildinfo.cmake
new file mode 100644 (file)
index 0000000..e8b2caa
--- /dev/null
@@ -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)
index b02c0db7da429be0755f3c826efeb6c7c6a74c73..000db4c28f2594668b235ead8dd02c6eb9dac7e1 100644 (file)
@@ -395,7 +395,7 @@ void PAINT_OT_face_select_hide(wmOperatorType *ot)
        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);
index b7c134550cb00faa0cb9c0f622cb30055338b2cf..53ddc3bef9aa34c5e1cac12d7b13f04e91f62f09 100644 (file)
@@ -107,13 +107,17 @@ if(WIN32 AND NOT UNIX)
 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 @@ if(WITH_BUILDINFO)
                -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 @@ else()
        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})
index c3b9ea56c452132d1ea87065ee558c991e462157..65a3c432c864ffb32d3f9c020106c9e603bc428a 100644 (file)
  * ***** 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);
 
index f365f6509574be4677a1657be076ec0e9f1dab11..79c2829b0062fd10ed57cdfe835ac309f3b6227a 100644 (file)
 #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 @@ extern int pluginapi_force_ref(void);  /* from blenpluginapi:pluginapi.c */
 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);