mirror of https://github.com/sipwise/sems.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
377 lines
9.2 KiB
377 lines
9.2 KiB
ifeq ($(makefile_defs),"1")
|
|
else
|
|
makefile_defs="1"
|
|
export makefile_defs
|
|
|
|
GIT := $(shell which git)
|
|
|
|
#ifneq ($(GIT),)
|
|
# SCM_REV := $(shell if git --help describe |grep dirty 2>&1 >/dev/null ; \
|
|
# then git describe --always --dirty 2>/dev/null; \
|
|
# else git describe --always 2>/dev/null; fi)
|
|
#endif
|
|
|
|
#version number
|
|
VERSION = 1
|
|
PATCHLEVEL = 6
|
|
SUBLEVEL = 0
|
|
|
|
ifneq ($(SCM_REV),)
|
|
RELEASE := $(SCM_REV)
|
|
else
|
|
REL_VERSION := $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)
|
|
RELEASE := $(REL_VERSION)$(EXTRAVERSION)
|
|
endif
|
|
|
|
APP_NAME ?= sems
|
|
SYSTEM_SAMPLECLOCK_RATE ?= 32000LL
|
|
|
|
CPPFLAGS += -D_DEBUG \
|
|
-D_THREAD_SAFE -D_REENTRANT \
|
|
-DSEMS_VERSION='"$(RELEASE)"' -DARCH='"$(ARCH)"'\
|
|
-DOS='"$(OS)"' \
|
|
-DSYSTEM_SAMPLECLOCK_RATE=$(SYSTEM_SAMPLECLOCK_RATE) \
|
|
-DSEMS_APP_NAME='"$(APP_NAME)"'
|
|
# -DMAX_RTP_SESSIONS=8192 \
|
|
# -DSUPPORT_IPV6 \
|
|
# -DNO_THREADID_LOG \
|
|
# -DLOG_PRETTY_FUNCTION \
|
|
# -DLOG_LOC_DATA_ATEND
|
|
|
|
|
|
# compile with session thread pool support?
|
|
# use this for very high concurrent call count
|
|
# applications (e.g. for signaling only)
|
|
# if compiled with thread pool, there will be a
|
|
# thread pool of configurable size processing the
|
|
# signaling and application logic of the calls.
|
|
# if compiled without thread pool support, every
|
|
# session will have its own thread.
|
|
#
|
|
#USE_THREADPOOL = yes
|
|
|
|
# compile with spandsp DTMF detection? see soft-switch.org
|
|
# this needs a fairly new version of spandsp - tested with 0.0.4pre11
|
|
# will not work with spandsp 0.0.2 .
|
|
# (which means that current debian and gentoo packages don't work)
|
|
#
|
|
#USE_SPANDSP = yes
|
|
# statically link spandsp library?
|
|
# (might need adjusting spandsp lib path LIBSPANDSP_LDIR - may be /usr/lib)
|
|
#LIBSPANDSP_STATIC = yes
|
|
#LIBSPANDSP_LDIR = /usr/local/lib/
|
|
|
|
# compile with sample rate conversion from secret rabbit code?
|
|
# (see http://www.mega-nerd.com/SRC/)
|
|
#
|
|
#USE_LIBSAMPLERATE = yes
|
|
|
|
# compile with internal resampler?
|
|
#
|
|
#
|
|
USE_INTERNAL_RESAMPLER = yes
|
|
|
|
#
|
|
# ZRTP support? (see zfoneproject.com)
|
|
#WITH_ZRTP = yes
|
|
|
|
#
|
|
# exclude some modules from compilation?
|
|
# e.g. python modules:
|
|
|
|
exclude_core_modules = g729 silk
|
|
#exclude_apps_modules = py_sems ivr mailbox pin_collect conf_auth mp3 examples
|
|
|
|
# build in support for monitoring?
|
|
#
|
|
#
|
|
USE_MONITORING=no
|
|
|
|
# are we compiling for the test environment?
|
|
# if so, then this will exclude a list of applications
|
|
# which require a linkage with remote unvisible to us libraries.
|
|
TEST_ENVIRONMENT ?= no
|
|
|
|
# Support for long debug messages? (useful for debugging SIP messages' contents)
|
|
#
|
|
# disable for slight performance gain
|
|
LONG_DEBUG_MESSAGE=yes
|
|
|
|
# Is this a debug build or not?
|
|
debug=no
|
|
|
|
# Propagate all unparsed SIP headers into AmSipReply. Disabled by default
|
|
# because only special applications might need this and it brings higher memory
|
|
# demands and affects performance.
|
|
#PROPAGATE_UNPARSED_REPLY_HEADERS=no
|
|
|
|
|
|
################### end of configuration section #######################
|
|
|
|
LDFLAGS += -lm
|
|
|
|
GETOS=$(COREPATH)/compat/getos
|
|
GETARCH=$(COREPATH)/compat/getarch
|
|
|
|
|
|
OS := $(shell if [ -f $(GETOS) ] ; then $(GETOS); else $(CC) $(EXTRA_CFLAGS) -o $(GETOS) $(GETOS).c && $(GETOS); fi)
|
|
ARCH := $(shell if [ -f $(GETARCH) ] ; then $(GETARCH); else $(CC) $(EXTRA_CFLAGS) -o $(GETARCH) $(GETARCH).c && $(GETARCH); fi)
|
|
|
|
ifdef USE_THREADPOOL
|
|
CPPFLAGS += -DSESSION_THREADPOOL
|
|
endif
|
|
|
|
ifndef USE_SPANDSP
|
|
exclude_core_modules += g722
|
|
endif
|
|
|
|
ifdef USE_MONITORING
|
|
CPPFLAGS += -DUSE_MONITORING
|
|
endif
|
|
|
|
ifndef LONG_DEBUG_MESSAGE
|
|
CPPFLAGS += -DLOG_BUFFER_LEN=2048
|
|
endif
|
|
|
|
ifeq ($(PROPAGATE_UNPARSED_REPLY_HEADERS),yes)
|
|
CPPFLAGS += -DPROPAGATE_UNPARSED_REPLY_HEADERS
|
|
endif
|
|
|
|
# Additions for Solaris support.
|
|
ifeq ($(OS),solaris)
|
|
CPPFLAGS += -DHAVE_SYS_SOCKIO_H -DBSD_COMP -fPIC -include compat/solaris.h
|
|
CFLAGS += -DHAVE_SYS_SOCKIO_H -DBSD_COMP -fPIC -include compat/solaris.h
|
|
# For nanosleep.
|
|
LDFLAGS += -lrt
|
|
# For inet_aton.
|
|
LDFLAGS += -lresolv
|
|
|
|
# I don't have libspeex installed.
|
|
# binrpcctrl does some really weird header stuff that doesn't work.
|
|
exclude_core_modules += binrpcctrl ilbc speex
|
|
endif
|
|
|
|
|
|
|
|
|
|
# fix sparc -> sparc64
|
|
ifeq ($(ARCH),sparc)
|
|
ifeq ($(shell uname -m),sun4u)
|
|
ARCH := sparc64
|
|
endif
|
|
endif
|
|
|
|
# need OS specific for this ?
|
|
CXX = g++
|
|
CC = gcc
|
|
LD = $(CC)
|
|
|
|
CXXFLAGS += -Wall -Wno-reorder -Wno-unused -fPIC -g $(EXTRA_CXXFLAGS)
|
|
CFLAGS += -Wall -fPIC -g $(EXTRA_CFLAGS)
|
|
|
|
# only optimize if releasing, as it slows down the build process
|
|
ifneq ($(debug),yes)
|
|
CXXFLAGS += -O2
|
|
CFLAGS += -O2
|
|
endif
|
|
|
|
ifeq ($(DEBUG_PLAYOUT), yes)
|
|
CPPFLAGS += -DDEBUG_PLAYOUTBUF
|
|
endif
|
|
|
|
ifdef WITH_ZRTP
|
|
CPPFLAGS += -DWITH_ZRTP \
|
|
-DBUILD_ZRTP_MUTEXES \
|
|
-DBUILD_DEFAULT_CACHE -DBUILD_DEFAULT_TIMER -DUNIX -DBUILD_ZRTP_MUTEXES \
|
|
-I/usr/local/include/zrtp
|
|
endif
|
|
|
|
TARGET=
|
|
LIB_LDFLAGS = -shared
|
|
|
|
ifeq ($(LD), clang)
|
|
LDFLAG_DYN=
|
|
LDFLAG_PTHREAD=
|
|
else
|
|
LDFLAG_DYN = -rdynamic
|
|
LDFLAG_PTHREAD = -lpthread
|
|
endif
|
|
|
|
ifeq ($(OS), linux)
|
|
LDFLAGS += -ldl $(LDFLAG_DYN) $(LDFLAG_PTHREAD)
|
|
CPPFLAGS += -DPROPAGATE_COREDUMP_SETTINGS
|
|
else
|
|
ifeq ($(OS), freebsd)
|
|
LDFLAGS += $(LDFLAG_DYN) $(LDFLAG_PTHREAD)
|
|
else
|
|
ifeq ($(OS), openbsd)
|
|
LDFLAGS += $(LDFLAG_DYN) $(LDFLAG_PTHREAD)
|
|
else
|
|
ifeq ($(OS), netbsd)
|
|
LDFLAGS += $(LDFLAG_DYN) $(LDFLAG_PTHREAD)
|
|
else
|
|
ifeq ($(OS), macosx)
|
|
LDFLAGS += $(LDFLAG_DYN) $(LDFLAG_PTHREAD)
|
|
LIB_LDFLAGS = -flat_namespace -undefined suppress -bundle
|
|
CXXFLAGS += -fno-common
|
|
CFLAGS += -fno-common
|
|
|
|
#necessary for sa_len|ss_len|sin_len
|
|
# may be needed on other *BSD
|
|
CPPFLAGS += -DBSD44SOCKETS
|
|
|
|
# add the DarwinPorts directory
|
|
ifneq ($(ARCH), iphone)
|
|
CPPFLAGS += -D__DARWIN_UNIX03
|
|
CPPFLAGS += -I /opt/local/include
|
|
LDFLAGS += -L/opt/local/lib
|
|
endif
|
|
else
|
|
ifeq ($(OS), solaris)
|
|
LDFLAGS+= -fPIC -ldl -lsocket -lnsl $(LDFLAG_PTHREAD)
|
|
TARGET=solaris
|
|
# These don't build on Solaris because of missing Python, invalid make args, or other.
|
|
exclude_app_modules += py_sems py_comp pin_collect mailbox ivr diameter_client conf_auth mp3 cc_acc_xmlrpc xmlrpc2di
|
|
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
LDFLAGS += -lstdc++
|
|
|
|
ifeq ($(ARCH),iphone)
|
|
LDFLAGS += -lgcc_eh
|
|
endif
|
|
|
|
ifdef WITH_ZRTP
|
|
LDFLAGS +=-lzrtp -lbn
|
|
endif
|
|
|
|
LIB_LDFLAGS += $(LDFLAGS)
|
|
|
|
|
|
# install path is $(basedir) $(prefix)
|
|
# example:
|
|
# creating a bin. archive in /tmp, which unpacks in /usr/local
|
|
# basedir=/tmp
|
|
# prefix=/usr/local
|
|
|
|
DESTDIR ?=
|
|
PREFIX ?= /usr/local
|
|
prefix ?= $(PREFIX)
|
|
BASEDIR ?=
|
|
basedir = $(BASEDIR)
|
|
|
|
# Redhat users should use sems.redhat instead of sems
|
|
# the file will be to $(bin_prefix)/$(bin_dir)/sems copied.
|
|
start_script = sems.redhat
|
|
|
|
# install prefixes for various stuff
|
|
cfg_prefix = $(basedir)$(prefix)
|
|
bin_prefix = $(basedir)$(prefix)
|
|
modules_prefix = $(basedir)$(prefix)
|
|
doc_prefix = $(basedir)$(prefix)
|
|
audio_prefix = $(basedir)$(prefix)
|
|
lib_prefix = $(basedir)$(prefix)
|
|
|
|
# dirs
|
|
cfg_dir = etc/$(APP_NAME)/
|
|
|
|
bin_dir = sbin/
|
|
modules_dir = lib/$(APP_NAME)/plug-in/
|
|
audio_dir = lib/$(APP_NAME)/audio/
|
|
lib_dir = lib/$(APP_NAME)/
|
|
|
|
ifeq ($(OS), linux)
|
|
doc_dir = share/doc/$(APP_NAME)/
|
|
man_dir = share/man/
|
|
else
|
|
ifeq ($(OS), freebsd)
|
|
doc_dir = share/doc/$(APP_NAME)/
|
|
man_dir = man/
|
|
else
|
|
ifeq ($(OS), openbsd)
|
|
doc_dir = share/doc/$(APP_NAME)/
|
|
man_dir = man/
|
|
else
|
|
ifeq ($(OS), netbsd)
|
|
doc_dir = share/doc/$(APP_NAME)
|
|
man_dir = man/
|
|
else
|
|
doc_dir = doc/$(APP_NAME)/
|
|
man_dir = man/
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
# target dirs for various stuff
|
|
bin_target = $(prefix)/$(bin_dir)
|
|
cfg_target ?= $(prefix)/$(cfg_dir)
|
|
app_cfg_target = $(cfg_target)etc/
|
|
modules_target = $(prefix)/$(modules_dir)
|
|
audio_target = $(prefix)/$(audio_dir)
|
|
lib_target = $(prefix)/$(lib_dir)
|
|
|
|
ifeq ($(OS), solaris)
|
|
#use GNU versions
|
|
INSTALL ?= ginstall
|
|
TAR ?= gtar
|
|
else
|
|
INSTALL ?= install
|
|
TAR ?= tar
|
|
endif
|
|
|
|
INSTALL_CFG = $(INSTALL) -m 644
|
|
INSTALL_BIN = $(INSTALL) -m 755
|
|
INSTALL_MODULES = $(INSTALL) -m 755
|
|
INSTALL_DOC = $(INSTALL) -m 644
|
|
INSTALL_AUDIO = $(INSTALL) -m 644
|
|
|
|
#export stuff to sub-makes
|
|
export REL_VERSION RELEASE OS ARCH
|
|
export CPPFLAGS CXXFLAGS LDFLAGS CFLAGS LIB_LDFLAGS
|
|
export CXX CC LD
|
|
export DESTDIR PREFIX prefix basedir ser_prefix
|
|
export start_script
|
|
export cfg_prefix bin_prefix modules_prefix doc_prefix audio_prefix lib_prefix
|
|
export cfg_dir bin_dir modules_dir audio_dir lib_dir doc_dir man_dir
|
|
export bin_target cfg_target app_cfg_target modules_target audio_target lib_target
|
|
export INSTALL TAR INSTALL_CFG INSTALL_BIN INSTALL_MODULES INSTALL_DOC INSTALL_AUDIO
|
|
export APP_NAME
|
|
|
|
export USE_SPANDSP LIBSPANDSP_STATIC LIBSPANDSP_LDIR
|
|
export USE_LIBSAMPLERATE USE_INTERNAL_RESAMPLER
|
|
export WITH_ZRTP
|
|
export USE_MONITORING
|
|
export exclude_core_modules exclude_app_modules
|
|
endif # ifeq ($(makefile_defs, 1)
|
|
|
|
mk-install-dirs: $(DESTDIR)$(cfg_target) \
|
|
$(DESTDIR)$(app_cfg_target) \
|
|
$(DESTDIR)$(bin_prefix)/$(bin_dir) \
|
|
$(DESTDIR)$(modules_prefix)/$(modules_dir) \
|
|
$(DESTDIR)$(audio_prefix)/$(audio_dir) \
|
|
$(DESTDIR)$(doc_prefix)/$(doc_dir)
|
|
|
|
$(DESTDIR)$(cfg_target):
|
|
mkdir -p $(DESTDIR)$(cfg_target)
|
|
|
|
$(DESTDIR)$(app_cfg_target):
|
|
mkdir -p $(DESTDIR)$(app_cfg_target)
|
|
|
|
$(DESTDIR)$(bin_prefix)/$(bin_dir):
|
|
mkdir -p $(DESTDIR)$(bin_prefix)/$(bin_dir)
|
|
|
|
$(DESTDIR)$(modules_prefix)/$(modules_dir):
|
|
mkdir -p $(DESTDIR)$(modules_prefix)/$(modules_dir)
|
|
|
|
$(DESTDIR)$(audio_prefix)/$(audio_dir):
|
|
mkdir -p $(DESTDIR)$(audio_prefix)/$(audio_dir)
|
|
|
|
$(DESTDIR)$(doc_prefix)/$(doc_dir):
|
|
mkdir -p $(DESTDIR)$(doc_prefix)/$(doc_dir)
|