2024A-SW/components/Serial_Console/generate_git_versions.cmake
2026-01-16 22:03:22 -06:00

72 lines
No EOL
1.9 KiB
CMake

# Main repository hashes
execute_process(
COMMAND git rev-parse --short HEAD
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE GIT_HASH_SHORT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE GIT_HASH_LONG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Check for uncommitted changes in main repo
execute_process(
COMMAND git diff-index --quiet HEAD --
WORKING_DIRECTORY ${SOURCE_DIR}
RESULT_VARIABLE GIT_DIRTY
)
if(NOT GIT_DIRTY EQUAL 0)
set(GIT_HASH_SHORT "${GIT_HASH_SHORT}+")
set(GIT_HASH_LONG "${GIT_HASH_LONG}+")
endif()
# SystemK hashes
set(SYSTEMK_PATH "${SOURCE_DIR}/components/SystemK")
execute_process(
COMMAND git rev-parse --short HEAD
WORKING_DIRECTORY ${SYSTEMK_PATH}
OUTPUT_VARIABLE SYSTEMK_HASH_SHORT
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE SYSTEMK_RESULT
)
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${SYSTEMK_PATH}
OUTPUT_VARIABLE SYSTEMK_HASH_LONG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Check for uncommitted changes in SystemK.
execute_process(
COMMAND git diff-index --quiet HEAD --
WORKING_DIRECTORY ${SYSTEMK_PATH}
RESULT_VARIABLE SYSTEMK_DIRTY
)
# Handle the case where SystemK doesn't exist or is not a git repo.
if(SYSTEMK_RESULT EQUAL 0)
if(NOT SYSTEMK_DIRTY EQUAL 0)
set(SYSTEMK_HASH_SHORT "${SYSTEMK_HASH_SHORT}+")
set(SYSTEMK_HASH_LONG "${SYSTEMK_HASH_LONG}+")
endif()
else()
set(SYSTEMK_HASH_SHORT "unknown")
set(SYSTEMK_HASH_LONG "unknown")
endif()
file(WRITE ${OUTPUT_FILE}
"#ifndef GIT_VERSION_H
#define GIT_VERSION_H
#define GIT_COMMIT_HASH_SHORT \"${GIT_HASH_SHORT}\"
#define GIT_COMMIT_HASH_LONG \"${GIT_HASH_LONG}\"
#define SYSTEMK_GIT_COMMIT_HASH_SHORT \"${SYSTEMK_HASH_SHORT}\"
#define SYSTEMK_GIT_COMMIT_HASH_LONG \"${SYSTEMK_HASH_LONG}\"
#endif
")