Skip to content
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

Adapt wrapper to new API of libzim/libkiwix #23

Merged
merged 32 commits into from
Feb 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
f9f6499
Add a basic wrapper around libzim.
mgautierfr Dec 20, 2022
030b2f9
[WIP] Add search wrapping
mgautierfr Dec 21, 2022
7887202
Better wrapping structure.
mgautierfr Jan 11, 2023
9b971ce
Add wrapping around Search
mgautierfr Jan 11, 2023
f3ac28f
Generate headers for all the `*.java` files.
mgautierfr Jan 17, 2023
3d2f308
Wrap suggestion searcher.
mgautierfr Jan 17, 2023
4aa8eee
Wrap `Archive::iterByFoo` and `Archive::findByFoo`
mgautierfr Jan 17, 2023
763731a
Rename kiwixlib to libkiwix
mgautierfr Jan 17, 2023
0be73ef
Remove wrapper around obsolete kiwix::Reader and kiwix::Searcher.
mgautierfr Jan 17, 2023
4e840ba
Add compilation of libkiwix wrapper.
mgautierfr Jan 18, 2023
ee5a6b3
Make `METHOD` macro not using libzim by default.
mgautierfr Jan 18, 2023
edea648
Introduce GETTER_METHOD in utils.h
mgautierfr Jan 18, 2023
2951827
Introduce macros.h to define common macro
mgautierfr Jan 18, 2023
d63b84a
Repass on kiwix::Library wrapper
mgautierfr Jan 18, 2023
876d38b
Introduce BUILD_WRAPPER macro
mgautierfr Jan 18, 2023
9426c6f
Use Illustration api instead of deprecated favicon for Book
mgautierfr Jan 18, 2023
17b85bf
Remove some warning.
mgautierfr Jan 18, 2023
fbdea0d
Rename `JNIKiwixServer` to `Server`.
mgautierfr Jan 24, 2023
fe1de03
Intrudoce DISPOSE macro to implement the dispose method.
mgautierfr Jan 24, 2023
28f0acd
Reorder methods' definitions.
mgautierfr Jan 24, 2023
1c96327
Fix typos in Item.java.
mgautierfr Jan 24, 2023
2ef64ac
Use correct method in SearchIterator.
mgautierfr Jan 24, 2023
897c78a
Add missing method in Book.
mgautierfr Jan 24, 2023
775b55c
Fix wrong implementation in Book.
mgautierfr Jan 24, 2023
6fd7849
Fix implementation of method in `Archive`.
mgautierfr Jan 24, 2023
1dd170b
Add missing implementation of Searcher setNativeSearcherMulti
mgautierfr Jan 24, 2023
150af85
All java class wrapping a native object must call dispose at destruct…
mgautierfr Jan 24, 2023
b2b7dad
Add missing `getDirectAccessInformation` in libzim.Item.
mgautierfr Jan 24, 2023
06638d4
Remove thread lock.
mgautierfr Jan 24, 2023
7c95917
Add bookmark wrapper.
mgautierfr Feb 1, 2023
12a6898
Rename back JNIKiwix.java_ to JNIKiwix.java
mgautierfr Feb 3, 2023
929ae6d
Explicitly list the java files for what we need to generate header.
mgautierfr Feb 9, 2023
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
.gradle
local.properties
build
lib/.cxx
34 changes: 32 additions & 2 deletions lib/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ android {
}
externalNativeBuild {
cmake {
path file('src/cpp/CMakeLists.txt')
path file('src/main/cpp/CMakeLists.txt')
version '3.18.1'
}
}
Expand Down Expand Up @@ -285,5 +285,35 @@ task checkCurrentJavaVersion() {

task generateHeaderFilesFromJavaWrapper(type: Exec) {
workingDir "${projectDir}/src/main/java/org/kiwix/"
commandLine 'bash', '-c', "javac -h ${buildDir}/include/javah_generated/ -d ${buildDir}/kiwixlib/ kiwixlib/Book.java kiwixlib/DirectAccessInfo.java kiwixlib/Filter.java kiwixlib/JNIICU.java kiwixlib/JNIKiwixBool.java kiwixlib/JNIKiwixException.java kiwixlib/JNIKiwixInt.java kiwixlib/JNIKiwixReader.java kiwixlib/JNIKiwixSearcher.java kiwixlib/JNIKiwixServer.java kiwixlib/JNIKiwixString.java kiwixlib/Library.java kiwixlib/Manager.java"
commandLine 'bash', '-c', "javac -h ${buildDir}/include/javah_generated/ -d ${buildDir}/libzim/ ${getLibzimFiles()} ${getLibkiwixFiles()}"
}

String getLibkiwixFiles() {
return "${projectDir}/src/main/java/org/kiwix/libkiwix/Book.java " +
"${projectDir}/src/main/java/org/kiwix/libkiwix/Bookmark.java " +
"${projectDir}/src/main/java/org/kiwix/libkiwix/Filter.java " +
"${projectDir}/src/main/java/org/kiwix/libkiwix/JNIICU.java " +
"${projectDir}/src/main/java/org/kiwix/libkiwix/Illustration.java " +
"${projectDir}/src/main/java/org/kiwix/libkiwix/JNIKiwixException.java " +
"${projectDir}/src/main/java/org/kiwix/libkiwix/Library.java " +
"${projectDir}/src/main/java/org/kiwix/libkiwix/Manager.java " +
"${projectDir}/src/main/java/org/kiwix/libkiwix/Server.java"
}

String getLibzimFiles() {
return "${projectDir}/src/main/java/org/kiwix/libzim/Archive.java " +
"${projectDir}/src/main/java/org/kiwix/libzim/Blob.java " +
"${projectDir}/src/main/java/org/kiwix/libzim/DirectAccessInfo.java " +
"${projectDir}/src/main/java/org/kiwix/libzim/EntryIterator.java " +
"${projectDir}/src/main/java/org/kiwix/libzim/Entry.java " +
"${projectDir}/src/main/java/org/kiwix/libzim/Item.java " +
"${projectDir}/src/main/java/org/kiwix/libzim/Query.java " +
"${projectDir}/src/main/java/org/kiwix/libzim/Searcher.java " +
"${projectDir}/src/main/java/org/kiwix/libzim/SearchIterator.java " +
"${projectDir}/src/main/java/org/kiwix/libzim/Search.java " +
"${projectDir}/src/main/java/org/kiwix/libzim/SuggestionItem.java " +
"${projectDir}/src/main/java/org/kiwix/libzim/SuggestionIterator.java " +
"${projectDir}/src/main/java/org/kiwix/libzim/SuggestionSearcher.java " +
"${projectDir}/src/main/java/org/kiwix/libzim/SuggestionSearch.java " +
"${projectDir}/src/main/java/org/kiwix/libzim/ZimFileFormatException.java"
}
97 changes: 97 additions & 0 deletions lib/src/main/cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@

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

SHARED
libzim/archive.cpp
libzim/entry.cpp
libzim/entry_iterator.cpp
libzim/item.cpp
libzim/blob.cpp
libzim/searcher.cpp
libzim/query.cpp
libzim/search.cpp
libzim/search_iterator.cpp
libzim/suggestion_searcher.cpp
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

SHARED
libkiwix/book.cpp
libkiwix/filter.cpp
libkiwix/kiwixicu.cpp
libkiwix/kiwixserver.cpp
libkiwix/library.cpp
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}
)

Loading