Hi Heriberto, few answers inline.
On Tuesday, August 4, 2015 at 10:24:47 PM UTC+2, Heriberto Delgado wrote: > > Another update. > > First of all, let me tell you: I am a bit disappointed for the poor > (actually, for the non-existent) support in this group for this issue. Is > it really that atypical that someone attempts to build an Android version > of V8 using a recent Mac model with the latest tools available? > It seems so, else you would have gotten any response. There are similar threads for other OS were people got feedback because other developers have the same/similar build configuration. > Makes you wonder if Google is really *that* commited to open-source > software development, in spirit - as opposed to in letter, as Google > clearly is... > > Oh well. > > I finally got version 4.3.60 to compile and produce valid (full, instead > of thin) libraries for arm-eabi, arm64, x86, x64 and mips (but no mips64). > A modification was needed in \tools\gyp\v8.gyp to do that. Attached is the > modified v8.gyp with the modifications. > > I chose 4.3.60 since it was the last version I could compile by using the > steps below. Any versions after this one use the new compilation method > (that is, the one where you do not need to specify an ANDROID_NDK_ROOT > environment variable) and, it seems, are no longer able to produce fat v8 > libraries. > > A few points of interest if you want to do the same: > > - This applies for version 4.3.60 only - check your local git copy for a > "4.3.60" tag. > - You will need *both* Xcode and the Command Line Development tools > installed in your machine. > - Overwrite the current /tools/gyp/v8.gyp file with the attached one, in > order to produce fat (instead of thin) libraries. > - This version uses the old compilation method, so be sure to " export > ANDROID_NDK_ROOT=~/Path/To/Your/Android/NDK/Folder/ ". > - If you attempt to include internationalization support, the system will > generate a few ICU library files, but they are all "thin" and cannot be > used in your project. I still haven't found a way to make them "fat". > - By all means, do include -j16 in your build command (or a similar > number); it will speed up the compilation considerably. > Yes, be aware that this depends on the cores you are having on your machine. > - VERY IMPORTANT: The debugging agent that was present in version 3.14 is > *gone* now, for good. See > https://groups.google.com/forum/#!msg/v8-users/pS5tgGXzzHY/qG2txmrfqcAJ . > The debugging protocol and related functions, however, are still there; the > only thing you need to implement externally is the thread code that creates > a socket that sends and receive debugging commands outside the app. > > Now, to create the Android builds on a (recent model) Mac: > > - Install depot_tools ( > http://dev.chromium.org/developers/how-tos/install-depot-tools ) > - Open Terminal, then run the following commands: > fetch v8 > cd v8 > - Using your favorite git client, "checkout 4.3.60" in the v8 folder. > - In Terminal, run: > gclient sync > - Copy the attached file to the /tools/gyp folder, overwriting the > existing one. > - In Terminal, run: > export ANDROID_NDK_ROOT=/The/Full/Path/To/Your/Android/NDK/Folder/ > > With this, you're ready to build the make commands for the various v8 > libraries. In Terminal, run: > > make android_arm.release -j16 i18nsupport=off > make android_arm64.release -j16 i18nsupport=off > make android_ia32.release -j16 i18nsupport=off > make android_x64.release -j16 i18nsupport=off > make android_mipsel.release -j16 i18nsupport=off > > The new library files are stored in folders called: > > /out/android_arm.release > /out/android_arm64.release > /out/android_ia32.release > /out/android_x64.release > /out/android_mipsel.release > > Containing these files at each one of these folders: > > libv8_base.a > libv8_libbase.a > libv8_libplatform.a > libv8_nosnapshot.a > libv8_snapshot.a > > These are the files you want; just remember to choose one of > libv8_snapshot.a or libv8_nosnapshot.a depending on your project's needs. > > Hope this helps for anyone else that might have these issues. > > > > El viernes, 17 de julio de 2015, 9:14:55 (UTC-6), Heriberto Delgado > escribió: >> >> Environment: >> >> - MacBook Pro (Retina, 15-inch, Mid 2014) >> - OSX Yosemite (10.10.4) >> - Xcode 6.4 >> - Android Studio 1.3 RC 1 (141.2071668) >> >> My intent is to compile V8 as a shared library so I can include it in my >> new project as a standalone Javascript engine. >> >> These are the steps I followed starting July 16, 2015 in order to >> accomplish that task: >> >> 1) Used SourceTree to clone depot_tools into ~/Projects/depot_tools >> >> 2) Started Terminal, then: >> >> export PATH=~/Projects/depot_tools:$PATH >> >> cd Projects >> >> fetch v8 (took about 15 min.) >> >> 3) As suggested in https://code.google.com/p/v8-wiki/wiki/D8OnAndroid , >> opened ~/Projects/.gclient and added: >> >> target_os = [‘android’] >> >> And then, on Terminal: >> >> cd v8 >> >> gclient sync —nohooks (15:20 hrs - very slow connection) >> >> 4) Terminal again, then: >> >> make android_arm -j16 library=shared >> >> The process aborts with the following errors: >> >> >> make[1]: *** No rule to make target ‘android_arm.optdebug’. Stop. >> >> /bin/sh: >> ~/Projects/v8/third_party/android_tools/ndk//toolchains/arm-linux-androideabi-4.9/prebuilt/mac-x86_64/bin/*-gcc: >> >> No such file or directory >> >> make[1]: *** [out/Makefile.android_arm.debug] Error 1 >> >> make[1]: *** [out/Makefile.android_arm.release] Error 1 >> >> >> No idea what is “optdebug”, so I didn’t pursue any further. The missing >> folder, however, was really missing. There was no prebuilt/mac-x86_64/, >> just one prebuilt/linux-x86_64/. Renamed the latter to the former, and then >> tried again. >> >> The new error message is: >> >> /bin/sh: >> ~/Projects/v8/third_party/android_tools/ndk//toolchains/arm-linux-androideabi-4.9/prebuilt/mac-x86_64/bin/arm-linux-androideabi-gcc: >> >> cannot execute binary file >> >> Renamed directories to what they were before (that is, >> prebuilt/mac-x86_64/ -> prebuilt/linux-x86_64 ). >> >> Checked my Android Studio NDK folder in ~/Library/Android/sdk/ndk-bundle, >> found folder prebuilt/darwin-x86_64. Copied it to V8’s /prebuilt folder, >> renamed it to mac-x86-64. Tried again. >> >> The compile step failed with these errors: >> >> >> In file included from ../src/libplatform/task-queue.cc:5: >> In file included from .././src/libplatform/task-queue.h:8: >> In file included from >> ~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/queue:169: >> In file included from >> ~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/deque:159: >> In file included from >> ~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/__split_buffer:7: >> In file included from >> ~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/algorithm:626: >> >> *~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/cstring:61:10: >> **fatal >> error: * >> * 'string.h' file not found* >> #include <string.h> >> * ^* >> In file included from ../src/libplatform/worker-thread.cc:5: >> In file included from .././src/libplatform/worker-thread.h:8: >> In file included from >> ~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/queue:169: >> In file included from >> ~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/deque:159: >> In file included from >> ~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/__split_buffer:7: >> In file included from >> ~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/algorithm:626: >> >> *~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/cstring:61:10: >> **fatal >> error: * >> * 'string.h' file not found* >> #include <string.h> >> * ^* >> In file included from ../src/base/bits.cc:5: >> In file included from .././src/base/bits.h:9: >> In file included from .././src/base/macros.h:11: >> >> *~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/cstring:61:10: >> **fatal >> error: * >> * 'string.h' file not found* >> #include <string.h> >> * ^* >> *../src/base/atomicops_internals_x86_gcc.cc:8:10: **fatal error: >> **'string.h' >> file* >> * not found* >> #include <string.h> >> * ^* >> 1 error generated. >> make[2]: *** >> [~/Projects/v8/out/android_arm.debug/obj.host/v8_libbase/src/base/atomicops_internals_x86_gcc.o] >> >> Error 1 >> make[2]: *** Waiting for unfinished jobs.... >> CXX(host) >> ~/Projects/v8/out/android_arm.debug/obj.host/v8_libbase/src/base/division-by-constant.o >> In file included from ../src/base/cpu.cc:5: >> In file included from .././src/base/cpu.h:16: >> In file included from .././src/base/macros.h:11: >> >> *~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/cstring:61:10: >> **fatal >> error: * >> * 'string.h' file not found* >> #include <string.h> >> * ^* >> In file included from ../src/libplatform/default-platform.cc:5: >> In file included from .././src/libplatform/default-platform.h:8: >> In file included from >> ~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/functional:477: >> In file included from >> ~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/memory:606: >> In file included from >> ~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/iterator:346: >> >> *~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/iosfwd:90:10: >> **fatal >> error: * >> * 'wchar.h' file not found* >> #include <wchar.h> // for mbstate_t >> * ^* >> In file included from ../src/base/division-by-constant.cc:9: >> In file included from .././src/base/logging.h:8: >> >> *~/Projects/v8/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/cstring:61:10: >> **fatal >> error: * >> * 'string.h' file not found* >> #include <string.h> >> * ^* >> 1 error generated. >> >> >> >> >> At this point, I don’t know what else to do. >> >> Can you please tell me what am I doing wrong, and how to fix it? Being >> able to include V8 as a standalone Javascript engine is vital for my >> project, so any help will be greatly appreciated. Thanks in advance! >> > -- -- v8-users mailing list v8-users@googlegroups.com 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 v8-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.