[Bf-blender-cvs] [a18f4d2] master: CMake: optional date/time overrides for reproducible builds

Campbell Barton noreply at git.blender.org
Tue May 10 18:41:21 CEST 2016


Commit: a18f4d2bc69aa4707fb0efa92d28297d06be060e
Author: Campbell Barton
Date:   Wed May 11 02:43:58 2016 +1000
Branches: master
https://developer.blender.org/rBa18f4d2bc69aa4707fb0efa92d28297d06be060e

CMake: optional date/time overrides for reproducible builds

===================================================================

M	CMakeLists.txt
M	build_files/cmake/buildinfo.cmake
M	source/creator/CMakeLists.txt

===================================================================

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6fc4ca2..af457de 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -218,6 +218,10 @@ if(${CMAKE_VERSION} VERSION_LESS 2.8.8)
 	# add_library OBJECT arg unsupported
 	set(WITH_BUILDINFO OFF)
 endif()
+set(BUILDINFO_OVERRIDE_DATE "" CACHE STRING "Use instead of the current date for reproducable builds (empty string disables this option)")
+set(BUILDINFO_OVERRIDE_TIME "" CACHE STRING "Use instead of the current time for reproducable builds (empty string disables this option)")
+mark_as_advanced(BUILDINFO_OVERRIDE_DATE)
+mark_as_advanced(BUILDINFO_OVERRIDE_TIME)
 
 option(WITH_IK_ITASC      "Enable ITASC IK solver (only disable for development & for incompatible C++ compilers)" ON)
 option(WITH_IK_SOLVER     "Enable Legacy IK solver (only disable for development)" ON)
diff --git a/build_files/cmake/buildinfo.cmake b/build_files/cmake/buildinfo.cmake
index 4caa4a9..af0ccd2 100644
--- a/build_files/cmake/buildinfo.cmake
+++ b/build_files/cmake/buildinfo.cmake
@@ -1,5 +1,10 @@
-# This is called by cmake as an extermal process from
+# This is called by cmake as an external process from
 # ./source/creator/CMakeLists.txt to write ./source/creator/buildinfo.h
+# Caller must define:
+#   SOURCE_DIR
+# Optional overrides:
+#   BUILD_DATE
+#   BUILD_TIME
 
 # Extract working copy information for SOURCE_DIR into MY_XXX variables
 # with a default in case anything fails, for example when using git-svn
@@ -128,12 +133,19 @@ endif()
 # BUILD_PLATFORM and BUILD_PLATFORM are taken from CMake
 # but BUILD_DATE and BUILD_TIME are platform dependent
 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)
+	if(NOT BUILD_DATE)
+		execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
+	endif()
+	if(NOT BUILD_TIME)
+		execute_process(COMMAND date "+%H:%M:%S" OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE)
+	endif()
+elseif(WIN32)
+	if(NOT BUILD_DATE)
+		execute_process(COMMAND cmd /c date /t OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
+	endif()
+	if(NOT BUILD_TIME)
+		execute_process(COMMAND cmd /c time /t OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE)
+	endif()
 endif()
 
 # Write a file with the BUILD_HASH define
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt
index b7d8381..daba01e 100644
--- a/source/creator/CMakeLists.txt
+++ b/source/creator/CMakeLists.txt
@@ -186,6 +186,9 @@ if(WITH_BUILDINFO)
 	add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_buildinfo.h
 		COMMAND ${CMAKE_COMMAND}
 		-DSOURCE_DIR=${CMAKE_SOURCE_DIR}
+		# overrides only used when non-empty strings
+		-DBUILD_DATE=${BUILDINFO_OVERRIDE_DATE}
+		-DBUILD_TIME=${BUILDINFO_OVERRIDE_TIME}
 		-P ${CMAKE_SOURCE_DIR}/build_files/cmake/buildinfo.cmake)
 
 	# buildinfo.h is a generated file




More information about the Bf-blender-cvs mailing list