]> git.zerfleddert.de Git - amt/blob - mk/Compile.mk
import amtterm-1.0
[amt] / mk / Compile.mk
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
Impressum, Datenschutz