Skip to content

Commit 1ab3702

Browse files
author
Oscar Franco
authored
Merge pull request #34 from EduFrazao/async-callback-threads
2 parents 2e11e0a + e1866bd commit 1ab3702

2 files changed

Lines changed: 3 additions & 231 deletions

File tree

android/CMakeLists.txt

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.9.0)
22

33
set (CMAKE_VERBOSE_MAKEFILE ON)
44
set (CMAKE_CXX_STANDARD 14)
5-
set (CMAKE_CXX_FLAGS "-DFOLLY_NO_CONFIG=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -DFOLLY_HAVE_MEMRCHR=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_MOBILE=1 -DON_ANDROID -DONANDROID -DFOR_HERMES=${FOR_HERMES}")
5+
#set (CMAKE_CXX_FLAGS "-DFOLLY_NO_CONFIG=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -DFOLLY_HAVE_MEMRCHR=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_MOBILE=1 -DON_ANDROID -DONANDROID -DFOR_HERMES=${FOR_HERMES}")
66

77
set (PACKAGE_NAME "react-native-quick-sqlite")
88
set (BUILD_DIR ${CMAKE_SOURCE_DIR}/build)
@@ -64,11 +64,6 @@ target_include_directories(
6464
PRIVATE
6565
# --- fbjni ---
6666
"${LIBFBJNI_INCLUDE_DIR}"
67-
# --- Third Party (required by RN) ---
68-
"${BUILD_DIR}/third-party-ndk/boost"
69-
"${BUILD_DIR}/third-party-ndk/double-conversion"
70-
"${BUILD_DIR}/third-party-ndk/folly"
71-
"${BUILD_DIR}/third-party-ndk/glog"
7267
# --- React Native ---
7368
"${NODE_MODULES_DIR}/react-native/React"
7469
"${NODE_MODULES_DIR}/react-native/React/Base"
@@ -84,38 +79,12 @@ target_include_directories(
8479

8580
file (GLOB LIBRN_DIR "${BUILD_DIR}/react-native-0*/jni/${ANDROID_ABI}")
8681

87-
if(${FOR_HERMES})
88-
file (GLOB LIBHERMES_DIR "${BUILD_DIR}/third-party-ndk/hermes/jni/${ANDROID_ABI}")
89-
# Use Hermes
90-
find_library(
91-
JS_ENGINE_LIB
92-
hermes
93-
PATHS ${LIBHERMES_DIR}
94-
NO_CMAKE_FIND_ROOT_PATH
95-
)
96-
else()
97-
file (GLOB LIBJSC_DIR "${BUILD_DIR}/android-jsc*.aar/jni/${ANDROID_ABI}")
98-
# Use JSC
99-
find_library(
100-
JS_ENGINE_LIB
101-
jscexecutor
102-
PATHS ${LIBRN_DIR}
103-
NO_CMAKE_FIND_ROOT_PATH
104-
)
105-
endif()
106-
10782
find_library(
10883
FBJNI_LIB
10984
fbjni
11085
PATHS ${LIBRN_DIR}
11186
NO_CMAKE_FIND_ROOT_PATH
11287
)
113-
find_library(
114-
FOLLY_JSON_LIB
115-
folly_json
116-
PATHS ${LIBRN_DIR}
117-
NO_CMAKE_FIND_ROOT_PATH
118-
)
11988

12089
find_library(
12190
REACT_NATIVE_JNI_LIB
@@ -146,9 +115,7 @@ target_link_libraries(
146115
${PACKAGE_NAME}
147116
${LOG_LIB}
148117
${JSI_LIB}
149-
${JS_ENGINE_LIB} # <-- Hermes or JSC
150118
${REACT_NATIVE_JNI_LIB}
151119
${FBJNI_LIB}
152-
${FOLLY_JSON_LIB}
153120
android
154121
)

android/build.gradle

Lines changed: 2 additions & 197 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,6 @@ def reactProperties = new Properties()
4949
file("$nodeModules/react-native/ReactAndroid/gradle.properties").withInputStream { reactProperties.load(it) }
5050
def REACT_NATIVE_VERSION = reactProperties.getProperty("VERSION_NAME").split("\\.")[1].toInteger()
5151

52-
def FOR_HERMES = System.getenv("FOR_HERMES") == "True"
53-
rootProject.getSubprojects().forEach({ project ->
54-
if (project.plugins.hasPlugin("com.android.application")) {
55-
FOR_HERMES = project.ext.react.enableHermes
56-
}
57-
})
58-
logger.warn("JSI-WS: Building with ${FOR_HERMES ? "Hermes" : "JSC"}...")
59-
6052
android {
6153

6254
compileSdkVersion getExtOrIntegerDefault('compileSdkVersion')
@@ -74,8 +66,7 @@ android {
7466
abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
7567
arguments '-DANDROID_STL=c++_shared',
7668
"-DREACT_NATIVE_VERSION=${REACT_NATIVE_VERSION}",
77-
"-DNODE_MODULES_DIR=${nodeModules}",
78-
"-DFOR_HERMES=${FOR_HERMES}"
69+
"-DNODE_MODULES_DIR=${nodeModules}"
7970
}
8071
}
8172

@@ -196,197 +187,14 @@ dependencies {
196187
extractJNI(files(rnAAR, jscAAR))
197188
}
198189

199-
200-
// third-party-ndk deps headers
201-
// mostly a copy of https://github.com/software-mansion/react-native-reanimated/blob/master/android/build.gradle#L115
202-
203190
def downloadsDir = new File("$buildDir/downloads")
204-
def thirdPartyNdkDir = new File("$buildDir/third-party-ndk")
205-
def thirdPartyVersionsFile = new File("${nodeModules}/react-native/ReactAndroid/gradle.properties")
206-
def thirdPartyVersions = new Properties()
207-
thirdPartyVersions.load(new FileInputStream(thirdPartyVersionsFile))
208-
209-
def BOOST_VERSION = thirdPartyVersions["BOOST_VERSION"]
210-
def boost_file = new File(downloadsDir, "boost_${BOOST_VERSION}.tar.gz")
211-
def DOUBLE_CONVERSION_VERSION = thirdPartyVersions["DOUBLE_CONVERSION_VERSION"]
212-
def double_conversion_file = new File(downloadsDir, "double-conversion-${DOUBLE_CONVERSION_VERSION}.tar.gz")
213-
def FOLLY_VERSION = thirdPartyVersions["FOLLY_VERSION"]
214-
def folly_file = new File(downloadsDir, "folly-${FOLLY_VERSION}.tar.gz")
215-
def GLOG_VERSION = thirdPartyVersions["GLOG_VERSION"]
216-
def glog_file = new File(downloadsDir, "glog-${GLOG_VERSION}.tar.gz")
217191

218192
task createNativeDepsDirectories {
219193
doLast {
220194
downloadsDir.mkdirs()
221-
thirdPartyNdkDir.mkdirs()
222-
}
223-
}
224-
225-
task downloadBoost(dependsOn: createNativeDepsDirectories, type: Download) {
226-
src("https://github.com/react-native-community/boost-for-react-native/releases/download/v${BOOST_VERSION.replace("_", ".")}-0/boost_${BOOST_VERSION}.tar.gz")
227-
onlyIfNewer(true)
228-
overwrite(false)
229-
dest(boost_file)
230-
}
231-
232-
task prepareBoost(dependsOn: downloadBoost, type: Copy) {
233-
from(tarTree(resources.gzip(downloadBoost.dest)))
234-
from("src/main/jni/third-party/boost/Android.mk")
235-
include("Android.mk", "boost_${BOOST_VERSION}/boost/**/*.hpp", "boost/boost/**/*.hpp")
236-
includeEmptyDirs = false
237-
into("$thirdPartyNdkDir") // /boost_X_XX_X
238-
doLast {
239-
file("$thirdPartyNdkDir/boost_${BOOST_VERSION}").renameTo("$thirdPartyNdkDir/boost")
240-
}
241-
}
242-
243-
task downloadDoubleConversion(dependsOn: createNativeDepsDirectories, type: Download) {
244-
src("https://github.com/google/double-conversion/archive/v${DOUBLE_CONVERSION_VERSION}.tar.gz")
245-
onlyIfNewer(true)
246-
overwrite(false)
247-
dest(double_conversion_file)
248-
}
249-
250-
task prepareDoubleConversion(dependsOn: downloadDoubleConversion, type: Copy) {
251-
from(tarTree(downloadDoubleConversion.dest))
252-
from("src/main/jni/third-party/double-conversion/Android.mk")
253-
include("double-conversion-${DOUBLE_CONVERSION_VERSION}/src/**/*", "Android.mk")
254-
filesMatching("*/src/**/*", { fname -> fname.path = "double-conversion/${fname.name}" })
255-
includeEmptyDirs = false
256-
into("$thirdPartyNdkDir/double-conversion")
257-
}
258-
259-
task downloadFolly(dependsOn: createNativeDepsDirectories, type: Download) {
260-
src("https://github.com/facebook/folly/archive/v${FOLLY_VERSION}.tar.gz")
261-
onlyIfNewer(true)
262-
overwrite(false)
263-
dest(folly_file)
264-
}
265-
266-
task prepareFolly(dependsOn: downloadFolly, type: Copy) {
267-
from(tarTree(downloadFolly.dest))
268-
from("src/main/jni/third-party/folly/Android.mk")
269-
include("folly-${FOLLY_VERSION}/folly/**/*", "Android.mk")
270-
eachFile { fname -> fname.path = (fname.path - "folly-${FOLLY_VERSION}/") }
271-
includeEmptyDirs = false
272-
into("$thirdPartyNdkDir/folly")
273-
}
274-
275-
task downloadGlog(dependsOn: createNativeDepsDirectories, type: Download) {
276-
src("https://github.com/google/glog/archive/v${GLOG_VERSION}.tar.gz")
277-
onlyIfNewer(true)
278-
overwrite(false)
279-
dest(glog_file)
280-
}
281-
282-
task prepareGlog(dependsOn: downloadGlog, type: Copy) {
283-
from(tarTree(downloadGlog.dest))
284-
from("src/main/jni/third-party/glog/")
285-
include("glog-${GLOG_VERSION}/src/**/*", "Android.mk", "config.h")
286-
includeEmptyDirs = false
287-
filesMatching("**/*.h.in") {
288-
filter(ReplaceTokens, tokens: [
289-
ac_cv_have_unistd_h : "1",
290-
ac_cv_have_stdint_h : "1",
291-
ac_cv_have_systypes_h : "1",
292-
ac_cv_have_inttypes_h : "1",
293-
ac_cv_have_libgflags : "0",
294-
ac_google_start_namespace : "namespace google {",
295-
ac_cv_have_uint16_t : "1",
296-
ac_cv_have_u_int16_t : "1",
297-
ac_cv_have___uint16 : "0",
298-
ac_google_end_namespace : "}",
299-
ac_cv_have___builtin_expect : "1",
300-
ac_google_namespace : "google",
301-
ac_cv___attribute___noinline : "__attribute__ ((noinline))",
302-
ac_cv___attribute___noreturn : "__attribute__ ((noreturn))",
303-
ac_cv___attribute___printf_4_5: "__attribute__((__format__ (__printf__, 4, 5)))"
304-
])
305-
it.path = (it.name - ".in")
306-
}
307-
into("$thirdPartyNdkDir/glog")
308-
309-
doLast {
310-
copy {
311-
from(fileTree(dir: "$thirdPartyNdkDir/glog", includes: ["stl_logging.h", "logging.h", "raw_logging.h", "vlog_is_on.h", "**/src/glog/log_severity.h"]).files)
312-
includeEmptyDirs = false
313-
into("$thirdPartyNdkDir/glog/exported/glog")
314-
}
315-
}
316-
}
317-
318-
task prepareThirdPartyNdkHeaders {
319-
if (!boost_file.exists()) {
320-
dependsOn(prepareBoost)
321-
}
322-
if (!double_conversion_file.exists()) {
323-
dependsOn(prepareDoubleConversion)
324-
}
325-
if (!folly_file.exists()) {
326-
dependsOn(prepareFolly)
327-
}
328-
if (!glog_file.exists()) {
329-
dependsOn(prepareGlog)
330-
}
331-
}
332-
333-
prepareThirdPartyNdkHeaders.mustRunAfter createNativeDepsDirectories
334-
335-
task prepareHermes() {
336-
doLast {
337-
def hermesPackagePath = file("${nodeModules}/hermes-engine")
338-
if (!hermesPackagePath.exists()) {
339-
throw new GradleScriptException("Could not find the hermes-engine npm package", null)
340-
}
341-
342-
def hermesAAR = file("$hermesPackagePath/android/hermes-debug.aar")
343-
if (!hermesAAR.exists()) {
344-
throw new GradleScriptException("The hermes-engine npm package is missing \"android/hermes-debug.aar\"", null)
345-
}
346-
347-
def soFiles = zipTree(hermesAAR).matching({ it.include "**/*.so" })
348-
349-
copy {
350-
from soFiles
351-
from "$reactNative/ReactAndroid/src/main/jni/first-party/hermes/Android.mk"
352-
into "$thirdPartyNdkDir/hermes"
353-
}
354-
}
355-
}
356-
357-
prepareHermes.mustRunAfter prepareThirdPartyNdkHeaders
358-
359-
task prepareJSC {
360-
doLast {
361-
def jscPackagePath = file("${nodeModules}/jsc-android")
362-
if (!jscPackagePath.exists()) {
363-
throw new GradleScriptException("Could not find the jsc-android npm package", null)
364-
}
365-
366-
def jscDist = file("$jscPackagePath/dist")
367-
if (!jscDist.exists()) {
368-
throw new GradleScriptException("The jsc-android npm package is missing its \"dist\" directory", null)
369-
}
370-
371-
def jscAAR = fileTree(jscDist).matching({ it.include "**/android-jsc/**/*.aar" }).singleFile
372-
def soFiles = zipTree(jscAAR).matching({ it.include "**/*.so" })
373-
374-
def headerFiles = fileTree(jscDist).matching({ it.include "**/include/*.h" })
375-
376-
copy {
377-
from(soFiles)
378-
from(headerFiles)
379-
from("$reactNative/ReactAndroid/src/main/jni/third-party/jsc/Android.mk")
380-
381-
filesMatching("**/*.h", { it.path = "JavaScriptCore/${it.name}" })
382-
383-
includeEmptyDirs(false)
384-
into("$thirdPartyNdkDir/jsc")
385-
}
386195
}
387196
}
388197

389-
prepareJSC.mustRunAfter prepareHermes
390198

391199
task extractAARHeaders {
392200
doLast {
@@ -401,7 +209,7 @@ task extractAARHeaders {
401209
}
402210
}
403211

404-
extractAARHeaders.mustRunAfter prepareJSC
212+
extractAARHeaders.mustRunAfter createNativeDepsDirectories
405213

406214
task extractJNIFiles {
407215
doLast {
@@ -425,8 +233,5 @@ tasks.whenTaskAdded { task ->
425233
if (!task.name.contains('Clean') && (task.name.contains('externalNative') || task.name.contains('CMake'))) {
426234
task.dependsOn(extractAARHeaders)
427235
task.dependsOn(extractJNIFiles)
428-
task.dependsOn(prepareJSC)
429-
task.dependsOn(prepareHermes)
430-
task.dependsOn(prepareThirdPartyNdkHeaders)
431236
}
432237
}

0 commit comments

Comments
 (0)