39 lines
1009 B
CMake
39 lines
1009 B
CMake
# Generate version.h with the current git commit hash and date.
|
|
# Only rewrites the file if the content changed (avoids rebuild cascade).
|
|
# Usage: cmake -DSRC_DIR=... -DOUTPUT=... -P version.cmake
|
|
|
|
execute_process(
|
|
COMMAND git rev-parse --short HEAD
|
|
WORKING_DIRECTORY "${SRC_DIR}"
|
|
OUTPUT_VARIABLE GIT_HASH
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_QUIET
|
|
RESULT_VARIABLE GIT_RESULT
|
|
)
|
|
if(NOT GIT_RESULT EQUAL 0)
|
|
set(GIT_HASH "unknown")
|
|
endif()
|
|
|
|
execute_process(
|
|
COMMAND git show -s --format=%cs HEAD
|
|
WORKING_DIRECTORY "${SRC_DIR}"
|
|
OUTPUT_VARIABLE GIT_DATE
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_QUIET
|
|
RESULT_VARIABLE DATE_RESULT
|
|
)
|
|
if(NOT DATE_RESULT EQUAL 0)
|
|
set(GIT_DATE "unknown")
|
|
endif()
|
|
|
|
set(CONTENT "#pragma once\n#define OMNIVOICE_VERSION \"${GIT_HASH} (${GIT_DATE})\"\n")
|
|
|
|
if(EXISTS "${OUTPUT}")
|
|
file(READ "${OUTPUT}" EXISTING)
|
|
if("${EXISTING}" STREQUAL "${CONTENT}")
|
|
return()
|
|
endif()
|
|
endif()
|
|
|
|
file(WRITE "${OUTPUT}" "${CONTENT}")
|