@@ -69,7 +69,9 @@ num_option(USE_IPV6 "Use IPv6 [CALLBACK=ON]" ${DEFAULT_USE_CALLBACK_API})
6969num_option (USE_SET_DNS_SERVERS "Use set DNS servers [CALLBACK=ON]" ${DEFAULT_USE_CALLBACK_API} )
7070num_option (USE_EXTERN_API "Use extern C API [WITH_CPP=ON]" ON )
7171num_option (USE_LEGACY_CRYPTO_RANDOM_IV "Use random IV for legacy crypto module [OpenSSL only]" ON )
72- log_set (OPENSSL_ROOT_DIR "" "OpenSSL root directory (leave empty for find_package function)[OPENSSL=ON needed]" )
72+ log_set (OPENSSL_ROOT_DIR "" "OpenSSL root directory (leave empty for find_package() defaults)[OPENSSL=ON needed]" )
73+ log_set (CUSTOM_OPENSSL_LIB_DIR "lib" "OpenSSL lib directory relative to OPENSSL_ROOT_DIR [used only if find_package() failed]" )
74+ log_set (CUSTOM_OPENSSL_INCLUDE_DIR "include" "OpenSSL include directory relative to OPENSSL_ROOT_DIR [used only if find_package() failed]" )
7375log_set (EXAMPLE "all" "Build example with provided name (use 'all' for all examples) [EXAMPLES=ON needed]" )
7476log_set (CGREEN_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR } /cgreen" "CGreen root directory [UNIT_TEST=ON needed]" )
7577log_set (LOG_LEVEL "WARNING" "Log level [TRACE/WARNING/INFO/ERROR/FATAL]" )
@@ -153,13 +155,18 @@ set(CORE_SOURCEFILES
153155set (LIB_SOURCEFILES
154156 ${CMAKE_CURRENT_LIST_DIR } /lib/sockets/pbpal_resolv_and_connect_sockets.c
155157 ${CMAKE_CURRENT_LIST_DIR } /lib/sockets/pbpal_handle_socket_error.c
156- ${CMAKE_CURRENT_LIST_DIR } /lib/md5/md5.c
157158 ${CMAKE_CURRENT_LIST_DIR } /lib/base64/pbbase64.c
158159 ${CMAKE_CURRENT_LIST_DIR } /lib/pb_strnlen_s.c
159160 ${CMAKE_CURRENT_LIST_DIR } /lib/pb_strncasecmp.c
160161 ${CMAKE_CURRENT_LIST_DIR } /lib/sockets/pbpal_adns_sockets.c
161162 ${CMAKE_CURRENT_LIST_DIR } /lib/pubnub_dns_codec.c)
162163
164+ if (NOT ${OPENSSL} )
165+ set (LIB_SOURCEFILES
166+ ${LIB_SOURCEFILES}
167+ ${CMAKE_CURRENT_LIST_DIR } /lib/md5/md5.c)
168+ endif ()
169+
163170if (UNIX )
164171 set (LDLIBS "-lpthread ${LDLIBS} " )
165172 set (OS_SOURCEFILES
@@ -342,8 +349,29 @@ if(${OPENSSL})
342349
343350 if ("${OPENSSL_ROOT_DIR} " STREQUAL "" )
344351 find_package (OpenSSL REQUIRED )
352+ set (OPENSSL_LINK_LIBRARIES OpenSSL::SSL OpenSSL::Crypto)
345353 else ()
346- find_package (OpenSSL REQUIRED PATHS ${OPENSSL_ROOT_DIR} )
354+ find_package (OpenSSL PATHS ${OPENSSL_ROOT_DIR} )
355+ if (OpenSSl_FOUND)
356+ set (OPENSSL_LINK_LIBRARIES OpenSSL::SSL OpenSSL::Crypto)
357+ else ()
358+ message (STATUS "Searching for custom OpenSSL library" )
359+
360+ find_library (OpenSSL REQUIRED NAMES ssl PATHS ${OPENSSL_ROOT_DIR} /${CUSTOM_OPENSSL_LIB_DIR} NO_DEFAULT_PATH )
361+ find_library (Crypto REQUIRED NAMES crypto PATHS ${OPENSSL_ROOT_DIR} /${CUSTOM_OPENSSL_LIB_DIR} NO_DEFAULT_PATH )
362+
363+ message (STATUS "Used libraries:" )
364+ message (STATUS "-> ${OpenSSL} " )
365+ message (STATUS "-> ${Crypto} " )
366+
367+ set (OPENSSL_LINK_LIBRARIES ${OpenSSL} ${Crypto} )
368+ include_directories (${OPENSSL_ROOT_DIR} /${CUSTOM_OPENSSL_INCLUDE_DIR} )
369+
370+ message (STATUS "Used headers:" )
371+ message (STATUS "-> ${OPENSSL_ROOT_DIR} /${CUSTOM_OPENSSL_INCLUDE_DIR} " )
372+
373+ message (STATUS "OpenSSL ready!" )
374+ endif ()
347375 endif ()
348376
349377 set (FEATURE_SOURCEFILES
@@ -370,7 +398,6 @@ if(${OPENSSL})
370398 ${FEATURE_SOURCEFILES} )
371399
372400 set (LDLIBS ${LDLIBS} )
373- set (OPENSSL_LINK_LIBRARIES OpenSSL::SSL OpenSSL::Crypto)
374401
375402 if (UNIX )
376403 set (FEATURE_SOURCEFILES ${FEATURE_SOURCEFILES} ${CMAKE_CURRENT_LIST_DIR } /openssl/pbpal_add_system_certs_posix.c)
0 commit comments