rscons 0.0.1 → 0.0.2

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.
@@ -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: