Skip to content

add_android_openssl_libraries: Automatically link OpenSSL on argument… #67

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 47 additions & 22 deletions android_openssl.cmake
Original file line number Diff line number Diff line change
@@ -1,26 +1,51 @@
function(add_android_openssl_libraries)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(ssl_root_path ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/no-asm)
else()
set(ssl_root_path ${CMAKE_CURRENT_FUNCTION_LIST_DIR})
endif()

if(Qt6_VERSION VERSION_GREATER_EQUAL 6.5.0)
if(NOT OPENSSL_ROOT_DIR)
set(OPENSSL_ROOT_DIR ${SSL_ROOT_PATH}/ssl_3/${CMAKE_ANDROID_ARCH_ABI})
if(NOT TARGET OpenSSL::Crypto OR NOT TARGET OpenSSL::SSL)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(ssl_root_path ${CMAKE_CURRENT_LIST_DIR}/no-asm)
else()
set(ssl_root_path ${CMAKE_CURRENT_LIST_DIR})
endif()
list(APPEND android_extra_libs
${ssl_root_path}/ssl_3/${CMAKE_ANDROID_ARCH_ABI}/libcrypto_3.so
${ssl_root_path}/ssl_3/${CMAKE_ANDROID_ARCH_ABI}/libssl_3.so)
else()
if(NOT OPENSSL_ROOT_DIR)
set(OPENSSL_ROOT_DIR ${SSL_ROOT_PATH}/ssl_1.1/${CMAKE_ANDROID_ARCH_ABI})

if(Qt6_VERSION VERSION_GREATER_EQUAL 6.5.0)
set(ssl_version_dir ssl_3)
set(libcrypto libcrypto_3.so)
set(libssl libssl_3.so)
else()
set(ssl_version_dir ssl_1.1)
set(libcrypto libcrypto_1_1.so)
set(libssl libssl_1_1.so)
endif()
list(APPEND android_extra_libs
${ssl_root_path}/ssl_1.1/${CMAKE_ANDROID_ARCH_ABI}/libcrypto_1_1.so
${ssl_root_path}/ssl_1.1/${CMAKE_ANDROID_ARCH_ABI}/libssl_1_1.so)
endif()

set_target_properties(${ARGN} PROPERTIES QT_ANDROID_EXTRA_LIBS
"${android_extra_libs}")
set(OPENSSL_LIB_DIR ${ssl_root_path}/${ssl_version_dir}/${CMAKE_ANDROID_ARCH_ABI})
set(OPENSSL_INCLUDE_DIR ${ssl_root_path}/${ssl_version_dir}/include)

add_library(OpenSSL::Crypto SHARED IMPORTED)
set_target_properties(OpenSSL::Crypto PROPERTIES
IMPORTED_LOCATION "${OPENSSL_LIB_DIR}/${libcrypto}"
INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}"
)

add_library(OpenSSL::SSL SHARED IMPORTED)
set_target_properties(OpenSSL::SSL PROPERTIES
IMPORTED_LOCATION "${OPENSSL_LIB_DIR}/${libssl}"
INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}"
)

set(_OPENSSL_EXTRA_LIBS_PATHS
"${OPENSSL_LIB_DIR}/${libcrypto}"
"${OPENSSL_LIB_DIR}/${libssl}"
CACHE INTERNAL "Android OpenSSL libraries for QT_ANDROID_EXTRA_LIBS"
)
endif()

function(add_android_openssl_libraries)
foreach(TARGET_NAME ${ARGN})
if(TARGET ${TARGET_NAME})
set_property(TARGET ${TARGET_NAME} APPEND PROPERTY
QT_ANDROID_EXTRA_LIBS ${_OPENSSL_EXTRA_LIBS_PATHS}
)
target_link_libraries(${TARGET_NAME} PUBLIC OpenSSL::SSL OpenSSL::Crypto)
else()
message(WARNING "add_android_openssl_libraries(): target '${TARGET_NAME}' does not exist.")
endif()
endforeach()
endfunction()