summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmNinjaNormalTargetGenerator.cxx3
-rw-r--r--Source/cmNinjaTargetGenerator.cxx19
-rw-r--r--Source/cmNinjaTargetGenerator.h1
3 files changed, 23 insertions, 0 deletions
diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx
index 9294a01..6e08bca 100644
--- a/Source/cmNinjaNormalTargetGenerator.cxx
+++ b/Source/cmNinjaNormalTargetGenerator.cxx
@@ -136,6 +136,7 @@ cmNinjaNormalTargetGenerator
vars.Target = "$out";
vars.TargetSOName = "$SONAME";
vars.TargetInstallNameDir = "$INSTALLNAME_DIR";
+ vars.TargetPDB = "$TARGET_PDB";
// Setup the target version.
std::string targetVersionMajor;
@@ -361,6 +362,8 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
targetOutputImplib.c_str(), cmLocalGenerator::SHELL);
}
+ vars["TARGET_PDB"] = this->GetTargetPDB();
+
std::vector<cmCustomCommand> *cmdLists[3] = {
&this->GetTarget()->GetPreBuildCommands(),
&this->GetTarget()->GetPreLinkCommands(),
diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx
index 8a563b6..7b1c7d9 100644
--- a/Source/cmNinjaTargetGenerator.cxx
+++ b/Source/cmNinjaTargetGenerator.cxx
@@ -270,6 +270,23 @@ std::string cmNinjaTargetGenerator::GetTargetName() const
return this->Target->GetName();
}
+std::string cmNinjaTargetGenerator::GetTargetPDB() const
+{
+ std::string targetFullPathPDB;
+ if(this->Target->GetType() == cmTarget::EXECUTABLE ||
+ this->Target->GetType() == cmTarget::STATIC_LIBRARY ||
+ this->Target->GetType() == cmTarget::SHARED_LIBRARY ||
+ this->Target->GetType() == cmTarget::MODULE_LIBRARY)
+ {
+ targetFullPathPDB = this->Target->GetDirectory(this->GetConfigName());
+ targetFullPathPDB += "/";
+ targetFullPathPDB += this->Target->GetPDBName(this->GetConfigName());
+ }
+
+ return ConvertToNinjaPath(targetFullPathPDB.c_str());
+}
+
+
void
cmNinjaTargetGenerator
::WriteLanguageRules(const std::string& language)
@@ -293,6 +310,7 @@ cmNinjaTargetGenerator
vars.Object = "$out";
std::string flags = "$FLAGS";
vars.Defines = "$DEFINES";
+ vars.TargetPDB = "$TARGET_PDB";
std::string depfile;
std::string depfileFlagsName = "CMAKE_DEPFILE_FLAGS_" + language;
@@ -426,6 +444,7 @@ cmNinjaTargetGenerator
cmNinjaVars vars;
vars["FLAGS"] = this->ComputeFlagsForObject(source, language);
vars["DEFINES"] = this->ComputeDefines(source, language);
+ vars["TARGET_PDB"] = this->GetTargetPDB();
cmGlobalNinjaGenerator::WriteBuild(this->GetBuildFileStream(),
comment,
diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h
index 2986844..f9270a2 100644
--- a/Source/cmNinjaTargetGenerator.h
+++ b/Source/cmNinjaTargetGenerator.h
@@ -38,6 +38,7 @@ public:
virtual void Generate() = 0;
+ std::string GetTargetPDB() const;
std::string GetTargetName() const;
protected: