From 15e2f4dce1d6e506bc977d9851194bbf944cb301 Mon Sep 17 00:00:00 2001 From: Michael Haggerty Date: Wed, 5 Aug 2009 00:08:03 +0200 Subject: [PATCH] Add fabrication. --- fabrication.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ generate_libs.py | 2 ++ 2 files changed, 58 insertions(+) create mode 100644 fabrication.py diff --git a/fabrication.py b/fabrication.py new file mode 100644 index 0000000..bed9d29 --- /dev/null +++ b/fabrication.py @@ -0,0 +1,56 @@ +#!/usr/bin/python + +import os +import cppcodebase +import random + + +def CreateLibBuildfile(lib, classes): + pass + + +def CreateBuildfile(libs, classes): + handle = file("build.py", "w") + + handle.write("""\ +import fabricate + +fabricate.setup(runner='strace_runner') + +""") + handle.write('libs = [\n') + for i in xrange(libs): + handle.write(' (\'lib_%d\', [\n' % (i,)) + for j in xrange(classes): + handle.write(' \'class_%d\',\n' % (j,)) + handle.write(' ]),\n') + handle.write(' ]\n') + + handle.write(""" + +COMPILER = 'g++' +CCFLAGS = '-g -Wall' +ARCHIVE = 'ar' + +for (lib, klasses) in libs: + for klass in klasses: + fabricate.run( + '%s %s -I. -I%s -o %s/%s.o -c %s/%s.cpp' + % (COMPILER, CCFLAGS, lib, lib, klass, lib, klass,) + ) + fabricate.run( + '%s cr %s/%s.a %s' + % ( + ARCHIVE, lib, lib, + ' '.join(['%s/%s.o' % (lib, klass,) for klass in klasses]), + ) + ) + +""") + +def CreateCodebase(libs, classes, internal_includes, external_includes): + cppcodebase.SetDir('fabricate') + cppcodebase.CreateSetOfLibraries(libs, classes, internal_includes, external_includes, CreateLibBuildfile) + CreateBuildfile(libs, classes) + os.chdir('..') + diff --git a/generate_libs.py b/generate_libs.py index 2ce792f..f502ac9 100755 --- a/generate_libs.py +++ b/generate_libs.py @@ -14,6 +14,7 @@ import boostbuildv2 import ant import nant import rant +import fabrication HELP_USAGE = """Usage: generate_libs.py root libs classes internal external. @@ -48,6 +49,7 @@ def main(argv): ant.CreateCodebase(libs, classes, internal_includes, external_includes) nant.CreateCodebase(libs, classes, internal_includes, external_includes) rant.CreateCodebase(libs, classes, internal_includes, external_includes) + fabrication.CreateCodebase(libs, classes, internal_includes, external_includes) if __name__ == "__main__": -- 2.11.4.GIT