1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- # Locate polarssl library
- # This module defines
- # POLARSSL_FOUND
- # POLARSSL_LIBRARY
- # POLARSSL_INCLUDE_DIR
- # POLARSSL_WORKS, this is true if polarssl is found and contains the methods
- # needed by dolphin-emu
- # validate cached values (but use them as hints)
- set(POLARSSL_INCLUDE_DIR_HINT POLARSSL_INCLUDE_DIR)
- set(POLARSSL_LIBRARY_HINT POLARSSL_LIBRARY)
- unset(POLARSSL_INCLUDE_DIR CACHE)
- unset(POLARSSL_LIBRARY CACHE)
- find_path(POLARSSL_INCLUDE_DIR polarssl/ssl.h HINTS ${POLARSSL_INCLUDE_DIR_HINT})
- find_library(POLARSSL_LIBRARY polarssl HINTS ${POLARSSL_LIBRARY_HINT})
- if(POLARSSL_INCLUDE_DIR STREQUAL POLARSSL_INCLUDE_DIR_HINT AND
- POLARSSL_LIBRARY STREQUAL POLARSSL_LIBRARY_HINT)
- # using cached values, be silent
- set(POLARSSL_FIND_QUIETLY TRUE)
- endif()
- if (POLARSSL_INCLUDE_DIR AND POLARSSL_LIBRARY)
- set (POLARSSL_FOUND TRUE)
- endif ()
- if (POLARSSL_FOUND)
- if (NOT POLARSSL_FIND_QUIETLY)
- message (STATUS "Found the polarssl libraries at ${POLARSSL_LIBRARY}")
- message (STATUS "Found the polarssl headers at ${POLARSSL_INCLUDE_DIR}")
- endif (NOT POLARSSL_FIND_QUIETLY)
- set(CMAKE_REQUIRED_INCLUDES ${POLARSSL_INCLUDE_DIR})
- set(CMAKE_REQUIRED_LIBRARIES ${POLARSSL_LIBRARY})
- unset(POLARSSL_WORKS CACHE)
- check_cxx_source_compiles("
- #include <polarssl/ctr_drbg.h>
- #include <polarssl/entropy.h>
- #include <polarssl/net.h>
- #include <polarssl/ssl.h>
- #include <polarssl/version.h>
- #if POLARSSL_VERSION_NUMBER < 0x01030000
- #error \"Shared PolarSSL version is too old\"
- #endif
- int main()
- {
- ssl_context ctx;
- ssl_session session;
- entropy_context entropy;
- ctr_drbg_context ctr_drbg;
- x509_crt cacert;
- x509_crt clicert;
- pk_context pk;
- ssl_init(&ctx);
- entropy_init(&entropy);
- const char* pers = \"dolphin-emu\";
- ctr_drbg_init(&ctr_drbg, entropy_func,
- &entropy,
- (const unsigned char*)pers,
- strlen(pers));
-
- ssl_set_rng(&ctx, ctr_drbg_random, &ctr_drbg);
- ssl_set_session(&ctx, &session);
- ssl_close_notify(&ctx);
- ssl_session_free(&session);
- ssl_free(&ctx);
- entropy_free(&entropy);
- return 0;
- }"
- POLARSSL_WORKS)
- else ()
- message (STATUS "Could not find polarssl")
- endif ()
- mark_as_advanced(POLARSSL_INCLUDE_DIR POLARSSL_LIBRARY)
|