Merge topic 'link-options'

174721ecc0 LINK_OPTIONS property: add test for static library.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2284
diff --git a/Help/command/ctest_submit.rst b/Help/command/ctest_submit.rst
index cc9612b..a412792 100644
--- a/Help/command/ctest_submit.rst
+++ b/Help/command/ctest_submit.rst
@@ -65,6 +65,7 @@
                [HTTPHEADER <header>]
                [RETRY_COUNT <count>]
                [RETRY_DELAY <delay>]
+               [RETURN_VALUE <result-var>]
                [QUIET])
 
 This second signature is used to upload files to CDash via the CDash
@@ -73,5 +74,5 @@
 then it is uploaded. Along with the file, a CDash type string is specified
 to tell CDash which handler to use to process the data.
 
-This signature accepts the ``HTTPHEADER``, ``RETRY_COUNT``, ``RETRY_DELAY``, and
-``QUIET`` options as described above.
+This signature accepts the ``HTTPHEADER``, ``RETRY_COUNT``, ``RETRY_DELAY``,
+``RETURN_VALUE`` and ``QUIET`` options as described above.
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index b7641ff..d4c046b 100644
--- a/Source/CMakeVersion.cmake
+++ b/Source/CMakeVersion.cmake
@@ -1,5 +1,5 @@
 # CMake version number components.
 set(CMake_VERSION_MAJOR 3)
 set(CMake_VERSION_MINOR 12)
-set(CMake_VERSION_PATCH 20180815)
+set(CMake_VERSION_PATCH 20180817)
 #set(CMake_VERSION_RC 1)
diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx
index f26c717..b1b2b88 100644
--- a/Source/cmGeneratorExpression.cxx
+++ b/Source/cmGeneratorExpression.cxx
@@ -390,7 +390,7 @@
   const char* expression, const std::string& property)
 {
   if (this->Target.empty()) {
-    return this->EvaluateExpression(expression);
+    return this->EvaluateExpression(expression).c_str();
   }
 
   // Specify COMPILE_OPTIONS to DAGchecker, same semantic as COMPILE_FLAGS
@@ -398,5 +398,5 @@
     this->Target, property == "COMPILE_FLAGS" ? "COMPILE_OPTIONS" : property,
     nullptr, nullptr);
 
-  return this->EvaluateExpression(expression, &dagChecker);
+  return this->EvaluateExpression(expression, &dagChecker).c_str();
 }
diff --git a/Source/cmGeneratorExpression.h b/Source/cmGeneratorExpression.h
index 2899317..1ceb7da 100644
--- a/Source/cmGeneratorExpression.h
+++ b/Source/cmGeneratorExpression.h
@@ -181,7 +181,7 @@
 
   const char* Evaluate(const char* expression)
   {
-    return this->EvaluateExpression(expression);
+    return this->EvaluateExpression(expression).c_str();
   }
   const char* Evaluate(const std::string& expression)
   {
@@ -212,7 +212,7 @@
   const std::string& GetTargetName() const { return this->Target; }
   const std::string& GetLanguage() const { return this->Language; }
 
-  const char* EvaluateExpression(
+  const std::string& EvaluateExpression(
     const char* expression,
     cmGeneratorExpressionDAGChecker* dagChecker = nullptr)
   {
@@ -220,16 +220,13 @@
       this->GeneratorExpression.Parse(expression);
 
     if (dagChecker == nullptr) {
-      return this->CompiledGeneratorExpression
-        ->Evaluate(this->LocalGenerator, this->Config, false,
-                   this->GeneratorTarget)
-        .c_str();
+      return this->CompiledGeneratorExpression->Evaluate(
+        this->LocalGenerator, this->Config, false, this->GeneratorTarget);
     }
 
-    return this->CompiledGeneratorExpression
-      ->Evaluate(this->LocalGenerator, this->Config, false,
-                 this->GeneratorTarget, dagChecker, this->Language)
-      .c_str();
+    return this->CompiledGeneratorExpression->Evaluate(
+      this->LocalGenerator, this->Config, false, this->GeneratorTarget,
+      dagChecker, this->Language);
   }
 
 private: