summaryrefslogtreecommitdiff
path: root/spec/ruby/optional/capi/spec_helper.rb
diff options
context:
space:
mode:
authoreregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-09-25 10:41:16 +0000
committereregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-09-25 10:41:16 +0000
commite87fb88be844f0fae736768846954b6f6f7dc7c3 (patch)
treecbe2ab069e40b5b7f3217ce95b793426b303a305 /spec/ruby/optional/capi/spec_helper.rb
parente59bf54b3a88d0465cca021afae7dc05b6db57a7 (diff)
Update to ruby/spec@241f9e7
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64831 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/ruby/optional/capi/spec_helper.rb')
-rw-r--r--spec/ruby/optional/capi/spec_helper.rb28
1 files changed, 19 insertions, 9 deletions
diff --git a/spec/ruby/optional/capi/spec_helper.rb b/spec/ruby/optional/capi/spec_helper.rb
index 25658122be..eda4964b69 100644
--- a/spec/ruby/optional/capi/spec_helper.rb
+++ b/spec/ruby/optional/capi/spec_helper.rb
@@ -16,24 +16,34 @@ def compile_extension(name)
debug = false
run_mkmf_in_process = RUBY_ENGINE == 'truffleruby'
- ext_dir = File.expand_path("../ext", __FILE__)
+ core_ext_dir = File.expand_path("../ext", __FILE__)
+
+ spec_caller_location = caller_locations.find { |c| c.path.end_with?('_spec.rb') }
+ spec_file_path = spec_caller_location.path
+ spec_ext_dir = File.expand_path("../ext", spec_file_path)
+
ext = "#{name}_spec"
lib = "#{object_path}/#{ext}.#{RbConfig::CONFIG['DLEXT']}"
ruby_header = "#{RbConfig::CONFIG['rubyhdrdir']}/ruby.h"
- libruby_so = RbConfig::CONFIG['LIBRUBY_SO'] if RbConfig::CONFIG["ENABLE_SHARED"] == "yes"
- if /mswin|mingw/ =~ RUBY_PLATFORM
- libruby_so = RbConfig::CONFIG["LIBRUBY"] if RbConfig::CONFIG["ENABLE_SHARED"] == "yes"
+
+ if RbConfig::CONFIG["ENABLE_SHARED"] == "yes"
+ if PlatformGuard.windows?
+ libruby_so = "#{RbConfig::CONFIG['bindir']}/#{RbConfig::CONFIG['LIBRUBY_SO']}"
+ else
+ libruby_so = "#{RbConfig::CONFIG['libdir']}/#{RbConfig::CONFIG['LIBRUBY_SO']}"
+ end
end
+
begin
mtime = File.mtime(lib)
rescue Errno::ENOENT
# not found, then compile
else
case # if lib is older than headers, source or libruby, then recompile
- when mtime <= File.mtime("#{ext_dir}/rubyspec.h")
- when mtime <= File.mtime("#{ext_dir}/#{ext}.c")
+ when mtime <= File.mtime("#{core_ext_dir}/rubyspec.h")
+ when mtime <= File.mtime("#{spec_ext_dir}/#{ext}.c")
when mtime <= File.mtime(ruby_header)
- when libruby_so && mtime <= File.mtime("#{RbConfig::CONFIG['libdir']}/#{libruby_so}")
+ when libruby_so && mtime <= File.mtime(libruby_so)
else
return lib # up-to-date
end
@@ -43,8 +53,8 @@ def compile_extension(name)
tmpdir = tmp("cext_#{name}")
Dir.mkdir(tmpdir)
begin
- ["rubyspec.h", "#{ext}.c"].each do |file|
- cp "#{ext_dir}/#{file}", "#{tmpdir}/#{file}"
+ ["#{core_ext_dir}/rubyspec.h", "#{spec_ext_dir}/#{ext}.c"].each do |file|
+ cp file, "#{tmpdir}/#{File.basename(file)}"
end
Dir.chdir(tmpdir) do