summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2018-09-19 14:32:55 (GMT)
committerKitware Robot <kwrobot@kitware.com>2018-09-19 14:33:01 (GMT)
commit76a19eb6c16272e4600267aed6ed7aff0fd9c765 (patch)
treef4052ab80d82c26830286fa724f064186ec4836c
parent3ada513413e2a911efac2de2c90bbebd820fef5d (diff)
parent2428422c02de1feac008d2ba1a6ad075aaf7ba2c (diff)
downloadCMake-76a19eb6c16272e4600267aed6ed7aff0fd9c765.zip
CMake-76a19eb6c16272e4600267aed6ed7aff0fd9c765.tar.gz
CMake-76a19eb6c16272e4600267aed6ed7aff0fd9c765.tar.bz2
Merge topic 'fix-getsafedef-stdstring'
2428422c02 Fix regression in target output file naming logic d686f81e58 Restore possibly regressed CMP0018 logic Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !2402
-rw-r--r--Source/cmGeneratorTarget.cxx17
-rw-r--r--Source/cmGlobalGenerator.cxx5
-rw-r--r--Source/cmLocalGenerator.cxx2
-rw-r--r--Tests/CMakeLists.txt1
-rw-r--r--Tests/OutName/CMakeLists.txt6
-rw-r--r--Tests/OutName/main.c4
6 files changed, 21 insertions, 14 deletions
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index e2824e8..a58d3cb 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -3494,13 +3494,12 @@ void cmGeneratorTarget::GetFullNameInternal(
}
// if there is no prefix on the target use the cmake definition
- std::string targetPrefix2, targetSuffix2;
if (!targetPrefix && prefixVar) {
- targetPrefix2 = this->Makefile->GetSafeDefinition(prefixVar);
+ targetPrefix = this->Makefile->GetSafeDefinition(prefixVar).c_str();
}
// if there is no suffix on the target use the cmake definition
if (!targetSuffix && suffixVar) {
- targetSuffix2 = this->Makefile->GetSafeDefinition(suffixVar);
+ targetSuffix = this->Makefile->GetSafeDefinition(suffixVar).c_str();
}
// frameworks have directory prefix but no suffix
@@ -3508,19 +3507,19 @@ void cmGeneratorTarget::GetFullNameInternal(
if (this->IsFrameworkOnApple()) {
fw_prefix = this->GetFrameworkDirectory(config, ContentLevel);
fw_prefix += "/";
- targetPrefix2 = fw_prefix;
- targetSuffix2.clear();
+ targetPrefix = fw_prefix.c_str();
+ targetSuffix = nullptr;
}
if (this->IsCFBundleOnApple()) {
fw_prefix = this->GetCFBundleDirectory(config, FullLevel);
fw_prefix += "/";
- targetPrefix2 = fw_prefix;
- targetSuffix2.clear();
+ targetPrefix = fw_prefix.c_str();
+ targetSuffix = nullptr;
}
// Begin the final name with the prefix.
- outPrefix = targetPrefix2;
+ outPrefix = targetPrefix ? targetPrefix : "";
// Append the target name or property-specified name.
outBase += this->GetOutputName(config, artifact);
@@ -3539,7 +3538,7 @@ void cmGeneratorTarget::GetFullNameInternal(
}
// Append the suffix.
- outSuffix = targetSuffix2;
+ outSuffix = targetSuffix ? targetSuffix : "";
}
std::string cmGeneratorTarget::GetLinkerLanguage(
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 1dd20b6..23df7f1 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -828,11 +828,8 @@ void cmGlobalGenerator::EnableLanguage(
std::string sharedLibFlagsVar = "CMAKE_SHARED_LIBRARY_";
sharedLibFlagsVar += lang;
sharedLibFlagsVar += "_FLAGS";
- std::string const& sharedLibFlags =
+ this->LanguageToOriginalSharedLibFlags[lang] =
mf->GetSafeDefinition(sharedLibFlagsVar);
- if (!sharedLibFlags.empty()) {
- this->LanguageToOriginalSharedLibFlags[lang] = sharedLibFlags;
- }
// Translate compiler ids for compatibility.
this->CheckCompilerIdCompatibility(mf, lang);
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 7eb4ef4..7030725 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -1826,7 +1826,7 @@ bool cmLocalGenerator::GetShouldUseOldFlags(bool shared,
flagsVar += "_FLAGS";
std::string const& flags = this->Makefile->GetSafeDefinition(flagsVar);
- if (!flags.empty() && flags != originalFlags) {
+ if (flags != originalFlags) {
switch (this->GetPolicyStatus(cmPolicies::CMP0018)) {
case cmPolicies::WARN: {
std::ostringstream e;
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index a22521b..28aab1c 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -368,6 +368,7 @@ if(BUILD_TESTING)
ADD_TEST_MACRO(CxxSubdirC CxxSubdirC)
ADD_TEST_MACRO(IPO COnly/COnly)
ADD_TEST_MACRO(OutDir runtime/OutDir)
+ ADD_TEST_MACRO(OutName exe.OutName.exe)
ADD_TEST_MACRO(ObjectLibrary UseCshared)
ADD_TEST_MACRO(NewlineArgs NewlineArgs)
ADD_TEST_MACRO(SetLang SetLang)
diff --git a/Tests/OutName/CMakeLists.txt b/Tests/OutName/CMakeLists.txt
new file mode 100644
index 0000000..f024def
--- /dev/null
+++ b/Tests/OutName/CMakeLists.txt
@@ -0,0 +1,6 @@
+cmake_minimum_required(VERSION 3.12)
+project(OutName C)
+
+add_executable(OutName main.c)
+set_property(TARGET OutName PROPERTY PREFIX exe.)
+set_property(TARGET OutName PROPERTY SUFFIX .exe)
diff --git a/Tests/OutName/main.c b/Tests/OutName/main.c
new file mode 100644
index 0000000..8488f4e
--- /dev/null
+++ b/Tests/OutName/main.c
@@ -0,0 +1,4 @@
+int main(void)
+{
+ return 0;
+}