--- mtl/template.mk.orig 2010-07-10 10:07:36.000000000 -0600 +++ mtl/template.mk 2013-03-01 14:59:16.048911115 -0700 @@ -5,6 +5,8 @@ ## "make d" for a debug version (no optimizations). ## "make" for the standard version (optimized, but with debug information and assertions active) +VERSION = +MAJVER = $(shell sed -r s/^\([[:digit:]]+\).*/\\1/ <<<$(VERSION)) PWD = $(shell pwd) EXEC ?= $(notdir $(PWD)) @@ -41,7 +43,7 @@ libr: lib$(LIB)_release.a ## Compile options -%.o: CFLAGS +=$(COPTIMIZE) -g -D DEBUG +%.o: CFLAGS +=$(COPTIMIZE) -g -D NDEBUG -fPIC %.op: CFLAGS +=$(COPTIMIZE) -pg -g -D NDEBUG %.od: CFLAGS +=-O0 -g -D DEBUG %.or: CFLAGS +=$(COPTIMIZE) -g -D NDEBUG @@ -54,12 +56,13 @@ $(EXEC)_static: LFLAGS += --static ## Dependencies -$(EXEC): $(COBJS) +$(EXEC): lib$(LIB).so $(EXEC)_profile: $(PCOBJS) $(EXEC)_debug: $(DCOBJS) $(EXEC)_release: $(RCOBJS) $(EXEC)_static: $(RCOBJS) +lib$(LIB).so: $(filter-out */Main.o, $(COBJS)) lib$(LIB)_standard.a: $(filter-out */Main.o, $(COBJS)) lib$(LIB)_profile.a: $(filter-out */Main.op, $(PCOBJS)) lib$(LIB)_debug.a: $(filter-out */Main.od, $(DCOBJS)) @@ -72,11 +75,21 @@ @$(CXX) $(CFLAGS) -c -o $@ $< ## Linking rules (standard/profile/debug/release) -$(EXEC) $(EXEC)_profile $(EXEC)_debug $(EXEC)_release $(EXEC)_static: +$(EXEC): Main.o + @echo Linking: "$@ ( $(foreach f,$^,$(subst $(MROOT)/,,$f)) )" + @$(CXX) $< -o $@ -L. -l$(LIB) $(LFLAGS) + +$(EXEC)_profile $(EXEC)_debug $(EXEC)_release $(EXEC)_static: @echo Linking: "$@ ( $(foreach f,$^,$(subst $(MROOT)/,,$f)) )" @$(CXX) $^ $(LFLAGS) -o $@ ## Library rules (standard/profile/debug/release) +lib$(LIB).so: $(COBJS) + @echo Making library: "$@ ( $(foreach f,$^,$(subst $(MROOT)/,,$f)) )" + @$(CXX) -shared -Wl,-soname=$@.$(MAJVER) -o $@.$(VERSION) $^ $(LFLAGS) + @ln -s lib$(LIB).so.$(VERSION) lib$(LIB).so.$(MAJVER) + @ln -s lib$(LIB).so.$(MAJVER) lib$(LIB).so + lib$(LIB)_standard.a lib$(LIB)_profile.a lib$(LIB)_release.a lib$(LIB)_debug.a: @echo Making library: "$@ ( $(foreach f,$^,$(subst $(MROOT)/,,$f)) )" @$(AR) -rcsv $@ $^