@ -3,7 +3,7 @@
#
# Makefile rules
#
# Copyright (C) 2006 , Digium, Inc.
# Copyright (C) 2006 -2008 , Digium, Inc.
#
# Kevin P. Fleming <kpfleming@digium.com>
#
@ -11,7 +11,6 @@
# the GNU General Public License
#
# Rules for various build phases.
# Each command is preceded by a short comment on what to do.
# Prefixing one or the other with @\# or @ or nothing makes the desired
# behaviour. ECHO_PREFIX prefixes the comment, CMD_PREFIX prefixes the command.
@ -21,7 +20,7 @@
.PHONY : dist -clean
# extra cflags to build dependencies. Recursively expanded.
MAKE_DEPS = -MD -MT $@ -MF .$( subst /,_,$@ ) .d -MP
MAKE_DEPS = -MD -MT $@ -MF .$( subst /,_,$@ ) .d -MP
i f e q ( $( NOISY_BUILD ) , )
ECHO_PREFIX = @
@ -31,6 +30,8 @@ else
CMD_PREFIX =
e n d i f
OPTIMIZE ?= -O6
i f e q ( $( findstring DONT_OPTIMIZE ,$ ( MENUSELECT_CFLAGS ) ) , )
# More GSM codec optimization
# Uncomment to enable MMXTM optimizations for x86 architecture CPU's
@ -38,30 +39,75 @@ ifeq ($(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS)),)
# ppro's, etc, as well as the AMD K6 and K7.
#K6OPT=-DK6OPT
OPTIMIZE?= -O6
ASTCFLAGS += $( OPTIMIZE)
e n d i f
# build rules for various targets
# shortcuts for common combinations of flags; these must be recursively expanded so that
# per-target settings will be applied
CC_CFLAGS = $( PTHREAD_CFLAGS) $( ASTCFLAGS)
CXX_CFLAGS = $( PTHREAD_CFLAGS) $( filter-out -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $( AST_DECLARATION_AFTER_STATEMENT) ,$( ASTCFLAGS) )
CC_LDFLAGS_SO = $( PTHREAD_CFLAGS) $( ASTLDFLAGS) $( SOLINK)
CXX_LDFLAGS_SO = $( PTHREAD_CFLAGS) $( ASTLDFLAGS) $( SOLINK)
CC_LIBS = $( PTHREAD_LIBS) $( LIBS)
CXX_LIBS = $( PTHREAD_LIBS) $( LIBS)
# determine whether to double-compile so that the optimizer can report code path problems
# this is only done when developer mode and DONT_OPTIMIZE are both enabled
# in that case, we run the preprocessor to produce a .i or .ii file from the source
# code, then compile once with optimizer enabled (and the output to /dev/null),
# and if that doesn't fail then compile again with optimizer disabled
i f e q ( $( findstring DONT_OPTIMIZE ,$ ( MENUSELECT_CFLAGS ) ) $( AST_DEVMODE ) , D O N T _ O P T I M I Z E y e s )
COMPILE_DOUBLE = yes
e n d i f
%.o : %.s
$( ECHO_PREFIX) echo " [AS] $< -> $@ "
i f e q ( $( COMPILE_DOUBLE ) , y e s )
$( CMD_PREFIX) $( CC) -o /dev/null -c $< $( CC_CFLAGS) $( OPTIMIZE)
e n d i f
$( CMD_PREFIX) $( CC) -o $@ -c $< $( CC_CFLAGS)
%.o : %.i
$( ECHO_PREFIX) echo " [CCi] $< -> $@ "
$( CMD_PREFIX) $( CC) -o $@ -c $< $( PTHREAD_CFLAGS) $( ASTCFLAGS) $( MAKE_DEPS)
i f e q ( $( COMPILE_DOUBLE ) , y e s )
$( CMD_PREFIX) $( CC) -o /dev/null -c $< $( CC_CFLAGS) $( OPTIMIZE)
e n d i f
$( CMD_PREFIX) $( CC) -o $@ -c $< $( CC_CFLAGS)
%.o : %.c
$( ECHO_PREFIX) echo " [CC] $< -> $@ "
$( CMD_PREFIX) $( CC) -o $@ -c $< $( PTHREAD_CFLAGS) $( ASTCFLAGS) $( MAKE_DEPS)
i f e q ( $( COMPILE_DOUBLE ) , y e s )
$( CMD_PREFIX) $( CC) -o $( @:%.o= %.i) -E $< $( CC_CFLAGS) $( MAKE_DEPS)
$( CMD_PREFIX) $( CC) -o /dev/null -c $( @:%.o= %.i) $( CC_CFLAGS) $( OPTIMIZE)
$( CMD_PREFIX) $( CC) -o $@ -c $( @:%.o= %.i) $( CC_CFLAGS)
e l s e
$( CMD_PREFIX) $( CC) -o $@ -c $< $( CC_CFLAGS) $( MAKE_DEPS)
e n d i f
%.i : %.c
$( ECHO_PREFIX) echo " [CPP] $< -> $@ "
$( CMD_PREFIX) $( CC) -o $@ -E $< $( PTHREAD_CFLAGS) $( ASTCFLAGS) $( MAKE_DEPS)
$( CMD_PREFIX) $( CC) -o $@ -E $< $( CC_ CFLAGS) $( MAKE_DEPS)
%.o : %.s
$( ECHO_PREFIX) echo " [AS] $< -> $@ "
$( CMD_PREFIX) $( CC) -o $@ -c $< $( PTHREAD_CFLAGS) $( ASTCFLAGS) $( MAKE_DEPS)
%.oo : %.ii
$( ECHO_PREFIX) echo " [CXXi] $< -> $@ "
i f e q ( $( COMPILE_DOUBLE ) , y e s )
$( CMD_PREFIX) $( CXX) -o /dev/null -c $< $( CXX_CFLAGS) $( OPTIMIZE)
e n d i f
$( CMD_PREFIX) $( CXX) -o $@ -c $< $( CXX_CFLAGS)
%.oo : %.cc
$( ECHO_PREFIX) echo " [CXX] $< -> $@ "
$( CMD_PREFIX) $( CXX) -o $@ -c $< $( PTHREAD_CFLAGS) $( filter-out -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $( AST_DECLARATION_AFTER_STATEMENT) ,$( ASTCFLAGS) ) $( MAKE_DEPS)
i f e q ( $( COMPILE_DOUBLE ) , y e s )
$( CMD_PREFIX) $( CXX) -o $( @:%.oo= %.ii) -E $< $( CXX_CFLAGS) $( MAKE_DEPS)
$( CMD_PREFIX) $( CXX) -o /dev/null -c $( @:%.oo= %.ii) $( CXX_CFLAGS) $( MAKE_DEPS) $( OPTIMIZE)
$( CMD_PREFIX) $( CXX) -o $@ -c $( @:%.oo= %.ii) $( CXX_CFLAGS) $( MAKE_DEPS)
e l s e
$( CMD_PREFIX) $( CXX) -o $@ -c $< $( CXX_CFLAGS) $( MAKE_DEPS)
e n d i f
%.ii : %.cc
$( ECHO_PREFIX) echo " [CPP] $< -> $@ "
$( CMD_PREFIX) $( CXX) -o $@ -E $< $( CXX_CFLAGS) $( MAKE_DEPS)
%.c : %.y
$( ECHO_PREFIX) echo " [BISON] $< -> $@ "
@ -73,11 +119,11 @@ endif
%.so : %.o
$( ECHO_PREFIX) echo " [LD] $^ -> $@ "
$( CMD_PREFIX) $( CC) $( STATIC_BUILD) -o $@ $( PTHREAD_CFLAGS) $( ASTLDFLAGS) $( SOLINK) $^ $( PTHREAD_LIBS) $( LIBS)
$( CMD_PREFIX) $( CC) $( STATIC_BUILD) -o $@ $( CC_LDFLAGS_SO) $^ $( CC_ LIBS)
%.so : %.oo
$( ECHO_PREFIX) echo " [LDXX] $^ -> $@ "
$( CMD_PREFIX) $( CXX) $( STATIC_BUILD) -o $@ $( PTHREAD_CFLAGS) $( ASTLDFLAGS) $( SOLINK) $^ $( PTHREAD_LIBS) $( LIBS)
$( CMD_PREFIX) $( CXX) $( STATIC_BUILD) -o $@ $( CXX_LDFLAGS_SO) $^ $( CXX_ LIBS)
%.eo : %.o
$( ECHO_PREFIX) echo " [EMBED] $< -> $@ "
@ -93,6 +139,6 @@ endif
% : %.o
$( ECHO_PREFIX) echo " [LD] $^ -> $@ "
$( CMD_PREFIX) $( CXX) $( STATIC_BUILD) -o $@ $( PTHREAD_CFLAGS) $( ASTLDFLAGS) $^ $( PTHREAD_LIBS) $( LIBS)
$( CMD_PREFIX) $( CXX) $( STATIC_BUILD) -o $@ $( PTHREAD_CFLAGS) $( ASTLDFLAGS) $^ $( CXX_ LIBS)
dist-clean :: clean