summaryrefslogtreecommitdiffstats
path: root/Source/cmNinjaTargetGenerator.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmNinjaTargetGenerator.h')
-rw-r--r--Source/cmNinjaTargetGenerator.h67
1 files changed, 44 insertions, 23 deletions
diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h
index 4db23f5..22dd7b8 100644
--- a/Source/cmNinjaTargetGenerator.h
+++ b/Source/cmNinjaTargetGenerator.h
@@ -47,7 +47,8 @@ public:
protected:
bool SetMsvcTargetPdbVariable(cmNinjaVars&, const std::string& config) const;
- cmGeneratedFileStream& GetBuildFileStream() const;
+ cmGeneratedFileStream& GetConfigFileStream(const std::string& config) const;
+ cmGeneratedFileStream& GetCommonFileStream() const;
cmGeneratedFileStream& GetRulesFileStream() const;
cmGeneratorTarget* GetGeneratorTarget() const
@@ -64,15 +65,18 @@ protected:
cmMakefile* GetMakefile() const { return this->Makefile; }
- std::string LanguageCompilerRule(const std::string& lang) const;
- std::string LanguagePreprocessRule(std::string const& lang) const;
+ std::string LanguageCompilerRule(const std::string& lang,
+ const std::string& config) const;
+ std::string LanguagePreprocessRule(std::string const& lang,
+ const std::string& config) const;
bool NeedExplicitPreprocessing(std::string const& lang) const;
- std::string LanguageDyndepRule(std::string const& lang) const;
+ std::string LanguageDyndepRule(std::string const& lang,
+ const std::string& config) const;
bool NeedDyndep(std::string const& lang) const;
bool UsePreprocessedSource(std::string const& lang) const;
bool CompilePreprocessedSourceWithDefines(std::string const& lang) const;
- std::string OrderDependsTargetForTarget();
+ std::string OrderDependsTargetForTarget(const std::string& config);
std::string ComputeOrderDependsForTarget();
@@ -113,16 +117,20 @@ protected:
std::string GetSourceFilePath(cmSourceFile const* source) const;
/// @return the object file path for the given @a source.
- std::string GetObjectFilePath(cmSourceFile const* source) const;
+ std::string GetObjectFilePath(cmSourceFile const* source,
+ const std::string& config) const;
/// @return the preprocessed source file path for the given @a source.
- std::string GetPreprocessedFilePath(cmSourceFile const* source) const;
+ std::string GetPreprocessedFilePath(cmSourceFile const* source,
+ const std::string& config) const;
/// @return the dyndep file path for this target.
- std::string GetDyndepFilePath(std::string const& lang) const;
+ std::string GetDyndepFilePath(std::string const& lang,
+ const std::string& config) const;
/// @return the target dependency scanner info file path
- std::string GetTargetDependInfoPath(std::string const& lang) const;
+ std::string GetTargetDependInfoPath(std::string const& lang,
+ const std::string& config) const;
/// @return the file path where the target named @a name is generated.
std::string GetTargetFilePath(const std::string& name,
@@ -131,15 +139,22 @@ protected:
/// @return the output path for the target.
virtual std::string GetTargetOutputDir(const std::string& config) const;
- void WriteLanguageRules(const std::string& language);
- void WriteCompileRule(const std::string& language);
- void WriteObjectBuildStatements(const std::string& config);
+ void WriteLanguageRules(const std::string& language,
+ const std::string& config);
+ void WriteCompileRule(const std::string& language,
+ const std::string& config);
+ void WriteObjectBuildStatements(const std::string& config,
+ const std::string& fileConfig,
+ bool firstForConfig);
void WriteObjectBuildStatement(cmSourceFile const* source,
- const std::string& config);
+ const std::string& config,
+ const std::string& fileConfig,
+ bool firstForConfig);
void WriteTargetDependInfo(std::string const& lang,
const std::string& config);
- void EmitSwiftDependencyInfo(cmSourceFile const* source);
+ void EmitSwiftDependencyInfo(cmSourceFile const* source,
+ const std::string& config);
void ExportObjectCompileCommand(
std::string const& language, std::string const& sourceFileName,
@@ -149,7 +164,7 @@ protected:
void AdditionalCleanFiles(const std::string& config);
- cmNinjaDeps GetObjects() const { return this->Objects; }
+ cmNinjaDeps GetObjects(const std::string& config) const;
void EnsureDirectoryExists(const std::string& dir) const;
void EnsureParentDirectoryExists(const std::string& path) const;
@@ -183,14 +198,20 @@ protected:
private:
cmLocalNinjaGenerator* LocalGenerator;
- /// List of object files for this target.
- cmNinjaDeps Objects;
- // Fortran Support
- std::map<std::string, cmNinjaDeps> DDIFiles;
- // Swift Support
- Json::Value SwiftOutputMap;
- std::vector<cmCustomCommand const*> CustomCommands;
- cmNinjaDeps ExtraFiles;
+
+ struct ByConfig
+ {
+ /// List of object files for this target.
+ cmNinjaDeps Objects;
+ // Fortran Support
+ std::map<std::string, cmNinjaDeps> DDIFiles;
+ // Swift Support
+ Json::Value SwiftOutputMap;
+ std::vector<cmCustomCommand const*> CustomCommands;
+ cmNinjaDeps ExtraFiles;
+ };
+
+ std::map<std::string, ByConfig> Configs;
};
#endif // ! cmNinjaTargetGenerator_h