Compile v8 with system llvm-10 libc++ (not the embedded one)

38 views
Skip to first unread message

Ray Burgemeestre

unread,
Jun 3, 2020, 11:40:57 AM6/3/20
to v8-users
Hi there,


I hope this is a simple question. I'm working with v8 version 8.2.297.1. And I would like to use the system libc++ from /usr/lib/llvm-10 and not the one bundled with v8.

My args look like this:

# cat out/x64.release/args.gn
is_component_build = false
is_debug = false
target_cpu = "x64"
use_goma = false
goma_dir = "None"
v8_enable_backtrace = true
v8_enable_disassembler = true
v8_enable_object_print = true
v8_enable_verify_heap = true
v8_enable_embedded_builtins = false
v8_use_external_startup_data = false
v8_use_snapshot = false
use_custom_libcxx = false
is_clang = true
v8_monolithic = true


My motivation is that with use_comst_libcxx set to true I experienced some conflicts with other libraries that link against the system libc++.

That's why I wanted to set this flag to false, but I think in that case it's falling back to glibc++ ?

nm -C /opt/cppse/build/v8pp/lib/libv8_monolith.a | grep v8::platform::NewDefaultPlatform
0000000000000000 T v8::platform::NewDefaultPlatform(int, v8::platform::IdleTaskSupport, v8::platform::InProcessStackDumping, std::unique_ptr<v8::TracingController, std::default_delete<v8::TracingController> >)

I am expecting something like:

0000000000000000 T v8::platform::NewDefaultPlatform(int, v8::platform::IdleTaskSupport, v8::platform::InProcessStackDumping, std::__1::unique_ptr<v8::TracingController, std::__1::default_delete<v8::TracingController> >)


If I create a component built, I can also see it seems it's not using libc++:

root@79ce32aeae6f:/mnt2/NAS/projects/build-config/v8pp/v8# ldd ./out/x64.release/libv8.so
    linux-vdso.so.1 (0x00007fff65bed000)
    libicui18n.so => /mnt2/NAS/projects/build-config/v8pp/v8/./out/x64.release/libicui18n.so (0x00007f2f84bc4000)
    libicuuc.so => /mnt2/NAS/projects/build-config/v8pp/v8/./out/x64.release/libicuuc.so (0x00007f2f84a02000)
    libv8_libbase.so => /mnt2/NAS/projects/build-config/v8pp/v8/./out/x64.release/libv8_libbase.so (0x00007f2f849e0000)
    libchrome_zlib.so => /mnt2/NAS/projects/build-config/v8pp/v8/./out/x64.release/libchrome_zlib.so (0x00007f2f849c2000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2f8479d000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f2f84595000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f2f8420a000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2f83e6c000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2f83a7b000)
    /lib64/ld-linux-x86-64.so.2 (0x000055d51e2ae000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f2f83863000)


Here I would like to have seen:

/usr/lib/llvm-10/lib/libc++abi.so.1.0
/usr/lib/llvm-10/lib/libc++.so.1.0


It is not clear to me after googling and trying to understand how this GN stuff works what I could do to achieve this?

Is it supported at all?

Thanks in advance,
Ray
Reply all
Reply to author
Forward
0 new messages