From 6271df8ff5ce5552929bb76440fa432641498800 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 15 Dec 2016 16:15:28 -0500 Subject: Makefile,Ninja: De-duplicate MSVC compiler PDB path selection Add a helper to cmCommonTargetGenerator instead of duplicating it in cmMakefileTargetGenerator and cmNinjaTargetGenerator. --- Source/cmCommonTargetGenerator.cxx | 22 ++++++++++++++++++++++ Source/cmCommonTargetGenerator.h | 1 + Source/cmMakefileTargetGenerator.cxx | 17 +---------------- Source/cmNinjaTargetGenerator.cxx | 16 +--------------- 4 files changed, 25 insertions(+), 31 deletions(-) diff --git a/Source/cmCommonTargetGenerator.cxx b/Source/cmCommonTargetGenerator.cxx index c3a925f..7e113ab 100644 --- a/Source/cmCommonTargetGenerator.cxx +++ b/Source/cmCommonTargetGenerator.cxx @@ -184,6 +184,28 @@ std::vector cmCommonTargetGenerator::GetLinkedTargetDirectories() return dirs; } +std::string cmCommonTargetGenerator::ComputeTargetCompilePDB() const +{ + std::string compilePdbPath; + if (this->GeneratorTarget->GetType() > cmStateEnums::OBJECT_LIBRARY) { + return compilePdbPath; + } + compilePdbPath = + this->GeneratorTarget->GetCompilePDBPath(this->GetConfigName()); + if (compilePdbPath.empty()) { + // Match VS default: `$(IntDir)vc$(PlatformToolsetVersion).pdb`. + // A trailing slash tells the toolchain to add its default file name. + compilePdbPath = this->GeneratorTarget->GetSupportDirectory() + "/"; + if (this->GeneratorTarget->GetType() == cmStateEnums::STATIC_LIBRARY) { + // Match VS default for static libs: `$(IntDir)$(ProjectName).pdb`. + compilePdbPath += this->GeneratorTarget->GetName(); + compilePdbPath += ".pdb"; + } + } + + return compilePdbPath; +} + std::string cmCommonTargetGenerator::GetManifests() { std::vector manifest_srcs; diff --git a/Source/cmCommonTargetGenerator.h b/Source/cmCommonTargetGenerator.h index bdd6645..d67fefb 100644 --- a/Source/cmCommonTargetGenerator.h +++ b/Source/cmCommonTargetGenerator.h @@ -66,6 +66,7 @@ protected: std::string GetManifests(); std::vector GetLinkedTargetDirectories() const; + std::string ComputeTargetCompilePDB() const; }; #endif diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 4218930..379ae16 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -504,7 +504,7 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( { std::string targetFullPathReal; std::string targetFullPathPDB; - std::string targetFullPathCompilePDB; + std::string targetFullPathCompilePDB = this->ComputeTargetCompilePDB(); if (this->GeneratorTarget->GetType() == cmStateEnums::EXECUTABLE || this->GeneratorTarget->GetType() == cmStateEnums::STATIC_LIBRARY || this->GeneratorTarget->GetType() == cmStateEnums::SHARED_LIBRARY || @@ -516,21 +516,6 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( targetFullPathPDB += "/"; targetFullPathPDB += this->GeneratorTarget->GetPDBName(this->ConfigName); } - if (this->GeneratorTarget->GetType() <= cmStateEnums::OBJECT_LIBRARY) { - targetFullPathCompilePDB = - this->GeneratorTarget->GetCompilePDBPath(this->ConfigName); - if (targetFullPathCompilePDB.empty()) { - // Match VS default: `$(IntDir)vc$(PlatformToolsetVersion).pdb`. - // A trailing slash tells the toolchain to add its default file name. - targetFullPathCompilePDB = - this->GeneratorTarget->GetSupportDirectory() + "/"; - if (this->GeneratorTarget->GetType() == cmStateEnums::STATIC_LIBRARY) { - // Match VS default for static libs: `$(IntDir)$(ProjectName).pdb`. - targetFullPathCompilePDB += this->GeneratorTarget->GetName(); - targetFullPathCompilePDB += ".pdb"; - } - } - } targetOutPathReal = this->LocalGenerator->ConvertToOutputFormat( this->LocalGenerator->MaybeConvertToRelativePath( diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 6fc506d..23caead 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -346,7 +346,7 @@ bool cmNinjaTargetGenerator::SetMsvcTargetPdbVariable(cmNinjaVars& vars) const if (mf->GetDefinition("MSVC_C_ARCHITECTURE_ID") || mf->GetDefinition("MSVC_CXX_ARCHITECTURE_ID")) { std::string pdbPath; - std::string compilePdbPath; + std::string compilePdbPath = this->ComputeTargetCompilePDB(); if (this->GeneratorTarget->GetType() == cmStateEnums::EXECUTABLE || this->GeneratorTarget->GetType() == cmStateEnums::STATIC_LIBRARY || this->GeneratorTarget->GetType() == cmStateEnums::SHARED_LIBRARY || @@ -355,20 +355,6 @@ bool cmNinjaTargetGenerator::SetMsvcTargetPdbVariable(cmNinjaVars& vars) const pdbPath += "/"; pdbPath += this->GeneratorTarget->GetPDBName(this->GetConfigName()); } - if (this->GeneratorTarget->GetType() <= cmStateEnums::OBJECT_LIBRARY) { - compilePdbPath = - this->GeneratorTarget->GetCompilePDBPath(this->GetConfigName()); - if (compilePdbPath.empty()) { - // Match VS default: `$(IntDir)vc$(PlatformToolsetVersion).pdb`. - // A trailing slash tells the toolchain to add its default file name. - compilePdbPath = this->GeneratorTarget->GetSupportDirectory() + "/"; - if (this->GeneratorTarget->GetType() == cmStateEnums::STATIC_LIBRARY) { - // Match VS default for static libs: `$(IntDir)$(ProjectName).pdb`. - compilePdbPath += this->GeneratorTarget->GetName(); - compilePdbPath += ".pdb"; - } - } - } vars["TARGET_PDB"] = this->GetLocalGenerator()->ConvertToOutputFormat( ConvertToNinjaPath(pdbPath), cmOutputConverter::SHELL); -- cgit v0.12