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.
sems/Makefile.defs

373 lines
9.1 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
CPPFLAGS += -D_DEBUG \
-D_THREAD_SAFE -D_REENTRANT \
-DSEMS_VERSION='"$(RELEASE)"' -DARCH='"$(ARCH)"'\
-DOS='"$(OS)"' \
-DSYSTEM_SAMPLECLOCK_RATE=32000LL \
-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=yes
# 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-TOUCH = touch # used to create the file first (good to
# make solaris install work)
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-TOUCH 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)