From f2dfa01a72711f81003a104316eb720a9f2043bd Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Tue, 28 Mar 2023 16:37:44 +0530 Subject: [PATCH] Generating .aar file for android and .so file for testing via CmakeList as we are generating the .so file in app/CMakeList now test/CMakeList file is unused so we are removing it --- lib/build.gradle | 7 ++ lib/src/main/cpp/CMakeLists.txt | 158 +++++++++++++++++++------------- lib/src/test/CMakeLists.txt | 44 --------- lib/src/test/test.java | 3 +- 4 files changed, 105 insertions(+), 107 deletions(-) delete mode 100644 lib/src/test/CMakeLists.txt diff --git a/lib/build.gradle b/lib/build.gradle index 5b60152..293d345 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -327,3 +327,10 @@ String getLibzimFiles() { "${projectDir}/src/main/java/org/kiwix/libzim/SuggestionSearch.java " + "${projectDir}/src/main/java/org/kiwix/libzim/ZimFileFormatException.java" } + +task buildLinuxSoFile(type: Exec) { + workingDir "${projectDir}/src/main/cpp/" + commandLine 'bash', '-c', "cmake . -B ${buildDir} && make -C ${buildDir}" +} + +build.dependsOn buildLinuxSoFile \ No newline at end of file diff --git a/lib/src/main/cpp/CMakeLists.txt b/lib/src/main/cpp/CMakeLists.txt index f768ff2..c8054c0 100644 --- a/lib/src/main/cpp/CMakeLists.txt +++ b/lib/src/main/cpp/CMakeLists.txt @@ -2,12 +2,23 @@ set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) cmake_minimum_required(VERSION 3.18.1) -set(CMAKE_ANDROID_STL_TYPE llvm-libc++_static) - project("libkiwix_wrapper") -add_library( - zim_wrapper +set(BUILD_DIR_PATH "${BUILD_DIR}") + +if (CMAKE_SYSTEM_NAME STREQUAL "Linux") + set(BUILD_DIR_PATH "./../../../build") +endif () + +include_directories( + ${CMAKE_SOURCE_DIR} + ${BUILD_DIR_PATH}/include/libkiwix + ${BUILD_DIR_PATH}/include/libzim + ${BUILD_DIR_PATH}/include/javah_generated + #${CMAKE_SOURCE_DIR}/include/utils +) + +add_library(zim_wrapper SHARED libzim/archive.cpp @@ -23,26 +34,10 @@ add_library( libzim/suggestion_search.cpp libzim/suggestion_iterator.cpp libzim/suggestion_item.cpp -) - -find_library(libzim - zim - PATHS - ${BUILD_DIR}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libzim) -if (NOT libzim) - message(FATAL_ERROR "libzim not found!") -endif() -add_library(libzim SHARED IMPORTED) - -set_property(TARGET - libzim - PROPERTY - IMPORTED_LOCATION - ${BUILD_DIR}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libzim/libzim.so) + ) -add_library( - kiwix_wrapper +add_library(kiwix_wrapper SHARED libkiwix/book.cpp @@ -53,45 +48,84 @@ add_library( libkiwix/bookmark.cpp libkiwix/manager.cpp libkiwix/illustration.cpp -) - -find_library(libkiwix - kiwix - PATHS - ${BUILD_DIR}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libkiwix) -if (NOT libkiwix) - message(FATAL_ERROR "libkiwix not found!") -endif() -add_library(libkiwix SHARED IMPORTED) - -set_property(TARGET - libkiwix - PROPERTY - IMPORTED_LOCATION - ${BUILD_DIR}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libkiwix/libkiwix.so) - -include_directories( -${CMAKE_SOURCE_DIR} -${BUILD_DIR}/include/libkiwix -${BUILD_DIR}/include/libzim -${BUILD_DIR}/include/javah_generated -#${CMAKE_SOURCE_DIR}/include/utils -) - -find_library( - log-lib - log) - -target_link_libraries( - zim_wrapper - libzim - ${log-lib} -) - -target_link_libraries( - kiwix_wrapper - libkiwix - libzim - ${log-lib} ) +# Linux target +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + + find_package(JNI) + + include_directories( + ${JNI_INCLUDE_DIRS} + ) + + add_library(libzim SHARED IMPORTED) + set_target_properties(libzim PROPERTIES IMPORTED_LOCATION libzim.so) + + add_library(libkiwix SHARED IMPORTED) + set_target_properties(libkiwix PROPERTIES IMPORTED_LOCATION libkiwix.so) + + target_link_libraries( + zim_wrapper + libzim + ) + + target_link_libraries( + kiwix_wrapper + libkiwix + libzim + ) +endif () + +# Android target +if (ANDROID) + set(CMAKE_ANDROID_STL_TYPE llvm-libc++_static) + + find_library( + log-lib + log) + + find_library(libzim + zim + PATHS + ${BUILD_DIR_PATH}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libzim) + if (NOT libzim) + message(FATAL_ERROR "libzim not found!") + endif () + add_library(libzim SHARED IMPORTED) + + set_property(TARGET + libzim + PROPERTY + IMPORTED_LOCATION + ${BUILD_DIR_PATH}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libzim/libzim.so) + + + find_library(libkiwix + kiwix + PATHS + ${BUILD_DIR_PATH}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libkiwix) + if (NOT libkiwix) + message(FATAL_ERROR "libkiwix not found!") + endif () + add_library(libkiwix SHARED IMPORTED) + + set_property(TARGET + libkiwix + PROPERTY + IMPORTED_LOCATION + ${BUILD_DIR_PATH}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libkiwix/libkiwix.so) + + target_link_libraries( + zim_wrapper + libzim + ${log-lib} + ) + + target_link_libraries( + kiwix_wrapper + libkiwix + libzim + ${log-lib} + ) +endif () \ No newline at end of file diff --git a/lib/src/test/CMakeLists.txt b/lib/src/test/CMakeLists.txt deleted file mode 100644 index e5d7ae5..0000000 --- a/lib/src/test/CMakeLists.txt +++ /dev/null @@ -1,44 +0,0 @@ -cmake_minimum_required (VERSION 3.16) -project (buildkiwix) - -add_library(buildkiwix -SHARED -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/book.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/bookmark.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/filter.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/illustration.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/kiwixicu.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/kiwixserver.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/library.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/manager.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/archive.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/blob.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/entry.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/entry_iterator.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/item.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/query.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/search.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/search_iterator.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/searcher.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/suggestion_item.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/suggestion_iterator.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/suggestion_search.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/suggestion_searcher.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/utils.h -) - -find_package(JNI) - -include_directories( -${JNI_INCLUDE_DIRS} -${PROJECT_SOURCE_DIR}/../main/cpp -${PROJECT_SOURCE_DIR}/../../build/include/libkiwix -${PROJECT_SOURCE_DIR}/../../build/include/libzim -${PROJECT_SOURCE_DIR}/../../build/include/javah_generated -) - -target_link_libraries(buildkiwix -LINK_PUBLIC -${PROJECT_SOURCE_DIR}/../../build/libkiwix.so -${PROJECT_SOURCE_DIR}/../../build/libzim.so -) diff --git a/lib/src/test/test.java b/lib/src/test/test.java index e78cb9d..a6f049b 100644 --- a/lib/src/test/test.java +++ b/lib/src/test/test.java @@ -12,7 +12,8 @@ public class test { static { System.loadLibrary("kiwix"); System.loadLibrary("zim"); - System.loadLibrary("buildkiwix"); + System.loadLibrary("kiwix_wrapper"); + System.loadLibrary("zim_wrapper"); } private static byte[] getFileContent(String path)