-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathMakefile.rules
97 lines (78 loc) · 2.04 KB
/
Makefile.rules
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#
# common Makefile rules, included by main Makefile & the modules
#
#
# Uses: NAME, ALLDEP, CC, CFLAGS, DEFS, LIBS, MKDEP
# (all this must be defined previously!, see Makefile.defs & Makefile)
#
# History:
# --------
# 2010-01-08 imported (bogdan)
sources= $(filter %.c,$(cfg_gen_files)) \
$(filter-out $(cfg_gen_files), $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)))
objs= $(sources:.c=.o)
depends= $(sources:.c=.d)
#implicit rules
%.o: %.c $(ALLDEP)
@echo "Compiling $<"
$(Q)$(CC) $(CFLAGS) $(DEFS) -c $< -o $@
%.d: %.c $(ALLDEP)
@set -e; $(MKDEP) $(DEFS) $< \
| sed 's#\(\($*D)\)\?$(*F)\)\.o[ :]*#$*.o $@ : #g' > $@; \
[ -s $@ ] || rm -f $@
# normal rules
$(NAME): $(objs) $(ALLDEP)
@echo "Linking $(NAME)"
$(Q)$(LD) $(LDFLAGS) $(objs) $(LIBS) -o $(NAME)
.PHONY: all
all: $(NAME)
.PHONY: dep
dep: $(depends)
.NOTPARALLEL: $(cfg_gen_files)
$(cfg_gen_files):
-@if [ "$(MAKELEVEL)"=="0" -a -d "$(CFG_DIR)" ]; then \
$(MAKE) --no-print-directory -C $(CFG_DIR) ; \
fi
.PHONY: clean
clean:
-@rm -f $(objs) $(NAME) $(objs:.o=.il) 2>/dev/null
-@if [ "$(MAKELEVEL)"=="0" ]; then \
for lib in $(protos) "" ; do \
if [ -d "$$lib" -a -f "$$lib/Makefile" ]; then \
$(MAKE) -C $$lib clean ; \
fi ; \
done; \
for lib in $(modules) "" ; do \
if [ -d "$$lib" -a -f "$$lib/Makefile" ]; then \
$(MAKE) -C $$lib clean ; \
fi ; \
done; \
fi;
.PHONY: proper
.PHONY: distclean
.PHONY: realclean
proper realclean distclean: clean
-@rm -f $(depends) $(cfg_gen_files) 2>/dev/null
-@rm -f TAGS tags *.dbg .*.swp
-@if [ "$(MAKELEVEL)"=="0" ]; then \
for lib in $(protos) "" ; do \
if [ -d "$$lib" -a -f "$$lib/Makefile" ]; then \
$(MAKE) -C $$lib proper ; \
fi ; \
done; \
for lib in $(modules) "" ; do \
if [ -d "$$lib" -a -f "$$lib/Makefile" ]; then \
$(MAKE) -C $$lib proper ; \
fi ; \
done; \
fi;
.PHONY: TAGS
TAGS:
$(MKTAGS)
ifeq (,$(MAKECMDGOALS))
-include $(depends)
endif
ifneq (,$(filter-out clean proper distclean realclean mantainer-clean TAGS \
tar , $(MAKECMDGOALS)))
-include $(depends)
endif