Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add a check for a shared polarssl library. This checks to see that the
system version is new enough, and is compiled with havege support.
  • Loading branch information
glennricster committed Sep 3, 2013
1 parent 6b1c8f9 commit eb8e03f
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 4 deletions.
15 changes: 11 additions & 4 deletions CMakeLists.txt
Expand Up @@ -602,10 +602,17 @@ if(USE_UPNP)
add_definitions(-DUSE_UPNP)
endif()


message("Using PolarSSL from Externals")
add_subdirectory(Externals/polarssl/)
include_directories(Externals/polarssl/include)
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT ANDROID)
include(FindPolarSSL)
endif()
if(POLARSSL_FOUND AND POLARSSL_WORKS)
message("Using shared PolarSSL")
include_directories(${POLARSSL_INCLUDE_DIR})
else()
message("Using PolarSSL from Externals")
add_subdirectory(Externals/polarssl/)
include_directories(Externals/polarssl/include)
endif()

if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT ANDROID)
check_lib(SOIL SOIL SOIL/SOIL.h QUIET)
Expand Down
59 changes: 59 additions & 0 deletions CMakeTests/FindPolarSSL.cmake
@@ -0,0 +1,59 @@
# 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

if(POLARSSL_INCLUDE_DIR AND POLARSSL_LIBRARY)
# Already in cache, be silent
set(POLARSSL_FIND_QUIETLY TRUE)
endif()

find_path(POLARSSL_INCLUDE_DIR polarssl/ssl.h)
find_library(POLARSSL_LIBRARY polarssl)

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)

message(STATUS "Checking to see if system version contains necessary methods")

set(CMAKE_REQUIRED_INCLUDES ${POLARSSL_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${POLARSSL_LIBRARY})
check_cxx_source_compiles("
#include <polarssl/net.h>
#include <polarssl/ssl.h>
#include <polarssl/havege.h>
int main()
{
ssl_context ctx;
ssl_session session;
havege_state hs;
ssl_init(&ctx);
havege_init(&hs);
ssl_set_rng(&ctx, havege_random, &hs);
ssl_set_session(&ctx, &session);
ssl_close_notify(&ctx);
ssl_session_free(&session);
ssl_free(&ctx);
return 0;
}"
POLARSSL_WORKS)

else ()
message (STATUS "Could not find polarssl")
endif ()

MARK_AS_ADVANCED(POLARSSL_INCLUDE_DIR POLARSSL_LIBRARY)

0 comments on commit eb8e03f

Please sign in to comment.