summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2002-12-10 16:47:37 -0500
committerAndy Cedilnik <andy.cedilnik@kitware.com>2002-12-10 16:47:37 -0500
commit3893ee72d2d5a04889cc1056b56029c9d60393c0 (patch)
tree3d96e526b726e7c0f2965489f74f2655776d6390 /Source
parentab64db6ee84604c361a2d6f279398f7c9d3247f5 (diff)
downloadcmake-3893ee72d2d5a04889cc1056b56029c9d60393c0.tar.gz
Add comment support, so that you can see in build process what the custom command does
Diffstat (limited to 'Source')
-rw-r--r--Source/cmAddCustomCommandCommand.cxx20
-rw-r--r--Source/cmAddCustomCommandCommand.h4
-rw-r--r--Source/cmCustomCommand.cxx1
-rw-r--r--Source/cmCustomCommand.h5
-rw-r--r--Source/cmLocalUnixMakefileGenerator.cxx8
-rw-r--r--Source/cmMakefile.cxx7
-rw-r--r--Source/cmMakefile.h7
-rw-r--r--Source/cmSourceGroup.cxx2
-rw-r--r--Source/cmSourceGroup.h3
9 files changed, 41 insertions, 16 deletions
diff --git a/Source/cmAddCustomCommandCommand.cxx b/Source/cmAddCustomCommandCommand.cxx
index 3717dd54f9..6b1c09c8f6 100644
--- a/Source/cmAddCustomCommandCommand.cxx
+++ b/Source/cmAddCustomCommandCommand.cxx
@@ -32,7 +32,7 @@ bool cmAddCustomCommandCommand::InitialPass(std::vector<std::string> const& args
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
- std::string source, command, target;
+ std::string source, command, target, comment;
std::vector<std::string> command_args, depends, outputs;
enum tdoing {
@@ -42,6 +42,7 @@ bool cmAddCustomCommandCommand::InitialPass(std::vector<std::string> const& args
doing_args,
doing_depends,
doing_outputs,
+ doing_comment,
doing_nothing
};
@@ -75,6 +76,10 @@ bool cmAddCustomCommandCommand::InitialPass(std::vector<std::string> const& args
{
doing = doing_outputs;
}
+ else if (copy == "COMMENT")
+ {
+ doing = doing_comment;
+ }
else
{
switch (doing)
@@ -97,6 +102,9 @@ bool cmAddCustomCommandCommand::InitialPass(std::vector<std::string> const& args
case doing_outputs:
outputs.push_back(copy);
break;
+ case doing_comment:
+ comment = copy;
+ break;
default:
this->SetError("Wrong syntax. Unknow type of argument.");
return false;
@@ -108,12 +116,7 @@ bool cmAddCustomCommandCommand::InitialPass(std::vector<std::string> const& args
For the moment, let's say that COMMAND, TARGET are always
required.
*/
-
- if(command.empty())
- {
- this->SetError("Wrong syntax. Empty COMMAND.");
- return false;
- }
+
if(target.empty())
{
this->SetError("Wrong syntax. Empty TARGET.");
@@ -133,7 +136,8 @@ bool cmAddCustomCommandCommand::InitialPass(std::vector<std::string> const& args
command_args,
depends,
outputs,
- target.c_str());
+ target.c_str(),
+ comment.c_str());
return true;
}
diff --git a/Source/cmAddCustomCommandCommand.h b/Source/cmAddCustomCommandCommand.h
index 1f332c8345..e2afc239e4 100644
--- a/Source/cmAddCustomCommandCommand.h
+++ b/Source/cmAddCustomCommandCommand.h
@@ -86,8 +86,8 @@ public:
virtual const char* GetFullDocumentation()
{
return
- "ADD_CUSTOM_COMMAND([SOURCE source] COMMAND command TARGET target "
- "[ARGS [args...]] [DEPENDS [depends...]] [OUTPUTS [outputs...]])\n"
+ "ADD_CUSTOM_COMMAND([SOURCE source] [COMMAND command] TARGET target "
+ "[ARGS [args...]] [DEPENDS [depends...]] [OUTPUTS [outputs...]] [COMMENT comment])\n"
"Add a custom command.";
}
diff --git a/Source/cmCustomCommand.cxx b/Source/cmCustomCommand.cxx
index fee5866b8f..d8fafe47d2 100644
--- a/Source/cmCustomCommand.cxx
+++ b/Source/cmCustomCommand.cxx
@@ -40,6 +40,7 @@ cmCustomCommand::cmCustomCommand(const cmCustomCommand& r):
m_Source(r.m_Source),
m_Command(r.m_Command),
m_Arguments(r.m_Arguments),
+ m_Comment(r.m_Comment),
m_Depends(r.m_Depends),
m_Outputs(r.m_Outputs)
{
diff --git a/Source/cmCustomCommand.h b/Source/cmCustomCommand.h
index 3cf26819ff..9085177364 100644
--- a/Source/cmCustomCommand.h
+++ b/Source/cmCustomCommand.h
@@ -54,6 +54,10 @@ public:
std::string GetCommand() const {return m_Command;}
void SetCommand(const char *cmd) {m_Command = cmd;}
+ ///! Return the command to execute
+ std::string GetComment() const {return m_Comment;}
+ void SetComment(const char *cm) {m_Comment = cm;}
+
///! Return the commands arguments
std::string GetArguments() const {return m_Arguments;}
void SetArguments(const char *arg) {m_Arguments = arg;}
@@ -74,6 +78,7 @@ private:
std::string m_Source;
std::string m_Command;
std::string m_Arguments;
+ std::string m_Comment;
std::vector<std::string> m_Depends;
std::vector<std::string> m_Outputs;
};
diff --git a/Source/cmLocalUnixMakefileGenerator.cxx b/Source/cmLocalUnixMakefileGenerator.cxx
index 84305f7876..5e72e0f9a7 100644
--- a/Source/cmLocalUnixMakefileGenerator.cxx
+++ b/Source/cmLocalUnixMakefileGenerator.cxx
@@ -1785,6 +1785,7 @@ void cmLocalUnixMakefileGenerator::OutputCustomRules(std::ostream& fout)
{
// escape spaces and convert to native slashes path for
// the command
+ const char* comment = c->second.m_Comment.c_str();
std::string command = c->second.m_Command;
cmSystemTools::ReplaceString(command, "/./", "/");
command = cmSystemTools::ConvertToOutputPath(command.c_str());
@@ -1811,7 +1812,7 @@ void cmLocalUnixMakefileGenerator::OutputCustomRules(std::ostream& fout)
}
// output rule
this->OutputMakeRule(fout,
- "Custom command",
+ (*comment?comment:"Custom command"),
source.c_str(),
depends.c_str(),
command.c_str());
@@ -1838,7 +1839,7 @@ void cmLocalUnixMakefileGenerator::OutputCustomRules(std::ostream& fout)
}
// output rule
this->OutputMakeRule(fout,
- "Custom command",
+ (*comment?comment:"Custom command"),
output->c_str(),
depends.c_str(),
command.c_str());
@@ -2511,7 +2512,8 @@ void cmLocalUnixMakefileGenerator::OutputMakeRule(std::ostream& fout,
{
replace = *i;
m_Makefile->ExpandVariablesInString(replace);
- if(count == 0 && replace[0] != '-' && replace.find("echo") != 0
+ if(count == 0 && replace.find_first_not_of(" \t\n\r") != std::string::npos &&
+ replace[0] != '-' && replace.find("echo") != 0
&& replace.find("$(MAKE)") != 0)
{
std::string echostring = "Building ";
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 0fec989a82..9c5dc9f546 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -415,7 +415,8 @@ void cmMakefile::AddCustomCommand(const char* source,
const std::vector<std::string>& commandArgs,
const std::vector<std::string>& depends,
const std::vector<std::string>& outputs,
- const char *target)
+ const char *target,
+ const char *comment)
{
// find the target,
if (m_Targets.find(target) != m_Targets.end())
@@ -434,6 +435,10 @@ void cmMakefile::AddCustomCommand(const char* source,
}
cmCustomCommand cc(source,c.c_str(),combinedArgs.c_str(),depends,outputs);
+ if ( comment && comment[0] )
+ {
+ cc.SetComment(comment);
+ }
m_Targets[target].GetCustomCommands().push_back(cc);
std::string cacheCommand = command;
this->ExpandVariablesInString(cacheCommand);
diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h
index 8d1b546f02..dbb62af489 100644
--- a/Source/cmMakefile.h
+++ b/Source/cmMakefile.h
@@ -123,7 +123,8 @@ public:
const std::vector<std::string>& commandArgs,
const std::vector<std::string>& depends,
const std::vector<std::string>& outputs,
- const char *target);
+ const char *target,
+ const char *comment = 0);
void AddCustomCommand(const char* source,
const char* command,
@@ -260,6 +261,8 @@ public:
{
m_cmCurrentDirectory = m_cmStartDirectory;
m_CurrentOutputDirectory = m_StartOutputDirectory;
+ this->AddDefinition("CMAKE_CURRENT_SOURCE_DIR", m_cmCurrentDirectory.c_str());
+ this->AddDefinition("CMAKE_CURRENT_BINARY_DIR", m_CurrentOutputDirectory.c_str());
}
//@{
@@ -323,6 +326,7 @@ public:
{
m_cmCurrentDirectory = dir;
cmSystemTools::ConvertToUnixSlashes(m_cmCurrentDirectory);
+ this->AddDefinition("CMAKE_CURRENT_SOURCE_DIR", m_cmCurrentDirectory.c_str());
}
const char* GetCurrentDirectory() const
{
@@ -332,6 +336,7 @@ public:
{
m_CurrentOutputDirectory = lib;
cmSystemTools::ConvertToUnixSlashes(m_CurrentOutputDirectory);
+ this->AddDefinition("CMAKE_CURRENT_BINARY_DIR", m_CurrentOutputDirectory.c_str());
}
const char* GetCurrentOutputDirectory() const
{
diff --git a/Source/cmSourceGroup.cxx b/Source/cmSourceGroup.cxx
index b94ad61f83..081f29948f 100644
--- a/Source/cmSourceGroup.cxx
+++ b/Source/cmSourceGroup.cxx
@@ -80,6 +80,7 @@ void cmSourceGroup::AddCustomCommand(const cmCustomCommand &cmd)
CommandFiles& cmdFiles =
m_BuildRules[cmd.GetSourceName()].m_Commands[commandAndArgs];
cmdFiles.m_Command = cmd.GetCommand();
+ cmdFiles.m_Comment = cmd.GetComment();
cmdFiles.m_Arguments = cmd.GetArguments();
cmdFiles.m_Depends.insert(cmd.GetDepends().begin(),cmd.GetDepends().end());
cmdFiles.m_Outputs.insert(cmd.GetOutputs().begin(),cmd.GetOutputs().end());
@@ -93,6 +94,7 @@ void cmSourceGroup::AddCustomCommand(const cmCustomCommand &cmd)
{
// The command did not exist. Add it.
commands[commandAndArgs].m_Command = cmd.GetCommand();
+ commands[commandAndArgs].m_Comment = cmd.GetComment();
commands[commandAndArgs].m_Arguments = cmd.GetArguments();
commands[commandAndArgs].m_Depends.insert(cmd.GetDepends().begin(),
cmd.GetDepends().end());
diff --git a/Source/cmSourceGroup.h b/Source/cmSourceGroup.h
index ebd23b17cd..6c3fe4d292 100644
--- a/Source/cmSourceGroup.h
+++ b/Source/cmSourceGroup.h
@@ -39,12 +39,13 @@ public:
{
CommandFiles() {}
CommandFiles(const CommandFiles& r):
- m_Outputs(r.m_Outputs), m_Depends(r.m_Depends) {}
+ m_Comment(r.m_Comment), m_Outputs(r.m_Outputs), m_Depends(r.m_Depends) {}
void Merge(const CommandFiles &r);
std::string m_Command;
std::string m_Arguments;
+ std::string m_Comment;
std::set<std::string> m_Outputs;
std::set<std::string> m_Depends;
};