emit a warning message when we drop a G.729B CNG frame destined for the transcoder
[asterisk-bristuff.git] / Makefile
blob2cee8c3d24b45cfc4169a4df0c403e46df09efe6
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 GREP
62 export ID
63 export OSARCH
64 export CURSES_DIR
65 export NCURSES_DIR
66 export TERMCAP_DIR
67 export TINFO_DIR
68 export GTK2_LIB
69 export GTK2_INCLUDE
71 # even though we could use '-include makeopts' here, use a wildcard
72 # lookup anyway, so that make won't try to build makeopts if it doesn't
73 # exist (other rules will force it to be built if needed)
74 ifneq ($(wildcard makeopts),)
75 include makeopts
76 endif
78 # Some build systems, such as the one in openwrt, like to pass custom target
79 # CFLAGS and LDFLAGS in the COPTS and LDOPTS variables.
80 ASTCFLAGS+=$(COPTS)
81 ASTLDFLAGS+=$(LDOPTS)
83 #Uncomment this to see all build commands instead of 'quiet' output
84 #NOISY_BUILD=yes
86 # Create OPTIONS variable
87 OPTIONS=
89 ASTTOPDIR:=$(shell pwd)
91 # Overwite config files on "make samples"
92 OVERWRITE=y
94 # Include debug and macro symbols in the executables (-g) and profiling info (-pg)
95 DEBUG=-g3
97 # Staging directory
98 # Files are copied here temporarily during the install process
99 # For example, make DESTDIR=/tmp/asterisk woud put things in
100 # /tmp/asterisk/etc/asterisk
101 # !!! Watch out, put no spaces or comments after the value !!!
102 #DESTDIR?=/tmp/asterisk
104 # Define standard directories for various platforms
105 # These apply if they are not redefined in asterisk.conf
106 ifeq ($(OSARCH),SunOS)
107 ASTETCDIR=/var/etc/asterisk
108 ASTLIBDIR=/opt/asterisk/lib
109 ASTVARLIBDIR=/var/opt/asterisk
110 ASTSPOOLDIR=/var/spool/asterisk
111 ASTLOGDIR=/var/log/asterisk
112 ASTHEADERDIR=/opt/asterisk/include
113 ASTBINDIR=/opt/asterisk/bin
114 ASTSBINDIR=/opt/asterisk/sbin
115 ASTVARRUNDIR=/var/run/asterisk
116 ASTMANDIR=/opt/asterisk/man
117 else
118 ASTETCDIR=$(sysconfdir)/asterisk
119 ASTLIBDIR=$(libdir)/asterisk
120 ASTHEADERDIR=$(includedir)/asterisk
121 ASTBINDIR=$(bindir)
122 ASTSBINDIR=$(sbindir)
123 ASTSPOOLDIR=$(localstatedir)/spool/asterisk
124 ASTLOGDIR=$(localstatedir)/log/asterisk
125 ASTVARRUNDIR=$(localstatedir)/run
126 ASTMANDIR=$(mandir)
127 ifneq ($(findstring BSD,$(OSARCH)),)
128 ASTVARLIBDIR=$(prefix)/share/asterisk
129 ASTVARRUNDIR=$(localstatedir)/run/asterisk
130 else
131 ASTVARLIBDIR=$(localstatedir)/lib/asterisk
132 endif
133 endif
134 ifeq ($(ASTDATADIR),)
135 ASTDATADIR:=$(ASTVARLIBDIR)
136 endif
138 # Asterisk.conf is located in ASTETCDIR or by using the -C flag
139 # when starting Asterisk
140 ASTCONFPATH=$(ASTETCDIR)/asterisk.conf
141 MODULES_DIR=$(ASTLIBDIR)/modules
142 AGI_DIR=$(ASTDATADIR)/agi-bin
144 # If you use Apache, you may determine by a grep 'DocumentRoot' of your httpd.conf file
145 HTTP_DOCSDIR=/var/www/html
146 # Determine by a grep 'ScriptAlias' of your Apache httpd.conf file
147 HTTP_CGIDIR=/var/www/cgi-bin
149 # Uncomment this to use the older DSP routines
150 #ASTCFLAGS+=-DOLD_DSP_ROUTINES
152 # If the file .asterisk.makeopts is present in your home directory, you can
153 # include all of your favorite menuselect options so that every time you download
154 # a new version of Asterisk, you don't have to run menuselect to set them.
155 # The file /etc/asterisk.makeopts will also be included but can be overridden
156 # by the file in your home directory.
158 GLOBAL_MAKEOPTS=$(wildcard /etc/asterisk.makeopts)
159 USER_MAKEOPTS=$(wildcard ~/.asterisk.makeopts)
161 MOD_SUBDIR_CFLAGS=-I$(ASTTOPDIR)/include
162 OTHER_SUBDIR_CFLAGS=-I$(ASTTOPDIR)/include
164 ifeq ($(OSARCH),linux-gnu)
165 ifeq ($(PROC),x86_64)
166 # You must have GCC 3.4 to use k8, otherwise use athlon
167 PROC=k8
168 #PROC=athlon
169 endif
171 ifeq ($(PROC),sparc64)
172 #The problem with sparc is the best stuff is in newer versions of gcc (post 3.0) only.
173 #This works for even old (2.96) versions of gcc and provides a small boost either way.
174 #A ultrasparc cpu is really v9 but the stock debian stable 3.0 gcc doesn't support it.
175 #So we go lowest common available by gcc and go a step down, still a step up from
176 #the default as we now have a better instruction set to work with. - Belgarath
177 PROC=ultrasparc
178 OPTIONS+=$(shell if $(CC) -mtune=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-mtune=$(PROC)"; fi)
179 OPTIONS+=$(shell if $(CC) -mcpu=v8 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-mcpu=v8"; fi)
180 OPTIONS+=-fomit-frame-pointer
181 endif
183 ifeq ($(PROC),arm)
184 # The Cirrus logic is the only heavily shipping arm processor with a real floating point unit
185 ifeq ($(SUB_PROC),maverick)
186 OPTIONS+=-fsigned-char -mcpu=ep9312
187 else
188 ifeq ($(SUB_PROC),xscale)
189 OPTIONS+=-fsigned-char -mcpu=xscale
190 else
191 OPTIONS+=-fsigned-char
192 endif
193 endif
194 endif
195 endif
197 ifeq ($(findstring -save-temps,$(ASTCFLAGS)),)
198 ASTCFLAGS+=-pipe
199 endif
201 ASTCFLAGS+=-Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG)
203 ASTCFLAGS+=-include $(ASTTOPDIR)/include/asterisk/autoconfig.h
205 ifeq ($(AST_DEVMODE),yes)
206 ASTCFLAGS+=-Werror -Wunused $(AST_DECLARATION_AFTER_STATEMENT)
207 endif
209 ifneq ($(findstring BSD,$(OSARCH)),)
210 ASTCFLAGS+=-I/usr/local/include
211 ASTLDFLAGS+=-L/usr/local/lib
212 endif
214 ifneq ($(PROC),ultrasparc)
215 ASTCFLAGS+=$(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
216 endif
218 ifeq ($(PROC),ppc)
219 ASTCFLAGS+=-fsigned-char
220 endif
222 ifeq ($(OSARCH),FreeBSD)
223 # -V is understood by BSD Make, not by GNU make.
224 BSDVERSION=$(shell make -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk)
225 ASTCFLAGS+=$(shell if test $(BSDVERSION) -lt 500016 ; then echo "-D_THREAD_SAFE"; fi)
226 AST_LIBS+=$(shell if test $(BSDVERSION) -lt 502102 ; then echo "-lc_r"; else echo "-pthread"; fi)
227 endif
229 ifeq ($(OSARCH),NetBSD)
230 ASTCFLAGS+=-pthread -I/usr/pkg/include
231 endif
233 ifeq ($(OSARCH),OpenBSD)
234 ASTCFLAGS+=-pthread
235 endif
237 ifeq ($(OSARCH),SunOS)
238 ASTCFLAGS+=-Wcast-align -DSOLARIS -I../include/solaris-compat -I/opt/ssl/include -I/usr/local/ssl/include
239 endif
241 ASTERISKVERSION:=$(shell build_tools/make_version .)
243 ifneq ($(wildcard .version),)
244 ASTERISKVERSIONNUM:=$(shell awk -F. '{printf "%01d%02d%02d", $$1, $$2, $$3}' .version)
245 RPMVERSION:=$(shell sed 's/[-\/:]/_/g' .version)
246 else
247 RPMVERSION=unknown
248 endif
250 ifneq ($(wildcard .svn),)
251 ASTERISKVERSIONNUM=999999
252 endif
254 ASTCFLAGS+=$(MALLOC_DEBUG)$(BUSYDETECT)$(OPTIONS)
256 MOD_SUBDIRS:=res channels pbx apps codecs formats cdr funcs main
257 OTHER_SUBDIRS:=utils agi
258 SUBDIRS:=$(OTHER_SUBDIRS) $(MOD_SUBDIRS)
259 SUBDIRS_INSTALL:=$(SUBDIRS:%=%-install)
260 SUBDIRS_CLEAN:=$(SUBDIRS:%=%-clean)
261 SUBDIRS_DIST_CLEAN:=$(SUBDIRS:%=%-dist-clean)
262 SUBDIRS_UNINSTALL:=$(SUBDIRS:%=%-uninstall)
263 MOD_SUBDIRS_EMBED_LDSCRIPT:=$(MOD_SUBDIRS:%=%-embed-ldscript)
264 MOD_SUBDIRS_EMBED_LDFLAGS:=$(MOD_SUBDIRS:%=%-embed-ldflags)
265 MOD_SUBDIRS_EMBED_LIBS:=$(MOD_SUBDIRS:%=%-embed-libs)
267 ifneq ($(findstring darwin,$(OSARCH)),)
268 ASTCFLAGS+=-D__Darwin__
269 AUDIO_LIBS=-framework CoreAudio
270 SOLINK=-dynamic -bundle -undefined suppress -force_flat_namespace
271 else
272 # These are used for all but Darwin
273 SOLINK=-shared -Xlinker -x
274 ifneq ($(findstring BSD,$(OSARCH)),)
275 LDFLAGS+=-L/usr/local/lib
276 endif
277 endif
279 ifeq ($(OSARCH),SunOS)
280 SOLINK=-shared -fpic -L/usr/local/ssl/lib
281 endif
283 # This is used when generating the doxygen documentation
284 ifneq ($(DOT),:)
285 HAVEDOT=yes
286 else
287 HAVEDOT=no
288 endif
290 all: _all
291 @echo " +--------- Asterisk Build Complete ---------+"
292 @echo " + Asterisk has successfully been built, and +"
293 @echo " + can be installed by running: +"
294 @echo " + +"
295 ifeq ($(MAKE), gmake)
296 @echo " + $(MAKE) install +"
297 else
298 @echo " + $(MAKE) install +"
299 endif
300 @echo " +-------------------------------------------+"
302 _all: cleantest $(SUBDIRS)
304 makeopts: configure
305 @echo "****"
306 @echo "**** The configure script must be executed before running '$(MAKE)'."
307 @echo "**** Please run \"./configure\"."
308 @echo "****"
309 @exit 1
311 menuselect.makeopts: menuselect/menuselect menuselect-tree
312 menuselect/menuselect --check-deps $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts
314 $(MOD_SUBDIRS_EMBED_LDSCRIPT):
315 @echo "EMBED_LDSCRIPTS+="`$(MAKE) --quiet --no-print-directory -C $(@:-embed-ldscript=) SUBDIR=$(@:-embed-ldscript=) __embed_ldscript` >> makeopts.embed_rules
317 $(MOD_SUBDIRS_EMBED_LDFLAGS):
318 @echo "EMBED_LDFLAGS+="`$(MAKE) --quiet --no-print-directory -C $(@:-embed-ldflags=) SUBDIR=$(@:-embed-ldflags=) __embed_ldflags` >> makeopts.embed_rules
320 $(MOD_SUBDIRS_EMBED_LIBS):
321 @echo "EMBED_LIBS+="`$(MAKE) --quiet --no-print-directory -C $(@:-embed-libs=) SUBDIR=$(@:-embed-libs=) __embed_libs` >> makeopts.embed_rules
323 makeopts.embed_rules: menuselect.makeopts
324 @echo "Generating embedded module rules ..."
325 @rm -f $@
326 @$(MAKE) --no-print-directory $(MOD_SUBDIRS_EMBED_LDSCRIPT)
327 @$(MAKE) --no-print-directory $(MOD_SUBDIRS_EMBED_LDFLAGS)
328 @$(MAKE) --no-print-directory $(MOD_SUBDIRS_EMBED_LIBS)
330 $(SUBDIRS): include/asterisk/version.h include/asterisk/buildopts.h defaults.h makeopts.embed_rules
332 # ensure that all module subdirectories are processed before 'main' during
333 # a parallel build, since if there are modules selected to be embedded the
334 # directories containing them must be completed before the main Asterisk
335 # binary can be built
336 main: $(filter-out main,$(MOD_SUBDIRS))
338 $(MOD_SUBDIRS):
339 @ASTCFLAGS="$(MOD_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS="$(ASTLDFLAGS)" AST_LIBS="$(AST_LIBS)" $(MAKE) --no-print-directory --no-builtin-rules -C $@ SUBDIR=$@ all
341 $(OTHER_SUBDIRS):
342 @ASTCFLAGS="$(OTHER_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS="$(ASTLDFLAGS)" AUDIO_LIBS="$(AUDIO_LIBS)" $(MAKE) --no-print-directory --no-builtin-rules -C $@ SUBDIR=$@ all
344 defaults.h: makeopts
345 @build_tools/make_defaults_h > $@.tmp
346 @if cmp -s $@.tmp $@ ; then : ; else \
347 mv $@.tmp $@ ; \
349 @rm -f $@.tmp
351 include/asterisk/version.h:
352 @build_tools/make_version_h > $@.tmp
353 @if cmp -s $@.tmp $@ ; then : ; else \
354 mv $@.tmp $@ ; \
356 @rm -f $@.tmp
358 include/asterisk/buildopts.h: menuselect.makeopts
359 @build_tools/make_buildopts_h > $@.tmp
360 @if cmp -s $@.tmp $@ ; then : ; else \
361 mv $@.tmp $@ ; \
363 @rm -f $@.tmp
365 $(SUBDIRS_CLEAN):
366 @$(MAKE) --no-print-directory -C $(@:-clean=) clean
368 $(SUBDIRS_DIST_CLEAN):
369 @$(MAKE) --no-print-directory -C $(@:-dist-clean=) dist-clean
371 clean: $(SUBDIRS_CLEAN)
372 rm -f defaults.h
373 rm -f include/asterisk/build.h
374 rm -f include/asterisk/version.h
375 @$(MAKE) -C menuselect clean
376 cp -f .cleancount .lastclean
378 dist-clean: distclean
380 distclean: $(SUBDIRS_DIST_CLEAN) clean
381 @$(MAKE) -C menuselect dist-clean
382 @$(MAKE) -C sounds dist-clean
383 rm -f menuselect.makeopts makeopts menuselect-tree menuselect.makedeps
384 rm -f makeopts.embed_rules
385 rm -f config.log config.status
386 rm -rf autom4te.cache
387 rm -f include/asterisk/autoconfig.h
388 rm -f include/asterisk/buildopts.h
389 rm -rf doc/api
390 rm -f build_tools/menuselect-deps
392 datafiles: _all
393 if [ x`$(ID) -un` = xroot ]; then CFLAGS="$(ASTCFLAGS)" sh build_tools/mkpkgconfig $(DESTDIR)/usr/lib/pkgconfig; fi
394 # Should static HTTP be installed during make samples or even with its own target ala
395 # webvoicemail? There are portions here that *could* be customized but might also be
396 # improved a lot. I'll put it here for now.
397 mkdir -p $(DESTDIR)$(ASTDATADIR)/static-http
398 for x in static-http/*; do \
399 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/static-http ; \
400 done
401 mkdir -p $(DESTDIR)$(ASTDATADIR)/images
402 for x in images/*.jpg; do \
403 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/images ; \
404 done
405 mkdir -p $(DESTDIR)$(AGI_DIR)
406 $(MAKE) -C sounds install
408 update:
409 @if [ -d .svn ]; then \
410 echo "Updating from Subversion..." ; \
411 svn update | tee update.out; \
412 rm -f .version; \
413 if [ `grep -c ^C update.out` -gt 0 ]; then \
414 echo ; echo "The following files have conflicts:" ; \
415 grep ^C update.out | cut -b4- ; \
416 fi ; \
417 rm -f update.out; \
418 else \
419 echo "Not under version control"; \
422 NEWHEADERS=$(notdir $(wildcard include/asterisk/*.h))
423 OLDHEADERS=$(filter-out $(NEWHEADERS),$(notdir $(wildcard $(DESTDIR)$(ASTHEADERDIR)/*.h)))
425 bininstall: _all
426 mkdir -p $(DESTDIR)$(MODULES_DIR)
427 mkdir -p $(DESTDIR)$(ASTSBINDIR)
428 mkdir -p $(DESTDIR)$(ASTETCDIR)
429 mkdir -p $(DESTDIR)$(ASTBINDIR)
430 mkdir -p $(DESTDIR)$(ASTVARRUNDIR)
431 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail
432 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/dictate
433 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/system
434 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/tmp
435 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/meetme
436 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/monitor
437 $(INSTALL) -m 755 main/asterisk $(DESTDIR)$(ASTSBINDIR)/
438 $(LN) -sf asterisk $(DESTDIR)$(ASTSBINDIR)/rasterisk
439 $(INSTALL) -m 755 contrib/scripts/astgenkey $(DESTDIR)$(ASTSBINDIR)/
440 $(INSTALL) -m 755 contrib/scripts/autosupport $(DESTDIR)$(ASTSBINDIR)/
441 if [ ! -f $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ]; then \
442 cat contrib/scripts/safe_asterisk | sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ;\
443 chmod 755 $(DESTDIR)$(ASTSBINDIR)/safe_asterisk;\
445 $(INSTALL) -d $(DESTDIR)$(ASTHEADERDIR)
446 $(INSTALL) -m 644 include/asterisk.h $(DESTDIR)$(includedir)
447 $(INSTALL) -m 644 include/asterisk/*.h $(DESTDIR)$(ASTHEADERDIR)
448 if [ -n "$(OLDHEADERS)" ]; then \
449 rm -f $(addprefix $(DESTDIR)$(ASTHEADERDIR)/,$(OLDHEADERS)) ;\
451 mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-csv
452 mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-custom
453 mkdir -p $(DESTDIR)$(ASTDATADIR)/keys
454 mkdir -p $(DESTDIR)$(ASTDATADIR)/firmware
455 mkdir -p $(DESTDIR)$(ASTDATADIR)/firmware/iax
456 mkdir -p $(DESTDIR)$(ASTMANDIR)/man8
457 $(INSTALL) -m 644 keys/iaxtel.pub $(DESTDIR)$(ASTDATADIR)/keys
458 $(INSTALL) -m 644 keys/freeworlddialup.pub $(DESTDIR)$(ASTDATADIR)/keys
459 $(INSTALL) -m 644 doc/asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
460 $(INSTALL) -m 644 contrib/scripts/astgenkey.8 $(DESTDIR)$(ASTMANDIR)/man8
461 $(INSTALL) -m 644 contrib/scripts/autosupport.8 $(DESTDIR)$(ASTMANDIR)/man8
462 $(INSTALL) -m 644 contrib/scripts/safe_asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
463 if [ -f contrib/firmware/iax/iaxy.bin ] ; then \
464 $(INSTALL) -m 644 contrib/firmware/iax/iaxy.bin $(DESTDIR)$(ASTDATADIR)/firmware/iax/iaxy.bin; \
467 $(SUBDIRS_INSTALL):
468 @DESTDIR="$(DESTDIR)" ASTSBINDIR="$(ASTSBINDIR)" $(MAKE) -C $(@:-install=) install
470 NEWMODS=$(notdir $(wildcard */*.so))
471 OLDMODS=$(filter-out $(NEWMODS),$(notdir $(wildcard $(DESTDIR)$(MODULES_DIR)/*.so)))
473 oldmodcheck:
474 @if [ -n "$(OLDMODS)" ]; then \
475 echo " WARNING WARNING WARNING" ;\
476 echo "" ;\
477 echo " Your Asterisk modules directory, located at" ;\
478 echo " $(DESTDIR)$(MODULES_DIR)" ;\
479 echo " contains modules that were not installed by this " ;\
480 echo " version of Asterisk. Please ensure that these" ;\
481 echo " modules are compatible with this version before" ;\
482 echo " attempting to run Asterisk." ;\
483 echo "" ;\
484 for f in $(OLDMODS); do \
485 echo " $$f" ;\
486 done ;\
487 echo "" ;\
488 echo " WARNING WARNING WARNING" ;\
491 install: datafiles bininstall $(SUBDIRS_INSTALL)
492 @if [ -x /usr/sbin/asterisk-post-install ]; then \
493 /usr/sbin/asterisk-post-install $(DESTDIR) . ; \
495 @echo " +---- Asterisk Installation Complete -------+"
496 @echo " + +"
497 @echo " + YOU MUST READ THE SECURITY DOCUMENT +"
498 @echo " + +"
499 @echo " + Asterisk has successfully been installed. +"
500 @echo " + If you would like to install the sample +"
501 @echo " + configuration files (overwriting any +"
502 @echo " + existing config files), run: +"
503 @echo " + +"
504 ifeq ($(MAKE), gmake)
505 @echo " + $(MAKE) samples +"
506 else
507 @echo " + $(MAKE) samples +"
508 endif
509 @echo " + +"
510 @echo " +----------------- or ---------------------+"
511 @echo " + +"
512 @echo " + You can go ahead and install the asterisk +"
513 @echo " + program documentation now or later run: +"
514 @echo " + +"
515 ifeq ($(MAKE), gmake)
516 @echo " + $(MAKE) progdocs +"
517 else
518 @echo " + $(MAKE) progdocs +"
519 endif
520 @echo " + +"
521 @echo " + **Note** This requires that you have +"
522 @echo " + doxygen installed on your local system +"
523 @echo " +-------------------------------------------+"
524 @$(MAKE) -s oldmodcheck
526 upgrade: bininstall
528 adsi:
529 mkdir -p $(DESTDIR)$(ASTETCDIR)
530 for x in configs/*.adsi; do \
531 if [ ! -f $(DESTDIR)$(ASTETCDIR)/$$x ]; then \
532 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x` ; \
533 fi ; \
534 done
536 samples: adsi
537 mkdir -p $(DESTDIR)$(ASTETCDIR)
538 for x in configs/*.sample; do \
539 if [ -f $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` ]; then \
540 if [ "$(OVERWRITE)" = "y" ]; then \
541 if cmp -s $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` $$x ; then \
542 echo "Config file $$x is unchanged"; \
543 continue; \
544 fi ; \
545 mv -f $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample`.old ; \
546 else \
547 echo "Skipping config file $$x"; \
548 continue; \
549 fi ;\
550 fi ; \
551 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` ;\
552 done
553 if [ "$(OVERWRITE)" = "y" ] || [ ! -f $(DESTDIR)$(ASTCONFPATH) ]; then \
555 echo "[directories]" ; \
556 echo "astetcdir => $(ASTETCDIR)" ; \
557 echo "astmoddir => $(MODULES_DIR)" ; \
558 echo "astvarlibdir => $(ASTVARLIBDIR)" ; \
559 echo "astdatadir => $(ASTDATADIR)" ; \
560 echo "astagidir => $(AGI_DIR)" ; \
561 echo "astspooldir => $(ASTSPOOLDIR)" ; \
562 echo "astrundir => $(ASTVARRUNDIR)" ; \
563 echo "astlogdir => $(ASTLOGDIR)" ; \
564 echo "" ; \
565 echo ";[options]" ; \
566 echo ";verbose = 3" ; \
567 echo ";debug = 3" ; \
568 echo ";alwaysfork = yes ; same as -F at startup" ; \
569 echo ";nofork = yes ; same as -f at startup" ; \
570 echo ";quiet = yes ; same as -q at startup" ; \
571 echo ";timestamp = yes ; same as -T at startup" ; \
572 echo ";execincludes = yes ; support #exec in config files" ; \
573 echo ";console = yes ; Run as console (same as -c at startup)" ; \
574 echo ";highpriority = yes ; Run realtime priority (same as -p at startup)" ; \
575 echo ";initcrypto = yes ; Initialize crypto keys (same as -i at startup)" ; \
576 echo ";nocolor = yes ; Disable console colors" ; \
577 echo ";dontwarn = yes ; Disable some warnings" ; \
578 echo ";dumpcore = yes ; Dump core on crash (same as -g at startup)" ; \
579 echo ";languageprefix = yes ; Use the new sound prefix path syntax" ; \
580 echo ";internal_timing = yes" ; \
581 echo ";systemname = my_system_name ; prefix uniqueid with a system name for global uniqueness issues" ; \
582 echo ";maxcalls = 10 ; Maximum amount of calls allowed" ; \
583 echo ";maxload = 0.9 ; Asterisk stops accepting new calls if the load average exceed this limit" ; \
584 echo ";cache_record_files = yes ; Cache recorded sound files to another directory during recording" ; \
585 echo ";record_cache_dir = /tmp ; Specify cache directory (used in cnjunction with cache_record_files)" ; \
586 echo ";transmit_silence_during_record = yes ; Transmit SLINEAR silence while a channel is being recorded" ; \
587 echo ";transcode_via_sln = yes ; Build transcode paths via SLINEAR, instead of directly" ; \
588 echo ";runuser = asterisk ; The user to run as" ; \
589 echo ";rungroup = asterisk ; The group to run as" ; \
590 echo "" ; \
591 echo "; Changing the following lines may compromise your security." ; \
592 echo ";[files]" ; \
593 echo ";astctlpermissions = 0660" ; \
594 echo ";astctlowner = root" ; \
595 echo ";astctlgroup = apache" ; \
596 echo ";astctl = asterisk.ctl" ; \
597 ) > $(DESTDIR)$(ASTCONFPATH) ; \
598 else \
599 echo "Skipping asterisk.conf creation"; \
601 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/INBOX
602 build_tools/make_sample_voicemail $(DESTDIR)/$(ASTDATADIR) $(DESTDIR)/$(ASTSPOOLDIR)
604 webvmail:
605 @[ -d $(DESTDIR)$(HTTP_DOCSDIR)/ ] || ( printf "http docs directory not found.\nUpdate assignment of variable HTTP_DOCSDIR in Makefile!\n" && exit 1 )
606 @[ -d $(DESTDIR)$(HTTP_CGIDIR) ] || ( printf "cgi-bin directory not found.\nUpdate assignment of variable HTTP_CGIDIR in Makefile!\n" && exit 1 )
607 $(INSTALL) -m 4755 -o root -g root contrib/scripts/vmail.cgi $(DESTDIR)$(HTTP_CGIDIR)/vmail.cgi
608 mkdir -p $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk
609 for x in images/*.gif; do \
610 $(INSTALL) -m 644 $$x $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk/; \
611 done
612 @echo " +--------- Asterisk Web Voicemail ----------+"
613 @echo " + +"
614 @echo " + Asterisk Web Voicemail is installed in +"
615 @echo " + your cgi-bin directory: +"
616 @echo " + $(DESTDIR)$(HTTP_CGIDIR)"
617 @echo " + IT USES A SETUID ROOT PERL SCRIPT, SO +"
618 @echo " + IF YOU DON'T LIKE THAT, UNINSTALL IT! +"
619 @echo " + +"
620 @echo " + Other static items have been stored in: +"
621 @echo " + $(DESTDIR)$(HTTP_DOCSDIR)"
622 @echo " + +"
623 @echo " + If these paths do not match your httpd +"
624 @echo " + installation, correct the definitions +"
625 @echo " + in your Makefile of HTTP_CGIDIR and +"
626 @echo " + HTTP_DOCSDIR +"
627 @echo " + +"
628 @echo " +-------------------------------------------+"
630 spec:
631 sed "s/^Version:.*/Version: $(RPMVERSION)/g" redhat/asterisk.spec > asterisk.spec ; \
633 rpm: __rpm
635 __rpm: include/asterisk/version.h include/asterisk/buildopts.h spec
636 rm -rf /tmp/asterisk ; \
637 mkdir -p /tmp/asterisk/redhat/RPMS/i386 ; \
638 $(MAKE) DESTDIR=/tmp/asterisk install ; \
639 $(MAKE) DESTDIR=/tmp/asterisk samples ; \
640 mkdir -p /tmp/asterisk/etc/rc.d/init.d ; \
641 cp -f contrib/init.d/rc.redhat.asterisk /tmp/asterisk/etc/rc.d/init.d/asterisk ; \
642 rpmbuild --rcfile /usr/lib/rpm/rpmrc:redhat/rpmrc -bb asterisk.spec
644 progdocs:
645 (cat contrib/asterisk-ng-doxygen; echo "HAVE_DOT=$(HAVEDOT)"; \
646 echo "PROJECT_NUMBER=$(ASTERISKVERSION)") | doxygen -
648 config:
649 @if [ "${OSARCH}" = "linux-gnu" ]; then \
650 if [ -f /etc/redhat-release -o -f /etc/fedora-release ]; then \
651 $(INSTALL) -m 755 contrib/init.d/rc.redhat.asterisk $(DESTDIR)/etc/rc.d/init.d/asterisk; \
652 if [ -z "$(DESTDIR)" ]; then /sbin/chkconfig --add asterisk; fi; \
653 elif [ -f /etc/debian_version ]; then \
654 $(INSTALL) -m 755 contrib/init.d/rc.debian.asterisk $(DESTDIR)/etc/init.d/asterisk; \
655 if [ -z "$(DESTDIR)" ]; then /usr/sbin/update-rc.d asterisk start 50 2 3 4 5 . stop 91 2 3 4 5 .; fi; \
656 elif [ -f /etc/gentoo-release ]; then \
657 $(INSTALL) -m 755 contrib/init.d/rc.gentoo.asterisk $(DESTDIR)/etc/init.d/asterisk; \
658 if [ -z "$(DESTDIR)" ]; then /sbin/rc-update add asterisk default; fi; \
659 elif [ -f /etc/mandrake-release -o -f /etc/mandriva-release ]; then \
660 $(INSTALL) -m 755 contrib/init.d/rc.mandrake.asterisk $(DESTDIR)/etc/rc.d/init.d/asterisk; \
661 if [ -z "$(DESTDIR)" ]; then /sbin/chkconfig --add asterisk; fi; \
662 elif [ -f /etc/SuSE-release -o -f /etc/novell-release ]; then \
663 $(INSTALL) -m 755 contrib/init.d/rc.suse.asterisk $(DESTDIR)/etc/init.d/asterisk; \
664 if [ -z "$(DESTDIR)" ]; then /sbin/chkconfig --add asterisk; fi; \
665 elif [ -f /etc/slackware-version ]; then \
666 echo "Slackware is not currently supported, although an init script does exist for it." \
667 else \
668 echo "We could not install init scripts for your distribution."; \
669 fi \
670 else \
671 echo "We could not install init scripts for your operating system."; \
674 sounds:
675 $(MAKE) -C sounds all
677 # If the cleancount has been changed, force a make clean.
678 # .cleancount is the global clean count, and .lastclean is the
679 # last clean count we had
681 cleantest:
682 @cmp -s .cleancount .lastclean || $(MAKE) clean
684 $(SUBDIRS_UNINSTALL):
685 @$(MAKE) --no-print-directory -C $(@:-uninstall=) uninstall
687 _uninstall: $(SUBDIRS_UNINSTALL)
688 rm -f $(DESTDIR)$(MODULES_DIR)/*
689 rm -f $(DESTDIR)$(ASTSBINDIR)/*asterisk*
690 rm -f $(DESTDIR)$(ASTSBINDIR)/astgenkey
691 rm -f $(DESTDIR)$(ASTSBINDIR)/autosupport
692 rm -rf $(DESTDIR)$(ASTHEADERDIR)
693 rm -rf $(DESTDIR)$(ASTDATADIR)/firmware
694 rm -f $(DESTDIR)$(ASTMANDIR)/man8/asterisk.8
695 rm -f $(DESTDIR)$(ASTMANDIR)/man8/astgenkey.8
696 rm -f $(DESTDIR)$(ASTMANDIR)/man8/autosupport.8
697 rm -f $(DESTDIR)$(ASTMANDIR)/man8/safe_asterisk.8
698 $(MAKE) -C sounds uninstall
700 uninstall: _uninstall
701 @echo " +--------- Asterisk Uninstall Complete -----+"
702 @echo " + Asterisk binaries, sounds, man pages, +"
703 @echo " + headers, modules, and firmware builds, +"
704 @echo " + have all been uninstalled. +"
705 @echo " + +"
706 @echo " + To remove ALL traces of Asterisk, +"
707 @echo " + including configuration, spool +"
708 @echo " + directories, and logs, run the following +"
709 @echo " + command: +"
710 @echo " + +"
711 ifeq ($(MAKE), gmake)
712 @echo " + $(MAKE) uninstall-all +"
713 else
714 @echo " + $(MAKE) uninstall-all +"
715 endif
716 @echo " +-------------------------------------------+"
718 uninstall-all: _uninstall
719 rm -rf $(DESTDIR)$(ASTLIBDIR)
720 rm -rf $(DESTDIR)$(ASTVARLIBDIR)
721 rm -rf $(DESTDIR)$(ASTDATADIR)
722 rm -rf $(DESTDIR)$(ASTSPOOLDIR)
723 rm -rf $(DESTDIR)$(ASTETCDIR)
724 rm -rf $(DESTDIR)$(ASTLOGDIR)
726 menuconfig: menuselect
728 gmenuconfig: gmenuselect
730 menuselect: menuselect/menuselect menuselect-tree
731 -@menuselect/menuselect $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts && (echo "menuselect changes saved!"; rm -f channels/h323/Makefile.ast main/asterisk) || echo "menuselect changes NOT saved!"
733 gmenuselect: menuselect/gmenuselect menuselect-tree
734 -@menuselect/gmenuselect $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts && (echo "menuselect changes saved!"; rm -f channels/h323/Makefile.ast main/asterisk) || echo "menuselect changes NOT saved!"
736 menuselect/menuselect: makeopts menuselect/menuselect.c menuselect/menuselect_curses.c menuselect/menuselect_stub.c menuselect/menuselect.h menuselect/linkedlists.h makeopts
737 @CC="$(HOST_CC)" LD="" AR="" RANLIB="" CFLAGS="" $(MAKE) -C menuselect CONFIGURE_SILENT="--silent"
739 menuselect/gmenuselect: makeopts menuselect/menuselect.c menuselect/menuselect_gtk.c menuselect/menuselect_stub.c menuselect/menuselect.h menuselect/linkedlists.h makeopts
740 @CC="$(HOST_CC)" CXX="$(CXX)" LD="" AR="" RANLIB="" CFLAGS="" $(MAKE) -C menuselect _gmenuselect CONFIGURE_SILENT="--silent"
742 menuselect-tree: $(foreach dir,$(filter-out main,$(MOD_SUBDIRS)),$(wildcard $(dir)/*.c) $(wildcard $(dir)/*.cc)) build_tools/cflags.xml sounds/sounds.xml build_tools/embed_modules.xml configure
743 @echo "Generating input for menuselect ..."
744 @build_tools/prep_moduledeps > $@
746 .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) menuselect.makeopts