Merging r44109 through r44128 from trunk into soc-2011-tomato
[blender-staging.git] / build_files / cmake / buildinfo.cmake
1 # This is called by cmake as an extermal process from
2 # ./source/creator/CMakeLists.txt to write ./source/creator/buildinfo.h
3
4 # The FindSubversion.cmake module is part of the standard distribution
5 include(FindSubversion)
6
7 # Extract working copy information for SOURCE_DIR into MY_XXX variables
8 # with a default in case anything fails, for examble when using git-svn
9 set(MY_WC_REVISION "unknown")
10 # Guess if this is a SVN working copy and then look up the revision
11 if(EXISTS ${SOURCE_DIR}/.svn/)
12         if(Subversion_FOUND)
13                 Subversion_WC_INFO(${SOURCE_DIR} MY)
14         endif()
15 endif()
16
17 # BUILD_PLATFORM and BUILD_PLATFORM are taken from CMake
18 # but BUILD_DATE and BUILD_TIME are plataform dependant
19 if(UNIX)
20         execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
21         execute_process(COMMAND date "+%H:%M:%S" OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE)
22 endif()
23 if(WIN32)
24         execute_process(COMMAND cmd /c date /t OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
25         execute_process(COMMAND cmd /c time /t OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE)
26 endif()
27
28 # Write a file with the SVNVERSION define
29 file(WRITE buildinfo.h.txt
30         "#define BUILD_REV \"${MY_WC_REVISION}\"\n"
31         "#define BUILD_DATE \"${BUILD_DATE}\"\n"
32         "#define BUILD_TIME \"${BUILD_TIME}\"\n"
33 )
34
35 # Copy the file to the final header only if the version changes
36 # and avoid needless rebuilds
37 # TODO: verify this comment is true, as BUILD_TIME probably changes
38 execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
39                         buildinfo.h.txt buildinfo.h)