summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2001-08-14 21:18:52 (GMT)
committerBrad King <brad.king@kitware.com>2001-08-14 21:18:52 (GMT)
commit3d86ad7237b525f96fe56ebc5767926546daf591 (patch)
tree2c313c430c1c200b41d5918f3faf382b5ed2f62e /Source
parent7d2410097ef261013549a0b023b1588fe28043ee (diff)
downloadCMake-3d86ad7237b525f96fe56ebc5767926546daf591.zip
CMake-3d86ad7237b525f96fe56ebc5767926546daf591.tar.gz
CMake-3d86ad7237b525f96fe56ebc5767926546daf591.tar.bz2
ENH: Improved INSTALL_FILES and INSTALL_PROGRAMS commands to allow each call to the command in a single directory to specify a different install path.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmInstallFilesCommand.cxx30
-rw-r--r--Source/cmInstallFilesCommand.h1
-rw-r--r--Source/cmInstallProgramsCommand.cxx30
-rw-r--r--Source/cmInstallProgramsCommand.h1
-rw-r--r--Source/cmMakefile.cxx7
5 files changed, 30 insertions, 39 deletions
diff --git a/Source/cmInstallFilesCommand.cxx b/Source/cmInstallFilesCommand.cxx
index 8a0e132..b4cf57a 100644
--- a/Source/cmInstallFilesCommand.cxx
+++ b/Source/cmInstallFilesCommand.cxx
@@ -50,14 +50,16 @@ bool cmInstallFilesCommand::InitialPass(std::vector<std::string>& args)
return false;
}
- cmTargets &tgts = m_Makefile->GetTargets();
+ // Create an INSTALL_FILES target specifically for this path.
+ m_TargetName = "INSTALL_FILES_"+args[0];
+ cmTarget target;
+ target.SetInAll(false);
+ target.SetType(cmTarget::INSTALL_FILES);
+ target.SetInstallPath(args[0].c_str());
+ m_Makefile->GetTargets().insert(cmTargets::value_type(m_TargetName, target));
+
std::vector<std::string>::iterator s = args.begin();
- if (tgts.find("INSTALL_FILES") != tgts.end())
- {
- tgts["INSTALL_FILES"].SetInstallPath(args[0].c_str());
- }
- ++s;
- for (;s != args.end(); ++s)
+ for (++s;s != args.end(); ++s)
{
m_FinalArgs.push_back(*s);
}
@@ -67,14 +69,10 @@ bool cmInstallFilesCommand::InitialPass(std::vector<std::string>& args)
void cmInstallFilesCommand::FinalPass()
{
- cmTargets &tgts = m_Makefile->GetTargets();
std::string testf;
std::string ext = m_FinalArgs[0];
-
- if (tgts.find("INSTALL_FILES") == tgts.end())
- {
- return;
- }
+ std::vector<std::string>& targetSourceLists =
+ m_Makefile->GetTargets()[m_TargetName].GetSourceLists();
// two different options
if (m_FinalArgs.size() > 1)
@@ -98,7 +96,7 @@ void cmInstallFilesCommand::FinalPass()
{
testf = c->GetSourceName() + ext;
// add to the result
- tgts["INSTALL_FILES"].GetSourceLists().push_back(testf);
+ targetSourceLists.push_back(testf);
}
}
// if one wasn't found then assume it is a single class
@@ -106,7 +104,7 @@ void cmInstallFilesCommand::FinalPass()
{
testf = temps + ext;
// add to the result
- tgts["INSTALL_FILES"].GetSourceLists().push_back(testf);
+ targetSourceLists.push_back(testf);
}
}
}
@@ -122,7 +120,7 @@ void cmInstallFilesCommand::FinalPass()
// for each argument, get the files
for (;s != files.end(); ++s)
{
- tgts["INSTALL_FILES"].GetSourceLists().push_back(*s);
+ targetSourceLists.push_back(*s);
}
}
}
diff --git a/Source/cmInstallFilesCommand.h b/Source/cmInstallFilesCommand.h
index 0f86d88..070f703 100644
--- a/Source/cmInstallFilesCommand.h
+++ b/Source/cmInstallFilesCommand.h
@@ -102,6 +102,7 @@ public:
cmTypeMacro(cmInstallFilesCommand, cmCommand);
private:
+ std::string m_TargetName;
std::vector<std::string> m_FinalArgs;
};
diff --git a/Source/cmInstallProgramsCommand.cxx b/Source/cmInstallProgramsCommand.cxx
index e8fac31..657691b 100644
--- a/Source/cmInstallProgramsCommand.cxx
+++ b/Source/cmInstallProgramsCommand.cxx
@@ -50,29 +50,27 @@ bool cmInstallProgramsCommand::InitialPass(std::vector<std::string>& args)
return false;
}
- cmTargets &tgts = m_Makefile->GetTargets();
+ // Create an INSTALL_PROGRAMS target specifically for this path.
+ m_TargetName = "INSTALL_PROGRAMS_"+args[0];
+ cmTarget target;
+ target.SetInAll(false);
+ target.SetType(cmTarget::INSTALL_PROGRAMS);
+ target.SetInstallPath(args[0].c_str());
+ m_Makefile->GetTargets().insert(cmTargets::value_type(m_TargetName, target));
+
std::vector<std::string>::iterator s = args.begin();
- if (tgts.find("INSTALL_PROGRAMS") != tgts.end())
- {
- tgts["INSTALL_PROGRAMS"].SetInstallPath(args[0].c_str());
- }
- ++s;
- for (;s != args.end(); ++s)
+ for (++s;s != args.end(); ++s)
{
m_FinalArgs.push_back(*s);
- }
+ }
return true;
}
void cmInstallProgramsCommand::FinalPass()
{
- cmTargets &tgts = m_Makefile->GetTargets();
-
- if (tgts.find("INSTALL_PROGRAMS") == tgts.end())
- {
- return;
- }
+ std::vector<std::string>& targetSourceLists =
+ m_Makefile->GetTargets()[m_TargetName].GetSourceLists();
// two different options
if (m_FinalArgs.size() > 1)
@@ -85,7 +83,7 @@ void cmInstallProgramsCommand::FinalPass()
std::string temps = *s;
m_Makefile->ExpandVariablesInString(temps);
// add to the result
- tgts["INSTALL_PROGRAMS"].GetSourceLists().push_back(temps);
+ targetSourceLists.push_back(temps);
}
}
else // reg exp list
@@ -98,7 +96,7 @@ void cmInstallProgramsCommand::FinalPass()
// for each argument, get the programs
for (;s != programs.end(); ++s)
{
- tgts["INSTALL_PROGRAMS"].GetSourceLists().push_back(*s);
+ targetSourceLists.push_back(*s);
}
}
}
diff --git a/Source/cmInstallProgramsCommand.h b/Source/cmInstallProgramsCommand.h
index 4c5c370..307bfb9 100644
--- a/Source/cmInstallProgramsCommand.h
+++ b/Source/cmInstallProgramsCommand.h
@@ -102,6 +102,7 @@ public:
cmTypeMacro(cmInstallProgramsCommand, cmCommand);
private:
+ std::string m_TargetName;
std::vector<std::string> m_FinalArgs;
};
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 804498e..9a482bd 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -122,13 +122,6 @@ void cmMakefile::AddDefaultCommands()
#if defined(__APPLE__)
this->AddDefinition("APPLE", "1");
#endif
- // always creat an empty install targets for files and programs.
- cmTarget target;
- target.SetInAll(false);
- target.SetType(cmTarget::INSTALL_FILES);
- m_Targets.insert(cmTargets::value_type("INSTALL_FILES", target));
- target.SetType(cmTarget::INSTALL_PROGRAMS);
- m_Targets.insert(cmTargets::value_type("INSTALL_PROGRAMS", target));
}
cmMakefile::~cmMakefile()