From 6ea63f101843f45533c420cb8d957c8b0bb5ae23 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Wed, 24 Feb 2021 10:17:46 +0200 Subject: [PATCH] cmake: rewrite PAM module Signed-off-by: Ivailo Monev --- cmake/modules/FindPAM.cmake | 68 ++++++++++++++----------------------- 1 file changed, 25 insertions(+), 43 deletions(-) diff --git a/cmake/modules/FindPAM.cmake b/cmake/modules/FindPAM.cmake index 9b2f2433..26325a12 100644 --- a/cmake/modules/FindPAM.cmake +++ b/cmake/modules/FindPAM.cmake @@ -5,41 +5,30 @@ # PAM_INCLUDE_DIR - the pam include directory # PAM_LIBRARIES - libpam library # PAM_MESSAGE_CONST - libpam pam_message struct is const +# +# Copyright (c) 2021, Ivailo Monev, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. -if (PAM_INCLUDE_DIR AND PAM_LIBRARY) - # Already in cache, be silent - set(PAM_FIND_QUIETLY TRUE) -endif (PAM_INCLUDE_DIR AND PAM_LIBRARY) - -find_path(PAM_INCLUDE_DIR NAMES security/pam_appl.h pam/pam_appl.h) +find_path(PAM_INCLUDE_DIR NAMES security/pam_appl.h) find_library(PAM_LIBRARY pam) find_library(DL_LIBRARY dl) -if (PAM_INCLUDE_DIR AND PAM_LIBRARY) - set(PAM_FOUND TRUE) - if (DL_LIBRARY) - set(PAM_LIBRARIES ${PAM_LIBRARY} ${DL_LIBRARY}) - else (DL_LIBRARY) - set(PAM_LIBRARIES ${PAM_LIBRARY}) - endif (DL_LIBRARY) +if(DL_LIBRARY) + set(PAM_LIBRARIES ${PAM_LIBRARY} ${DL_LIBRARY}) +else() + set(PAM_LIBRARIES ${PAM_LIBRARY}) +endif() - if (EXISTS ${PAM_INCLUDE_DIR}/pam/pam_appl.h) - # darwin claims to be something special - set(HAVE_PAM_PAM_APPL_H 1) - endif (EXISTS ${PAM_INCLUDE_DIR}/pam/pam_appl.h) - - if (NOT DEFINED PAM_MESSAGE_CONST) - include(CheckCXXSourceCompiles) - include(CMakePushCheckState) - cmake_reset_check_state() - set(CMAKE_REQUIRED_INCLUDES "${PAM_INCLUDE_DIR}") - # XXX does this work with plain c? - check_cxx_source_compiles(" -#if ${HAVE_PAM_PAM_APPL_H}+0 -# include -#else -# include -#endif +if(NOT DEFINED PAM_MESSAGE_CONST) + include(CheckCXXSourceCompiles) + include(CMakePushCheckState) + cmake_reset_check_state() + set(CMAKE_REQUIRED_INCLUDES "${PAM_INCLUDE_DIR}") + # XXX does this work with plain c? + check_cxx_source_compiles(" +#include static int PAM_conv( int num_msg, @@ -61,19 +50,12 @@ int main(void) } " PAM_MESSAGE_CONST) cmake_reset_check_state() - endif (NOT DEFINED PAM_MESSAGE_CONST) - set(PAM_MESSAGE_CONST ${PAM_MESSAGE_CONST} CACHE BOOL "PAM expects a conversation function with const pam_message") +endif() +set(PAM_MESSAGE_CONST ${PAM_MESSAGE_CONST} CACHE BOOL "PAM expects a conversation function with const pam_message") -endif (PAM_INCLUDE_DIR AND PAM_LIBRARY) - -if (PAM_FOUND) - if (NOT PAM_FIND_QUIETLY) - message(STATUS "Found PAM: ${PAM_LIBRARIES}") - endif (NOT PAM_FIND_QUIETLY) -else (PAM_FOUND) - if (PAM_FIND_REQUIRED) - message(FATAL_ERROR "PAM was not found") - endif(PAM_FIND_REQUIRED) -endif (PAM_FOUND) +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(PAM + REQUIRED_VARS PAM_LIBRARIES PAM_INCLUDE_DIR +) mark_as_advanced(PAM_INCLUDE_DIR PAM_LIBRARY DL_LIBRARY PAM_MESSAGE_CONST)