edb9360a4187cb738620993512b2c14984530ab5
[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 -include $(ASTTOPDIR)/makeopts
19
20 .PHONY: dist-clean
21
22 ifeq ($(NOISY_BUILD),)
23    ECHO_PREFIX=@
24    CMD_PREFIX=@
25 else
26    ECHO_PREFIX=@\# 
27    CMD_PREFIX=
28 endif
29
30 ifeq ($(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS)),)
31 # More GSM codec optimization
32 # Uncomment to enable MMXTM optimizations for x86 architecture CPU's
33 # which support MMX instructions.  This should be newer pentiums,
34 # ppro's, etc, as well as the AMD K6 and K7.  
35 #K6OPT=-DK6OPT
36
37 OPTIMIZE?=-O6
38 ASTCFLAGS+=$(OPTIMIZE)
39 endif
40
41 %.o: %.c
42         $(ECHO_PREFIX) echo "   [CC] $< -> $@"
43 ifeq ($(AST_DEVMODE),yes)
44         $(CMD_PREFIX) $(CC) -o $@ -c $< $(PTHREAD_CFLAGS) $(ASTCFLAGS) -MMD -MT $@ -MF .$(subst /,_,$@).d -MP
45 else
46         $(CMD_PREFIX) $(CC) -o $@ -c $< $(PTHREAD_CFLAGS) $(ASTCFLAGS)
47 endif
48
49 %.o: %.i
50         $(ECHO_PREFIX) echo "   [CC] $< -> $@"
51 ifeq ($(AST_DEVMODE),yes)
52         $(CMD_PREFIX) $(CC) -o $@ -c $< $(PTHREAD_CFLAGS) $(ASTCFLAGS) -MMD -MT $@ -MF .$(subst /,_,$@).d -MP
53 else
54         $(CMD_PREFIX) $(CC) -o $@ -c $< $(PTHREAD_CFLAGS) $(ASTCFLAGS)
55 endif
56
57 %.i: %.c
58         $(ECHO_PREFIX) echo "   [CC] $< -> $@"
59 ifeq ($(AST_DEVMODE),yes)
60         $(CMD_PREFIX) $(CC) -o $@ -E $< $(PTHREAD_CFLAGS) $(ASTCFLAGS) -MMD -MT $@ -MF .$(subst /,_,$@).d -MP
61 else
62         $(CMD_PREFIX) $(CC) -o $@ -E $< $(PTHREAD_CFLAGS) $(ASTCFLAGS)
63 endif
64
65 %.o: %.s
66         $(ECHO_PREFIX) echo "   [AS] $< -> $@"
67 ifeq ($(AST_DEVMODE),yes)
68         $(CMD_PREFIX) $(CC) -o $@ -c $< $(PTHREAD_CFLAGS) $(ASTCFLAGS) -MMD -MT $@ -MF .$(subst /,_,$@).d -MP
69 else
70         $(CMD_PREFIX) $(CC) -o $@ -c $< $(PTHREAD_CFLAGS) $(ASTCFLAGS)
71 endif
72
73 %.oo: %.cc
74         $(ECHO_PREFIX) echo "   [CXX] $< -> $@"
75 ifeq ($(AST_DEVMODE),yes)
76         $(CMD_PREFIX) $(CXX) -o $@ -c $< $(PTHREAD_CFLAGS) $(filter-out -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations,$(ASTCFLAGS)) -MMD -MT $@ -MF .$(subst /,_,$@).d -MP
77 else
78         $(CMD_PREFIX) $(CXX) -o $@ -c $< $(PTHREAD_CFLAGS) $(filter-out -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations,$(ASTCFLAGS))
79 endif
80
81 %.c: %.y
82         $(ECHO_PREFIX) echo "   [BISON] $< -> $@"
83         $(CMD_PREFIX) bison -o $@ -d --name-prefix=ast_yy $<
84
85 %.c: %.fl
86         $(ECHO_PREFIX) echo "   [FLEX] $< -> $@"
87         $(CMD_PREFIX) flex -o $@ --full $<
88
89 %.so: %.o
90         $(ECHO_PREFIX) echo "   [LD] $^ -> $@"
91         $(CMD_PREFIX) $(CC) $(STATIC_BUILD) -o $@ $(PTHREAD_CFLAGS) $(ASTLDFLAGS) $(SOLINK) $^ $(PTHREAD_LIBS) $(LIBS)
92
93 %.so: %.oo
94         $(ECHO_PREFIX) echo "   [LDXX] $^ -> $@"
95         $(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(PTHREAD_CFLAGS) $(ASTLDFLAGS) $(SOLINK) $^ $(PTHREAD_LIBS) $(LIBS)
96
97 %.eo: %.o
98         $(ECHO_PREFIX) echo "   [EMBED] $< -> $@"
99         $(CMD_PREFIX) $(ASTTOPDIR)/build_tools/make_linker_eo_script $* > .$@.ld
100         $(CMD_PREFIX) $(LD) -r -T .$@.ld -o $@ $<
101         $(CMD_PREFIX) rm -f .$@.ld
102
103 %.eoo: %.o
104         $(ECHO_PREFIX) echo "   [EMBED] $< -> $@"
105         $(CMD_PREFIX) $(ASTTOPDIR)/build_tools/make_linker_eo_script $* > .$@.ld
106         $(CMD_PREFIX) $(LD) -r -T .$@.ld -o $@ $<
107         $(CMD_PREFIX) rm -f .$@.ld
108
109 %: %.o
110         $(ECHO_PREFIX) echo "   [LD] $^ -> $@"
111         $(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(PTHREAD_CFLAGS) $(ASTLDFLAGS) $^ $(PTHREAD_LIBS) $(LIBS)
112
113 dist-clean::