From 08fd4a51ed2390a7af803faca81108e0a6a91c0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Sun, 27 Jan 2019 01:03:25 +0100 Subject: [PATCH] Update CMake rules + Prefer Heimdal during Kerberos detection. + Add a check whether the Kerberos is Heimdal. + Add a check whether the compiler supports the option -fpermissive. + Add an option for the user to specify SYSTEM_CA_STORE_REGENERATE_COMMAND. + Set the library version to 1.0.0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Slávek Banko --- CMakeLists.txt | 5 +++-- ConfigureChecks.cmake | 19 +++++++++++++++++-- src/CMakeLists.txt | 6 ++++-- src/libtdeldap.cpp | 2 ++ 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5992725..f4aeb28 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,7 +55,8 @@ option( BUILD_TRANSLATIONS "Build translations" ${BUILD_ALL} ) set( KDE_CONFDIR "/etc/trinity" CACHE STRING "TDE Settings Directory" ) set( KRB5_FILE "/etc/krb5.conf" CACHE STRING "Kerberos config file" ) -set( SYSTEM_CA_STORE_CERT_LOCATION "/usr/local/share/ca-certificates/" CACHE STRING "Location of ca-certificates" ) +set( SYSTEM_CA_STORE_CERT_LOCATION "/usr/local/share/ca-certificates/" CACHE STRING "Location of ca-certificates" ) +set( SYSTEM_CA_STORE_REGENERATE_COMMAND "update-ca-certificates" CACHE STRING "Command to update ca-certificates" ) set( CRON_UPDATE_PRIMARY_REALM_CERTIFICATES_OPENLDAP_RELOAD_COMMAND "/etc/init.d/slapd force-reload" CACHE STRING "Cron command to update openLDAP" ) @@ -66,7 +67,7 @@ include( ConfigureChecks.cmake ) ###### global compiler settings -add_definitions( -DHAVE_CONFIG_H -UTQT_NO_ASCII_CAST -fpermissive ) +add_definitions( -DHAVE_CONFIG_H -UTQT_NO_ASCII_CAST ${ENABLE_PERMISSIVE_FLAG} ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TQT_CXX_FLAGS}" ) set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" ) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index e8b007b..3aa03f9 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -39,10 +39,10 @@ endif( NOT HAVE_LIBLDAP ) ##### check for krb5 -pkg_search_module( KRB5 krb5 ) +pkg_search_module( KRB5 heimdal-krb5 krb5 ) if( NOT KRB5_FOUND) if( NOT DEFINED KRB5_CONFIG_EXECUTABLE ) - find_program( KRB5_CONFIG_EXECUTABLE NAMES krb5-config ) + find_program( KRB5_CONFIG_EXECUTABLE NAMES krb5-config.heimdal krb5-config ) if( NOT KRB5_CONFIG_EXECUTABLE ) tde_message_fatal( "krb5 library is required but not found on your system" ) endif( ) @@ -62,3 +62,18 @@ if( NOT KRB5_FOUND) set( KRB5_FOUND 1 ) endif( ) endif( ) + +find_file( KRB5_ASN1_H + NAMES krb5_asn1.h + HINTS ${KRB5_INCLUDE_DIRS} +) +if( "${KRB5_ASN1_H}" STREQUAL "KRB5_ASN1_H-NOTFOUND" ) + tde_message_fatal( "Heimdal Kerberos is required, but was not found on our system" ) +endif( ) + + +# check compiler permissive flag +check_cxx_compiler_flag( -fpermissive HAVE_PERMISSIVE_SUPPORT ) +if( HAVE_PERMISSIVE_SUPPORT ) + set( ENABLE_PERMISSIVE_FLAG "-fpermissive" ) +endif( ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a8db41b..8395331 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -11,6 +11,7 @@ include_directories( link_directories( ${TQT_LIBRARY_DIRS} ${TDE_LIB_DIR} + ${KRB5_LIBRARY_DIRS} ) @@ -30,9 +31,10 @@ tde_add_library( tdeldap SHARED AUTOMOC tdesu krb5 kadm5clnt kadm5srv hdb lber ldap - + + VERSION 1.0.0 DESTINATION ${LIB_INSTALL_DIR} -) +) ##### headers diff --git a/src/libtdeldap.cpp b/src/libtdeldap.cpp index 236f307..0c130bd 100644 --- a/src/libtdeldap.cpp +++ b/src/libtdeldap.cpp @@ -124,7 +124,9 @@ extern "C" { #define SYSTEM_CA_STORE_CERT_LOCATION "/usr/local/share/ca-certificates/" #endif +#ifndef SYSTEM_CA_STORE_REGENERATE_COMMAND #define SYSTEM_CA_STORE_REGENERATE_COMMAND "update-ca-certificates" +#endif #ifndef CRON_UPDATE_PRIMARY_REALM_CERTIFICATES_OPENLDAP_RELOAD_COMMAND #define CRON_UPDATE_PRIMARY_REALM_CERTIFICATES_OPENLDAP_RELOAD_COMMAND "/etc/init.d/slapd force-reload"