cc766cd3cd1e6a4d715f418c9b399f937498836e
[sip-router] / Makefile.rules
1 #
2 # $Id$
3 #
4 #
5 # common Makefile rules, included by main Makefile & the  modules
6 #
7
8 #
9 # Uses: NAME, ALLDEP, CC, CFLAGS, DEFS, LIBS, MKDEP, auto_gen, auto_gen_others,
10 # depends, objs, extra_objs, static_modules, static_modules_path
11 # (all this must  be defined previously!,  see Makefile.defs & Makefile)
12 #
13
14
15
16 #implicit rules
17 %.o:%.c  $(ALLDEP)
18         $(CC) $(CFLAGS) $(DEFS) -c $< -o $@
19
20 %.d: %.c $(ALLDEP)
21         @set -e; $(MKDEP) $(DEFS) $< \
22         |  sed 's#\(\($*D)\)\?$(*F)\)\.o[ :]*#$*.o $@ : #g' > $@; \
23         [ -s $@ ] || rm -f $@
24
25
26 # normal rules
27 $(NAME): $(objs) $(ALLDEP)
28         $(LD) $(LDFLAGS) $(objs) $(extra_objs) $(LIBS) -o $(NAME) 
29
30
31 .PHONY: all
32 all: $(NAME) modules
33
34 .PHONY: dep
35 dep: $(depends)
36
37 .PHONY: static
38 static: $(objs)
39
40 .PHONY: clean
41 clean: 
42         -@rm -f $(objs) $(NAME) $(objs:.o=.il) 2>/dev/null
43         -@for r in $(modules) $(static_modules_path) "" ; do \
44                 if [ -d "$$r" ]; then \
45                         echo "module $$r" ; \
46                         $(MAKE) -C $$r clean ; \
47                 fi ; \
48         done
49         @if [ -n "$(modules)" -a -d utils/gen_ha1 ]; then \
50                 cd utils/gen_ha1; $(MAKE) clean; \
51                 cd ../serunix; $(MAKE) clean; \
52         fi
53
54 .PHONY: proper
55 .PHONY: distclean
56 .PHONY: realclean
57 proper realclean distclean: clean 
58         -@rm -f $(depends) $(auto_gen) $(auto_gen_others) 2>/dev/null
59         -@for r in $(modules) "" ; do \
60                 if [ -d "$$r" ]; then \
61                          $(MAKE) -C $$r proper ; \
62                 fi ; \
63         done 
64
65 .PHONY: mantainer-cleaan
66 mantainer-clean: distclean
67         -rm -f TAGS tags *.dbg .*.swp
68         -@for r in $(modules) "" ; do \
69                 if [ -d "$$r" ]; then \
70                         $(MAKE) -C $$r mantainer-clean; \
71                 fi ; \
72          done 
73
74
75 .PHONY: TAGS
76 TAGS:
77         $(MKTAGS) 
78         
79 ifeq (,$(MAKECMDGOALS))
80 -include $(depends)
81 endif
82 ifneq (,$(filter-out clean proper distclean realclean mantainer-clean TAGS \
83                 tar modules, $(MAKECMDGOALS)))
84 -include $(depends)
85 endif