rscons 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MTMyNzAyZWY0MzY3YWExYWUzNmFhZjBmNjVkMGUzNmRiZGUxZjZkNQ==
5
+ data.tar.gz: !binary |-
6
+ MTc4NDU4ODYwYjA4ZjQ4ZDhlNjgzZWEzYTdjZTg2Y2QyZTZhMzQzNA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ Mjc2M2EzY2E3ZDE3NWVhMDlhM2RlYWNlMWRlYWQzODVmYmI5NjdjM2Q0ZGY5
10
+ ZGQzNjg4MjJkY2Y5ZTJkNzRjMzBiZGQyNDQ1YTFiZjE0OTQ4ZjM5ZjYwODFk
11
+ NzBkZGViZDQ4YzhhZmUzZmViMGIzNjQ4Y2Q3M2ZiNjA0Y2ViNzA=
12
+ data.tar.gz: !binary |-
13
+ NDdmMjE3NDQ2ZWI4YmQ1MzdkNWNjZjJiNWQxZjJlMDU1MDcwZDQ2OGQyOWMx
14
+ NzM4MDlmMzEwYmVkOGJjZWFhNzVhY2Q0MGM2YTAwYmZjNmI2Mzg3ZWFiOGI4
15
+ ZTc2MDk3ZTgyZTgxMTliYTJhMTU1MDU3YWIzMDBmMTgwNTZiNjI=
@@ -8,9 +8,9 @@ module Rscons
8
8
  'OBJSUFFIX' => '.o',
9
9
  'LIBSUFFIX' => '.a',
10
10
  'LDFLAGS' => [],
11
- 'LIBPATHS' => [],
11
+ 'LIBPATH' => [],
12
12
  'LIBS' => [],
13
- 'LDCOM' => ['$LD', '-o', '$TARGET', '$LDFLAGS', '$SOURCES', '-L$[LIBPATHS]', '-l$[LIBS]']
13
+ 'LDCOM' => ['$LD', '-o', '$TARGET', '$LDFLAGS', '$SOURCES', '-L$[LIBPATH]', '-l$[LIBS]']
14
14
  }
15
15
  end
16
16
 
@@ -20,7 +20,7 @@ module Rscons
20
20
  @varset = VarSet.new(variables)
21
21
  @targets = {}
22
22
  @builders = {}
23
- @build_dirs = {}
23
+ @build_dirs = []
24
24
  @varset[:exclude_builders] ||= []
25
25
  unless @varset[:exclude_builders] == :all
26
26
  exclude_builders = Set.new(@varset[:exclude_builders] || [])
@@ -52,9 +52,6 @@ module Rscons
52
52
  @builders.each do |builder_name, builder|
53
53
  env.add_builder(builder)
54
54
  end
55
- @build_dirs.each do |src_dir, obj_dir|
56
- env.build_dir(src_dir, obj_dir)
57
- end
58
55
  env.append(@varset)
59
56
  env.append(variables)
60
57
 
@@ -79,7 +76,9 @@ module Rscons
79
76
  # Specify a build directory for this Environment.
80
77
  # Source files from src_dir will produce object files under obj_dir.
81
78
  def build_dir(src_dir, obj_dir)
82
- @build_dirs[src_dir.gsub('\\', '/')] = obj_dir.gsub('\\', '/')
79
+ src_dir = src_dir.gsub('\\', '/') if src_dir.is_a?(String)
80
+ obj_dir = obj_dir.gsub('\\', '/')
81
+ @build_dirs << [src_dir, obj_dir]
83
82
  end
84
83
 
85
84
  # Return the file name to be built from source_fname with suffix suffix.
@@ -89,7 +88,12 @@ module Rscons
89
88
  def get_build_fname(source_fname, suffix)
90
89
  build_fname = source_fname.set_suffix(suffix).gsub('\\', '/')
91
90
  @build_dirs.each do |src_dir, obj_dir|
92
- build_fname.sub!(/^#{src_dir}\//, "#{obj_dir}/")
91
+ if src_dir.is_a?(Regexp)
92
+ build_fname.sub!(src_dir, obj_dir)
93
+ else
94
+ build_fname.sub!(/^#{src_dir}\//, "#{obj_dir}/")
95
+ end
96
+ build_fname.gsub!('\\', '/')
93
97
  end
94
98
  FileUtils.mkdir_p(File.dirname(build_fname))
95
99
  build_fname
@@ -212,10 +216,11 @@ module Rscons
212
216
  if line =~ /^(.*)\\\s*$/
213
217
  buildup += ' ' + $1
214
218
  else
215
- if line =~ /^(.*): (.*)$/
216
- target, tdeps = $1.strip, $2
217
- if target == target
218
- deps += tdeps.split(' ').map(&:strip)
219
+ buildup += ' ' + line
220
+ if buildup =~ /^(.*): (.*)$/
221
+ mf_target, mf_deps = $1.strip, $2
222
+ if mf_target == target
223
+ deps += mf_deps.split(' ').map(&:strip)
219
224
  end
220
225
  end
221
226
  buildup = ''
@@ -6,6 +6,7 @@ class String
6
6
  def has_suffix?(suffix)
7
7
  if suffix
8
8
  suffix = [suffix] if suffix.is_a?(String)
9
+ suffix = suffix.flatten
9
10
  suffix.find {|s| self.end_with?(s)}
10
11
  end
11
12
  end
@@ -1,4 +1,4 @@
1
1
  module Rscons
2
2
  # gem version
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
@@ -10,7 +10,8 @@ Gem::Specification.new do |gem|
10
10
  gem.email = ["jholtrop@gmail.com"]
11
11
  gem.description = %q{Software construction library inspired by SCons and implemented in Ruby}
12
12
  gem.summary = %q{Software construction library inspired by SCons and implemented in Ruby}
13
- gem.homepage = ""
13
+ gem.homepage = "https://github.com/holtrop/rscons"
14
+ gem.license = 'MIT'
14
15
 
15
16
  gem.files = `git ls-files`.split($/)
16
17
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -0,0 +1,24 @@
1
+ module Rscons
2
+ describe Environment do
3
+ describe '.parse_makefile_deps' do
4
+ it 'handles dependencies on one line' do
5
+ File.should_receive(:read).with('makefile').and_return(<<EOS)
6
+ module.o: source.cc
7
+ EOS
8
+ env = Environment.new
9
+ env.parse_makefile_deps('makefile', 'module.o').should == ['source.cc']
10
+ end
11
+
12
+ it 'handles dependencies split across many lines' do
13
+ File.should_receive(:read).with('makefile').and_return(<<EOS)
14
+ module.o: module.c \\
15
+ module.h \\
16
+ other.h
17
+ EOS
18
+ env = Environment.new
19
+ env.parse_makefile_deps('makefile', 'module.o').should == [
20
+ 'module.c', 'module.h', 'other.h']
21
+ end
22
+ end
23
+ end
24
+ end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rscons
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.0.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Josh Holtrop
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-08-04 00:00:00.000000000 Z
11
+ date: 2013-08-05 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rspec-core
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rspec-mocks
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ! '>='
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ! '>='
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rspec-expectations
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ! '>='
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ! '>='
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rspec
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ! '>='
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ! '>='
76
67
  - !ruby/object:Gem::Version
@@ -78,7 +69,6 @@ dependencies:
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: rake
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ! '>='
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ! '>='
92
81
  - !ruby/object:Gem::Version
@@ -94,7 +83,6 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: simplecov
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - ! '>='
100
88
  - !ruby/object:Gem::Version
@@ -102,7 +90,6 @@ dependencies:
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
94
  - - ! '>='
108
95
  - !ruby/object:Gem::Version
@@ -110,7 +97,6 @@ dependencies:
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: json
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
101
  - - ! '>='
116
102
  - !ruby/object:Gem::Version
@@ -118,7 +104,6 @@ dependencies:
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
108
  - - ! '>='
124
109
  - !ruby/object:Gem::Version
@@ -126,7 +111,6 @@ dependencies:
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: rdoc
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
115
  - - ! '>='
132
116
  - !ruby/object:Gem::Version
@@ -134,7 +118,6 @@ dependencies:
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
122
  - - ! '>='
140
123
  - !ruby/object:Gem::Version
@@ -142,7 +125,6 @@ dependencies:
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: yard
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
129
  - - ! '>='
148
130
  - !ruby/object:Gem::Version
@@ -150,7 +132,6 @@ dependencies:
150
132
  type: :development
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
136
  - - ! '>='
156
137
  - !ruby/object:Gem::Version
@@ -195,38 +176,34 @@ files:
195
176
  - lib/rscons/version.rb
196
177
  - rscons.gemspec
197
178
  - spec/build_tests_spec.rb
179
+ - spec/rscons/environment_spec.rb
198
180
  - spec/spec_helper.rb
199
- homepage: ''
200
- licenses: []
181
+ homepage: https://github.com/holtrop/rscons
182
+ licenses:
183
+ - MIT
184
+ metadata: {}
201
185
  post_install_message:
202
186
  rdoc_options: []
203
187
  require_paths:
204
188
  - lib
205
189
  required_ruby_version: !ruby/object:Gem::Requirement
206
- none: false
207
190
  requirements:
208
191
  - - ! '>='
209
192
  - !ruby/object:Gem::Version
210
193
  version: '0'
211
- segments:
212
- - 0
213
- hash: -2972754259909908675
214
194
  required_rubygems_version: !ruby/object:Gem::Requirement
215
- none: false
216
195
  requirements:
217
196
  - - ! '>='
218
197
  - !ruby/object:Gem::Version
219
198
  version: '0'
220
- segments:
221
- - 0
222
- hash: -2972754259909908675
223
199
  requirements: []
224
200
  rubyforge_project:
225
- rubygems_version: 1.8.23
201
+ rubygems_version: 2.0.3
226
202
  signing_key:
227
- specification_version: 3
203
+ specification_version: 4
228
204
  summary: Software construction library inspired by SCons and implemented in Ruby
229
205
  test_files:
230
206
  - spec/build_tests_spec.rb
207
+ - spec/rscons/environment_spec.rb
231
208
  - spec/spec_helper.rb
232
209
  has_rdoc: