Skip to content

FindOpenSSL: Lookup all pkg-config directories

When using a custom sysroot to build things using pkg-config, some of the output variables feature the sysroot while others do not:

$ export PKG_CONFIG_SYSROOT_DIR=/path/to/sysroot
$ export PKG_CONFIG_LIBDIR=/path/to/sysroot/usr/lib/pkgconfig
$ pkg-config --cflags-only-I openssl
-I/path/to/sysroot/usr/include/
$ pkg-config --variable=includedir openssl
/usr/include
$ pkg-config --libs-only-L openssl
-L/path/to/sysroot/usr/lib
$ pkg-config --variable=libdir openssl
/usr/lib

When using pkg_check_modules, it's pretty much the same:

pkg_check_modules(_OPENSSL QUIET openssl)
_OPENSSL_INCLUDE_DIRS == /path/to/sysroot/usr/include/
_OPENSSL_INCLUDEDIR == /usr/include
_OPENSSL_LIBRARY_DIRS == -L/path/to/sysroot/usr/lib
_OPENSSL_LIBDIR == /usr/lib

However, FindOpenSSL only searches for headers in INCLUDEDIR and libraries in LIBDIR instead of searching INCLUDE_DIRS and LIBRARY_DIRS as well.

This fixes that behaviour.

Fixes: #16885 (closed)

Edited by Brad King

Merge request reports