Commit 1bfb527f authored by Benjamin Chrétien's avatar Benjamin Chrétien Committed by Brad King

FindPkgConfig: return actual error when a package is not found (#15810)

In some cases, CMake returned the following error:

-- Checking for module 'foo'
--   Package 'foo' not found

When the actual error returned by pkg-config was:

  Package 'bar', required by 'foo', not found

Now, the actual error is forwarded to the user.

-- Checking for module 'foo'
--   Package 'bar', required by 'foo', not found

For the standard case (i.e. the package was indeed not found), the
CMake error was:

-- Checking for module 'foo'
--   Package 'foo' not found

But it now prints:

-- Checking for module 'foo'
--   No package 'foo' found

The associated test was also updated. ${last} refers to the last
CLI argument.
parent 2fd5fd1f
......@@ -328,7 +328,7 @@ macro(_pkg_check_modules_internal _is_required _is_silent _no_cmake_path _no_cma
if (_pkg_check_modules_pkg_op)
list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_ver}")
list(APPEND _pkg_check_modules_exist_query --exists)
list(APPEND _pkg_check_modules_exist_query --exists --print-errors --short-errors)
......@@ -342,12 +342,14 @@ macro(_pkg_check_modules_internal _is_required _is_silent _no_cmake_path _no_cma
# execute the query
COMMAND ${PKG_CONFIG_EXECUTABLE} ${_pkg_check_modules_exist_query}
RESULT_VARIABLE _pkgconfig_retval)
RESULT_VARIABLE _pkgconfig_retval
ERROR_VARIABLE _pkgconfig_error
# evaluate result and tell failures
if (_pkgconfig_retval)
if(NOT ${_is_silent})
message(STATUS " Package '${_pkg_check_modules_pkg}' not found")
message(STATUS " ${_pkgconfig_error}")
set(_pkg_check_modules_failed 1)
......@@ -10,9 +10,10 @@ case $1 in
echo "Expected: $@"
eval last=\${$#}
echo "Expected: ${last}"
echo "Found: ${PKG_CONFIG_PATH}"
[ "$@" = "${PKG_CONFIG_PATH}" ] || exit 1
[ "${last}" = "${PKG_CONFIG_PATH}" ] || exit 1
exit 255
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment