Skip to content

Commit 1fc4951

Browse files
authored
chore(CMakelists.txt) add option to use system installed openssl (#199)
1 parent e5d0acc commit 1fc4951

File tree

1 file changed

+24
-5
lines changed

1 file changed

+24
-5
lines changed

CMakeLists.txt

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ option(PIPY_STATIC "statically link to libc" OFF)
2222
option(PIPY_LTO "enable LTO" OFF)
2323
option(PIPY_USE_NTLS, "Use externally compiled TongSuo Crypto library instead of OpenSSL. Used with PIPY_OPENSSL" OFF)
2424
option(PIPY_USE_SYSTEM_ZLIB "Use system installed zlib" OFF)
25+
option(PIPY_USE_SYSTEM_OPENSSL "Use system installed OpenSSL" OFF)
2526

2627
set(BUILD_SHARED_LIBS OFF)
2728
set(BUILD_TESTING OFF)
@@ -130,7 +131,15 @@ else()
130131
endif(PIPY_USE_SYSTEM_ZLIB)
131132
endif()
132133

133-
if(PIPY_OPENSSL)
134+
if(PIPY_USE_SYSTEM_OPENSSL)
135+
find_package(OpenSSL REQUIRED)
136+
if(OPENSSL_FOUND)
137+
set(OPENSSL_INC_DIR ${OPENSSL_INCLUDE_DIR})
138+
message(STATUS "Using system-installed OpenSSL")
139+
else()
140+
message(FATAL_ERROR "System OpenSSL not found. Set PIPY_USE_SYSTEM_OPENSSL to OFF or install OpenSSL.")
141+
endif()
142+
elseif(PIPY_OPENSSL)
134143
if(PIPY_USE_NTLS)
135144
add_definitions(-DPIPY_USE_NTLS)
136145
endif(PIPY_USE_NTLS)
@@ -167,7 +176,9 @@ else()
167176
endif()
168177
endif()
169178

170-
add_custom_target(OpenSSL DEPENDS ${OPENSSL_LIB_DIR}/${LIB_CRYPTO} ${OPENSSL_LIB_DIR}/${LIB_SSL})
179+
if(NOT PIPY_USE_SYSTEM_OPENSSL)
180+
add_custom_target(OpenSSL DEPENDS ${OPENSSL_LIB_DIR}/${LIB_CRYPTO} ${OPENSSL_LIB_DIR}/${LIB_SSL})
181+
endif()
171182

172183
if(PIPY_BROTLI)
173184
set(BROTLI_INC_DIR ${PIPY_BROTLI}/include)
@@ -390,7 +401,11 @@ execute_process(
390401

391402
add_custom_target(GenVer DEPENDS ${CMAKE_BINARY_DIR}/deps/version.h)
392403

393-
add_dependencies(pipy yajl_s expat OpenSSL ${BROTLI_LIB} GenVer)
404+
add_dependencies(pipy yajl_s expat ${BROTLI_LIB} GenVer)
405+
406+
if(NOT PIPY_USE_SYSTEM_OPENSSL)
407+
add_dependencies(pipy OpenSSL)
408+
endif()
394409

395410
if(NOT PIPY_USE_SYSTEM_ZLIB)
396411
add_dependencies(pipy ${ZLIB_LIB})
@@ -486,12 +501,16 @@ target_link_libraries(
486501
yaml
487502
expat
488503
${ZLIB_LIB}
489-
${OPENSSL_LIB_DIR}/${LIB_SSL}
490-
${OPENSSL_LIB_DIR}/${LIB_CRYPTO}
491504
${BROTLI_LIB}
492505
leveldb
493506
)
494507

508+
if(PIPY_USE_SYSTEM_OPENSSL)
509+
target_link_libraries(pipy ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
510+
else()
511+
target_link_libraries(pipy ${OPENSSL_LIB_DIR}/${LIB_SSL} ${OPENSSL_LIB_DIR}/${LIB_CRYPTO})
512+
endif()
513+
495514
if(WIN32)
496515
target_link_libraries(pipy crypt32 userenv)
497516
elseif(ANDROID)

0 commit comments

Comments
 (0)