1999-12-05 07:16:40 +00:00
#
# Asterisk -- A telephony toolkit for Linux.
#
# Top level Makefile
#
2006-02-06 20:30:49 +00:00
# Copyright (C) 1999-2006, Digium, Inc.
1999-12-05 07:16:40 +00:00
#
2005-06-06 18:29:57 +00:00
# Mark Spencer <markster@digium.com>
1999-12-05 07:16:40 +00:00
#
# This program is free software, distributed under the terms of
# the GNU General Public License
#
2006-07-15 20:12:28 +00:00
# All Makefiles use the following variables:
#
2009-07-21 13:28:04 +00:00
# ASTCFLAGS - compiler options provided by the user (if any)
# _ASTCFLAGS - compiler options provided by the build system
# ASTLDFLAGS - linker flags (not libraries) provided by the user (if any)
# _ASTLDFLAGS - linker flags (not libraries) provided by the build system
2006-07-15 20:12:28 +00:00
# LIBS - additional libraries, at top-level for all links,
# on a single object just for that object
# SOLINK - linker flags used only for creating shared objects (.so files),
# used for all .so links
#
2009-07-21 13:28:04 +00:00
# Values for ASTCFLAGS and ASTLDFLAGS can be specified in the
2006-09-29 18:54:21 +00:00
# environment when running make, as follows:
#
2007-12-18 08:20:17 +00:00
# $ ASTCFLAGS="-Werror" make ...
#
2009-07-21 13:28:04 +00:00
# or as a variable value on the make command line itself:
2007-12-18 08:20:17 +00:00
#
# $ make ASTCFLAGS="-Werror" ...
2007-12-10 04:18:07 +00:00
2007-12-10 01:54:40 +00:00
export A S T T O P D I R # Top level dir, used in subdirs' Makefiles
2006-09-29 18:54:21 +00:00
export ASTERISKVERSION
export ASTERISKVERSIONNUM
2007-12-10 01:54:40 +00:00
#--- values used for default paths
# DESTDIR is the staging (or final) directory where files are copied
# during the install process. Define it before 'export', otherwise
# export will set it to the empty string making ?= fail.
# WARNING: do not put spaces or comments after the value.
DESTDIR ?= $( INSTALL_PATH)
export DESTDIR
export I N S T A L L _ P A T H # Additional prefix for the following paths
export A S T E T C D I R # Path for config files
2006-09-29 18:54:21 +00:00
export ASTVARRUNDIR
export MODULES_DIR
export ASTSPOOLDIR
export ASTVARLIBDIR
export ASTDATADIR
2008-01-24 22:58:10 +00:00
export ASTDBDIR
2006-09-29 18:54:21 +00:00
export ASTLOGDIR
2006-11-28 18:28:07 +00:00
export ASTLIBDIR
export ASTMANDIR
export ASTHEADERDIR
export ASTBINDIR
export ASTSBINDIR
2006-09-29 18:54:21 +00:00
export AGI_DIR
export ASTCONFPATH
2007-12-10 01:54:40 +00:00
export O S A R C H # Operating system
export P R O C # Processor type
export N O I S Y _ B U I L D # Used in Makefile.rules
export M E N U S E L E C T _ C F L A G S # Options selected in menuselect.
export A S T _ D E V M O D E # Set to "yes" for additional compiler
2008-06-28 14:34:07 +00:00
# and runtime checks
2007-12-10 01:54:40 +00:00
export S O L I N K # linker flags for shared objects
export S T A T I C _ B U I L D # Additional cflags, set to -static
2008-06-28 14:34:07 +00:00
# for static builds. Probably
# should go directly to ASTLDFLAGS
2007-12-10 01:54:40 +00:00
#--- paths to various commands
2006-09-29 18:54:21 +00:00
export CC
export CXX
export AR
export RANLIB
export HOST_CC
export INSTALL
2006-11-01 22:54:15 +00:00
export STRIP
2006-12-01 23:20:17 +00:00
export DOWNLOAD
2007-12-17 07:25:35 +00:00
export AWK
2007-08-22 18:54:30 +00:00
export GREP
export ID
2008-11-19 00:27:45 +00:00
export MD5
1999-12-05 07:16:40 +00:00
2006-09-09 03:27:21 +00:00
# even though we could use '-include makeopts' here, use a wildcard
# lookup anyway, so that make won't try to build makeopts if it doesn't
# exist (other rules will force it to be built if needed)
i f n e q ( $( wildcard makeopts ) , )
i n c l u d e m a k e o p t s
e n d i f
2006-08-21 02:11:39 +00:00
2009-08-28 20:01:21 +00:00
# start the primary CFLAGS and LDFLAGS with any that were provided
# to the configure script
_ASTCFLAGS := $( CONFIG_CFLAGS)
_ASTLDFLAGS := $( CONFIG_LDFLAGS)
2007-08-22 16:22:27 +00:00
# Some build systems, such as the one in openwrt, like to pass custom target
2009-08-28 20:01:21 +00:00
# CFLAGS and LDFLAGS in the COPTS and LDOPTS variables; these should also
# go before any build-system computed flags, since they are defaults, not
# overrides
_ASTCFLAGS += $( COPTS)
_ASTLDFLAGS += $( LDOPTS)
2007-08-22 16:22:27 +00:00
2008-11-01 21:10:07 +00:00
# libxml2 cflags
2009-07-21 13:28:04 +00:00
_ASTCFLAGS += $( LIBXML2_INCLUDE)
2008-11-01 21:10:07 +00:00
2006-07-06 23:18:45 +00:00
#Uncomment this to see all build commands instead of 'quiet' output
#NOISY_BUILD=yes
2008-01-29 17:22:47 +00:00
empty :=
space := $( empty) $( empty)
ASTTOPDIR := $( subst $( space) ,\$ ( space) ,$( CURDIR) )
2006-02-23 22:38:47 +00:00
2006-04-06 17:13:00 +00:00
# Overwite config files on "make samples"
2005-11-07 22:33:12 +00:00
OVERWRITE = y
2003-03-18 06:00:18 +00:00
2006-04-06 17:13:00 +00:00
# Include debug and macro symbols in the executables (-g) and profiling info (-pg)
2006-05-11 13:15:10 +00:00
DEBUG = -g3
2003-03-18 06:00:18 +00:00
2003-10-25 17:27:53 +00:00
2006-04-07 07:04:05 +00:00
# Define standard directories for various platforms
# These apply if they are not redefined in asterisk.conf
i f e q ( $( OSARCH ) , S u n O S )
2006-06-29 22:01:41 +00:00
ASTETCDIR = /var/etc/asterisk
2006-05-19 18:54:21 +00:00
ASTLIBDIR = /opt/asterisk/lib
2006-06-29 22:01:41 +00:00
ASTVARLIBDIR = /var/opt/asterisk
2007-09-24 22:06:19 +00:00
ASTDBDIR = $( ASTVARLIBDIR)
ASTKEYDIR = $( ASTVARLIBDIR)
2006-06-29 22:01:41 +00:00
ASTSPOOLDIR = /var/spool/asterisk
ASTLOGDIR = /var/log/asterisk
ASTHEADERDIR = /opt/asterisk/include
ASTBINDIR = /opt/asterisk/bin
ASTSBINDIR = /opt/asterisk/sbin
ASTVARRUNDIR = /var/run/asterisk
ASTMANDIR = /opt/asterisk/man
2006-04-07 07:04:05 +00:00
e l s e
2006-05-19 18:54:21 +00:00
ASTETCDIR = $( sysconfdir) /asterisk
ASTLIBDIR = $( libdir) /asterisk
ASTHEADERDIR = $( includedir) /asterisk
ASTBINDIR = $( bindir)
ASTSBINDIR = $( sbindir)
2006-05-25 22:05:12 +00:00
ASTSPOOLDIR = $( localstatedir) /spool/asterisk
ASTLOGDIR = $( localstatedir) /log/asterisk
2009-02-21 13:13:35 +00:00
ASTVARRUNDIR = $( localstatedir) /run/asterisk
2006-05-19 18:54:21 +00:00
ASTMANDIR = $( mandir)
2007-06-18 15:46:49 +00:00
i f n e q ( $( findstring BSD ,$ ( OSARCH ) ) , )
2006-05-25 22:05:12 +00:00
ASTVARLIBDIR = $( prefix) /share/asterisk
2007-06-18 15:46:49 +00:00
ASTVARRUNDIR = $( localstatedir) /run/asterisk
2007-09-24 22:06:19 +00:00
ASTDBDIR = $( localstatedir) /db/asterisk
2006-05-25 22:05:12 +00:00
e l s e
ASTVARLIBDIR = $( localstatedir) /lib/asterisk
2007-09-24 22:06:19 +00:00
ASTDBDIR = $( ASTVARLIBDIR)
2006-05-25 22:05:12 +00:00
e n d i f
2007-09-24 22:06:19 +00:00
ASTKEYDIR = $( ASTVARLIBDIR)
2006-04-07 07:04:05 +00:00
e n d i f
2006-10-01 18:30:42 +00:00
i f e q ( $( ASTDATADIR ) , )
ASTDATADIR := $( ASTVARLIBDIR)
e n d i f
2006-04-07 07:04:05 +00:00
# Asterisk.conf is located in ASTETCDIR or by using the -C flag
# when starting Asterisk
ASTCONFPATH = $( ASTETCDIR) /asterisk.conf
MODULES_DIR = $( ASTLIBDIR) /modules
2006-04-15 22:53:53 +00:00
AGI_DIR = $( ASTDATADIR) /agi-bin
2006-04-07 07:04:05 +00:00
# If you use Apache, you may determine by a grep 'DocumentRoot' of your httpd.conf file
HTTP_DOCSDIR = /var/www/html
# Determine by a grep 'ScriptAlias' of your Apache httpd.conf file
HTTP_CGIDIR = /var/www/cgi-bin
1999-12-05 07:16:40 +00:00
2006-04-06 17:13:00 +00:00
# Uncomment this to use the older DSP routines
2009-07-21 13:28:04 +00:00
#_ASTCFLAGS+=-DOLD_DSP_ROUTINES
2005-07-14 19:40:15 +00:00
# If the file .asterisk.makeopts is present in your home directory, you can
2006-04-24 17:11:45 +00:00
# include all of your favorite menuselect options so that every time you download
# a new version of Asterisk, you don't have to run menuselect to set them.
# The file /etc/asterisk.makeopts will also be included but can be overridden
2005-07-18 18:34:52 +00:00
# by the file in your home directory.
2006-04-24 17:11:45 +00:00
GLOBAL_MAKEOPTS = $( wildcard /etc/asterisk.makeopts)
USER_MAKEOPTS = $( wildcard ~/.asterisk.makeopts)
2006-10-04 00:26:21 +00:00
MOD_SUBDIR_CFLAGS = -I$( ASTTOPDIR) /include
OTHER_SUBDIR_CFLAGS = -I$( ASTTOPDIR) /include
2005-07-14 19:40:15 +00:00
2007-12-10 01:54:40 +00:00
# Create OPTIONS variable, but probably we can assign directly to ASTCFLAGS
OPTIONS =
2006-08-21 02:11:39 +00:00
i f e q ( $( OSARCH ) , l i n u x - g n u )
2005-08-30 02:54:02 +00:00
i f e q ( $( PROC ) , x 8 6 _ 6 4 )
# You must have GCC 3.4 to use k8, otherwise use athlon
PROC = k8
#PROC=athlon
endif
ifeq ( $( PROC) ,sparc64)
#The problem with sparc is the best stuff is in newer versions of gcc (post 3.0) only.
#This works for even old (2.96) versions of gcc and provides a small boost either way.
#A ultrasparc cpu is really v9 but the stock debian stable 3.0 gcc doesn't support it.
#So we go lowest common available by gcc and go a step down, still a step up from
#the default as we now have a better instruction set to work with. - Belgarath
PROC = ultrasparc
OPTIONS += $( shell if $( CC) -mtune= $( PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>& 1; then echo " -mtune= $( PROC) " ; fi )
OPTIONS += $( shell if $( CC) -mcpu= v8 -S -o /dev/null -xc /dev/null >/dev/null 2>& 1; then echo "-mcpu=v8" ; fi )
OPTIONS += -fomit-frame-pointer
endif
ifeq ( $( PROC) ,arm)
# The Cirrus logic is the only heavily shipping arm processor with a real floating point unit
ifeq ( $( SUB_PROC) ,maverick)
OPTIONS += -fsigned-char -mcpu= ep9312
else
ifeq ( $( SUB_PROC) ,xscale)
2006-04-30 13:56:37 +00:00
OPTIONS += -fsigned-char -mcpu= xscale
2005-08-30 02:54:02 +00:00
else
2006-04-30 13:56:37 +00:00
OPTIONS += -fsigned-char
2005-08-30 02:54:02 +00:00
endif
endif
endif
2005-07-14 19:40:15 +00:00
e n d i f
2009-07-21 13:28:04 +00:00
i f e q ( $( findstring -save -temps ,$ ( _ASTCFLAGS ) $ ( ASTCFLAGS ) ) , )
i f e q ( $( findstring -pipe ,$ ( _ASTCFLAGS ) $ ( ASTCFLAGS ) ) , )
_ASTCFLAGS += -pipe
2008-07-29 23:00:45 +00:00
endif
e n d i f
2009-07-21 13:28:04 +00:00
i f e q ( $( findstring -Wall ,$ ( _ASTCFLAGS ) $ ( ASTCFLAGS ) ) , )
_ASTCFLAGS += -Wall
2007-10-29 22:05:17 +00:00
e n d i f
2009-07-21 13:28:04 +00:00
_ASTCFLAGS += -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $( DEBUG)
2006-04-24 17:11:45 +00:00
i f e q ( $( AST_DEVMODE ) , y e s )
2009-07-21 13:28:04 +00:00
_ASTCFLAGS += -Werror
_ASTCFLAGS += -Wunused
_ASTCFLAGS += $( AST_DECLARATION_AFTER_STATEMENT)
_ASTCFLAGS += $( AST_FORTIFY_SOURCE)
_ASTCFLAGS += -Wundef
_ASTCFLAGS += -Wmissing-format-attribute
2009-08-01 01:04:06 +00:00
_ASTCFLAGS += -Wformat= 2
2006-04-24 17:11:45 +00:00
e n d i f
2006-08-21 02:11:39 +00:00
i f n e q ( $( findstring BSD ,$ ( OSARCH ) ) , )
2009-08-04 14:53:00 +00:00
_ASTCFLAGS += -isystem /usr/local/include
2005-09-26 02:08:06 +00:00
e n d i f
2009-07-21 13:28:04 +00:00
i f e q ( $( findstring -march ,$ ( _ASTCFLAGS ) $ ( ASTCFLAGS ) ) , )
2008-07-29 23:00:45 +00:00
i f n e q ( $( PROC ) , u l t r a s p a r c )
2009-07-21 13:28:04 +00:00
_ASTCFLAGS += $( shell if $( CC) -march= $( PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>& 1; then echo " -march= $( PROC) " ; fi )
2008-07-29 23:00:45 +00:00
endif
2004-08-31 03:31:59 +00:00
e n d i f
2005-08-30 02:54:02 +00:00
2005-03-27 22:39:17 +00:00
i f e q ( $( PROC ) , p p c )
2009-07-21 13:28:04 +00:00
_ASTCFLAGS += -fsigned-char
2005-03-27 22:39:17 +00:00
e n d i f
2004-08-31 03:31:59 +00:00
2005-11-05 18:58:27 +00:00
i f e q ( $( OSARCH ) , F r e e B S D )
2006-08-25 20:10:56 +00:00
# -V is understood by BSD Make, not by GNU make.
BSDVERSION = $( shell make -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk)
2009-07-21 13:28:04 +00:00
_ASTCFLAGS += $( shell if test $( BSDVERSION) -lt 500016 ; then echo "-D_THREAD_SAFE" ; fi )
2006-08-21 02:11:39 +00:00
e n d i f
2004-06-22 17:42:14 +00:00
2005-11-05 18:58:27 +00:00
i f e q ( $( OSARCH ) , N e t B S D )
2009-07-21 13:28:04 +00:00
_ASTCFLAGS += -pthread -I/usr/pkg/include
2004-08-31 13:32:11 +00:00
e n d i f
2005-11-05 18:58:27 +00:00
i f e q ( $( OSARCH ) , O p e n B S D )
2009-07-21 13:28:04 +00:00
_ASTCFLAGS += -pthread -ftrampolines
2003-04-27 18:13:11 +00:00
e n d i f
2005-08-30 02:54:02 +00:00
2005-11-05 18:58:27 +00:00
i f e q ( $( OSARCH ) , S u n O S )
2009-11-03 19:59:46 +00:00
_ASTCFLAGS += -Wcast-align -DSOLARIS -I../include/solaris-compat -I/opt/ssl/include -I/usr/local/ssl/include -D_XPG4_2 -D__EXTENSIONS__
2004-12-14 23:36:30 +00:00
e n d i f
2002-06-21 01:40:13 +00:00
2007-12-17 07:25:35 +00:00
ASTERISKVERSION := $( shell GREP = $( GREP) AWK = $( AWK) build_tools/make_version .)
2006-04-24 17:11:45 +00:00
2005-08-30 02:54:02 +00:00
i f n e q ( $( wildcard .version ) , )
2007-12-17 07:25:35 +00:00
ASTERISKVERSIONNUM := $( shell $( AWK) -F. '{printf "%01d%02d%02d", $$1, $$2, $$3}' .version)
2005-08-30 02:54:02 +00:00
e n d i f
2005-07-12 02:08:03 +00:00
2006-06-19 15:17:32 +00:00
i f n e q ( $( wildcard .svn ) , )
2007-12-10 01:54:40 +00:00
ASTERISKVERSIONNUM := 999999
2005-08-30 02:54:02 +00:00
e n d i f
2003-02-04 16:35:12 +00:00
2009-07-21 13:28:04 +00:00
_ASTCFLAGS += $( OPTIONS)
2005-12-27 06:24:28 +00:00
2009-06-30 17:11:31 +00:00
MOD_SUBDIRS := channels pbx apps codecs formats cdr cel bridges funcs tests main res addons $( LOCAL_MOD_SUBDIRS)
2006-06-22 15:08:08 +00:00
OTHER_SUBDIRS := utils agi
2007-11-17 14:44:03 +00:00
SUBDIRS := $( OTHER_SUBDIRS) $( MOD_SUBDIRS)
2006-06-22 12:48:25 +00:00
SUBDIRS_INSTALL := $( SUBDIRS:%= %-install)
2006-06-22 14:31:52 +00:00
SUBDIRS_CLEAN := $( SUBDIRS:%= %-clean)
2007-10-01 21:54:41 +00:00
SUBDIRS_DIST_CLEAN := $( SUBDIRS:%= %-dist-clean)
2006-06-22 15:38:13 +00:00
SUBDIRS_UNINSTALL := $( SUBDIRS:%= %-uninstall)
2006-08-21 02:11:39 +00:00
MOD_SUBDIRS_EMBED_LDSCRIPT := $( MOD_SUBDIRS:%= %-embed-ldscript)
MOD_SUBDIRS_EMBED_LDFLAGS := $( MOD_SUBDIRS:%= %-embed-ldflags)
MOD_SUBDIRS_EMBED_LIBS := $( MOD_SUBDIRS:%= %-embed-libs)
2007-12-17 07:25:35 +00:00
MOD_SUBDIRS_MENUSELECT_TREE := $( MOD_SUBDIRS:%= %-menuselect-tree)
2005-08-30 02:54:02 +00:00
2006-08-21 02:11:39 +00:00
i f n e q ( $( findstring darwin ,$ ( OSARCH ) ) , )
2009-07-21 13:28:04 +00:00
_ASTCFLAGS += -D__Darwin__
2009-10-27 21:03:22 +00:00
SOLINK = -bundle -Xlinker -macosx_version_min -Xlinker 10.4 -Xlinker -undefined -Xlinker dynamic_lookup -force_flat_namespace /usr/lib/bundle1.o
2009-11-03 11:11:15 +00:00
_ASTLDFLAGS += -L/usr/local/lib
2005-08-31 03:32:15 +00:00
e l s e
2006-04-06 17:13:00 +00:00
# These are used for all but Darwin
2008-10-14 10:33:14 +00:00
SOLINK = -shared
2006-08-21 02:11:39 +00:00
ifneq ( $( findstring BSD,$( OSARCH) ) ,)
2009-07-27 15:38:59 +00:00
_ASTLDFLAGS += -L/usr/local/lib
2006-01-27 05:33:20 +00:00
endif
2003-10-27 20:00:41 +00:00
e n d i f
2005-08-30 02:54:02 +00:00
2005-11-05 18:58:27 +00:00
i f e q ( $( OSARCH ) , S u n O S )
2008-07-03 22:23:04 +00:00
SOLINK = -shared -fpic -L/usr/local/ssl/lib -lrt
2005-09-08 00:34:19 +00:00
e n d i f
2008-10-18 10:27:22 +00:00
i f e q ( $( OSARCH ) , O p e n B S D )
SOLINK = -shared -fpic
e n d i f
2007-12-17 07:25:35 +00:00
# comment to print directories during submakes
2007-12-17 16:48:01 +00:00
#PRINT_DIR=yes
2007-12-17 07:25:35 +00:00
2009-06-16 20:50:41 +00:00
i f n e q ( $( INSIDE_EMACS ) , )
PRINT_DIR = yes
e n d i f
2008-01-03 23:14:15 +00:00
SILENTMAKE := $( MAKE) --quiet --no-print-directory
2007-12-17 16:48:01 +00:00
i f n e q ( $( PRINT_DIR ) $( NOISY_BUILD ) , )
2008-08-11 16:14:29 +00:00
SUBMAKE := $( MAKE)
2007-12-17 16:48:01 +00:00
e l s e
2008-01-03 23:14:15 +00:00
SUBMAKE := $( MAKE) --quiet --no-print-directory
2007-12-17 16:48:01 +00:00
e n d i f
2007-12-17 07:25:35 +00:00
2005-11-14 19:00:38 +00:00
# This is used when generating the doxygen documentation
2006-04-24 17:11:45 +00:00
ifneq ($(DOT), : )
2005-11-14 19:00:38 +00:00
HAVEDOT = yes
e l s e
HAVEDOT = no
e n d i f
2007-11-05 18:00:24 +00:00
# $(MAKE) is printed in several places, and we want it to be a
# fixed size string. Define a variable whose name has also the
# same size, so we can easily align text.
i f e q ( $( MAKE ) , g m a k e )
mK = "gmake"
e l s e
mK = " make"
e n d i f
2006-09-22 23:45:14 +00:00
all : _all
2000-01-05 20:03:55 +00:00
@echo " +--------- Asterisk Build Complete ---------+"
2006-09-09 03:27:21 +00:00
@echo " + Asterisk has successfully been built, and +"
@echo " + can be installed by running: +"
2000-01-05 20:03:55 +00:00
@echo " + +"
2007-11-05 18:00:24 +00:00
@echo " + $( mK) install + "
2000-01-05 20:03:55 +00:00
@echo " +-------------------------------------------+"
2008-11-02 05:47:13 +00:00
_all : cleantest makeopts $( SUBDIRS ) doc /core -en_US .xml
2006-09-22 23:45:14 +00:00
2006-08-21 03:58:02 +00:00
makeopts : configure
2006-04-24 17:11:45 +00:00
@echo "****"
2007-05-09 13:24:38 +00:00
@echo " **** The configure script must be executed before running ' $( MAKE) '. "
@echo "**** Please run \"./configure\"."
2006-04-24 17:11:45 +00:00
@echo "****"
2006-04-24 17:24:03 +00:00
@exit 1
2006-04-24 17:11:45 +00:00
2009-10-23 14:02:42 +00:00
menuselect.makeopts : menuselect /menuselect menuselect -tree makeopts build_tools /menuselect -deps $( GLOBAL_MAKEOPTS ) $( USER_MAKEOPTS )
menuselect/menuselect --check-deps $@ $( GLOBAL_MAKEOPTS) $( USER_MAKEOPTS)
2006-06-26 14:38:55 +00:00
2006-08-21 02:11:39 +00:00
$(MOD_SUBDIRS_EMBED_LDSCRIPT) :
2009-06-09 18:08:53 +00:00
+@echo "EMBED_LDSCRIPTS+=" ` $( SILENTMAKE) -C $( @:-embed-ldscript= ) SUBDIR = $( @:-embed-ldscript= ) __embed_ldscript` >> makeopts.embed_rules
2005-04-01 21:18:39 +00:00
2006-08-21 02:11:39 +00:00
$(MOD_SUBDIRS_EMBED_LDFLAGS) :
2009-06-09 18:08:53 +00:00
+@echo "EMBED_LDFLAGS+=" ` $( SILENTMAKE) -C $( @:-embed-ldflags= ) SUBDIR = $( @:-embed-ldflags= ) __embed_ldflags` >> makeopts.embed_rules
2005-05-19 04:08:01 +00:00
2006-08-21 02:11:39 +00:00
$(MOD_SUBDIRS_EMBED_LIBS) :
2009-06-09 18:08:53 +00:00
+@echo "EMBED_LIBS+=" ` $( SILENTMAKE) -C $( @:-embed-libs= ) SUBDIR = $( @:-embed-libs= ) __embed_libs` >> makeopts.embed_rules
2007-12-17 07:25:35 +00:00
$(MOD_SUBDIRS_MENUSELECT_TREE) :
2009-06-09 18:08:53 +00:00
+@$( SUBMAKE) -C $( @:-menuselect-tree= ) SUBDIR = $( @:-menuselect-tree= ) moduleinfo
+@$( SUBMAKE) -C $( @:-menuselect-tree= ) SUBDIR = $( @:-menuselect-tree= ) makeopts
2002-09-02 15:20:28 +00:00
2006-08-21 02:11:39 +00:00
makeopts.embed_rules : menuselect .makeopts
@echo "Generating embedded module rules ..."
@rm -f $@
2009-06-09 18:08:53 +00:00
+@$( SUBMAKE) $( MOD_SUBDIRS_EMBED_LDSCRIPT)
+@$( SUBMAKE) $( MOD_SUBDIRS_EMBED_LDFLAGS)
+@$( SUBMAKE) $( MOD_SUBDIRS_EMBED_LIBS)
2004-07-18 17:58:05 +00:00
2008-02-26 20:19:03 +00:00
$(SUBDIRS) : main /version .c include /asterisk /version .h include /asterisk /build .h include /asterisk /buildopts .h defaults .h makeopts .embed_rules
2005-04-29 15:18:10 +00:00
2007-11-17 11:57:52 +00:00
i f e q ( $( findstring $ ( OSARCH ) , mingw 32 cygwin ) , )
2007-11-17 19:00:07 +00:00
# Non-windows:
# ensure that all module subdirectories are processed before 'main' during
# a parallel build, since if there are modules selected to be embedded the
# directories containing them must be completed before the main Asterisk
# binary can be built
2006-08-21 02:11:39 +00:00
main : $( filter -out main ,$ ( MOD_SUBDIRS ) )
2007-11-17 11:57:52 +00:00
e l s e
2007-11-17 19:00:07 +00:00
# Windows: we need to build main (i.e. the asterisk dll) first,
# followed by res, followed by the other directories, because
# dll symbols must be resolved during linking and not at runtime.
D1 := $( filter-out main,$( MOD_SUBDIRS) )
D1 := $( filter-out res,$( D1) )
2007-11-17 11:57:52 +00:00
2007-11-17 19:00:07 +00:00
$(D1) : res
2007-11-17 11:57:52 +00:00
res : main
e n d i f
2005-04-29 15:18:10 +00:00
2007-11-17 19:00:07 +00:00
$(MOD_SUBDIRS) :
2009-09-24 18:19:41 +00:00
+@_ASTCFLAGS= " $( MOD_SUBDIR_CFLAGS) $( _ASTCFLAGS) " ASTCFLAGS = " $( ASTCFLAGS) " _ASTLDFLAGS = " $( _ASTLDFLAGS) " ASTLDFLAGS = " $( ASTLDFLAGS) " $( SUBMAKE) --no-builtin-rules -C $@ SUBDIR = $@ all
2005-04-29 15:18:10 +00:00
2007-11-17 19:00:07 +00:00
$(OTHER_SUBDIRS) :
2009-09-24 18:19:41 +00:00
+@_ASTCFLAGS= " $( OTHER_SUBDIR_CFLAGS) $( _ASTCFLAGS) " ASTCFLAGS = " $( ASTCFLAGS) " _ASTLDFLAGS = " $( _ASTLDFLAGS) " ASTLDFLAGS = " $( ASTLDFLAGS) " $( SUBMAKE) --no-builtin-rules -C $@ SUBDIR = $@ all
2005-04-29 15:18:10 +00:00
2006-04-24 17:11:45 +00:00
defaults.h : makeopts
2006-05-10 14:35:38 +00:00
@build_tools/make_defaults_h > $@ .tmp
2007-12-16 10:34:55 +00:00
@cmp -s $@ .tmp $@ || mv $@ .tmp $@
2006-05-10 14:35:38 +00:00
@rm -f $@ .tmp
2005-06-06 03:04:58 +00:00
2008-07-30 15:32:14 +00:00
main/version.c : FORCE
2008-01-05 22:09:06 +00:00
@build_tools/make_version_c > $@ .tmp
2007-12-16 10:34:55 +00:00
@cmp -s $@ .tmp $@ || mv $@ .tmp $@
2006-05-10 14:35:38 +00:00
@rm -f $@ .tmp
2001-05-09 03:11:22 +00:00
2008-07-30 15:32:14 +00:00
include/asterisk/version.h : FORCE
2008-02-26 20:19:03 +00:00
@build_tools/make_version_h > $@ .tmp
@cmp -s $@ .tmp $@ || mv $@ .tmp $@
@rm -f $@ .tmp
2006-05-11 09:50:41 +00:00
include/asterisk/buildopts.h : menuselect .makeopts
@build_tools/make_buildopts_h > $@ .tmp
2007-12-16 10:34:55 +00:00
@cmp -s $@ .tmp $@ || mv $@ .tmp $@
2006-05-11 09:50:41 +00:00
@rm -f $@ .tmp
2006-10-22 04:44:43 +00:00
include/asterisk/build.h :
@build_tools/make_build_h > $@ .tmp
2007-12-16 10:34:55 +00:00
@cmp -s $@ .tmp $@ || mv $@ .tmp $@
2006-10-22 04:44:43 +00:00
@rm -f $@ .tmp
2006-06-22 14:31:52 +00:00
$(SUBDIRS_CLEAN) :
2009-06-09 18:08:53 +00:00
+@$( SUBMAKE) -C $( @:-clean= ) clean
1999-12-05 07:16:40 +00:00
2007-10-01 21:54:41 +00:00
$(SUBDIRS_DIST_CLEAN) :
2009-06-09 18:08:53 +00:00
+@$( SUBMAKE) -C $( @:-dist-clean= ) dist-clean
2007-10-01 21:54:41 +00:00
2008-11-15 19:45:19 +00:00
clean : $( SUBDIRS_CLEAN ) _clean
_clean :
2005-06-06 03:04:58 +00:00
rm -f defaults.h
rm -f include/asterisk/build.h
2008-01-05 22:09:06 +00:00
rm -f main/version.c
2008-02-26 20:19:03 +00:00
rm -f include/asterisk/version.h
2006-06-24 04:42:35 +00:00
@$( MAKE) -C menuselect clean
2006-09-09 03:27:21 +00:00
cp -f .cleancount .lastclean
1999-12-05 07:16:40 +00:00
2006-07-01 14:25:43 +00:00
dist-clean : distclean
2006-04-28 17:39:54 +00:00
2008-11-15 19:45:19 +00:00
distclean : $( SUBDIRS_DIST_CLEAN ) _clean
2006-06-24 04:42:35 +00:00
@$( MAKE) -C menuselect dist-clean
2006-06-22 14:31:52 +00:00
@$( MAKE) -C sounds dist-clean
2006-08-23 03:07:34 +00:00
rm -f menuselect.makeopts makeopts menuselect-tree menuselect.makedeps
2006-08-21 02:11:39 +00:00
rm -f makeopts.embed_rules
2008-03-17 17:31:46 +00:00
rm -f config.log config.status config.cache
2006-06-23 02:15:35 +00:00
rm -rf autom4te.cache
2006-07-01 14:29:06 +00:00
rm -f include/asterisk/autoconfig.h
2006-05-11 09:50:41 +00:00
rm -f include/asterisk/buildopts.h
2006-06-23 08:32:19 +00:00
rm -rf doc/api
2006-07-01 04:37:52 +00:00
rm -f build_tools/menuselect-deps
2006-04-24 17:11:45 +00:00
2006-09-22 23:45:14 +00:00
datafiles : _all
2009-09-24 14:44:08 +00:00
if [ ` $( ID) -u` = 0 ] ; then \
CFLAGS = " $( _ASTCFLAGS) $( ASTCFLAGS) " build_tools/mkpkgconfig $( DESTDIR) /usr/lib/pkgconfig; \
fi
2006-04-24 17:11:45 +00:00
# Should static HTTP be installed during make samples or even with its own target ala
# webvoicemail? There are portions here that *could* be customized but might also be
# improved a lot. I'll put it here for now.
2006-04-15 22:53:53 +00:00
mkdir -p $( DESTDIR) $( ASTDATADIR) /static-http
2006-04-01 08:49:54 +00:00
for x in static-http/*; do \
2006-04-30 04:34:04 +00:00
$( INSTALL) -m 644 $$ x $( DESTDIR) $( ASTDATADIR) /static-http ; \
2006-04-01 08:49:54 +00:00
done
2008-01-07 17:09:23 +00:00
if [ -d doc/tex/asterisk ] ; then \
mkdir -p $( DESTDIR) $( ASTDATADIR) /static-http/docs ; \
for n in doc/tex/asterisk/* ; do \
$( INSTALL) -m 644 $$ n $( DESTDIR) $( ASTDATADIR) /static-http/docs ; \
done \
fi
2006-04-15 22:53:53 +00:00
mkdir -p $( DESTDIR) $( ASTDATADIR) /images
2001-09-24 21:29:03 +00:00
for x in images/*.jpg; do \
2006-04-15 22:53:53 +00:00
$( INSTALL) -m 644 $$ x $( DESTDIR) $( ASTDATADIR) /images ; \
2001-09-24 21:29:03 +00:00
done
2003-10-25 17:27:53 +00:00
mkdir -p $( DESTDIR) $( AGI_DIR)
2006-06-07 21:05:05 +00:00
$( MAKE) -C sounds install
2001-09-24 21:29:03 +00:00
2009-04-28 14:15:47 +00:00
doc/core-en_US.xml : $( foreach dir ,$ ( MOD_SUBDIRS ) ,$ ( shell $ ( GREP ) -l "language =\"en_US \"" $ ( dir ) /*.c $ ( dir ) /*.cc 2>/dev /null ) )
2009-06-06 21:38:54 +00:00
@printf "Building Documentation For: "
2008-11-02 05:47:13 +00:00
@echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" > $@
@echo "<!DOCTYPE docs SYSTEM \"appdocsxml.dtd\">" >> $@
2009-05-16 20:01:22 +00:00
@echo "<docs xmlns:xi=\"http://www.w3.org/2001/XInclude\">" >> $@
2008-11-01 21:10:07 +00:00
@for x in $( MOD_SUBDIRS) ; do \
2009-06-06 21:38:54 +00:00
printf " $$ x " ; \
2008-11-01 21:10:07 +00:00
for i in $$ x/*.c; do \
2008-11-02 05:47:13 +00:00
$( AWK) -f build_tools/get_documentation $$ i >> $@ ; \
2008-11-01 21:10:07 +00:00
done ; \
done
2008-11-02 05:47:13 +00:00
@echo
@echo "</docs>" >> $@
2008-11-01 21:10:07 +00:00
2008-11-02 05:55:46 +00:00
validate-docs : doc /core -en_US .xml
ifeq ($(XMLSTARLET), : )
@echo "---------------------------------------------------------------"
@echo "--- Please install xmlstarlet to validate the documentation ---"
@echo "---------------------------------------------------------------"
e l s e
2008-11-04 20:12:41 +00:00
$( XMLSTARLET ) v a l - d d o c / a p p d o c s x m l . d t d $<
2008-11-02 05:55:46 +00:00
e n d i f
2003-02-04 16:35:12 +00:00
update :
2005-12-02 01:01:11 +00:00
@if [ -d .svn ] ; then \
echo "Updating from Subversion..." ; \
2008-01-16 18:06:14 +00:00
fromrev = " `svn info | $( AWK) '/Revision: / {print $$ 2}'` " ; \
2005-12-02 01:01:11 +00:00
svn update | tee update.out; \
2008-01-16 18:06:14 +00:00
torev = " `svn info | $( AWK) '/Revision: / {print $$ 2}'` " ; \
echo " `date` Updated from revision $$ {fromrev} to $$ {torev}. " >> update.log; \
2005-12-02 01:01:11 +00:00
rm -f .version; \
if [ ` grep -c ^C update.out` -gt 0 ] ; then \
echo ; echo "The following files have conflicts:" ; \
grep ^C update.out | cut -b4- ; \
2005-03-11 08:24:23 +00:00
fi ; \
2005-12-02 01:01:11 +00:00
rm -f update.out; \
2003-02-04 16:35:12 +00:00
else \
2005-12-02 01:01:11 +00:00
echo "Not under version control" ; \
2003-02-04 16:35:12 +00:00
fi
2005-04-27 16:27:53 +00:00
NEWHEADERS = $( notdir $( wildcard include/asterisk/*.h) )
OLDHEADERS = $( filter-out $( NEWHEADERS) ,$( notdir $( wildcard $( DESTDIR) $( ASTHEADERDIR) /*.h) ) )
2008-04-18 20:01:47 +00:00
installdirs :
2003-10-25 17:27:53 +00:00
mkdir -p $( DESTDIR) $( MODULES_DIR)
mkdir -p $( DESTDIR) $( ASTSBINDIR)
mkdir -p $( DESTDIR) $( ASTETCDIR)
mkdir -p $( DESTDIR) $( ASTBINDIR)
mkdir -p $( DESTDIR) $( ASTVARRUNDIR)
mkdir -p $( DESTDIR) $( ASTSPOOLDIR) /voicemail
2005-05-04 19:33:33 +00:00
mkdir -p $( DESTDIR) $( ASTSPOOLDIR) /dictate
2005-02-27 19:07:46 +00:00
mkdir -p $( DESTDIR) $( ASTSPOOLDIR) /system
2004-09-07 01:49:08 +00:00
mkdir -p $( DESTDIR) $( ASTSPOOLDIR) /tmp
2005-03-12 05:37:32 +00:00
mkdir -p $( DESTDIR) $( ASTSPOOLDIR) /meetme
2005-11-21 01:53:44 +00:00
mkdir -p $( DESTDIR) $( ASTSPOOLDIR) /monitor
2008-04-18 20:01:47 +00:00
bininstall : _all installdirs $( SUBDIRS_INSTALL )
2006-08-21 02:11:39 +00:00
$( INSTALL) -m 755 main/asterisk $( DESTDIR) $( ASTSBINDIR) /
2006-06-22 10:38:45 +00:00
$( LN) -sf asterisk $( DESTDIR) $( ASTSBINDIR) /rasterisk
2005-10-25 12:47:54 +00:00
$( INSTALL) -m 755 contrib/scripts/astgenkey $( DESTDIR) $( ASTSBINDIR) /
2006-05-11 10:12:34 +00:00
$( INSTALL) -m 755 contrib/scripts/autosupport $( DESTDIR) $( ASTSBINDIR) /
2004-01-12 03:19:25 +00:00
if [ ! -f $( DESTDIR) $( ASTSBINDIR) /safe_asterisk ] ; then \
2007-05-11 16:37:16 +00:00
cat contrib/scripts/safe_asterisk | sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > $( DESTDIR) $( ASTSBINDIR) /safe_asterisk ; \
2005-09-12 04:06:52 +00:00
chmod 755 $( DESTDIR) $( ASTSBINDIR) /safe_asterisk; \
2004-01-12 03:15:34 +00:00
fi
2005-10-25 12:47:54 +00:00
$( INSTALL) -d $( DESTDIR) $( ASTHEADERDIR)
2009-04-08 13:24:48 +00:00
$( INSTALL) -d $( DESTDIR) $( ASTHEADERDIR) /doxygen
2006-06-07 19:05:35 +00:00
$( INSTALL) -m 644 include/asterisk.h $( DESTDIR) $( includedir)
2005-10-25 12:47:54 +00:00
$( INSTALL) -m 644 include/asterisk/*.h $( DESTDIR) $( ASTHEADERDIR)
2009-04-08 13:24:48 +00:00
$( INSTALL) -m 644 include/asterisk/doxygen/*.h $( DESTDIR) $( ASTHEADERDIR) /doxygen
2005-04-27 05:46:32 +00:00
if [ -n " $( OLDHEADERS) " ] ; then \
rm -f $( addprefix $( DESTDIR) $( ASTHEADERDIR) /,$( OLDHEADERS) ) ; \
fi
2008-11-01 21:10:07 +00:00
mkdir -p $( DESTDIR) $( ASTDATADIR) /documentation
mkdir -p $( DESTDIR) $( ASTDATADIR) /documentation/thirdparty
2003-10-25 17:27:53 +00:00
mkdir -p $( DESTDIR) $( ASTLOGDIR) /cdr-csv
2005-03-28 20:48:24 +00:00
mkdir -p $( DESTDIR) $( ASTLOGDIR) /cdr-custom
2009-06-26 15:28:53 +00:00
mkdir -p $( DESTDIR) $( ASTLOGDIR) /cel-csv
mkdir -p $( DESTDIR) $( ASTLOGDIR) /cel-custom
2006-04-15 23:37:29 +00:00
mkdir -p $( DESTDIR) $( ASTDATADIR) /keys
mkdir -p $( DESTDIR) $( ASTDATADIR) /firmware
mkdir -p $( DESTDIR) $( ASTDATADIR) /firmware/iax
2004-07-19 15:52:57 +00:00
mkdir -p $( DESTDIR) $( ASTMANDIR) /man8
2008-11-18 23:39:41 +00:00
$( INSTALL) -m 644 doc/core-*.xml $( DESTDIR) $( ASTDATADIR) /documentation
2009-08-25 02:54:07 +00:00
$( INSTALL) -m 644 doc/appdocsxml.dtd $( DESTDIR) $( ASTDATADIR) /documentation
2006-04-15 23:37:29 +00:00
$( INSTALL) -m 644 keys/iaxtel.pub $( DESTDIR) $( ASTDATADIR) /keys
$( INSTALL) -m 644 keys/freeworlddialup.pub $( DESTDIR) $( ASTDATADIR) /keys
2006-08-21 02:11:39 +00:00
$( INSTALL) -m 644 doc/asterisk.8 $( DESTDIR) $( ASTMANDIR) /man8
2005-10-25 12:47:54 +00:00
$( INSTALL) -m 644 contrib/scripts/astgenkey.8 $( DESTDIR) $( ASTMANDIR) /man8
$( INSTALL) -m 644 contrib/scripts/autosupport.8 $( DESTDIR) $( ASTMANDIR) /man8
$( INSTALL) -m 644 contrib/scripts/safe_asterisk.8 $( DESTDIR) $( ASTMANDIR) /man8
2006-10-24 05:24:32 +00:00
if [ -f contrib/firmware/iax/iaxy.bin ] ; then \
$( INSTALL) -m 644 contrib/firmware/iax/iaxy.bin $( DESTDIR) $( ASTDATADIR) /firmware/iax/iaxy.bin; \
fi
2006-04-29 11:42:31 +00:00
2006-06-22 12:33:50 +00:00
$(SUBDIRS_INSTALL) :
2008-08-11 16:14:29 +00:00
@DESTDIR= " $( DESTDIR) " ASTSBINDIR = " $( ASTSBINDIR) " $( SUBMAKE) -C $( @:-install= ) install
2005-05-01 01:43:44 +00:00
2007-12-10 04:18:07 +00:00
NEWMODS := $( foreach d,$( MOD_SUBDIRS) ,$( notdir $( wildcard $( d) /*.so) ) )
2005-05-01 01:43:44 +00:00
OLDMODS = $( filter-out $( NEWMODS) ,$( notdir $( wildcard $( DESTDIR) $( MODULES_DIR) /*.so) ) )
oldmodcheck :
2005-04-27 16:27:53 +00:00
@if [ -n " $( OLDMODS) " ] ; then \
echo " WARNING WARNING WARNING" ; \
echo "" ; \
echo " Your Asterisk modules directory, located at" ; \
echo " $( DESTDIR) $( MODULES_DIR) " ; \
echo " contains modules that were not installed by this " ; \
echo " version of Asterisk. Please ensure that these" ; \
echo " modules are compatible with this version before" ; \
echo " attempting to run Asterisk." ; \
echo "" ; \
for f in $( OLDMODS) ; do \
echo " $$ f " ; \
done ; \
echo "" ; \
echo " WARNING WARNING WARNING" ; \
fi
2003-02-04 16:35:12 +00:00
2008-02-26 18:10:20 +00:00
badshell :
i f n e q ( $( findstring ~,$ ( DESTDIR ) ) , )
@ e c h o "Your shell doesn't do ~ expansion when expected (specifically, when doing \"make install DESTDIR=~/path\")."
@ e c h o "Try replacing ~ with \$$HOME, as in \"make install DESTDIR=\$$HOME/path\"."
@ e x i t 1
e n d i f
2008-11-02 05:47:13 +00:00
install : badshell datafiles bininstall
2005-09-30 14:48:41 +00:00
@if [ -x /usr/sbin/asterisk-post-install ] ; then \
/usr/sbin/asterisk-post-install $( DESTDIR) . ; \
fi
2006-04-29 11:42:31 +00:00
@echo " +---- Asterisk Installation Complete -------+"
@echo " + +"
@echo " + YOU MUST READ THE SECURITY DOCUMENT +"
@echo " + +"
@echo " + Asterisk has successfully been installed. +"
@echo " + If you would like to install the sample +"
@echo " + configuration files (overwriting any +"
@echo " + existing config files), run: +"
@echo " + +"
2007-11-05 18:00:24 +00:00
@echo " + $( mK) samples + "
2006-04-29 11:42:31 +00:00
@echo " + +"
@echo " +----------------- or ---------------------+"
@echo " + +"
@echo " + You can go ahead and install the asterisk +"
@echo " + program documentation now or later run: +"
@echo " + +"
2007-11-05 18:00:24 +00:00
@echo " + $( mK) progdocs + "
2006-04-29 11:42:31 +00:00
@echo " + +"
@echo " + **Note** This requires that you have +"
@echo " + doxygen installed on your local system +"
@echo " +-------------------------------------------+"
@$( MAKE) -s oldmodcheck
2003-02-04 16:35:12 +00:00
2008-10-01 14:44:12 +00:00
isntall : install
2006-09-22 23:45:14 +00:00
upgrade : bininstall
2003-02-04 16:35:12 +00:00
2007-11-05 19:22:56 +00:00
# XXX why *.adsi is installed first ?
2005-08-23 02:30:30 +00:00
adsi :
2007-11-05 19:22:56 +00:00
@echo Installing adsi config files...
@mkdir -p $( DESTDIR) $( ASTETCDIR)
@for x in configs/*.adsi; do \
dst = " $( DESTDIR) $( ASTETCDIR) /` $( BASENAME) $$ x` " ; \
if [ -f $$ { dst} ] ; then \
echo " Overwriting $$ x " ; \
else \
echo " Installing $$ x " ; \
2002-06-21 01:40:13 +00:00
fi ; \
2007-11-05 19:22:56 +00:00
$( INSTALL) -m 644 $$ x $( DESTDIR) $( ASTETCDIR) /` $( BASENAME) $$ x` ; \
2002-06-21 01:40:13 +00:00
done
2005-08-23 02:30:30 +00:00
samples : adsi
2007-11-05 19:22:56 +00:00
@echo Installing other config files...
@mkdir -p $( DESTDIR) $( ASTETCDIR)
@for x in configs/*.sample; do \
dst = " $( DESTDIR) $( ASTETCDIR) /` $( BASENAME) $$ x .sample` " ; \
if [ -f $$ { dst} ] ; then \
2004-11-19 14:04:57 +00:00
if [ " $( OVERWRITE) " = "y" ] ; then \
2007-11-05 19:22:56 +00:00
if cmp -s $$ { dst} $$ x ; then \
2004-11-20 06:47:33 +00:00
echo " Config file $$ x is unchanged " ; \
continue ; \
fi ; \
2007-11-05 19:22:56 +00:00
mv -f $$ { dst} $$ { dst} .old ; \
2004-11-19 14:04:57 +00:00
else \
echo " Skipping config file $$ x " ; \
continue ; \
fi ; \
2000-01-05 20:03:55 +00:00
fi ; \
2007-11-05 19:22:56 +00:00
echo " Installing file $$ x " ; \
$( INSTALL) -m 644 $$ x $$ { dst} ; \
2000-01-05 20:03:55 +00:00
done
2007-11-05 19:22:56 +00:00
@if [ " $( OVERWRITE) " = "y" ] || [ ! -f $( DESTDIR) $( ASTCONFPATH) ] ; then \
echo "Creating asterisk.conf" ; \
2005-11-08 00:08:09 +00:00
( \
2007-12-09 16:47:25 +00:00
echo "[directories](!) ; remove the (!) to enable this" ; \
2005-11-08 00:08:09 +00:00
echo " astetcdir => $( ASTETCDIR) " ; \
echo " astmoddir => $( MODULES_DIR) " ; \
echo " astvarlibdir => $( ASTVARLIBDIR) " ; \
2007-09-24 22:06:19 +00:00
echo " astdbdir => $( ASTDBDIR) " ; \
echo " astkeydir => $( ASTKEYDIR) " ; \
2006-04-15 22:53:53 +00:00
echo " astdatadir => $( ASTDATADIR) " ; \
2005-11-08 00:08:09 +00:00
echo " astagidir => $( AGI_DIR) " ; \
echo " astspooldir => $( ASTSPOOLDIR) " ; \
echo " astrundir => $( ASTVARRUNDIR) " ; \
echo " astlogdir => $( ASTLOGDIR) " ; \
echo "" ; \
2008-11-01 21:10:07 +00:00
echo "[options]" ; \
2007-10-31 18:09:52 +00:00
echo ";verbose = 3" ; \
echo ";debug = 3" ; \
echo ";alwaysfork = yes ; same as -F at startup" ; \
echo ";nofork = yes ; same as -f at startup" ; \
echo ";quiet = yes ; same as -q at startup" ; \
echo ";timestamp = yes ; same as -T at startup" ; \
echo ";execincludes = yes ; support #exec in config files" ; \
echo ";console = yes ; Run as console (same as -c at startup)" ; \
echo ";highpriority = yes ; Run realtime priority (same as -p at startup)" ; \
echo ";initcrypto = yes ; Initialize crypto keys (same as -i at startup)" ; \
echo ";nocolor = yes ; Disable console colors" ; \
echo ";dontwarn = yes ; Disable some warnings" ; \
echo ";dumpcore = yes ; Dump core on crash (same as -g at startup)" ; \
echo ";languageprefix = yes ; Use the new sound prefix path syntax" ; \
2007-01-13 16:47:01 +00:00
echo ";internal_timing = yes" ; \
2007-02-02 15:30:12 +00:00
echo ";systemname = my_system_name ; prefix uniqueid with a system name for global uniqueness issues" ; \
2007-05-11 21:15:30 +00:00
echo ";autosystemname = yes ; automatically set systemname to hostname - uses 'localhost' on failure, or systemname if set" ; \
2007-10-18 22:03:03 +00:00
echo ";maxcalls = 10 ; Maximum amount of calls allowed" ; \
echo ";maxload = 0.9 ; Asterisk stops accepting new calls if the load average exceed this limit" ; \
echo ";maxfiles = 1000 ; Maximum amount of openfiles" ; \
echo ";minmemfree = 1 ; in MBs, Asterisk stops accepting new calls if the amount of free memory falls below this watermark" ; \
echo ";cache_record_files = yes ; Cache recorded sound files to another directory during recording" ; \
echo ";record_cache_dir = /tmp ; Specify cache directory (used in cnjunction with cache_record_files)" ; \
echo ";transmit_silence_during_record = yes ; Transmit SLINEAR silence while a channel is being recorded" ; \
2008-03-25 14:39:45 +00:00
echo ";transmit_silence = yes ; Transmit SLINEAR silence while a channel is being recorded or DTMF is being generated" ; \
2007-10-18 22:03:03 +00:00
echo ";transcode_via_sln = yes ; Build transcode paths via SLINEAR, instead of directly" ; \
echo ";runuser = asterisk ; The user to run as" ; \
echo ";rungroup = asterisk ; The group to run as" ; \
2008-08-25 23:13:32 +00:00
echo ";lightbackground = yes ; If your terminal is set for a light-colored background" ; \
2008-11-01 21:10:07 +00:00
echo "documentation_language = en_US ; Set the Language you want Documentation displayed in. Value is in the same format as locale names" ; \
2009-01-13 23:00:27 +00:00
echo ";hideconnect = yes ; Hide messages displayed when a remote console connects and disconnects" ; \
2007-10-18 22:03:03 +00:00
echo "" ; \
2005-11-08 00:08:09 +00:00
echo "; Changing the following lines may compromise your security." ; \
echo ";[files]" ; \
echo ";astctlpermissions = 0660" ; \
echo ";astctlowner = root" ; \
echo ";astctlgroup = apache" ; \
echo ";astctl = asterisk.ctl" ; \
2008-06-03 22:05:16 +00:00
echo "" ; \
echo "[compat]" ; \
echo "pbx_realtime=1.6" ; \
echo "res_agi=1.6" ; \
echo "app_set=1.6" ; \
2005-11-08 00:08:09 +00:00
) > $( DESTDIR) $( ASTCONFPATH) ; \
2004-11-19 14:04:57 +00:00
else \
echo "Skipping asterisk.conf creation" ; \
fi
2003-10-25 17:27:53 +00:00
mkdir -p $( DESTDIR) $( ASTSPOOLDIR) /voicemail/default/1234/INBOX
2007-01-13 16:47:01 +00:00
build_tools/make_sample_voicemail $( DESTDIR) /$( ASTDATADIR) $( DESTDIR) /$( ASTSPOOLDIR)
2008-07-10 20:56:20 +00:00
@mkdir -p $( DESTDIR) $( ASTDATADIR) /phoneprov
@for x in phoneprov/*; do \
dst = " $( DESTDIR) $( ASTDATADIR) / $$ x " ; \
if [ -f $$ { dst} ] ; then \
if [ " $( OVERWRITE) " = "y" ] ; then \
if cmp -s $$ { dst} $$ x ; then \
echo " Config file $$ x is unchanged " ; \
continue ; \
fi ; \
mv -f $$ { dst} $$ { dst} .old ; \
else \
echo " Skipping config file $$ x " ; \
continue ; \
fi ; \
fi ; \
echo " Installing file $$ x " ; \
$( INSTALL) -m 644 $$ x $$ { dst} ; \
done
2001-09-24 21:29:03 +00:00
2002-06-21 01:40:13 +00:00
webvmail :
2005-07-12 02:08:03 +00:00
@[ -d $( DESTDIR) $( HTTP_DOCSDIR) / ] || ( printf "http docs directory not found.\nUpdate assignment of variable HTTP_DOCSDIR in Makefile!\n" && exit 1 )
@[ -d $( DESTDIR) $( HTTP_CGIDIR) ] || ( printf "cgi-bin directory not found.\nUpdate assignment of variable HTTP_CGIDIR in Makefile!\n" && exit 1 )
2005-10-25 12:47:54 +00:00
$( INSTALL) -m 4755 -o root -g root contrib/scripts/vmail.cgi $( DESTDIR) $( HTTP_CGIDIR) /vmail.cgi
2005-07-12 02:08:03 +00:00
mkdir -p $( DESTDIR) $( HTTP_DOCSDIR) /_asterisk
2002-06-21 01:40:13 +00:00
for x in images/*.gif; do \
2005-10-25 12:47:54 +00:00
$( INSTALL) -m 644 $$ x $( DESTDIR) $( HTTP_DOCSDIR) /_asterisk/; \
2002-06-21 01:40:13 +00:00
done
@echo " +--------- Asterisk Web Voicemail ----------+"
@echo " + +"
@echo " + Asterisk Web Voicemail is installed in +"
2005-07-12 02:08:03 +00:00
@echo " + your cgi-bin directory: +"
@echo " + $( DESTDIR) $( HTTP_CGIDIR) "
@echo " + IT USES A SETUID ROOT PERL SCRIPT, SO +"
@echo " + IF YOU DON'T LIKE THAT, UNINSTALL IT! +"
@echo " + +"
@echo " + Other static items have been stored in: +"
@echo " + $( DESTDIR) $( HTTP_DOCSDIR) "
@echo " + +"
@echo " + If these paths do not match your httpd +"
@echo " + installation, correct the definitions +"
@echo " + in your Makefile of HTTP_CGIDIR and +"
@echo " + HTTP_DOCSDIR +"
2002-06-21 01:40:13 +00:00
@echo " + +"
@echo " +-------------------------------------------+"
2001-09-24 21:29:03 +00:00
progdocs :
2005-11-17 21:45:03 +00:00
( cat contrib/asterisk-ng-doxygen; echo " HAVE_DOT= $( HAVEDOT) " ; \
2005-12-05 06:50:04 +00:00
echo " PROJECT_NUMBER= $( ASTERISKVERSION) " ) | doxygen -
2002-06-21 01:40:13 +00:00
2008-07-24 04:51:42 +00:00
install-logrotate :
if [ ! -d $( ASTETCDIR) /../logrotate.d ] ; then \
mkdir $( ASTETCDIR) /../logrotate.d ; \
fi
2008-07-24 05:21:00 +00:00
sed 's#__LOGDIR__#$(ASTLOGDIR)#g' < contrib/scripts/asterisk.logrotate | sed 's#__SBINDIR__#$(ASTSBINDIR)#g' > contrib/scripts/asterisk.logrotate.tmp
install -m 0644 contrib/scripts/asterisk.logrotate.tmp $( ASTETCDIR) /../logrotate.d/asterisk
rm -f contrib/scripts/asterisk.logrotate.tmp
2008-07-24 04:51:42 +00:00
2002-06-21 01:40:13 +00:00
config :
2006-08-21 02:11:39 +00:00
@if [ " ${ OSARCH } " = "linux-gnu" ] ; then \
2006-05-05 22:49:55 +00:00
if [ -f /etc/redhat-release -o -f /etc/fedora-release ] ; then \
2009-03-05 19:05:20 +00:00
cat contrib/init.d/rc.redhat.asterisk | sed 's|__ASTERISK_ETC_DIR__|$(ASTETCDIR)|;s|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > $( DESTDIR) /etc/rc.d/init.d/asterisk ; \
2009-02-21 13:13:35 +00:00
chmod 755 $( DESTDIR) /etc/rc.d/init.d/asterisk; \
2007-10-15 20:16:48 +00:00
if [ -z " $( DESTDIR) " ] ; then /sbin/chkconfig --add asterisk; fi ; \
2006-05-05 22:49:55 +00:00
elif [ -f /etc/debian_version ] ; then \
2009-03-05 19:05:20 +00:00
cat contrib/init.d/rc.debian.asterisk | sed 's|__ASTERISK_ETC_DIR__|$(ASTETCDIR)|;s|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > $( DESTDIR) /etc/init.d/asterisk ; \
2009-02-21 13:13:35 +00:00
chmod 755 $( DESTDIR) /etc/init.d/asterisk; \
2009-08-25 02:41:17 +00:00
if [ -z " $( DESTDIR) " ] ; then /usr/sbin/update-rc.d asterisk defaults 50 91; fi ; \
2006-05-05 22:49:55 +00:00
elif [ -f /etc/gentoo-release ] ; then \
2009-03-05 19:05:20 +00:00
cat contrib/init.d/rc.gentoo.asterisk | sed 's|__ASTERISK_ETC_DIR__|$(ASTETCDIR)|;s|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > $( DESTDIR) /etc/init.d/asterisk ; \
2009-02-21 13:13:35 +00:00
chmod 755 $( DESTDIR) /etc/init.d/asterisk; \
2007-10-15 20:16:48 +00:00
if [ -z " $( DESTDIR) " ] ; then /sbin/rc-update add asterisk default; fi ; \
2007-11-15 18:49:31 +00:00
elif [ -f /etc/mandrake-release -o -f /etc/mandriva-release ] ; then \
2009-03-05 19:05:20 +00:00
cat contrib/init.d/rc.mandriva.asterisk | sed 's|__ASTERISK_ETC_DIR__|$(ASTETCDIR)|;s|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > $( DESTDIR) /etc/rc.d/init.d/asterisk ; \
2009-02-21 13:13:35 +00:00
chmod 755 $( DESTDIR) /etc/rc.d/init.d/asterisk; \
2007-10-15 20:16:48 +00:00
if [ -z " $( DESTDIR) " ] ; then /sbin/chkconfig --add asterisk; fi ; \
2006-05-05 22:49:55 +00:00
elif [ -f /etc/SuSE-release -o -f /etc/novell-release ] ; then \
2009-03-05 19:05:20 +00:00
cat contrib/init.d/rc.suse.asterisk | sed 's|__ASTERISK_ETC_DIR__|$(ASTETCDIR)|;s|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > $( DESTDIR) /etc/init.d/asterisk ; \
2009-02-21 13:13:35 +00:00
chmod 755 $( DESTDIR) /etc/init.d/asterisk; \
2007-10-15 20:16:48 +00:00
if [ -z " $( DESTDIR) " ] ; then /sbin/chkconfig --add asterisk; fi ; \
2008-11-18 21:01:46 +00:00
elif [ -f /etc/arch-release -o -f /etc/arch-release ] ; then \
2009-03-05 19:05:20 +00:00
cat contrib/init.d/rc.archlinux.asterisk | sed 's|__ASTERISK_ETC_DIR__|$(ASTETCDIR)|;s|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > $( DESTDIR) /etc/rc.d/asterisk ; \
2009-02-21 13:13:35 +00:00
chmod 755 $( DESTDIR) /etc/rc.d/asterisk; \
2006-05-05 22:49:55 +00:00
elif [ -f /etc/slackware-version ] ; then \
2009-05-29 18:15:15 +00:00
echo "Slackware is not currently supported, although an init script does exist for it." ; \
2006-05-05 22:49:55 +00:00
else \
echo "We could not install init scripts for your distribution." ; \
fi \
else \
echo "We could not install init scripts for your operating system." ; \
fi
2002-06-21 01:40:13 +00:00
2006-06-07 20:54:30 +00:00
sounds :
$( MAKE) -C sounds all
2005-01-17 04:48:51 +00:00
# If the cleancount has been changed, force a make clean.
# .cleancount is the global clean count, and .lastclean is the
2005-04-01 21:18:39 +00:00
# last clean count we had
2005-01-17 04:48:51 +00:00
cleantest :
2007-08-22 18:25:58 +00:00
@cmp -s .cleancount .lastclean || $( MAKE) clean
2006-02-01 18:39:41 +00:00
2006-06-22 15:38:13 +00:00
$(SUBDIRS_UNINSTALL) :
2008-08-11 16:14:29 +00:00
@$( SUBMAKE) -C $( @:-uninstall= ) uninstall
2006-06-22 15:38:13 +00:00
_uninstall : $( SUBDIRS_UNINSTALL )
2006-02-01 18:39:41 +00:00
rm -f $( DESTDIR) $( MODULES_DIR) /*
rm -f $( DESTDIR) $( ASTSBINDIR) /*asterisk*
rm -f $( DESTDIR) $( ASTSBINDIR) /astgenkey
rm -f $( DESTDIR) $( ASTSBINDIR) /autosupport
rm -rf $( DESTDIR) $( ASTHEADERDIR)
2006-04-15 23:37:29 +00:00
rm -rf $( DESTDIR) $( ASTDATADIR) /firmware
2007-07-11 18:21:23 +00:00
rm -f $( DESTDIR) $( ASTMANDIR) /man8/asterisk.8
rm -f $( DESTDIR) $( ASTMANDIR) /man8/astgenkey.8
rm -f $( DESTDIR) $( ASTMANDIR) /man8/autosupport.8
rm -f $( DESTDIR) $( ASTMANDIR) /man8/safe_asterisk.8
2006-06-07 21:05:05 +00:00
$( MAKE) -C sounds uninstall
2006-02-01 18:39:41 +00:00
uninstall : _uninstall
@echo " +--------- Asterisk Uninstall Complete -----+"
@echo " + Asterisk binaries, sounds, man pages, +"
@echo " + headers, modules, and firmware builds, +"
@echo " + have all been uninstalled. +"
@echo " + +"
@echo " + To remove ALL traces of Asterisk, +"
@echo " + including configuration, spool +"
@echo " + directories, and logs, run the following +"
@echo " + command: +"
@echo " + +"
2007-11-05 18:00:24 +00:00
@echo " + $( mK) uninstall-all + "
2006-02-01 18:39:41 +00:00
@echo " +-------------------------------------------+"
uninstall-all : _uninstall
rm -rf $( DESTDIR) $( ASTLIBDIR)
rm -rf $( DESTDIR) $( ASTVARLIBDIR)
2006-04-15 22:53:53 +00:00
rm -rf $( DESTDIR) $( ASTDATADIR)
2006-02-01 18:39:41 +00:00
rm -rf $( DESTDIR) $( ASTSPOOLDIR)
rm -rf $( DESTDIR) $( ASTETCDIR)
rm -rf $( DESTDIR) $( ASTLOGDIR)
2006-04-24 17:11:45 +00:00
2006-11-11 15:33:06 +00:00
menuconfig : menuselect
2008-03-05 23:21:52 +00:00
cmenuconfig : cmenuselect
2007-03-15 23:56:10 +00:00
gmenuconfig : gmenuselect
2008-03-05 22:50:00 +00:00
nmenuconfig : nmenuselect
2008-06-28 14:34:07 +00:00
menuselect : menuselect /cmenuselect menuselect /nmenuselect menuselect /gmenuselect
@if [ -x menuselect/nmenuselect ] ; then \
$( MAKE) nmenuselect; \
elif [ -x menuselect/cmenuselect ] ; then \
$( MAKE) cmenuselect; \
elif [ -x menuselect/gmenuselect ] ; then \
$( MAKE) gmenuselect; \
2008-06-28 14:46:08 +00:00
else \
2008-06-28 14:56:56 +00:00
echo "No menuselect user interface found. Install ncurses," ; \
echo "newt or GTK libraries to build one and re-rerun" ; \
echo "'make menuselect'." ; \
2008-06-28 14:34:07 +00:00
fi
2006-04-24 17:11:45 +00:00
2008-03-05 23:21:52 +00:00
cmenuselect : menuselect /cmenuselect menuselect -tree
2008-05-05 20:22:08 +00:00
-@menuselect/cmenuselect menuselect.makeopts $( GLOBAL_MAKEOPTS) $( USER_MAKEOPTS) && ( echo "menuselect changes saved!" ; rm -f channels/h323/Makefile.ast main/asterisk) || echo "menuselect changes NOT saved!"
2008-03-05 23:21:52 +00:00
2007-03-15 23:56:10 +00:00
gmenuselect : menuselect /gmenuselect menuselect -tree
2008-05-05 20:22:08 +00:00
-@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!"
2007-03-15 23:56:10 +00:00
2008-03-05 22:50:00 +00:00
nmenuselect : menuselect /nmenuselect menuselect -tree
2008-05-05 20:22:08 +00:00
-@menuselect/nmenuselect menuselect.makeopts $( GLOBAL_MAKEOPTS) $( USER_MAKEOPTS) && ( echo "menuselect changes saved!" ; rm -f channels/h323/Makefile.ast main/asterisk) || echo "menuselect changes NOT saved!"
2008-03-05 22:50:00 +00:00
2007-12-18 08:20:17 +00:00
# options for make in menuselect/
MAKE_MENUSELECT = CC = " $( HOST_CC) " CXX = " $( CXX) " LD = "" AR = "" RANLIB = "" CFLAGS = "" $( MAKE) -C menuselect CONFIGURE_SILENT = "--silent"
2007-11-07 11:15:42 +00:00
menuselect/menuselect : menuselect /makeopts
2009-06-09 18:08:53 +00:00
+$( MAKE_MENUSELECT) menuselect
2006-04-24 17:11:45 +00:00
2008-03-05 23:21:52 +00:00
menuselect/cmenuselect : menuselect /makeopts
2009-06-09 18:08:53 +00:00
+$( MAKE_MENUSELECT) cmenuselect
2008-03-05 23:21:52 +00:00
2007-11-07 11:15:42 +00:00
menuselect/gmenuselect : menuselect /makeopts
2009-06-09 18:08:53 +00:00
+$( MAKE_MENUSELECT) gmenuselect
2007-11-07 11:15:42 +00:00
2008-03-05 22:50:00 +00:00
menuselect/nmenuselect : menuselect /makeopts
2009-06-09 18:08:53 +00:00
+$( MAKE_MENUSELECT) nmenuselect
2008-03-05 22:50:00 +00:00
2008-03-31 17:14:58 +00:00
menuselect/makeopts : makeopts
2009-06-09 18:08:53 +00:00
+$( MAKE_MENUSELECT) makeopts
2007-03-15 23:56:10 +00:00
2009-10-23 16:40:30 +00:00
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 utils /utils .xml agi /agi .xml configure
2006-08-21 02:11:39 +00:00
@echo "Generating input for menuselect ..."
2007-12-17 07:25:35 +00:00
@echo "<?xml version=\"1.0\"?>" > $@
@echo >> $@
@echo "<menu name=\"Asterisk Module and Build Option Selection\">" >> $@
2009-06-09 18:08:53 +00:00
+@for dir in $( sort $( filter-out main,$( MOD_SUBDIRS) ) ) ; do $( SILENTMAKE) -C $$ { dir} SUBDIR = $$ { dir} moduleinfo >> $@ ; done
2007-12-17 07:25:35 +00:00
@cat build_tools/cflags.xml >> $@
2009-06-09 18:08:53 +00:00
+@for dir in $( sort $( filter-out main,$( MOD_SUBDIRS) ) ) ; do $( SILENTMAKE) -C $$ { dir} SUBDIR = $$ { dir} makeopts >> $@ ; done
2008-03-19 17:15:14 +00:00
@if [ " ${ AST_DEVMODE } " = "yes" ] ; then \
cat build_tools/cflags-devmode.xml >> $@ ; \
fi
2009-10-22 19:33:32 +00:00
@cat utils/utils.xml >> $@
2009-10-23 16:40:30 +00:00
@cat agi/agi.xml >> $@
2007-12-17 07:25:35 +00:00
@cat build_tools/embed_modules.xml >> $@
@cat sounds/sounds.xml >> $@
@echo "</menu>" >> $@
2006-06-22 15:38:13 +00:00
2007-12-04 18:15:17 +00:00
pdf : asterisk .pdf
2007-07-27 23:16:04 +00:00
asterisk.pdf :
$( MAKE) -C doc/tex asterisk.pdf
2007-03-15 22:29:45 +00:00
2009-10-23 14:02:42 +00:00
.PHONY : menuselect
.PHONY : main
.PHONY : sounds
.PHONY : clean
.PHONY : dist -clean
.PHONY : distclean
.PHONY : all
.PHONY : prereqs
.PHONY : cleantest
.PHONY : uninstall
.PHONY : _uninstall
.PHONY : uninstall -all
.PHONY : pdf
.PHONY : dont -optimize
.PHONY : badshell
.PHONY : installdirs
.PHONY : validate -docs
.PHONY : _clean
.PHONY : $( SUBDIRS_INSTALL )
.PHONY : $( SUBDIRS_DIST_CLEAN )
.PHONY : $( SUBDIRS_CLEAN )
.PHONY : $( SUBDIRS_UNINSTALL )
.PHONY : $( SUBDIRS )
.PHONY : $( MOD_SUBDIRS_EMBED_LDSCRIPT )
.PHONY : $( MOD_SUBDIRS_EMBED_LDFLAGS )
.PHONY : $( MOD_SUBDIRS_EMBED_LIBS )
2008-07-30 15:32:14 +00:00
FORCE :