diff --git a/android_openssl.cmake b/android_openssl.cmake index fb2254a..9f8a20b 100644 --- a/android_openssl.cmake +++ b/android_openssl.cmake @@ -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()