2 # Asterisk -- A telephony toolkit for Linux.
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
30 export ASTERISKVERSION
31 export ASTERISKVERSIONNUM
48 export MENUSELECT_CFLAGS
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
),)
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.
84 #Uncomment this to see all build commands instead of 'quiet' output
87 # Create OPTIONS variable
91 space
:=$(empty
) $(empty
)
92 ASTTOPDIR
:=$(subst $(space
),\
$(space
),$(CURDIR
))
94 # Overwite config files on "make samples"
97 # Include debug and macro symbols in the executables (-g) and profiling info (-pg)
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
121 ASTETCDIR
=$(sysconfdir
)/asterisk
122 ASTLIBDIR
=$(libdir)/asterisk
123 ASTHEADERDIR
=$(includedir)/asterisk
125 ASTSBINDIR
=$(sbindir
)
126 ASTSPOOLDIR
=$(localstatedir
)/spool
/asterisk
127 ASTLOGDIR
=$(localstatedir
)/log
/asterisk
128 ASTVARRUNDIR
=$(localstatedir
)/run
130 ifneq ($(findstring BSD
,$(OSARCH
)),)
131 ASTVARLIBDIR
=$(prefix)/share
/asterisk
132 ASTVARRUNDIR
=$(localstatedir
)/run
/asterisk
134 ASTVARLIBDIR
=$(localstatedir
)/lib
/asterisk
137 ifeq ($(ASTDATADIR
),)
138 ASTDATADIR
:=$(ASTVARLIBDIR
)
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
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
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
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
191 ifeq ($(SUB_PROC
),xscale
)
192 OPTIONS
+=-fsigned-char
-mcpu
=xscale
194 OPTIONS
+=-fsigned-char
200 ifeq ($(findstring -save-temps
,$(ASTCFLAGS
)),)
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
)
212 ifneq ($(findstring BSD
,$(OSARCH
)),)
213 ASTCFLAGS
+=-I
/usr
/local
/include
214 ASTLDFLAGS
+=-L
/usr
/local
/lib
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
)
222 ASTCFLAGS
+=-fsigned-char
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
)
232 ifeq ($(OSARCH
),NetBSD
)
233 ASTCFLAGS
+=-pthread
-I
/usr
/pkg
/include
236 ifeq ($(OSARCH
),OpenBSD
)
240 ifeq ($(OSARCH
),SunOS
)
241 ASTCFLAGS
+=-Wcast-align
-DSOLARIS
-I..
/include/solaris-compat
-I
/opt
/ssl
/include -I
/usr
/local
/ssl
/include
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
)
250 ifneq ($(wildcard .svn
),)
251 ASTERISKVERSIONNUM
=999999
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
273 # These are used for all but Darwin
274 SOLINK
=-shared
-Xlinker
-x
275 ifneq ($(findstring BSD
,$(OSARCH
)),)
276 LDFLAGS
+=-L
/usr
/local
/lib
280 ifeq ($(OSARCH
),SunOS
)
281 SOLINK
=-shared
-fpic
-L
/usr
/local
/ssl
/lib
-lrt
284 SUBMAKE
=$(MAKE
) --quiet
--no-print-directory
286 # This is used when generating the doxygen documentation
294 @echo
" +--------- Asterisk Build Complete ---------+"
295 @echo
" + Asterisk has successfully been built, and +"
296 @echo
" + can be installed by running: +"
298 ifeq ($(MAKE
), gmake
)
299 @echo
" + $(MAKE) install +"
301 @echo
" + $(MAKE) install +"
303 @echo
" +-------------------------------------------+"
305 _all
: cleantest
$(SUBDIRS
)
309 @echo
"**** The configure script must be executed before running '$(MAKE)'."
310 @echo
"**** Please run \"./configure\"."
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 ..."
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
))
346 @ASTCFLAGS
="$(MOD_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS
="$(ASTLDFLAGS)" AST_LIBS
="$(AST_LIBS)" $(MAKE
) --no-builtin-rules
-C
$@ SUBDIR
=$@
all
349 @ASTCFLAGS
="$(OTHER_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS
="$(ASTLDFLAGS)" AUDIO_LIBS
="$(AUDIO_LIBS)" $(MAKE
) --no-builtin-rules
-C
$@ SUBDIR
=$@
all
352 @build_tools
/make_defaults_h
> $@.tmp
353 @if cmp
-s
$@.tmp
$@
; then
: ; else \
358 include/asterisk
/version.h
: FORCE
359 @build_tools
/make_version_h
> $@.tmp
360 @if cmp
-s
$@.tmp
$@
; then
: ; else \
365 include/asterisk
/buildopts.h
: menuselect.makeopts
366 @build_tools
/make_buildopts_h
> $@.tmp
367 @if cmp
-s
$@.tmp
$@
; then
: ; else \
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
)
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
397 rm -f build_tools
/menuselect-deps
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
; \
408 mkdir
-p
$(DESTDIR
)$(ASTDATADIR
)/images
409 for x in images
/*.jpg
; do \
410 $(INSTALL
) -m
644 $$x $(DESTDIR
)$(ASTDATADIR
)/images
; \
412 mkdir
-p
$(DESTDIR
)$(AGI_DIR
)
413 $(MAKE
) -C sounds
install
416 @if
[ -d .svn
]; then \
417 echo
"Updating from Subversion..." ; \
418 svn update | tee update.out
; \
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-
; \
426 echo
"Not under version control"; \
429 NEWHEADERS
=$(notdir $(wildcard include/asterisk
/*.h
))
430 OLDHEADERS
=$(filter-out $(NEWHEADERS
),$(notdir $(wildcard $(DESTDIR
)$(ASTHEADERDIR
)/*.h
)))
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
; \
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
)))
484 @for f in
$(DEPMODS
); do
rm -f
$(DESTDIR
)$(MODULES_DIR
)/$$f; done
485 @if
[ -n
"$(OLDMODS)" ]; then \
486 echo
" WARNING WARNING WARNING" ;\
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." ;\
495 for f in
$(OLDMODS
); do \
499 echo
" WARNING WARNING WARNING" ;\
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\"."
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 -------+"
515 @echo
" + YOU MUST READ THE SECURITY DOCUMENT +"
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: +"
522 ifeq ($(MAKE
), gmake
)
523 @echo
" + $(MAKE) samples +"
525 @echo
" + $(MAKE) samples +"
528 @echo
" +----------------- or ---------------------+"
530 @echo
" + You can go ahead and install the asterisk +"
531 @echo
" + program documentation now or later run: +"
533 ifeq ($(MAKE
), gmake
)
534 @echo
" + $(MAKE) progdocs +"
536 @echo
" + $(MAKE) progdocs +"
539 @echo
" + **Note** This requires that you have +"
540 @echo
" + doxygen installed on your local system +"
541 @echo
" +-------------------------------------------+"
542 @
$(MAKE
) -s oldmodcheck
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` ; \
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"; \
563 mv
-f
$(DESTDIR
)$(ASTETCDIR
)/`$(BASENAME) $$x .sample` $(DESTDIR
)$(ASTETCDIR
)/`$(BASENAME) $$x .sample`.old
; \
565 echo
"Skipping config file $$x"; \
569 $(INSTALL
) -m
644 $$x $(DESTDIR
)$(ASTETCDIR
)/`$(BASENAME) $$x .sample` ;\
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)" ; \
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'" ; \
611 echo
"; Changing the following lines may compromise your security." ; \
613 echo
";astctlpermissions = 0660" ; \
614 echo
";astctlowner = root" ; \
615 echo
";astctlgroup = apache" ; \
616 echo
";astctl = asterisk.ctl" ; \
617 ) > $(DESTDIR
)$(ASTCONFPATH
) ; \
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
)
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
/; \
632 @echo
" +--------- Asterisk Web Voicemail ----------+"
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! +"
640 @echo
" + Other static items have been stored in: +"
641 @echo
" + $(DESTDIR)$(HTTP_DOCSDIR)"
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 +"
648 @echo
" +-------------------------------------------+"
651 (cat contrib
/asterisk-ng-doxygen
; echo
"HAVE_DOT=$(HAVEDOT)"; \
652 echo
"PROJECT_NUMBER=$(ASTERISKVERSION)") | doxygen
-
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." \
674 echo
"We could not install init scripts for your distribution."; \
677 echo
"We could not install init scripts for your operating system."; \
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
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. +"
712 @echo
" + To remove ALL traces of Asterisk, +"
713 @echo
" + including configuration, spool +"
714 @echo
" + directories, and logs, run the following +"
715 @echo
" + command: +"
717 ifeq ($(MAKE
), gmake
)
718 @echo
" + $(MAKE) uninstall-all +"
720 @echo
" + $(MAKE) uninstall-all +"
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\"?>" > $@
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