|
|
@@ -745,12 +745,10 @@ std::string cmLocalGenerator::GetIncludeFlags(
|
|
|
OutputFormat shellFormat = forResponseFile ? RESPONSE : SHELL;
|
|
|
std::ostringstream includeFlags;
|
|
|
|
|
|
- std::string flagVar = "CMAKE_INCLUDE_FLAG_";
|
|
|
- flagVar += lang;
|
|
|
- std::string const& includeFlag = this->Makefile->GetSafeDefinition(flagVar);
|
|
|
- flagVar = "CMAKE_INCLUDE_FLAG_SEP_";
|
|
|
- flagVar += lang;
|
|
|
- const char* sep = this->Makefile->GetDefinition(flagVar);
|
|
|
+ std::string const& includeFlag =
|
|
|
+ this->Makefile->GetSafeDefinition(cmStrCat("CMAKE_INCLUDE_FLAG_", lang));
|
|
|
+ const char* sep =
|
|
|
+ this->Makefile->GetDefinition(cmStrCat("CMAKE_INCLUDE_FLAG_SEP_", lang));
|
|
|
bool quotePaths = false;
|
|
|
if (this->Makefile->GetDefinition("CMAKE_QUOTE_INCLUDE_PATHS")) {
|
|
|
quotePaths = true;
|
|
|
@@ -767,23 +765,16 @@ std::string cmLocalGenerator::GetIncludeFlags(
|
|
|
|
|
|
// Support special system include flag if it is available and the
|
|
|
// normal flag is repeated for each directory.
|
|
|
- std::string sysFlagVar = "CMAKE_INCLUDE_SYSTEM_FLAG_";
|
|
|
- sysFlagVar += lang;
|
|
|
const char* sysIncludeFlag = nullptr;
|
|
|
if (repeatFlag) {
|
|
|
- sysIncludeFlag = this->Makefile->GetDefinition(sysFlagVar);
|
|
|
+ sysIncludeFlag = this->Makefile->GetDefinition(
|
|
|
+ cmStrCat("CMAKE_INCLUDE_SYSTEM_FLAG_", lang));
|
|
|
}
|
|
|
|
|
|
- std::string fwSearchFlagVar = "CMAKE_";
|
|
|
- fwSearchFlagVar += lang;
|
|
|
- fwSearchFlagVar += "_FRAMEWORK_SEARCH_FLAG";
|
|
|
- const char* fwSearchFlag = this->Makefile->GetDefinition(fwSearchFlagVar);
|
|
|
-
|
|
|
- std::string sysFwSearchFlagVar = "CMAKE_";
|
|
|
- sysFwSearchFlagVar += lang;
|
|
|
- sysFwSearchFlagVar += "_SYSTEM_FRAMEWORK_SEARCH_FLAG";
|
|
|
- const char* sysFwSearchFlag =
|
|
|
- this->Makefile->GetDefinition(sysFwSearchFlagVar);
|
|
|
+ const char* fwSearchFlag = this->Makefile->GetDefinition(
|
|
|
+ cmStrCat("CMAKE_", lang, "_FRAMEWORK_SEARCH_FLAG"));
|
|
|
+ const char* sysFwSearchFlag = this->Makefile->GetDefinition(
|
|
|
+ cmStrCat("CMAKE_", lang, "_SYSTEM_FRAMEWORK_SEARCH_FLAG"));
|
|
|
|
|
|
bool flagUsed = false;
|
|
|
std::set<std::string> emitted;
|
|
|
@@ -793,9 +784,8 @@ std::string cmLocalGenerator::GetIncludeFlags(
|
|
|
for (std::string const& i : includes) {
|
|
|
if (fwSearchFlag && *fwSearchFlag && this->Makefile->IsOn("APPLE") &&
|
|
|
cmSystemTools::IsPathToFramework(i)) {
|
|
|
- std::string frameworkDir = i;
|
|
|
- frameworkDir += "/../";
|
|
|
- frameworkDir = cmSystemTools::CollapseFullPath(frameworkDir);
|
|
|
+ std::string const frameworkDir =
|
|
|
+ cmSystemTools::CollapseFullPath(cmStrCat(i, "/../"));
|
|
|
if (emitted.insert(frameworkDir).second) {
|
|
|
if (sysFwSearchFlag && target &&
|
|
|
target->IsSystemIncludeDirectory(i, config, lang)) {
|
|
|
@@ -963,10 +953,8 @@ std::vector<BT<std::string>> cmLocalGenerator::GetIncludeDirectoriesImplicit(
|
|
|
// These are intended to simulate additional implicit include directories.
|
|
|
std::vector<std::string> userStandardDirs;
|
|
|
{
|
|
|
- std::string key = "CMAKE_";
|
|
|
- key += lang;
|
|
|
- key += "_STANDARD_INCLUDE_DIRECTORIES";
|
|
|
- std::string const value = this->Makefile->GetSafeDefinition(key);
|
|
|
+ std::string const value = this->Makefile->GetSafeDefinition(
|
|
|
+ cmStrCat("CMAKE_", lang, "_STANDARD_INCLUDE_DIRECTORIES"));
|
|
|
cmSystemTools::ExpandListArgument(value, userStandardDirs);
|
|
|
for (std::string& usd : userStandardDirs) {
|
|
|
cmSystemTools::ConvertToUnixSlashes(usd);
|
|
|
@@ -989,10 +977,9 @@ std::vector<BT<std::string>> cmLocalGenerator::GetIncludeDirectoriesImplicit(
|
|
|
// * Compilers like gfortran do not search their own implicit include
|
|
|
// directories for modules ('.mod' files).
|
|
|
if (lang != "Fortran") {
|
|
|
- std::string key = "CMAKE_";
|
|
|
- key += lang;
|
|
|
- key += "_IMPLICIT_INCLUDE_DIRECTORIES";
|
|
|
- if (const char* value = this->Makefile->GetDefinition(key)) {
|
|
|
+ const char* value = this->Makefile->GetDefinition(
|
|
|
+ cmStrCat("CMAKE_", lang, "_IMPLICIT_INCLUDE_DIRECTORIES"));
|
|
|
+ if (value != nullptr) {
|
|
|
size_t const impDirVecOldSize = impDirVec.size();
|
|
|
cmSystemTools::ExpandListArgument(value, impDirVec);
|
|
|
// FIXME: Use cmRange with 'advance()' when it supports non-const.
|
|
|
@@ -1210,9 +1197,8 @@ void cmLocalGenerator::GetTargetFlags(
|
|
|
linkFlags += " ";
|
|
|
}
|
|
|
if (!buildType.empty()) {
|
|
|
- std::string configLinkFlags = "LINK_FLAGS_";
|
|
|
- configLinkFlags += buildType;
|
|
|
- targetLinkFlags = target->GetProperty(configLinkFlags);
|
|
|
+ targetLinkFlags =
|
|
|
+ target->GetProperty(cmStrCat("LINK_FLAGS_", buildType));
|
|
|
if (targetLinkFlags) {
|
|
|
linkFlags += targetLinkFlags;
|
|
|
linkFlags += " ";
|
|
|
@@ -1234,9 +1220,8 @@ void cmLocalGenerator::GetTargetFlags(
|
|
|
this->Makefile->GetSafeDefinition("CMAKE_EXE_LINKER_FLAGS");
|
|
|
linkFlags += " ";
|
|
|
if (!buildType.empty()) {
|
|
|
- std::string build = "CMAKE_EXE_LINKER_FLAGS_";
|
|
|
- build += buildType;
|
|
|
- linkFlags += this->Makefile->GetSafeDefinition(build);
|
|
|
+ linkFlags += this->Makefile->GetSafeDefinition(
|
|
|
+ cmStrCat("CMAKE_EXE_LINKER_FLAGS_", buildType));
|
|
|
linkFlags += " ";
|
|
|
}
|
|
|
if (linkLanguage.empty()) {
|
|
|
@@ -1257,11 +1242,8 @@ void cmLocalGenerator::GetTargetFlags(
|
|
|
}
|
|
|
|
|
|
if (target->IsExecutableWithExports()) {
|
|
|
- std::string exportFlagVar = "CMAKE_EXE_EXPORTS_";
|
|
|
- exportFlagVar += linkLanguage;
|
|
|
- exportFlagVar += "_FLAG";
|
|
|
-
|
|
|
- linkFlags += this->Makefile->GetSafeDefinition(exportFlagVar);
|
|
|
+ linkFlags += this->Makefile->GetSafeDefinition(
|
|
|
+ cmStrCat("CMAKE_EXE_EXPORTS_", linkLanguage, "_FLAG"));
|
|
|
linkFlags += " ";
|
|
|
}
|
|
|
}
|
|
|
@@ -1293,9 +1275,8 @@ void cmLocalGenerator::GetTargetFlags(
|
|
|
linkFlags += " ";
|
|
|
}
|
|
|
if (!buildType.empty()) {
|
|
|
- std::string configLinkFlags = "LINK_FLAGS_";
|
|
|
- configLinkFlags += buildType;
|
|
|
- targetLinkFlags = target->GetProperty(configLinkFlags);
|
|
|
+ targetLinkFlags =
|
|
|
+ target->GetProperty(cmStrCat("LINK_FLAGS_", buildType));
|
|
|
if (targetLinkFlags) {
|
|
|
linkFlags += targetLinkFlags;
|
|
|
linkFlags += " ";
|
|
|
@@ -1470,20 +1451,12 @@ void cmLocalGenerator::OutputLinkLibraries(
|
|
|
}
|
|
|
|
|
|
// Add standard libraries for this language.
|
|
|
- std::string standardLibsVar = "CMAKE_";
|
|
|
- standardLibsVar += cli.GetLinkLanguage();
|
|
|
- standardLibsVar += "_STANDARD_LIBRARIES";
|
|
|
- std::string stdLibString;
|
|
|
- if (const char* stdLibs = this->Makefile->GetDefinition(standardLibsVar)) {
|
|
|
- stdLibString = stdLibs;
|
|
|
- }
|
|
|
+ std::string stdLibString = this->Makefile->GetSafeDefinition(
|
|
|
+ cmStrCat("CMAKE_", cli.GetLinkLanguage(), "_STANDARD_LIBRARIES"));
|
|
|
|
|
|
// Append the framework search path flags.
|
|
|
- std::string fwSearchFlagVar = "CMAKE_";
|
|
|
- fwSearchFlagVar += linkLanguage;
|
|
|
- fwSearchFlagVar += "_FRAMEWORK_SEARCH_FLAG";
|
|
|
- std::string fwSearchFlag =
|
|
|
- this->Makefile->GetSafeDefinition(fwSearchFlagVar);
|
|
|
+ std::string fwSearchFlag = this->Makefile->GetSafeDefinition(
|
|
|
+ cmStrCat("CMAKE_", linkLanguage, "_FRAMEWORK_SEARCH_FLAG"));
|
|
|
|
|
|
frameworkPath = linkLineComputer->ComputeFrameworkPath(cli, fwSearchFlag);
|
|
|
linkPath =
|
|
|
@@ -1538,10 +1511,8 @@ std::string cmLocalGenerator::GetLinkLibsCMP0065(
|
|
|
}
|
|
|
|
|
|
if (add_shlib_flags) {
|
|
|
- std::string linkFlagsVar = "CMAKE_SHARED_LIBRARY_LINK_";
|
|
|
- linkFlagsVar += linkLanguage;
|
|
|
- linkFlagsVar += "_FLAGS";
|
|
|
- linkFlags = this->Makefile->GetSafeDefinition(linkFlagsVar);
|
|
|
+ linkFlags = this->Makefile->GetSafeDefinition(
|
|
|
+ cmStrCat("CMAKE_SHARED_LIBRARY_LINK_", linkLanguage, "_FLAGS"));
|
|
|
}
|
|
|
}
|
|
|
return linkFlags;
|
|
|
@@ -1599,10 +1570,8 @@ void cmLocalGenerator::AddLanguageFlags(std::string& flags,
|
|
|
const std::string& config)
|
|
|
{
|
|
|
// Add language-specific flags.
|
|
|
- std::string flagsVar = "CMAKE_";
|
|
|
- flagsVar += lang;
|
|
|
- flagsVar += "_FLAGS";
|
|
|
- this->AddConfigVariableFlags(flags, flagsVar, config);
|
|
|
+ this->AddConfigVariableFlags(flags, cmStrCat("CMAKE_", lang, "_FLAGS"),
|
|
|
+ config);
|
|
|
|
|
|
// Add MSVC runtime library flags. This is activated by the presence
|
|
|
// of a default selection whether or not it is overridden by a property.
|
|
|
@@ -1773,10 +1742,9 @@ void cmLocalGenerator::AddSharedFlags(std::string& flags,
|
|
|
|
|
|
// Add flags for dealing with shared libraries for this language.
|
|
|
if (shared) {
|
|
|
- flagsVar = "CMAKE_SHARED_LIBRARY_";
|
|
|
- flagsVar += lang;
|
|
|
- flagsVar += "_FLAGS";
|
|
|
- this->AppendFlags(flags, this->Makefile->GetDefinition(flagsVar));
|
|
|
+ this->AppendFlags(flags,
|
|
|
+ this->Makefile->GetDefinition(
|
|
|
+ cmStrCat("CMAKE_SHARED_LIBRARY_", lang, "_FLAGS")));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -2065,9 +2033,7 @@ bool cmLocalGenerator::GetShouldUseOldFlags(bool shared,
|
|
|
std::string originalFlags =
|
|
|
this->GlobalGenerator->GetSharedLibFlagsForLanguage(lang);
|
|
|
if (shared) {
|
|
|
- std::string flagsVar = "CMAKE_SHARED_LIBRARY_";
|
|
|
- flagsVar += lang;
|
|
|
- flagsVar += "_FLAGS";
|
|
|
+ std::string flagsVar = cmStrCat("CMAKE_SHARED_LIBRARY_", lang, "_FLAGS");
|
|
|
std::string const& flags = this->Makefile->GetSafeDefinition(flagsVar);
|
|
|
|
|
|
if (flags != originalFlags) {
|
|
|
@@ -2106,16 +2072,12 @@ void cmLocalGenerator::AddPositionIndependentFlags(std::string& flags,
|
|
|
std::string picFlags;
|
|
|
|
|
|
if (targetType == cmStateEnums::EXECUTABLE) {
|
|
|
- std::string flagsVar = "CMAKE_";
|
|
|
- flagsVar += lang;
|
|
|
- flagsVar += "_COMPILE_OPTIONS_PIE";
|
|
|
- picFlags = this->Makefile->GetSafeDefinition(flagsVar);
|
|
|
+ picFlags = this->Makefile->GetSafeDefinition(
|
|
|
+ cmStrCat("CMAKE_", lang, "_COMPILE_OPTIONS_PIE"));
|
|
|
}
|
|
|
if (picFlags.empty()) {
|
|
|
- std::string flagsVar = "CMAKE_";
|
|
|
- flagsVar += lang;
|
|
|
- flagsVar += "_COMPILE_OPTIONS_PIC";
|
|
|
- picFlags = this->Makefile->GetSafeDefinition(flagsVar);
|
|
|
+ picFlags = this->Makefile->GetSafeDefinition(
|
|
|
+ cmStrCat("CMAKE_", lang, "_COMPILE_OPTIONS_PIC"));
|
|
|
}
|
|
|
if (!picFlags.empty()) {
|
|
|
std::vector<std::string> options;
|
|
|
@@ -2356,10 +2318,8 @@ void cmLocalGenerator::JoinDefines(const std::set<std::string>& defines,
|
|
|
// Lookup the define flag for the current language.
|
|
|
std::string dflag = "-D";
|
|
|
if (!lang.empty()) {
|
|
|
- std::string defineFlagVar = "CMAKE_";
|
|
|
- defineFlagVar += lang;
|
|
|
- defineFlagVar += "_DEFINE_FLAG";
|
|
|
- const char* df = this->Makefile->GetDefinition(defineFlagVar);
|
|
|
+ const char* df =
|
|
|
+ this->Makefile->GetDefinition(cmStrCat("CMAKE_", lang, "_DEFINE_FLAG"));
|
|
|
if (df && *df) {
|
|
|
dflag = df;
|
|
|
}
|
|
|
@@ -2405,11 +2365,9 @@ void cmLocalGenerator::AppendFeatureOptions(std::string& flags,
|
|
|
const std::string& lang,
|
|
|
const char* feature)
|
|
|
{
|
|
|
- std::string optVar = "CMAKE_";
|
|
|
- optVar += lang;
|
|
|
- optVar += "_COMPILE_OPTIONS_";
|
|
|
- optVar += feature;
|
|
|
- if (const char* optionList = this->Makefile->GetDefinition(optVar)) {
|
|
|
+ const char* optionList = this->Makefile->GetDefinition(
|
|
|
+ cmStrCat("CMAKE_", lang, "_COMPILE_OPTIONS_", feature));
|
|
|
+ if (optionList != nullptr) {
|
|
|
std::vector<std::string> options;
|
|
|
cmSystemTools::ExpandListArgument(optionList, options);
|
|
|
for (std::string const& o : options) {
|
|
|
@@ -2762,10 +2720,8 @@ std::string cmLocalGenerator::GetObjectFileNameWithoutTarget(
|
|
|
if (!replaceExt) {
|
|
|
std::string lang = source.GetLanguage();
|
|
|
if (!lang.empty()) {
|
|
|
- std::string repVar = "CMAKE_";
|
|
|
- repVar += lang;
|
|
|
- repVar += "_OUTPUT_EXTENSION_REPLACE";
|
|
|
- replaceExt = this->Makefile->IsOn(repVar);
|
|
|
+ replaceExt = this->Makefile->IsOn(
|
|
|
+ cmStrCat("CMAKE_", lang, "_OUTPUT_EXTENSION_REPLACE"));
|
|
|
}
|
|
|
}
|
|
|
|