8 def CreateLibRantfileGcc(lib_number
, classes
):
9 os
.chdir(cppcodebase
.lib_name(lib_number
))
11 handle
= file("Rantfile", "w")
12 handle
.write ('''import "c/dependencies"
14 file "lib''' + str(lib_number
) + '''.a" => sys["*.cpp"].sub_ext("o") do |t|
15 sys "ar cr #{t.name} #{t.prerequisites}"
18 gen Rule, '.o' => '.cpp' do |t|
19 sys "g++ -c -I.. -o #{t.name} #{t.source}"
23 gen Action do source "c_dependencies" end
26 sys.rm_f Dir["*.o"] + %w(lib''' + str(lib_number
) + '''.a) + %w(c_dependencies)
32 def CreateLibRantfileMsvc(lib_number
, classes
):
33 os
.chdir(cppcodebase
.lib_name(lib_number
))
35 handle
= file("Rantfile", "w")
36 handle
.write ('''import "c/dependencies"
38 file "lib''' + str(lib_number
) + '''.a" => sys["*.cpp"].sub_ext("obj") do |t|
39 sys "lib /nologo /out:#{t.name} #{t.prerequisites}"
42 gen Rule, '.obj' => '.cpp' do |t|
43 sys "cl /Od /nologo /c /I.. #{t.source}"
47 gen Action do source "c_dependencies" end
50 sys.rm_f Dir["*.obj"] + %w(lib''' + str(lib_number
) + '''.a) + %w(c_dependencies)
56 def CreateFullRantfile(libs
):
57 handle
= file("Rantfile", "w")
58 handle
.write ('import "c/dependencies"\n\n')
60 handle
.write ('desc "Build all"\n')
61 handle
.write ('task :all => [\n')
62 for i
in xrange(libs
):
63 handle
.write('\t\t"' + cppcodebase
.lib_name(i
) + '/lib' + str(i
) + '.a",\n')
64 handle
.write ('] do\nend\n\n')
66 handle
.write ('desc "Clean all"\n')
67 handle
.write ('task :clean => [\n')
68 for i
in xrange(libs
):
69 handle
.write('\t\t"lib_' + str(i
) + '/clean",\n')
70 handle
.write ('] do\nend\n\n')
72 handle
.write ('subdirs [\n')
73 for i
in xrange(libs
):
74 handle
.write('\t\t"' + cppcodebase
.lib_name(i
) + '",\n')
78 def CreateCodebaseForGcc(libs
, classes
, internal_includes
, external_includes
):
79 cppcodebase
.SetDir('rant_gcc')
80 cppcodebase
.CreateSetOfLibraries(libs
, classes
, internal_includes
, external_includes
, CreateLibRantfileGcc
)
81 CreateFullRantfile(libs
)
84 def CreateCodebaseForMsvc(libs
, classes
, internal_includes
, external_includes
):
85 cppcodebase
.SetDir('rant_msvc')
86 cppcodebase
.CreateSetOfLibraries(libs
, classes
, internal_includes
, external_includes
, CreateLibRantfileMsvc
)
87 CreateFullRantfile(libs
)
90 def CreateCodebase(libs
, classes
, internal_includes
, external_includes
):
91 CreateCodebaseForGcc(libs
, classes
, internal_includes
, external_includes
);
92 CreateCodebaseForMsvc(libs
, classes
, internal_includes
, external_includes
);