Navigation


Changeset 746:96c75744d3c4 in freeDiameter


Ignore:
Timestamp:
Jul 29, 2011, 6:49:17 AM (13 years ago)
Author:
Sebastien Decugis <sdecugis@freediameter.net>
Branch:
default
Phase:
public
Message:

Attempt to support newer GNU TLS libraries. Need more work...

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • cmake/Modules/FindGnuTLS.cmake

    r493 r746  
    55#  GNUTLS_INCLUDE_DIR - where to find gnutls.h, etc.
    66#  GNUTLS_LIBRARIES - List of libraries when using gnutls.
     7#  GNUTLS_NEW_VERSION - true if GnuTLS version is <= 2.10.0 (does not require additional separate gcrypt initialization)
    78
    89if (GNUTLS_INCLUDE_DIR AND GNUTLS_LIBRARIES)
     
    3637# only show up under the advanced options in the gui cmake applications.
    3738MARK_AS_ADVANCED( GNUTLS_LIBRARY GNUTLS_INCLUDE_DIR )
     39
     40# Now check if the library is recent. gnutls_hash was added in 2.10.0.
     41IF( NOT( "${GNUTLS_VERSION_TEST_FOR}" STREQUAL "${GNUTLS_LIBRARY}" ))
     42  INCLUDE (CheckLibraryExists)
     43  MESSAGE(STATUS "Rechecking GNUTLS_NEW_VERSION")
     44  UNSET(GNUTLS_NEW_VERSION)
     45  UNSET(GNUTLS_NEW_VERSION CACHE)
     46  GET_FILENAME_COMPONENT(GNUTLS_PATH ${GNUTLS_LIBRARY} PATH)
     47  CHECK_LIBRARY_EXISTS(gnutls gnutls_hash ${GNUTLS_PATH} GNUTLS_NEW_VERSION)
     48  SET( GNUTLS_VERSION_TEST_FOR ${GNUTLS_LIBRARY} CACHE INTERNAL "Version the test was made against" )
     49ENDIF (NOT( "${GNUTLS_VERSION_TEST_FOR}" STREQUAL "${GNUTLS_LIBRARY}" ))
  • include/freeDiameter/freeDiameter-host.h.in

    r740 r746  
    5151#cmakedefine DIAMID_IDNA_IGNORE
    5252#cmakedefine DIAMID_IDNA_REJECT
     53#cmakedefine GNUTLS_NEW_VERSION
    5354
    5455#cmakedefine ERRORS_ON_TODO
  • libfdcore/core.c

    r740 r746  
    184184       
    185185        /* Initialize gcrypt and gnutls */
     186        #ifndef GNUTLS_NEW_VERSION
    186187        GNUTLS_TRACE( (void) gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread) );
    187188        GNUTLS_TRACE( (void) gcry_control (GCRYCTL_ENABLE_QUICK_RANDOM, 0) );
     189        #endif /* GNUTLS_NEW_VERSION */
    188190        CHECK_GNUTLS_DO( gnutls_global_init(), return EINVAL );
    189191        if ( ! gnutls_check_version(GNUTLS_VERSION) ) {
     
    191193                return EINVAL;
    192194        } else {
     195        #ifdef GNUTLS_NEW_VERSION
     196                TRACE_DEBUG(INFO, "libgnutls '%s' initialized.", gnutls_check_version(NULL) );
     197        #else /* GNUTLS_NEW_VERSION */
    193198                TRACE_DEBUG(INFO, "libgnutls '%s', libgcrypt '%s', initialized.", gnutls_check_version(NULL), gcry_check_version(NULL) );
     199        #endif /* GNUTLS_NEW_VERSION */
    194200        }
    195201       
Note: See TracChangeset for help on using the changeset viewer.