Creating tag for the release of asterisk-1.4.22-rc5
[asterisk-bristuff.git] / Makefile
blob545cfbcb2a052fd6b272d7432f64e0283b2ff466
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 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)
266 MOD_SUBDIRS_MENUSELECT_TREE:=$(MOD_SUBDIRS:%=%-menuselect-tree)
268 ifneq ($(findstring darwin,$(OSARCH)),)
269 ASTCFLAGS+=-D__Darwin__
270 AUDIO_LIBS=-framework CoreAudio
271 SOLINK=-dynamic -bundle -undefined suppress -force_flat_namespace
272 else
273 # These are used for all but Darwin
274 SOLINK=-shared -Xlinker -x
275 ifneq ($(findstring BSD,$(OSARCH)),)
276 LDFLAGS+=-L/usr/local/lib
277 endif
278 endif
280 ifeq ($(OSARCH),SunOS)
281 SOLINK=-shared -fpic -L/usr/local/ssl/lib -lrt
282 endif
284 SUBMAKE=$(MAKE) --quiet --no-print-directory
286 # This is used when generating the doxygen documentation
287 ifneq ($(DOT),:)
288 HAVEDOT=yes
289 else
290 HAVEDOT=no
291 endif
293 all: _all
294 @echo " +--------- Asterisk Build Complete ---------+"
295 @echo " + Asterisk has successfully been built, and +"
296 @echo " + can be installed by running: +"
297 @echo " + +"
298 ifeq ($(MAKE), gmake)
299 @echo " + $(MAKE) install +"
300 else
301 @echo " + $(MAKE) install +"
302 endif
303 @echo " +-------------------------------------------+"
305 _all: cleantest $(SUBDIRS)
307 makeopts: configure
308 @echo "****"
309 @echo "**** The configure script must be executed before running '$(MAKE)'."
310 @echo "**** Please run \"./configure\"."
311 @echo "****"
312 @exit 1
314 menuselect.makeopts: menuselect/menuselect menuselect-tree
315 menuselect/menuselect --check-deps menuselect.makeopts $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS)
317 $(MOD_SUBDIRS_EMBED_LDSCRIPT):
318 @echo "EMBED_LDSCRIPTS+="`$(SUBMAKE) -C $(@:-embed-ldscript=) SUBDIR=$(@:-embed-ldscript=) __embed_ldscript` >> makeopts.embed_rules
320 $(MOD_SUBDIRS_EMBED_LDFLAGS):
321 @echo "EMBED_LDFLAGS+="`$(SUBMAKE) -C $(@:-embed-ldflags=) SUBDIR=$(@:-embed-ldflags=) __embed_ldflags` >> makeopts.embed_rules
323 $(MOD_SUBDIRS_EMBED_LIBS):
324 @echo "EMBED_LIBS+="`$(SUBMAKE) -C $(@:-embed-libs=) SUBDIR=$(@:-embed-libs=) __embed_libs` >> makeopts.embed_rules
326 $(MOD_SUBDIRS_MENUSELECT_TREE):
327 @$(SUBMAKE) -C $(@:-menuselect-tree=) SUBDIR=$(@:-menuselect-tree=) moduleinfo
328 @$(SUBMAKE) -C $(@:-menuselect-tree=) SUBDIR=$(@:-menuselect-tree=) makeopts
330 makeopts.embed_rules: menuselect.makeopts
331 @echo "Generating embedded module rules ..."
332 @rm -f $@
333 @$(MAKE) --no-print-directory $(MOD_SUBDIRS_EMBED_LDSCRIPT)
334 @$(MAKE) --no-print-directory $(MOD_SUBDIRS_EMBED_LDFLAGS)
335 @$(MAKE) --no-print-directory $(MOD_SUBDIRS_EMBED_LIBS)
337 $(SUBDIRS): include/asterisk/version.h include/asterisk/buildopts.h defaults.h makeopts.embed_rules
339 # ensure that all module subdirectories are processed before 'main' during
340 # a parallel build, since if there are modules selected to be embedded the
341 # directories containing them must be completed before the main Asterisk
342 # binary can be built
343 main: $(filter-out main,$(MOD_SUBDIRS))
345 $(MOD_SUBDIRS):
346 @ASTCFLAGS="$(MOD_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS="$(ASTLDFLAGS)" AST_LIBS="$(AST_LIBS)" $(MAKE) --no-builtin-rules -C $@ SUBDIR=$@ all
348 $(OTHER_SUBDIRS):
349 @ASTCFLAGS="$(OTHER_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS="$(ASTLDFLAGS)" AUDIO_LIBS="$(AUDIO_LIBS)" $(MAKE) --no-builtin-rules -C $@ SUBDIR=$@ all
351 defaults.h: makeopts
352 @build_tools/make_defaults_h > $@.tmp
353 @if cmp -s $@.tmp $@ ; then : ; else \
354 mv $@.tmp $@ ; \
356 @rm -f $@.tmp
358 include/asterisk/version.h: FORCE
359 @build_tools/make_version_h > $@.tmp
360 @if cmp -s $@.tmp $@ ; then : ; else \
361 mv $@.tmp $@ ; \
363 @rm -f $@.tmp
365 include/asterisk/buildopts.h: menuselect.makeopts
366 @build_tools/make_buildopts_h > $@.tmp
367 @if cmp -s $@.tmp $@ ; then : ; else \
368 mv $@.tmp $@ ; \
370 @rm -f $@.tmp
372 $(SUBDIRS_CLEAN):
373 @$(MAKE) --no-print-directory -C $(@:-clean=) clean
375 $(SUBDIRS_DIST_CLEAN):
376 @$(MAKE) --no-print-directory -C $(@:-dist-clean=) dist-clean
378 clean: $(SUBDIRS_CLEAN)
379 rm -f defaults.h
380 rm -f include/asterisk/build.h
381 rm -f include/asterisk/version.h
382 @$(MAKE) -C menuselect clean
383 cp -f .cleancount .lastclean
385 dist-clean: distclean
387 distclean: $(SUBDIRS_DIST_CLEAN) clean
388 @$(MAKE) -C menuselect dist-clean
389 @$(MAKE) -C sounds dist-clean
390 rm -f menuselect.makeopts makeopts menuselect-tree menuselect.makedeps
391 rm -f makeopts.embed_rules
392 rm -f config.log config.status config.cache
393 rm -rf autom4te.cache
394 rm -f include/asterisk/autoconfig.h
395 rm -f include/asterisk/buildopts.h
396 rm -rf doc/api
397 rm -f build_tools/menuselect-deps
399 datafiles: _all
400 if [ x`$(ID) -un` = xroot ]; then CFLAGS="$(ASTCFLAGS)" sh build_tools/mkpkgconfig $(DESTDIR)/usr/lib/pkgconfig; fi
401 # Should static HTTP be installed during make samples or even with its own target ala
402 # webvoicemail? There are portions here that *could* be customized but might also be
403 # improved a lot. I'll put it here for now.
404 mkdir -p $(DESTDIR)$(ASTDATADIR)/static-http
405 for x in static-http/*; do \
406 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/static-http ; \
407 done
408 mkdir -p $(DESTDIR)$(ASTDATADIR)/images
409 for x in images/*.jpg; do \
410 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/images ; \
411 done
412 mkdir -p $(DESTDIR)$(AGI_DIR)
413 $(MAKE) -C sounds install
415 update:
416 @if [ -d .svn ]; then \
417 echo "Updating from Subversion..." ; \
418 svn update | tee update.out; \
419 rm -f .version; \
420 if [ `grep -c ^C update.out` -gt 0 ]; then \
421 echo ; echo "The following files have conflicts:" ; \
422 grep ^C update.out | cut -b4- ; \
423 fi ; \
424 rm -f update.out; \
425 else \
426 echo "Not under version control"; \
429 NEWHEADERS=$(notdir $(wildcard include/asterisk/*.h))
430 OLDHEADERS=$(filter-out $(NEWHEADERS),$(notdir $(wildcard $(DESTDIR)$(ASTHEADERDIR)/*.h)))
432 installdirs:
433 mkdir -p $(DESTDIR)$(MODULES_DIR)
434 mkdir -p $(DESTDIR)$(ASTSBINDIR)
435 mkdir -p $(DESTDIR)$(ASTETCDIR)
436 mkdir -p $(DESTDIR)$(ASTBINDIR)
437 mkdir -p $(DESTDIR)$(ASTVARRUNDIR)
438 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail
439 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/dictate
440 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/system
441 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/tmp
442 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/meetme
443 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/monitor
445 bininstall: _all installdirs $(SUBDIRS_INSTALL)
446 $(INSTALL) -m 755 main/asterisk $(DESTDIR)$(ASTSBINDIR)/
447 $(LN) -sf asterisk $(DESTDIR)$(ASTSBINDIR)/rasterisk
448 $(INSTALL) -m 755 contrib/scripts/astgenkey $(DESTDIR)$(ASTSBINDIR)/
449 $(INSTALL) -m 755 contrib/scripts/autosupport $(DESTDIR)$(ASTSBINDIR)/
450 if [ ! -f $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ]; then \
451 cat contrib/scripts/safe_asterisk | sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ;\
452 chmod 755 $(DESTDIR)$(ASTSBINDIR)/safe_asterisk;\
454 $(INSTALL) -d $(DESTDIR)$(ASTHEADERDIR)
455 $(INSTALL) -m 644 include/asterisk.h $(DESTDIR)$(includedir)
456 $(INSTALL) -m 644 include/asterisk/*.h $(DESTDIR)$(ASTHEADERDIR)
457 if [ -n "$(OLDHEADERS)" ]; then \
458 rm -f $(addprefix $(DESTDIR)$(ASTHEADERDIR)/,$(OLDHEADERS)) ;\
460 mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-csv
461 mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-custom
462 mkdir -p $(DESTDIR)$(ASTDATADIR)/keys
463 mkdir -p $(DESTDIR)$(ASTDATADIR)/firmware
464 mkdir -p $(DESTDIR)$(ASTDATADIR)/firmware/iax
465 mkdir -p $(DESTDIR)$(ASTMANDIR)/man8
466 $(INSTALL) -m 644 keys/iaxtel.pub $(DESTDIR)$(ASTDATADIR)/keys
467 $(INSTALL) -m 644 keys/freeworlddialup.pub $(DESTDIR)$(ASTDATADIR)/keys
468 $(INSTALL) -m 644 doc/asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
469 $(INSTALL) -m 644 contrib/scripts/astgenkey.8 $(DESTDIR)$(ASTMANDIR)/man8
470 $(INSTALL) -m 644 contrib/scripts/autosupport.8 $(DESTDIR)$(ASTMANDIR)/man8
471 $(INSTALL) -m 644 contrib/scripts/safe_asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
472 if [ -f contrib/firmware/iax/iaxy.bin ] ; then \
473 $(INSTALL) -m 644 contrib/firmware/iax/iaxy.bin $(DESTDIR)$(ASTDATADIR)/firmware/iax/iaxy.bin; \
476 $(SUBDIRS_INSTALL):
477 @DESTDIR="$(DESTDIR)" ASTSBINDIR="$(ASTSBINDIR)" $(MAKE) -C $(@:-install=) install
479 NEWMODS=$(notdir $(wildcard */*.so))
480 DEPMODS=chan_zap.so app_zapras.so app_zapscan.so app_zapbarge.so codec_zap.so
481 OLDMODS=$(filter-out $(NEWMODS) $(DEPMODS),$(notdir $(wildcard $(DESTDIR)$(MODULES_DIR)/*.so)))
483 oldmodcheck:
484 @for f in $(DEPMODS); do rm -f $(DESTDIR)$(MODULES_DIR)/$$f; done
485 @if [ -n "$(OLDMODS)" ]; then \
486 echo " WARNING WARNING WARNING" ;\
487 echo "" ;\
488 echo " Your Asterisk modules directory, located at" ;\
489 echo " $(DESTDIR)$(MODULES_DIR)" ;\
490 echo " contains modules that were not installed by this " ;\
491 echo " version of Asterisk. Please ensure that these" ;\
492 echo " modules are compatible with this version before" ;\
493 echo " attempting to run Asterisk." ;\
494 echo "" ;\
495 for f in $(OLDMODS); do \
496 echo " $$f" ;\
497 done ;\
498 echo "" ;\
499 echo " WARNING WARNING WARNING" ;\
502 badshell:
503 ifneq ($(findstring ~,$(DESTDIR)),)
504 @echo "Your shell doesn't do ~ expansion when expected (specifically, when doing \"make install DESTDIR=~/path\")."
505 @echo "Try replacing ~ with \$$HOME, as in \"make install DESTDIR=\$$HOME/path\"."
506 @exit 1
507 endif
509 install: badshell datafiles bininstall
510 @if [ -x /usr/sbin/asterisk-post-install ]; then \
511 /usr/sbin/asterisk-post-install $(DESTDIR) . ; \
513 @echo " +---- Asterisk Installation Complete -------+"
514 @echo " + +"
515 @echo " + YOU MUST READ THE SECURITY DOCUMENT +"
516 @echo " + +"
517 @echo " + Asterisk has successfully been installed. +"
518 @echo " + If you would like to install the sample +"
519 @echo " + configuration files (overwriting any +"
520 @echo " + existing config files), run: +"
521 @echo " + +"
522 ifeq ($(MAKE), gmake)
523 @echo " + $(MAKE) samples +"
524 else
525 @echo " + $(MAKE) samples +"
526 endif
527 @echo " + +"
528 @echo " +----------------- or ---------------------+"
529 @echo " + +"
530 @echo " + You can go ahead and install the asterisk +"
531 @echo " + program documentation now or later run: +"
532 @echo " + +"
533 ifeq ($(MAKE), gmake)
534 @echo " + $(MAKE) progdocs +"
535 else
536 @echo " + $(MAKE) progdocs +"
537 endif
538 @echo " + +"
539 @echo " + **Note** This requires that you have +"
540 @echo " + doxygen installed on your local system +"
541 @echo " +-------------------------------------------+"
542 @$(MAKE) -s oldmodcheck
544 upgrade: bininstall
546 adsi:
547 mkdir -p $(DESTDIR)$(ASTETCDIR)
548 for x in configs/*.adsi; do \
549 if [ ! -f $(DESTDIR)$(ASTETCDIR)/$$x ]; then \
550 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x` ; \
551 fi ; \
552 done
554 samples: adsi
555 mkdir -p $(DESTDIR)$(ASTETCDIR)
556 for x in configs/*.sample; do \
557 if [ -f $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` ]; then \
558 if [ "$(OVERWRITE)" = "y" ]; then \
559 if cmp -s $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` $$x ; then \
560 echo "Config file $$x is unchanged"; \
561 continue; \
562 fi ; \
563 mv -f $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample`.old ; \
564 else \
565 echo "Skipping config file $$x"; \
566 continue; \
567 fi ;\
568 fi ; \
569 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` ;\
570 done
571 if [ "$(OVERWRITE)" = "y" ] || [ ! -f $(DESTDIR)$(ASTCONFPATH) ]; then \
573 echo "[directories]" ; \
574 echo "astetcdir => $(ASTETCDIR)" ; \
575 echo "astmoddir => $(MODULES_DIR)" ; \
576 echo "astvarlibdir => $(ASTVARLIBDIR)" ; \
577 echo "astdatadir => $(ASTDATADIR)" ; \
578 echo "astagidir => $(AGI_DIR)" ; \
579 echo "astspooldir => $(ASTSPOOLDIR)" ; \
580 echo "astrundir => $(ASTVARRUNDIR)" ; \
581 echo "astlogdir => $(ASTLOGDIR)" ; \
582 echo "" ; \
583 echo "[options]" ; \
584 echo "languageprefix = yes ; Use the new sound prefix path syntax" ; \
585 echo ";verbose = 3" ; \
586 echo ";debug = 3" ; \
587 echo ";alwaysfork = yes ; same as -F at startup" ; \
588 echo ";nofork = yes ; same as -f at startup" ; \
589 echo ";quiet = yes ; same as -q at startup" ; \
590 echo ";timestamp = yes ; same as -T at startup" ; \
591 echo ";execincludes = yes ; support #exec in config files" ; \
592 echo ";console = yes ; Run as console (same as -c at startup)" ; \
593 echo ";highpriority = yes ; Run realtime priority (same as -p at startup)" ; \
594 echo ";initcrypto = yes ; Initialize crypto keys (same as -i at startup)" ; \
595 echo ";nocolor = yes ; Disable console colors" ; \
596 echo ";dontwarn = yes ; Disable some warnings" ; \
597 echo ";dumpcore = yes ; Dump core on crash (same as -g at startup)" ; \
598 echo ";internal_timing = yes" ; \
599 echo ";systemname = my_system_name ; prefix uniqueid with a system name for global uniqueness issues" ; \
600 echo ";maxcalls = 10 ; Maximum amount of calls allowed" ; \
601 echo ";maxload = 0.9 ; Asterisk stops accepting new calls if the load average exceed this limit" ; \
602 echo ";cache_record_files = yes ; Cache recorded sound files to another directory during recording" ; \
603 echo ";record_cache_dir = /tmp ; Specify cache directory (used in cnjunction with cache_record_files)" ; \
604 echo ";transmit_silence_during_record = yes ; Transmit SLINEAR silence while a channel is being recorded" ; \
605 echo ";transmit_silence = yes ; Transmit SLINEAR silence while a channel is being recorded or DTMF is being generated" ; \
606 echo ";transcode_via_sln = yes ; Build transcode paths via SLINEAR, instead of directly" ; \
607 echo ";runuser = asterisk ; The user to run as" ; \
608 echo ";rungroup = asterisk ; The group to run as" ; \
609 echo ";dahdichanname = yes ; Channels created by chan_dahdi will be called 'DAHDI', otherwise 'Zap'" ; \
610 echo "" ; \
611 echo "; Changing the following lines may compromise your security." ; \
612 echo ";[files]" ; \
613 echo ";astctlpermissions = 0660" ; \
614 echo ";astctlowner = root" ; \
615 echo ";astctlgroup = apache" ; \
616 echo ";astctl = asterisk.ctl" ; \
617 ) > $(DESTDIR)$(ASTCONFPATH) ; \
618 else \
619 echo "Skipping asterisk.conf creation"; \
621 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/INBOX
622 build_tools/make_sample_voicemail $(DESTDIR)/$(ASTDATADIR) $(DESTDIR)/$(ASTSPOOLDIR)
624 webvmail:
625 @[ -d $(DESTDIR)$(HTTP_DOCSDIR)/ ] || ( printf "http docs directory not found.\nUpdate assignment of variable HTTP_DOCSDIR in Makefile!\n" && exit 1 )
626 @[ -d $(DESTDIR)$(HTTP_CGIDIR) ] || ( printf "cgi-bin directory not found.\nUpdate assignment of variable HTTP_CGIDIR in Makefile!\n" && exit 1 )
627 $(INSTALL) -m 4755 -o root -g root contrib/scripts/vmail.cgi $(DESTDIR)$(HTTP_CGIDIR)/vmail.cgi
628 mkdir -p $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk
629 for x in images/*.gif; do \
630 $(INSTALL) -m 644 $$x $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk/; \
631 done
632 @echo " +--------- Asterisk Web Voicemail ----------+"
633 @echo " + +"
634 @echo " + Asterisk Web Voicemail is installed in +"
635 @echo " + your cgi-bin directory: +"
636 @echo " + $(DESTDIR)$(HTTP_CGIDIR)"
637 @echo " + IT USES A SETUID ROOT PERL SCRIPT, SO +"
638 @echo " + IF YOU DON'T LIKE THAT, UNINSTALL IT! +"
639 @echo " + +"
640 @echo " + Other static items have been stored in: +"
641 @echo " + $(DESTDIR)$(HTTP_DOCSDIR)"
642 @echo " + +"
643 @echo " + If these paths do not match your httpd +"
644 @echo " + installation, correct the definitions +"
645 @echo " + in your Makefile of HTTP_CGIDIR and +"
646 @echo " + HTTP_DOCSDIR +"
647 @echo " + +"
648 @echo " +-------------------------------------------+"
650 progdocs:
651 (cat contrib/asterisk-ng-doxygen; echo "HAVE_DOT=$(HAVEDOT)"; \
652 echo "PROJECT_NUMBER=$(ASTERISKVERSION)") | doxygen -
654 config:
655 @if [ "${OSARCH}" = "linux-gnu" ]; then \
656 if [ -f /etc/redhat-release -o -f /etc/fedora-release ]; then \
657 $(INSTALL) -m 755 contrib/init.d/rc.redhat.asterisk $(DESTDIR)/etc/rc.d/init.d/asterisk; \
658 if [ -z "$(DESTDIR)" ]; then /sbin/chkconfig --add asterisk; fi; \
659 elif [ -f /etc/debian_version ]; then \
660 $(INSTALL) -m 755 contrib/init.d/rc.debian.asterisk $(DESTDIR)/etc/init.d/asterisk; \
661 if [ -z "$(DESTDIR)" ]; then /usr/sbin/update-rc.d asterisk start 50 2 3 4 5 . stop 91 2 3 4 5 .; fi; \
662 elif [ -f /etc/gentoo-release ]; then \
663 $(INSTALL) -m 755 contrib/init.d/rc.gentoo.asterisk $(DESTDIR)/etc/init.d/asterisk; \
664 if [ -z "$(DESTDIR)" ]; then /sbin/rc-update add asterisk default; fi; \
665 elif [ -f /etc/mandrake-release -o -f /etc/mandriva-release ]; then \
666 $(INSTALL) -m 755 contrib/init.d/rc.mandrake.asterisk $(DESTDIR)/etc/rc.d/init.d/asterisk; \
667 if [ -z "$(DESTDIR)" ]; then /sbin/chkconfig --add asterisk; fi; \
668 elif [ -f /etc/SuSE-release -o -f /etc/novell-release ]; then \
669 $(INSTALL) -m 755 contrib/init.d/rc.suse.asterisk $(DESTDIR)/etc/init.d/asterisk; \
670 if [ -z "$(DESTDIR)" ]; then /sbin/chkconfig --add asterisk; fi; \
671 elif [ -f /etc/slackware-version ]; then \
672 echo "Slackware is not currently supported, although an init script does exist for it." \
673 else \
674 echo "We could not install init scripts for your distribution."; \
675 fi \
676 else \
677 echo "We could not install init scripts for your operating system."; \
680 sounds:
681 $(MAKE) -C sounds all
683 # If the cleancount has been changed, force a make clean.
684 # .cleancount is the global clean count, and .lastclean is the
685 # last clean count we had
687 cleantest:
688 @cmp -s .cleancount .lastclean || $(MAKE) clean
690 $(SUBDIRS_UNINSTALL):
691 @$(MAKE) --no-print-directory -C $(@:-uninstall=) uninstall
693 _uninstall: $(SUBDIRS_UNINSTALL)
694 rm -f $(DESTDIR)$(MODULES_DIR)/*
695 rm -f $(DESTDIR)$(ASTSBINDIR)/*asterisk*
696 rm -f $(DESTDIR)$(ASTSBINDIR)/astgenkey
697 rm -f $(DESTDIR)$(ASTSBINDIR)/autosupport
698 rm -rf $(DESTDIR)$(ASTHEADERDIR)
699 rm -rf $(DESTDIR)$(ASTDATADIR)/firmware
700 rm -f $(DESTDIR)$(ASTMANDIR)/man8/asterisk.8
701 rm -f $(DESTDIR)$(ASTMANDIR)/man8/astgenkey.8
702 rm -f $(DESTDIR)$(ASTMANDIR)/man8/autosupport.8
703 rm -f $(DESTDIR)$(ASTMANDIR)/man8/safe_asterisk.8
704 $(MAKE) -C sounds uninstall
706 uninstall: _uninstall
707 @echo " +--------- Asterisk Uninstall Complete -----+"
708 @echo " + Asterisk binaries, sounds, man pages, +"
709 @echo " + headers, modules, and firmware builds, +"
710 @echo " + have all been uninstalled. +"
711 @echo " + +"
712 @echo " + To remove ALL traces of Asterisk, +"
713 @echo " + including configuration, spool +"
714 @echo " + directories, and logs, run the following +"
715 @echo " + command: +"
716 @echo " + +"
717 ifeq ($(MAKE), gmake)
718 @echo " + $(MAKE) uninstall-all +"
719 else
720 @echo " + $(MAKE) uninstall-all +"
721 endif
722 @echo " +-------------------------------------------+"
724 uninstall-all: _uninstall
725 rm -rf $(DESTDIR)$(ASTLIBDIR)
726 rm -rf $(DESTDIR)$(ASTVARLIBDIR)
727 rm -rf $(DESTDIR)$(ASTDATADIR)
728 rm -rf $(DESTDIR)$(ASTSPOOLDIR)
729 rm -rf $(DESTDIR)$(ASTETCDIR)
730 rm -rf $(DESTDIR)$(ASTLOGDIR)
732 menuconfig: menuselect
734 gmenuconfig: gmenuselect
736 menuselect: menuselect/menuselect menuselect-tree
737 -@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!"
739 gmenuselect: menuselect/gmenuselect menuselect-tree
740 -@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!"
742 menuselect/menuselect: makeopts menuselect/menuselect.c menuselect/menuselect_curses.c menuselect/menuselect_stub.c menuselect/menuselect.h menuselect/linkedlists.h makeopts
743 @CC="$(HOST_CC)" LD="" AR="" RANLIB="" CFLAGS="" $(MAKE) -C menuselect CONFIGURE_SILENT="--silent"
745 menuselect/gmenuselect: makeopts menuselect/menuselect.c menuselect/menuselect_gtk.c menuselect/menuselect_stub.c menuselect/menuselect.h menuselect/linkedlists.h makeopts
746 @CC="$(HOST_CC)" CXX="$(CXX)" LD="" AR="" RANLIB="" CFLAGS="" $(MAKE) -C menuselect _gmenuselect CONFIGURE_SILENT="--silent"
748 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
749 @echo "Generating input for menuselect ..."
750 @echo "<?xml version=\"1.0\"?>" > $@
751 @echo >> $@
752 @echo "<menu name=\"Asterisk Module and Build Option Selection\">" >> $@
753 @for dir in $(sort $(filter-out main,$(MOD_SUBDIRS))); do $(SUBMAKE) -C $${dir} SUBDIR=$${dir} moduleinfo >> $@; done
754 @for dir in $(sort $(filter-out main,$(MOD_SUBDIRS))); do $(SUBMAKE) -C $${dir} SUBDIR=$${dir} makeopts >> $@; done
755 @cat build_tools/cflags.xml >> $@
756 @if [ "${AST_DEVMODE}" = "yes" ]; then \
757 cat build_tools/cflags-devmode.xml >> $@; \
759 @cat build_tools/embed_modules.xml >> $@
760 @cat sounds/sounds.xml >> $@
761 @echo "</menu>" >> $@
763 .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
765 FORCE: