@@ -6,9 +6,8 @@ llama_add_compile_flags()
66
77# Build info header
88#
9-
10- if (EXISTS "${PROJECT_SOURCE_DIR} /.git" )
11- set (GIT_DIR "${PROJECT_SOURCE_DIR} /.git" )
9+ if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR} /../.git" )
10+ set (GIT_DIR "${CMAKE_CURRENT_SOURCE_DIR} /../.git" )
1211
1312 # Is git submodule
1413 if (NOT IS_DIRECTORY "${GIT_DIR} " )
@@ -18,7 +17,7 @@ if(EXISTS "${PROJECT_SOURCE_DIR}/.git")
1817 if (SLASH_POS EQUAL 0)
1918 set (GIT_DIR "${REAL_GIT_DIR} " )
2019 else ()
21- set (GIT_DIR "${PROJECT_SOURCE_DIR} /${REAL_GIT_DIR} " )
20+ set (GIT_DIR "${CMAKE_CURRENT_SOURCE_DIR} /.. /${REAL_GIT_DIR} " )
2221 endif ()
2322 endif ()
2423
@@ -32,6 +31,38 @@ else()
3231 message (WARNING "Git repository not found; to enable automatic generation of build info, make sure Git is installed and the project is a Git repository." )
3332endif ()
3433
34+ # Find Git executable
35+ find_package (Git)
36+
37+ # Get git commit hash
38+ if (GIT_FOUND AND EXISTS "${GIT_DIR} " )
39+ execute_process (
40+ COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
41+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
42+ OUTPUT_VARIABLE LLAMA_BUILD_COMMIT
43+ OUTPUT_STRIP_TRAILING_WHITESPACE
44+ ERROR_QUIET
45+ )
46+
47+ # Get build number from git commit count
48+ execute_process (
49+ COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD
50+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
51+ OUTPUT_VARIABLE LLAMA_BUILD_NUMBER
52+ OUTPUT_STRIP_TRAILING_WHITESPACE
53+ ERROR_QUIET
54+ )
55+ else ()
56+ set (LLAMA_BUILD_COMMIT "unknown" )
57+ set (LLAMA_BUILD_NUMBER 0)
58+ endif ()
59+
60+ # Set compiler info
61+ set (BUILD_COMPILER "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION} " )
62+
63+ # Set build target
64+ set (BUILD_TARGET "${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_PROCESSOR} " )
65+
3566set (TEMPLATE_FILE "${CMAKE_CURRENT_SOURCE_DIR} /build-info.cpp.in" )
3667set (OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR} /build-info.cpp" )
3768configure_file (${TEMPLATE_FILE} ${OUTPUT_FILE} )
0 commit comments