rakepp 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +7 -9
- data/lib/rakepp/all.rb +29 -0
- data/lib/rakepp/binarylib.rb +13 -0
- data/lib/rakepp/cleaner.rb +17 -0
- data/lib/rakepp/compiler.rb +24 -0
- data/lib/rakepp/exe.rb +5 -0
- data/lib/rakepp/files.rb +11 -0
- data/lib/rakepp/framework.rb +5 -0
- data/lib/rakepp/gcccompiler.rb +205 -0
- data/lib/rakepp/gccwin32compiler.rb +25 -0
- data/lib/rakepp/libhelper.rb +29 -0
- data/lib/rakepp/linuxcompiler.rb +11 -0
- data/lib/rakepp/objectfile.rb +14 -0
- data/lib/rakepp/os.rb +11 -0
- data/lib/rakepp/osxcompiler.rb +38 -0
- data/lib/rakepp/sharedlib.rb +9 -0
- data/lib/rakepp/sourcefile.rb +16 -0
- data/lib/rakepp/sourcelib.rb +30 -0
- data/lib/rakepp.rb +27 -9
- metadata +74 -56
- data/lib/rakepp/BinaryLib.rb +0 -21
- data/lib/rakepp/Compiler.rb +0 -12
- data/lib/rakepp/CompilerHelper.rb +0 -38
- data/lib/rakepp/DependencyHandler.rb +0 -37
- data/lib/rakepp/Exe.rb +0 -28
- data/lib/rakepp/Files.rb +0 -5
- data/lib/rakepp/Framework.rb +0 -23
- data/lib/rakepp/Gcc.rb +0 -115
- data/lib/rakepp/Lib.rb +0 -20
- data/lib/rakepp/LibHelper.rb +0 -46
- data/lib/rakepp/Msvt.rb +0 -80
- data/lib/rakepp/RakeHelper.rb +0 -82
- data/lib/rakepp/SourceLib.rb +0 -38
- data/lib/rakepp/Sources2Objects.rb +0 -35
- data/lib/rakepp/TaskDebug.rb +0 -18
- data/lib/rakepp/Tests.rb +0 -45
data/Rakefile
CHANGED
@@ -4,15 +4,15 @@ require 'rake/gempackagetask'
|
|
4
4
|
desc "Default Task"
|
5
5
|
task :default => :package
|
6
6
|
|
7
|
-
PKG_VERSION = '0.0
|
7
|
+
PKG_VERSION = '0.1.0'
|
8
8
|
PKG_FILES = FileList[
|
9
|
-
'lib/**/*.rb',
|
9
|
+
'lib/**/*.rb',
|
10
10
|
'*.xml',
|
11
11
|
'Rakefile'
|
12
12
|
# 'test/**/*.rb',
|
13
13
|
# 'doc/**/*'
|
14
14
|
]
|
15
|
-
|
15
|
+
|
16
16
|
spec = Gem::Specification.new do |s|
|
17
17
|
s.name = 'rakepp'
|
18
18
|
s.version = PKG_VERSION
|
@@ -22,16 +22,14 @@ spec = Gem::Specification.new do |s|
|
|
22
22
|
EOF
|
23
23
|
s.files = PKG_FILES.to_a
|
24
24
|
s.require_path = 'lib'
|
25
|
-
s.autorequire = 'rakepp'
|
26
25
|
# s.has_rdoc = true
|
27
26
|
s.author = "Christian Koestlin"
|
28
27
|
s.email = 'gizmoATflopcodeDOTcom'
|
29
|
-
s.homepage =
|
30
|
-
s.rubyforge_project =
|
28
|
+
s.homepage = 'http://www.flopcode.com'
|
29
|
+
s.rubyforge_project = 'rakepp'
|
31
30
|
s.add_dependency('progressbar', '>=0.0.3')
|
32
|
-
end
|
33
|
-
|
34
|
-
|
31
|
+
end
|
32
|
+
|
35
33
|
Rake::GemPackageTask.new(spec) do |pkg|
|
36
34
|
# pkg.need_tar = true
|
37
35
|
# pkg.need_zip = true
|
data/lib/rakepp/all.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
class All
|
2
|
+
@@tasks = Array.new
|
3
|
+
@@objects = Array.new
|
4
|
+
@@depFiles = Array.new
|
5
|
+
|
6
|
+
def self.add(task)
|
7
|
+
@@tasks << task
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.addObject(o)
|
11
|
+
@@objects << o
|
12
|
+
end
|
13
|
+
def self.addDepFile(filename)
|
14
|
+
@@depFiles << filename
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.tasks
|
18
|
+
return @@tasks
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.objects
|
22
|
+
return @@objects
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.depFiles
|
26
|
+
return @@depFiles
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class BinaryLib
|
2
|
+
attr_reader :name, :includes, :outFile, :libs, :path
|
3
|
+
attr_writer :outFile
|
4
|
+
|
5
|
+
def initialize(compiler, name, libs=[], includes=[], path=nil)
|
6
|
+
@name = name
|
7
|
+
@libs = libs
|
8
|
+
@includes = includes
|
9
|
+
@path = path
|
10
|
+
compiler.addTasks(self)
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class Cleaner
|
2
|
+
def initialize()
|
3
|
+
|
4
|
+
desc "Clean all artifacts"
|
5
|
+
task :clean do
|
6
|
+
Rake::Task.tasks.reverse_each do | t |
|
7
|
+
FileUtils.rm_rf(t.name) if File.exists?(t.name)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
desc "Force Recalc of dependencies"
|
12
|
+
task :cleanDeps do
|
13
|
+
All.depFiles.each {|f|FileUtils.rm(f)}
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class Compiler
|
2
|
+
attr_reader :targetDir
|
3
|
+
def initialize(targetDir, defines)
|
4
|
+
@targetDir = targetDir
|
5
|
+
@defines = defines
|
6
|
+
end
|
7
|
+
def addTasks(artifact)
|
8
|
+
if (artifact.instance_of?(Exe)) then
|
9
|
+
addExeTasks(artifact)
|
10
|
+
elsif (artifact.instance_of?(SourceLib)) then
|
11
|
+
addSourceLibTasks(artifact)
|
12
|
+
elsif (artifact.instance_of?(ObjectFile)) then
|
13
|
+
addObjectTasks(artifact)
|
14
|
+
elsif (artifact.instance_of?(Framework)) then
|
15
|
+
addFrameworkTasks(artifact)
|
16
|
+
elsif (artifact.instance_of?(BinaryLib)) then
|
17
|
+
addBinaryLibTasks(artifact)
|
18
|
+
elsif (artifact.instance_of?(SharedLib)) then
|
19
|
+
addSharedLibTasks(artifact)
|
20
|
+
else
|
21
|
+
raise "unknown type " + artifact.to_s
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/rakepp/exe.rb
ADDED
data/lib/rakepp/files.rb
ADDED
@@ -0,0 +1,205 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'progressbar'
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
class GccCompiler < Compiler
|
6
|
+
def addObjectTasks(artifact)
|
7
|
+
outName = File.join(artifact.targetDir, artifact.source.to_o)
|
8
|
+
artifact.outFile = outName
|
9
|
+
depFile = artifact.depFile
|
10
|
+
|
11
|
+
depFileTask = file depFile => artifact.source.fullPath do | task |
|
12
|
+
calcDependencies(artifact, depFile)
|
13
|
+
end
|
14
|
+
|
15
|
+
outFile = file outName => depFile do |task|
|
16
|
+
command = "#{compiler(artifact)} -c #{defines(artifact)} #{includes(artifact)} -o #{outName} #{artifact.source.fullPath}"
|
17
|
+
sh command
|
18
|
+
end
|
19
|
+
|
20
|
+
applyTask = task "#{depFile}.apply" => depFile do |task|
|
21
|
+
deps = YAML.load_file(depFile)
|
22
|
+
if (deps)
|
23
|
+
outFile.enhance(deps)
|
24
|
+
depFileTask.enhance(deps[1..-1])
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
outFile.enhance([applyTask])
|
29
|
+
|
30
|
+
directory artifact.targetDir
|
31
|
+
directory File.dirname(outName)
|
32
|
+
|
33
|
+
dirs = [artifact.targetDir, File.dirname(outName)]
|
34
|
+
outFile.enhance(dirs)
|
35
|
+
depFileTask.enhance(dirs)
|
36
|
+
|
37
|
+
All.addObject(artifact)
|
38
|
+
All.addDepFile(depFile)
|
39
|
+
end
|
40
|
+
|
41
|
+
def compiler(artifact)
|
42
|
+
if ((artifact.source.fullPath.index(".cpp") != nil) ||
|
43
|
+
(artifact.source.fullPath.index(".cxx") != nil)) then
|
44
|
+
return "g++ -arch #{ARCH} #{OPTIMIZE} -Wall"
|
45
|
+
else
|
46
|
+
return "gcc -arch #{ARCH} #{OPTIMIZE} -Wall"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def defines(artifact)
|
51
|
+
res = ""
|
52
|
+
allDefines = @defines + artifact.privateDefines
|
53
|
+
allDefines.each do |define|
|
54
|
+
res << "-D#{define} "
|
55
|
+
end
|
56
|
+
return res
|
57
|
+
end
|
58
|
+
|
59
|
+
def includes(artifact)
|
60
|
+
res = ""
|
61
|
+
artifact.includes.each do |aInclude|
|
62
|
+
res << "-I#{aInclude} "
|
63
|
+
end
|
64
|
+
return res
|
65
|
+
end
|
66
|
+
|
67
|
+
def calcDependencies(artifact, taskToEnhance)
|
68
|
+
source = artifact.source
|
69
|
+
command = "#{compiler(artifact)} -MM #{defines(artifact)} #{includes(artifact)} #{source.fullPath}"
|
70
|
+
puts command
|
71
|
+
deps = `#{command}`
|
72
|
+
if deps.length == 0
|
73
|
+
raise 'cannot calc dependencies'
|
74
|
+
end
|
75
|
+
deps = deps.gsub(/\\\n/,'').split()[1..-1]
|
76
|
+
File.open(artifact.depFile, 'wb') do |f|
|
77
|
+
f.write(deps.to_yaml)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
def startOfSourceLibCommand(outName, artifact)
|
81
|
+
return "ar -r #{outName}"
|
82
|
+
end
|
83
|
+
|
84
|
+
def addSourceLibTasks(artifact)
|
85
|
+
outDir = File.join(@targetDir, artifact.name)
|
86
|
+
|
87
|
+
objects = []
|
88
|
+
artifact.sources.each do |source|
|
89
|
+
objects << ObjectFile.new(self, source, outDir, artifact.tr_includes, artifact.privateDefines).outFile
|
90
|
+
end
|
91
|
+
|
92
|
+
libsName = File.join(@targetDir, 'libs')
|
93
|
+
outName = File.join(libsName, "lib#{artifact.name}.a")
|
94
|
+
|
95
|
+
artifact.outFile = outName
|
96
|
+
desc "Create SourceLib #{outName}"
|
97
|
+
theTask = file outName => objects do | task |
|
98
|
+
command = startOfSourceLibCommand(outName, artifact)
|
99
|
+
objects.each do | o |
|
100
|
+
command += " #{o}"
|
101
|
+
end
|
102
|
+
sh command
|
103
|
+
end
|
104
|
+
|
105
|
+
addTransitiveLibraryPrerequisites(theTask, artifact)
|
106
|
+
|
107
|
+
file outName => [libsName]
|
108
|
+
All.add(outName)
|
109
|
+
directory libsName
|
110
|
+
end
|
111
|
+
|
112
|
+
def addSharedLibTasks(artifact)
|
113
|
+
outDir = File.join(@targetDir, artifact.name)
|
114
|
+
objects = []
|
115
|
+
artifact.sources.each do |source|
|
116
|
+
objects << ObjectFile.new(self, source, outDir, artifact.tr_includes, artifact.privateDefines).outFile
|
117
|
+
end
|
118
|
+
libsName = File.join(@targetDir, 'libs')
|
119
|
+
outName = File.join(libsName, "#{artifact.name}.#{sharedExtension}")
|
120
|
+
artifact.outFile = outName
|
121
|
+
desc "Create SharedLib #{outName}"
|
122
|
+
theTask = file outName => objects do | task |
|
123
|
+
command = startOfSharedLibCommand(outName, artifact)
|
124
|
+
objects.each do |o|
|
125
|
+
command += " #{o}"
|
126
|
+
end
|
127
|
+
|
128
|
+
LibHelper.tr_libs(artifact.libs).each do |lib|
|
129
|
+
command += addLib(task, lib)
|
130
|
+
end
|
131
|
+
|
132
|
+
command += " -o #{outName}"
|
133
|
+
sh command
|
134
|
+
end
|
135
|
+
|
136
|
+
addTransitiveLibraryPrerequisites(theTask, artifact)
|
137
|
+
|
138
|
+
file outName => [libsName]
|
139
|
+
All.add(outName)
|
140
|
+
directory libsName
|
141
|
+
end
|
142
|
+
|
143
|
+
def addBinaryLibTasks(artifact)
|
144
|
+
artifact.outFile = "lib#{artifact.name}.a"
|
145
|
+
end
|
146
|
+
|
147
|
+
def addFrameworkTasks(artifact)
|
148
|
+
artifact.outFile = artifact.name
|
149
|
+
end
|
150
|
+
|
151
|
+
|
152
|
+
def addExeTasks(artifact)
|
153
|
+
outDir = File.join(@targetDir, artifact.name)
|
154
|
+
|
155
|
+
objects = []
|
156
|
+
artifact.sources.each do |source|
|
157
|
+
objects << ObjectFile.new(self, source, outDir, artifact.tr_includes).outFile
|
158
|
+
end
|
159
|
+
|
160
|
+
exesName = File.join(@targetDir, 'exes')
|
161
|
+
artifact.outFile = File.join(exesName, artifact.name + '.exe')
|
162
|
+
desc "Create Exe #{artifact.outFile}"
|
163
|
+
theTask = file artifact.outFile => objects do | task |
|
164
|
+
command = "g++ -arch #{ARCH} -o #{artifact.outFile}"
|
165
|
+
objects.each do |o|
|
166
|
+
command += " #{o}"
|
167
|
+
end
|
168
|
+
|
169
|
+
LibHelper.tr_libs(artifact.libs).each do |lib|
|
170
|
+
command += addLib(task, lib)
|
171
|
+
end
|
172
|
+
|
173
|
+
sh command
|
174
|
+
doAdditionalWorkForExe(artifact)
|
175
|
+
end
|
176
|
+
|
177
|
+
addTransitiveLibraryPrerequisites(theTask, artifact)
|
178
|
+
|
179
|
+
file artifact.outFile => [exesName]
|
180
|
+
All.add(artifact.outFile)
|
181
|
+
directory exesName
|
182
|
+
end
|
183
|
+
|
184
|
+
def doAdditionalWorkForExe(artifact)
|
185
|
+
end
|
186
|
+
|
187
|
+
def addTransitiveLibraryPrerequisites(theTask, artifact)
|
188
|
+
LibHelper.tr_libs(artifact.libs).each do |lib|
|
189
|
+
theTask.prerequisites << lib.outFile unless lib.kind_of?(BinaryLib)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
def addLib(task, lib)
|
194
|
+
if (lib.instance_of?(BinaryLib)) then
|
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"
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class GccWin32Compiler < GccCompiler
|
2
|
+
def initialize(defines)
|
3
|
+
super('w32', defines)
|
4
|
+
end
|
5
|
+
|
6
|
+
def startOfSharedLibCommand(libName)
|
7
|
+
return "g++ -shared -Wl,--out-implib=#{libName}.a"
|
8
|
+
end
|
9
|
+
|
10
|
+
def sharedExtension
|
11
|
+
return 'dll'
|
12
|
+
end
|
13
|
+
|
14
|
+
def addLib(task, lib)
|
15
|
+
if (lib.instance_of?(BinaryLib)) then
|
16
|
+
return " -l#{lib.name}"
|
17
|
+
elsif (lib.instance_of?(SourceLib)) then
|
18
|
+
return " -L#{targetDir}/libs -l#{lib.name}"
|
19
|
+
elsif (lib.instance_of?(SharedLib)) then
|
20
|
+
return " #{targetDir}/libs/#{lib.name}.#{sharedExtension}.a"
|
21
|
+
else
|
22
|
+
raise "#{lib} not supported"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class LibHelper
|
2
|
+
|
3
|
+
attr_reader :all_libs
|
4
|
+
|
5
|
+
def self.tr_libs(libs)
|
6
|
+
return LibHelper.new(libs).all_libs
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def addUnique(lib)
|
12
|
+
@all_libs.delete(lib)
|
13
|
+
@all_libs.push(lib)
|
14
|
+
end
|
15
|
+
|
16
|
+
def add(lib)
|
17
|
+
addUnique(lib)
|
18
|
+
lib.libs.each do |aLib|
|
19
|
+
add(aLib)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def initialize(libs)
|
24
|
+
@all_libs = Array.new
|
25
|
+
libs.each do | lib |
|
26
|
+
add(lib)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class ObjectFile
|
2
|
+
attr_reader :source, :targetDir, :includes, :outFile, :privateDefines
|
3
|
+
attr_writer :outFile
|
4
|
+
def initialize(compiler, source, targetDir, includes, privateDefines=[])
|
5
|
+
@source = source
|
6
|
+
@targetDir = targetDir
|
7
|
+
@includes = includes
|
8
|
+
@privateDefines = privateDefines
|
9
|
+
compiler.addTasks(self)
|
10
|
+
end
|
11
|
+
def depFile()
|
12
|
+
return "#{outFile}.dependencies"
|
13
|
+
end
|
14
|
+
end
|
data/lib/rakepp/os.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
class OsxCompiler < GccCompiler
|
2
|
+
|
3
|
+
def initialize(defines, gui=true)
|
4
|
+
super('osx', defines)
|
5
|
+
@gui = gui
|
6
|
+
end
|
7
|
+
|
8
|
+
def startOfSourceLibCommand(outname, artifact)
|
9
|
+
return "libtool -static -arch_only #{ARCH} -o #{outname}"
|
10
|
+
end
|
11
|
+
|
12
|
+
def startOfSharedLibCommand(libName, artifact)
|
13
|
+
name = artifact.options[:name]
|
14
|
+
if name == nil
|
15
|
+
name = File.basename(libName)
|
16
|
+
end
|
17
|
+
return "g++ -arch #{ARCH} -dynamiclib -install_name #{name}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def sharedExtension
|
21
|
+
return 'so'
|
22
|
+
end
|
23
|
+
|
24
|
+
def addLib(task, lib)
|
25
|
+
if (lib.instance_of?(Framework)) then
|
26
|
+
return " -framework #{lib.name}"
|
27
|
+
else
|
28
|
+
return super(task, lib)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def doAdditionalWorkForExe(artifact)
|
33
|
+
if @gui
|
34
|
+
sh "/Developer/Tools/Rez -o #{artifact.outFile} appResources.r"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class SourceFile
|
2
|
+
attr_reader :fullPath, :fileName
|
3
|
+
def initialize(fullPath, fileName)
|
4
|
+
@fullPath = fullPath
|
5
|
+
@fileName = fileName
|
6
|
+
end
|
7
|
+
|
8
|
+
def to_o
|
9
|
+
return fileName.sub(/\.[^.]+$/, '.o')
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_s
|
13
|
+
return "SourceFile #{fullPath}"
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class SourceLib
|
2
|
+
attr_reader :name, :sources, :includes, :outFile, :libs, :privateDefines
|
3
|
+
attr_writer :outFile, :privateDefines
|
4
|
+
def initialize(compiler, base, name, sources, libs, includes, privateDefines=[])
|
5
|
+
@name = name
|
6
|
+
@sources = sources
|
7
|
+
@libs = libs
|
8
|
+
@includes = includes.collect do |i|
|
9
|
+
if (i[0].chr == '/')
|
10
|
+
i
|
11
|
+
else
|
12
|
+
File.join(base, i)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
@privateDefines = privateDefines
|
16
|
+
compiler.addTasks(self)
|
17
|
+
end
|
18
|
+
|
19
|
+
def tr_includes
|
20
|
+
res = Array.new(@includes)
|
21
|
+
LibHelper.tr_libs(libs).each do |lib|
|
22
|
+
if !res.include?(lib) then
|
23
|
+
lib.includes.each do |i|
|
24
|
+
res << i unless res.include?(i)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
return res
|
29
|
+
end
|
30
|
+
end
|
data/lib/rakepp.rb
CHANGED
@@ -1,9 +1,27 @@
|
|
1
|
-
require 'rakepp/
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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
|
+
require 'rakepp/cleaner'
|
13
|
+
require 'rakepp/all'
|
14
|
+
require 'rakepp/compiler'
|
15
|
+
require 'rakepp/gcccompiler'
|
16
|
+
require 'rakepp/linuxcompiler'
|
17
|
+
require 'rakepp/osxcompiler'
|
18
|
+
require 'rakepp/gccwin32compiler'
|
19
|
+
require 'rakepp/libhelper'
|
20
|
+
require 'rakepp/sourcelib'
|
21
|
+
require 'rakepp/sharedlib'
|
22
|
+
require 'rakepp/exe'
|
23
|
+
require 'rakepp/objectfile'
|
24
|
+
require 'rakepp/sourcefile'
|
25
|
+
require 'rakepp/binarylib'
|
26
|
+
require 'rakepp/framework'
|
27
|
+
require 'rakepp/files'
|