avoid the weird usage of assert() in the ALSA header files that gcc 4.2 wants to...
[asterisk-bristuff.git] / Makefile
blob2c08688e4b9cb79870940eb595ef6531d8ed8da1
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 ASTCFLAGS+=-pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG)
199 ASTCFLAGS+=-include $(ASTTOPDIR)/include/asterisk/autoconfig.h
201 ifeq ($(AST_DEVMODE),yes)
202 ASTCFLAGS+=-Werror -Wunused $(AST_DECLARATION_AFTER_STATEMENT)
203 endif
205 ifneq ($(findstring BSD,$(OSARCH)),)
206 ASTCFLAGS+=-I/usr/local/include
207 ASTLDFLAGS+=-L/usr/local/lib
208 endif
210 ifneq ($(PROC),ultrasparc)
211 ASTCFLAGS+=$(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
212 endif
214 ifeq ($(PROC),ppc)
215 ASTCFLAGS+=-fsigned-char
216 endif
218 ifeq ($(OSARCH),FreeBSD)
219 # -V is understood by BSD Make, not by GNU make.
220 BSDVERSION=$(shell make -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk)
221 ASTCFLAGS+=$(shell if test $(BSDVERSION) -lt 500016 ; then echo "-D_THREAD_SAFE"; fi)
222 AST_LIBS+=$(shell if test $(BSDVERSION) -lt 502102 ; then echo "-lc_r"; else echo "-pthread"; fi)
223 endif
225 ifeq ($(OSARCH),NetBSD)
226 ASTCFLAGS+=-pthread -I/usr/pkg/include
227 endif
229 ifeq ($(OSARCH),OpenBSD)
230 ASTCFLAGS+=-pthread
231 endif
233 ifeq ($(OSARCH),SunOS)
234 ASTCFLAGS+=-Wcast-align -DSOLARIS -I../include/solaris-compat -I/opt/ssl/include -I/usr/local/ssl/include
235 endif
237 ASTERISKVERSION:=$(shell build_tools/make_version .)
239 ifneq ($(wildcard .version),)
240 ASTERISKVERSIONNUM:=$(shell awk -F. '{printf "%01d%02d%02d", $$1, $$2, $$3}' .version)
241 RPMVERSION:=$(shell sed 's/[-\/:]/_/g' .version)
242 else
243 RPMVERSION=unknown
244 endif
246 ifneq ($(wildcard .svn),)
247 ASTERISKVERSIONNUM=999999
248 endif
250 ASTCFLAGS+=$(MALLOC_DEBUG)$(BUSYDETECT)$(OPTIONS)
252 MOD_SUBDIRS:=res channels pbx apps codecs formats cdr funcs main
253 OTHER_SUBDIRS:=utils agi
254 SUBDIRS:=$(OTHER_SUBDIRS) $(MOD_SUBDIRS)
255 SUBDIRS_INSTALL:=$(SUBDIRS:%=%-install)
256 SUBDIRS_CLEAN:=$(SUBDIRS:%=%-clean)
257 SUBDIRS_UNINSTALL:=$(SUBDIRS:%=%-uninstall)
258 MOD_SUBDIRS_EMBED_LDSCRIPT:=$(MOD_SUBDIRS:%=%-embed-ldscript)
259 MOD_SUBDIRS_EMBED_LDFLAGS:=$(MOD_SUBDIRS:%=%-embed-ldflags)
260 MOD_SUBDIRS_EMBED_LIBS:=$(MOD_SUBDIRS:%=%-embed-libs)
262 ifneq ($(findstring darwin,$(OSARCH)),)
263 ASTCFLAGS+=-D__Darwin__
264 AUDIO_LIBS=-framework CoreAudio
265 SOLINK=-dynamic -bundle -undefined suppress -force_flat_namespace
266 else
267 # These are used for all but Darwin
268 SOLINK=-shared -Xlinker -x
269 ifneq ($(findstring BSD,$(OSARCH)),)
270 LDFLAGS+=-L/usr/local/lib
271 endif
272 endif
274 ifeq ($(OSARCH),SunOS)
275 SOLINK=-shared -fpic -L/usr/local/ssl/lib
276 endif
278 # This is used when generating the doxygen documentation
279 ifneq ($(DOT),:)
280 HAVEDOT=yes
281 else
282 HAVEDOT=no
283 endif
285 all: _all
286 @echo " +--------- Asterisk Build Complete ---------+"
287 @echo " + Asterisk has successfully been built, and +"
288 @echo " + can be installed by running: +"
289 @echo " + +"
290 ifeq ($(MAKE), gmake)
291 @echo " + $(MAKE) install +"
292 else
293 @echo " + $(MAKE) install +"
294 endif
295 @echo " +-------------------------------------------+"
297 _all: cleantest $(SUBDIRS)
299 makeopts: configure
300 @echo "****"
301 @echo "**** The configure script must be executed before running '$(MAKE)'."
302 @echo "**** Please run \"./configure\"."
303 @echo "****"
304 @exit 1
306 menuselect.makeopts: menuselect/menuselect menuselect-tree
307 menuselect/menuselect --check-deps $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts
309 $(MOD_SUBDIRS_EMBED_LDSCRIPT):
310 @echo "EMBED_LDSCRIPTS+="`$(MAKE) --quiet --no-print-directory -C $(@:-embed-ldscript=) SUBDIR=$(@:-embed-ldscript=) __embed_ldscript` >> makeopts.embed_rules
312 $(MOD_SUBDIRS_EMBED_LDFLAGS):
313 @echo "EMBED_LDFLAGS+="`$(MAKE) --quiet --no-print-directory -C $(@:-embed-ldflags=) SUBDIR=$(@:-embed-ldflags=) __embed_ldflags` >> makeopts.embed_rules
315 $(MOD_SUBDIRS_EMBED_LIBS):
316 @echo "EMBED_LIBS+="`$(MAKE) --quiet --no-print-directory -C $(@:-embed-libs=) SUBDIR=$(@:-embed-libs=) __embed_libs` >> makeopts.embed_rules
318 makeopts.embed_rules: menuselect.makeopts
319 @echo "Generating embedded module rules ..."
320 @rm -f $@
321 @$(MAKE) --no-print-directory $(MOD_SUBDIRS_EMBED_LDSCRIPT)
322 @$(MAKE) --no-print-directory $(MOD_SUBDIRS_EMBED_LDFLAGS)
323 @$(MAKE) --no-print-directory $(MOD_SUBDIRS_EMBED_LIBS)
325 $(SUBDIRS): include/asterisk/version.h include/asterisk/buildopts.h defaults.h makeopts.embed_rules
327 # ensure that all module subdirectories are processed before 'main' during
328 # a parallel build, since if there are modules selected to be embedded the
329 # directories containing them must be completed before the main Asterisk
330 # binary can be built
331 main: $(filter-out main,$(MOD_SUBDIRS))
333 $(MOD_SUBDIRS):
334 @ASTCFLAGS="$(MOD_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS="$(ASTLDFLAGS)" AST_LIBS="$(AST_LIBS)" $(MAKE) --no-print-directory --no-builtin-rules -C $@ SUBDIR=$@ all
336 $(OTHER_SUBDIRS):
337 @ASTCFLAGS="$(OTHER_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS="$(ASTLDFLAGS)" AUDIO_LIBS="$(AUDIO_LIBS)" $(MAKE) --no-print-directory --no-builtin-rules -C $@ SUBDIR=$@ all
339 defaults.h: makeopts
340 @build_tools/make_defaults_h > $@.tmp
341 @if cmp -s $@.tmp $@ ; then : ; else \
342 mv $@.tmp $@ ; \
344 @rm -f $@.tmp
346 include/asterisk/version.h:
347 @build_tools/make_version_h > $@.tmp
348 @if cmp -s $@.tmp $@ ; then : ; else \
349 mv $@.tmp $@ ; \
351 @rm -f $@.tmp
353 include/asterisk/buildopts.h: menuselect.makeopts
354 @build_tools/make_buildopts_h > $@.tmp
355 @if cmp -s $@.tmp $@ ; then : ; else \
356 mv $@.tmp $@ ; \
358 @rm -f $@.tmp
360 $(SUBDIRS_CLEAN):
361 @$(MAKE) --no-print-directory -C $(@:-clean=) clean
363 clean: $(SUBDIRS_CLEAN)
364 rm -f defaults.h
365 rm -f include/asterisk/build.h
366 rm -f include/asterisk/version.h
367 @$(MAKE) -C menuselect clean
368 cp -f .cleancount .lastclean
370 dist-clean: distclean
372 distclean: clean
373 @$(MAKE) -C menuselect dist-clean
374 @$(MAKE) -C sounds dist-clean
375 rm -f menuselect.makeopts makeopts menuselect-tree menuselect.makedeps
376 rm -f makeopts.embed_rules
377 rm -f config.log config.status
378 rm -rf autom4te.cache
379 rm -f include/asterisk/autoconfig.h
380 rm -f include/asterisk/buildopts.h
381 rm -rf doc/api
382 rm -f build_tools/menuselect-deps
384 datafiles: _all
385 if [ x`$(ID) -un` = xroot ]; then CFLAGS="$(ASTCFLAGS)" sh build_tools/mkpkgconfig $(DESTDIR)/usr/lib/pkgconfig; fi
386 # Should static HTTP be installed during make samples or even with its own target ala
387 # webvoicemail? There are portions here that *could* be customized but might also be
388 # improved a lot. I'll put it here for now.
389 mkdir -p $(DESTDIR)$(ASTDATADIR)/static-http
390 for x in static-http/*; do \
391 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/static-http ; \
392 done
393 mkdir -p $(DESTDIR)$(ASTDATADIR)/images
394 for x in images/*.jpg; do \
395 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/images ; \
396 done
397 mkdir -p $(DESTDIR)$(AGI_DIR)
398 $(MAKE) -C sounds install
400 update:
401 @if [ -d .svn ]; then \
402 echo "Updating from Subversion..." ; \
403 svn update | tee update.out; \
404 rm -f .version; \
405 if [ `grep -c ^C update.out` -gt 0 ]; then \
406 echo ; echo "The following files have conflicts:" ; \
407 grep ^C update.out | cut -b4- ; \
408 fi ; \
409 rm -f update.out; \
410 else \
411 echo "Not under version control"; \
414 NEWHEADERS=$(notdir $(wildcard include/asterisk/*.h))
415 OLDHEADERS=$(filter-out $(NEWHEADERS),$(notdir $(wildcard $(DESTDIR)$(ASTHEADERDIR)/*.h)))
417 bininstall: _all
418 mkdir -p $(DESTDIR)$(MODULES_DIR)
419 mkdir -p $(DESTDIR)$(ASTSBINDIR)
420 mkdir -p $(DESTDIR)$(ASTETCDIR)
421 mkdir -p $(DESTDIR)$(ASTBINDIR)
422 mkdir -p $(DESTDIR)$(ASTVARRUNDIR)
423 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail
424 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/dictate
425 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/system
426 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/tmp
427 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/meetme
428 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/monitor
429 $(INSTALL) -m 755 main/asterisk $(DESTDIR)$(ASTSBINDIR)/
430 $(LN) -sf asterisk $(DESTDIR)$(ASTSBINDIR)/rasterisk
431 $(INSTALL) -m 755 contrib/scripts/astgenkey $(DESTDIR)$(ASTSBINDIR)/
432 $(INSTALL) -m 755 contrib/scripts/autosupport $(DESTDIR)$(ASTSBINDIR)/
433 if [ ! -f $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ]; then \
434 cat contrib/scripts/safe_asterisk | sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ;\
435 chmod 755 $(DESTDIR)$(ASTSBINDIR)/safe_asterisk;\
437 $(INSTALL) -d $(DESTDIR)$(ASTHEADERDIR)
438 $(INSTALL) -m 644 include/asterisk.h $(DESTDIR)$(includedir)
439 $(INSTALL) -m 644 include/asterisk/*.h $(DESTDIR)$(ASTHEADERDIR)
440 if [ -n "$(OLDHEADERS)" ]; then \
441 rm -f $(addprefix $(DESTDIR)$(ASTHEADERDIR)/,$(OLDHEADERS)) ;\
443 mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-csv
444 mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-custom
445 mkdir -p $(DESTDIR)$(ASTDATADIR)/keys
446 mkdir -p $(DESTDIR)$(ASTDATADIR)/firmware
447 mkdir -p $(DESTDIR)$(ASTDATADIR)/firmware/iax
448 mkdir -p $(DESTDIR)$(ASTMANDIR)/man8
449 $(INSTALL) -m 644 keys/iaxtel.pub $(DESTDIR)$(ASTDATADIR)/keys
450 $(INSTALL) -m 644 keys/freeworlddialup.pub $(DESTDIR)$(ASTDATADIR)/keys
451 $(INSTALL) -m 644 doc/asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
452 $(INSTALL) -m 644 contrib/scripts/astgenkey.8 $(DESTDIR)$(ASTMANDIR)/man8
453 $(INSTALL) -m 644 contrib/scripts/autosupport.8 $(DESTDIR)$(ASTMANDIR)/man8
454 $(INSTALL) -m 644 contrib/scripts/safe_asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
455 if [ -f contrib/firmware/iax/iaxy.bin ] ; then \
456 $(INSTALL) -m 644 contrib/firmware/iax/iaxy.bin $(DESTDIR)$(ASTDATADIR)/firmware/iax/iaxy.bin; \
459 $(SUBDIRS_INSTALL):
460 @DESTDIR="$(DESTDIR)" ASTSBINDIR="$(ASTSBINDIR)" $(MAKE) -C $(@:-install=) install
462 NEWMODS=$(notdir $(wildcard */*.so))
463 OLDMODS=$(filter-out $(NEWMODS),$(notdir $(wildcard $(DESTDIR)$(MODULES_DIR)/*.so)))
465 oldmodcheck:
466 @if [ -n "$(OLDMODS)" ]; then \
467 echo " WARNING WARNING WARNING" ;\
468 echo "" ;\
469 echo " Your Asterisk modules directory, located at" ;\
470 echo " $(DESTDIR)$(MODULES_DIR)" ;\
471 echo " contains modules that were not installed by this " ;\
472 echo " version of Asterisk. Please ensure that these" ;\
473 echo " modules are compatible with this version before" ;\
474 echo " attempting to run Asterisk." ;\
475 echo "" ;\
476 for f in $(OLDMODS); do \
477 echo " $$f" ;\
478 done ;\
479 echo "" ;\
480 echo " WARNING WARNING WARNING" ;\
483 install: datafiles bininstall $(SUBDIRS_INSTALL)
484 @if [ -x /usr/sbin/asterisk-post-install ]; then \
485 /usr/sbin/asterisk-post-install $(DESTDIR) . ; \
487 @echo " +---- Asterisk Installation Complete -------+"
488 @echo " + +"
489 @echo " + YOU MUST READ THE SECURITY DOCUMENT +"
490 @echo " + +"
491 @echo " + Asterisk has successfully been installed. +"
492 @echo " + If you would like to install the sample +"
493 @echo " + configuration files (overwriting any +"
494 @echo " + existing config files), run: +"
495 @echo " + +"
496 ifeq ($(MAKE), gmake)
497 @echo " + $(MAKE) samples +"
498 else
499 @echo " + $(MAKE) samples +"
500 endif
501 @echo " + +"
502 @echo " +----------------- or ---------------------+"
503 @echo " + +"
504 @echo " + You can go ahead and install the asterisk +"
505 @echo " + program documentation now or later run: +"
506 @echo " + +"
507 ifeq ($(MAKE), gmake)
508 @echo " + $(MAKE) progdocs +"
509 else
510 @echo " + $(MAKE) progdocs +"
511 endif
512 @echo " + +"
513 @echo " + **Note** This requires that you have +"
514 @echo " + doxygen installed on your local system +"
515 @echo " +-------------------------------------------+"
516 @$(MAKE) -s oldmodcheck
518 upgrade: bininstall
520 adsi:
521 mkdir -p $(DESTDIR)$(ASTETCDIR)
522 for x in configs/*.adsi; do \
523 if [ ! -f $(DESTDIR)$(ASTETCDIR)/$$x ]; then \
524 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x` ; \
525 fi ; \
526 done
528 samples: adsi
529 mkdir -p $(DESTDIR)$(ASTETCDIR)
530 for x in configs/*.sample; do \
531 if [ -f $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` ]; then \
532 if [ "$(OVERWRITE)" = "y" ]; then \
533 if cmp -s $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` $$x ; then \
534 echo "Config file $$x is unchanged"; \
535 continue; \
536 fi ; \
537 mv -f $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample`.old ; \
538 else \
539 echo "Skipping config file $$x"; \
540 continue; \
541 fi ;\
542 fi ; \
543 $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` ;\
544 done
545 if [ "$(OVERWRITE)" = "y" ] || [ ! -f $(DESTDIR)$(ASTCONFPATH) ]; then \
547 echo "[directories]" ; \
548 echo "astetcdir => $(ASTETCDIR)" ; \
549 echo "astmoddir => $(MODULES_DIR)" ; \
550 echo "astvarlibdir => $(ASTVARLIBDIR)" ; \
551 echo "astdatadir => $(ASTDATADIR)" ; \
552 echo "astagidir => $(AGI_DIR)" ; \
553 echo "astspooldir => $(ASTSPOOLDIR)" ; \
554 echo "astrundir => $(ASTVARRUNDIR)" ; \
555 echo "astlogdir => $(ASTLOGDIR)" ; \
556 echo "" ; \
557 echo ";[options]" ; \
558 echo ";internal_timing = yes" ; \
559 echo ";systemname = my_system_name ; prefix uniqueid with a system name for global uniqueness issues" ; \
560 echo "; Changing the following lines may compromise your security." ; \
561 echo ";[files]" ; \
562 echo ";astctlpermissions = 0660" ; \
563 echo ";astctlowner = root" ; \
564 echo ";astctlgroup = apache" ; \
565 echo ";astctl = asterisk.ctl" ; \
566 ) > $(DESTDIR)$(ASTCONFPATH) ; \
567 else \
568 echo "Skipping asterisk.conf creation"; \
570 mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/INBOX
571 build_tools/make_sample_voicemail $(DESTDIR)/$(ASTDATADIR) $(DESTDIR)/$(ASTSPOOLDIR)
573 webvmail:
574 @[ -d $(DESTDIR)$(HTTP_DOCSDIR)/ ] || ( printf "http docs directory not found.\nUpdate assignment of variable HTTP_DOCSDIR in Makefile!\n" && exit 1 )
575 @[ -d $(DESTDIR)$(HTTP_CGIDIR) ] || ( printf "cgi-bin directory not found.\nUpdate assignment of variable HTTP_CGIDIR in Makefile!\n" && exit 1 )
576 $(INSTALL) -m 4755 -o root -g root contrib/scripts/vmail.cgi $(DESTDIR)$(HTTP_CGIDIR)/vmail.cgi
577 mkdir -p $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk
578 for x in images/*.gif; do \
579 $(INSTALL) -m 644 $$x $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk/; \
580 done
581 @echo " +--------- Asterisk Web Voicemail ----------+"
582 @echo " + +"
583 @echo " + Asterisk Web Voicemail is installed in +"
584 @echo " + your cgi-bin directory: +"
585 @echo " + $(DESTDIR)$(HTTP_CGIDIR)"
586 @echo " + IT USES A SETUID ROOT PERL SCRIPT, SO +"
587 @echo " + IF YOU DON'T LIKE THAT, UNINSTALL IT! +"
588 @echo " + +"
589 @echo " + Other static items have been stored in: +"
590 @echo " + $(DESTDIR)$(HTTP_DOCSDIR)"
591 @echo " + +"
592 @echo " + If these paths do not match your httpd +"
593 @echo " + installation, correct the definitions +"
594 @echo " + in your Makefile of HTTP_CGIDIR and +"
595 @echo " + HTTP_DOCSDIR +"
596 @echo " + +"
597 @echo " +-------------------------------------------+"
599 spec:
600 sed "s/^Version:.*/Version: $(RPMVERSION)/g" redhat/asterisk.spec > asterisk.spec ; \
602 rpm: __rpm
604 __rpm: include/asterisk/version.h include/asterisk/buildopts.h spec
605 rm -rf /tmp/asterisk ; \
606 mkdir -p /tmp/asterisk/redhat/RPMS/i386 ; \
607 $(MAKE) DESTDIR=/tmp/asterisk install ; \
608 $(MAKE) DESTDIR=/tmp/asterisk samples ; \
609 mkdir -p /tmp/asterisk/etc/rc.d/init.d ; \
610 cp -f contrib/init.d/rc.redhat.asterisk /tmp/asterisk/etc/rc.d/init.d/asterisk ; \
611 rpmbuild --rcfile /usr/lib/rpm/rpmrc:redhat/rpmrc -bb asterisk.spec
613 progdocs:
614 (cat contrib/asterisk-ng-doxygen; echo "HAVE_DOT=$(HAVEDOT)"; \
615 echo "PROJECT_NUMBER=$(ASTERISKVERSION)") | doxygen -
617 config:
618 @if [ "${OSARCH}" = "linux-gnu" ]; then \
619 if [ -f /etc/redhat-release -o -f /etc/fedora-release ]; then \
620 $(INSTALL) -m 755 contrib/init.d/rc.redhat.asterisk /etc/rc.d/init.d/asterisk; \
621 /sbin/chkconfig --add asterisk; \
622 elif [ -f /etc/debian_version ]; then \
623 $(INSTALL) -m 755 contrib/init.d/rc.debian.asterisk /etc/init.d/asterisk; \
624 /usr/sbin/update-rc.d asterisk start 10 2 3 4 5 . stop 91 2 3 4 5 .; \
625 elif [ -f /etc/gentoo-release ]; then \
626 $(INSTALL) -m 755 contrib/init.d/rc.gentoo.asterisk /etc/init.d/asterisk; \
627 /sbin/rc-update add asterisk default; \
628 elif [ -f /etc/mandrake-release ]; then \
629 $(INSTALL) -m 755 contrib/init.d/rc.mandrake.asterisk /etc/rc.d/init.d/asterisk; \
630 /sbin/chkconfig --add asterisk; \
631 elif [ -f /etc/SuSE-release -o -f /etc/novell-release ]; then \
632 $(INSTALL) -m 755 contrib/init.d/rc.suse.asterisk /etc/init.d/asterisk; \
633 /sbin/chkconfig --add asterisk; \
634 elif [ -f /etc/slackware-version ]; then \
635 echo "Slackware is not currently supported, although an init script does exist for it." \
636 else \
637 echo "We could not install init scripts for your distribution."; \
638 fi \
639 else \
640 echo "We could not install init scripts for your operating system."; \
643 sounds:
644 $(MAKE) -C sounds all
646 # If the cleancount has been changed, force a make clean.
647 # .cleancount is the global clean count, and .lastclean is the
648 # last clean count we had
650 cleantest:
651 @cmp -s .cleancount .lastclean || $(MAKE) clean
653 $(SUBDIRS_UNINSTALL):
654 @$(MAKE) --no-print-directory -C $(@:-uninstall=) uninstall
656 _uninstall: $(SUBDIRS_UNINSTALL)
657 rm -f $(DESTDIR)$(MODULES_DIR)/*
658 rm -f $(DESTDIR)$(ASTSBINDIR)/*asterisk*
659 rm -f $(DESTDIR)$(ASTSBINDIR)/astgenkey
660 rm -f $(DESTDIR)$(ASTSBINDIR)/autosupport
661 rm -rf $(DESTDIR)$(ASTHEADERDIR)
662 rm -rf $(DESTDIR)$(ASTDATADIR)/firmware
663 rm -f $(DESTDIR)$(ASTMANDIR)/man8/asterisk.8
664 rm -f $(DESTDIR)$(ASTMANDIR)/man8/astgenkey.8
665 rm -f $(DESTDIR)$(ASTMANDIR)/man8/autosupport.8
666 rm -f $(DESTDIR)$(ASTMANDIR)/man8/safe_asterisk.8
667 $(MAKE) -C sounds uninstall
669 uninstall: _uninstall
670 @echo " +--------- Asterisk Uninstall Complete -----+"
671 @echo " + Asterisk binaries, sounds, man pages, +"
672 @echo " + headers, modules, and firmware builds, +"
673 @echo " + have all been uninstalled. +"
674 @echo " + +"
675 @echo " + To remove ALL traces of Asterisk, +"
676 @echo " + including configuration, spool +"
677 @echo " + directories, and logs, run the following +"
678 @echo " + command: +"
679 @echo " + +"
680 ifeq ($(MAKE), gmake)
681 @echo " + $(MAKE) uninstall-all +"
682 else
683 @echo " + $(MAKE) uninstall-all +"
684 endif
685 @echo " +-------------------------------------------+"
687 uninstall-all: _uninstall
688 rm -rf $(DESTDIR)$(ASTLIBDIR)
689 rm -rf $(DESTDIR)$(ASTVARLIBDIR)
690 rm -rf $(DESTDIR)$(ASTDATADIR)
691 rm -rf $(DESTDIR)$(ASTSPOOLDIR)
692 rm -rf $(DESTDIR)$(ASTETCDIR)
693 rm -rf $(DESTDIR)$(ASTLOGDIR)
695 menuconfig: menuselect
697 gmenuconfig: gmenuselect
699 menuselect: menuselect/menuselect menuselect-tree
700 -@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!"
702 gmenuselect: menuselect/gmenuselect menuselect-tree
703 -@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!"
705 menuselect/menuselect: makeopts menuselect/menuselect.c menuselect/menuselect_curses.c menuselect/menuselect_stub.c menuselect/menuselect.h menuselect/linkedlists.h makeopts
706 @CC="$(HOST_CC)" LD="" AR="" RANLIB="" CFLAGS="" $(MAKE) -C menuselect CONFIGURE_SILENT="--silent"
708 menuselect/gmenuselect: makeopts menuselect/menuselect.c menuselect/menuselect_gtk.c menuselect/menuselect_stub.c menuselect/menuselect.h menuselect/linkedlists.h makeopts
709 @CC="$(HOST_CC)" CXX="$(CXX)" LD="" AR="" RANLIB="" CFLAGS="" $(MAKE) -C menuselect _gmenuselect CONFIGURE_SILENT="--silent"
711 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
712 @echo "Generating input for menuselect ..."
713 @build_tools/prep_moduledeps > $@
715 .PHONY: menuselect main sounds clean dist-clean distclean all prereqs cleantest uninstall _uninstall uninstall-all dont-optimize $(SUBDIRS_INSTALL) $(SUBDIRS_CLEAN) $(SUBDIRS_UNINSTALL) $(SUBDIRS) $(MOD_SUBDIRS_EMBED_LDSCRIPT) $(MOD_SUBDIRS_EMBED_LDFLAGS) $(MOD_SUBDIRS_EMBED_LIBS) menuselect.makeopts