mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-27 09:29:15 -05:00
Refactoring: Introduce place-holder for dependency target.
These changes are in preparation of compiler generated dependencies support for Makefiles generators * compiler output and dependency target can be different for Makefiles generators * resolve inconsistency naming for dependency file place-holder
This commit is contained in:
@@ -548,6 +548,7 @@ cmNinjaRule GetScanRule(
|
||||
scanVars.Object = "$out"; // for RULE_LAUNCH_COMPILE
|
||||
scanVars.PreprocessedSource = "$out";
|
||||
scanVars.DependencyFile = rule.DepFile.c_str();
|
||||
scanVars.DependencyTarget = "$out";
|
||||
|
||||
// Scanning needs the same preprocessor settings as direct compilation would.
|
||||
scanVars.Source = vars.Source;
|
||||
@@ -750,8 +751,8 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang,
|
||||
const std::string flagsName = cmStrCat("CMAKE_DEPFILE_FLAGS_", lang);
|
||||
std::string depfileFlags = mf->GetSafeDefinition(flagsName);
|
||||
if (!depfileFlags.empty()) {
|
||||
cmSystemTools::ReplaceString(depfileFlags, "<DEPFILE>", "$DEP_FILE");
|
||||
cmSystemTools::ReplaceString(depfileFlags, "<OBJECT>", "$out");
|
||||
cmSystemTools::ReplaceString(depfileFlags, "<DEP_FILE>", "$DEP_FILE");
|
||||
cmSystemTools::ReplaceString(depfileFlags, "<DEP_TARGET>", "$out");
|
||||
cmSystemTools::ReplaceString(
|
||||
depfileFlags, "<CMAKE_C_COMPILER>",
|
||||
cmToCStr(mf->GetDefinition("CMAKE_C_COMPILER")));
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
#include "cmRulePlaceholderExpander.h"
|
||||
|
||||
#include <cctype>
|
||||
#include <cstring>
|
||||
#include <utility>
|
||||
|
||||
#include "cmOutputConverter.h"
|
||||
@@ -20,11 +19,6 @@ cmRulePlaceholderExpander::cmRulePlaceholderExpander(
|
||||
{
|
||||
}
|
||||
|
||||
cmRulePlaceholderExpander::RuleVariables::RuleVariables()
|
||||
{
|
||||
memset(this, 0, sizeof(*this));
|
||||
}
|
||||
|
||||
std::string cmRulePlaceholderExpander::ExpandRuleVariable(
|
||||
cmOutputConverter* outputConverter, std::string const& variable,
|
||||
const RuleVariables& replaceValues)
|
||||
@@ -141,6 +135,11 @@ std::string cmRulePlaceholderExpander::ExpandRuleVariable(
|
||||
return replaceValues.DependencyFile;
|
||||
}
|
||||
}
|
||||
if (replaceValues.DependencyTarget) {
|
||||
if (variable == "DEP_TARGET") {
|
||||
return replaceValues.DependencyTarget;
|
||||
}
|
||||
}
|
||||
if (replaceValues.Fatbinary) {
|
||||
if (variable == "FATBINARY") {
|
||||
return replaceValues.Fatbinary;
|
||||
|
||||
@@ -27,45 +27,45 @@ public:
|
||||
// ExpandRuleVariables
|
||||
struct RuleVariables
|
||||
{
|
||||
RuleVariables();
|
||||
const char* CMTargetName;
|
||||
const char* CMTargetType;
|
||||
const char* TargetPDB;
|
||||
const char* TargetCompilePDB;
|
||||
const char* TargetVersionMajor;
|
||||
const char* TargetVersionMinor;
|
||||
const char* Language;
|
||||
const char* AIXExports;
|
||||
const char* Objects;
|
||||
const char* Target;
|
||||
const char* LinkLibraries;
|
||||
const char* Source;
|
||||
const char* AssemblySource;
|
||||
const char* PreprocessedSource;
|
||||
const char* Output;
|
||||
const char* Object;
|
||||
const char* ObjectDir;
|
||||
const char* ObjectFileDir;
|
||||
const char* Flags;
|
||||
const char* ObjectsQuoted;
|
||||
const char* SONameFlag;
|
||||
const char* TargetSOName;
|
||||
const char* TargetInstallNameDir;
|
||||
const char* LinkFlags;
|
||||
const char* Manifests;
|
||||
const char* LanguageCompileFlags;
|
||||
const char* Defines;
|
||||
const char* Includes;
|
||||
const char* DependencyFile;
|
||||
const char* FilterPrefix;
|
||||
const char* SwiftLibraryName;
|
||||
const char* SwiftModule;
|
||||
const char* SwiftModuleName;
|
||||
const char* SwiftOutputFileMap;
|
||||
const char* SwiftSources;
|
||||
const char* ISPCHeader;
|
||||
const char* Fatbinary;
|
||||
const char* RegisterFile;
|
||||
const char* CMTargetName = nullptr;
|
||||
const char* CMTargetType = nullptr;
|
||||
const char* TargetPDB = nullptr;
|
||||
const char* TargetCompilePDB = nullptr;
|
||||
const char* TargetVersionMajor = nullptr;
|
||||
const char* TargetVersionMinor = nullptr;
|
||||
const char* Language = nullptr;
|
||||
const char* AIXExports = nullptr;
|
||||
const char* Objects = nullptr;
|
||||
const char* Target = nullptr;
|
||||
const char* LinkLibraries = nullptr;
|
||||
const char* Source = nullptr;
|
||||
const char* AssemblySource = nullptr;
|
||||
const char* PreprocessedSource = nullptr;
|
||||
const char* Output = nullptr;
|
||||
const char* Object = nullptr;
|
||||
const char* ObjectDir = nullptr;
|
||||
const char* ObjectFileDir = nullptr;
|
||||
const char* Flags = nullptr;
|
||||
const char* ObjectsQuoted = nullptr;
|
||||
const char* SONameFlag = nullptr;
|
||||
const char* TargetSOName = nullptr;
|
||||
const char* TargetInstallNameDir = nullptr;
|
||||
const char* LinkFlags = nullptr;
|
||||
const char* Manifests = nullptr;
|
||||
const char* LanguageCompileFlags = nullptr;
|
||||
const char* Defines = nullptr;
|
||||
const char* Includes = nullptr;
|
||||
const char* DependencyFile = nullptr;
|
||||
const char* DependencyTarget = nullptr;
|
||||
const char* FilterPrefix = nullptr;
|
||||
const char* SwiftLibraryName = nullptr;
|
||||
const char* SwiftModule = nullptr;
|
||||
const char* SwiftModuleName = nullptr;
|
||||
const char* SwiftOutputFileMap = nullptr;
|
||||
const char* SwiftSources = nullptr;
|
||||
const char* ISPCHeader = nullptr;
|
||||
const char* Fatbinary = nullptr;
|
||||
const char* RegisterFile = nullptr;
|
||||
};
|
||||
|
||||
// Expand rule variables in CMake of the type found in language rules
|
||||
|
||||
Reference in New Issue
Block a user