use a couple of variables to remove duplicate definitions
[asterisk/asterisk.git] / Makefile.rules
1 #
2 # Asterisk -- A telephony toolkit for Linux.
3
4 # Makefile rules
5 #
6 # Copyright (C) 2006, Digium, Inc.
7 #
8 # Kevin P. Fleming <kpfleming@digium.com>
9 #
10 # This program is free software, distributed under the terms of
11 # the GNU General Public License
12 #
13
14 # Each command is preceded by a short comment on what to do.
15 # Prefixing one or the other with @\# or @ or nothing makes the desired
16 # behaviour. ECHO_PREFIX prefixes the comment, CMD_PREFIX prefixes the command.
17
18 ifeq ($(NOISY_BUILD),)
19    ECHO_PREFIX=@
20    CMD_PREFIX=@
21 else
22    ECHO_PREFIX=@\# 
23    CMD_PREFIX=
24 endif
25
26 define ast_make_o_c
27 $(1): $(2)
28         $(ECHO_PREFIX) echo "   [CC] $$< -> $$@"
29         $(CMD_PREFIX) $$(CC) -o $$@ -c $$< $$(CFLAGS)
30 endef
31
32 define ast_make_oo_cc
33 $(1): $(2)
34         $(ECHO_PREFIX) echo "   [CXX] $$< -> $$@"
35         $(CMD_PREFIX) $$(CXX) -o $$@ -c $$< $$(CFLAGS)
36 endef
37
38 define ast_make_c_y
39 $(1): $(2)
40         $(ECHO_PREFIX) echo "   [BISON] $$< -> $$@"
41         $(CMD_PREFIX) bison -o $$@ -d --name-prefix=ast_yy $$<
42 endef
43
44 define ast_make_c_fl
45 $(1): $(2)
46         $(ECHO_PREFIX) echo "   [FLEX] $$< -> $$@"
47         $(CMD_PREFIX) flex -o $$@ --full $$<
48 endef
49
50 define ast_make_so_o
51 $(1): $(2)
52         $(ECHO_PREFIX) echo "   [LD] $$^ -> $$@"
53         $(CMD_PREFIX) $$(CC) -o $$@ $$(LDFLAGS) $$(SOLINK) $$^ $$(LIBS)
54 endef
55
56 define ast_make_so_oo
57 $(1): $(2)
58         $(ECHO_PREFIX) echo "   [LDXX] $$^ -> $$@"
59         $(CMD_PREFIX) $$(CXX) -o $$@ $$(LDFLAGS) $$(SOLINK) $$^ $$(LIBS)
60 endef
61
62 define ast_make_a_o
63 $(1): $(2)
64         $(ECHO_PREFIX) echo "   [AR] $$^ -> $$@"
65         $(CMD_PREFIX) $$(AR) cr $$@ $$^
66         $(CMD_PREFIX) $$(RANLIB) $$@
67 endef
68
69 define ast_make_final
70 $(1): $(2)
71         $(ECHO_PREFIX) echo "   [LD] $$^ -> $$@"
72         $(CMD_PREFIX) $$(CC) -o $$@ $$(LDFLAGS) $$^ $$(LIBS)
73 endef
74
75 define ast_make_final_host
76 $(1): $(2)
77         $(ECHO_PREFIX) echo "   [LD] $$^ -> $$@"
78         $(CMD_PREFIX) $$(HOST_CC) -o $$@ $$(CFLAGS) $$(LDFLAGS) $$^ $$(LIBS)
79 endef
80
81 $(eval $(call ast_make_o_c,%.o,%.c))
82
83 $(eval $(call ast_make_oo_cc,%.oo,%.cc))
84
85 $(eval $(call ast_make_so_o,%.so,%.o))
86
87 $(eval $(call ast_make_so_oo,%.so,%.oo))
88
89 $(eval $(call ast_make_final,%,%.o))
90
91 $(eval $(call ast_make_c_y,%.c,%.y))
92
93 $(eval $(call ast_make_c_fl,%.c,%.fl))