diff options
author | Brad King <brad.king@kitware.com> | 2016-10-17 14:15:17 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2016-10-17 14:15:17 (GMT) |
commit | 9a2048f1ea6687530e209992c3f5eafcbc02b2a9 (patch) | |
tree | e7903b517c4216e40dd58e27dde1476fbe6c7d11 /Source/cmRulePlaceholderExpander.h | |
parent | 248527ed930ea69f9d6953a47b708044c48d5921 (diff) | |
parent | b59b6dd9d27de7839c7b23a3094db33298038896 (diff) | |
download | CMake-9a2048f1ea6687530e209992c3f5eafcbc02b2a9.zip CMake-9a2048f1ea6687530e209992c3f5eafcbc02b2a9.tar.gz CMake-9a2048f1ea6687530e209992c3f5eafcbc02b2a9.tar.bz2 |
Merge topic 'extract-cmRulePlaceholderExpander'
b59b6dd9 cmRulePlaceholderExpander: Port clients to direct-use
bdddd423 cmRulePlaceholderExpander: Extract from cmLocalGenerator
f796e1b6 cmLocalGenerator: Move memset to cxx file
c75a9d66 cmLocalGenerator: Use strings instead of a Target in rule replacement
46ad0d21 cmLocalGenerator: Use a converter in rule replacement API
2628dec1 cmLocalGenerator: Store variable replacements as state
315b9a31 cmLocalGenerator: Merge loops which populate mapping
d5feb5b3 cmLocalGenerator: Populate variable mapping for all replacements
efba22e1 cmLocalGenerator: Extract compiler option replacement from loop
b29425f7 cmLocalGenerator: Populate a container of mappings for replacements
f009d8f5 cmLocalGenerator: Move compiler option handling to be more direct
6cd27a85 cmLocalGenerator: Move variable to where it can be used easily
8b0e4795 cmLocalGenerator: Use the language from the compiler container
88016e2e cmLocalGenerator: Introduce a container of compiler names
be87cb0c cmLocalGenerator: Simplify loop with range algorithm
425cd167 cmLocalGenerator: Remove the launcher from RuleVariables
Diffstat (limited to 'Source/cmRulePlaceholderExpander.h')
-rw-r--r-- | Source/cmRulePlaceholderExpander.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/Source/cmRulePlaceholderExpander.h b/Source/cmRulePlaceholderExpander.h new file mode 100644 index 0000000..444419c --- /dev/null +++ b/Source/cmRulePlaceholderExpander.h @@ -0,0 +1,83 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ + +#ifndef cmRulePlaceholderExpander_h +#define cmRulePlaceholderExpander_h + +#include <cmConfigure.h> // IWYU pragma: keep + +#include <map> +#include <string> + +class cmGeneratorTarget; +class cmOutputConverter; + +class cmRulePlaceholderExpander +{ +public: + cmRulePlaceholderExpander( + std::map<std::string, std::string> const& compilers, + std::map<std::string, std::string> const& variableMappings, + std::string const& compilerSysroot); + + void SetTargetImpLib(std::string const& targetImpLib) + { + this->TargetImpLib = targetImpLib; + } + + // Create a struct to hold the varibles passed into + // 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* 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* RuleLauncher; + const char* DependencyFile; + const char* FilterPrefix; + }; + + // Expand rule variables in CMake of the type found in language rules + void ExpandRuleVariables(cmOutputConverter* outputConverter, + std::string& string, + const RuleVariables& replaceValues); + + // Expand rule variables in a single string + std::string ExpandRuleVariable(cmOutputConverter* outputConverter, + std::string const& variable, + const RuleVariables& replaceValues); + +private: + std::string TargetImpLib; + + std::map<std::string, std::string> Compilers; + std::map<std::string, std::string> VariableMappings; + std::string CompilerSysroot; +}; + +#endif |