Skip to content

Commit 807534e

Browse files
authored
Fix build error from react-native 0.74.3 (#205)
# Why react-native 0.74.3 has a new `queueMicrotask` interface to jsi and break existing 0.74.3 build # How add no-op `queueMicrotask` implementation since it's used from new architecture. i'll add this when revisiting new architecture support.
1 parent 970f2d7 commit 807534e

File tree

6 files changed

+35
-22
lines changed

6 files changed

+35
-22
lines changed

RNV8.podspec

+4-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ end
1111
if ENV["REACT_NATIVE_OVERRIDE_VERSION"]
1212
reactNativeVersion = ENV["REACT_NATIVE_OVERRIDE_VERSION"]
1313
end
14-
reactNativeTargetVersion = reactNativeVersion.split('.')[1].to_i
14+
reactNativeVersions = reactNativeVersion.split('.')
15+
reactNativeMinorVersion = reactNativeVersions[1].to_i
16+
reactNativePatchVersion = reactNativeVersions[2].to_i
1517

1618
folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -Wno-comma -Wno-shorten-64-to-32'
1719

@@ -33,7 +35,7 @@ Pod::Spec.new do |s|
3335
'HEADER_SEARCH_PATHS' => "\"$(PODS_ROOT)/boost\"",
3436
}
3537

36-
compiler_flags = folly_compiler_flags + ' ' + "-DREACT_NATIVE_TARGET_VERSION=#{reactNativeTargetVersion}"
38+
compiler_flags = folly_compiler_flags + ' ' + "-DREACT_NATIVE_MINOR_VERSION=#{reactNativeMinorVersion} -DREACT_NATIVE_PATCH_VERSION=#{reactNativePatchVersion}"
3739
s.compiler_flags = compiler_flags
3840

3941
s.dependency 'v8-ios'

android/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ cmake_minimum_required(VERSION 3.13)
1010
project(react-native-v8)
1111

1212
set(CMAKE_VERBOSE_MAKEFILE ON)
13-
if(${REACT_NATIVE_TARGET_VERSION} GREATER_EQUAL 73)
13+
if(${REACT_NATIVE_MINOR_VERSION} GREATER_EQUAL 73)
1414
set (CMAKE_CXX_STANDARD 20)
1515
else()
1616
set (CMAKE_CXX_STANDARD 17)
1717
endif()
1818

19-
string(APPEND CMAKE_CXX_FLAGS " -DREACT_NATIVE_TARGET_VERSION=${REACT_NATIVE_TARGET_VERSION} -fexceptions -fno-omit-frame-pointer -frtti -Wno-sign-compare -fstack-protector-all")
19+
string(APPEND CMAKE_CXX_FLAGS " -DREACT_NATIVE_MINOR_VERSION=${REACT_NATIVE_MINOR_VERSION} -DREACT_NATIVE_PATCH_VERSION=${REACT_NATIVE_PATCH_VERSION} -fexceptions -fno-omit-frame-pointer -frtti -Wno-sign-compare -fstack-protector-all")
2020

2121
include("${REACT_NATIVE_DIR}/ReactAndroid/cmake-utils/folly-flags.cmake")
2222
add_compile_options(${folly_FLAGS})

android/build.gradle

+3-1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ def reactNativeManifestAsJson = new JsonSlurper().parseText(reactNativeManifest.
4141
def reactNativeVersion = reactNativeManifestAsJson.version as String
4242
def (major, minor, patch) = reactNativeVersion.tokenize('.')
4343
def rnMinorVersion = Integer.parseInt(minor)
44+
def rnPatchVersion = Integer.parseInt(patch)
4445
def extractSoDir = "${buildDir}/jniLibs"
4546
def prefabHeadersDir = "${buildDir}/prefab-headers"
4647

@@ -135,7 +136,8 @@ android {
135136
cmake {
136137
arguments "-DANDROID_STL=c++_shared",
137138
"-DREACT_NATIVE_DIR=${toPlatformFileString(reactNativeDir)}",
138-
"-DREACT_NATIVE_TARGET_VERSION=${rnMinorVersion}",
139+
"-DREACT_NATIVE_MINOR_VERSION=${rnMinorVersion}",
140+
"-DREACT_NATIVE_PATCH_VERSION=${rnPatchVersion}",
139141
"-DV8_ANDROID_DIR=${v8AndroidDir}",
140142
"-DSO_DIR=${extractSoDir}"
141143
targets "v8executor"

src/v8runtime/V8Inspector.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#include <condition_variable>
1212
#include "v8-inspector.h"
1313

14-
#if REACT_NATIVE_TARGET_VERSION >= 73
14+
#if REACT_NATIVE_MINOR_VERSION >= 73
1515

1616
#if __has_include(<React-jsinspector/jsinspector/InspectorInterfaces.h>)
1717
#include <React-jsinspector/jsinspector/InspectorInterfaces.h>
@@ -23,7 +23,7 @@ namespace jsinspector = facebook::react::jsinspector_modern;
2323
#else
2424
#include "jsinspector/InspectorInterfaces.h"
2525
namespace jsinspector = facebook::react;
26-
#endif // REACT_NATIVE_TARGET_VERSION >= 73
26+
#endif // REACT_NATIVE_MINOR_VERSION >= 73
2727

2828
namespace rnv8 {
2929

src/v8runtime/V8Runtime.cpp

+14-8
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,12 @@ jsi::Value V8Runtime::evaluatePreparedJavaScript(
414414
return evaluateJavaScript(sourceJs, sourceJs->sourceURL());
415415
}
416416

417+
#if REACT_NATIVE_MINOR_VERSION >= 75 || (REACT_NATIVE_MINOR_VERSION >= 74 && REACT_NATIVE_PATCH_VERSION >= 3)
418+
void V8Runtime::queueMicrotask(const jsi::Function &callback) {
419+
// TODO: add this when we revisit new architecture support
420+
}
421+
#endif // REACT_NATIVE_MINOR_VERSION >= 75 || (REACT_NATIVE_MINOR_VERSION >= 74 && REACT_NATIVE_PATCH_VERSION >= 3
422+
417423
bool V8Runtime::drainMicrotasks(int maxMicrotasksHint) {
418424
v8::Locker locker(isolate_);
419425
v8::Isolate::Scope scopedIsolate(isolate_);
@@ -467,7 +473,7 @@ jsi::Runtime::PointerValue *V8Runtime::cloneSymbol(
467473
return new V8PointerValue(isolate_, v8PointerValue->Get(isolate_));
468474
}
469475

470-
#if REACT_NATIVE_TARGET_VERSION >= 70
476+
#if REACT_NATIVE_MINOR_VERSION >= 70
471477
jsi::Runtime::PointerValue *V8Runtime::cloneBigInt(
472478
const Runtime::PointerValue *pv) {
473479
if (!pv) {
@@ -572,7 +578,7 @@ jsi::PropNameID V8Runtime::createPropNameIDFromString(const jsi::String &str) {
572578
reinterpret_cast<const uint8_t *>(*utf8), utf8.length());
573579
}
574580

575-
#if REACT_NATIVE_TARGET_VERSION >= 69
581+
#if REACT_NATIVE_MINOR_VERSION >= 69
576582
jsi::PropNameID V8Runtime::createPropNameIDFromSymbol(
577583
const facebook::jsi::Symbol &sym) {
578584
v8::Locker locker(isolate_);
@@ -1076,7 +1082,7 @@ bool V8Runtime::hasProperty(
10761082
}
10771083

10781084
void V8Runtime::setPropertyValue(
1079-
#if REACT_NATIVE_TARGET_VERSION >= 72
1085+
#if REACT_NATIVE_MINOR_VERSION >= 72
10801086
const jsi::Object &object,
10811087
#else
10821088
jsi::Object &object,
@@ -1102,7 +1108,7 @@ void V8Runtime::setPropertyValue(
11021108
}
11031109

11041110
void V8Runtime::setPropertyValue(
1105-
#if REACT_NATIVE_TARGET_VERSION >= 72
1111+
#if REACT_NATIVE_MINOR_VERSION >= 72
11061112
const jsi::Object &object,
11071113
#else
11081114
jsi::Object &object,
@@ -1228,7 +1234,7 @@ jsi::WeakObject V8Runtime::createWeakObject(const jsi::Object &weakObject) {
12281234
new V8PointerValue(isolate_, std::move(weakRef)));
12291235
}
12301236

1231-
#if REACT_NATIVE_TARGET_VERSION >= 72
1237+
#if REACT_NATIVE_MINOR_VERSION >= 72
12321238
jsi::Value V8Runtime::lockWeakObject(const jsi::WeakObject &weakObject) {
12331239
#else
12341240
jsi::Value V8Runtime::lockWeakObject(jsi::WeakObject &weakObject) {
@@ -1314,7 +1320,7 @@ jsi::Value V8Runtime::getValueAtIndex(const jsi::Array &array, size_t i) {
13141320
}
13151321

13161322
void V8Runtime::setValueAtIndexImpl(
1317-
#if REACT_NATIVE_TARGET_VERSION >= 72
1323+
#if REACT_NATIVE_MINOR_VERSION >= 72
13181324
const jsi::Array &array,
13191325
#else
13201326
jsi::Array &array,
@@ -1479,7 +1485,7 @@ bool V8Runtime::strictEquals(const jsi::Symbol &a, const jsi::Symbol &b) const {
14791485
return result;
14801486
}
14811487

1482-
#if REACT_NATIVE_TARGET_VERSION >= 70
1488+
#if REACT_NATIVE_MINOR_VERSION >= 70
14831489
bool V8Runtime::strictEquals(const jsi::BigInt &a, const jsi::BigInt &b) const {
14841490
v8::Locker locker(isolate_);
14851491
v8::Isolate::Scope scopedIsolate(isolate_);
@@ -1552,7 +1558,7 @@ bool V8Runtime::instanceOf(const jsi::Object &o, const jsi::Function &f) {
15521558
return result;
15531559
}
15541560

1555-
#if REACT_NATIVE_TARGET_VERSION >= 74
1561+
#if REACT_NATIVE_MINOR_VERSION >= 74
15561562
void V8Runtime::setExternalMemoryPressure(const jsi::Object &obj, size_t amount) {
15571563
}
15581564
#endif

src/v8runtime/V8Runtime.h

+10-7
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ class V8Runtime : public facebook::jsi::Runtime {
7575
const std::shared_ptr<const facebook::jsi::PreparedJavaScript> &js)
7676
override;
7777

78+
#if REACT_NATIVE_MINOR_VERSION >= 75 || (REACT_NATIVE_MINOR_VERSION >= 74 && REACT_NATIVE_PATCH_VERSION >= 3)
79+
void queueMicrotask(const facebook::jsi::Function &callback) override;
80+
#endif // REACT_NATIVE_MINOR_VERSION >= 75 || (REACT_NATIVE_MINOR_VERSION >= 74 && REACT_NATIVE_PATCH_VERSION >= 3
7881
bool drainMicrotasks(int maxMicrotasksHint = -1) override;
7982

8083
facebook::jsi::Object global() override;
@@ -83,7 +86,7 @@ class V8Runtime : public facebook::jsi::Runtime {
8386

8487
protected:
8588
PointerValue *cloneSymbol(const Runtime::PointerValue *pv) override;
86-
#if REACT_NATIVE_TARGET_VERSION >= 70
89+
#if REACT_NATIVE_MINOR_VERSION >= 70
8790
PointerValue *cloneBigInt(const Runtime::PointerValue *pv) override;
8891
#endif
8992
PointerValue *cloneString(const Runtime::PointerValue *pv) override;
@@ -98,7 +101,7 @@ class V8Runtime : public facebook::jsi::Runtime {
98101
size_t length) override;
99102
facebook::jsi::PropNameID createPropNameIDFromString(
100103
const facebook::jsi::String &str) override;
101-
#if REACT_NATIVE_TARGET_VERSION >= 69
104+
#if REACT_NATIVE_MINOR_VERSION >= 69
102105
facebook::jsi::PropNameID createPropNameIDFromSymbol(
103106
const facebook::jsi::Symbol &sym) override;
104107
#endif
@@ -150,7 +153,7 @@ class V8Runtime : public facebook::jsi::Runtime {
150153
bool hasProperty(
151154
const facebook::jsi::Object &,
152155
const facebook::jsi::String &name) override;
153-
#if REACT_NATIVE_TARGET_VERSION >= 72
156+
#if REACT_NATIVE_MINOR_VERSION >= 72
154157
void setPropertyValue(
155158
const facebook::jsi::Object &,
156159
const facebook::jsi::PropNameID &name,
@@ -179,7 +182,7 @@ class V8Runtime : public facebook::jsi::Runtime {
179182

180183
facebook::jsi::WeakObject createWeakObject(
181184
const facebook::jsi::Object &) override;
182-
#if REACT_NATIVE_TARGET_VERSION >= 72
185+
#if REACT_NATIVE_MINOR_VERSION >= 72
183186
facebook::jsi::Value lockWeakObject(
184187
const facebook::jsi::WeakObject &) override;
185188
#else
@@ -194,7 +197,7 @@ class V8Runtime : public facebook::jsi::Runtime {
194197
uint8_t *data(const facebook::jsi::ArrayBuffer &) override;
195198
facebook::jsi::Value getValueAtIndex(const facebook::jsi::Array &, size_t i)
196199
override;
197-
#if REACT_NATIVE_TARGET_VERSION >= 72
200+
#if REACT_NATIVE_MINOR_VERSION >= 72
198201
void setValueAtIndexImpl(
199202
const facebook::jsi::Array &,
200203
size_t i,
@@ -223,7 +226,7 @@ class V8Runtime : public facebook::jsi::Runtime {
223226
bool strictEquals(
224227
const facebook::jsi::Symbol &a,
225228
const facebook::jsi::Symbol &b) const override;
226-
#if REACT_NATIVE_TARGET_VERSION >= 70
229+
#if REACT_NATIVE_MINOR_VERSION >= 70
227230
bool strictEquals(
228231
const facebook::jsi::BigInt &a,
229232
const facebook::jsi::BigInt &b) const override;
@@ -239,7 +242,7 @@ class V8Runtime : public facebook::jsi::Runtime {
239242
const facebook::jsi::Object &o,
240243
const facebook::jsi::Function &f) override;
241244

242-
#if REACT_NATIVE_TARGET_VERSION >= 74
245+
#if REACT_NATIVE_MINOR_VERSION >= 74
243246
void setExternalMemoryPressure(
244247
const facebook::jsi::Object &obj,
245248
size_t amount) override;

0 commit comments

Comments
 (0)