Warning, /plasma/kscreenlocker/cmake/FindPAM.cmake is written in an unsupported language. File is not indexed.
0001 # - Try to find the PAM libraries
0002 # Once done this will define
0003 #
0004 # PAM_FOUND - system has pam
0005 # PAM_INCLUDE_DIR - the pam include directory
0006 # PAM_LIBRARIES - libpam library
0007
0008 if (PAM_INCLUDE_DIR AND PAM_LIBRARY)
0009 # Already in cache, be silent
0010 set(PAM_FIND_QUIETLY TRUE)
0011 endif (PAM_INCLUDE_DIR AND PAM_LIBRARY)
0012
0013 find_path(PAM_INCLUDE_DIR NAMES security/pam_appl.h pam/pam_appl.h)
0014 find_library(PAM_LIBRARY pam)
0015 find_library(DL_LIBRARY dl)
0016
0017 if (PAM_INCLUDE_DIR AND PAM_LIBRARY)
0018 set(PAM_FOUND TRUE)
0019 if (DL_LIBRARY)
0020 set(PAM_LIBRARIES ${PAM_LIBRARY} ${DL_LIBRARY})
0021 else (DL_LIBRARY)
0022 set(PAM_LIBRARIES ${PAM_LIBRARY})
0023 endif (DL_LIBRARY)
0024
0025 if (EXISTS ${PAM_INCLUDE_DIR}/pam/pam_appl.h)
0026 # darwin claims to be something special
0027 set(HAVE_PAM_PAM_APPL_H 1)
0028 endif (EXISTS ${PAM_INCLUDE_DIR}/pam/pam_appl.h)
0029
0030 if (NOT DEFINED PAM_MESSAGE_CONST)
0031 include(CheckCXXSourceCompiles)
0032 # XXX does this work with plain c?
0033 check_cxx_source_compiles("
0034 #if ${HAVE_PAM_PAM_APPL_H}+0
0035 # include <pam/pam_appl.h>
0036 #else
0037 # include <security/pam_appl.h>
0038 #endif
0039
0040 static int PAM_conv(
0041 int num_msg,
0042 const struct pam_message **msg, /* this is the culprit */
0043 struct pam_response **resp,
0044 void *ctx)
0045 {
0046 return 0;
0047 }
0048
0049 int main(void)
0050 {
0051 struct pam_conv PAM_conversation = {
0052 &PAM_conv, /* this bombs out if the above does not match */
0053 0
0054 };
0055
0056 return 0;
0057 }
0058 " PAM_MESSAGE_CONST)
0059 endif (NOT DEFINED PAM_MESSAGE_CONST)
0060 set(PAM_MESSAGE_CONST ${PAM_MESSAGE_CONST} CACHE BOOL "PAM expects a conversation function with const pam_message")
0061
0062 endif (PAM_INCLUDE_DIR AND PAM_LIBRARY)
0063
0064 if (PAM_FOUND)
0065 if (NOT PAM_FIND_QUIETLY)
0066 message(STATUS "Found PAM: ${PAM_LIBRARIES}")
0067 endif (NOT PAM_FIND_QUIETLY)
0068 else (PAM_FOUND)
0069 if (PAM_FIND_REQUIRED)
0070 message(FATAL_ERROR "PAM was not found")
0071 endif(PAM_FIND_REQUIRED)
0072 endif (PAM_FOUND)
0073
0074 mark_as_advanced(PAM_INCLUDE_DIR PAM_LIBRARY DL_LIBRARY PAM_MESSAGE_CONST)