From c91a54db3766aea8f8ab9d5a011db3bba67b12d4 Mon Sep 17 00:00:00 2001 From: Alex Neundorf Date: Tue, 6 Mar 2012 21:16:24 +0100 Subject: find_package: error out if REQUIRED Config has not been found If in Config mode a configuration file could not be found, cmake printed an error, but did not actually stop processing. With SetFatalErrorOccured it does. Alex --- Source/cmFindPackageCommand.cxx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 9177162..f8139f9 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -1062,6 +1062,10 @@ bool cmFindPackageCommand::HandlePackageMode() this->Makefile->IssueMessage( this->Required? cmake::FATAL_ERROR : cmake::WARNING, e.str()); + if (this->Required) + { + cmSystemTools::SetFatalErrorOccured(); + } if (!aw.str().empty()) { -- cgit v0.12 From c5ae73316634b0d1fe56272ab011eefd9cb80e47 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 7 Mar 2012 11:34:59 -0500 Subject: find_package: Test that REQUIRED aborts processing correctly Verify that the command produces a FATAL_ERROR if and only if the missing package is REQUIRED. --- Tests/CMakeCommands/find_package/MissingConfig-stderr.txt | 6 ++++++ Tests/CMakeCommands/find_package/MissingConfig.cmake | 1 + Tests/CMakeCommands/find_package/MissingConfigRequired-stderr.txt | 2 +- Tests/CMakeCommands/find_package/MissingConfigRequired.cmake | 1 + Tests/CMakeCommands/find_package/MissingModule-stderr.txt | 5 +++++ Tests/CMakeCommands/find_package/MissingModule.cmake | 1 + Tests/CMakeCommands/find_package/MissingModuleRequired-stderr.txt | 2 +- Tests/CMakeCommands/find_package/MissingModuleRequired.cmake | 1 + Tests/CMakeCommands/find_package/MissingNormal-stderr.txt | 6 ++++++ Tests/CMakeCommands/find_package/MissingNormal.cmake | 1 + Tests/CMakeCommands/find_package/MissingNormalRequired-stderr.txt | 2 +- Tests/CMakeCommands/find_package/MissingNormalRequired.cmake | 1 + 12 files changed, 26 insertions(+), 3 deletions(-) diff --git a/Tests/CMakeCommands/find_package/MissingConfig-stderr.txt b/Tests/CMakeCommands/find_package/MissingConfig-stderr.txt index 0d14dcb..1eae0bb 100644 --- a/Tests/CMakeCommands/find_package/MissingConfig-stderr.txt +++ b/Tests/CMakeCommands/find_package/MissingConfig-stderr.txt @@ -11,3 +11,9 @@ CMake Warning at MissingConfig.cmake:1 \(find_package\): been installed. Call Stack \(most recent call first\): CMakeLists.txt:3 \(include\) + + +CMake Warning at MissingConfig.cmake:2 \(message\): + This warning must be reachable. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\)$ diff --git a/Tests/CMakeCommands/find_package/MissingConfig.cmake b/Tests/CMakeCommands/find_package/MissingConfig.cmake index 3cebef1..238e7e4 100644 --- a/Tests/CMakeCommands/find_package/MissingConfig.cmake +++ b/Tests/CMakeCommands/find_package/MissingConfig.cmake @@ -1 +1,2 @@ find_package(NotHere CONFIG) +message(WARNING "This warning must be reachable.") diff --git a/Tests/CMakeCommands/find_package/MissingConfigRequired-stderr.txt b/Tests/CMakeCommands/find_package/MissingConfigRequired-stderr.txt index 56325d8..2ba774a 100644 --- a/Tests/CMakeCommands/find_package/MissingConfigRequired-stderr.txt +++ b/Tests/CMakeCommands/find_package/MissingConfigRequired-stderr.txt @@ -10,4 +10,4 @@ CMake Error at MissingConfigRequired.cmake:1 \(find_package\): "NotHere" provides a separate development package or SDK, be sure it has been installed. Call Stack \(most recent call first\): - CMakeLists.txt:3 \(include\) + CMakeLists.txt:3 \(include\)$ diff --git a/Tests/CMakeCommands/find_package/MissingConfigRequired.cmake b/Tests/CMakeCommands/find_package/MissingConfigRequired.cmake index 3c28552..0ae6702 100644 --- a/Tests/CMakeCommands/find_package/MissingConfigRequired.cmake +++ b/Tests/CMakeCommands/find_package/MissingConfigRequired.cmake @@ -1 +1,2 @@ find_package(NotHere CONFIG REQUIRED) +message(FATAL_ERROR "This error must not be reachable.") diff --git a/Tests/CMakeCommands/find_package/MissingModule-stderr.txt b/Tests/CMakeCommands/find_package/MissingModule-stderr.txt index 71b5eae..2ad460f 100644 --- a/Tests/CMakeCommands/find_package/MissingModule-stderr.txt +++ b/Tests/CMakeCommands/find_package/MissingModule-stderr.txt @@ -19,3 +19,8 @@ CMake Warning \(dev\) at MissingModule.cmake:1 \(find_package\): Call Stack \(most recent call first\): CMakeLists.txt:3 \(include\) This warning is for project developers. Use -Wno-dev to suppress it. + +CMake Warning at MissingModule.cmake:2 \(message\): + This warning must be reachable. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\)$ diff --git a/Tests/CMakeCommands/find_package/MissingModule.cmake b/Tests/CMakeCommands/find_package/MissingModule.cmake index 420539f..76bcef2 100644 --- a/Tests/CMakeCommands/find_package/MissingModule.cmake +++ b/Tests/CMakeCommands/find_package/MissingModule.cmake @@ -1 +1,2 @@ find_package(NotHere MODULE) +message(WARNING "This warning must be reachable.") diff --git a/Tests/CMakeCommands/find_package/MissingModuleRequired-stderr.txt b/Tests/CMakeCommands/find_package/MissingModuleRequired-stderr.txt index c3cd350..fec05f1 100644 --- a/Tests/CMakeCommands/find_package/MissingModuleRequired-stderr.txt +++ b/Tests/CMakeCommands/find_package/MissingModuleRequired-stderr.txt @@ -18,4 +18,4 @@ CMake Warning \(dev\) at MissingModuleRequired.cmake:1 \(find_package\): Call Stack \(most recent call first\): CMakeLists.txt:3 \(include\) -This warning is for project developers. Use -Wno-dev to suppress it. +This warning is for project developers. Use -Wno-dev to suppress it.$ diff --git a/Tests/CMakeCommands/find_package/MissingModuleRequired.cmake b/Tests/CMakeCommands/find_package/MissingModuleRequired.cmake index 07f36c5..897eda6 100644 --- a/Tests/CMakeCommands/find_package/MissingModuleRequired.cmake +++ b/Tests/CMakeCommands/find_package/MissingModuleRequired.cmake @@ -1 +1,2 @@ find_package(NotHere MODULE REQUIRED) +message(FATAL_ERROR "This error must not be reachable.") diff --git a/Tests/CMakeCommands/find_package/MissingNormal-stderr.txt b/Tests/CMakeCommands/find_package/MissingNormal-stderr.txt index e5cbd97..f4c6fba 100644 --- a/Tests/CMakeCommands/find_package/MissingNormal-stderr.txt +++ b/Tests/CMakeCommands/find_package/MissingNormal-stderr.txt @@ -15,3 +15,9 @@ CMake Warning at MissingNormal.cmake:1 \(find_package\): been installed. Call Stack \(most recent call first\): CMakeLists.txt:3 \(include\) + + +CMake Warning at MissingNormal.cmake:2 \(message\): + This warning must be reachable. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\)$ diff --git a/Tests/CMakeCommands/find_package/MissingNormal.cmake b/Tests/CMakeCommands/find_package/MissingNormal.cmake index 778cd38..fb90e01 100644 --- a/Tests/CMakeCommands/find_package/MissingNormal.cmake +++ b/Tests/CMakeCommands/find_package/MissingNormal.cmake @@ -1 +1,2 @@ find_package(NotHere) +message(WARNING "This warning must be reachable.") diff --git a/Tests/CMakeCommands/find_package/MissingNormalRequired-stderr.txt b/Tests/CMakeCommands/find_package/MissingNormalRequired-stderr.txt index ac52aec..7bb7902 100644 --- a/Tests/CMakeCommands/find_package/MissingNormalRequired-stderr.txt +++ b/Tests/CMakeCommands/find_package/MissingNormalRequired-stderr.txt @@ -14,4 +14,4 @@ CMake Error at MissingNormalRequired.cmake:1 \(find_package\): "NotHere" provides a separate development package or SDK, be sure it has been installed. Call Stack \(most recent call first\): - CMakeLists.txt:3 \(include\) + CMakeLists.txt:3 \(include\)$ diff --git a/Tests/CMakeCommands/find_package/MissingNormalRequired.cmake b/Tests/CMakeCommands/find_package/MissingNormalRequired.cmake index 5c33fca..33353d8 100644 --- a/Tests/CMakeCommands/find_package/MissingNormalRequired.cmake +++ b/Tests/CMakeCommands/find_package/MissingNormalRequired.cmake @@ -1 +1,2 @@ find_package(NotHere REQUIRED) +message(FATAL_ERROR "This error must not be reachable.") -- cgit v0.12