72 lines
No EOL
1.9 KiB
CMake
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
|
|
") |