123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954 |
- #
- # Asterisk -- A telephony toolkit for Linux.
- #
- # Top level Makefile
- #
- # Copyright (C) 1999-2005, Mark Spencer
- #
- # 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
- CC=$(CROSS_COMPILE)gcc
- HOST_CC=gcc
- # CROSS_ARCH=Linux
- # CROSS_PROC=arm
- # SUB_PROC=xscale # or maverick
- ifeq ($(CROSS_COMPILE),)
- OSARCH=$(shell uname -s)
- OSREV=$(shell uname -r)
- else
- OSARCH=$(CROSS_ARCH)
- OSREV=$(CROSS_REV)
- endif
- # Remember the MAKELEVEL at the top
- MAKETOPLEVEL?=$(MAKELEVEL)
- ifneq ($(findstring dont-optimize,$(MAKECMDGOALS)),dont-optimize)
- ######### 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
- #Tell gcc to optimize the code
- OPTIMIZE+=-O6
- endif
- #Overwite config files on "make samples"
- OVERWRITE=y
- #Include debug and macro symbols in the executables (-g) and profiling info (-pg)
- DEBUG=-g3 #-pg
- #Set NOCRYPTO to yes if you do not want to have crypto support or
- #dependencies
- #NOCRYPTO=yes
- # 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
- # Optional debugging parameters
- DEBUG_THREADS = #-DDUMP_SCHEDULER #-DDEBUG_SCHEDULER #-DDEBUG_THREADS #-DDO_CRASH #-DDETECT_DEADLOCKS
- # Uncomment next one to enable ast_frame tracing (for debugging)
- TRACE_FRAMES = #-DTRACE_FRAMES
- # Uncomment next one to enable malloc debugging
- # You can view malloc debugging with:
- # *CLI> show memory allocations [filename]
- # *CLI> show memory summary [filename]
- #
- MALLOC_DEBUG = #-include $(PWD)/include/asterisk/astmm.h
- # 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
- # XXX watch out, put no spaces or comments after the value
- DESTDIR?=
- #DESTDIR?=/tmp/asterisk
- # Original busydetect routine
- BUSYDETECT = #-DBUSYDETECT
- # Improved busydetect routine, comment the previous one if you use this one
- BUSYDETECT+= #-DBUSYDETECT_MARTIN
- # 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
- # Inforce the detection of busy singal (get rid of false hangups)
- # Don't use together with -DBUSYDETECT_TONEONLY
- BUSYDETECT+= #-DBUSYDETECT_COMPARE_TONE_AND_SILENCE
- ifneq ($(OSARCH),SunOS)
- ASTLIBDIR=$(INSTALL_PREFIX)/usr/lib/asterisk
- ASTVARLIBDIR=$(INSTALL_PREFIX)/var/lib/asterisk
- ASTETCDIR=$(INSTALL_PREFIX)/etc/asterisk
- ASTSPOOLDIR=$(INSTALL_PREFIX)/var/spool/asterisk
- ASTLOGDIR=$(INSTALL_PREFIX)/var/log/asterisk
- ASTHEADERDIR=$(INSTALL_PREFIX)/usr/include/asterisk
- ASTCONFPATH=$(ASTETCDIR)/asterisk.conf
- ASTBINDIR=$(INSTALL_PREFIX)/usr/bin
- ASTSBINDIR=$(INSTALL_PREFIX)/usr/sbin
- ASTVARRUNDIR=$(INSTALL_PREFIX)/var/run
- ASTMANDIR=$(INSTALL_PREFIX)/usr/share/man
- MODULES_DIR=$(ASTLIBDIR)/modules
- AGI_DIR=$(ASTVARLIBDIR)/agi-bin
- else
- ASTLIBDIR=$(INSTALL_PREFIX)/opt/asterisk/lib
- ASTVARLIBDIR=$(INSTALL_PREFIX)/var/opt/asterisk/lib
- ASTETCDIR=$(INSTALL_PREFIX)/etc/opt/asterisk
- ASTSPOOLDIR=$(INSTALL_PREFIX)/var/opt/asterisk/spool
- ASTLOGDIR=$(INSTALL_PREFIX)/var/opt/asterisk/log
- ASTHEADERDIR=$(INSTALL_PREFIX)/opt/asterisk/usr/include/asterisk
- ASTCONFPATH=$(ASTETCDIR)/asterisk.conf
- 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
- MODULES_DIR=$(ASTLIBDIR)/modules
- AGI_DIR=$(ASTVARLIBDIR)/agi-bin
- endif
- ASTCFLAGS=
- # Pentium Pro Optimize
- #PROC=i686
- # Pentium & VIA processors optimize
- #PROC=i586
- #PROC=k6
- #PROC=ppc
- #Uncomment this to use the older DSP routines
- #ASTCFLAGS+=-DOLD_DSP_ROUTINES
- # Determine by a grep 'DocumentRoot' of your httpd.conf file
- HTTP_DOCSDIR=/var/www/html
- # Determine by a grep 'ScriptAlias' of your httpd.conf file
- HTTP_CGIDIR=/var/www/cgi-bin
- # If the file .asterisk.makeopts is present in your home directory, you can
- # include all of your favorite Makefile options so that every time you download
- # a new version of Asterisk, you don't have to edit the makefile to set them.
- # The file, /etc/asterisk.makeopts will also be included, but can be overridden
- # by the file in your home directory.
- ifneq ($(wildcard /etc/asterisk.makeopts),)
- include /etc/asterisk.makeopts
- endif
- ifneq ($(wildcard ~/.asterisk.makeopts),)
- include ~/.asterisk.makeopts
- endif
- ifeq ($(OSARCH),Linux)
- ifeq ($(CROSS_COMPILE),)
- PROC?=$(shell uname -m)
- else
- PROC=$(CROSS_PROC)
- endif
- 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
- PWD=$(shell pwd)
- GREP=grep
- ifeq ($(OSARCH),SunOS)
- GREP=/usr/xpg4/bin/grep
- M4=/usr/local/bin/m4
- endif
- INCLUDE+=-Iinclude -I../include
- ASTCFLAGS+=-pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG) $(INCLUDE) -D_REENTRANT -D_GNU_SOURCE #-DMAKE_VALGRIND_HAPPY
- ASTCFLAGS+=$(OPTIMIZE)
- ASTOBJ=-o asterisk
- ifeq ($(findstring BSD,$(OSARCH)),BSD)
- PROC=$(shell uname -m)
- ASTCFLAGS+=-I$(CROSS_COMPILE_TARGET)/usr/local/include -L$(CROSS_COMPILE_TARGET)/usr/local/lib
- endif
- ifneq ($(PROC),ultrasparc)
- ASTCFLAGS+=$(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
- endif
- ifeq ($(PROC),ppc)
- ASTCFLAGS+=-fsigned-char
- endif
- ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/osp/osp.h),)
- ASTCFLAGS+=-DOSP_SUPPORT -I$(CROSS_COMPILE_TARGET)/usr/local/include/osp
- else
- ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/osp/osp.h),)
- ASTCFLAGS+=-DOSP_SUPPORT -I$(CROSS_COMPILE_TARGET)/usr/include/osp
- endif
- endif
- ifeq ($(OSARCH),FreeBSD)
- 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
- # XXX FreeBSD paths
- PREFIX?=/usr/local
- ASTLIBDIR=$(INSTALL_PREFIX)$(PREFIX)/lib/asterisk
- ASTVARLIBDIR=$(INSTALL_PREFIX)$(PREFIX)/share/asterisk
- ASTETCDIR=$(INSTALL_PREFIX)$(PREFIX)/etc/asterisk
- ASTSPOOLDIR=$(INSTALL_PREFIX)/var/spool/asterisk
- ASTLOGDIR=$(INSTALL_PREFIX)/var/log/asterisk
- ASTHEADERDIR=$(INSTALL_PREFIX)$(PREFIX)/include/asterisk
- ASTCONFPATH=$(ASTETCDIR)/asterisk.conf
- ASTBINDIR=$(INSTALL_PREFIX)$(PREFIX)/bin
- ASTSBINDIR=$(INSTALL_PREFIX)$(PREFIX)/sbin
- ASTVARRUNDIR=$(INSTALL_PREFIX)/var/run
- ASTMANDIR=$(INSTALL_PREFIX)$(PREFIX)/man
- # XXX end FreeBSD paths
- endif # FreeBSD
- ifeq ($(OSARCH),NetBSD)
- ASTCFLAGS+=-pthread
- INCLUDE+=-I$(CROSS_COMPILE_TARGET)/usr/pkg/include
- MPG123TARG=netbsd
- endif
- ifeq ($(OSARCH),OpenBSD)
- ASTCFLAGS+=-pthread
- endif
- ifeq ($(OSARCH),SunOS)
- ASTCFLAGS+=-Wcast-align -DSOLARIS
- INCLUDE+=-Iinclude/solaris-compat -I$(CROSS_COMPILE_TARGET)/usr/local/ssl/include
- endif
- ifeq ($(findstring CYGWIN,$(OSARCH)),CYGWIN)
- CYGLOADER=cygwin_a
- OSARCH=CYGWIN
- ASTOBJ=-shared -o asterisk.dll -Wl,--out-implib=libasterisk.dll.a -Wl,--export-all-symbols
- ASTLINK=
- LIBS+=-lpthread -lncurses -lm -lresolv
- ASTSBINDIR=$(MODULES_DIR)
- PROC=$(shell uname -m)
- endif
- ifndef WITHOUT_ZAPTEL
- ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/linux/zaptel.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/zaptel.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/pkg/include/zaptel.h),)
- ASTCFLAGS+=-DZAPTEL_OPTIMIZATIONS
- endif
- endif # WITHOUT_ZAPTEL
- LIBEDIT=editline/libedit.a
- ifneq ($(wildcard .version),)
- ASTERISKVERSION=$(shell cat .version)
- ASTERISKVERSIONNUM=$(shell awk -F. '{printf "%02d%02d%02d", $$1, $$2, $$3}' .version)
- RPMVERSION=$(shell sed 's/[-\/:]/_/g' .version)
- else
- RPMVERSION=unknown
- endif
- ifneq ($(wildcard CVS),)
- ASTERISKVERSIONNUM=999999
- ifneq ($(wildcard CVS/Tag),)
- ASTERISKVERSION=$(shell echo "CVS-`sed 's/^T//g' CVS/Tag`-`date +"%D-%T"`")
- else
- ASTERISKVERSION=CVS HEAD
- endif
- else
- ASTERISKVERSIONNUM=000000
- endif
- ASTCFLAGS+= $(DEBUG_THREADS)
- ASTCFLAGS+= $(TRACE_FRAMES)
- ASTCFLAGS+= $(MALLOC_DEBUG)
- ASTCFLAGS+= $(BUSYDETECT)
- ASTCFLAGS+= $(OPTIONS)
- ASTCFLAGS+= -fomit-frame-pointer
- SUBDIRS=res channels pbx apps codecs formats agi cdr funcs utils stdtime
- OBJS=io.o sched.o logger.o frame.o loader.o config.o channel.o \
- translate.o file.o say.o pbx.o cli.o md5.o term.o \
- ulaw.o alaw.o callerid.o fskmodem.o image.o app.o \
- cdr.o tdd.o acl.o rtp.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
- 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),)
- OBJS+= dlfcn.o
- ASTCFLAGS+=-DDLFCNCOMPAT
- endif
- ifeq ($(OSARCH),Linux)
- LIBS+=-ldl -lpthread -lncurses -lm -lresolv #-lnjamd
- else
- LIBS+=-lncurses -lm
- endif
- ifeq ($(OSARCH),Darwin)
- LIBS+=-lresolv
- ASTCFLAGS+=-D__Darwin__
- AUDIO_LIBS=-framework CoreAudio
- ASTLINK=-Wl,-dynamic
- SOLINK=-dynamic -bundle -undefined suppress -force_flat_namespace
- OBJS+= poll.o
- ASTCFLAGS+=-DPOLLCOMPAT
- else
- #These are used for all but Darwin
- ASTLINK=-Wl,-E
- SOLINK=-shared -Xlinker -x
- endif
- ifeq ($(OSARCH),FreeBSD)
- LIBS+=-lcrypto
- endif
- ifeq ($(OSARCH),NetBSD)
- LIBS+=-lpthread -lcrypto -lm -L$(CROSS_COMPILE_TARGET)/usr/pkg/lib -lncurses
- endif
- ifeq ($(OSARCH),OpenBSD)
- LIBS+=-lcrypto -lpthread -lm -lncurses
- endif
- ifeq ($(OSARCH),SunOS)
- 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
- endif
- ifeq ($(MAKETOPLEVEL),$(MAKELEVEL))
- CFLAGS+=$(ASTCFLAGS)
- endif
- # This is used when generating the doxygen documentation
- ifneq ($(wildcard /usr/local/bin/dot)$(wildcard /usr/bin/dot),)
- HAVEDOT=yes
- else
- HAVEDOT=no
- endif
- LIBS+=-lssl
- INSTALL=install
- _all: all
- @echo " +--------- Asterisk Build Complete ---------+"
- @echo " + Asterisk has successfully been built, but +"
- @echo " + cannot be run before being installed by +"
- @echo " + running: +"
- @echo " + +"
- @echo " + $(MAKE) install +"
- @echo " +-------------------------------------------+"
- all: cleantest depend asterisk subdirs
- #ifneq ($(wildcard tags),)
- ctags: tags
- #endif
- ifneq ($(wildcard TAGS),)
- all: TAGS
- endif
- noclean: depend asterisk subdirs
- editline/config.h:
- cd editline && unset CFLAGS LIBS && ./configure ; \
- editline/libedit.a: FORCE
- cd editline && unset CFLAGS LIBS && test -f config.h || ./configure
- $(MAKE) -C editline libedit.a
- db1-ast/libdb1.a: FORCE
- @if [ -d db1-ast ]; then \
- $(MAKE) -C db1-ast libdb1.a ; \
- else \
- echo "You need to do a cvs update -d not just cvs update"; \
- exit 1; \
- fi
- ifneq ($(wildcard .depend),)
- include .depend
- endif
- ifneq ($(wildcard .tags-depend),)
- include .tags-depend
- endif
- ast_expr2.c:
- bison -d --name-prefix=ast_yy ast_expr2.y -o ast_expr2.c
- ast_expr2f.c:
- 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
- defaults.h: FORCE
- build_tools/make_defaults_h > $@.tmp
- if cmp -s $@.tmp $@ ; then echo ; else \
- mv $@.tmp $@ ; \
- fi
- rm -f $@.tmp
- include/asterisk/version.h: FORCE
- build_tools/make_version_h > $@.tmp
- if cmp -s $@.tmp $@ ; then echo; else \
- mv $@.tmp $@ ; \
- fi
- rm -f $@.tmp
- stdtime/libtime.a: FORCE
- @if [ -d stdtime ]; then \
- $(MAKE) -C stdtime libtime.a ; \
- else \
- echo "You need to do a cvs update -d not just cvs update"; \
- exit 1; \
- fi
- cygwin_a:
- $(MAKE) -C cygwin all
- asterisk: $(CYGLOADER) 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)
- muted: muted.o
- $(CC) $(AUDIO_LIBS) -o muted muted.o
- subdirs:
- for x in $(SUBDIRS); do $(MAKE) -C $$x || exit 1 ; done
- clean:
- for x in $(SUBDIRS); do $(MAKE) -C $$x clean || exit 1 ; done
- rm -f *.o *.so asterisk .depend
- rm -f defaults.h
- rm -f include/asterisk/build.h
- rm -f include/asterisk/version.h
- rm -f .tags-depend .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 db1-ast clean
- $(MAKE) -C stdtime clean
- datafiles: all
- if [ x`whoami` = xroot ]; then sh mkpkgconfig $(DESTDIR)/usr/lib/pkgconfig; fi
- mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/digits
- mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/priv-callerintros
- for x in sounds/digits/*.gsm; do \
- if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
- $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds/digits ; \
- else \
- echo "No description for $$x"; \
- exit 1; \
- fi; \
- done
- mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/dictate
- for x in sounds/dictate/*.gsm; do \
- if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
- $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds/dictate ; \
- else \
- echo "No description for $$x"; \
- exit 1; \
- fi; \
- done
- mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/letters
- for x in sounds/letters/*.gsm; do \
- if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
- $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds/letters ; \
- else \
- echo "No description for $$x"; \
- exit 1; \
- fi; \
- done
- mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/phonetic
- for x in sounds/phonetic/*.gsm; do \
- if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
- $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/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 \
- $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds ; \
- else \
- echo "No description for $$x"; \
- exit 1; \
- fi; \
- done
- mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/mohmp3
- mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/images
- for x in images/*.jpg; do \
- $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/images ; \
- done
- mkdir -p $(DESTDIR)$(AGI_DIR)
- update:
- @if [ -d CVS ]; then \
- if [ -f patches/.applied ]; then \
- patches=`cat patches/.applied`; \
- fi; \
- if [ ! -z "$$patches" ]; then \
- for x in $$patches; do \
- echo "Unapplying $$x..."; \
- patch -R -p0 < patches/$$x; \
- done; \
- rm -f patches/.applied; \
- fi ; \
- echo "Updating from CVS..." ; \
- cvs -q -z3 update -Pd | 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 -d' ' -f2- ; \
- fi ; \
- rm -f update.out; \
- if [ ! -z "$$patches" ]; then \
- for x in $$patches; do \
- if [ -f patches/$$x ]; then \
- echo "Applying patch $$x..."; \
- patch -p0 < patches/$$x; \
- echo $$x >> patches/.applied; \
- else \
- echo "Patch $$x no longer relevant"; \
- fi; \
- done; \
- fi; \
- else \
- echo "Not CVS"; \
- fi
- NEWHEADERS=$(notdir $(wildcard include/asterisk/*.h))
- OLDHEADERS=$(filter-out $(NEWHEADERS),$(notdir $(wildcard $(DESTDIR)$(ASTHEADERDIR)/*.h)))
- bininstall: all
- 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
- mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/monitor
- if [ -f asterisk ]; then $(INSTALL) -m 755 asterisk $(DESTDIR)$(ASTSBINDIR)/; fi
- if [ -f cygwin/asterisk.exe ]; then $(INSTALL) -m 755 cygwin/asterisk.exe $(DESTDIR)$(ASTSBINDIR)/; fi
- if [ -f asterisk.dll ]; then $(INSTALL) -m 755 asterisk.dll $(DESTDIR)$(ASTSBINDIR)/; fi
- 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 \
- cat contrib/scripts/safe_asterisk | sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;' > $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ;\
- chmod 755 $(DESTDIR)$(ASTSBINDIR)/safe_asterisk;\
- fi
- 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
- rm -f $(DESTDIR)$(ASTVARLIBDIR)/sounds/voicemail
- mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds
- mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-csv
- mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-custom
- mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/keys
- mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/firmware
- mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/firmware/iax
- mkdir -p $(DESTDIR)$(ASTMANDIR)/man8
- $(INSTALL) -m 644 keys/iaxtel.pub $(DESTDIR)$(ASTVARLIBDIR)/keys
- $(INSTALL) -m 644 keys/freeworlddialup.pub $(DESTDIR)$(ASTVARLIBDIR)/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 \
- $(INSTALL) -m 644 contrib/firmware/iax/iaxy.bin $(DESTDIR)$(ASTVARLIBDIR)/firmware/iax/iaxy.bin; \
- else \
- echo "You need to do cvs update -d not just cvs update" ; \
- fi
- ( cd $(DESTDIR)$(ASTVARLIBDIR)/sounds ; ln -s $(ASTSPOOLDIR)/voicemail . )
- 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 " + $(MAKE) samples +"
- @echo " + +"
- @echo " +----------------- or ---------------------+"
- @echo " + +"
- @echo " + You can go ahead and install the asterisk +"
- @echo " + program documentation now or later run: +"
- @echo " + +"
- @echo " + $(MAKE) progdocs +"
- @echo " + +"
- @echo " + **Note** This requires that you have +"
- @echo " + doxygen installed on your local system +"
- @echo " +-------------------------------------------+"
- @$(MAKE) -s oldmodcheck
- NEWMODS=$(notdir $(wildcard */*.so))
- OLDMODS=$(filter-out $(NEWMODS),$(notdir $(wildcard $(DESTDIR)$(MODULES_DIR)/*.so)))
- oldmodcheck:
- @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
- install: all datafiles bininstall
- @if [ -x /usr/sbin/asterisk-post-install ]; then \
- /usr/sbin/asterisk-post-install $(DESTDIR) . ; \
- fi
- upgrade: all bininstall
- adsi:
- mkdir -p $(DESTDIR)$(ASTETCDIR)
- for x in configs/*.adsi; do \
- if [ ! -f $(DESTDIR)$(ASTETCDIRX)/$$x ]; then \
- $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`basename $$x` ; \
- fi ; \
- done
- samples: adsi
- mkdir -p $(DESTDIR)$(ASTETCDIR)
- for x in configs/*.sample; do \
- if [ -f $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample` ]; then \
- if [ "$(OVERWRITE)" = "y" ]; then \
- if cmp -s $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample` $$x ; then \
- echo "Config file $$x is unchanged"; \
- continue; \
- fi ; \
- mv -f $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample` $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample`.old ; \
- else \
- echo "Skipping config file $$x"; \
- continue; \
- fi ;\
- fi ; \
- $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample` ;\
- done
- if [ "$(OVERWRITE)" = "y" ] || [ ! -f $(DESTDIR)$(ASTCONFPATH) ]; then \
- ( \
- echo "[directories]" ; \
- echo "astetcdir => $(ASTETCDIR)" ; \
- echo "astmoddir => $(MODULES_DIR)" ; \
- echo "astvarlibdir => $(ASTVARLIBDIR)" ; \
- 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" ; \
- ) > $(DESTDIR)$(ASTCONFPATH) ; \
- else \
- echo "Skipping asterisk.conf creation"; \
- fi
- mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds ; \
- for x in sounds/demo-*; do \
- if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
- $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds ; \
- else \
- echo "No description for $$x"; \
- exit 1; \
- fi; \
- done
- mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/mohmp3 ; \
- for x in sounds/*.mp3; do \
- $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/mohmp3 ; \
- done
- rm -f $(DESTDIR)$(ASTVARLIBDIR)/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 \
- cat $(DESTDIR)$(ASTVARLIBDIR)/sounds/$$x.gsm >> $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/unavail.gsm ; \
- done
- :> $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/busy.gsm
- for x in vm-theperson digits/1 digits/2 digits/3 digits/4 vm-isonphone; do \
- cat $(DESTDIR)$(ASTVARLIBDIR)/sounds/$$x.gsm >> $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/busy.gsm ; \
- done
- webvmail:
- @[ -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
- for x in images/*.gif; do \
- $(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 ; \
- rpm: __rpm
- __rpm: include/asterisk/version.h spec
- rm -rf /tmp/asterisk ; \
- mkdir -p /tmp/asterisk/redhat/RPMS/i386 ; \
- $(MAKE) DESTDIR=/tmp/asterisk install ; \
- $(MAKE) DESTDIR=/tmp/asterisk samples ; \
- mkdir -p /tmp/asterisk/etc/rc.d/init.d ; \
- cp -f redhat/asterisk /tmp/asterisk/etc/rc.d/init.d/ ; \
- rpmbuild --rcfile /usr/lib/rpm/rpmrc:redhat/rpmrc -bb asterisk.spec
- progdocs:
- (cat contrib/asterisk-ng-doxygen; echo "HAVE_DOT=$(HAVEDOT)"; \
- echo "PROJECT_NUMBER=$(ASTERISKVERSION) - $(ASTERISKVERSIONNUM)") | 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)
- config:
- if [ -d /etc/rc.d/init.d ]; then \
- $(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; \
- fi
- dont-optimize: install
- valgrind: dont-optimize
- depend: include/asterisk/version.h .depend defaults.h
- for x in $(SUBDIRS); do $(MAKE) -C $$x depend || exit 1 ; done
- .depend: include/asterisk/version.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
- FORCE:
- %_env:
- $(MAKE) -C $(shell echo $@ | sed "s/_env//g") env
- env:
- env
- # If the cleancount has been changed, force a make clean.
- # .cleancount is the global clean count, and .lastclean is the
- # last clean count we had
- # We can avoid this by making noclean
- cleantest:
- if cmp -s .cleancount .lastclean ; then echo ; else \
- $(MAKE) clean; cp -f .cleancount .lastclean;\
- fi
- patchlist:
- @echo "Experimental Patches:"
- @for x in patches/*; do \
- patch=`basename $$x`; \
- if [ "$$patch" = "CVS" ]; then \
- continue; \
- fi; \
- if grep -q ^$$patch$$ patches/.applied; then \
- echo "$$patch (applied)"; \
- else \
- echo "$$patch (available)"; \
- fi; \
- done
- apply:
- @if [ -z "$(PATCH)" ]; then \
- echo "Usage: make PATCH=<patchname> apply"; \
- elif grep -q ^$(PATCH)$$ patches/.applied 2>/dev/null; then \
- echo "Patch $(PATCH) is already applied"; \
- elif [ -f "patches/$(PATCH)" ]; then \
- echo "Applying patch $(PATCH)"; \
- patch -p0 < patches/$(PATCH); \
- echo "$(PATCH)" >> patches/.applied; \
- else \
- echo "No such patch $(PATCH) in patches directory"; \
- fi
- unapply:
- @if [ -z "$(PATCH)" ]; then \
- echo "Usage: make PATCH=<patchname> unapply"; \
- elif grep -v -q ^$(PATCH)$$ patches/.applied 2>/dev/null; then \
- echo "Patch $(PATCH) is not applied"; \
- elif [ -f "patches/$(PATCH)" ]; then \
- echo "Un-applying patch $(PATCH)"; \
- patch -p0 -R < patches/$(PATCH); \
- rm -f patches/.tmpapplied || :; \
- mv patches/.applied patches/.tmpapplied; \
- cat patches/.tmpapplied | grep -v ^$(PATCH)$$ > patches/.applied; \
- rm -f patches/.tmpapplied; \
- else \
- echo "No such patch $(PATCH) in patches directory"; \
- fi
|