1
0
Fork 0
mirror of https://github.com/rubyjs/therubyracer synced 2023-03-27 23:21:42 -04:00

remove the dependency on libv8

This commit is contained in:
Charles Lowell 2012-06-14 07:24:40 -05:00
parent ae9373064d
commit fc4d0ce3bf
4 changed files with 57 additions and 18 deletions

View file

@ -4,3 +4,4 @@ source 'http://rubygems.org'
gemspec
gem 'redjs', :git => 'https://github.com/cowboyd/redjs.git', :tag => 'v0.6.1'
gem 'libv8', "~> 3.10.8"

48
ext/v8/build.rb Normal file
View file

@ -0,0 +1,48 @@
LIBV8_COMPATIBILITY = '~> 3.10.8'
def have_rubygem_libv8?
gem 'libv8', LIBV8_COMPATIBILITY
return true
rescue Gem::LoadError
return false
end
def build_with_system_libv8
dir_config('v8')
find_header('v8.h') or begin
puts <<-EOS
The Ruby Racer requires libv8 #{LIBV8_COMPATIBILITY}
to be present on your system in order to compile
and link, but it could not be found.
In order to resolve this, you will either need to manually
install an appropriate libv8 and make sure that this
build process can find it. If you install it into the
standard system path, then it should just be picked up
automatically. Otherwise, you'll have to pass some extra
flags to the build process as a hint.
If you don't want to bother with all that, there is a
rubygem that will do all this for you. You can add
following line to your Gemfile:
gem 'libv8', '#{LIBV8_COMPATIBILITY}'
We hope that helps, and we apologize, but now we have
to push the eject button on this install.
thanks,
The Mgmt.
EOS
raise "unable to locate libv8. Please see output for details"
end
$LDFLAGS << " -lv8_base -lv8_snapshot "
end
def build_with_rubygem_libv8
require 'libv8'
include Libv8
$INCFLAGS.insert 0, "#{libv8_include_flags} "
$LDFLAGS.insert 0, libv8_objects.join(' ') + " "
end

View file

@ -1,31 +1,23 @@
require 'mkmf'
begin
require 'libv8'
rescue LoadError
require 'rubygems'
require 'libv8'
end
include Libv8
require File.expand_path '../build', __FILE__
have_library('pthread')
have_library('objc') if RUBY_PLATFORM =~ /darwin/
#we have to manually prepend the libv8 include path to INCFLAGS
#since find_header() does not actually work as advertized.
#see https://github.com/cowboyd/therubyracer/issues/91
$INCFLAGS.insert 0, "#{libv8_include_flags} "
$CPPFLAGS += " -Wall" unless $CPPFLAGS.split.include? "-Wall"
$CPPFLAGS += " -g" unless $CPPFLAGS.split.include? "-g"
$CPPFLAGS += " -rdynamic" unless $CPPFLAGS.split.include? "-rdynamic"
$CPPFLAGS += " -fPIC" unless $CPPFLAGS.split.include? "-rdynamic" or RUBY_PLATFORM =~ /darwin/
$LDFLAGS.insert 0, libv8_objects.join(' ') + " "
$LIBS << ' -lpthread '
CONFIG['LDSHARED'] = '$(CXX) -shared' unless RUBY_PLATFORM =~ /darwin/
if CONFIG['warnflags']
CONFIG['warnflags'].gsub!('-Wdeclaration-after-statement', '')
CONFIG['warnflags'].gsub!('-Wimplicit-function-declaration', '')
end
if have_rubygem_libv8?
build_with_rubygem_libv8
else
build_with_system_libv8
end
create_makefile('v8/init')

View file

@ -16,8 +16,6 @@ Gem::Specification.new do |gem|
gem.require_paths = ["lib", "ext"]
gem.version = V8::VERSION
gem.add_dependency "libv8", "~> 3.10.8"
gem.add_development_dependency "rake"
gem.add_development_dependency "rake-compiler"
gem.add_development_dependency "gem-compiler"