Refactoring: Makefiles Generators: Add support for various depends scanners
This commit is contained in:
parent
bcf19af5c7
commit
a97c41bf8b
@ -43,6 +43,13 @@ enum class cmSourceOutputKind
|
||||
OutputOrByproduct
|
||||
};
|
||||
|
||||
/** What scanner to use for dependencies lookup. */
|
||||
enum class cmDependencyScannerKind
|
||||
{
|
||||
CMake,
|
||||
Compiler
|
||||
};
|
||||
|
||||
/** Target and source file which have a specific output. */
|
||||
struct cmSourcesWithOutput
|
||||
{
|
||||
|
@ -2049,16 +2049,18 @@ std::string cmLocalUnixMakefileGenerator3::GetTargetDirectory(
|
||||
}
|
||||
|
||||
cmLocalUnixMakefileGenerator3::ImplicitDependLanguageMap const&
|
||||
cmLocalUnixMakefileGenerator3::GetImplicitDepends(const cmGeneratorTarget* tgt)
|
||||
cmLocalUnixMakefileGenerator3::GetImplicitDepends(
|
||||
const cmGeneratorTarget* tgt, cmDependencyScannerKind scanner)
|
||||
{
|
||||
return this->ImplicitDepends[tgt->GetName()];
|
||||
return this->ImplicitDepends[tgt->GetName()][scanner];
|
||||
}
|
||||
|
||||
void cmLocalUnixMakefileGenerator3::AddImplicitDepends(
|
||||
const cmGeneratorTarget* tgt, const std::string& lang,
|
||||
const std::string& obj, const std::string& src)
|
||||
const std::string& obj, const std::string& src,
|
||||
cmDependencyScannerKind scanner)
|
||||
{
|
||||
this->ImplicitDepends[tgt->GetName()][lang][obj].push_back(src);
|
||||
this->ImplicitDepends[tgt->GetName()][scanner][lang][obj].push_back(src);
|
||||
}
|
||||
|
||||
void cmLocalUnixMakefileGenerator3::CreateCDCommand(
|
||||
|
@ -13,6 +13,7 @@
|
||||
|
||||
#include "cmDepends.h"
|
||||
#include "cmLocalCommonGenerator.h"
|
||||
#include "cmLocalGenerator.h"
|
||||
|
||||
class cmCustomCommand;
|
||||
class cmCustomCommandGenerator;
|
||||
@ -152,23 +153,21 @@ public:
|
||||
|
||||
// File pairs for implicit dependency scanning. The key of the map
|
||||
// is the depender and the value is the explicit dependee.
|
||||
struct ImplicitDependFileMap : public cmDepends::DependencyMap
|
||||
{
|
||||
};
|
||||
struct ImplicitDependLanguageMap
|
||||
: public std::map<std::string, ImplicitDependFileMap>
|
||||
{
|
||||
};
|
||||
struct ImplicitDependTargetMap
|
||||
: public std::map<std::string, ImplicitDependLanguageMap>
|
||||
{
|
||||
};
|
||||
using ImplicitDependFileMap = cmDepends::DependencyMap;
|
||||
using ImplicitDependLanguageMap =
|
||||
std::map<std::string, ImplicitDependFileMap>;
|
||||
using ImplicitDependScannerMap =
|
||||
std::map<cmDependencyScannerKind, ImplicitDependLanguageMap>;
|
||||
using ImplicitDependTargetMap =
|
||||
std::map<std::string, ImplicitDependScannerMap>;
|
||||
ImplicitDependLanguageMap const& GetImplicitDepends(
|
||||
cmGeneratorTarget const* tgt);
|
||||
cmGeneratorTarget const* tgt,
|
||||
cmDependencyScannerKind scanner = cmDependencyScannerKind::CMake);
|
||||
|
||||
void AddImplicitDepends(cmGeneratorTarget const* tgt,
|
||||
const std::string& lang, const std::string& obj,
|
||||
const std::string& src);
|
||||
void AddImplicitDepends(
|
||||
cmGeneratorTarget const* tgt, const std::string& lang,
|
||||
const std::string& obj, const std::string& src,
|
||||
cmDependencyScannerKind scanner = cmDependencyScannerKind::CMake);
|
||||
|
||||
// write the target rules for the local Makefile into the stream
|
||||
void WriteLocalAllRules(std::ostream& ruleFileStream);
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "cmGlobalUnixMakefileGenerator3.h"
|
||||
#include "cmLinkLineComputer.h" // IWYU pragma: keep
|
||||
#include "cmLocalCommonGenerator.h"
|
||||
#include "cmLocalGenerator.h"
|
||||
#include "cmLocalUnixMakefileGenerator3.h"
|
||||
#include "cmMakefile.h"
|
||||
#include "cmMakefileExecutableTargetGenerator.h"
|
||||
|
Loading…
Reference in New Issue
Block a user