ryb 0.2.0.3 → 0.2.1.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/Gemfile.lock +4 -4
- data/lib/ryb/dependency.rb +12 -1
- data/lib/ryb/dsl.rb +12 -2
- data/lib/ryb/gem.rb +1 -1
- data/lib/ryb/ninja.rb +14 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f669ebc63d3f7cd43065a2fa8f720c5e766d473d
|
4
|
+
data.tar.gz: b8173d293781e933906d75631e9e8d7d3ebf4724
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0e7d3cac2c0d76bfd21d46ec982aa7c1ccd24edf55703bcba05e69ed4c1fed78d4d8769ebfcd3dcd961ae92c5a7fee5e9229cc5c5dbbd14db5c6094cf076ea4
|
7
|
+
data.tar.gz: a00d6dee9ce6f61d26a97cb31d08a03cd9986cfffd0fac16a50b354acbc41d792868ea97cf9129243ef8cf764fb42e254713a8a1de8aed4500539fbe07349280
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ryb (0.2.0
|
4
|
+
ryb (0.2.1.0)
|
5
5
|
gli (~> 2)
|
6
6
|
hashie
|
7
7
|
ninja-gen
|
@@ -11,7 +11,7 @@ PATH
|
|
11
11
|
GEM
|
12
12
|
remote: https://rubygems.org/
|
13
13
|
specs:
|
14
|
-
aruba (0.
|
14
|
+
aruba (0.14.0)
|
15
15
|
childprocess (~> 0.5.6)
|
16
16
|
contracts (~> 0.9)
|
17
17
|
cucumber (>= 1.3.19)
|
@@ -41,7 +41,7 @@ GEM
|
|
41
41
|
hashie (3.4.3)
|
42
42
|
multi_json (1.11.2)
|
43
43
|
multi_test (0.1.2)
|
44
|
-
ninja-gen (0.1.
|
44
|
+
ninja-gen (0.1.3.0)
|
45
45
|
pour (0.0.3.1)
|
46
46
|
typespec
|
47
47
|
rspec (3.4.0)
|
@@ -58,7 +58,7 @@ GEM
|
|
58
58
|
rspec-support (~> 3.4.0)
|
59
59
|
rspec-support (3.4.1)
|
60
60
|
thor (0.19.1)
|
61
|
-
typespec (0.1.
|
61
|
+
typespec (0.1.1.1)
|
62
62
|
visual_studio (0.1.0.2)
|
63
63
|
|
64
64
|
PLATFORMS
|
data/lib/ryb/dependency.rb
CHANGED
@@ -17,13 +17,24 @@ module Ryb
|
|
17
17
|
|
18
18
|
class ExternalDependency < Dependency
|
19
19
|
property :lib_or_framework, Typespec.string
|
20
|
+
property :mangler, Typespec.or[Typespec.fn, Typespec.nothing]
|
20
21
|
|
21
|
-
def initialize(lib_or_framework)
|
22
|
+
def initialize(lib_or_framework, opts={})
|
22
23
|
self.lib_or_framework = lib_or_framework
|
24
|
+
self.mangler = opts[:mangler]
|
25
|
+
end
|
26
|
+
|
27
|
+
def mangled(*triplet)
|
28
|
+
if self.mangler()
|
29
|
+
self.mangler.(triplet, self.lib_or_framework())
|
30
|
+
else
|
31
|
+
self.lib_or_framework
|
32
|
+
end
|
23
33
|
end
|
24
34
|
|
25
35
|
alias :eql? :==
|
26
36
|
def ==(other)
|
37
|
+
return false unless self.mangler == other.mangler
|
27
38
|
self.lib_or_framework == other.lib_or_framework
|
28
39
|
end
|
29
40
|
end
|
data/lib/ryb/dsl.rb
CHANGED
@@ -147,9 +147,19 @@ module Ryb
|
|
147
147
|
@spec.dependencies = @spec.dependencies + [Ryb::InternalDependency.new(product)]
|
148
148
|
end
|
149
149
|
|
150
|
-
def
|
150
|
+
def add_dependencies(products)
|
151
|
+
[*products].each(&self.add_dependency)
|
152
|
+
end
|
153
|
+
|
154
|
+
def add_external_dependency(lib_or_framework, opts={})
|
151
155
|
@spec.dependencies ||= []
|
152
|
-
@spec.dependencies = @spec.dependencies + [Ryb::ExternalDependency.new(lib_or_framework)]
|
156
|
+
@spec.dependencies = @spec.dependencies + [Ryb::ExternalDependency.new(lib_or_framework, opts)]
|
157
|
+
end
|
158
|
+
|
159
|
+
def add_external_dependencies(libs_and_frameworks, opts={})
|
160
|
+
[*libs_and_frameworks].each do |lib_or_framework|
|
161
|
+
self.add_external_dependency(lib_or_framework, opts)
|
162
|
+
end
|
153
163
|
end
|
154
164
|
end
|
155
165
|
|
data/lib/ryb/gem.rb
CHANGED
data/lib/ryb/ninja.rb
CHANGED
@@ -18,6 +18,9 @@ module Ryb
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def generate
|
21
|
+
@ninjafile.rule "mv", "move /Y $in $out"
|
22
|
+
@ninjafile.rule "cp", "move /Y /B $in $out"
|
23
|
+
|
21
24
|
@ninjafile.save(@path)
|
22
25
|
end
|
23
26
|
|
@@ -101,7 +104,7 @@ module Ryb
|
|
101
104
|
|
102
105
|
@ninjafile.rule(
|
103
106
|
"so_#{namespace}",
|
104
|
-
"ninja -t msvc -e #{env_block} -- link.exe $#{namespace}_ldflags_sys $#{namespace}_ldflags /DLL /OUT:$out $#{namespace}_deps $in"
|
107
|
+
"ninja -t msvc -e #{env_block} -- link.exe $#{namespace}_ldflags_sys $#{namespace}_ldflags /DLL /IMPLIB:$#{namespace}_as_linkable /OUT:$out $#{namespace}_deps $in"
|
105
108
|
)
|
106
109
|
|
107
110
|
c_sources = sources.select{|src| src.language == :c}.map(&:path).map{|src| "#@root/#{src}"}
|
@@ -115,12 +118,15 @@ module Ryb
|
|
115
118
|
case product
|
116
119
|
when Ryb::Application
|
117
120
|
@ninjafile.build "ld_#{namespace}", {artifacts[0] => c_objects + cxx_objects}
|
121
|
+
@ninjafile.alias namespace, artifacts[0]
|
118
122
|
when Ryb::Library
|
119
123
|
case product.linkage
|
120
124
|
when :static
|
121
125
|
@ninjafile.build "ar_#{namespace}", {artifacts[0] => c_objects + cxx_objects}
|
126
|
+
@ninjafile.alias namespace, artifacts[0]
|
122
127
|
when :dynamic
|
123
128
|
@ninjafile.build "so_#{namespace}", {artifacts[1] => c_objects + cxx_objects}
|
129
|
+
@ninjafile.alias namespace, artifacts[1]
|
124
130
|
end
|
125
131
|
end
|
126
132
|
end
|
@@ -144,7 +150,9 @@ module Ryb
|
|
144
150
|
when Ryb::InternalDependency
|
145
151
|
"${#{dep.product}_#{tripletised.triplet.join('_')}_as_linkable}"
|
146
152
|
when Ryb::ExternalDependency
|
147
|
-
|
153
|
+
triplet = [tripletised.configuration, tripletised.platform, tripletised.architecture].map(&:name).map(&:to_sym)
|
154
|
+
mangled = dep.mangled(*triplet)
|
155
|
+
"#{mangled}.lib"
|
148
156
|
end
|
149
157
|
end
|
150
158
|
end
|
@@ -174,6 +182,7 @@ module Ryb
|
|
174
182
|
cflags_for_configuration(tripletised.configuration) +
|
175
183
|
cflags_for_platform(tripletised.platform) +
|
176
184
|
cflags_for_architecture(tripletised.architecture)
|
185
|
+
flags += VisualStudio::Compiler.include_paths_to_flags(project.paths.includes) if project.paths
|
177
186
|
flags += VisualStudio::Compiler.include_paths_to_flags(product.paths.includes) if product.paths
|
178
187
|
flags += VisualStudio::Compiler.defines_to_flags(project.defines)
|
179
188
|
flags += VisualStudio::Compiler.defines_to_flags(product.defines)
|
@@ -185,11 +194,13 @@ module Ryb
|
|
185
194
|
%w{/nologo}
|
186
195
|
end
|
187
196
|
|
188
|
-
def ldflags_for_product(
|
197
|
+
def ldflags_for_product(project, product, tripletised)
|
189
198
|
flags = VisualStudio::Linker::STANDARD_FLAGS +
|
190
199
|
ldflags_for_configuration(tripletised.configuration) +
|
191
200
|
ldflags_for_platform(tripletised.platform) +
|
192
201
|
ldflags_for_architecture(tripletised.architecture)
|
202
|
+
flags += VisualStudio::Linker.library_paths_to_flags(project.paths.libraries) if project.paths
|
203
|
+
flags += VisualStudio::Linker.library_paths_to_flags(product.paths.libraries) if product.paths
|
193
204
|
flags += VisualStudio::Linker.architecture_to_flags(tripletised.architecture.name.to_sym)
|
194
205
|
# TODO: Linkage.
|
195
206
|
flags
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ryb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.0
|
4
|
+
version: 0.2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gli
|