diff options
author | Brad King <brad.king@kitware.com> | 2006-10-23 17:37:24 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2006-10-23 17:37:24 (GMT) |
commit | d1a9c93119958a1a394fe0dde5814cd6a8f3f748 (patch) | |
tree | cf2adb57d85858bb4ecca2fe3e288a1fdcb8a979 /Source | |
parent | 0c52510f21fdddf289735aa30a0df9671d63970a (diff) | |
download | CMake-d1a9c93119958a1a394fe0dde5814cd6a8f3f748.zip CMake-d1a9c93119958a1a394fe0dde5814cd6a8f3f748.tar.gz CMake-d1a9c93119958a1a394fe0dde5814cd6a8f3f748.tar.bz2 |
ENH: Patch from Alex to provide nicer syntax for FILE_IS_NEWER. Using name IS_NEWER_THAN so old syntax will continue to work.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmIfCommand.cxx | 23 | ||||
-rw-r--r-- | Source/cmIfCommand.h | 1 |
2 files changed, 24 insertions, 0 deletions
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<std::string> &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" |