From d1a9c93119958a1a394fe0dde5814cd6a8f3f748 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 23 Oct 2006 13:37:24 -0400 Subject: ENH: Patch from Alex to provide nicer syntax for FILE_IS_NEWER. Using name IS_NEWER_THAN so old syntax will continue to work. --- Source/cmIfCommand.cxx | 23 +++++++++++++++++++++++ Source/cmIfCommand.h | 1 + Tests/StringFileTest/CMakeLists.txt | 3 +++ 3 files changed, 27 insertions(+) diff --git a/Source/cmIfCommand.cxx b/Source/cmIfCommand.cxx index 722cc78..1553171 100644 --- a/Source/cmIfCommand.cxx +++ b/Source/cmIfCommand.cxx @@ -493,6 +493,29 @@ bool cmIfCommand::IsTrue(const std::vector &args, reducible = 1; } + // is file A newer than file B + if (argP1 != newArgs.end() && argP2 != newArgs.end() && + *(argP1) == "IS_NEWER_THAN") + { + int fileIsNewer=0; + bool success=cmSystemTools::FileTimeCompare(arg->c_str(), + (argP2)->c_str(), + &fileIsNewer); + if(success==false || fileIsNewer==1 || fileIsNewer==0) + { + *arg = "1"; + } + else + { + *arg = "0"; + } + newArgs.erase(argP2); + newArgs.erase(argP1); + argP1 = arg; + IncrementArguments(newArgs,argP1,argP2); + reducible = 1; + } + ++arg; } } diff --git a/Source/cmIfCommand.h b/Source/cmIfCommand.h index 1d07248..c7044a3 100644 --- a/Source/cmIfCommand.h +++ b/Source/cmIfCommand.h @@ -130,6 +130,7 @@ public: "True if the named file or directory exists. " "Behavior is well-defined only for full paths.\n" " IF(FILE_IS_NEWER file1 file2)\n" + " IF(file1 IS_NEWER_THAN file2)\n" "True if file1 is newer than file2 or if one of the two files " "doesn't exist. " "Behavior is well-defined only for full paths.\n" diff --git a/Tests/StringFileTest/CMakeLists.txt b/Tests/StringFileTest/CMakeLists.txt index 3376a38..e6288db 100644 --- a/Tests/StringFileTest/CMakeLists.txt +++ b/Tests/StringFileTest/CMakeLists.txt @@ -79,6 +79,9 @@ ENDFOREACH(var) IF(NOT FILE_IS_NEWER "${file}" "${CMAKE_CURRENT_SOURCE_DIR}/InputFile.h.in") MESSAGE(FATAL_ERROR "IF(FILE_IS_NEWER) does not seem to work.") ENDIF(NOT FILE_IS_NEWER "${file}" "${CMAKE_CURRENT_SOURCE_DIR}/InputFile.h.in") +IF(NOT "${file}" IS_NEWER_THAN "${CMAKE_CURRENT_SOURCE_DIR}/InputFile.h.in") + MESSAGE(FATAL_ERROR "IF(FILE_IS_NEWER) does not seem to work.") +ENDIF(NOT "${file}" IS_NEWER_THAN "${CMAKE_CURRENT_SOURCE_DIR}/InputFile.h.in") # Test configuration of the string SET(TEST_DEFINED 123) -- cgit v0.12