Make detection of pam library more portable (#840)

FreeBSD has the pam library installed in the base system. However, it does not provide pam.pc file. So pkg_check_modules() fails to detect pam library. With this change, cmake tries to find it using find_library() first and falls back to pkg_check_modules().
This commit is contained in:
Hiroki Tagato 2025-08-06 02:00:48 +09:00 committed by GitHub
parent bdf0ef8282
commit 347e05a40e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -86,14 +86,25 @@ pkg_check_modules(
pangocairo
libdrm
gbm
pam
hyprutils>=0.8.0
sdbus-c++>=2.0.0
hyprgraphics)
find_library(PAM_FOUND pam)
if(PAM_FOUND)
message(STATUS "Found pam")
set(PAM_LIB ${PAM_FOUND})
else()
pkg_check_modules(PAM IMPORTED_TARGET pam)
if(PAM_FOUND)
set(PAM_LIB PkgConfig::PAM)
else()
message(FATAL_ERROR "The required library libpam was not found.")
endif()
endif()
file(GLOB_RECURSE SRCFILES CONFIGURE_DEPENDS "src/*.cpp")
add_executable(hyprlock ${SRCFILES})
target_link_libraries(hyprlock PRIVATE pam rt Threads::Threads PkgConfig::deps
target_link_libraries(hyprlock PRIVATE ${PAM_LIB} rt Threads::Threads PkgConfig::deps
OpenGL::EGL OpenGL::GLES3)
# protocols