diff --git a/Source/cmExperimental.cxx b/Source/cmExperimental.cxx index fd9cd225f3..91d147095f 100644 --- a/Source/cmExperimental.cxx +++ b/Source/cmExperimental.cxx @@ -10,6 +10,7 @@ #include "cmGlobalGenerator.h" #include "cmMakefile.h" #include "cmMessageType.h" +#include "cmStringAlgorithms.h" #include "cmValue.h" namespace { @@ -120,6 +121,16 @@ bool cmExperimental::HasSupportEnabled(cmMakefile const& mf, Feature f) if (mf.GetGlobalGenerator()->ShouldWarnExperimental(data.Name, *value)) { if (enabled) { mf.IssueMessage(MessageType::AUTHOR_WARNING, data.Description); + } else { + mf.IssueMessage( + MessageType::AUTHOR_WARNING, + cmStrCat( + data.Variable, " is set to incorrect value\n ", value, '\n', + "See 'Help/dev/experimental.rst' in the source tree of this " + "version of CMake for documentation of the experimental feature " + "and the corresponding activation value. This project's code " + "may require changes to work with this CMake's version of the " + "feature.")); } } } diff --git a/Tests/RunCMake/cmake_language/Experimental/CxxImportStd-wrong-stderr.txt b/Tests/RunCMake/cmake_language/Experimental/CxxImportStd-wrong-stderr.txt new file mode 100644 index 0000000000..3a9a9dd0f0 --- /dev/null +++ b/Tests/RunCMake/cmake_language/Experimental/CxxImportStd-wrong-stderr.txt @@ -0,0 +1,25 @@ +^CMake Warning \(dev\) at Experimental/CxxImportStd-wrong\.cmake:4 \(cmake_language\): + CMAKE_EXPERIMENTAL_CXX_IMPORT_STD is set to incorrect value + + 01234567-0123-0123-0123-0123456789ab + + See 'Help/dev/experimental\.rst' in the source tree of this version of CMake + for documentation of the experimental feature and the corresponding + activation value\. This project's code may require changes to work with + this CMake's version of the feature\. +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\) +This warning is for project developers\. Use -Wno-dev to suppress it\. ++ +CMake Warning \(dev\) at Experimental/CxxImportStd-wrong\.cmake:19 \(cmake_language\): + CMAKE_EXPERIMENTAL_CXX_IMPORT_STD is set to incorrect value + + 76543210-3210-3210-3210-ba9876543210 + + See 'Help/dev/experimental\.rst' in the source tree of this version of CMake + for documentation of the experimental feature and the corresponding + activation value\. This project's code may require changes to work with + this CMake's version of the feature\. +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\) +This warning is for project developers\. Use -Wno-dev to suppress it\.$ diff --git a/Tests/RunCMake/cmake_language/Experimental/CxxImportStd-wrong.cmake b/Tests/RunCMake/cmake_language/Experimental/CxxImportStd-wrong.cmake new file mode 100644 index 0000000000..751d4fe302 --- /dev/null +++ b/Tests/RunCMake/cmake_language/Experimental/CxxImportStd-wrong.cmake @@ -0,0 +1,21 @@ +set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "01234567-0123-0123-0123-0123456789ab") + +cmake_language(GET_EXPERIMENTAL_FEATURE_ENABLED + "CxxImportStd" + feature_present) + +if (NOT feature_present STREQUAL "FALSE") + message(FATAL_ERROR + "Expected the `CxxImportStd` feature to be disabled.") +endif () + +# Test if/when warning is repeated. +cmake_language(GET_EXPERIMENTAL_FEATURE_ENABLED + "CxxImportStd" + feature_present) +set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "76543210-3210-3210-3210-ba9876543210") +cmake_language(GET_EXPERIMENTAL_FEATURE_ENABLED + "CxxImportStd" + feature_present) diff --git a/Tests/RunCMake/cmake_language/Experimental/ExportPackageDependencies-wrong-stderr.txt b/Tests/RunCMake/cmake_language/Experimental/ExportPackageDependencies-wrong-stderr.txt new file mode 100644 index 0000000000..3ed3cfd800 --- /dev/null +++ b/Tests/RunCMake/cmake_language/Experimental/ExportPackageDependencies-wrong-stderr.txt @@ -0,0 +1,25 @@ +^CMake Warning \(dev\) at Experimental/ExportPackageDependencies-wrong\.cmake:4 \(cmake_language\): + CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_DEPENDENCIES is set to incorrect value + + 01234567-0123-0123-0123-0123456789ab + + See 'Help/dev/experimental\.rst' in the source tree of this version of CMake + for documentation of the experimental feature and the corresponding + activation value\. This project's code may require changes to work with + this CMake's version of the feature\. +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\) +This warning is for project developers\. Use -Wno-dev to suppress it\. ++ +CMake Warning \(dev\) at Experimental/ExportPackageDependencies-wrong\.cmake:19 \(cmake_language\): + CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_DEPENDENCIES is set to incorrect value + + 76543210-3210-3210-3210-ba9876543210 + + See 'Help/dev/experimental\.rst' in the source tree of this version of CMake + for documentation of the experimental feature and the corresponding + activation value\. This project's code may require changes to work with + this CMake's version of the feature\. +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\) +This warning is for project developers\. Use -Wno-dev to suppress it\.$ diff --git a/Tests/RunCMake/cmake_language/Experimental/ExportPackageDependencies-wrong.cmake b/Tests/RunCMake/cmake_language/Experimental/ExportPackageDependencies-wrong.cmake new file mode 100644 index 0000000000..9f2f5a7e54 --- /dev/null +++ b/Tests/RunCMake/cmake_language/Experimental/ExportPackageDependencies-wrong.cmake @@ -0,0 +1,21 @@ +set(CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_DEPENDENCIES + "01234567-0123-0123-0123-0123456789ab") + +cmake_language(GET_EXPERIMENTAL_FEATURE_ENABLED + "ExportPackageDependencies" + feature_present) + +if (NOT feature_present STREQUAL "FALSE") + message(FATAL_ERROR + "Expected the `ExportPackageDependencies` feature to be disabled.") +endif () + +# Test if/when warning is repeated. +cmake_language(GET_EXPERIMENTAL_FEATURE_ENABLED + "ExportPackageDependencies" + feature_present) +set(CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_DEPENDENCIES + "76543210-3210-3210-3210-ba9876543210") +cmake_language(GET_EXPERIMENTAL_FEATURE_ENABLED + "ExportPackageDependencies" + feature_present) diff --git a/Tests/RunCMake/cmake_language/Experimental/WindowsKernelModeDriver-wrong-stderr.txt b/Tests/RunCMake/cmake_language/Experimental/WindowsKernelModeDriver-wrong-stderr.txt new file mode 100644 index 0000000000..c89c660578 --- /dev/null +++ b/Tests/RunCMake/cmake_language/Experimental/WindowsKernelModeDriver-wrong-stderr.txt @@ -0,0 +1,25 @@ +^CMake Warning \(dev\) at Experimental/WindowsKernelModeDriver-wrong\.cmake:4 \(cmake_language\): + CMAKE_EXPERIMENTAL_WINDOWS_KERNEL_MODE_DRIVER is set to incorrect value + + 01234567-0123-0123-0123-0123456789ab + + See 'Help/dev/experimental\.rst' in the source tree of this version of CMake + for documentation of the experimental feature and the corresponding + activation value\. This project's code may require changes to work with + this CMake's version of the feature\. +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\) +This warning is for project developers\. Use -Wno-dev to suppress it\. ++ +CMake Warning \(dev\) at Experimental/WindowsKernelModeDriver-wrong\.cmake:19 \(cmake_language\): + CMAKE_EXPERIMENTAL_WINDOWS_KERNEL_MODE_DRIVER is set to incorrect value + + 76543210-3210-3210-3210-ba9876543210 + + See 'Help/dev/experimental\.rst' in the source tree of this version of CMake + for documentation of the experimental feature and the corresponding + activation value\. This project's code may require changes to work with + this CMake's version of the feature\. +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\) +This warning is for project developers\. Use -Wno-dev to suppress it\.$ diff --git a/Tests/RunCMake/cmake_language/Experimental/WindowsKernelModeDriver-wrong.cmake b/Tests/RunCMake/cmake_language/Experimental/WindowsKernelModeDriver-wrong.cmake new file mode 100644 index 0000000000..a63a50314d --- /dev/null +++ b/Tests/RunCMake/cmake_language/Experimental/WindowsKernelModeDriver-wrong.cmake @@ -0,0 +1,21 @@ +set(CMAKE_EXPERIMENTAL_WINDOWS_KERNEL_MODE_DRIVER + "01234567-0123-0123-0123-0123456789ab") + +cmake_language(GET_EXPERIMENTAL_FEATURE_ENABLED + "WindowsKernelModeDriver" + feature_present) + +if (NOT feature_present STREQUAL "FALSE") + message(FATAL_ERROR + "Expected the `WindowsKernelModeDriver` feature to be disabled.") +endif () + +# Test if/when warning is repeated. +cmake_language(GET_EXPERIMENTAL_FEATURE_ENABLED + "WindowsKernelModeDriver" + feature_present) +set(CMAKE_EXPERIMENTAL_WINDOWS_KERNEL_MODE_DRIVER + "76543210-3210-3210-3210-ba9876543210") +cmake_language(GET_EXPERIMENTAL_FEATURE_ENABLED + "WindowsKernelModeDriver" + feature_present) diff --git a/Tests/RunCMake/cmake_language/RunCMakeTest.cmake b/Tests/RunCMake/cmake_language/RunCMakeTest.cmake index fe3da79f45..db034c786e 100644 --- a/Tests/RunCMake/cmake_language/RunCMakeTest.cmake +++ b/Tests/RunCMake/cmake_language/RunCMakeTest.cmake @@ -159,8 +159,11 @@ run_cmake_command( run_cmake(Experimental/CxxImportStd-set) run_cmake(Experimental/CxxImportStd-unset) +run_cmake(Experimental/CxxImportStd-wrong) run_cmake(Experimental/ExportPackageDependencies-set) run_cmake(Experimental/ExportPackageDependencies-unset) +run_cmake(Experimental/ExportPackageDependencies-wrong) run_cmake(Experimental/WindowsKernelModeDriver-set) run_cmake(Experimental/WindowsKernelModeDriver-unset) +run_cmake(Experimental/WindowsKernelModeDriver-wrong) run_cmake(Experimental/Unknown)