Browse Source

Merge topic 'try_compile-no-try_run-args'

b976b844d2 try_compile: Don't accept try_run arguments
24c83bb35b try_compile: Fix quotes in reporting of unknown arguments

Acked-by: Kitware Robot <[email protected]>
Acked-by: buildbot <[email protected]>
Merge-request: !7585
Brad King 3 years ago
parent
commit
a2cf0db74b
2 changed files with 20 additions and 35 deletions
  1. 7 27
      Source/cmCoreTryCompile.cxx
  2. 13 8
      Tests/RunCMake/try_compile/TryRunArgs-stderr.txt

+ 7 - 27
Source/cmCoreTryCompile.cxx

@@ -145,6 +145,10 @@ auto const TryCompileArgParser =
     .BIND_LANG_PROPS(HIP)
     .BIND_LANG_PROPS(OBJC)
     .BIND_LANG_PROPS(OBJCXX)
+  /* keep semicolon on own line */;
+
+auto const TryRunArgParser =
+  cmArgumentParser<Arguments>{ TryCompileArgParser }
     .Bind("COMPILE_OUTPUT_VARIABLE"_s, &Arguments::CompileOutputVariable)
     .Bind("RUN_OUTPUT_VARIABLE"_s, &Arguments::RunOutputVariable)
     .Bind("RUN_OUTPUT_STDOUT_VARIABLE"_s, &Arguments::RunOutputStdOutVariable)
@@ -160,12 +164,13 @@ Arguments cmCoreTryCompile::ParseArgs(
   cmRange<std::vector<std::string>::const_iterator> args, bool isTryRun)
 {
   std::vector<std::string> unparsedArguments;
-  auto arguments = TryCompileArgParser.Parse(args, &unparsedArguments, 0);
+  const auto& parser = (isTryRun ? TryRunArgParser : TryCompileArgParser);
+  auto arguments = parser.Parse(args, &unparsedArguments, 0);
   if (!arguments.MaybeReportError(*(this->Makefile)) &&
       !unparsedArguments.empty()) {
     std::string m = "Unknown arguments:";
     for (const auto& i : unparsedArguments) {
-      m = cmStrCat(m, "\n  ", i, "\"");
+      m = cmStrCat(m, "\n  \"", i, "\"");
     }
     this->Makefile->IssueMessage(MessageType::AUTHOR_WARNING, m);
   }
@@ -194,31 +199,6 @@ Arguments cmCoreTryCompile::ParseArgs(
         arguments.RunWorkingDirectory->empty()) {
       arguments.RunWorkingDirectory = cm::nullopt;
     }
-  } else {
-    std::string tryRunArgs;
-    if (arguments.CompileOutputVariable) {
-      tryRunArgs = cmStrCat(tryRunArgs, "  COMPILE_OUTPUT_VARIABLE\n");
-    }
-    if (arguments.RunOutputVariable) {
-      tryRunArgs = cmStrCat(tryRunArgs, "  RUN_OUTPUT_VARIABLE\n");
-    }
-    if (arguments.RunOutputStdOutVariable) {
-      tryRunArgs = cmStrCat(tryRunArgs, "  RUN_OUTPUT_STDOUT_VARIABLE\n");
-    }
-    if (arguments.RunOutputStdErrVariable) {
-      tryRunArgs = cmStrCat(tryRunArgs, "  RUN_OUTPUT_STDERR_VARIABLE\n");
-    }
-    if (arguments.RunWorkingDirectory) {
-      tryRunArgs = cmStrCat(tryRunArgs, "  WORKING_DIRECTORY\n");
-    }
-    if (arguments.RunArgs) {
-      tryRunArgs = cmStrCat(tryRunArgs, "  ARGS\n");
-    }
-    if (!tryRunArgs.empty()) {
-      this->Makefile->IssueMessage(
-        MessageType::AUTHOR_WARNING,
-        cmStrCat("Ignoring try_run arguments for try_compile:\n", tryRunArgs));
-    }
   }
   return arguments;
 }

+ 13 - 8
Tests/RunCMake/try_compile/TryRunArgs-stderr.txt

@@ -1,13 +1,18 @@
 ^CMake Warning \(dev\) at TryRunArgs.cmake:[0-9]+ \(try_compile\):
-  Ignoring try_run arguments for try_compile:
-
-    COMPILE_OUTPUT_VARIABLE
-    RUN_OUTPUT_VARIABLE
-    RUN_OUTPUT_STDOUT_VARIABLE
-    RUN_OUTPUT_STDERR_VARIABLE
-    WORKING_DIRECTORY
-    ARGS
+  Unknown arguments:
 
+    "COMPILE_OUTPUT_VARIABLE"
+    "compOutputVar"
+    "RUN_OUTPUT_VARIABLE"
+    "runOutputVar"
+    "RUN_OUTPUT_STDOUT_VARIABLE"
+    "runOutputStdOutVar"
+    "RUN_OUTPUT_STDERR_VARIABLE"
+    "runOutputStdErrVar"
+    "WORKING_DIRECTORY"
+    "runWorkDir"
+    "ARGS"
+    "runArgs"
 Call Stack \(most recent call first\):
   CMakeLists.txt:[0-9]+ \(include\)
 This warning is for project developers.  Use -Wno-dev to suppress it.$