Browse Source

CheckSourceRuns: do not fail on unrecognized arguments

The old `check_X_source_runs` modules did not verify the arguments, so
we cannot start doing it now. Downgrade the hard error introduced in
commit 357e2ef429 (CheckSoureRuns: Add a unified way to check if a
source runs, 2020-09-14) via !5223 into a noisy warning.
Ben Boeckel 5 years ago
parent
commit
a524bf3aa7

+ 2 - 0
Modules/CheckCSourceRuns.cmake

@@ -68,5 +68,7 @@ include_guard(GLOBAL)
 include(Internal/CheckSourceRuns)
 
 macro(CHECK_C_SOURCE_RUNS SOURCE VAR)
+  set(_CheckSourceRuns_old_signature 1)
   cmake_check_source_runs(C "${SOURCE}" ${VAR} ${ARGN})
+  unset(_CheckSourceRuns_old_signature)
 endmacro()

+ 2 - 0
Modules/CheckCXXSourceRuns.cmake

@@ -68,5 +68,7 @@ include_guard(GLOBAL)
 include(Internal/CheckSourceRuns)
 
 macro(CHECK_CXX_SOURCE_RUNS SOURCE VAR)
+  set(_CheckSourceRuns_old_signature 1)
   cmake_check_source_runs(CXX "${SOURCE}" ${VAR} ${ARGN})
+  unset(_CheckSourceRuns_old_signature)
 endmacro()

+ 2 - 0
Modules/CheckOBJCSourceRuns.cmake

@@ -70,5 +70,7 @@ include_guard(GLOBAL)
 include(Internal/CheckSourceRuns)
 
 macro(CHECK_OBJC_SOURCE_RUNS SOURCE VAR)
+  set(_CheckSourceRuns_old_signature 1)
   cmake_check_source_runs(OBJC "${SOURCE}" ${VAR} ${ARGN})
+  unset(_CheckSourceRuns_old_signature)
 endmacro()

+ 2 - 0
Modules/CheckOBJCXXSourceRuns.cmake

@@ -70,5 +70,7 @@ include_guard(GLOBAL)
 include(Internal/CheckSourceRuns)
 
 macro(CHECK_OBJCXX_SOURCE_RUNS SOURCE VAR)
+  set(_CheckSourceRuns_old_signature 1)
   cmake_check_source_runs(OBJCXX "${SOURCE}" ${VAR} ${ARGN})
+  unset(_CheckSourceRuns_old_signature)
 endmacro()

+ 6 - 1
Modules/Internal/CheckSourceRuns.cmake

@@ -51,7 +51,12 @@ function(CMAKE_CHECK_SOURCE_RUNS _lang _source _var)
         set(_SRC_EXT "${arg}")
         set(_key "")
       else()
-        message(FATAL_ERROR "Unknown argument:\n  ${arg}\n")
+        set(message_type FATAL_ERROR)
+        if (_CheckSourceRuns_old_signature)
+          set(message_type AUTHOR_WARNING)
+        endif ()
+        message("${message_type}" "Unknown argument:\n  ${arg}\n")
+        unset(message_type)
       endif()
     endforeach()
 

+ 14 - 1
Tests/RunCMake/CheckSourceRuns/UnknownArgument-stderr.txt

@@ -1,4 +1,17 @@
-^CMake Error at [^
+^CMake Warning \(dev\) at [^
+]*/Modules/Internal/CheckSourceRuns.cmake:[0-9]+ \(message\):
+  Unknown argument:
+
+    BAD
+
+Call Stack \(most recent call first\):
+  [^
+]*/Modules/CheckCSourceRuns.cmake:[0-9]+ \(cmake_check_source_runs\)
+  UnknownArgument.cmake:[0-9]+ \(check_c_source_runs\)
+  CMakeLists.txt:[0-9]+ \(include\)
+This warning is for project developers.  Use -Wno-dev to suppress it.
+
+CMake Error at [^
 ]*/Modules/Internal/CheckSourceRuns.cmake:[0-9]+ \(message\):
   Unknown argument:
 

+ 3 - 1
Tests/RunCMake/CheckSourceRuns/UnknownArgument.cmake

@@ -1,5 +1,7 @@
 
 enable_language (C)
+include(CheckCSourceRuns)
 include(CheckSourceRuns)
 
-check_source_runs(C "int main() {return 0;}" SHOULD_BUILD SRC_EXT C BAD)
+check_c_source_runs("int main() {return 0;}" C_SHOULD_BUILD BAD)
+check_source_runs(C "int main() {return 0;}" SHOULD_BUILD SRC_EXT c BAD)