Newer
Older
#
# Asterisk -- A telephony toolkit for Linux.
#
# Top level Makefile
#
Kevin P. Fleming
committed
# Mark Spencer <markster@digium.com>
#
# This program is free software, distributed under the terms of
# the GNU General Public License
#
.EXPORT_ALL_VARIABLES:
# Create OPTIONS variable
OPTIONS=
# If cross compiling, define these to suit
#CROSS_COMPILE=/opt/montavista/pro/devkit/arm/xscale_be/bin/xscale_be-
#CROSS_COMPILE_BIN=/opt/montavista/pro/devkit/arm/xscale_be/bin/
#CROSS_COMPILE_TARGET=/opt/montavista/pro/devkit/arm/xscale_be/target
#CROSS_ARCH=Linux
#CROSS_PROC=arm
#SUB_PROC=xscale # or maverick
# Pentium Pro Optimize
#PROC=i686
# Pentium & VIA processors optimize
#PROC=i586
#PROC=k6
#PROC=ppc
Kevin P. Fleming
committed
HOST_CC=gcc
ifeq ($(CROSS_COMPILE),)
OSARCH=$(shell uname -s)
OSARCH=$(CROSS_ARCH)
PWD=$(shell pwd)
Kevin P. Fleming
committed
# Remember the MAKELEVEL at the top
MAKETOPLEVEL?=$(MAKELEVEL)
Kevin P. Fleming
committed
ifeq ($(findstring dont-optimize,$(MAKECMDGOALS)),)
# More GSM codec optimization
# Uncomment to enable MMXTM optimizations for x86 architecture CPU's
# which support MMX instructions. This should be newer pentiums,
# ppro's, etc, as well as the AMD K6 and K7.
#K6OPT = -DK6OPT
else
# Stack backtraces, while useful for debugging, are incompatible with optimizations
ifeq (${OSARCH},Linux)
CFLAGS+=-DSTACK_BACKTRACES
endif
# Overwite config files on "make samples"
# Include debug and macro symbols in the executables (-g) and profiling info (-pg)
# Set NOCRYPTO to yes if you do not want to have crypto support or dependencies
# If you are running a radio application, define RADIO_RELAX so that the DTMF
# will be received more reliably
#OPTIONS += -DRADIO_RELAX
# If you don't have a lot of memory (e.g. embedded Asterisk), define LOW_MEMORY
# to reduce the size of certain static buffers
#ifneq ($(CROSS_COMPILE),)
#OPTIONS += -DLOW_MEMORY
#endif
Matthew Fredrickson
committed
# Asterisk SMDI integration
WITH_SMDI = 1
Kevin P. Fleming
committed
DEBUG_THREADS = #-DDUMP_SCHEDULER #-DDEBUG_SCHEDULER #-DDEBUG_THREADS #-DDO_CRASH #-DDETECT_DEADLOCKS
# If you want to debug channel locking, try this (depends on code using
# ast_channel_lock and companions to work)
DEBUG_THREADS += #-DDEBUG_CHANNEL_LOCKS
# Uncomment next one to enable ast_frame tracing (for debugging)
TRACE_FRAMES = #-DTRACE_FRAMES
# Where to install asterisk after compiling
# Default -> leave empty
INSTALL_PREFIX?=
# Staging directory
# Files are copied here temporarily during the install process
# For example, make DESTDIR=/tmp/asterisk woud put things in
# /tmp/asterisk/etc/asterisk
# !!! Watch out, put no spaces or comments after the value !!!
Martin Pycko
committed
# Original busydetect routine
BUSYDETECT = #-DBUSYDETECT
Martin Pycko
committed
# Improved busydetect routine, comment the previous one if you use this one
Russell Bryant
committed
BUSYDETECT+= #-DBUSYDETECT_MARTIN
Martin Pycko
committed
# Detect the busy signal looking only at tone lengths
# For example if you have 3 beeps 100ms tone, 100ms silence separated by 500 ms of silence
BUSYDETECT+= #-DBUSYDETECT_TONEONLY
# Enforce the detection of busy signal (get rid of false hangups)
Martin Pycko
committed
# Don't use together with -DBUSYDETECT_TONEONLY
BUSYDETECT+= #-DBUSYDETECT_COMPARE_TONE_AND_SILENCE
Olle Johansson
committed
# Define standard directories for various platforms
# These apply if they are not redefined in asterisk.conf
ifeq ($(OSARCH),SunOS)
ASTETCDIR=$(INSTALL_PREFIX)/etc/opt/asterisk
ASTLIBDIR=$(INSTALL_PREFIX)/opt/asterisk/lib
ASTVARLIBDIR=$(INSTALL_PREFIX)/var/opt/asterisk/lib
ASTSPOOLDIR=$(INSTALL_PREFIX)/var/opt/asterisk/spool
ASTLOGDIR=$(INSTALL_PREFIX)/var/opt/asterisk/log
ASTHEADERDIR=$(INSTALL_PREFIX)/opt/asterisk/usr/include/asterisk
ASTBINDIR=$(INSTALL_PREFIX)/opt/asterisk/usr/bin
ASTSBINDIR=$(INSTALL_PREFIX)/opt/asterisk/usr/sbin
ASTVARRUNDIR=$(INSTALL_PREFIX)/var/opt/asterisk/run
ASTMANDIR=$(INSTALL_PREFIX)/opt/asterisk/usr/share/man
Olle Johansson
committed
else
ifeq ($(OSARCH),FreeBSD)
PREFIX?=/usr/local
ASTETCDIR=$(INSTALL_PREFIX)$(PREFIX)/etc/asterisk
ASTLIBDIR=$(INSTALL_PREFIX)$(PREFIX)/lib/asterisk
ASTVARLIBDIR=$(INSTALL_PREFIX)$(PREFIX)/share/asterisk
ASTSPOOLDIR=$(INSTALL_PREFIX)/var/spool/asterisk
ASTLOGDIR=$(INSTALL_PREFIX)/var/log/asterisk
ASTHEADERDIR=$(INSTALL_PREFIX)$(PREFIX)/include/asterisk
ASTBINDIR=$(INSTALL_PREFIX)$(PREFIX)/bin
ASTSBINDIR=$(INSTALL_PREFIX)$(PREFIX)/sbin
ASTVARRUNDIR=$(INSTALL_PREFIX)/var/run
ASTMANDIR=$(INSTALL_PREFIX)$(PREFIX)/man
else
ASTETCDIR=$(INSTALL_PREFIX)/etc/asterisk
ASTLIBDIR=$(INSTALL_PREFIX)/usr/lib/asterisk
ASTVARLIBDIR=$(INSTALL_PREFIX)/var/lib/asterisk
ASTSPOOLDIR=$(INSTALL_PREFIX)/var/spool/asterisk
ASTLOGDIR=$(INSTALL_PREFIX)/var/log/asterisk
ASTHEADERDIR=$(INSTALL_PREFIX)/usr/include/asterisk
ASTBINDIR=$(INSTALL_PREFIX)/usr/bin
ASTSBINDIR=$(INSTALL_PREFIX)/usr/sbin
ASTVARRUNDIR=$(INSTALL_PREFIX)/var/run
ASTMANDIR=$(INSTALL_PREFIX)/usr/share/man
Olle Johansson
committed
endif
Joshua Colp
committed
ASTDATADIR?=$(ASTVARLIBDIR)
Olle Johansson
committed
# Asterisk.conf is located in ASTETCDIR or by using the -C flag
# when starting Asterisk
ASTCONFPATH=$(ASTETCDIR)/asterisk.conf
MODULES_DIR=$(ASTLIBDIR)/modules
Joshua Colp
committed
AGI_DIR=$(ASTDATADIR)/agi-bin
Olle Johansson
committed
# If you use Apache, you may determine by a grep 'DocumentRoot' of your httpd.conf file
HTTP_DOCSDIR=/var/www/html
# Determine by a grep 'ScriptAlias' of your Apache httpd.conf file
HTTP_CGIDIR=/var/www/cgi-bin
Kevin P. Fleming
committed
ASTCFLAGS=
# Uncomment this to use the older DSP routines
Kevin P. Fleming
committed
#ASTCFLAGS+=-DOLD_DSP_ROUTINES
# If the file .asterisk.makeopts is present in your home directory, you can
Kevin P. Fleming
committed
# include all of your favorite menuselect options so that every time you download
# a new version of Asterisk, you don't have to run menuselect to set them.
# The file /etc/asterisk.makeopts will also be included but can be overridden
Russell Bryant
committed
# by the file in your home directory.
Kevin P. Fleming
committed
GLOBAL_MAKEOPTS=$(wildcard /etc/asterisk.makeopts)
USER_MAKEOPTS=$(wildcard ~/.asterisk.makeopts)
ifneq ($(wildcard menuselect.makeopts),)
include menuselect.makeopts
endif
ifneq ($(wildcard makeopts),)
include makeopts
Russell Bryant
committed
endif
Kevin P. Fleming
committed
ASTCFLAGS+=$(MENUSELECT_CFLAGS)
TOPDIR_CFLAGS=-include include/autoconfig.h
MOD_SUBDIR_CFLAGS=-include ../include/autoconfig.h
# *CLI> show memory allocations [filename]
# *CLI> show memory summary [filename]
ifneq ($(findstring -DMALLOC_DEBUG,$(ASTCFLAGS)),)
TOPDIR_CFLAGS+=-include include/asterisk/astmm.h
MOD_SUBDIR_CFLAGS+=-include ../include/asterisk/astmm.h
endif
Kevin P. Fleming
committed
MOD_SUBDIR_CFLAGS+=-fPIC
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
ifeq ($(PROC),x86_64)
# You must have GCC 3.4 to use k8, otherwise use athlon
PROC=k8
#PROC=athlon
OPTIONS+=-m64
endif
ifeq ($(PROC),sparc64)
#The problem with sparc is the best stuff is in newer versions of gcc (post 3.0) only.
#This works for even old (2.96) versions of gcc and provides a small boost either way.
#A ultrasparc cpu is really v9 but the stock debian stable 3.0 gcc doesn't support it.
#So we go lowest common available by gcc and go a step down, still a step up from
#the default as we now have a better instruction set to work with. - Belgarath
PROC=ultrasparc
OPTIONS+=$(shell if $(CC) -mtune=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-mtune=$(PROC)"; fi)
OPTIONS+=$(shell if $(CC) -mcpu=v8 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-mcpu=v8"; fi)
OPTIONS+=-fomit-frame-pointer
endif
ifeq ($(PROC),arm)
# The Cirrus logic is the only heavily shipping arm processor with a real floating point unit
ifeq ($(SUB_PROC),maverick)
OPTIONS+=-fsigned-char -mcpu=ep9312
else
ifeq ($(SUB_PROC),xscale)
OPTIONS+=-fsigned-char -msoft-float -mcpu=xscale
else
OPTIONS+=-fsigned-char -msoft-float
endif
endif
endif
MPG123TARG=linux
endif
GREP=grep
GREP=/usr/xpg4/bin/grep
M4=/usr/local/bin/m4
endif
INCLUDE+=-Iinclude -I../include
Kevin P. Fleming
committed
ASTCFLAGS+=-pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG) $(INCLUDE) #-DMAKE_VALGRIND_HAPPY
Kevin P. Fleming
committed
ASTCFLAGS+=$(OPTIMIZE)
Kevin P. Fleming
committed
ifeq ($(AST_DEVMODE),yes)
ASTCFLAGS+=-Werror -Wunused
endif
Kevin P. Fleming
committed
ifeq ($(shell gcc -v 2>&1 | grep 'gcc version' | cut -f3 -d' ' | cut -f1 -d.),4)
ASTCFLAGS+= -Wno-pointer-sign
endif
Mark Spencer
committed
ifeq ($(findstring BSD,$(OSARCH)),BSD)
ASTCFLAGS+=-I$(CROSS_COMPILE_TARGET)/usr/local/include -L$(CROSS_COMPILE_TARGET)/usr/local/lib
endif
Mark Spencer
committed
ifneq ($(PROC),ultrasparc)
Kevin P. Fleming
committed
ASTCFLAGS+=$(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
Mark Spencer
committed
endif
Kevin P. Fleming
committed
ASTCFLAGS+=-fsigned-char
Mark Spencer
committed
BSDVERSION=$(shell make -V OSVERSION -f $(CROSS_COMPILE_TARGET)/usr/share/mk/bsd.port.subdir.mk)
ASTCFLAGS+=$(shell if test $(BSDVERSION) -lt 500016 ; then echo "-D_THREAD_SAFE"; fi)
LIBS+=$(shell if test $(BSDVERSION) -lt 502102 ; then echo "-lc_r"; else echo "-pthread"; fi)
ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/spandsp),)
ASTCFLAGS+=-I$(CROSS_COMPILE_TARGET)/usr/local/include/spandsp
endif
MPG123TARG=freebsd
Mark Spencer
committed
endif # FreeBSD
Kevin P. Fleming
committed
ASTCFLAGS+=-pthread
INCLUDE+=-I$(CROSS_COMPILE_TARGET)/usr/pkg/include
MPG123TARG=netbsd
Kevin P. Fleming
committed
ASTCFLAGS+=-pthread
Kevin P. Fleming
committed
ASTCFLAGS+=-Wcast-align -DSOLARIS
INCLUDE+=-Iinclude/solaris-compat -I$(CROSS_COMPILE_TARGET)/usr/local/ssl/include
Kevin P. Fleming
committed
ASTERISKVERSION:=$(shell build_tools/make_version .)
ifneq ($(wildcard .version),)
ASTERISKVERSIONNUM:=$(shell awk -F. '{printf "%02d%02d%02d", $$1, $$2, $$3}' .version)
RPMVERSION:=$(shell sed 's/[-\/:]/_/g' .version)
else
RPMVERSION=unknown
endif
# CVS mirrors of SVN have .svnrevision files showing
# which SVN revision they are based on, and .svnbranch
# showing the branch they are made from
ifneq ($(wildcard .svnrevision),)
ASTERISKVERSIONNUM=999999
else
ifneq ($(wildcard .svn),)
ASTERISKVERSIONNUM=999999
endif
endif
Kevin P. Fleming
committed
ASTCFLAGS+= $(DEBUG_THREADS)
ASTCFLAGS+= $(TRACE_FRAMES)
ASTCFLAGS+= $(MALLOC_DEBUG)
ASTCFLAGS+= $(BUSYDETECT)
ASTCFLAGS+= $(OPTIONS)
Kevin P. Fleming
committed
ifeq ($(findstring dont-optimize,$(MAKECMDGOALS)),)
Kevin P. Fleming
committed
ASTCFLAGS+= -fomit-frame-pointer
Kevin P. Fleming
committed
MOD_SUBDIRS=res channels pbx apps codecs formats cdr funcs
SUBDIRS:=$(MOD_SUBDIRS) utils stdtime agi
OBJS=io.o sched.o logger.o frame.o loader.o config.o channel.o \
translate.o file.o pbx.o cli.o md5.o term.o \
ulaw.o alaw.o callerid.o fskmodem.o image.o app.o \
Matthew Fredrickson
committed
cdr.o tdd.o acl.o rtp.o udptl.o manager.o asterisk.o \
dsp.o chanvars.o indications.o autoservice.o db.o privacy.o \
astmm.o enum.o srv.o dns.o aescrypt.o aestab.o aeskey.o \
utils.o plc.o jitterbuf.o dnsmgr.o devicestate.o \
netsock.o slinfactory.o ast_expr2.o ast_expr2f.o \
cryptostub.o sha1.o http.o
# we need to link in the objects statically, not as a library, because
# otherwise modules will not have them available if none of the static
# objects use it.
OBJS+= stdtime/localtime.o
# At the moment say.o is an optional component which can be overridden
# by a module.
OBJS+= say.o
Kevin P. Fleming
committed
ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/sys/poll.h),)
OBJS+= poll.o
ASTCFLAGS+=-DPOLLCOMPAT
endif
ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/dlfcn.h),)
Kevin P. Fleming
committed
ASTCFLAGS+=-DDLFCNCOMPAT
endif
LIBS+=-ldl -lpthread -lncurses -lm -lresolv #-lnjamd
else
LIBS+=-lncurses -lm
LIBS+=-lresolv
Kevin P. Fleming
committed
ASTCFLAGS+=-D__Darwin__
AUDIO_LIBS=-framework CoreAudio
ASTLINK=-Wl,-dynamic
SOLINK=-dynamic -bundle -undefined suppress -force_flat_namespace
# Mac on Intel CoreDuo does not need poll compatibility layer
OBJS+=poll.o
ASTCFLAGS+=-DPOLLCOMPAT
endif
ASTLINK=-Wl,-E
SOLINK=-shared -Xlinker -x
ifeq ($(findstring BSD,$(OSARCH)),BSD)
SOLINK+=-L$(CROSS_COMPILE_TARGET)/usr/local/lib
endif
LIBS+=-lcrypto
LIBS+=-lpthread -lcrypto -lm -L$(CROSS_COMPILE_TARGET)/usr/pkg/lib -lncurses
LIBS+=-lcrypto -lpthread -lm -lncurses
LIBS+=-lpthread -ldl -lnsl -lsocket -lresolv -L$(CROSS_COMPILE_TARGET)/usr/local/ssl/lib
OBJS+=strcompat.o
ASTLINK=
SOLINK=-shared -fpic -L$(CROSS_COMPILE_TARGET)/usr/local/ssl/lib
Kevin P. Fleming
committed
ifeq ($(MAKETOPLEVEL),$(MAKELEVEL))
Kevin P. Fleming
committed
CFLAGS+=$(ASTCFLAGS) $(TOPDIR_CFLAGS)
Kevin P. Fleming
committed
endif
# This is used when generating the doxygen documentation
Kevin P. Fleming
committed
ifneq ($(DOT),:)
HAVEDOT=yes
else
HAVEDOT=no
endif
_all: all
@echo " +--------- Asterisk Build Complete ---------+"
@echo " + Asterisk has successfully been built, but +"
@echo " + cannot be run before being installed by +"
@echo " + running: +"
@echo " + +"
Kevin P. Fleming
committed
@echo " + make install +"
@echo " +-------------------------------------------+"
Kevin P. Fleming
committed
all: include/autoconfig.h menuselect.makeopts cleantest depend asterisk subdirs
configure:
-@./bootstrap.sh
include/autoconfig.h: configure
@CFLAGS="" ./configure
@echo "****"
@echo "**** The configure script was just executed, so 'make' needs to be"
@echo "**** restarted."
@echo "****"
Kevin P. Fleming
committed
makeopts: configure
@CFLAGS="" ./configure
@echo "****"
@echo "**** The configure script was just executed, so 'make' needs to be"
@echo "**** restarted."
@echo "****"
Kevin P. Fleming
committed
menuselect.makeopts: build_tools/menuselect makeopts.xml
@build_tools/menuselect --check-deps ${GLOBAL_MAKEOPTS} ${USER_MAKEOPTS} $@
#ifneq ($(wildcard tags),)
ctags: tags
#endif
ifneq ($(wildcard TAGS),)
all: TAGS
endif
cd editline && unset CFLAGS LIBS && ./configure ; \
Kevin P. Fleming
committed
editline/libedit.a:
cd editline && unset CFLAGS LIBS && test -f config.h || ./configure
Kevin P. Fleming
committed
db1-ast/libdb1.a:
Kevin P. Fleming
committed
$(MAKE) -C db1-ast libdb1.a
include .depend
ifneq ($(wildcard .tags-depend),)
include .tags-depend
bison -d --name-prefix=ast_yy ast_expr2.y -o ast_expr2.c
Kevin P. Fleming
committed
flex --full ast_expr2.fl
testexpr2: ast_expr2f.c ast_expr2.c ast_expr2.h
gcc -g -c -DSTANDALONE ast_expr2f.c
gcc -g -c -DSTANDALONE ast_expr2.c
gcc -g -o testexpr2 ast_expr2f.o ast_expr2.o
rm ast_expr2.o ast_expr2f.o
manpage: asterisk.8
asterisk.8: asterisk.sgml
rm -f asterisk.8
docbook2man asterisk.sgml
mv ./*.8 asterisk.8
asterisk.pdf: asterisk.sgml
docbook2pdf asterisk.sgml
asterisk.ps: asterisk.sgml
docbook2ps asterisk.sgml
asterisk.html: asterisk.sgml
docbook2html asterisk.sgml
mv r1.html asterisk.html
asterisk.txt: asterisk.sgml
docbook2txt asterisk.sgml
Kevin P. Fleming
committed
defaults.h: makeopts
build_tools/make_defaults_h > $@.tmp
if cmp -s $@.tmp $@ ; then echo ; else \
Kevin P. Fleming
committed
mv $@.tmp $@ ; \
fi
rm -f $@.tmp
Kevin P. Fleming
committed
include/asterisk/version.h:
build_tools/make_version_h > $@.tmp
if cmp -s $@.tmp $@ ; then echo; else \
Kevin P. Fleming
committed
mv $@.tmp $@ ; \
fi
rm -f $@.tmp
Kevin P. Fleming
committed
stdtime/libtime.a:
CFLAGS="$(ASTCFLAGS) $(MOD_SUBDIR_CFLAGS)" $(MAKE) -C stdtime libtime.a
Kevin P. Fleming
committed
asterisk: editline/libedit.a db1-ast/libdb1.a stdtime/libtime.a $(OBJS)
build_tools/make_build_h > include/asterisk/build.h.tmp
if cmp -s include/asterisk/build.h.tmp include/asterisk/build.h ; then echo ; else \
mv include/asterisk/build.h.tmp include/asterisk/build.h ; \
fi
rm -f include/asterisk/build.h.tmp
$(CC) -c -o buildinfo.o $(CFLAGS) buildinfo.c
$(CC) $(DEBUG) $(ASTOBJ) $(ASTLINK) $(OBJS) buildinfo.o $(LIBEDIT) db1-ast/libdb1.a stdtime/libtime.a $(LIBS)
$(CC) $(AUDIO_LIBS) -o muted muted.o
Kevin P. Fleming
committed
for x in $(MOD_SUBDIRS); do CFLAGS="$(ASTCFLAGS) $(MOD_SUBDIR_CFLAGS)" $(MAKE) -C $$x || exit 1 ; done
CFLAGS="$(ASTCFLAGS)" $(MAKE) -C utils
CFLAGS="$(ASTCFLAGS) -include ../include/autoconfig.h" $(MAKE) -C agi
Kevin P. Fleming
committed
clean-depend:
for x in $(SUBDIRS); do $(MAKE) -C $$x clean-depend || exit 1 ; done
rm -f .depend .tags-depend
clean: clean-depend
for x in $(SUBDIRS); do $(MAKE) -C $$x clean || exit 1 ; done
Kevin P. Fleming
committed
rm -f *.o *.so asterisk
Kevin P. Fleming
committed
rm -f defaults.h
rm -f include/asterisk/build.h
rm -f include/asterisk/version.h
Kevin P. Fleming
committed
rm -f .tags-sources tags TAGS
@if [ -f editline/Makefile ]; then $(MAKE) -C editline distclean ; fi
@if [ -d mpg123-0.59r ]; then $(MAKE) -C mpg123-0.59r clean; fi
$(MAKE) -C stdtime clean
Kevin P. Fleming
committed
dist-clean: clean
rm -f menuselect.makeopts makeopts makeopts.xml
rm -f config.log config.status
rm -f include/autoconfig.h
$(MAKE) -C mxml clean
$(MAKE) -C build_tools dist-clean
if [ x`$(ID) -un` = xroot ]; then sh build_tools/mkpkgconfig $(DESTDIR)/usr/lib/pkgconfig; fi
Kevin P. Fleming
committed
# Should static HTTP be installed during make samples or even with its own target ala
# webvoicemail? There are portions here that *could* be customized but might also be
# improved a lot. I'll put it here for now.
Joshua Colp
committed
mkdir -p $(DESTDIR)$(ASTDATADIR)/static-http
Mark Spencer
committed
for x in static-http/*; do \
Joshua Colp
committed
install -m 644 $$x $(DESTDIR)$(ASTDATADIR)/static-http ; \
Mark Spencer
committed
done
Joshua Colp
committed
mkdir -p $(DESTDIR)$(ASTDATADIR)/sounds/digits
mkdir -p $(DESTDIR)$(ASTDATADIR)/sounds/priv-callerintros
if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
Joshua Colp
committed
$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/sounds/digits ; \
else \
echo "No description for $$x"; \
exit 1; \
fi; \
Joshua Colp
committed
mkdir -p $(DESTDIR)$(ASTDATADIR)/sounds/dictate
for x in sounds/dictate/*.gsm; do \
if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
Joshua Colp
committed
$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/sounds/dictate ; \
else \
echo "No description for $$x"; \
exit 1; \
fi; \
done
Joshua Colp
committed
mkdir -p $(DESTDIR)$(ASTDATADIR)/sounds/letters
for x in sounds/letters/*.gsm; do \
if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
Joshua Colp
committed
$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/sounds/letters ; \
else \
echo "No description for $$x"; \
exit 1; \
fi; \
done
Joshua Colp
committed
mkdir -p $(DESTDIR)$(ASTDATADIR)/sounds/phonetic
for x in sounds/phonetic/*.gsm; do \
if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
Joshua Colp
committed
$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/sounds/phonetic ; \
else \
echo "No description for $$x"; \
exit 1; \
fi; \
done
for x in sounds/demo-* sounds/vm-* sounds/transfer* sounds/pbx-* sounds/ss-* sounds/beep* sounds/dir-* sounds/conf-* sounds/agent-* sounds/invalid* sounds/tt-* sounds/auth-* sounds/privacy-* sounds/queue-* sounds/spy-* sounds/priv-* sounds/screen-* sounds/hello-*; do \
if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
Joshua Colp
committed
$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/sounds ; \
else \
echo "No description for $$x"; \
exit 1; \
fi; \
Joshua Colp
committed
mkdir -p $(DESTDIR)$(ASTDATADIR)/mohmp3
mkdir -p $(DESTDIR)$(ASTDATADIR)/images
Joshua Colp
committed
$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/images ; \
@if [ -d .svn ]; then \
echo "Updating from Subversion..." ; \
svn update | tee update.out; \
rm -f .version; \
if [ `grep -c ^C update.out` -gt 0 ]; then \
echo ; echo "The following files have conflicts:" ; \
grep ^C update.out | cut -b4- ; \
fi ; \
rm -f update.out; \
Kevin P. Fleming
committed
$(MAKE) clean-depend; \
elif [ -d CVS ]; then \
cvs -q -z3 update -Pd | tee update.out; \
if [ `grep -c ^C update.out` -gt 0 ]; then \
echo ; echo "The following files have conflicts:" ; \
grep ^C update.out | cut -d' ' -f2- ; \
fi ; \
rm -f update.out; \
Kevin P. Fleming
committed
$(MAKE) clean-depend; \
echo "Not under version control"; \
Kevin P. Fleming
committed
NEWHEADERS=$(notdir $(wildcard include/asterisk/*.h))
OLDHEADERS=$(filter-out $(NEWHEADERS),$(notdir $(wildcard $(DESTDIR)$(ASTHEADERDIR)/*.h)))
mkdir -p $(DESTDIR)$(MODULES_DIR)
mkdir -p $(DESTDIR)$(ASTSBINDIR)
mkdir -p $(DESTDIR)$(ASTETCDIR)
mkdir -p $(DESTDIR)$(ASTBINDIR)
mkdir -p $(DESTDIR)$(ASTVARRUNDIR)
mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail
mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/dictate
mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/system
mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/tmp
mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/meetme
if [ -f asterisk ]; then $(INSTALL) -m 755 asterisk $(DESTDIR)$(ASTSBINDIR)/; fi
if [ -f asterisk.dll ]; then $(INSTALL) -m 755 asterisk.dll $(DESTDIR)$(ASTSBINDIR)/; fi
Kevin P. Fleming
committed
ln -sf asterisk $(DESTDIR)$(ASTSBINDIR)/rasterisk
$(INSTALL) -m 755 contrib/scripts/astgenkey $(DESTDIR)$(ASTSBINDIR)/
$(INSTALL) -m 755 contrib/scripts/autosupport $(DESTDIR)$(ASTSBINDIR)/
if [ ! -f $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ]; then \
Mark Spencer
committed
cat contrib/scripts/safe_asterisk | sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;' > $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ;\
chmod 755 $(DESTDIR)$(ASTSBINDIR)/safe_asterisk;\
for x in $(SUBDIRS); do $(MAKE) -C $$x install || exit 1 ; done
$(INSTALL) -d $(DESTDIR)$(ASTHEADERDIR)
$(INSTALL) -m 644 include/asterisk/*.h $(DESTDIR)$(ASTHEADERDIR)
if [ -n "$(OLDHEADERS)" ]; then \
rm -f $(addprefix $(DESTDIR)$(ASTHEADERDIR)/,$(OLDHEADERS)) ;\
fi
Joshua Colp
committed
mkdir -p $(DESTDIR)$(ASTDATADIR)/sounds
Mark Spencer
committed
mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-custom
Joshua Colp
committed
mkdir -p $(DESTDIR)$(ASTDATADIR)/keys
mkdir -p $(DESTDIR)$(ASTDATADIR)/firmware
mkdir -p $(DESTDIR)$(ASTDATADIR)/firmware/iax
mkdir -p $(DESTDIR)$(ASTMANDIR)/man8
Joshua Colp
committed
$(INSTALL) -m 644 keys/iaxtel.pub $(DESTDIR)$(ASTDATADIR)/keys
$(INSTALL) -m 644 keys/freeworlddialup.pub $(DESTDIR)$(ASTDATADIR)/keys
$(INSTALL) -m 644 asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
$(INSTALL) -m 644 contrib/scripts/astgenkey.8 $(DESTDIR)$(ASTMANDIR)/man8
$(INSTALL) -m 644 contrib/scripts/autosupport.8 $(DESTDIR)$(ASTMANDIR)/man8
$(INSTALL) -m 644 contrib/scripts/safe_asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
if [ -d contrib/firmware/iax ]; then \
Joshua Colp
committed
$(INSTALL) -m 644 contrib/firmware/iax/iaxy.bin $(DESTDIR)$(ASTDATADIR)/firmware/iax/iaxy.bin; \
else \
echo "You need to do cvs update -d not just cvs update" ; \
fi
if [ -f mpg123-0.59r/mpg123 ]; then $(MAKE) -C mpg123-0.59r install; fi
@echo " +---- Asterisk Installation Complete -------+"
@echo " + +"
@echo " + YOU MUST READ THE SECURITY DOCUMENT +"
@echo " + +"
@echo " + Asterisk has successfully been installed. +"
@echo " + If you would like to install the sample +"
@echo " + configuration files (overwriting any +"
@echo " + existing config files), run: +"
@echo " + +"
@echo " +----------------- or ---------------------+"
@echo " + +"
@echo " + You can go ahead and install the asterisk +"
@echo " + program documentation now or later run: +"
@echo " + +"
@echo " + +"
@echo " + **Note** This requires that you have +"
@echo " + doxygen installed on your local system +"
@echo " +-------------------------------------------+"
Kevin P. Fleming
committed
@$(MAKE) -s oldmodcheck
NEWMODS=$(notdir $(wildcard */*.so))
OLDMODS=$(filter-out $(NEWMODS),$(notdir $(wildcard $(DESTDIR)$(MODULES_DIR)/*.so)))
oldmodcheck:
Kevin P. Fleming
committed
@if [ -n "$(OLDMODS)" ]; then \
echo " WARNING WARNING WARNING" ;\
echo "" ;\
echo " Your Asterisk modules directory, located at" ;\
echo " $(DESTDIR)$(MODULES_DIR)" ;\
echo " contains modules that were not installed by this " ;\
echo " version of Asterisk. Please ensure that these" ;\
echo " modules are compatible with this version before" ;\
echo " attempting to run Asterisk." ;\
echo "" ;\
for f in $(OLDMODS); do \
echo " $$f" ;\
done ;\
echo "" ;\
echo " WARNING WARNING WARNING" ;\
fi
Kevin P. Fleming
committed
@if [ -x /usr/sbin/asterisk-post-install ]; then \
/usr/sbin/asterisk-post-install $(DESTDIR) . ; \
fi
adsi:
if [ ! -f $(DESTDIR)$(ASTETCDIRX)/$$x ]; then \
$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`basename $$x` ; \
samples: adsi
if [ -f $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample` ]; then \
Mark Spencer
committed
if [ "$(OVERWRITE)" = "y" ]; then \
if cmp -s $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample` $$x ; then \
echo "Config file $$x is unchanged"; \
continue; \
fi ; \
Mark Spencer
committed
mv -f $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample` $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample`.old ; \
else \
echo "Skipping config file $$x"; \
continue; \
fi ;\
$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample` ;\
if [ "$(OVERWRITE)" = "y" ] || [ ! -f $(DESTDIR)$(ASTCONFPATH) ]; then \
( \
echo "[directories]" ; \
echo "astetcdir => $(ASTETCDIR)" ; \
echo "astmoddir => $(MODULES_DIR)" ; \
echo "astvarlibdir => $(ASTVARLIBDIR)" ; \
Joshua Colp
committed
echo "astdatadir => $(ASTDATADIR)" ; \
echo "astagidir => $(AGI_DIR)" ; \
echo "astspooldir => $(ASTSPOOLDIR)" ; \
echo "astrundir => $(ASTVARRUNDIR)" ; \
echo "astlogdir => $(ASTLOGDIR)" ; \
echo "" ; \
echo "; Changing the following lines may compromise your security." ; \
echo ";[files]" ; \
echo ";astctlpermissions = 0660" ; \
echo ";astctlowner = root" ; \
echo ";astctlgroup = apache" ; \
echo ";astctl = asterisk.ctl" ; \
echo ";[options]" ; \
echo ";internal_timing = yes" ; \
Mark Spencer
committed
else \
echo "Skipping asterisk.conf creation"; \
fi
Joshua Colp
committed
mkdir -p $(DESTDIR)$(ASTDATADIR)/sounds ; \
if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
Joshua Colp
committed
$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/sounds ; \
else \
echo "No description for $$x"; \
exit 1; \
fi; \
Joshua Colp
committed
mkdir -p $(DESTDIR)$(ASTDATADIR)/mohmp3 ; \
Joshua Colp
committed
$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/mohmp3 ; \
Joshua Colp
committed
rm -f $(DESTDIR)$(ASTDATADIR)/mohmp3/sample-hold.mp3
mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/INBOX
:> $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/unavail.gsm
for x in vm-theperson digits/1 digits/2 digits/3 digits/4 vm-isunavail; do \
Joshua Colp
committed
cat $(DESTDIR)$(ASTDATADIR)/sounds/$$x.gsm >> $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/unavail.gsm ; \
:> $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/busy.gsm
for x in vm-theperson digits/1 digits/2 digits/3 digits/4 vm-isonphone; do \
Joshua Colp
committed
cat $(DESTDIR)$(ASTDATADIR)/sounds/$$x.gsm >> $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/busy.gsm ; \
@[ -d $(DESTDIR)$(HTTP_DOCSDIR)/ ] || ( printf "http docs directory not found.\nUpdate assignment of variable HTTP_DOCSDIR in Makefile!\n" && exit 1 )
@[ -d $(DESTDIR)$(HTTP_CGIDIR) ] || ( printf "cgi-bin directory not found.\nUpdate assignment of variable HTTP_CGIDIR in Makefile!\n" && exit 1 )
$(INSTALL) -m 4755 -o root -g root contrib/scripts/vmail.cgi $(DESTDIR)$(HTTP_CGIDIR)/vmail.cgi
mkdir -p $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk
$(INSTALL) -m 644 $$x $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk/; \
done
@echo " +--------- Asterisk Web Voicemail ----------+"
@echo " + +"
@echo " + Asterisk Web Voicemail is installed in +"
@echo " + your cgi-bin directory: +"
@echo " + $(DESTDIR)$(HTTP_CGIDIR)"
@echo " + IT USES A SETUID ROOT PERL SCRIPT, SO +"
@echo " + IF YOU DON'T LIKE THAT, UNINSTALL IT! +"
@echo " + +"
@echo " + Other static items have been stored in: +"
@echo " + $(DESTDIR)$(HTTP_DOCSDIR)"
@echo " + +"
@echo " + If these paths do not match your httpd +"
@echo " + installation, correct the definitions +"
@echo " + in your Makefile of HTTP_CGIDIR and +"
@echo " + HTTP_DOCSDIR +"
@echo " + +"
@echo " +-------------------------------------------+"
spec:
sed "s/^Version:.*/Version: $(RPMVERSION)/g" redhat/asterisk.spec > asterisk.spec ; \
rm -rf /tmp/asterisk ; \
mkdir -p /tmp/asterisk/redhat/RPMS/i386 ; \
$(MAKE) DESTDIR=/tmp/asterisk install ; \
$(MAKE) DESTDIR=/tmp/asterisk samples ; \
Russell Bryant
committed
cp -f contrib/init.d/rc.redhat.asterisk /tmp/asterisk/etc/rc.d/init.d/asterisk ; \
rpmbuild --rcfile /usr/lib/rpm/rpmrc:redhat/rpmrc -bb asterisk.spec
Anthony Minessale II
committed
(cat contrib/asterisk-ng-doxygen; echo "HAVE_DOT=$(HAVEDOT)"; \
echo "PROJECT_NUMBER=$(ASTERISKVERSION)") | doxygen -
mpg123:
@wget -V >/dev/null || (echo "You need wget" ; false )
[ -f mpg123-0.59r.tar.gz ] || wget http://www.mpg123.de/mpg123/mpg123-0.59r.tar.gz
[ -d mpg123-0.59r ] || tar xfz mpg123-0.59r.tar.gz
$(MAKE) -C mpg123-0.59r $(MPG123TARG)
$(INSTALL) -m 755 contrib/init.d/rc.redhat.asterisk /etc/rc.d/init.d/asterisk; \
/sbin/chkconfig --add asterisk; \
elif [ -d /etc/init.d ]; then \
$(INSTALL) -m 755 init.asterisk /etc/init.d/asterisk; \
depend: include/asterisk/version.h .depend defaults.h
for x in $(SUBDIRS); do $(MAKE) -C $$x depend || exit 1 ; done
Kevin P. Fleming
committed
.depend: include/asterisk/version.h defaults.h
build_tools/mkdep $(CFLAGS) $(wildcard *.c)
.tags-depend:
@echo -n ".tags-depend: " > $@
@find . -maxdepth 1 -name \*.c -printf "\t%p \\\\\n" >> $@
@find . -maxdepth 1 -name \*.h -printf "\t%p \\\\\n" >> $@
@find $(SUBDIRS) -name \*.c -printf "\t%p \\\\\n" >> $@
@find $(SUBDIRS) -name \*.h -printf "\t%p \\\\\n" >> $@
@find include -name \*.h -printf "\t%p \\\\\n" >> $@
@echo >> $@
.tags-sources:
@rm -f $@
@find . -maxdepth 1 -name \*.c -print >> $@
@find . -maxdepth 1 -name \*.h -print >> $@
@find $(SUBDIRS) -name \*.c -print >> $@
@find $(SUBDIRS) -name \*.h -print >> $@
@find include -name \*.h -print >> $@
tags: .tags-depend .tags-sources
ctags -L .tags-sources -o $@
ctags: tags
TAGS: .tags-depend .tags-sources
etags -o $@ `cat .tags-sources`
etags: TAGS
Anthony Minessale II
committed
%_env:
$(MAKE) -C $(shell echo $@ | sed "s/_env//g") env
Anthony Minessale II
committed
env:
# If the cleancount has been changed, force a make clean.
# .cleancount is the global clean count, and .lastclean is the
cleantest:
if cmp -s .cleancount .lastclean ; then echo ; else \
$(MAKE) clean; cp -f .cleancount .lastclean;\
fi
_uninstall:
rm -f $(DESTDIR)$(MODULES_DIR)/*
rm -f $(DESTDIR)$(ASTSBINDIR)/*asterisk*
rm -f $(DESTDIR)$(ASTSBINDIR)/astgenkey
rm -f $(DESTDIR)$(ASTSBINDIR)/autosupport
rm -rf $(DESTDIR)$(ASTHEADERDIR)
Joshua Colp
committed
rm -rf $(DESTDIR)$(ASTDATADIR)/sounds
Joshua Colp
committed
rm -rf $(DESTDIR)$(ASTDATADIR)/firmware
rm -rf $(DESTDIR)$(ASTMANDIR)/man8
for x in $(SUBDIRS); do $(MAKE) -C $$x uninstall || exit 1 ; done
uninstall: _uninstall
@echo " +--------- Asterisk Uninstall Complete -----+"
@echo " + Asterisk binaries, sounds, man pages, +"
@echo " + headers, modules, and firmware builds, +"
@echo " + have all been uninstalled. +"
@echo " + +"
@echo " + To remove ALL traces of Asterisk, +"
@echo " + including configuration, spool +"
@echo " + directories, and logs, run the following +"
@echo " + command: +"
@echo " + +"
@echo " + $(MAKE) uninstall-all +"
@echo " +-------------------------------------------+"
uninstall-all: _uninstall
rm -rf $(DESTDIR)$(ASTLIBDIR)
rm -rf $(DESTDIR)$(ASTVARLIBDIR)
Joshua Colp
committed
rm -rf $(DESTDIR)$(ASTDATADIR)
rm -rf $(DESTDIR)$(ASTSPOOLDIR)
rm -rf $(DESTDIR)$(ASTETCDIR)
rm -rf $(DESTDIR)$(ASTLOGDIR)
Kevin P. Fleming
committed
menuselect: build_tools/menuselect makeopts.xml
-@build_tools/menuselect ${GLOBAL_MAKEOPTS} ${USER_MAKEOPTS} menuselect.makeopts && echo "menuselect changes saved!" || echo "menuselect changes NOT saved!"
build_tools/menuselect: build_tools/menuselect.c build_tools/menuselect_curses.c build_tools/menuselect.h include/autoconfig.h strcompat.o mxml/libmxml.a
Kevin P. Fleming
committed
$(MAKE) -C build_tools menuselect
mxml/libmxml.a:
@cd mxml && unset CFLAGS && test -f config.h || ./configure
$(MAKE) -C mxml libmxml.a
makeopts.xml: $(foreach dir,$(MOD_SUBDIRS),$(dir)/*.c) build_tools/cflags.xml
@echo "Generating list of available modules ..."
@build_tools/prep_moduledeps > $@