# 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 #include #include #include #include #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)