ffi-compiler2 2.2.2 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ffi-compiler.gemspec +1 -1
- data/lib/ffi-compiler/compile_task.rb +4 -2
- data/lib/ffi-compiler/multi_file_task.rb +41 -0
- data/lib/ffi-compiler/shell.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c39f8a30b5d7c8773de4df502f0dd5224979e2a6371f5e7eae81df1d2e83c60
|
4
|
+
data.tar.gz: f873026f6d59717dfeee11bde7de662a17ccdf66b5f1ad62a608aa3073acaadd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6db63080494ace5f42104d55e273c9e1f977d80ea0122873eac11b1e7c13671e01fed458026dbba2602fa3392fdf7706354067b23cf79bda22873b9880a101e
|
7
|
+
data.tar.gz: 37ed00181d8e1572f6504295af54e855fbd08e5a4adedf38449dbe12d0943126adc801683c6290072c49102a17b00a803357f6d0c4d38d3d66119a316cc64c38
|
data/ffi-compiler.gemspec
CHANGED
@@ -6,6 +6,7 @@ require 'tmpdir'
|
|
6
6
|
require 'rbconfig'
|
7
7
|
require_relative 'platform'
|
8
8
|
require_relative 'shell'
|
9
|
+
require_relative 'multi_file_task'
|
9
10
|
|
10
11
|
module FFI
|
11
12
|
module Compiler
|
@@ -175,8 +176,9 @@ module FFI
|
|
175
176
|
obj_files.map { |f| File.dirname(f) }.sort.uniq.map { |d| directory d }
|
176
177
|
|
177
178
|
desc "Build dynamic library"
|
178
|
-
|
179
|
-
|
179
|
+
MultiFileTask.define_task(lib_name => src_files + obj_files) do |t|
|
180
|
+
objs = t.prerequisites.select { |file| file.end_with?('.o') }
|
181
|
+
sh "#{ld} #{so_flags} -o #{shellescape(t.name)} #{shelljoin(objs)} #{ld_flags} #{libs}"
|
180
182
|
end
|
181
183
|
CLEAN.include(lib_name)
|
182
184
|
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'rake'
|
2
|
+
|
3
|
+
module FFI
|
4
|
+
module Compiler
|
5
|
+
class MultiFileTask < Rake::MultiTask
|
6
|
+
def needed?
|
7
|
+
begin
|
8
|
+
@application.options.build_all || out_of_date?(File.mtime(name))
|
9
|
+
rescue Errno::ENOENT
|
10
|
+
true
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def timestamp
|
15
|
+
begin
|
16
|
+
File.mtime(name)
|
17
|
+
rescue Errno::ENOENT
|
18
|
+
Rake::LATE
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def invoke_with_call_chain(task_args, invocation_chain)
|
23
|
+
return unless needed?
|
24
|
+
super
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def out_of_date?(timestamp)
|
30
|
+
all_prerequisite_tasks.any? do |prereq|
|
31
|
+
prereq_task = application[prereq, @scope]
|
32
|
+
if prereq_task.instance_of?(Rake::FileTask)
|
33
|
+
File.exist?(prereq_task.name) && prereq_task.timestamp > timestamp
|
34
|
+
else
|
35
|
+
prereq_task.needed?
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/ffi-compiler/shell.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ffi-compiler2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dāvis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-02-
|
11
|
+
date: 2024-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -83,6 +83,7 @@ files:
|
|
83
83
|
- lib/ffi-compiler/fake_ffi/ffi-compiler/loader.rb
|
84
84
|
- lib/ffi-compiler/fake_ffi/ffi.rb
|
85
85
|
- lib/ffi-compiler/loader.rb
|
86
|
+
- lib/ffi-compiler/multi_file_task.rb
|
86
87
|
- lib/ffi-compiler/platform.rb
|
87
88
|
- lib/ffi-compiler/shell.rb
|
88
89
|
- lib/ffi-compiler/task.rb
|