From b2d444d782ba9eb9b2719cde66902f4b9e5da5ba Mon Sep 17 00:00:00 2001 From: Daniel Patterson Date: Fri, 24 Jul 2015 18:45:33 -0700 Subject: [PATCH] Only replace fingerprint file when MD5 changes. Avoids rebuilding several things if nothing has actually changes, as cmake is only looking at timestamps. --- cmake/FingerPrint-Config.cmake | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/cmake/FingerPrint-Config.cmake b/cmake/FingerPrint-Config.cmake index a3325d305..857dedd89 100644 --- a/cmake/FingerPrint-Config.cmake +++ b/cmake/FingerPrint-Config.cmake @@ -1,10 +1,24 @@ set(OLDFILE ${SOURCE_DIR}/util/fingerprint_impl.hpp) -if (EXISTS ${OLDFILE}) - file(REMOVE_RECURSE ${OLDFILE}) -endif() +set(NEWFILE ${OLDFILE}.tmp) +set(INFILE ${OLDFILE}.in) file(MD5 ${SOURCE_DIR}/prepare.cpp MD5PREPARE) file(MD5 ${SOURCE_DIR}/data_structures/static_rtree.hpp MD5RTREE) file(MD5 ${SOURCE_DIR}/util/graph_loader.hpp MD5GRAPH) file(MD5 ${SOURCE_DIR}/server/data_structures/internal_datafacade.hpp MD5OBJECTS) -CONFIGURE_FILE(${SOURCE_DIR}/util/fingerprint_impl.hpp.in ${SOURCE_DIR}/util/fingerprint_impl.hpp) +CONFIGURE_FILE(${INFILE} ${NEWFILE}) + +file(MD5 ${NEWFILE} MD5NEW) + +if (EXISTS ${OLDFILE}) + file(MD5 ${OLDFILE} MD5OLD) + if(NOT ${MD5NEW} STREQUAL ${MD5OLD}) + file(REMOVE_RECURSE ${OLDFILE}) + file(RENAME ${NEWFILE} ${OLDFILE}) + else() + file(REMOVE_RECURSE ${NEWFILE}) + message(STATUS "Fingerprint unchanged, not regenerating") + endif() +else() + file(RENAME ${NEWFILE} ${OLDFILE}) +endif()