From 75bbffbe1b66070df8ac68f1d8b556e7cb0d087c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20K=C3=BCmmel?= Date: Tue, 17 Jul 2012 11:21:03 +0200 Subject: [PATCH] Ninja: make TARGET_PDB a real .gdb file name --- Source/cmNinjaNormalTargetGenerator.cxx | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 265b28a0e..6d13a9ad2 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -174,7 +174,14 @@ cmNinjaNormalTargetGenerator } vars.ObjectDir = "$OBJECT_DIR"; + + // TODO: + // Makefile generator expands to the plain target name + // with suffix. $out expands to a relative path. This difference + // could make trouble when switching to Ninja generator. Maybe + // using TARGET_NAME and RuleVariables::TargetName is a fix. vars.Target = "$out"; + vars.SONameFlag = "$SONAME_FLAG"; vars.TargetSOName = "$SONAME"; vars.TargetInstallNameDir = "$INSTALLNAME_DIR"; @@ -423,7 +430,6 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() EnsureParentDirectoryExists(path); } - // TODO move to GetTargetPDB cmMakefile* mf = this->GetMakefile(); if (mf->GetDefinition("MSVC_C_ARCHITECTURE_ID") || mf->GetDefinition("MSVC_CXX_ARCHITECTURE_ID")) @@ -438,10 +444,10 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() { // It is common to place debug symbols at a specific place, // so we need a plain target name in the rule available. - // TODO: Makefile generator could use because it expands - // to the plain target name, here it expands to a relative path. - // This difference could make trouble when switching to Ninja generator. - vars["TARGET_PDB"] = std::string(this->GetTarget()->GetName()); + std::string base; + std::string suffix; + this->GetTarget()->GetFullNameComponents(std::string(), base, suffix); + vars["TARGET_PDB"] = base + suffix + ".gdb"; } if (mf->IsOn("CMAKE_COMPILER_IS_MINGW"))