Add fabrication.
[build-benchmarks.git] / fabrication.py
blobbed9d29ebb3d0cb462946bc2cb8cec6318c6ae52
1 #!/usr/bin/python
3 import os
4 import cppcodebase
5 import random
8 def CreateLibBuildfile(lib, classes):
9 pass
12 def CreateBuildfile(libs, classes):
13 handle = file("build.py", "w")
15 handle.write("""\
16 import fabricate
18 fabricate.setup(runner='strace_runner')
20 """)
21 handle.write('libs = [\n')
22 for i in xrange(libs):
23 handle.write(' (\'lib_%d\', [\n' % (i,))
24 for j in xrange(classes):
25 handle.write(' \'class_%d\',\n' % (j,))
26 handle.write(' ]),\n')
27 handle.write(' ]\n')
29 handle.write("""
31 COMPILER = 'g++'
32 CCFLAGS = '-g -Wall'
33 ARCHIVE = 'ar'
35 for (lib, klasses) in libs:
36 for klass in klasses:
37 fabricate.run(
38 '%s %s -I. -I%s -o %s/%s.o -c %s/%s.cpp'
39 % (COMPILER, CCFLAGS, lib, lib, klass, lib, klass,)
41 fabricate.run(
42 '%s cr %s/%s.a %s'
43 % (
44 ARCHIVE, lib, lib,
45 ' '.join(['%s/%s.o' % (lib, klass,) for klass in klasses]),
49 """)
51 def CreateCodebase(libs, classes, internal_includes, external_includes):
52 cppcodebase.SetDir('fabricate')
53 cppcodebase.CreateSetOfLibraries(libs, classes, internal_includes, external_includes, CreateLibBuildfile)
54 CreateBuildfile(libs, classes)
55 os.chdir('..')