From 135a263fb2218badef145343b5681e69ed616c1b Mon Sep 17 00:00:00 2001
From: Rashad Kanavath <rashad.kanavath@c-s.fr>
Date: Thu, 18 Jun 2015 17:14:49 +0200
Subject: [PATCH] ENH: add openssl

---
 SuperBuild/CMake/External_curl.cmake    |  3 ++
 SuperBuild/CMake/External_openssl.cmake | 58 +++++++++++++++++++++++++
 SuperBuild/CMakeLists.txt               |  5 +++
 3 files changed, 66 insertions(+)
 create mode 100644 SuperBuild/CMake/External_openssl.cmake

diff --git a/SuperBuild/CMake/External_curl.cmake b/SuperBuild/CMake/External_curl.cmake
index b9cbc0bd07..c6fba774ce 100644
--- a/SuperBuild/CMake/External_curl.cmake
+++ b/SuperBuild/CMake/External_curl.cmake
@@ -15,6 +15,9 @@ else()
   
   # declare dependencies
   set(${proj}_DEPENDENCIES ZLIB)
+  if(NOT USE_SYSTEM_OPENSSL)
+    list(APPEND ${proj}_DEPENDENCIES OPENSSL)
+  endif()
   INCLUDE_SUPERBUILD_DEPENDENCIES(${${proj}_DEPENDENCIES})
   # set proj back to its original value
   set(proj CURL)
diff --git a/SuperBuild/CMake/External_openssl.cmake b/SuperBuild/CMake/External_openssl.cmake
new file mode 100644
index 0000000000..a4c908a4e3
--- /dev/null
+++ b/SuperBuild/CMake/External_openssl.cmake
@@ -0,0 +1,58 @@
+set(proj OPENSSL)
+
+if(NOT __EXTERNAL_${proj}__)
+set(__EXTERNAL_${proj}__ 1)
+
+message(STATUS "Setup OpenSSL ...")
+
+if(USE_SYSTEM_OPENSSL)
+  find_package ( OPENSSL )
+  add_custom_target(${proj})
+  message(STATUS "  Using OpenSSL system version")
+else()
+  SETUP_SUPERBUILD(PROJECT ${proj})
+  message(STATUS "  Using OpenSSL SuperBuild version")
+  
+  # declare dependencies
+  set(${proj}_DEPENDENCIES ZLIB)
+  INCLUDE_SUPERBUILD_DEPENDENCIES(${${proj}_DEPENDENCIES})
+  # set proj back to its original value
+  set(proj OPENSSL)
+
+  set(OPENSSL_BUILD_ARCH "linux-x32")
+  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+    set(OPENSSL_BUILD_ARCH "linux-x86_64")
+  endif()
+  
+  if(MSVC)
+    message(FATAL_ERROR "No build rules added yet.")  
+  else(UNIX)
+    ExternalProject_Add(${proj}
+      PREFIX ${proj}
+      DEPENDS ${${proj}_DEPENDENCIES}
+      URL "http://openssl.org/source/openssl-1.0.2c.tar.gz"
+      URL_MD5 8c8d81a9ae7005276e486702edbcd4b6
+      BINARY_DIR ${OPENSSL_SB_BUILD_DIR}
+      INSTALL_DIR ${SB_INSTALL_PREFIX}
+      DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
+      PATCH_COMMAND  ${CMAKE_COMMAND} -E copy_directory ${OPENSSL_SB_SRC} ${OPENSSL_SB_BUILD_DIR}
+      CONFIGURE_COMMAND ${CMAKE_COMMAND} -E chdir ${OPENSSL_SB_BUILD_DIR} ./Configure ${OPENSSL_BUILD_ARCH}
+      --prefix=${SB_INSTALL_PREFIX} shared zlib zlib-dynamic -I${SB_INSTALL_PREFIX}/include -L${SB_INSTALL_PREFIX}/lib
+      BUILD_COMMAND $(MAKE)
+      INSTALL_COMMAND $(MAKE) install
+      )
+  endif()
+  
+  set(_SB_${proj}_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
+  if(WIN32)
+    message(FATAL_ERROR "No build rules added yet.")  
+  elseif(UNIX)
+    set(_SB_${proj}_LIBRARY ${SB_INSTALL_PREFIX}/lib/libssl${CMAKE_SHARED_LIBRARY_SUFFIX})
+  endif()
+
+endif()
+endif()
+
+
+
+
diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt
index f6b42039e0..d7d7ffd772 100644
--- a/SuperBuild/CMakeLists.txt
+++ b/SuperBuild/CMakeLists.txt
@@ -102,6 +102,11 @@ SETUP_SYSTEM_LIBRARY(PROJECT OPENJPEG DEFAULT OFF)
 SETUP_SYSTEM_LIBRARY(PROJECT BOOST DEFAULT ON)
 SETUP_SYSTEM_LIBRARY(PROJECT LIBKML DEFAULT OFF)
 SETUP_SYSTEM_LIBRARY(PROJECT CURL DEFAULT ON)
+if(WIN32)
+  SETUP_SYSTEM_LIBRARY(PROJECT OPENSSL DEFAULT OFF)
+else()
+  SETUP_SYSTEM_LIBRARY(PROJECT OPENSSL DEFAULT ON)
+endif()
 SETUP_SYSTEM_LIBRARY(PROJECT GDAL DEFAULT OFF)
 SETUP_SYSTEM_LIBRARY(PROJECT FFTW DEFAULT OFF)
 SETUP_SYSTEM_LIBRARY(PROJECT ITK DEFAULT OFF)
-- 
GitLab