mirror of
https://github.com/rubyjs/libv8
synced 2023-03-27 23:21:48 -04:00
switch to master.
This commit is contained in:
parent
a0fe63d68d
commit
95ecfcac51
9 changed files with 200 additions and 25 deletions
10
Rakefile
10
Rakefile
|
@ -12,7 +12,8 @@ task :checkout do
|
||||||
sh "git submodule update --init"
|
sh "git submodule update --init"
|
||||||
Dir.chdir(V8_Source) do
|
Dir.chdir(V8_Source) do
|
||||||
sh "git fetch"
|
sh "git fetch"
|
||||||
sh "git checkout #{V8_Version}"
|
# sh "git checkout #{V8_Version}"
|
||||||
|
sh "git checkout master"
|
||||||
sh "make dependencies"
|
sh "make dependencies"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -25,9 +26,10 @@ end
|
||||||
|
|
||||||
desc "manually invoke the GYP compile. Useful for seeing debug output"
|
desc "manually invoke the GYP compile. Useful for seeing debug output"
|
||||||
task :manual_compile do
|
task :manual_compile do
|
||||||
|
require File.expand_path '../ext/libv8/arch.rb', __FILE__
|
||||||
|
include Libv8::Arch
|
||||||
Dir.chdir(V8_Source) do
|
Dir.chdir(V8_Source) do
|
||||||
puts "compiling libv8"
|
sh "make #{libv8_arch}.release GYP_GENERATORS=make"
|
||||||
sh "make native GYP_GENERATORS=make"
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -38,7 +40,7 @@ task :binary => :compile do
|
||||||
gemspec.platform = Gem::Platform.new(RUBY_PLATFORM)
|
gemspec.platform = Gem::Platform.new(RUBY_PLATFORM)
|
||||||
|
|
||||||
# We don't need most things for the binary
|
# We don't need most things for the binary
|
||||||
gemspec.files = ['lib/libv8.rb', 'lib/libv8/version.rb']
|
gemspec.files = ['lib/libv8.rb', 'lib/arch.rb', 'lib/libv8/version.rb']
|
||||||
# V8
|
# V8
|
||||||
gemspec.files += Dir['vendor/v8/include/*']
|
gemspec.files += Dir['vendor/v8/include/*']
|
||||||
gemspec.files += Dir['vendor/v8/out/native/*']
|
gemspec.files += Dir['vendor/v8/out/native/*']
|
||||||
|
|
35
ext/libv8/arch.rb
Normal file
35
ext/libv8/arch.rb
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
require 'rbconfig'
|
||||||
|
|
||||||
|
module Libv8
|
||||||
|
module Arch
|
||||||
|
module_function
|
||||||
|
|
||||||
|
def x86_64_from_build_cpu
|
||||||
|
RbConfig::MAKEFILE_CONFIG['build_cpu'] == 'x86_64'
|
||||||
|
end
|
||||||
|
|
||||||
|
def x86_64_from_byte_length
|
||||||
|
['foo'].pack('p').size == 8
|
||||||
|
end
|
||||||
|
|
||||||
|
def x86_64_from_arch_flag
|
||||||
|
RbConfig::MAKEFILE_CONFIG['ARCH_FLAG'] =~ /x86_64/
|
||||||
|
end
|
||||||
|
|
||||||
|
def rubinius?
|
||||||
|
Object.const_defined?(:RUBY_ENGINE) && RUBY_ENGINE == "rbx"
|
||||||
|
end
|
||||||
|
|
||||||
|
def x64?
|
||||||
|
if rubinius?
|
||||||
|
x86_64_from_build_cpu || x86_64_from_arch_flag
|
||||||
|
else
|
||||||
|
x86_64_from_byte_length
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def libv8_arch
|
||||||
|
x64? ? "x64" : "ia32"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,7 +1,9 @@
|
||||||
require 'mkmf'
|
require 'mkmf'
|
||||||
create_makefile('libv8')
|
create_makefile('libv8')
|
||||||
|
require File.expand_path '../arch.rb', __FILE__
|
||||||
|
|
||||||
|
include Libv8::Arch
|
||||||
|
|
||||||
Dir.chdir(File.expand_path '../../../vendor/v8', __FILE__) do
|
Dir.chdir(File.expand_path '../../../vendor/v8', __FILE__) do
|
||||||
puts "compiling libv8"
|
puts `make #{libv8_arch}.release GYP_GENERATORS=make`
|
||||||
puts `make native GYP_GENERATORS=make`
|
|
||||||
end
|
end
|
||||||
|
|
41
lib/libv8.rb
41
lib/libv8.rb
|
@ -1,31 +1,46 @@
|
||||||
require 'libv8/version'
|
require 'mkmf'
|
||||||
|
require 'libv8/arch'
|
||||||
module Libv8
|
module Libv8
|
||||||
|
|
||||||
module_function
|
module_function
|
||||||
|
|
||||||
def libv8(name)
|
def libv8_object(name)
|
||||||
path = File.expand_path "../../vendor/v8/out/native/libv8_#{name}.a", __FILE__
|
"#{libv8_source_path}/out/#{Libv8::Arch.libv8_arch}.release/libv8_#{name}.#{$LIBEXT}"
|
||||||
if File.exists? path
|
|
||||||
path
|
|
||||||
else
|
|
||||||
File.expand_path "../../vendor/v8/out/native/obj.target/tools/gyp/libv8_#{name}.a", __FILE__
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def libv8_base
|
def libv8_base
|
||||||
libv8 :base
|
libv8_object :base
|
||||||
end
|
end
|
||||||
|
|
||||||
def libv8_snapshot
|
def libv8_snapshot
|
||||||
libv8 :snapshot
|
libv8_object :snapshot
|
||||||
end
|
end
|
||||||
|
|
||||||
def libv8_nosnapshot
|
def libv8_nosnapshot
|
||||||
libv8 :nosnapshot
|
libv8_object :nosnapshot
|
||||||
|
end
|
||||||
|
|
||||||
|
def libv8_objects(*names)
|
||||||
|
names = [:base, :snapshot] if names.empty?
|
||||||
|
names.map do |name|
|
||||||
|
fail "no libv8 object #{name}" unless File.exists?(object = libv8_object(name))
|
||||||
|
object
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def libv8_ldflags
|
def libv8_ldflags
|
||||||
"-l#{libv8_base} -l#{libv8_snapshot}"
|
"-L#{libv8_base} -L#{libv8_snapshot}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def libv8_include_flags
|
||||||
|
"-I#{libv8_include_path}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def libv8_include_path
|
||||||
|
"#{libv8_source_path}/include"
|
||||||
|
end
|
||||||
|
|
||||||
|
def libv8_source_path
|
||||||
|
File.expand_path "../../vendor/v8", __FILE__
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
module Libv8
|
module Libv8
|
||||||
VERSION = "3.9.24.0"
|
VERSION = "3.10.7.0"
|
||||||
end
|
end
|
||||||
|
|
|
@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
||||||
end
|
end
|
||||||
|
|
||||||
s.extensions = ["ext/libv8/extconf.rb"]
|
s.extensions = ["ext/libv8/extconf.rb"]
|
||||||
s.require_paths = ["lib"]
|
s.require_paths = ["lib", "ext"]
|
||||||
|
|
||||||
s.add_development_dependency "rake", "~> 0.9.2"
|
s.add_development_dependency "rake", "~> 0.9.2"
|
||||||
s.add_development_dependency "rake-compiler"
|
s.add_development_dependency "rake-compiler"
|
||||||
|
|
|
@ -5,8 +5,19 @@ describe Libv8 do
|
||||||
include Libv8
|
include Libv8
|
||||||
|
|
||||||
it "can find the static library components" do
|
it "can find the static library components" do
|
||||||
Pathname(libv8_base).should be_exist
|
Pathname(libv8_base).should exist
|
||||||
Pathname(libv8_snapshot).should be_exist
|
Pathname(libv8_snapshot).should exist
|
||||||
Pathname(libv8_nosnapshot).should be_exist
|
Pathname(libv8_nosnapshot).should exist
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "has a valid include path" do
|
||||||
|
Pathname(libv8_include_path).should be_exist
|
||||||
|
end
|
||||||
|
|
||||||
|
it "can retrieve objects by name" do
|
||||||
|
libv8_objects(:base, :snapshot, :nosnapshot).each do |obj|
|
||||||
|
Pathname(obj).should exist
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
110
v8-gyp-osx-x64-support.patch
Normal file
110
v8-gyp-osx-x64-support.patch
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 5dc6ca5..e4e36d8 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -260,4 +260,4 @@ $(ENVFILE).new:
|
||||||
|
# Dependencies.
|
||||||
|
dependencies:
|
||||||
|
svn checkout --force http://gyp.googlecode.com/svn/trunk build/gyp \
|
||||||
|
- --revision 1026
|
||||||
|
+ --revision 1251
|
||||||
|
diff --git a/build/common.gypi b/build/common.gypi
|
||||||
|
index 5c0c323..4f2452c 100644
|
||||||
|
--- a/build/common.gypi
|
||||||
|
+++ b/build/common.gypi
|
||||||
|
@@ -317,6 +317,16 @@
|
||||||
|
'cflags': [ '-Wall', '<(werror)', '-W', '-Wno-unused-parameter',
|
||||||
|
'-Wnon-virtual-dtor', '-Woverloaded-virtual' ],
|
||||||
|
}],
|
||||||
|
+ ['OS=="mac" and target_arch=="ia32"', {
|
||||||
|
+ 'xcode_settings': {
|
||||||
|
+ 'ARCHS': ['i386']
|
||||||
|
+ }
|
||||||
|
+ }],
|
||||||
|
+ ['OS=="mac" and target_arch=="x64"', {
|
||||||
|
+ 'xcode_settings': {
|
||||||
|
+ 'ARCHS': ['x86_64']
|
||||||
|
+ }
|
||||||
|
+ }],
|
||||||
|
],
|
||||||
|
}, # Debug
|
||||||
|
'Release': {
|
||||||
|
@@ -358,6 +368,18 @@
|
||||||
|
# is specified explicitly.
|
||||||
|
'GCC_STRICT_ALIASING': 'YES',
|
||||||
|
},
|
||||||
|
+ 'conditions': [
|
||||||
|
+ ['target_arch=="ia32"', {
|
||||||
|
+ 'xcode_settings': {
|
||||||
|
+ 'ARCHS': ['i386']
|
||||||
|
+ }
|
||||||
|
+ }],
|
||||||
|
+ ['target_arch=="x64"', {
|
||||||
|
+ 'xcode_settings': {
|
||||||
|
+ 'ARCHS': ['x86_64']
|
||||||
|
+ }
|
||||||
|
+ }],
|
||||||
|
+ ],
|
||||||
|
}], # OS=="mac"
|
||||||
|
['OS=="win"', {
|
||||||
|
'msvs_configuration_attributes': {
|
||||||
|
diff --git a/build/gyp_v8 b/build/gyp_v8
|
||||||
|
index 4293e76..54f3f7f 100755
|
||||||
|
--- a/build/gyp_v8
|
||||||
|
+++ b/build/gyp_v8
|
||||||
|
@@ -156,7 +156,12 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
|
# Generate for the architectures supported on the given platform.
|
||||||
|
gyp_args = list(args)
|
||||||
|
- gyp_args.append('-Dtarget_arch=ia32')
|
||||||
|
+ target_arch = None
|
||||||
|
+ for p in gyp_args:
|
||||||
|
+ if p.find('-Dtarget_arch=') == 0:
|
||||||
|
+ target_arch = p
|
||||||
|
+ if target_arch is None:
|
||||||
|
+ gyp_args.append('-Dtarget_arch=ia32')
|
||||||
|
if utils.GuessOS() == 'linux':
|
||||||
|
gyp_args.append('-S-ia32')
|
||||||
|
run_gyp(gyp_args)
|
||||||
|
diff --git a/tools/gyp/v8.gyp b/tools/gyp/v8.gyp
|
||||||
|
index 764789a..2913cdf 100644
|
||||||
|
--- a/tools/gyp/v8.gyp
|
||||||
|
+++ b/tools/gyp/v8.gyp
|
||||||
|
@@ -59,6 +59,9 @@
|
||||||
|
'../../src/v8dll-main.cc',
|
||||||
|
],
|
||||||
|
'conditions': [
|
||||||
|
+ ['OS=="mac"', {
|
||||||
|
+ 'xcode_settings': {'OTHER_LDFLAGS': ['-dynamiclib', '-all_load']},
|
||||||
|
+ }],
|
||||||
|
['OS=="win"', {
|
||||||
|
'defines': [
|
||||||
|
'BUILDING_V8_SHARED',
|
||||||
|
@@ -536,7 +539,7 @@
|
||||||
|
'../../src/arm/stub-cache-arm.cc',
|
||||||
|
],
|
||||||
|
}],
|
||||||
|
- ['v8_target_arch=="ia32" or v8_target_arch=="mac" or OS=="mac"', {
|
||||||
|
+ ['v8_target_arch=="ia32"', {
|
||||||
|
'sources': [
|
||||||
|
'../../src/ia32/assembler-ia32-inl.h',
|
||||||
|
'../../src/ia32/assembler-ia32.cc',
|
||||||
|
@@ -601,7 +604,7 @@
|
||||||
|
'../../src/mips/stub-cache-mips.cc',
|
||||||
|
],
|
||||||
|
}],
|
||||||
|
- ['v8_target_arch=="x64" or v8_target_arch=="mac" or OS=="mac"', {
|
||||||
|
+ ['v8_target_arch=="x64"', {
|
||||||
|
'sources': [
|
||||||
|
'../../src/x64/assembler-x64-inl.h',
|
||||||
|
'../../src/x64/assembler-x64.cc',
|
||||||
|
@@ -982,6 +985,9 @@
|
||||||
|
}, {
|
||||||
|
'toolsets': ['target'],
|
||||||
|
}],
|
||||||
|
+ ['OS=="mac" and component=="shared_library"', {
|
||||||
|
+ 'xcode_settings': {'OTHER_LDFLAGS': ['-dynamiclib', '-all_load']},
|
||||||
|
+ }],
|
||||||
|
],
|
||||||
|
'link_settings': {
|
||||||
|
'libraries': [
|
2
vendor/v8
vendored
2
vendor/v8
vendored
|
@ -1 +1 @@
|
||||||
Subproject commit a1e3ff82b79ab8d92cebc9133fca3b15b00d5921
|
Subproject commit 09a5564086c71bc40bcfea0e102b3a3f31fc8180
|
Loading…
Reference in a new issue