From ad44bc961a622f311f393a59dd1668142365da4c Mon Sep 17 00:00:00 2001 From: Jason Rhinelander Date: Wed, 30 Nov 2022 12:34:03 +1100 Subject: [PATCH] Add POST_BUILD hook to copy libsodium-internals.so to where gradle wants it Gradle should be able to do this itself but can't because it does cmake wrong (but don't worry, Google knows best). --- libsession-util/src/main/cpp/CMakeLists.txt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libsession-util/src/main/cpp/CMakeLists.txt b/libsession-util/src/main/cpp/CMakeLists.txt index 487fa7e454..24d389c8cb 100644 --- a/libsession-util/src/main/cpp/CMakeLists.txt +++ b/libsession-util/src/main/cpp/CMakeLists.txt @@ -18,8 +18,8 @@ set(CMAKE_CXX_EXTENSIONS OFF) # or SHARED, and provides the relative paths to its source code. # You can define multiple libraries, and CMake builds them for you. # Gradle automatically packages shared libraries with your APK. -set(STATIC_BUNDLE ON) -#set(BUILD_SHARED_LIBS ON CACHE BOOL "") + +set(BUILD_SHARED_LIBS ON CACHE BOOL "") add_subdirectory(../../../libsession-util libsession) add_library( # Sets the name of the library. @@ -44,6 +44,13 @@ find_library( # Sets the name of the path variable. # you want CMake to locate. log) +# Copy libsodium-internal.so into the library output dir manually because gradle invokes cmake in +# ways that doesn't properly do this: +get_target_property(sodium_lib_loc libsodium-internal IMPORTED_LOCATION) +add_custom_command(TARGET session_util POST_BUILD + COMMAND + ${CMAKE_COMMAND} -E copy ${sodium_lib_loc} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) + # Specifies libraries CMake should link to your target library. You # can link multiple libraries, such as libraries you define in this # build script, prebuilt third-party libraries, or system libraries.