From 890a1b9dc34820b73f77221f68e04cf1ae811234 Mon Sep 17 00:00:00 2001 From: Sebastian Holtermann Date: Mon, 13 May 2019 16:42:46 +0200 Subject: Ninja: Add support for ADDITIONAL_CLEAN_FILES directory property --- Source/cmLocalNinjaGenerator.cxx | 25 +++++++++++++++++++++++++ Source/cmLocalNinjaGenerator.h | 2 ++ 2 files changed, 27 insertions(+) diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index e6d4457..7fc5776 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -14,6 +14,7 @@ #include "cmCustomCommand.h" #include "cmCustomCommandGenerator.h" #include "cmGeneratedFileStream.h" +#include "cmGeneratorExpression.h" #include "cmGeneratorTarget.h" #include "cmGlobalGenerator.h" #include "cmGlobalNinjaGenerator.h" @@ -94,6 +95,7 @@ void cmLocalNinjaGenerator::Generate() } this->WriteCustomCommandBuildStatements(); + this->AdditionalCleanFiles(); } // TODO: Picked up from cmLocalUnixMakefileGenerator3. Refactor it. @@ -598,3 +600,26 @@ std::string cmLocalNinjaGenerator::MakeCustomLauncher( return launcher; } + +void cmLocalNinjaGenerator::AdditionalCleanFiles() +{ + if (const char* prop_value = + this->Makefile->GetProperty("ADDITIONAL_CLEAN_FILES")) { + std::vector cleanFiles; + { + cmGeneratorExpression ge; + auto cge = ge.Parse(prop_value); + cmSystemTools::ExpandListArgument( + cge->Evaluate(this, + this->Makefile->GetSafeDefinition("CMAKE_BUILD_TYPE")), + cleanFiles); + } + std::string const& binaryDir = this->GetCurrentBinaryDirectory(); + cmGlobalNinjaGenerator* gg = this->GetGlobalNinjaGenerator(); + for (std::string const& cleanFile : cleanFiles) { + // Support relative paths + gg->AddAdditionalCleanFile( + cmSystemTools::CollapseFullPath(cleanFile, binaryDir)); + } + } +} diff --git a/Source/cmLocalNinjaGenerator.h b/Source/cmLocalNinjaGenerator.h index f772fb0..3a30bbb 100644 --- a/Source/cmLocalNinjaGenerator.h +++ b/Source/cmLocalNinjaGenerator.h @@ -105,6 +105,8 @@ private: std::string const& customStep, cmGeneratorTarget const* target) const; + void AdditionalCleanFiles(); + std::string HomeRelativeOutputPath; typedef std::map> -- cgit v0.12