diff --git a/algo/CMakeLists.txt b/algo/CMakeLists.txt
index b13e5732d4e16058331c952faeb3744372ef740d..82c06d3b3b25a6fbb87fb0ac5f38c0e69e354adc 100644
--- a/algo/CMakeLists.txt
+++ b/algo/CMakeLists.txt
@@ -28,6 +28,23 @@ set(SRCS
   detectors/trd/UnpackTrd.cxx
 )
 
+set(BUILD_INFO_CXX ${CMAKE_CURRENT_BINARY_DIR}/base/BuildInfo.cxx)
+set(SRCS ${SRCS} ${BUILD_INFO_CXX})
+
+add_custom_target(generateBuildInfo
+    COMMAND ${CMAKE_COMMAND}
+        -DBUILD_TYPE=${CMAKE_BUILD_TYPE}
+        -DXPU_DEBUG=${XPU_DEBUG}
+        -DINFILE=${CMAKE_CURRENT_SOURCE_DIR}/base/BuildInfo.cxx.in
+        -DOUTFILE=${BUILD_INFO_CXX}
+        -P ${CMAKE_SOURCE_DIR}/cmake/modules/GenerateBuildInfo.cmake
+    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/base/BuildInfo.cxx.in
+            ${CMAKE_SOURCE_DIR}/cmake/modules/GenerateBuildInfo.cmake
+    BYPRODUCTS ${BUILD_INFO_CXX}
+    COMMENT "Generating build info"
+)
+
 add_library(Algo SHARED ${SRCS})
 
 target_include_directories(Algo
diff --git a/algo/base/BuildInfo.cxx.in b/algo/base/BuildInfo.cxx.in
new file mode 100644
index 0000000000000000000000000000000000000000..22cc1d2ec91982b3ea3d77972664d6fb1efd5bf6
--- /dev/null
+++ b/algo/base/BuildInfo.cxx.in
@@ -0,0 +1,12 @@
+/* Copyright (C) 2022 FIAS Frankfurt Institute for Advanced Studies, Frankfurt / Main
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Felix Weiglhofer [committer]*/
+#include "BuildInfo.h"
+
+// GENERATED BY CMAKE.
+// DON'T CHANGE BY HAND. MODIFY .in-File INSTEAD.
+namespace cbm::algo::BuildInfo {
+const std::string GIT_HASH = "@GIT_HASH@";
+const std::string BUILD_TYPE = "@BUILD_TYPE@";
+const bool GPU_DEBUG = @GPU_DEBUG@;
+} // namespace cbm::algo::BuildInfo
diff --git a/algo/base/BuildInfo.h b/algo/base/BuildInfo.h
new file mode 100644
index 0000000000000000000000000000000000000000..8b6225c930f8d96b0234fc3562c58082d0bcd215
--- /dev/null
+++ b/algo/base/BuildInfo.h
@@ -0,0 +1,18 @@
+/* Copyright (C) 2022 FIAS Frankfurt Institute for Advanced Studies, Frankfurt / Main
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Felix Weiglhofer [committer]*/
+#ifndef CBM_ALGO_BUILD_INFO_H
+#define CBM_ALGO_BUILD_INFO_H
+
+#include <string>
+
+namespace cbm::algo::BuildInfo
+{
+
+  extern const std::string GIT_HASH;
+  extern const std::string BUILD_TYPE;
+  extern const bool GPU_DEBUG;
+
+}  // namespace cbm::algo::BuildInfo
+
+#endif  // CBM_ALGO_BUILD_INFO_H
diff --git a/cmake/modules/GenerateBuildInfo.cmake b/cmake/modules/GenerateBuildInfo.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..f5a4d9ea45af449d8bbba3b577dc8db42e0074ac
--- /dev/null
+++ b/cmake/modules/GenerateBuildInfo.cmake
@@ -0,0 +1,38 @@
+execute_process(
+    COMMAND git log -1 --format=%H
+    WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
+    OUTPUT_VARIABLE GIT_HASH
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+if (NOT DEFINED INFILE)
+    message(FATAL_ERROR "INFILE not defined")
+endif()
+
+if (NOT DEFINED OUTFILE)
+    message(FATAL_ERROR "OUTFILE not defined")
+endif()
+
+if (NOT DEFINED XPU_DEBUG)
+    message(FATAL_ERROR "XPU_DEBUG not defined")
+endif()
+
+if (NOT DEFINED BUILD_TYPE)
+    message(FATAL_ERROR "BUILD_TYPE not defined")
+endif()
+
+# message(STATUS "Git hash: ${GIT_HASH}")
+# message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
+# message(STATUS "XPU_DEBUG: ${XPU_DEBUG}")
+
+if (XPU_DEBUG)
+    set(GPU_DEBUG 1)
+else()
+    set(GPU_DEBUG 0)
+endif()
+
+configure_file(
+    ${INFILE}
+    ${OUTFILE}
+    @ONLY
+)