mirror of
https://github.com/reactos/CMake.git
synced 2024-11-28 22:10:32 +00:00
53e89b6ab0
Add `CMAKE_SYSROOT_COMPILE` and `CMAKE_SYSROOT_LINK` variables to as operation-specific alternatives to `CMAKE_SYSROOT`. This will be useful for Android NDKs that compile and link with different sysroot values (e.g. `r14` with unified headers). Co-Author: Florent Castelli <florent.castelli@gmail.com>
83 lines
2.3 KiB
C++
83 lines
2.3 KiB
C++
/* 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 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, std::string const& linkerSysroot);
|
|
|
|
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* 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;
|
|
std::string LinkerSysroot;
|
|
};
|
|
|
|
#endif
|