Skip to content

Commit 392f544

Browse files
author
MohitMaliFtechiz
committed
Generating .aar and .so file via CMakeList
To avoid recompiling the source in test cases. Now we are generating .so file while building the .aar file. For this we have created buildLinuxBinding task which dependsOn build target. As now test/CMakeList is unused so we have removed it.
1 parent 2bda547 commit 392f544

4 files changed

Lines changed: 99 additions & 101 deletions

File tree

lib/build.gradle

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,4 +328,11 @@ String getLibzimFiles() {
328328
"${projectDir}/src/main/java/org/kiwix/libzim/SuggestionSearcher.java " +
329329
"${projectDir}/src/main/java/org/kiwix/libzim/SuggestionSearch.java " +
330330
"${projectDir}/src/main/java/org/kiwix/libzim/ZimFileFormatException.java"
331-
}
331+
}
332+
333+
task buildLinuxBinding(type: Exec) {
334+
workingDir "${projectDir}/src/main/cpp/"
335+
commandLine 'bash', '-c', "cmake . -B ${buildDir} && make -C ${buildDir}"
336+
}
337+
338+
build.dependsOn buildLinuxBinding

lib/src/main/cpp/CMakeLists.txt

Lines changed: 89 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,23 @@
22
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
33
cmake_minimum_required(VERSION 3.18.1)
44

5-
set(CMAKE_ANDROID_STL_TYPE llvm-libc++_static)
6-
75
project("libkiwix_wrapper")
86

9-
add_library(
10-
zim_wrapper
7+
set(BUILD_DIR_PATH "${BUILD_DIR}")
8+
9+
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
10+
set(BUILD_DIR_PATH "./../../../build")
11+
endif ()
12+
13+
include_directories(
14+
${CMAKE_SOURCE_DIR}
15+
${BUILD_DIR_PATH}/include/libkiwix
16+
${BUILD_DIR_PATH}/include/libzim
17+
${BUILD_DIR_PATH}/include/javah_generated
18+
#${CMAKE_SOURCE_DIR}/include/utils
19+
)
20+
21+
add_library(zim_wrapper
1122

1223
SHARED
1324
libzim/archive.cpp
@@ -25,24 +36,8 @@ add_library(
2536
libzim/suggestion_item.cpp
2637
)
2738

28-
find_library(libzim
29-
zim
30-
PATHS
31-
${BUILD_DIR}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libzim)
32-
if (NOT libzim)
33-
message(FATAL_ERROR "libzim not found!")
34-
endif()
35-
add_library(libzim SHARED IMPORTED)
36-
37-
set_property(TARGET
38-
libzim
39-
PROPERTY
40-
IMPORTED_LOCATION
41-
${BUILD_DIR}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libzim/libzim.so)
4239

43-
44-
add_library(
45-
kiwix_wrapper
40+
add_library(kiwix_wrapper
4641

4742
SHARED
4843
libkiwix/book.cpp
@@ -55,43 +50,82 @@ add_library(
5550
libkiwix/illustration.cpp
5651
)
5752

58-
find_library(libkiwix
59-
kiwix
60-
PATHS
61-
${BUILD_DIR}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libkiwix)
62-
if (NOT libkiwix)
63-
message(FATAL_ERROR "libkiwix not found!")
64-
endif()
65-
add_library(libkiwix SHARED IMPORTED)
66-
67-
set_property(TARGET
68-
libkiwix
69-
PROPERTY
70-
IMPORTED_LOCATION
71-
${BUILD_DIR}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libkiwix/libkiwix.so)
53+
# Linux target
54+
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
7255

73-
include_directories(
74-
${CMAKE_SOURCE_DIR}
75-
${BUILD_DIR}/include/libkiwix
76-
${BUILD_DIR}/include/libzim
77-
${BUILD_DIR}/include/javah_generated
78-
#${CMAKE_SOURCE_DIR}/include/utils
79-
)
56+
find_package(JNI)
57+
58+
include_directories(
59+
${JNI_INCLUDE_DIRS}
60+
)
8061

81-
find_library(
82-
log-lib
83-
log)
62+
add_library(libzim SHARED IMPORTED)
63+
set_target_properties(libzim PROPERTIES IMPORTED_LOCATION libzim.so)
8464

85-
target_link_libraries(
86-
zim_wrapper
87-
libzim
88-
${log-lib}
89-
)
65+
add_library(libkiwix SHARED IMPORTED)
66+
set_target_properties(libkiwix PROPERTIES IMPORTED_LOCATION libkiwix.so)
9067

91-
target_link_libraries(
92-
kiwix_wrapper
93-
libkiwix
94-
libzim
95-
${log-lib}
68+
target_link_libraries(
69+
zim_wrapper
70+
libzim
9671
)
9772

73+
target_link_libraries(
74+
kiwix_wrapper
75+
libkiwix
76+
libzim
77+
)
78+
endif ()
79+
80+
# Android target
81+
if (ANDROID)
82+
set(CMAKE_ANDROID_STL_TYPE llvm-libc++_static)
83+
84+
find_library(
85+
log-lib
86+
log)
87+
88+
find_library(libzim
89+
zim
90+
PATHS
91+
${BUILD_DIR_PATH}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libzim)
92+
if (NOT libzim)
93+
message(FATAL_ERROR "libzim not found!")
94+
endif ()
95+
add_library(libzim SHARED IMPORTED)
96+
97+
set_property(TARGET
98+
libzim
99+
PROPERTY
100+
IMPORTED_LOCATION
101+
${BUILD_DIR_PATH}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libzim/libzim.so)
102+
103+
104+
find_library(libkiwix
105+
kiwix
106+
PATHS
107+
${BUILD_DIR_PATH}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libkiwix)
108+
if (NOT libkiwix)
109+
message(FATAL_ERROR "libkiwix not found!")
110+
endif ()
111+
add_library(libkiwix SHARED IMPORTED)
112+
113+
set_property(TARGET
114+
libkiwix
115+
PROPERTY
116+
IMPORTED_LOCATION
117+
${BUILD_DIR_PATH}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libkiwix/libkiwix.so)
118+
119+
target_link_libraries(
120+
zim_wrapper
121+
libzim
122+
${log-lib}
123+
)
124+
125+
target_link_libraries(
126+
kiwix_wrapper
127+
libkiwix
128+
libzim
129+
${log-lib}
130+
)
131+
endif ()

lib/src/test/CMakeLists.txt

Lines changed: 0 additions & 44 deletions
This file was deleted.

lib/src/test/test.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ public class test {
1212
static {
1313
System.loadLibrary("kiwix");
1414
System.loadLibrary("zim");
15-
System.loadLibrary("buildkiwix");
15+
System.loadLibrary("kiwix_wrapper");
16+
System.loadLibrary("zim_wrapper");
1617
}
1718

1819
private static byte[] getFileContent(String path)

0 commit comments

Comments
 (0)