summaryrefslogtreecommitdiff
path: root/archived/projt-launcher/cmake/findOpenSSLbyNuget.cmake
blob: d4c8044b50cc9a61c55a198d3e08586e36bf69b2 (plain)
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
function(projt_find_openssl_by_nuget)
    # Find OpenSSL from NuGet
    file(GLOB NUGET_OSSL_ROOTS "${CMAKE_SOURCE_DIR}/dependencies/openssl-native*")
    if(NUGET_OSSL_ROOTS)
        list(GET NUGET_OSSL_ROOTS 0 OSSL_ROOT_DIR)
        message(STATUS "Found OpenSSL NuGet: ${OSSL_ROOT_DIR}")
        set(OPENSSL_ROOT_DIR "${OSSL_ROOT_DIR}/build/native" CACHE PATH "" FORCE)
        set(OPENSSL_USE_STATIC_LIBS ON)

        file(GLOB_RECURSE OSSL_LIBS "${OSSL_ROOT_DIR}/*.lib")
        foreach(LIB_PATH ${OSSL_LIBS})
            # Strictly match architecture folder to avoid win-x86
            if(LIB_PATH MATCHES "win-${OSSL_ARCH}" OR LIB_PATH MATCHES "/${OSSL_ARCH}/")
                if(LIB_PATH MATCHES "libcrypto.lib$|crypto.lib$")
                    if(NOT LIB_PATH MATCHES "[Dd]ebug" OR NOT OPENSSL_CRYPTO_LIBRARY)
                        set(OPENSSL_CRYPTO_LIBRARY "${LIB_PATH}" CACHE FILEPATH "" FORCE)
                    endif()
                elseif(LIB_PATH MATCHES "libssl.lib$|ssl.lib$")
                    if(NOT LIB_PATH MATCHES "[Dd]ebug" OR NOT OPENSSL_SSL_LIBRARY)
                        set(OPENSSL_SSL_LIBRARY "${LIB_PATH}" CACHE FILEPATH "" FORCE)
                    endif()
                endif()
            endif()
        endforeach()

        if(OPENSSL_CRYPTO_LIBRARY AND OPENSSL_SSL_LIBRARY)
            set(OPENSSL_INCLUDE_DIR "${OPENSSL_ROOT_DIR}/include" CACHE PATH "" FORCE)
            set(OPENSSL_LIBRARIES "${OPENSSL_SSL_LIBRARY}" "${OPENSSL_CRYPTO_LIBRARY}" CACHE STRING "" FORCE)
            message(STATUS "Found OpenSSL via NuGet: ${OPENSSL_CRYPTO_LIBRARY}")
            set(OpenSSL_FOUND TRUE CACHE BOOL "" FORCE)
            set(OPENSSL_FOUND TRUE CACHE BOOL "" FORCE)
        endif()
    endif()
endfunction()