-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathExternal_OpenSSL.cmake.in
55 lines (48 loc) · 2.23 KB
/
External_OpenSSL.cmake.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
cmake_minimum_required(VERSION 2.8.2)
project(OpenSSL-download NONE)
include(ExternalProject)
set(EP_SOURCE_DIR ${CMAKE_BINARY_DIR}/openssl-src)
set(EP_BINARY_DIR ${CMAKE_BINARY_DIR}/openssl-src)
set(EP_INSTALL_DIR ${CMAKE_INSTALL_PREFIX})
set(openssl_TAG 1.1.1l)
set(openssl_SHA256 0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1)
set(openssl_URL "http://www.openssl.org/source/openssl-${openssl_TAG}.tar.gz")
include(ProcessorCount)
ProcessorCount(CPU_COUNT)
if(CPU_COUNT EQUAL 0)
set(CPU_COUNT 2)
endif()
if (WIN32)
set(OPENSSL_PATCH_COMMAND git apply --ignore-space-change --ignore-whitespace ${CMAKE_SOURCE_DIR}/bcryptgen.patch)
set(OPENSSL_CONFIG_COMMAND perl configure VC-WIN64A CC=cl RC=rc --prefix=${EP_INSTALL_DIR} --openssldir=${EP_INSTALL_DIR})
set(OPENSSL_BUILD_COMMAND nmake)
set(OPENSSL_INSTALL_COMMAND nmake install)
# OpenSSL's Makefile fails to install the static builds of libcrypto and libssl on Windows
# These library names are only valid from OpenSSL 1.1 and higher.
set(OPENSSL_POSTINSTALL_CRYPTO_COMMAND ${CMAKE_COMMAND} -E copy libcrypto_static.lib ${EP_INSTALL_DIR}/lib/libcrypto_static.lib)
set(OPENSSL_POSTINSTALL_SSL_COMMAND ${CMAKE_COMMAND} -E copy libssl_static.lib ${EP_INSTALL_DIR}/lib/libssl_static.lib)
else()
set(OPENSSL_PATCH_COMMAND git apply --ignore-space-change --ignore-whitespace ${CMAKE_SOURCE_DIR}/commoncrypto.patch)
set(OPENSSL_CONFIG_COMMAND CFLAGS=-fPIC ./config --prefix=${EP_INSTALL_DIR})
set(OPENSSL_BUILD_COMMAND make -j ${CPU_COUNT})
if(APPLE)
set(OPENSSL_INSTALL_COMMAND make install_sw install_ssldirs)
else()
set(OPENSSL_INSTALL_COMMAND make install_sw)
endif()
set(OPENSSL_POSTINSTALL_CRYPTO_COMMAND "")
set(OPENSSL_POSTINSTALL_SSL_COMMAND "")
endif()
ExternalProject_Add(openssl
URL ${openssl_URL}
URL_HASH SHA256=${openssl_SHA256}
SOURCE_DIR ${EP_SOURCE_DIR}
BINARY_DIR ${EP_BINARY_DIR}
INSTALL_DIR ${EP_INSTALL_DIR}
PATCH_COMMAND ${OPENSSL_PATCH_COMMAND}
CONFIGURE_COMMAND ${OPENSSL_CONFIG_COMMAND}
BUILD_COMMAND ${OPENSSL_BUILD_COMMAND}
INSTALL_COMMAND ${OPENSSL_INSTALL_COMMAND}
COMMAND ${OPENSSL_POSTINSTALL_CRYPTO_COMMAND}
COMMAND ${OPENSSL_POSTINSTALL_SSL_COMMAND}
)