Skip to content

Latest commit

 

History

History
81 lines (62 loc) · 2.54 KB

README.MacOS.md

File metadata and controls

81 lines (62 loc) · 2.54 KB

V8Js on MacOS

Installation of V8Js on MacOS is pretty much straight forward.

If you have brew around, just brew install homebrew/php/php56-v8js (or php54-v8js / php55-v8js depending on your PHP version) and you should be done. This will install a recent version of V8 along with this extension.

Otherwise you need to compile latest v8 manually.

Compile latest v8

cd /tmp

# Install depot_tools first (needed for source checkout)
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=`pwd`/depot_tools:"$PATH"

# Download v8
fetch v8
cd v8

# (optional) If you'd like to build a certain version:
git checkout 3.32.6
gclient sync

# Compile V8 (using up to 8 CPU cores, requires a lot of RAM, adapt as needed)
make native library=shared -j8

# Install to /usr
mkdir -p /usr/local/lib /usr/local/include
cp out/native/lib*.dylib /usr/local/lib/
cp out/native/libv8_*.a  /usr/local/lib/
cp -R include/* /usr/local/include

You cannot install the libraries to any location you want since they have a install name that is baked into the library. You can check the install name with otool -D out/native/libv8.dylib.

During the build snapshot generation may fail like so:

ACTION tools_gyp_v8_gyp_v8_snapshot_target_run_mksnapshot /Users/vagrant/v8/out/native/obj.target/v8_snapshot/geni/snapshot.cc
dyld: Library not loaded: /usr/local/lib/libicui18n.dylib
  Referenced from: /Users/vagrant/v8/out/native/mksnapshot
  Reason: image not found
/bin/sh: line 1: 18964 Trace/BPT trap: 5       "/Users/vagrant/v8/out/native/mksnapshot" --log-snapshot-positions --logfile "/Users/vagrant/v8/out/native/obj.target/v8_snapshot/geni/snapshot.log" --random-seed 314159265 "/Users/vagrant/v8/out/native/obj.target/v8_snapshot/geni/snapshot.cc"
make[1]: *** [/Users/vagrant/v8/out/native/obj.target/v8_snapshot/geni/snapshot.cc] Error 133
make: *** [native] Error 2

... if that happens, just copy libicu*.dylib to /usr/local/lib already and start make again (then simply continue with installation):

cp out/native/libicu*.dylib /usr/local/lib/
make native library=shared -j8

Compile php-v8js itself

If you're using Apple LLVM compiler (instead of gcc) you need to pass the -Wno-c++11-narrowing flag. Otherwise compilation fails due to narrowing errors in PHP itself, which LLVM is much pickier with (compared to gcc).

cd /tmp
git clone https://github.com/preillyme/v8js.git
cd v8js
phpize
./configure CXXFLAGS="-Wno-c++11-narrowing"
make
make test
make install