Hi, I'm working on embedding v8 to Unreal Engine(UE4) application. As of
now UE4 is still uses libstdc++ for Android, I had to build v8 with
libstdc++ to match stdlib. I was able to build with minimal modification
(as possible) of build script, but I experienced some runtime assurance
failure.
At first, I'm working with 7.4.288 version of v8 and my modification to
build with libstdc++ is as follows:
diff --git a/config/BUILDCONFIG.gn b/config/BUILDCONFIG.gn
index 9e843f3..6e718e1 100644
--- a/config/BUILDCONFIG.gn
+++ b/config/BUILDCONFIG.gn
@@ -438,7 +438,6 @@ default_compiler_configs = [
"//build/config/compiler:no_exceptions",
"//build/config/compiler:no_rtti",
"//build/config/compiler:runtime_library",
- "//build/config/compiler:thin_archive",
"//build/config/coverage:default_coverage",
"//build/config/sanitizers:default_sanitizer_flags",
]
diff --git a/config/android/BUILD.gn b/config/android/BUILD.gn
index b69d42b..c2c0897 100644
--- a/config/android/BUILD.gn
+++ b/config/android/BUILD.gn
@@ -27,6 +27,9 @@ config("compiler") {
# Forces full rebuilds on NDK rolls. To rebuild everything when NDK
version
# stays the same, increment the suffix number.
"ANDROID_NDK_VERSION_ROLL=${android_ndk_version}_1",
+ "_GLIBCXX_USE_C99=1",
+ "_GLIBCXX_HAVE_WCSTOF=1",
+ "_GLIBCXX_USE_C99_MATH_TR1=1",
]
if (current_cpu == "mips64el") {
@@ -109,6 +112,26 @@ config("runtime_library") {
rebase_path("$android_ndk_root/sources/android/support/include",
root_build_dir) ]
+ if (current_cpu == "arm") {
+ cflags_cc += [
+ "-isystem" +
+
rebase_path("$android_ndk_root/sources/cxx-stl/gnu-libstdc++/4.9/include",
+ root_build_dir),
+ "-isystem" +
+
rebase_path("$android_ndk_root/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include",
+ root_build_dir),
+ ]
+ } else if (current_cpu == "arm64") {
+ cflags_cc += [
+ "-isystem" +
+
rebase_path("$android_ndk_root/sources/cxx-stl/gnu-libstdc++/4.9/include",
+ root_build_dir),
+ "-isystem" +
+
rebase_path("$android_ndk_root/sources/cxx-stl/gnu-libstdc++/4.9/libs/arm64-v8a/include",
+ root_build_dir),
+ ]
+ }
+
defines = [
"__GNU_SOURCE=1", # Necessary for clone().
"CHROMIUM_CXX_TWEAK_INLINES", # Saves binary size.
diff --git a/config/compiler/BUILD.gn b/config/compiler/BUILD.gn
index 402dac4..ee3015a 100644
--- a/config/compiler/BUILD.gn
+++ b/config/compiler/BUILD.gn
@@ -1456,7 +1456,7 @@ config("default_warnings") {
# Don't warn about "maybe" uninitialized. Clang doesn't include this
# in -Wall but gcc does, and it gives false positives.
- cflags += [ "-Wno-maybe-uninitialized" ]
+ cflags += [ "-Wno-uninitialized" ]
cflags += [ "-Wno-deprecated-declarations" ]
# -Wcomment gives too many false positives in the case a
I built it with these settings:
# Build arguments go here.
# See "gn args <out_dir> --list" for available build arguments.
is_debug = true
android_full_debug = is_debug
is_component_build = false
target_os = "android"
target_cpu = "arm64"
use_custom_libcxx = false
use_custom_libcxx_for_host = true
use_allocator_shim = false
v8_enable_i18n_support = false
v8_use_external_startup_data = false
v8_use_snapshot = false
v8_static_library = true
And I encountered two types of failures. The first one occurs when creating
Isolate(Isolate::New).
07-15 16:02:35.393 7153 7269 E v8 : #
07-15 16:02:35.393 7153 7269 E v8 : # Fatal error in
../../src/handles.cc, line 86
07-15 16:02:35.393 7153 7269 E v8 : #
07-15 16:02:35.393 7153 7269 E v8 : Debug check failed: limit -
current->next < kHandleBlockSize (1022 vs. 1022).
07-15 16:02:35.393 7153 7269 E v8 :
07-15 16:02:35.393 7153 7269 E v8 : #
07-15 16:02:35.393 7153 7269 E v8 : #
07-15 16:02:35.393 7153 7269 E v8 : #
07-15 16:02:35.393 7153 7269 E v8 : #FailureMessage Object:
0x74f95e01a0
and the second one is when setting field to prototype
template(Template->PrototypeTemplate()->Set()).
07-15 13:42:24.488 23217 23318 E v8 : #
07-15 13:42:24.488 23217 23318 E v8 : # Fatal error in
../../src/api.cc, line 1350
07-15 13:42:24.488 23217 23318 E v8 : #
07-15 13:42:24.488 23217 23318 E v8 : Check failed:
!value_obj->IsJSReceiver() || value_obj->IsTemplateInfo().
07-15 13:42:24.488 23217 23318 E v8 :
07-15 13:42:24.488 23217 23318 E v8 : #
07-15 13:42:24.488 23217 23318 E v8 : #
07-15 13:42:24.488 23217 23318 E v8 : #
07-15 13:42:24.488 23217 23318 E v8 : #FailureMessage Object:
0x74f95f90e0
I know it's very limited information and the range of the question is broad
to you. But I'd like to know where to start. I can provide more information
if you need.
Thank you in advance!
--
--
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
---
You received this message because you are subscribed to the Google Groups
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/v8-users/309f6794-a10f-406a-9b17-c32c9f802e24%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.