From adb2abe274c4ae5f43b16c92af4b4ec283c014c7 Mon Sep 17 00:00:00 2001
From: Thomas Fischer <thomas.fischer@ufz.de>
Date: Tue, 26 Jun 2012 11:45:07 +0200
Subject: [PATCH] - added option to generate build information in
 CMakeLists.txt

[BaseLib/BuildInfo.h.in]
- copied file from OGS-5 and modified it a little bit

[SimpleTests/MatrixTests/MatVecMultNDPerm.cpp]
- program prints build and executing host information
---
 BaseLib/BuildInfo.h.in                       | 27 ++++++++++++++++++++
 CMakeLists.txt                               |  9 +++++++
 SimpleTests/MatrixTests/CMakeLists.txt       |  1 +
 SimpleTests/MatrixTests/MatVecMultNDPerm.cpp | 17 +++++++++---
 4 files changed, 51 insertions(+), 3 deletions(-)
 create mode 100644 BaseLib/BuildInfo.h.in

diff --git a/BaseLib/BuildInfo.h.in b/BaseLib/BuildInfo.h.in
new file mode 100644
index 00000000000..145411c6c79
--- /dev/null
+++ b/BaseLib/BuildInfo.h.in
@@ -0,0 +1,27 @@
+/**
+ * \file BuildInfo.h.in
+ * 24/08/2010 LB Initial implementation
+ * #defines which gets set through CMake
+ */
+
+#ifndef BUILDINFO_H
+#define BUILDINFO_H
+
+#cmakedefine CMAKE_CMD_ARGS "${CMAKE_CMD_ARGS}"
+#cmakedefine CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}"
+
+// #cmakedefine SVN_REVISION "${SVN_REVISION}"
+// #cmakedefine GIT_COMMIT_INFO "${GIT_COMMIT_INFO}"
+// #cmakedefine GIT_BRANCH_INFO "${GIT_BRANCH_INFO}"
+// #cmakedefine BUILD_TIMESTAMP "${BUILD_TIMESTAMP}"
+// #cmakedefine CMAKE_RUN_TIMESTAMP ""
+// #cmakedefine CMAKE_SYSTEM "${CMAKE_SYSTEM}-x${BITS}"
+
+#cmakedefine CMAKE_SYSTEM_PROCESSOR "${CMAKE_SYSTEM_PROCESSOR}"
+#cmakedefine CMAKE_CXX_COMPILER "${CMAKE_CXX_COMPILER}"
+#cmakedefine CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}"
+#cmakedefine CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}"
+#cmakedefine CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}"
+#cmakedefine CMAKE_GENERATOR "${CMAKE_GENERATOR}"
+
+#endif // BUILDINFO_H
diff --git a/CMakeLists.txt b/CMakeLists.txt
index aa96b25ab40..d1a3df61a10 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -34,6 +34,11 @@ IF (OGS_CMAKE_DEBUG)
 	list_all_cmake_variable_values()
 ENDIF (OGS_CMAKE_DEBUG)
 
+OPTION(OGS_BUILD_INFO "Should build information be generated" ON)
+IF (OGS_BUILD_INFO)
+	ADD_DEFINITIONS (-DOGS_BUILD_INFO)
+ENDIF (OGS_BUILD_INFO)
+
 ######################
 ### Subdirectories ###
 ######################
@@ -52,3 +57,7 @@ IF(NOT MSVC)
         ADD_SUBDIRECTORY( SimpleTests/SolverTests )
 ENDIF(NOT MSVC)
 
+# Create Configure.h
+CONFIGURE_FILE (BaseLib/BuildInfo.h.in ${PROJECT_BINARY_DIR}/BaseLib/BuildInfo.h)
+
+
diff --git a/SimpleTests/MatrixTests/CMakeLists.txt b/SimpleTests/MatrixTests/CMakeLists.txt
index bec0e87864f..3f6ca5d90ca 100644
--- a/SimpleTests/MatrixTests/CMakeLists.txt
+++ b/SimpleTests/MatrixTests/CMakeLists.txt
@@ -12,6 +12,7 @@ ENDIF (CMAKE_USE_PTHREADS_INIT )
 INCLUDE_DIRECTORIES(
         .
 	${CMAKE_SOURCE_DIR}/BaseLib/
+	${CMAKE_BINARY_DIR}/BaseLib/
 	${CMAKE_SOURCE_DIR}/BaseLib/logog/include
 	${CMAKE_SOURCE_DIR}/MathLib/
 )
diff --git a/SimpleTests/MatrixTests/MatVecMultNDPerm.cpp b/SimpleTests/MatrixTests/MatVecMultNDPerm.cpp
index 33d6ed24492..c5059d012c5 100644
--- a/SimpleTests/MatrixTests/MatVecMultNDPerm.cpp
+++ b/SimpleTests/MatrixTests/MatVecMultNDPerm.cpp
@@ -9,6 +9,7 @@
 
 #ifdef OGS_BUILD_INFO
 #include "BuildInfo.h"
+#include <sys/unistd.h>
 #endif
 
 // BaseLib
@@ -79,7 +80,17 @@ int main(int argc, char *argv[])
 	logogCout->SetFormatter(*custom_format);
 
 #ifdef OGS_BUILD_INFO
-	INFO("git commit: %s, executed on machine: ", GIT_COMMIT_INFO);
+	INFO("compiler: %s", CMAKE_CXX_COMPILER);
+	if (std::string(CMAKE_BUILD_TYPE).compare("Release") == 0) {
+		INFO("CXX_FLAGS: %s %s", CMAKE_CXX_FLAGS, CMAKE_CXX_FLAGS_RELEASE);
+	} else {
+		INFO("CXX_FLAGS: %s %s", CMAKE_CXX_FLAGS, CMAKE_CXX_FLAGS_DEBUG);
+	}
+	const size_t length(256);
+	char *hostname(new char[length]);
+	gethostname (hostname, length);
+	INFO("hostname: %s", hostname);
+	delete [] hostname;
 #endif
 
 	// *** reading matrix in crs format from file
@@ -95,7 +106,7 @@ int main(int argc, char *argv[])
 		CS_read(in, n, iA, jA, A);
 		timer.stop();
 		if (verbose) {
-			INFO("ok, %e s", timer.elapsed());
+			INFO("\t- took %e s", timer.elapsed());
 		}
 	} else {
 		ERR("error reading matrix from %s", fname_mat.c_str());
@@ -103,7 +114,7 @@ int main(int argc, char *argv[])
 	}
 	unsigned nnz(iA[n]);
 	if (verbose) {
-		INFO("Parameters read: n=%d, nnz=%d", n, nnz);
+		INFO("\tParameters read: n=%d, nnz=%d", n, nnz);
 	}
 
 	MathLib::CRSMatrixReordered mat(n, iA, jA, A);
-- 
GitLab