--- a/meson.build
+++ b/meson.build
@@ -299,10 +299,14 @@ conf.set('HAVE_LIBUDEV', lib_udev.found(
 
 lib_crypt = cc.find_library('crypt')
 
-lib_pam = cc.find_library('pam')
+req_libpam = not (get_option('build-login').disabled() or get_option('build-chfn-chsh').disabled()
+  or get_option('build-su').disabled() or get_option('build-runuser').disabled())
+lib_pam = cc.find_library('pam', required : req_libpam)
 if lib_pam.found()
   lib_pam_misc = cc.find_library('pam_misc')
   lib_pam = [lib_pam, lib_pam_misc]
+else
+  lib_pam_misc = declare_dependency()
 endif
 
 lib_cryptsetup = dependency(
