@@ -764,14 +764,36 @@ endif()
764764if (QUIC_TLS_LIB STREQUAL "quictls" OR QUIC_TLS_LIB STREQUAL "openssl" )
765765 add_library (OpenSSL INTERFACE )
766766
767- include (FetchContent)
767+ option (QUIC_USE_EXTERNAL_OPENSSL "Use external OpenSSL instead of building from submodules" OFF )
768+ set (QUIC_OPENSSL_INCLUDE_DIR "" CACHE PATH "Path to OpenSSL include directory" )
769+ set (QUIC_OPENSSL_LIB_DIR "" CACHE PATH "Path to OpenSSL library directory" )
770+
771+ if (QUIC_USE_EXTERNAL_OPENSSL OR QUIC_OPENSSL_INCLUDE_DIR OR QUIC_OPENSSL_LIB_DIR)
772+ add_library (OpenSSLQuic INTERFACE )
773+ if (QUIC_OPENSSL_INCLUDE_DIR AND QUIC_OPENSSL_LIB_DIR)
774+ target_include_directories (OpenSSLQuic INTERFACE ${QUIC_OPENSSL_INCLUDE_DIR} )
775+ find_library (LIB_CRYPTO NAMES crypto libcrypto PATHS ${QUIC_OPENSSL_LIB_DIR} NO_DEFAULT_PATH REQUIRED)
776+ find_library (LIB_SSL NAMES ssl libssl PATHS ${QUIC_OPENSSL_LIB_DIR} NO_DEFAULT_PATH REQUIRED)
777+ target_link_libraries (OpenSSLQuic INTERFACE ${LIB_SSL} ${LIB_CRYPTO} )
778+ else ()
779+ if (QUIC_TLS_LIB STREQUAL "openssl" )
780+ find_package (OpenSSL 3.5.0 REQUIRED)
781+ else ()
782+ find_package (OpenSSL REQUIRED)
783+ endif ()
784+ target_link_libraries (OpenSSLQuic INTERFACE OpenSSL::SSL OpenSSL::Crypto)
785+ endif ()
786+ add_library (OpenSSLQuic::OpenSSLQuic ALIAS OpenSSLQuic)
787+ else ()
788+ include (FetchContent)
768789
769- FetchContent_Declare(
770- OpenSSLQuic
771- SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /submodules
772- CMAKE_ARGS "-DQUIC_USE_SYSTEM_LIBCRYPTO=${QUIC_USE_SYSTEM_LIBCRYPTO} "
773- )
774- FetchContent_MakeAvailable(OpenSSLQuic)
790+ FetchContent_Declare(
791+ OpenSSLQuic
792+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /submodules
793+ CMAKE_ARGS "-DQUIC_USE_SYSTEM_LIBCRYPTO=${QUIC_USE_SYSTEM_LIBCRYPTO} "
794+ )
795+ FetchContent_MakeAvailable(OpenSSLQuic)
796+ endif ()
775797
776798 target_link_libraries (OpenSSL
777799 INTERFACE
0 commit comments