cmake/FindLibpsl: protect against pkg-config
"half-detection"
#15827
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Same issue as seen before with libssh2:
libpsl
's pkg-config moduledepends on another module, but that's not found. CMake ends up reporting
LIBPSL_FOUND=YES
, while leavingLIBPSL_INCLUDE_DIRS
empty. Thenthe build fails to find
psl.h
.The missing dependency in this case is
icu4c
, which is "keg-only",meaning it's not exposed in the default Homebrew header, pkg-config,
lib, etc locations. It must be added to the
PKG_CONFIG_PATH
env, assuggested by the warnings messages of
pkgconf
.To avoid this fallout, let's ensure that
LIBPSL_INCLUDE_DIRS
isnon-empty when detecting via
pkg-config
and fall back to the CMakedetection method otherwise.
This was an issue till Homebrew libpsl 0.21.5_1, fixed in 0.21.5_2, that
no longer depends on
icu4c
.Example log:
Follow-up to 39c741b #15408