rakepp 0.1.2 → 0.1.3
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.
- data/Rakefile +1 -1
- data/lib/rakepp/compiler.rb +4 -0
- data/lib/rakepp/gcccompiler.rb +37 -19
- data/lib/rakepp/linuxcompiler.rb +23 -2
- data/lib/rakepp/sourcelib.rb +3 -2
- data/lib/rakepp.rb +0 -10
- metadata +8 -6
data/Rakefile
CHANGED
data/lib/rakepp/compiler.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
class Compiler
|
2
2
|
attr_reader :targetDir
|
3
|
+
|
3
4
|
def initialize(targetDir, defines)
|
4
5
|
@targetDir = targetDir
|
5
6
|
@defines = defines
|
6
7
|
end
|
8
|
+
|
7
9
|
def addTasks(artifact)
|
8
10
|
if (artifact.instance_of?(Exe)) then
|
9
11
|
addExeTasks(artifact)
|
@@ -21,4 +23,6 @@ class Compiler
|
|
21
23
|
raise "unknown type " + artifact.to_s
|
22
24
|
end
|
23
25
|
end
|
26
|
+
|
24
27
|
end
|
28
|
+
|
data/lib/rakepp/gcccompiler.rb
CHANGED
@@ -38,12 +38,20 @@ class GccCompiler < Compiler
|
|
38
38
|
All.addDepFile(depFile)
|
39
39
|
end
|
40
40
|
|
41
|
+
def arch
|
42
|
+
if ARCH.length > 0
|
43
|
+
return "-arch #{ARCH}"
|
44
|
+
end
|
45
|
+
return ''
|
46
|
+
end
|
47
|
+
|
41
48
|
def compiler(artifact)
|
49
|
+
|
42
50
|
if ((artifact.source.fullPath.index(".cpp") != nil) ||
|
43
51
|
(artifact.source.fullPath.index(".cxx") != nil)) then
|
44
|
-
return "g++
|
52
|
+
return "g++ #{arch} #{OPTIMIZE} -Wall"
|
45
53
|
else
|
46
|
-
return "gcc
|
54
|
+
return "gcc #{arch} #{OPTIMIZE} -Wall"
|
47
55
|
end
|
48
56
|
end
|
49
57
|
|
@@ -161,14 +169,16 @@ def addExeTasks(artifact)
|
|
161
169
|
artifact.outFile = File.join(exesName, artifact.name + '.exe')
|
162
170
|
desc "Create Exe #{artifact.outFile}"
|
163
171
|
theTask = file artifact.outFile => objects do | task |
|
164
|
-
command = "g++
|
172
|
+
command = "g++ #{arch} -o #{artifact.outFile}"
|
165
173
|
objects.each do |o|
|
166
174
|
command += " #{o}"
|
167
175
|
end
|
168
176
|
|
177
|
+
command += " -Wl,--start-group "
|
169
178
|
LibHelper.tr_libs(artifact.libs).each do |lib|
|
170
179
|
command += addLib(task, lib)
|
171
180
|
end
|
181
|
+
command += " -Wl,--end-group"
|
172
182
|
|
173
183
|
sh command
|
174
184
|
doAdditionalWorkForExe(artifact)
|
@@ -181,25 +191,33 @@ def addExeTasks(artifact)
|
|
181
191
|
directory exesName
|
182
192
|
end
|
183
193
|
|
184
|
-
def doAdditionalWorkForExe(artifact)
|
185
|
-
end
|
194
|
+
def doAdditionalWorkForExe(artifact)
|
195
|
+
end
|
196
|
+
|
197
|
+
def addTransitiveLibraryPrerequisites(theTask, artifact)
|
198
|
+
LibHelper.tr_libs(artifact.libs).each do |lib|
|
199
|
+
theTask.prerequisites << lib.outFile unless lib.kind_of?(BinaryLib)
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
def addLib(task, lib)
|
204
|
+
if (lib.instance_of?(BinaryLib)) then
|
205
|
+
return " -L#{lib.path||'/usr/lib'} -l#{lib.name} "
|
206
|
+
elsif (lib.instance_of?(SourceLib)) then
|
207
|
+
return "#{addLibPrefix(lib)} -L#{targetDir}/libs -l#{lib.name} #{addLibSuffix(lib)}"
|
208
|
+
elsif (lib.instance_of?(SharedLib)) then
|
209
|
+
return " #{targetDir}/libs/#{lib.name}.so "
|
210
|
+
else
|
211
|
+
raise "#{lib} not supported"
|
212
|
+
end
|
213
|
+
end
|
186
214
|
|
187
|
-
def
|
188
|
-
|
189
|
-
theTask.prerequisites << lib.outFile unless lib.kind_of?(BinaryLib)
|
215
|
+
def addLibPrefix(lib)
|
216
|
+
return ''
|
190
217
|
end
|
191
|
-
end
|
192
218
|
|
193
|
-
def
|
194
|
-
|
195
|
-
return " -L#{lib.path||'/usr/lib'} -l#{lib.name} "
|
196
|
-
elsif (lib.instance_of?(SourceLib)) then
|
197
|
-
return " -L#{targetDir}/libs -l#{lib.name}"
|
198
|
-
elsif (lib.instance_of?(SharedLib)) then
|
199
|
-
return " #{targetDir}/libs/#{lib.name}.so "
|
200
|
-
else
|
201
|
-
raise "#{lib} not supported"
|
219
|
+
def addLibSuffix(lib)
|
220
|
+
return ''
|
202
221
|
end
|
203
|
-
end
|
204
222
|
|
205
223
|
end
|
data/lib/rakepp/linuxcompiler.rb
CHANGED
@@ -1,11 +1,32 @@
|
|
1
1
|
class LinuxCompiler < GccCompiler
|
2
|
-
|
3
|
-
|
2
|
+
|
3
|
+
def initialize(defines, output_suffix='')
|
4
|
+
super("linux#{output_suffix}", defines)
|
4
5
|
end
|
6
|
+
|
5
7
|
def startOfSharedLibCommand(libName, artifact)
|
6
8
|
return "g++ -shared"
|
7
9
|
end
|
10
|
+
|
8
11
|
def sharedExtension
|
9
12
|
return 'so'
|
10
13
|
end
|
14
|
+
|
15
|
+
|
16
|
+
def addLibPrefix(lib)
|
17
|
+
if lib.forceLib
|
18
|
+
return '-Wl,--whole-archive'
|
19
|
+
else
|
20
|
+
return ''
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def addLibSuffix(lib)
|
25
|
+
if lib.forceLib
|
26
|
+
return '-Wl,--no-whole-archive'
|
27
|
+
else
|
28
|
+
return ''
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
11
32
|
end
|
data/lib/rakepp/sourcelib.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
class SourceLib
|
2
|
-
attr_reader :name, :sources, :includes, :outFile, :libs, :privateDefines
|
2
|
+
attr_reader :name, :sources, :includes, :outFile, :libs, :privateDefines, :forceLib
|
3
3
|
attr_writer :outFile, :privateDefines
|
4
|
-
def initialize(compiler, base, name, sources, libs, includes, privateDefines=[])
|
4
|
+
def initialize(compiler, base, name, sources, libs, includes, privateDefines=[], forceLib=false)
|
5
5
|
@name = name
|
6
6
|
@sources = sources
|
7
7
|
@libs = libs
|
@@ -13,6 +13,7 @@ class SourceLib
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
@privateDefines = privateDefines
|
16
|
+
@forceLib = forceLib
|
16
17
|
compiler.addTasks(self)
|
17
18
|
end
|
18
19
|
|
data/lib/rakepp.rb
CHANGED
@@ -1,14 +1,4 @@
|
|
1
1
|
require 'rakepp/os'
|
2
|
-
|
3
|
-
#OPTIMIZE = '-O3'
|
4
|
-
#OPTIMIZE = ''
|
5
|
-
|
6
|
-
#if OS.osx?
|
7
|
-
# ARCH = '-arch i386 -O0 -gdwarf-2 -mfix-and-continue -fmessage-length=0'
|
8
|
-
#else
|
9
|
-
# ARCH = ''
|
10
|
-
#end
|
11
|
-
|
12
2
|
require 'rakepp/cleaner'
|
13
3
|
require 'rakepp/all'
|
14
4
|
require 'rakepp/compiler'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rakepp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Koestlin
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-03-09 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -22,7 +22,7 @@ dependencies:
|
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: 0.0.3
|
24
24
|
version:
|
25
|
-
description: Some more high level building blocks for cpp projects
|
25
|
+
description: " Some more high level building blocks for cpp projects.\n"
|
26
26
|
email: gizmoATflopcodeDOTcom
|
27
27
|
executables: []
|
28
28
|
|
@@ -50,8 +50,10 @@ files:
|
|
50
50
|
- lib/rakepp/sourcelib.rb
|
51
51
|
- lib/rakepp.rb
|
52
52
|
- Rakefile
|
53
|
-
has_rdoc:
|
53
|
+
has_rdoc: true
|
54
54
|
homepage: http://www.flopcode.com
|
55
|
+
licenses: []
|
56
|
+
|
55
57
|
post_install_message:
|
56
58
|
rdoc_options: []
|
57
59
|
|
@@ -72,9 +74,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
72
74
|
requirements: []
|
73
75
|
|
74
76
|
rubyforge_project: rakepp
|
75
|
-
rubygems_version: 1.3.
|
77
|
+
rubygems_version: 1.3.5
|
76
78
|
signing_key:
|
77
|
-
specification_version:
|
79
|
+
specification_version: 3
|
78
80
|
summary: Cpp Support for Rake.
|
79
81
|
test_files: []
|
80
82
|
|