rakepp 0.1.6.2 → 0.1.6.3

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ require 'rake/gempackagetask'
4
4
  desc "Default Task"
5
5
  task :default => :package
6
6
 
7
- PKG_VERSION = '0.1.6.2'
7
+ PKG_VERSION = '0.1.6.3'
8
8
  PKG_FILES = FileList[
9
9
  'lib/**/*.rb',
10
10
  '*.xml',
@@ -7,7 +7,7 @@ class BinaryLib
7
7
  @libs = libs
8
8
  @includes = includes
9
9
  @path = path
10
- compiler.addTasks(self)
10
+ compiler.add_tasks(self)
11
11
  end
12
12
 
13
13
  end
@@ -7,19 +7,19 @@ class Compiler
7
7
  @compileflags = compileflags
8
8
  end
9
9
 
10
- def addTasks(artifact)
10
+ def add_tasks(artifact)
11
11
  if (artifact.instance_of?(Exe)) then
12
- addExeTasks(artifact)
12
+ add_exe_tasks(artifact)
13
13
  elsif (artifact.instance_of?(SourceLib)) then
14
- addSourceLibTasks(artifact)
14
+ add_source_lib_tasks(artifact)
15
15
  elsif (artifact.instance_of?(ObjectFile)) then
16
- addObjectTasks(artifact)
16
+ add_object_tasks(artifact)
17
17
  elsif (artifact.instance_of?(Framework)) then
18
- addFrameworkTasks(artifact)
18
+ add_framework_tasks(artifact)
19
19
  elsif (artifact.instance_of?(BinaryLib)) then
20
- addBinaryLibTasks(artifact)
20
+ add_binary_lib_tasks(artifact)
21
21
  elsif (artifact.instance_of?(SharedLib)) then
22
- addSharedLibTasks(artifact)
22
+ add_shared_lib_tasks(artifact)
23
23
  else
24
24
  raise "unknown type " + artifact.to_s
25
25
  end
@@ -4,7 +4,7 @@ class CrossTools
4
4
  @compilerHash = compilerHash
5
5
  end
6
6
 
7
- def sourceLib(compilers, base, name, sources, dependencies, includes, privateDefines=[], forceLib=false)
7
+ def source_lib(compilers, base, name, sources, dependencies, includes, privateDefines=[], forceLib=false)
8
8
  todo = get_compilers(compilers)
9
9
  return todo.inject(Hash.new) do |memo, pair|
10
10
  key = pair[0]
@@ -3,55 +3,57 @@ require 'progressbar'
3
3
  require 'yaml'
4
4
 
5
5
  class GccCompiler < Compiler
6
- def addObjectTasks(artifact)
6
+ def add_object_tasks(artifact)
7
7
  outName = File.join(artifact.targetDir, artifact.source.to_o)
8
+ outDir = File.dirname(outName)
9
+
8
10
  artifact.outFile = outName
9
11
  depFile = artifact.dep_file
10
12
 
11
- depFileTask = file depFile => artifact.source.fullPath do | task |
12
- calcDependencies(artifact, depFile)
13
- end
14
-
15
- recreateDepFileTask = task "#{depFile}.recreate" do | task |
16
- if (!File.exists?(depFile))
17
- calcDependencies(artifact, depFile)
18
- end
19
- deps = YAML.load_file(depFile)
20
- missing = deps.inject(false) do |memo, d|
21
- memo || !File.exists?(d)
22
- end
23
- if (missing)
24
- calcDependencies(artifact, depFile)
25
- deps = YAML.load_file(depFile)
26
- end
27
- depFileTask.enhance(deps)
28
- end
13
+ depFileTask = file depFile => artifact.source.fullPath { | task | calc_dependencies(artifact, depFile) }
14
+ recreateDepFileTask = recreate_task(depFile, artifact, depFileTask)
29
15
 
30
16
  outFile = file outName => ["#{outName}.apply"] do | task |
31
- command = "#{compiler(artifact)} -c #{defines(artifact)} #{includes(artifact)} -o #{outName} #{artifact.source.fullPath}"
32
- sh command
17
+ sh "#{compiler(artifact)} -c #{defines(artifact)} #{includes(artifact)} -o #{outName} #{artifact.source.fullPath}"
33
18
  end
34
19
 
35
- applyTask = task "#{outFile}.apply" => recreateDepFileTask do |task|
20
+ applyTask = apply_task(outFile, recreateDepFileTask, depFile)
21
+ outFile.enhance([applyTask])
22
+ dirs = [artifact.targetDir, outDir]
23
+ dirs.each { |d| directory d }
24
+ [outFile, depFileTask, recreateDepFileTask].each { |task| task.enhance(dirs) }
25
+ All.addObject(artifact)
26
+ All.addDepFile(depFile)
27
+ end
28
+
29
+ def apply_task(outFile, recreateDepFileTask, depFile)
30
+ task "#{outFile}.apply" => recreateDepFileTask do |task|
36
31
  deps = YAML.load_file(depFile)
37
32
  if (deps)
38
33
  outFile.enhance(deps)
39
34
  end
40
35
  outFile.enhance([depFile])
41
36
  end
37
+ end
42
38
 
43
- outFile.enhance([applyTask])
44
-
45
- directory artifact.targetDir
46
- directory File.dirname(outName)
47
-
48
- dirs = [artifact.targetDir, File.dirname(outName)]
49
- outFile.enhance(dirs)
50
- depFileTask.enhance(dirs)
51
- recreateDepFileTask.enhance(dirs)
39
+ def recreate_task(depFile, artifact, depFileTask)
40
+ task "#{depFile}.recreate" do | task |
41
+ if (!File.exists?(depFile))
42
+ calc_dependencies(artifact, depFile)
43
+ end
44
+ deps = YAML.load_file(depFile)
45
+ if (dep_missing?(deps))
46
+ calc_dependencies(artifact, depFile)
47
+ deps = YAML.load_file(depFile)
48
+ end
49
+ depFileTask.enhance(deps)
50
+ end
51
+ end
52
52
 
53
- All.addObject(artifact)
54
- All.addDepFile(depFile)
53
+ def dep_missing?(deps)
54
+ deps.inject(false) do |memo, d|
55
+ memo || !File.exists?(d)
56
+ end
55
57
  end
56
58
 
57
59
  def compiler(artifact)
@@ -80,7 +82,7 @@ class GccCompiler < Compiler
80
82
  return res
81
83
  end
82
84
 
83
- def calcDependencies(artifact, taskToEnhance)
85
+ def calc_dependencies(artifact, taskToEnhance)
84
86
  source = artifact.source
85
87
  command = "#{compiler(artifact)} -M #{defines(artifact)} #{includes(artifact)} #{source.fullPath}"
86
88
  deps = `#{command}`
@@ -97,13 +99,10 @@ class GccCompiler < Compiler
97
99
  return "ar -r #{outName}"
98
100
  end
99
101
 
100
- def addSourceLibTasks(artifact)
102
+ def add_source_lib_tasks(artifact)
101
103
  outDir = File.join(@targetDir, artifact.name)
102
104
 
103
- objects = []
104
- artifact.sources.each do |source|
105
- objects << ObjectFile.new(self, source, outDir, artifact.tr_includes, artifact.privateDefines).outFile
106
- end
105
+ objects = artifact.sources.map { |source| ObjectFile.new(self, source, outDir, artifact.tr_includes, artifact.privateDefines).outFile }
107
106
 
108
107
  libsName = File.join(@targetDir, 'libs')
109
108
  outName = File.join(libsName, "lib#{artifact.name}.a")
@@ -111,113 +110,90 @@ class GccCompiler < Compiler
111
110
  artifact.outFile = outName
112
111
  desc "Create SourceLib #{outName}"
113
112
  theTask = file outName => objects do | task |
114
- command = start_of_source_lib_command(outName, artifact)
115
- objects.each do | o |
116
- command += " #{o}"
117
- end
118
- sh command
113
+ sh objects.inject(start_of_source_lib_command(outName, artifact)) { | command, o | "#{command} #{o}" }
119
114
  end
120
115
 
121
- addTransitiveLibraryPrerequisites(theTask, artifact)
116
+ add_transitive_library_prerequisites(theTask, artifact)
122
117
 
123
118
  file outName => [libsName]
124
119
  All.add(outName)
125
120
  directory libsName
126
121
  end
127
122
 
128
- def addSharedLibTasks(artifact)
129
- outDir = File.join(@targetDir, artifact.name)
130
- objects = []
131
- artifact.sources.each do |source|
132
- objects << ObjectFile.new(self, source, outDir, artifact.tr_includes, artifact.privateDefines).outFile
133
- end
134
- libsName = File.join(@targetDir, 'libs')
135
- outName = File.join(libsName, "#{artifact.name}.#{shared_extension()}")
136
- artifact.outFile = outName
137
- desc "Create SharedLib #{outName}"
138
- theTask = file outName => objects do | task |
139
- command = start_of_shared_lib_command(outName, artifact)
140
- objects.each do |o|
141
- command += " #{o}"
142
- end
123
+ def add_shared_lib_tasks(artifact)
124
+ outDir = File.join(@targetDir, artifact.name)
125
+ objects = artifact.sources.map { |source| ObjectFile.new(self, source, outDir, artifact.tr_includes, artifact.privateDefines).outFile }
143
126
 
144
- LibHelper.tr_libs(artifact.libs).each do |lib|
145
- command += addLib(task, lib)
127
+ libsName = File.join(@targetDir, 'libs')
128
+ outName = File.join(libsName, "#{artifact.name}.#{shared_extension()}")
129
+ artifact.outFile = outName
130
+ desc "Create SharedLib #{outName}"
131
+ theTask = file outName => objects do | task |
132
+ command = start_of_shared_lib_command(outName, artifact)
133
+ objects.each { |o| command += " #{o}" }
134
+ LibHelper.tr_libs(artifact.libs).each { |lib| command += add_lib(task, lib) }
135
+ command += " -o #{outName}"
136
+ sh command
146
137
  end
147
138
 
148
- command += " -o #{outName}"
149
- sh command
150
- end
151
-
152
- addTransitiveLibraryPrerequisites(theTask, artifact)
153
-
154
- file outName => [libsName]
155
- All.add(outName)
156
- directory libsName
157
- end
158
-
159
- def addBinaryLibTasks(artifact)
160
- artifact.outFile = "lib#{artifact.name}.a"
161
- end
162
-
163
- def addFrameworkTasks(artifact)
164
- artifact.outFile = artifact.name
165
- end
139
+ add_transitive_library_prerequisites(theTask, artifact)
166
140
 
141
+ file outName => [libsName]
142
+ All.add(outName)
143
+ directory libsName
144
+ end
167
145
 
168
- def addExeTasks(artifact)
169
- outDir = File.join(@targetDir, artifact.name)
146
+ def add_binary_lib_tasks(artifact)
147
+ artifact.outFile = "lib#{artifact.name}.a"
148
+ end
170
149
 
171
- objects = []
172
- artifact.sources.each do |source|
173
- objects << ObjectFile.new(self, source, outDir, artifact.tr_includes).outFile
150
+ def add_framework_tasks(artifact)
151
+ artifact.outFile = artifact.name
174
152
  end
175
153
 
176
- exesName = File.join(@targetDir, 'exes')
177
- artifact.outFile = File.join(exesName, artifact.name + '.exe')
178
- desc "Create Exe #{artifact.outFile}"
179
- theTask = file artifact.outFile => objects do | task |
180
- command = "g++ #{compileflags} -o #{artifact.outFile}"
181
- objects.each do |o|
182
- command += " #{o}"
154
+ def add_exe_tasks(artifact)
155
+ outDir = File.join(@targetDir, artifact.name)
156
+ objects = artifact.sources.map { |source| ObjectFile.new(self, source, outDir, artifact.tr_includes).outFile }
157
+ exesName = File.join(@targetDir, 'exes')
158
+ artifact.outFile = File.join(exesName, artifact.name + '.exe')
159
+ desc "Create Exe #{artifact.outFile}"
160
+ theTask = file artifact.outFile => objects do | task |
161
+ command = "g++ #{compileflags} -o #{artifact.outFile}"
162
+ objects.each { |o| command += " #{o}" }
163
+ command += start_of_libs()
164
+ LibHelper.tr_libs(artifact.libs).each { |lib| command += add_lib(task, lib) }
165
+ command += end_of_libs()
166
+ sh command
167
+ do_additional_work_for_exe(artifact)
183
168
  end
184
169
 
185
- command += startOfLibs
186
- LibHelper.tr_libs(artifact.libs).each do |lib|
187
- command += addLib(task, lib)
188
- end
189
- command += endOfLibs
170
+ add_transitive_library_prerequisites(theTask, artifact)
190
171
 
191
- sh command
192
- do_additional_work_for_exe(artifact)
172
+ file artifact.outFile => [exesName]
173
+ All.add(artifact.outFile)
174
+ directory exesName
193
175
  end
194
176
 
195
- addTransitiveLibraryPrerequisites(theTask, artifact)
196
-
197
- file artifact.outFile => [exesName]
198
- All.add(artifact.outFile)
199
- directory exesName
200
- end
201
- def startOfLibs
177
+ def start_of_libs()
202
178
  return ''
203
179
  end
204
- def endOfLibs
180
+ def end_of_libs()
205
181
  return ''
206
182
  end
207
183
  def do_additional_work_for_exe(artifact)
208
184
  end
209
185
 
210
- def addTransitiveLibraryPrerequisites(theTask, artifact)
186
+ def add_transitive_library_prerequisites(theTask, artifact)
211
187
  LibHelper.tr_libs(artifact.libs).each do |lib|
212
188
  theTask.prerequisites << lib.outFile unless lib.kind_of?(BinaryLib)
213
189
  end
214
190
  end
215
191
 
216
- def addLib(task, lib)
192
+ def add_lib(task, lib)
217
193
  if (lib.instance_of?(BinaryLib)) then
218
194
  return " -L#{lib.path||'/usr/lib'} -l#{lib.name} "
219
195
  elsif (lib.instance_of?(SourceLib)) then
220
- return "#{addLibPrefix(lib)} -L#{targetDir}/libs -l#{lib.name} #{addLibSuffix(lib)}"
196
+ return "#{add_lib_prefix(lib)} -L#{targetDir}/libs -l#{lib.name} #{add_lib_suffix(lib)}"
221
197
  elsif (lib.instance_of?(SharedLib)) then
222
198
  return " #{targetDir}/libs/#{lib.name}.so "
223
199
  else
@@ -225,11 +201,11 @@ end
225
201
  end
226
202
  end
227
203
 
228
- def addLibPrefix(lib)
204
+ def add_lib_prefix(lib)
229
205
  return ''
230
206
  end
231
207
 
232
- def addLibSuffix(lib)
208
+ def add_lib_suffix(lib)
233
209
  return ''
234
210
  end
235
211
 
@@ -7,17 +7,17 @@ class GccWin32Compiler < GccCompiler
7
7
  return "g++ -shared -Wl,--out-implib=#{libName}.a"
8
8
  end
9
9
 
10
- def sharedExtension
10
+ def shared_extension()
11
11
  return 'dll'
12
12
  end
13
13
 
14
- def addLib(task, lib)
14
+ def add_lib(task, lib)
15
15
  if (lib.instance_of?(BinaryLib)) then
16
16
  return " -l#{lib.name}"
17
17
  elsif (lib.instance_of?(SourceLib)) then
18
18
  return " -L#{targetDir}/libs -l#{lib.name}"
19
19
  elsif (lib.instance_of?(SharedLib)) then
20
- return " #{targetDir}/libs/#{lib.name}.#{sharedExtension}.a"
20
+ return " #{targetDir}/libs/#{lib.name}.#{shared_extension()}.a"
21
21
  else
22
22
  raise "#{lib} not supported"
23
23
  end
@@ -8,12 +8,12 @@ class LinuxCompiler < GccCompiler
8
8
  return "g++ -shared"
9
9
  end
10
10
 
11
- def sharedExtension
11
+ def shared_extension()
12
12
  return 'so'
13
13
  end
14
14
 
15
15
 
16
- def addLibPrefix(lib)
16
+ def add_lib_prefix(lib)
17
17
  if lib.forceLib
18
18
  return '-Wl,--whole-archive'
19
19
  else
@@ -21,7 +21,7 @@ class LinuxCompiler < GccCompiler
21
21
  end
22
22
  end
23
23
 
24
- def addLibSuffix(lib)
24
+ def add_lib_suffix(lib)
25
25
  if lib.forceLib
26
26
  return '-Wl,--no-whole-archive'
27
27
  else
@@ -29,11 +29,11 @@ class LinuxCompiler < GccCompiler
29
29
  end
30
30
  end
31
31
 
32
- def startOfLibs
32
+ def start_of_libs()
33
33
  return ' -Wl,--start-group '
34
34
  end
35
35
 
36
- def endOfLibs
36
+ def end_of_libs()
37
37
  return ' -Wl,--end-group '
38
38
  end
39
39
 
@@ -6,7 +6,7 @@ class ObjectFile
6
6
  @targetDir = targetDir
7
7
  @includes = includes
8
8
  @privateDefines = privateDefines
9
- compiler.addTasks(self)
9
+ compiler.add_tasks(self)
10
10
  end
11
11
 
12
12
  def dep_file()
@@ -22,7 +22,7 @@ class OsxCompiler < GccCompiler
22
22
  return 'so'
23
23
  end
24
24
 
25
- def addLib(task, lib)
25
+ def add_lib(task, lib)
26
26
  if (lib.instance_of?(Framework)) then
27
27
  return " -framework #{lib.name}"
28
28
  else
@@ -14,7 +14,7 @@ class SourceLib
14
14
  end
15
15
  @privateDefines = privateDefines
16
16
  @forceLib = forceLib
17
- compiler.addTasks(self)
17
+ compiler.add_tasks(self)
18
18
  end
19
19
 
20
20
  def tr_includes
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rakepp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6.2
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 6
9
+ - 3
10
+ version: 0.1.6.3
5
11
  platform: ruby
6
12
  authors:
7
13
  - Christian Koestlin
@@ -9,20 +15,24 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-04-07 00:00:00 +02:00
18
+ date: 2010-04-08 00:00:00 +02:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: progressbar
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
20
25
  requirements:
21
26
  - - ">="
22
27
  - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 0
31
+ - 3
23
32
  version: 0.0.3
24
- version:
25
- description: Some more high level building blocks for cpp projects.
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ description: " Some more high level building blocks for cpp projects.\n"
26
36
  email: gizmoATflopcodeDOTcom
27
37
  executables: []
28
38
 
@@ -51,8 +61,10 @@ files:
51
61
  - lib/rakepp/sourcelib.rb
52
62
  - lib/rakepp.rb
53
63
  - Rakefile
54
- has_rdoc: false
64
+ has_rdoc: true
55
65
  homepage: http://www.flopcode.com
66
+ licenses: []
67
+
56
68
  post_install_message:
57
69
  rdoc_options: []
58
70
 
@@ -62,20 +74,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
62
74
  requirements:
63
75
  - - ">="
64
76
  - !ruby/object:Gem::Version
77
+ segments:
78
+ - 0
65
79
  version: "0"
66
- version:
67
80
  required_rubygems_version: !ruby/object:Gem::Requirement
68
81
  requirements:
69
82
  - - ">="
70
83
  - !ruby/object:Gem::Version
84
+ segments:
85
+ - 0
71
86
  version: "0"
72
- version:
73
87
  requirements: []
74
88
 
75
89
  rubyforge_project: rakepp
76
- rubygems_version: 1.3.1
90
+ rubygems_version: 1.3.6
77
91
  signing_key:
78
- specification_version: 2
92
+ specification_version: 3
79
93
  summary: Cpp Support for Rake.
80
94
  test_files: []
81
95