1 | # common.gmk |
---|
2 | |
---|
3 | # Common part of GNUmakefile |
---|
4 | # |
---|
5 | |
---|
6 | MYTMP := $(ESAFTMP)/$(name) |
---|
7 | DUMMY := $(shell [ ! -d $(MYTMP) ] && mkdir -p $(MYTMP) ) |
---|
8 | |
---|
9 | sources := $(wildcard src/*.cc) |
---|
10 | objects := $(patsubst src/%.cc,$(MYTMP)/%.o,$(sources)) |
---|
11 | dependencies := $(patsubst src/%.cc,$(MYTMP)/%.d,$(sources)) |
---|
12 | |
---|
13 | $(LIBDIR)/lib$(name).a: $(MYTMP)/obj.last |
---|
14 | @echo Creating/replacing object files in $(LIBDIR)/lib$(name).a |
---|
15 | @rm -f $(LIBDIR)/lib$(name).a |
---|
16 | ifdef CPPVERBOSE |
---|
17 | $(AR) r $(LIBDIR)/lib$(name).a $(objects) |
---|
18 | ranlib $(LIBDIR)/lib$(name).a |
---|
19 | else |
---|
20 | @$(AR) r $(LIBDIR)/lib$(name).a $(objects) |
---|
21 | @ranlib $(LIBDIR)/lib$(name).a |
---|
22 | endif |
---|
23 | |
---|
24 | obj: $(MYTMP)/obj.last |
---|
25 | |
---|
26 | lib: $(LIBDIR)/lib$(name).a |
---|
27 | |
---|
28 | # Touch the versioning file |
---|
29 | $(MYTMP)/obj.last: $(objects) |
---|
30 | @touch $@ |
---|
31 | |
---|
32 | $(MYTMP)/%.o : src/%.cc |
---|
33 | @echo Compiling $< |
---|
34 | ifdef CPPVERBOSE |
---|
35 | $(CXX) -c $(CXXFLAGS) $< -o $@ |
---|
36 | else |
---|
37 | @$(CXX) -c $(CXXFLAGS) $< -o $@ |
---|
38 | endif |
---|
39 | |
---|
40 | $(MYTMP)/%.d: src/%.cc |
---|
41 | @echo Making dependency for file $< ... |
---|
42 | @set -e; $(CXX) -MM $(CXXFLAGS) $< \ |
---|
43 | | sed 's!\($*\)\.o[ :]*!$(MYTMP)/\1.o $@ : !g' > $@; \ |
---|
44 | [ -s $@ ] || rm -f $@ |
---|
45 | |
---|
46 | ifneq ($(dependencies),) |
---|
47 | -include $(dependencies) |
---|
48 | endif |
---|
49 | |
---|
50 | .PHONY: obj lib clean tags |
---|
51 | |
---|
52 | clean: |
---|
53 | @echo Cleaning up $(name) |
---|
54 | @rm -f $(LIBDIR)/lib$(name).a |
---|
55 | @rm -rf $(MYTMP) |
---|
56 | @rm -f tags |
---|
57 | |
---|
58 | tags: |
---|
59 | # @echo Creating tags file |
---|
60 | @-ctags -l c++ -T -S -w src/*.cc include/*.hh |
---|
61 | |
---|
62 | |
---|