From 91730c600561f125ca8d1462abafcf006df5968e Mon Sep 17 00:00:00 2001 From: Ken Martin Date: Fri, 8 Jul 2005 11:51:21 -0400 Subject: [PATCH] ENH: slightly modified version of Alex's relative path arguments for custom commands --- Source/cmAddCustomCommandCommand.cxx | 61 ++++++++++++++++++---------- 1 file changed, 39 insertions(+), 22 deletions(-) diff --git a/Source/cmAddCustomCommandCommand.cxx b/Source/cmAddCustomCommandCommand.cxx index 138d96f8e..a4905ddc4 100644 --- a/Source/cmAddCustomCommandCommand.cxx +++ b/Source/cmAddCustomCommandCommand.cxx @@ -117,36 +117,53 @@ bool cmAddCustomCommandCommand::InitialPass(std::vector const& args } else { + std::string filename; switch (doing) { case doing_source: - source = copy; - break; case doing_output: - output = copy; - break; - case doing_main_dependency: - main_dependency = copy; - break; - case doing_command: - currentLine.push_back(copy); - break; - case doing_target: - target = copy; - break; - case doing_depends: - depends.push_back(copy); - break; case doing_outputs: - outputs.push_back(copy); - break; - case doing_comment: - comment = copy; + if (!cmSystemTools::FileIsFullPath(copy.c_str())) + { + filename = m_Makefile->GetStartDirectory(); + filename += "/"; + } + filename += copy; break; default: - this->SetError("Wrong syntax. Unknown type of argument."); - return false; + break; } + + switch (doing) + { + case doing_source: + source = filename; + break; + case doing_output: + output = filename; + break; + case doing_main_dependency: + main_dependency = copy; + break; + case doing_command: + currentLine.push_back(copy); + break; + case doing_target: + target = copy; + break; + case doing_depends: + depends.push_back(copy); + break; + case doing_outputs: + outputs.push_back(filename); + break; + case doing_comment: + comment = copy; + break; + default: + this->SetError("Wrong syntax. Unknown type of argument."); + return false; + } } }