From 67280ec7c541e730ef1a3d22bb2ef09537da3209 Mon Sep 17 00:00:00 2001 From: Michael Haggerty Date: Wed, 5 Aug 2009 00:07:11 +0200 Subject: [PATCH] Add make_nonrecursive. --- generate_libs.py | 2 ++ make_nonrecursive.py | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 make_nonrecursive.py diff --git a/generate_libs.py b/generate_libs.py index b178ed6..2ce792f 100755 --- a/generate_libs.py +++ b/generate_libs.py @@ -7,6 +7,7 @@ import random import cppcodebase import jam import make +import make_nonrecursive import scons import msvc2003 import boostbuildv2 @@ -40,6 +41,7 @@ def main(argv): scons.CreateCodebase(libs, classes, internal_includes, external_includes) make.CreateCodebase(libs, classes, internal_includes, external_includes) + make_nonrecursive.CreateCodebase(libs, classes, internal_includes, external_includes) jam.CreateCodebase(libs, classes, internal_includes, external_includes) msvc2003.CreateCodebase(libs, classes, internal_includes, external_includes) boostbuildv2.CreateCodebase(libs, classes, internal_includes, external_includes) diff --git a/make_nonrecursive.py b/make_nonrecursive.py new file mode 100644 index 0000000..b8aa50e --- /dev/null +++ b/make_nonrecursive.py @@ -0,0 +1,79 @@ +#!/usr/bin/python + +import os +import cppcodebase +import random + + +def CreateLibMakefile(lib_number, classes): + os.chdir(cppcodebase.lib_name(lib_number)) + handle = file("Makefile.module", "w"); + handle.write('module := %s\n' % (cppcodebase.lib_name(lib_number),)) + handle.write ("lib := $(module)/lib_" + str(lib_number) + ".a\n") + handle.write ("src := \\\n") + for i in xrange(classes): + handle.write(' $(module)/class_' + str(i) + '.cpp \\\n') + handle.write (""" + + +SRC += $(src) + +obj := $(patsubst %.cpp,%.o,$(src)) +dep := $(patsubst %.cpp,%.d,$(src)) + +include $(dep) + +OBJ += $(obj) +LIBS += $(lib) + +all: $(lib) + +$(lib): $(obj) + $(ARCHIVE) cr $@ $^ + touch $@ + +$(obj): INC := -I. -I$(module) +$(dep): INC := -I. -I$(module) + +""") + os.chdir('..') + + +def CreateFullMakefile(libs): + handle = file("Makefile", "w") + + handle.write('subdirs = \\\n') + for i in xrange(libs): + handle.write(' lib_' + str(i) + '\\\n') + handle.write(""" + +COMPILER = g++ +CCFLAGS = -g -Wall $(INC) +ARCHIVE = ar +DEPEND = makedepend +.SUFFIXES: .o .cpp + +all: + +SRC := +OBJ := +LIBS := + +include $(patsubst %,%/Makefile.module,$(subdirs)) + +clean: + @rm -f $(OBJ) $(LIBS) + +%.d: %.cpp + $(COMPILER) -MM -MG -MT "$*.o $*.d" -MF $@ $(INC) $< + +%.o: %.cpp + $(COMPILER) $(CCFLAGS) $(OUTPUT_OPTION) -c $< + +""") + +def CreateCodebase(libs, classes, internal_includes, external_includes): + cppcodebase.SetDir('make_nonrecursive') + cppcodebase.CreateSetOfLibraries(libs, classes, internal_includes, external_includes, CreateLibMakefile) + CreateFullMakefile(libs) + os.chdir('..') -- 2.11.4.GIT