holded calls: basic functionality.
[asterisk-bristuff.git] / Makefile
blobb7aa39ff41dffbbd69d9609bde9a9c42e3932286
2 # Asterisk -- A telephony toolkit for Linux.
3 #
4 # Top level Makefile
6 # Copyright (C) 1999-2006, Digium, Inc.
8 # Mark Spencer <markster@digium.com>
10 # This program is free software, distributed under the terms of
11 # the GNU General Public License
14 # All Makefiles use the following variables:
16 # ASTCFLAGS - compiler options
17 # ASTLDFLAGS - linker flags (not libraries)
18 # AST_LIBS - libraries to build binaries XXX
19 # LIBS - additional libraries, at top-level for all links,
20 # on a single object just for that object
21 # SOLINK - linker flags used only for creating shared objects (.so files),
22 # used for all .so links
24 # Default values fo ASTCFLAGS and ASTLDFLAGS can be specified in the
25 # environment when running make, as follows:
27 # $ ASTCFLAGS="-Werror" make
29 export ASTTOPDIR
30 export ASTERISKVERSION
31 export ASTERISKVERSIONNUM
32 export INSTALL_PATH
33 export ASTETCDIR
34 export ASTVARRUNDIR
35 export MODULES_DIR
36 export ASTSPOOLDIR
37 export ASTVARLIBDIR
38 export ASTDATADIR
39 export ASTLOGDIR
40 export ASTLIBDIR
41 export ASTMANDIR
42 export ASTHEADERDIR
43 export ASTBINDIR
44 export ASTSBINDIR
45 export AGI_DIR
46 export ASTCONFPATH
47 export NOISY_BUILD
48 export MENUSELECT_CFLAGS
49 export CC
50 export CXX
51 export AR
52 export RANLIB
53 export HOST_CC
54 export STATIC_BUILD
55 export INSTALL
56 export DESTDIR
57 export PROC
58 export SOLINK
59 export STRIP
60 export DOWNLOAD
61 export AWK
62 export GREP
63 export ID
64 export OSARCH
65 export CURSES_DIR
66 export NCURSES_DIR
67 export TERMCAP_DIR
68 export TINFO_DIR
69 export GTK2_LIB
70 export GTK2_INCLUDE
72 # even though we could use '-include makeopts' here, use a wildcard
73 # lookup anyway, so that make won't try to build makeopts if it doesn't
74 # exist (other rules will force it to be built if needed)
75 ifneq ($(wildcard makeopts),)
76 include makeopts
77 endif
79 # Some build systems, such as the one in openwrt, like to pass custom target
80 # CFLAGS and LDFLAGS in the COPTS and LDOPTS variables.
81 ASTCFLAGS+=$(COPTS)
82 ASTLDFLAGS+=$(LDOPTS)
84 #Uncomment this to see all build commands instead of 'quiet' output
85 #NOISY_BUILD=yes
87 # Create OPTIONS variable
88 OPTIONS=
90 empty:=
91 space:=$(empty) $(empty)
92 ASTTOPDIR:=$(subst $(space),\$(space),$(CURDIR))
94 # Overwite config files on "make samples"
95 OVERWRITE=y
97 # Include debug and macro symbols in the executables (-g) and profiling info (-pg)
98 DEBUG=-g3
100 # Staging directory
101 # Files are copied here temporarily during the install process
102 # For example, make DESTDIR=/tmp/asterisk woud put things in
103 # /tmp/asterisk/etc/asterisk
104 # !!! Watch out, put no spaces or comments after the value !!!
105 #DESTDIR?=/tmp/asterisk
107 # Define standard directories for various platforms
108 # These apply if they are not redefined in asterisk.conf
109 ifeq ($(OSARCH),SunOS)
110 ASTETCDIR=/var/etc/asterisk
111 ASTLIBDIR=/opt/asterisk/lib
112 ASTVARLIBDIR=/var/opt/asterisk
113 ASTSPOOLDIR=/var/spool/asterisk
114 ASTLOGDIR=/var/log/asterisk
115 ASTHEADERDIR=/opt/asterisk/include
116 ASTBINDIR=/opt/asterisk/bin
117 ASTSBINDIR=/opt/asterisk/sbin
118 ASTVARRUNDIR=/var/run/asterisk
119 ASTMANDIR=/opt/asterisk/man
120 else
121 ASTETCDIR=$(sysconfdir)/asterisk
122 ASTLIBDIR=$(libdir)/asterisk
123 ASTHEADERDIR=$(includedir)/asterisk
124 ASTBINDIR=$(bindir)
125 ASTSBINDIR=$(sbindir)
126 ASTSPOOLDIR=$(localstatedir)/spool/asterisk
127 ASTLOGDIR=$(localstatedir)/log/asterisk
128 ASTVARRUNDIR=$(localstatedir)/run
129 ASTMANDIR=$(mandir)
130 ifneq ($(findstring BSD,$(OSARCH)),)
131 ASTVARLIBDIR=$(prefix)/share/asterisk
132 ASTVARRUNDIR=$(localstatedir)/run/asterisk
133 else
134 ASTVARLIBDIR=$(localstatedir)/lib/asterisk
135 endif
136 endif
137 ifeq ($(ASTDATADIR),)
138 ASTDATADIR:=$(ASTVARLIBDIR)
139 endif
141 # Asterisk.conf is located in ASTETCDIR or by using the -C flag
142 # when starting Asterisk
143 ASTCONFPATH=$(ASTETCDIR)/asterisk.conf
144 MODULES_DIR=$(ASTLIBDIR)/modules
145 AGI_DIR=$(ASTDATADIR)/agi-bin
147 # If you use Apache, you may determine by a grep 'DocumentRoot' of your httpd.conf file
148 HTTP_DOCSDIR=/var/www/html
149 # Determine by a grep 'ScriptAlias' of your Apache httpd.conf file
150 HTTP_CGIDIR=/var/www/cgi-bin
152 # Uncomment this to use the older DSP routines
153 #ASTCFLAGS+=-DOLD_DSP_ROUTINES
155 # If the file .asterisk.makeopts is present in your home directory, you can
156 # include all of your favorite menuselect options so that every time you download
157 # a new version of Asterisk, you don't have to run menuselect to set them.
158 # The file /etc/asterisk.makeopts will also be included but can be overridden
159 # by the file in your home directory.
161 GLOBAL_MAKEOPTS=$(wildcard /etc/asterisk.makeopts)
162 USER_MAKEOPTS=$(wildcard ~/.asterisk.makeopts)
164 MOD_SUBDIR_CFLAGS=-I$(ASTTOPDIR)/include
165 OTHER_SUBDIR_CFLAGS=-I$(ASTTOPDIR)/include
167 ifeq ($(OSARCH),linux-gnu)
168 ifeq ($(PROC),x86_64)
169 # You must have GCC 3.4 to use k8, otherwise use athlon
170 PROC=k8
171 #PROC=athlon
172 endif
174 ifeq ($(PROC),sparc64)
175 #The problem with sparc is the best stuff is in newer versions of gcc (post 3.0) only.
176 #This works for even old (2.96) versions of gcc and provides a small boost either way.
177 #A ultrasparc cpu is really v9 but the stock debian stable 3.0 gcc doesn't support it.
178 #So we go lowest common available by gcc and go a step down, still a step up from
179 #the default as we now have a better instruction set to work with. - Belgarath
180 PROC=ultrasparc
181 OPTIONS+=$(shell if $(CC) -mtune=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-mtune=$(PROC)"; fi)
182 OPTIONS+=$(shell if $(CC) -mcpu=v8 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-mcpu=v8"; fi)
183 OPTIONS+=-fomit-frame-pointer
184 endif
186 ifeq ($(PROC),arm)
187 # The Cirrus logic is the only heavily shipping arm processor with a real floating point unit
188 ifeq ($(SUB_PROC),maverick)
189 OPTIONS+=-fsigned-char -mcpu=ep9312
190 else
191 ifeq ($(SUB_PROC),xscale)
192 OPTIONS+=-fsigned-char -mcpu=xscale
193 else
194 OPTIONS+=-fsigned-char
195 endif
196 endif
197 endif
198 endif
200 ifeq ($(findstring -save-temps,$(ASTCFLAGS)),)
201 ASTCFLAGS+=-pipe
202 endif
204 ASTCFLAGS+=-Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG)
206 ASTCFLAGS+=-include $(ASTTOPDIR)/include/asterisk/autoconfig.h
208 ifeq ($(AST_DEVMODE),yes)
209 ASTCFLAGS+=-Werror -Wunused $(AST_DECLARATION_AFTER_STATEMENT)
210 endif
212 ifneq ($(findstring BSD,$(OSARCH)),)
213 ASTCFLAGS+=-I/usr/local/include
214 ASTLDFLAGS+=-L/usr/local/lib
215 endif
217 ifneq ($(PROC),ultrasparc)
218 ASTCFLAGS+=$(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
219 endif
221 ifeq ($(PROC),ppc)
222 ASTCFLAGS+=-fsigned-char
223 endif
225 ifeq ($(OSARCH),FreeBSD)
226 # -V is understood by BSD Make, not by GNU make.
227 BSDVERSION=$(shell make -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk)
228 ASTCFLAGS+=$(shell if test $(BSDVERSION) -lt 500016 ; then echo "-D_THREAD_SAFE"; fi)
229 AST_LIBS+=$(shell if test $(BSDVERSION) -lt 502102 ; then echo "-lc_r"; else echo "-pthread"; fi)
230 endif
232 ifeq ($(OSARCH),NetBSD)
233 ASTCFLAGS+=-pthread -I/usr/pkg/include
234 endif
236 ifeq ($(OSARCH),OpenBSD)
237 ASTCFLAGS+=-pthread
238 endif
240 ifeq ($(OSARCH),SunOS)
241 ASTCFLAGS+=-Wcast-align -DSOLARIS -I../include/solaris-compat -I/opt/ssl/include -I/usr/local/ssl/include
242 endif
244 ASTERISKVERSION:=$(shell GREP=$(GREP) AWK=$(AWK) build_tools/make_version .)
246 ifneq ($(wildcard .version),)
247 ASTERISKVERSIONNUM:=$(shell $(AWK) -F. '{printf "%01d%02d%02d", $$1, $$2, $$3}' .version)
248 RPMVERSION:=$(shell sed 's/[-\/:]/_/g' .version)
249 else
250 RPMVERSION=unknown
251 endif
253 ifneq ($(wildcard .svn)$(wildcard .git),)
254 ASTERISKVERSIONNUM=999999
255 endif
257 ASTCFLAGS+=$(MALLOC_DEBUG)$(BUSYDETECT)$(OPTIONS)
259 MOD_SUBDIRS:=res channels pbx apps codecs formats cdr funcs main
260 OTHER_SUBDIRS:=utils agi
261 SUBDIRS:=$(OTHER_SUBDIRS) $(MOD_SUBDIRS)
262 SUBDIRS_INSTALL:=$(SUBDIRS:%=%-install)
263 SUBDIRS_CLEAN:=$(SUBDIRS:%=%-clean)
264 SUBDIRS_DIST_CLEAN:=$(SUBDIRS:%=%-dist-clean)
265 SUBDIRS_UNINSTALL:=$(SUBDIRS:%=%-uninstall)
266 MOD_SUBDIRS_EMBED_LDSCRIPT:=$(MOD_SUBDIRS:%=%-embed-ldscript)
267 MOD_SUBDIRS_EMBED_LDFLAGS:=$(MOD_SUBDIRS:%=%-embed-ldflags)
268 MOD_SUBDIRS_EMBED_LIBS:=$(MOD_SUBDIRS:%=%-embed-libs)
269 MOD_SUBDIRS_MENUSELECT_TREE:=$(MOD_SUBDIRS:%=%-menuselect-tree)
271 ifneq ($(findstring darwin,$(OSARCH)),)
272 ASTCFLAGS+=-D__Darwin__
273 AUDIO_LIBS=-framework CoreAudio
274 SOLINK=-dynamic -bundle -undefined suppress -force_flat_namespace
275 else
276 # These are used for all but Darwin
277 SOLINK=-shared -Xlinker -x
278 ifneq ($(findstring BSD,$(OSARCH)),)
279 LDFLAGS+=-L/usr/local/lib
280 endif
281 endif
283 ifeq ($(OSARCH),SunOS)
284 SOLINK=-shared -fpic -L/usr/local/ssl/lib -lrt
285 endif
287 SUBMAKE=$(MAKE) --quiet --no-print-directory
289 # This is used when generating the doxygen documentation
290 ifneq ($(DOT),:)
291 HAVEDOT=yes
292 else
293 HAVEDOT=no
294 endif
296 all: _all
297 @echo " +--------- Asterisk Build Complete ---------+"
298 @echo " + Asterisk has successfully been built, and +"
299 @echo " + can be installed by running: +"
300 @echo " + +"
301 ifeq ($(MAKE), gmake)
302 @echo " + $(MAKE) install +"
303 else
304 @echo " + $(MAKE) install +"
305 endif
306 @echo " +-------------------------------------------+"
308 _all: cleantest $(SUBDIRS)
310 makeopts: configure
311 @echo "****"
312 @echo "**** The configure script must be executed before running '$(MAKE)'."
313 @echo "**** Please run \"./configure\"."
314 @echo "****"
315 @exit 1
317 menuselect.makeopts: menuselect/menuselect menuselect-tree
318 menuselect/menuselect --check-deps menuselect.makeopts $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS)
320 $(MOD_SUBDIRS_EMBED_LDSCRIPT):
321 @echo "EMBED_LDSCRIPTS+="`$(SUBMAKE) -C $(@:-embed-ldscript=) SUBDIR=$(@:-embed-ldscript=) __embed_ldscript` >> makeopts.embed_rules
323 $(MOD_SUBDIRS_EMBED_LDFLAGS):
324 @echo "EMBED_LDFLAGS+="`$(SUBMAKE) -C $(@:-embed-ldflags=) SUBDIR=$(@:-embed-ldflags=) __embed_ldflags` >> makeopts.embed_rules
326 $(MOD_SUBDIRS_EMBED_LIBS):
327 @echo "EMBED_LIBS+="`$(SUBMAKE) -C $(@:-embed-libs=) SUBDIR=$(@:-embed-libs=) __embed_libs` >> makeopts.embed_rules
329 $(MOD_SUBDIRS_MENUSELECT_TREE):
330 @$(SUBMAKE) -C $(@:-menuselect-tree=) SUBDIR=$(@:-menuselect-tree=) moduleinfo
331 @$(SUBMAKE) -C $(@:-menuselect-tree=) SUBDIR=$(@:-menuselect-tree=) makeopts
333 makeopts.embed_rules: menuselect.makeopts
334 @echo "Generating embedded module rules ..."
335 @rm -f $@
336 @$(MAKE) --no-print-directory $(MOD_SUBDIRS_EMBED_LDSCRIPT)
337 @$(MAKE) --no-print-directory $(MOD_SUBDIRS_EMBED_LDFLAGS)
338 @$(MAKE) --no-print-directory $(MOD_SUBDIRS_EMBED_LIBS)
340 $(SUBDIRS): include/asterisk/version.h include/asterisk/buildopts.h defaults.h makeopts.embed_rules
342 # ensure that all module subdirectories are processed before 'main' during
343 # a parallel build, since if there are modules selected to be embedded the
344 # directories containing them must be completed before the main Asterisk
345 # binary can be built
346 main: $(filter-out main,$(MOD_SUBDIRS))
348 $(MOD_SUBDIRS):
349 @ASTCFLAGS="$(MOD_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS="$(ASTLDFLAGS)" AST_LIBS="$(AST_LIBS)" $(MAKE) --no-builtin-rules -C $@ SUBDIR=$@ all
351 $(OTHER_SUBDIRS):
352 @ASTCFLAGS="$(OTHER_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS="$(ASTLDFLAGS)" AUDIO_LIBS="$(AUDIO_LIBS)" $(MAKE) --no-builtin-rules -C $@ SUBDIR=$@ all
354 defaults.h: makeopts
355 @build_tools/make_defaults_h > $@.tmp
356 @if cmp -s $@.tmp $@ ; then : ; else \
357 mv $@.tmp $@ ; \
359 @rm -f $@.tmp
361 include/asterisk/version.h: FORCE
362 @build_tools/make_version_h > $@.tmp
363 @if cmp -s $@.tmp $@ ; then : ; else \
364 mv $@.tmp $@ ; \
366 @rm -f $@.tmp
368 include/asterisk/buildopts.h: menuselect.makeopts
369 @build_tools/make_buildopts_h > $@.tmp
370 @if cmp -s $@.tmp $@ ; then : ; else \
371 mv $@.tmp $@ ; \
373 @rm -f $@.tmp
375 $(SUBDIRS_CLEAN):
376 @$(MAKE) --no-print-directory -C $(@:-clean=) clean
378 $(SUBDIRS_DIST_CLEAN):
379 @$(MAKE) --no-print-directory -C $(@:-dist-clean=) dist-clean
381 clean: $(SUBDIRS_CLEAN)
382 rm -f defaults.h
383 rm -f include/asterisk/build.h
384 rm -f include/asterisk/version.h
385 @$(MAKE) -C menuselect clean
386 cp -f .cleancount .lastclean
388 dist-clean: distclean
390 distclean: $(SUBDIRS_DIST_CLEAN) clean
391 @$(MAKE) -C menuselect dist-clean
392 @$(MAKE) -C sounds dist-clean
393 rm -f menuselect.makeopts makeopts menuselect-tree menuselect.makedeps
394 rm -f makeopts.embed_rules
395 rm -f config.log config.status config.cache
396 rm -rf autom4te.cache
397 rm -f include/asterisk/autoconfig.h
398 rm -f include/asterisk/buildopts.h
399 rm -rf doc/api
400 rm -f build_tools/menuselect-deps
402 datafiles: _all
403 if [ x`$(ID) -un` = xroot ]; then CFLAGS="$(ASTCFLAGS)" sh build_tools/mkpkgconfig $(DESTDIR)/usr/lib/pkgconfig; fi
404 # Should static HTTP be installed during make samples or even with its own target ala
405 # webvoicemail? There are portions here that *could* be customized but might also be
406 # improved a lot. I'll put it here for now.
407 mkdir -p $(DESTDIR)$(ASTDATADIR)/static-http
408 for x in static-http/*; do \
409 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/static-http ; \
410 done
411 mkdir -p $(DESTDIR)$(ASTDATADIR)/images
412 for x in images/*.jpg; do \
413 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/images ; \
414 done
415 mkdir -p $(DESTDIR)$(AGI_DIR)
416 $(MAKE) -C sounds install
418 update:
419 @if [ -d .svn ]; then \
420 echo "Updating from Subversion..." ; \
421 svn update | tee update.out; \
422 rm -f .version; \
423 if [ `grep -c ^C update.out` -gt 0 ]; then \
424 echo ; echo "The following files have conflicts:" ; \
425 grep ^C update.out | cut -b4- ; \
426 fi ; \
427 rm -f update.out; \
428 else \
429 echo "Not under version control"; \
432 NEWHEADERS=$(notdir $(wildcard include/asterisk/*.h))
433 OLDHEADERS=$(filter-out $(NEWHEADERS),$(notdir $(wildcard $(DESTDIR)$(ASTHEADERDIR)/*.h)))
435 installdirs:
436 mkdir -p $(DESTDIR)$(MODULES_DIR)
437 mkdir -p $(DESTDIR)$(ASTSBINDIR)
438 mkdir -p $(DESTDIR)$(ASTETCDIR)
439 mkdir -p $(DESTDIR)$(ASTBINDIR)
440 mkdir -p $(DESTDIR)$(ASTVARRUNDIR)
441 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail
442 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/dictate
443 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/system
444 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/tmp
445 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/meetme
446 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/monitor
448 bininstall: _all installdirs $(SUBDIRS_INSTALL)
449 $(INSTALL) -m 755 main/asterisk $(DESTDIR)$(ASTSBINDIR)/
450 $(LN) -sf asterisk $(DESTDIR)$(ASTSBINDIR)/rasterisk
451 $(INSTALL) -m 755 contrib/scripts/astgenkey $(DESTDIR)$(ASTSBINDIR)/
452 $(INSTALL) -m 755 contrib/scripts/autosupport $(DESTDIR)$(ASTSBINDIR)/
453 if [ ! -f $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ]; then \
454 cat contrib/scripts/safe_asterisk | sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ;\
455 chmod 755 $(DESTDIR)$(ASTSBINDIR)/safe_asterisk;\
457 $(INSTALL) -d $(DESTDIR)$(ASTHEADERDIR)
458 $(INSTALL) -m 644 include/asterisk.h $(DESTDIR)$(includedir)
459 $(INSTALL) -m 644 include/asterisk/*.h $(DESTDIR)$(ASTHEADERDIR)
460 if [ -n "$(OLDHEADERS)" ]; then \
461 rm -f $(addprefix $(DESTDIR)$(ASTHEADERDIR)/,$(OLDHEADERS)) ;\
463 mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-csv
464 mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-custom
465 mkdir -p $(DESTDIR)$(ASTDATADIR)/keys
466 mkdir -p $(DESTDIR)$(ASTDATADIR)/firmware
467 mkdir -p $(DESTDIR)$(ASTDATADIR)/firmware/iax
468 mkdir -p $(DESTDIR)$(ASTMANDIR)/man8
469 $(INSTALL) -m 644 keys/iaxtel.pub $(DESTDIR)$(ASTDATADIR)/keys
470 $(INSTALL) -m 644 keys/freeworlddialup.pub $(DESTDIR)$(ASTDATADIR)/keys
471 $(INSTALL) -m 644 doc/asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
472 $(INSTALL) -m 644 contrib/scripts/astgenkey.8 $(DESTDIR)$(ASTMANDIR)/man8
473 $(INSTALL) -m 644 contrib/scripts/autosupport.8 $(DESTDIR)$(ASTMANDIR)/man8
474 $(INSTALL) -m 644 contrib/scripts/safe_asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
475 if [ -f contrib/firmware/iax/iaxy.bin ] ; then \
476 $(INSTALL) -m 644 contrib/firmware/iax/iaxy.bin $(DESTDIR)$(ASTDATADIR)/firmware/iax/iaxy.bin; \
479 $(SUBDIRS_INSTALL):
480 @DESTDIR="$(DESTDIR)" ASTSBINDIR="$(ASTSBINDIR)" $(MAKE) -C $(@:-install=) install
482 NEWMODS=$(notdir $(wildcard */*.so))
483 DEPMODS=chan_zap.so app_zapras.so app_zapscan.so app_zapbarge.so codec_zap.so
484 OLDMODS=$(filter-out $(NEWMODS) $(DEPMODS),$(notdir $(wildcard $(DESTDIR)$(MODULES_DIR)/*.so)))
486 oldmodcheck:
487 @for f in $(DEPMODS); do rm -f $(DESTDIR)$(MODULES_DIR)/$$f; done
488 @if [ -n "$(OLDMODS)" ]; then \
489 echo " WARNING WARNING WARNING" ;\
490 echo "" ;\
491 echo " Your Asterisk modules directory, located at" ;\
492 echo " $(DESTDIR)$(MODULES_DIR)" ;\
493 echo " contains modules that were not installed by this " ;\
494 echo " version of Asterisk. Please ensure that these" ;\
495 echo " modules are compatible with this version before" ;\
496 echo " attempting to run Asterisk." ;\
497 echo "" ;\
498 for f in $(OLDMODS); do \
499 echo " $$f" ;\
500 done ;\
501 echo "" ;\
502 echo " WARNING WARNING WARNING" ;\
505 badshell:
506 ifneq ($(findstring ~,$(DESTDIR)),)
507 @echo "Your shell doesn't do ~ expansion when expected (specifically, when doing \"make install DESTDIR=~/path\")."
508 @echo "Try replacing ~ with \$$HOME, as in \"make install DESTDIR=\$$HOME/path\"."
509 @exit 1
510 endif
512 install: badshell datafiles bininstall
513 @if [ -x /usr/sbin/asterisk-post-install ]; then \
514 /usr/sbin/asterisk-post-install $(DESTDIR) . ; \
516 @echo " +---- Asterisk Installation Complete -------+"
517 @echo " + +"
518 @echo " + YOU MUST READ THE SECURITY DOCUMENT +"
519 @echo " + +"
520 @echo " + Asterisk has successfully been installed. +"
521 @echo " + If you would like to install the sample +"
522 @echo " + configuration files (overwriting any +"
523 @echo " + existing config files), run: +"
524 @echo " + +"
525 ifeq ($(MAKE), gmake)
526 @echo " + $(MAKE) samples +"
527 else
528 @echo " + $(MAKE) samples +"
529 endif
530 @echo " + +"
531 @echo " +----------------- or ---------------------+"
532 @echo " + +"
533 @echo " + You can go ahead and install the asterisk +"
534 @echo " + program documentation now or later run: +"
535 @echo " + +"
536 ifeq ($(MAKE), gmake)
537 @echo " + $(MAKE) progdocs +"
538 else
539 @echo " + $(MAKE) progdocs +"
540 endif
541 @echo " + +"
542 @echo " + **Note** This requires that you have +"
543 @echo " + doxygen installed on your local system +"
544 @echo " +-------------------------------------------+"
545 @$(MAKE) -s oldmodcheck
547 upgrade: bininstall
549 adsi:
550 mkdir -p $(DESTDIR)$(ASTETCDIR)
551 for x in configs/*.adsi; do \
552 if [ ! -f $(DESTDIR)$(ASTETCDIR)/$$x ]; then \
553 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x` ; \
554 fi ; \
555 done
557 samples: adsi
558 mkdir -p $(DESTDIR)$(ASTETCDIR)
559 for x in configs/*.sample; do \
560 if [ -f $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` ]; then \
561 if [ "$(OVERWRITE)" = "y" ]; then \
562 if cmp -s $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` $$x ; then \
563 echo "Config file $$x is unchanged"; \
564 continue; \
565 fi ; \
566 mv -f $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample`.old ; \
567 else \
568 echo "Skipping config file $$x"; \
569 continue; \
570 fi ;\
571 fi ; \
572 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` ;\
573 done
574 if [ "$(OVERWRITE)" = "y" ] || [ ! -f $(DESTDIR)$(ASTCONFPATH) ]; then \
576 echo "[directories]" ; \
577 echo "astetcdir => $(ASTETCDIR)" ; \
578 echo "astmoddir => $(MODULES_DIR)" ; \
579 echo "astvarlibdir => $(ASTVARLIBDIR)" ; \
580 echo "astdatadir => $(ASTDATADIR)" ; \
581 echo "astagidir => $(AGI_DIR)" ; \
582 echo "astspooldir => $(ASTSPOOLDIR)" ; \
583 echo "astrundir => $(ASTVARRUNDIR)" ; \
584 echo "astlogdir => $(ASTLOGDIR)" ; \
585 echo "" ; \
586 echo "[options]" ; \
587 echo "languageprefix = yes ; Use the new sound prefix path syntax" ; \
588 echo ";verbose = 3" ; \
589 echo ";debug = 3" ; \
590 echo ";alwaysfork = yes ; same as -F at startup" ; \
591 echo ";nofork = yes ; same as -f at startup" ; \
592 echo ";quiet = yes ; same as -q at startup" ; \
593 echo ";timestamp = yes ; same as -T at startup" ; \
594 echo ";execincludes = yes ; support #exec in config files" ; \
595 echo ";console = yes ; Run as console (same as -c at startup)" ; \
596 echo ";highpriority = yes ; Run realtime priority (same as -p at startup)" ; \
597 echo ";initcrypto = yes ; Initialize crypto keys (same as -i at startup)" ; \
598 echo ";nocolor = yes ; Disable console colors" ; \
599 echo ";dontwarn = yes ; Disable some warnings" ; \
600 echo ";dumpcore = yes ; Dump core on crash (same as -g at startup)" ; \
601 echo ";internal_timing = yes" ; \
602 echo ";systemname = my_system_name ; prefix uniqueid with a system name for global uniqueness issues" ; \
603 echo ";maxcalls = 10 ; Maximum amount of calls allowed" ; \
604 echo ";maxload = 0.9 ; Asterisk stops accepting new calls if the load average exceed this limit" ; \
605 echo ";cache_record_files = yes ; Cache recorded sound files to another directory during recording" ; \
606 echo ";record_cache_dir = /tmp ; Specify cache directory (used in cnjunction with cache_record_files)" ; \
607 echo ";transmit_silence_during_record = yes ; Transmit SLINEAR silence while a channel is being recorded" ; \
608 echo ";transmit_silence = yes ; Transmit SLINEAR silence while a channel is being recorded or DTMF is being generated" ; \
609 echo ";transcode_via_sln = yes ; Build transcode paths via SLINEAR, instead of directly" ; \
610 echo ";runuser = asterisk ; The user to run as" ; \
611 echo ";rungroup = asterisk ; The group to run as" ; \
612 echo ";dahdichanname = yes ; Channels created by chan_dahdi will be called 'DAHDI', otherwise 'Zap'" ; \
613 echo "" ; \
614 echo "; Changing the following lines may compromise your security." ; \
615 echo ";[files]" ; \
616 echo ";astctlpermissions = 0660" ; \
617 echo ";astctlowner = root" ; \
618 echo ";astctlgroup = apache" ; \
619 echo ";astctl = asterisk.ctl" ; \
620 ) > $(DESTDIR)$(ASTCONFPATH) ; \
621 else \
622 echo "Skipping asterisk.conf creation"; \
624 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/INBOX
625 build_tools/make_sample_voicemail $(DESTDIR)/$(ASTDATADIR) $(DESTDIR)/$(ASTSPOOLDIR)
627 webvmail:
628 @[ -d $(DESTDIR)$(HTTP_DOCSDIR)/ ] || ( printf "http docs directory not found.\nUpdate assignment of variable HTTP_DOCSDIR in Makefile!\n" && exit 1 )
629 @[ -d $(DESTDIR)$(HTTP_CGIDIR) ] || ( printf "cgi-bin directory not found.\nUpdate assignment of variable HTTP_CGIDIR in Makefile!\n" && exit 1 )
630 $(INSTALL) -m 4755 -o root -g root contrib/scripts/vmail.cgi $(DESTDIR)$(HTTP_CGIDIR)/vmail.cgi
631 mkdir -p $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk
632 for x in images/*.gif; do \
633 $(INSTALL) -m 644 $$x $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk/; \
634 done
635 @echo " +--------- Asterisk Web Voicemail ----------+"
636 @echo " + +"
637 @echo " + Asterisk Web Voicemail is installed in +"
638 @echo " + your cgi-bin directory: +"
639 @echo " + $(DESTDIR)$(HTTP_CGIDIR)"
640 @echo " + IT USES A SETUID ROOT PERL SCRIPT, SO +"
641 @echo " + IF YOU DON'T LIKE THAT, UNINSTALL IT! +"
642 @echo " + +"
643 @echo " + Other static items have been stored in: +"
644 @echo " + $(DESTDIR)$(HTTP_DOCSDIR)"
645 @echo " + +"
646 @echo " + If these paths do not match your httpd +"
647 @echo " + installation, correct the definitions +"
648 @echo " + in your Makefile of HTTP_CGIDIR and +"
649 @echo " + HTTP_DOCSDIR +"
650 @echo " + +"
651 @echo " +-------------------------------------------+"
653 spec:
654 sed "s/^Version:.*/Version: $(RPMVERSION)/g" redhat/asterisk.spec > asterisk.spec ; \
656 rpm: __rpm
658 __rpm: include/asterisk/version.h include/asterisk/buildopts.h spec
659 rm -rf /tmp/asterisk ; \
660 mkdir -p /tmp/asterisk/redhat/RPMS/i386 ; \
661 $(MAKE) DESTDIR=/tmp/asterisk install ; \
662 $(MAKE) DESTDIR=/tmp/asterisk samples ; \
663 mkdir -p /tmp/asterisk/etc/rc.d/init.d ; \
664 cp -f contrib/init.d/rc.redhat.asterisk /tmp/asterisk/etc/rc.d/init.d/asterisk ; \
665 rpmbuild --rcfile /usr/lib/rpm/rpmrc:redhat/rpmrc -bb asterisk.spec
667 progdocs:
668 (cat contrib/asterisk-ng-doxygen; echo "HAVE_DOT=$(HAVEDOT)"; \
669 echo "PROJECT_NUMBER=$(ASTERISKVERSION)") | doxygen -
671 config:
672 @if [ "${OSARCH}" = "linux-gnu" ]; then \
673 if [ -f /etc/redhat-release -o -f /etc/fedora-release ]; then \
674 $(INSTALL) -m 755 contrib/init.d/rc.redhat.asterisk $(DESTDIR)/etc/rc.d/init.d/asterisk; \
675 if [ -z "$(DESTDIR)" ]; then /sbin/chkconfig --add asterisk; fi; \
676 elif [ -f /etc/debian_version ]; then \
677 $(INSTALL) -m 755 contrib/init.d/rc.debian.asterisk $(DESTDIR)/etc/init.d/asterisk; \
678 if [ -z "$(DESTDIR)" ]; then /usr/sbin/update-rc.d asterisk start 50 2 3 4 5 . stop 91 2 3 4 5 .; fi; \
679 elif [ -f /etc/gentoo-release ]; then \
680 $(INSTALL) -m 755 contrib/init.d/rc.gentoo.asterisk $(DESTDIR)/etc/init.d/asterisk; \
681 if [ -z "$(DESTDIR)" ]; then /sbin/rc-update add asterisk default; fi; \
682 elif [ -f /etc/mandrake-release -o -f /etc/mandriva-release ]; then \
683 $(INSTALL) -m 755 contrib/init.d/rc.mandrake.asterisk $(DESTDIR)/etc/rc.d/init.d/asterisk; \
684 if [ -z "$(DESTDIR)" ]; then /sbin/chkconfig --add asterisk; fi; \
685 elif [ -f /etc/SuSE-release -o -f /etc/novell-release ]; then \
686 $(INSTALL) -m 755 contrib/init.d/rc.suse.asterisk $(DESTDIR)/etc/init.d/asterisk; \
687 if [ -z "$(DESTDIR)" ]; then /sbin/chkconfig --add asterisk; fi; \
688 elif [ -f /etc/slackware-version ]; then \
689 echo "Slackware is not currently supported, although an init script does exist for it." \
690 else \
691 echo "We could not install init scripts for your distribution."; \
692 fi \
693 else \
694 echo "We could not install init scripts for your operating system."; \
697 sounds:
698 $(MAKE) -C sounds all
700 # If the cleancount has been changed, force a make clean.
701 # .cleancount is the global clean count, and .lastclean is the
702 # last clean count we had
704 cleantest:
705 @cmp -s .cleancount .lastclean || $(MAKE) clean
707 $(SUBDIRS_UNINSTALL):
708 @$(MAKE) --no-print-directory -C $(@:-uninstall=) uninstall
710 _uninstall: $(SUBDIRS_UNINSTALL)
711 rm -f $(DESTDIR)$(MODULES_DIR)/*
712 rm -f $(DESTDIR)$(ASTSBINDIR)/*asterisk*
713 rm -f $(DESTDIR)$(ASTSBINDIR)/astgenkey
714 rm -f $(DESTDIR)$(ASTSBINDIR)/autosupport
715 rm -rf $(DESTDIR)$(ASTHEADERDIR)
716 rm -rf $(DESTDIR)$(ASTDATADIR)/firmware
717 rm -f $(DESTDIR)$(ASTMANDIR)/man8/asterisk.8
718 rm -f $(DESTDIR)$(ASTMANDIR)/man8/astgenkey.8
719 rm -f $(DESTDIR)$(ASTMANDIR)/man8/autosupport.8
720 rm -f $(DESTDIR)$(ASTMANDIR)/man8/safe_asterisk.8
721 $(MAKE) -C sounds uninstall
723 uninstall: _uninstall
724 @echo " +--------- Asterisk Uninstall Complete -----+"
725 @echo " + Asterisk binaries, sounds, man pages, +"
726 @echo " + headers, modules, and firmware builds, +"
727 @echo " + have all been uninstalled. +"
728 @echo " + +"
729 @echo " + To remove ALL traces of Asterisk, +"
730 @echo " + including configuration, spool +"
731 @echo " + directories, and logs, run the following +"
732 @echo " + command: +"
733 @echo " + +"
734 ifeq ($(MAKE), gmake)
735 @echo " + $(MAKE) uninstall-all +"
736 else
737 @echo " + $(MAKE) uninstall-all +"
738 endif
739 @echo " +-------------------------------------------+"
741 uninstall-all: _uninstall
742 rm -rf $(DESTDIR)$(ASTLIBDIR)
743 rm -rf $(DESTDIR)$(ASTVARLIBDIR)
744 rm -rf $(DESTDIR)$(ASTDATADIR)
745 rm -rf $(DESTDIR)$(ASTSPOOLDIR)
746 rm -rf $(DESTDIR)$(ASTETCDIR)
747 rm -rf $(DESTDIR)$(ASTLOGDIR)
749 menuconfig: menuselect
751 gmenuconfig: gmenuselect
753 menuselect: menuselect/menuselect menuselect-tree
754 -@menuselect/menuselect menuselect.makeopts $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) && (echo "menuselect changes saved!"; rm -f channels/h323/Makefile.ast main/asterisk) || echo "menuselect changes NOT saved!"
756 gmenuselect: menuselect/gmenuselect menuselect-tree
757 -@menuselect/gmenuselect menuselect.makeopts $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) && (echo "menuselect changes saved!"; rm -f channels/h323/Makefile.ast main/asterisk) || echo "menuselect changes NOT saved!"
759 menuselect/menuselect: makeopts menuselect/menuselect.c menuselect/menuselect_curses.c menuselect/menuselect_stub.c menuselect/menuselect.h menuselect/linkedlists.h makeopts
760 @CC="$(HOST_CC)" LD="" AR="" RANLIB="" CFLAGS="" $(MAKE) -C menuselect CONFIGURE_SILENT="--silent"
762 menuselect/gmenuselect: makeopts menuselect/menuselect.c menuselect/menuselect_gtk.c menuselect/menuselect_stub.c menuselect/menuselect.h menuselect/linkedlists.h makeopts
763 @CC="$(HOST_CC)" CXX="$(CXX)" LD="" AR="" RANLIB="" CFLAGS="" $(MAKE) -C menuselect _gmenuselect CONFIGURE_SILENT="--silent"
765 menuselect-tree: $(foreach dir,$(filter-out main,$(MOD_SUBDIRS)),$(wildcard $(dir)/*.c) $(wildcard $(dir)/*.cc)) build_tools/cflags.xml build_tools/cflags-devmode.xml sounds/sounds.xml build_tools/embed_modules.xml configure
766 @echo "Generating input for menuselect ..."
767 @echo "<?xml version=\"1.0\"?>" > $@
768 @echo >> $@
769 @echo "<menu name=\"Asterisk Module and Build Option Selection\">" >> $@
770 @for dir in $(sort $(filter-out main,$(MOD_SUBDIRS))); do $(SUBMAKE) -C $${dir} SUBDIR=$${dir} moduleinfo >> $@; done
771 @for dir in $(sort $(filter-out main,$(MOD_SUBDIRS))); do $(SUBMAKE) -C $${dir} SUBDIR=$${dir} makeopts >> $@; done
772 @cat build_tools/cflags.xml >> $@
773 @if [ "${AST_DEVMODE}" = "yes" ]; then \
774 cat build_tools/cflags-devmode.xml >> $@; \
776 @cat build_tools/embed_modules.xml >> $@
777 @cat sounds/sounds.xml >> $@
778 @echo "</menu>" >> $@
780 .PHONY: menuselect main sounds clean dist-clean distclean all prereqs cleantest uninstall _uninstall uninstall-all dont-optimize $(SUBDIRS_INSTALL) $(SUBDIRS_DIST_CLEAN) $(SUBDIRS_CLEAN) $(SUBDIRS_UNINSTALL) $(SUBDIRS) $(MOD_SUBDIRS_EMBED_LDSCRIPT) $(MOD_SUBDIRS_EMBED_LDFLAGS) $(MOD_SUBDIRS_EMBED_LIBS) badshell menuselect.makeopts installdirs
782 FORCE: