diff --git a/cmake/scripts/buildinfo.cmake b/cmake/scripts/buildinfo.cmake index b33ca1954..5b9f2fbf1 100644 --- a/cmake/scripts/buildinfo.cmake +++ b/cmake/scripts/buildinfo.cmake @@ -10,25 +10,25 @@ # cmake -DETH_SOURCE_DIR=. -DETH_DST_DIR=build -DETH_BUILD_TYPE=Debug -DETH_BUILD_PLATFORM=mac -P scripts/buildinfo.cmake if (NOT ETH_BUILD_TYPE) - set(ETH_BUILD_TYPE "unknown") + set(ETH_BUILD_TYPE "unknown") endif() if (NOT ETH_BUILD_PLATFORM) - set(ETH_BUILD_PLATFORM "unknown") + set(ETH_BUILD_PLATFORM "unknown") endif() execute_process( COMMAND git --git-dir=${ETH_SOURCE_DIR}/.git --work-tree=${ETH_SOURCE_DIR} rev-parse HEAD - OUTPUT_VARIABLE ETH_COMMIT_HASH + OUTPUT_VARIABLE ETH_COMMIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE ) if (NOT ETH_COMMIT_HASH) - set(ETH_COMMIT_HASH 0) + set(ETH_COMMIT_HASH 0) endif() execute_process( COMMAND git --git-dir=${ETH_SOURCE_DIR}/.git --work-tree=${ETH_SOURCE_DIR} diff --shortstat - OUTPUT_VARIABLE ETH_LOCAL_CHANGES + OUTPUT_VARIABLE ETH_LOCAL_CHANGES OUTPUT_STRIP_TRAILING_WHITESPACE ) if (ETH_LOCAL_CHANGES) @@ -37,5 +37,25 @@ else() set(ETH_CLEAN_REPO 1) endif() -configure_file("${ETH_SOURCE_DIR}/BuildInfo.h.in" "${ETH_DST_DIR}/BuildInfo.h") +set(INFILE "${ETH_SOURCE_DIR}/BuildInfo.h.in") +set(TMPFILE "${ETH_DST_DIR}/BuildInfo.h.tmp") +set(OUTFILE "${ETH_DST_DIR}/BuildInfo.h") + +# create outfile if it doesn't exist +if (NOT (EXISTS ${OUTFILE})) + execute_process(COMMAND touch ${OUTFILE}) +endif() + +configure_file("${INFILE}" "${TMPFILE}") + +execute_process( + COMMAND diff "${OUTFILE}" "${TMPFILE}" + OUTPUT_VARIABLE ETH_FILE_OUTDATED +) + +if (ETH_FILE_OUTDATED) + execute_process(COMMAND mv "${TMPFILE}" "${OUTFILE}") +else() + execute_process(COMMAND rm "${TMPFILE}") +endif()