mirror of https://github.com/sipwise/kamailio.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.
230 lines
7.0 KiB
230 lines
7.0 KiB
#!/usr/bin/make -f
|
|
|
|
# Uncomment this to turn on verbose mode.
|
|
#export DH_VERBOSE=1
|
|
|
|
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
|
DPKG_EXPORT_BUILDFLAGS = 1
|
|
|
|
include /usr/share/dpkg/architecture.mk
|
|
include /usr/share/dpkg/buildflags.mk
|
|
include /usr/share/dpkg/pkg-info.mk
|
|
|
|
# Enable parallel builds.
|
|
NUMJOBS = 1
|
|
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
|
|
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
|
|
MAKEFLAGS += -j$(NUMJOBS)
|
|
endif
|
|
|
|
# Modules not in the "main" kamailio package:
|
|
EXCLUDED_MODULES =
|
|
|
|
# Extra modules to skip, because they are not compilable now:
|
|
# - regardless if they go to the main kamailio package or to some module
|
|
# package, they will be excluded from compile and install of all.
|
|
EXTRA_EXCLUDED_MODULES += bdb
|
|
EXTRA_EXCLUDED_MODULES += dbtext
|
|
EXTRA_EXCLUDED_MODULES += dnssec
|
|
EXTRA_EXCLUDED_MODULES += iptrtpproxy
|
|
EXTRA_EXCLUDED_MODULES += java
|
|
EXTRA_EXCLUDED_MODULES += mi_xmlrpc
|
|
EXTRA_EXCLUDED_MODULES += oracle
|
|
EXTRA_EXCLUDED_MODULES += pa
|
|
EXTRA_EXCLUDED_MODULES += purple
|
|
|
|
# Module groups that are packaged in seperate packages (with the name
|
|
# kamailio-$(group_name)-modules).
|
|
# Note: the order is important (should be in dependency order, the one
|
|
# on which other depend first)
|
|
PACKAGE_GROUPS += mysql
|
|
PACKAGE_GROUPS += postgres
|
|
PACKAGE_GROUPS += berkeley
|
|
PACKAGE_GROUPS += unixodbc
|
|
PACKAGE_GROUPS += radius
|
|
PACKAGE_GROUPS += presence
|
|
PACKAGE_GROUPS += ldap
|
|
PACKAGE_GROUPS += xml
|
|
PACKAGE_GROUPS += perl
|
|
PACKAGE_GROUPS += utils
|
|
PACKAGE_GROUPS += lua
|
|
PACKAGE_GROUPS += memcached
|
|
PACKAGE_GROUPS += snmpstats
|
|
PACKAGE_GROUPS += xmpp
|
|
PACKAGE_GROUPS += cpl
|
|
PACKAGE_GROUPS += redis
|
|
PACKAGE_GROUPS += python3
|
|
PACKAGE_GROUPS += geoip2
|
|
PACKAGE_GROUPS += sqlite
|
|
PACKAGE_GROUPS += ims
|
|
PACKAGE_GROUPS += sctp
|
|
PACKAGE_GROUPS += tls
|
|
PACKAGE_GROUPS += outbound
|
|
PACKAGE_GROUPS += websocket
|
|
PACKAGE_GROUPS += autheph
|
|
PACKAGE_GROUPS += cnxcc
|
|
PACKAGE_GROUPS += erlang
|
|
PACKAGE_GROUPS += secsipid
|
|
PACKAGE_GROUPS += lwsc
|
|
PACKAGE_GROUPS += lcrrate
|
|
PACKAGE_GROUPS += tcap
|
|
|
|
# Module groups to be packaged onto kamailio-extra-modules.
|
|
EXTRA_GROUPS += ev
|
|
EXTRA_GROUPS += gzcompress
|
|
EXTRA_GROUPS += jansson
|
|
EXTRA_GROUPS += uuid
|
|
|
|
# Mono not on all arches
|
|
ifneq ("$(wildcard /usr/share/mono/mono-archs.make)","")
|
|
PACKAGE_GROUPS += mono
|
|
else
|
|
EXCLUDED_MODULES += mono
|
|
endif
|
|
|
|
# FTBFS on kfreebsd
|
|
LINUX_MODULES += json
|
|
LINUX_MODULES += kazoo
|
|
LINUX_MODULES += systemd
|
|
ifeq ($(DEB_HOST_ARCH_OS),linux)
|
|
PACKAGE_GROUPS += $(LINUX_MODULES)
|
|
else
|
|
EXCLUDED_MODULES += $(LINUX_MODULES)
|
|
endif
|
|
|
|
# select radius lib
|
|
ifeq ($(shell [ -f /usr/include/radcli/radcli.h ] && echo 1 || echo 0),1)
|
|
export RADCLI = 1
|
|
else
|
|
export FREERADIUS = 1
|
|
endif
|
|
# tlsa
|
|
export KTLS_INCLUDE_TLSA=yes
|
|
export LIBSSL_STATIC_SRCLIB=yes
|
|
export LIBSSL_STATIC_SRCPATH=/usr/$(LIBDIR)
|
|
|
|
# FTBFS on powerpcspe because of AltiVec assumption #729635.
|
|
ifeq ($(DEB_HOST_ARCH),powerpcspe)
|
|
export NOALTIVEC = 1
|
|
endif
|
|
|
|
D = $(CURDIR)/debian/$(DEB_SOURCE)
|
|
|
|
# Name of libdir in the path for libraries (e.g., the multiarch triplet).
|
|
LIBDIR ?= lib/$(DEB_HOST_MULTIARCH)
|
|
|
|
# Directories with possible duplicate libraries (that should be deleted
|
|
# from current module* packages).
|
|
DUP_LIBS_DIRS = $(D)/usr/$(LIBDIR)/kamailio \
|
|
$(D)-db-modules/usr/$(LIBDIR)/kamailio
|
|
|
|
# CFLAGS + CPPFLAGS -> CC_EXTRA_OPTS
|
|
CC_EXTRA_OPTS := $(shell dpkg-buildflags --get CPPFLAGS)
|
|
CC_EXTRA_OPTS += $(shell dpkg-buildflags --get CFLAGS)
|
|
CXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS)
|
|
# LDFLAGS -> LD_EXTRA_OPTS
|
|
LD_EXTRA_OPTS := $(shell dpkg-buildflags --get LDFLAGS)
|
|
|
|
# https://wiki.debian.org/ReproducibleBuilds/
|
|
CC_EXTRA_OPTS += -DVERSION_NODATE
|
|
|
|
# Disable unsafe signal handlers
|
|
CC_EXTRA_OPTS += -DNO_SIG_DEBUG
|
|
|
|
# Fix for UDP buffer issue when TLS is enabled
|
|
CC_EXTRA_OPTS += -pthread -DKSR_PTHREAD_MUTEX_SHARED
|
|
LD_EXTRA_OPTS += -pthread -rdynamic -ldl -Wl,-Bsymbolic-functions
|
|
BUILD_MODULES := $(addprefix build_, $(PACKAGE_GROUPS) $(EXTRA_GROUPS))
|
|
INSTALL_MODULES := $(addprefix install_, $(PACKAGE_GROUPS))
|
|
INSTALL_EXTRA := $(addprefix install_, $(EXTRA_GROUPS))
|
|
|
|
.PHONY: $(BUILD_MODULES) $(INSTALL_MODULES) $(INSTALL_EXTRA)
|
|
test_build_all-stamp: configure-stamp
|
|
$(MAKE) all quiet=verbose
|
|
touch test_build_all-stamp
|
|
|
|
$(BUILD_MODULES): test_build_all-stamp
|
|
$(MAKE) every-module group_include="k$(subst build_,,$@)" quiet=verbose
|
|
|
|
test_install_all-stamp: test_build_all-stamp
|
|
$(MAKE) install quiet=verbose LIBDIR=$(LIBDIR) group_include="kstandard"
|
|
touch test_install_all-stamp
|
|
|
|
$(INSTALL_MODULES): test_install_all-stamp
|
|
$(MAKE) install-modules-all \
|
|
quiet=verbose \
|
|
LIBDIR=$(LIBDIR) \
|
|
BASEDIR=$(D)-$(subst install_,,$@)-modules \
|
|
cfg_prefix=$(D)-$(subst install_,,$@)-modules \
|
|
doc-dir=share/doc/$(DEB_SOURCE)-$(subst install_,,$@)-modules \
|
|
group_include="k$(subst install_,,$@)"
|
|
# Eliminate duplicate libs.
|
|
for d in $(DUP_LIBS_DIRS); do \
|
|
test "$$d" != "$(D)-$${module}-modules/usr/$(LIBDIR)/kamailio" && \
|
|
for r in `find $$d -name 'lib*' | xargs`; do \
|
|
echo "removing $(subst install_,,$@) lib `basename $$r` present also in $$d"; \
|
|
rm -f $(D)-$(subst install_,,$@)-modules/usr/$(LIBDIR)/kamailio/`basename "$$r"`; \
|
|
done ; \
|
|
done
|
|
# clean empty dirs
|
|
find $(D)-$(subst install_,,$@)-modules -depth -empty -type d -exec rmdir {} \;
|
|
|
|
$(INSTALL_EXTRA): test_install_all-stamp
|
|
$(MAKE) install-modules-all \
|
|
quiet=verbose \
|
|
LIBDIR=$(LIBDIR) \
|
|
BASEDIR=$(D)-extra-modules \
|
|
cfg_prefix=$(D)-extra-modules \
|
|
doc-dir=share/doc/$(DEB_SOURCE)-extra-modules \
|
|
group_include="k$(subst install_,,$@)"
|
|
# Eliminate duplicate extra libs.
|
|
for d in $(DUP_LIBS_DIRS); do \
|
|
test "$$d" != "$(D)-extra-modules/usr/$(LIBDIR)/kamailio" && \
|
|
for r in `find $$d -name 'lib*' | xargs`; do \
|
|
echo "removing extra lib `basename $$r` present also in $$d"; \
|
|
rm -f $(D)-extra-modules/usr/$(LIBDIR)/kamailio/`basename "$$r"`; \
|
|
done ; \
|
|
done
|
|
# clean empty dirs
|
|
find $(D)-extra-modules -depth -empty -type d -exec rmdir {} \;
|
|
|
|
%:
|
|
dh $@
|
|
|
|
override_dh_auto_configure: configure-stamp
|
|
configure-stamp:
|
|
$(MAKE) cfg \
|
|
prefix=/usr \
|
|
cfg_prefix=$(D) \
|
|
cfg_target=/etc/kamailio/ \
|
|
FLAVOUR=kamailio \
|
|
BASEDIR=$(D) \
|
|
CC_EXTRA_OPTS="$(CC_EXTRA_OPTS)" \
|
|
LD_EXTRA_OPTS="$(LD_EXTRA_OPTS)" \
|
|
skip_modules="$(EXCLUDED_MODULES) $(EXTRA_EXCLUDED_MODULES)" \
|
|
group_include="kstandard"
|
|
touch configure-stamp
|
|
|
|
override_dh_auto_build: $(BUILD_MODULES)
|
|
|
|
override_dh_auto_clean:
|
|
if [ -r autover.h -a ! -r debian/autover.h ]; then cp -a autover.h debian/; fi
|
|
dh_auto_clean -- maintainer-clean
|
|
if [ -r debian/autover.h -a ! -r autover.h ]; then mv debian/autover.h .; fi
|
|
rm -f configure-stamp test_build_all-stamp test_install_all-stamp
|
|
|
|
override_dh_auto_install: $(INSTALL_MODULES) $(INSTALL_EXTRA)
|
|
# Move binaries of kamailio-berkeley-modules to kamailio-berkeley-bin.
|
|
mkdir -p $(D)-berkeley-bin/usr/
|
|
mv $(D)-berkeley-modules/usr/sbin \
|
|
$(D)-berkeley-bin/usr/
|
|
|
|
override_dh_installexamples:
|
|
dh_installexamples -Xobsoleted -Xsr
|
|
|
|
override_dh_installsystemd:
|
|
dh_installsystemd --name=kamailio-lb
|
|
dh_installsystemd --name=kamailio-lb@
|
|
dh_installsystemd --name=kamailio-proxy
|
|
dh_installsystemd --name=kamailio-proxy@
|