]>
Commit | Line | Data |
---|---|---|
1 | # | |
2 | # some rules to compile stuff ... | |
3 | # | |
4 | # (c) 2002-2006 Gerd Hoffmann <kraxel@suse.de> | |
5 | # | |
6 | # main features: | |
7 | # * autodependencies via "cpp -MD" | |
8 | # * fancy, non-verbose output | |
9 | # | |
10 | # This file is public domain. No warranty. If it breaks you keep | |
11 | # both pieces. | |
12 | # | |
13 | ######################################################################## | |
14 | ||
15 | # verbose yes/no | |
16 | verbose ?= no | |
17 | ||
18 | # dependency files | |
19 | tmpdep = mk/$(subst /,_,$*).tmp | |
20 | depfile = mk/$(subst /,_,$*).dep | |
21 | depfiles = mk/*.dep | |
22 | ||
23 | compile_c = $(CC) $(CFLAGS) -Wp,-MD,$(tmpdep) -c -o $@ $< | |
24 | compile_cc = $(CXX) $(CXXFLAGS) -Wp,-MD,$(tmpdep) -c -o $@ $< | |
25 | fixup_deps = sed -e "s|.*\.o:|$@:|" < $(tmpdep) > $(depfile) && rm -f $(tmpdep) | |
26 | cc_makedirs = mkdir -p $(dir $@) $(dir $(depfile)) | |
27 | ||
28 | link_app = $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS) | |
29 | link_so = $(CC) $(LDFLAGS) -shared -Wl,-soname,$(@F) -o $@ $^ $(LDLIBS) | |
30 | ar_lib = rm -f $@ && ar -r $@ $^ && ranlib $@ | |
31 | ||
32 | moc_h = $(MOC) $< -o $@ | |
33 | msgfmt_po = msgfmt -o $@ $< | |
34 | ||
35 | # non-verbose output | |
36 | ifeq ($(verbose),no) | |
37 | echo_compile_c = echo " CC " $@ | |
38 | echo_compile_cc = echo " CXX " $@ | |
39 | echo_link_app = echo " LD " $@ | |
40 | echo_link_so = echo " LD " $@ | |
41 | echo_ar_lib = echo " AR " $@ | |
42 | echo_moc_h = echo " MOC " $@ | |
43 | echo_msgfmt_po = echo " MSGFMT " $@ | |
44 | else | |
45 | echo_compile_c = echo $(compile_c) | |
46 | echo_compile_cc = echo $(compile_cc) | |
47 | echo_link_app = echo $(link_app) | |
48 | echo_link_so = echo $(link_so) | |
49 | echo_ar_lib = echo $(ar_lib) | |
50 | echo_moc_h = echo $(moc_h) | |
51 | echo_msgfmt_po = echo $(msgfmt_po) | |
52 | endif | |
53 | ||
54 | %.o: %.c | |
55 | @$(cc_makedirs) | |
56 | @$(echo_compile_c) | |
57 | @$(compile_c) | |
58 | @$(fixup_deps) | |
59 | ||
60 | %.o: %.cc | |
61 | @$(cc_makedirs) | |
62 | @$(echo_compile_cc) | |
63 | @$(compile_cc) | |
64 | @$(fixup_deps) | |
65 | ||
66 | %.o: %.cpp | |
67 | @$(cc_makedirs) | |
68 | @$(echo_compile_cc) | |
69 | @$(compile_cc) | |
70 | @$(fixup_deps) | |
71 | ||
72 | ||
73 | %.so: %.o | |
74 | @$(echo_link_so) | |
75 | @$(link_so) | |
76 | ||
77 | %: %.o | |
78 | @$(echo_link_app) | |
79 | @$(link_app) | |
80 | ||
81 | %.moc : %.h | |
82 | @$(echo_moc_h) | |
83 | @$(moc_h) | |
84 | ||
85 | %.mo : %.po | |
86 | @$(echo_msgfmt_po) | |
87 | @$(msgfmt_po) | |
88 |