#!/usr/bin/make -f # Sample debian/rules that uses debhelper. # GNU copyright 1997 to 1999 by Joey Hess. # # $Id$ # # History: # -------- # 2009-07-08 updated for sip-router (andrei) # 2009-12-10 updated for kamailio 3.0 (daniel) # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 # This is the debhelper compatibility version to use. # export DH_COMPAT=4 # -- already set in compat # force no striping (always include debug symbols for now) export DEB_BUILD_OPTIONS:="$(DEB_BUILD_OPTIONS) debug" # modules not in the "main" kamailio package EXCLUDED_MODULES= purple # 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 dbtext oracle pa iptrtpproxy #EXTRA_EXCLUDED_MODULES= # possible module directories that can appear in MODULES_SP # (only used for deducing a module name) MDIRS=modules modules_s modules_k # modules packaged in separate packages (complete with full modules_* path) # with the package name: kamailio-$(module_name)-module MODULES_SP= # 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 postgres berkeley unixodbc radius presence \ ldap xml perl utils geoip memcached tls \ snmpstats carrierroute xmpp cpl lua python \ sqlite json # name of libdir in the path for libraries (e.g., lib for 32b, lib64 for 64b) export LIBDIR=lib64 # directories with possible duplicate libraries (that should be deleted # from current module* packages) DUP_LIBS_DIRS=$(CURDIR)/debian/kamailio/usr/$(LIBDIR)/kamailio \ $(CURDIR)/debian/kamailio-db-modules/usr/$(LIBDIR)/kamailio # modules names out of modules sp MODULES_SP_NAMES=$(filter-out $(MDIRS),$(subst /, ,$(MODULES_SP))) # "function" to get package short name out of a dir/module_name # it also transforms db_foo into foo mod_name=$(subst db_,,$(lastword $(subst /, ,$(1)))) define PACKAGE_GRP_BUILD_template # package all the modules in PACKAGE_GROUPS in separate packages $(foreach grp,$(PACKAGE_GROUPS),\ $(MAKE) -j`nproc` every-module group_include="k$(grp)" ) endef define PACKAGE_MODULE_BUILD_template # package all the modules MODULES_SP in separate packages $(foreach mod,$(MODULES_SP),\ $(MAKE) -j`nproc` modules modules="$(mod)" ) endef define PACKAGE_GRP_INSTALL_template $(foreach grp,$(PACKAGE_GROUPS),\ $(MAKE) install-modules-all group_include="k$(grp)" \ basedir=$(CURDIR)/debian/kamailio-$(grp)-modules \ cfg_prefix=$(CURDIR)/debian/kamailio-$(grp)-modules \ doc-dir=share/doc/kamailio-$(grp)-modules # eliminate duplicate libs -for d in $(DUP_LIBS_DIRS); do \ test "$$d" != "$(CURDIR)/debian/kamailio-$(grp)-modules/usr/$(LIBDIR)/kamailio" &&\ for r in $$d/lib*; do \ echo "removing $(grp) lib `basename $$r` present also in $$d";\ rm -f $(CURDIR)/debian/kamailio-$(grp)-modules/usr/$(LIBDIR)/kamailio/`basename "$$r"` ; \ done ; \ done ) endef define PACKAGE_MODULE_INSTALL_template $(foreach mod,$(MODULES_SP), $(MAKE) install-modules-all modules="$(mod)" \ modules_s="" modules_k="" \ basedir=$(CURDIR)/debian/kamailio-$(call mod_name,$(mod))-module \ doc-dir=share/doc/kamailio-$(call mod_name,$(mod))-module # eliminate duplicate libs -for d in $(DUP_LIBS_DIRS); do \ test "$$d" != "$(CURDIR)/debian/kamailio-$(call mod_name,$(mod))-module/usr/$(LIBDIR)/kamailio" &&\ for r in $$d/lib*; do \ echo "removing $(call mod_name, $(mod)) lib `basename $$r` present also in $$d";\ rm -f $(CURDIR)/debian/kamailio-$(call mod_name,$(mod))-module/usr/$(LIBDIR)/kamailio/`basename "$$r"` ; \ done ; \ done ) endef ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) CFLAGS += -g endif ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) INSTALL_PROGRAM += -s endif CFLAGS+=$(shell dpkg-buildflags --get CFLAGS) LDFLAGS+=$(shell dpkg-buildflags --get LDFLAGS) configure: configure-stamp configure-stamp: dh_testdir # Add here commands to configure the package. $(MAKE) FLAVOUR=kamailio cfg prefix=/usr cfg_prefix=$(CURDIR)/debian/kamailio \ cfg_target=/etc/kamailio/ \ basedir=$(CURDIR)/debian/kamailio \ skip_modules="$(EXCLUDED_MODULES) $(EXTRA_EXCLUDED_MODULES)" \ group_include="kstandard" touch configure-stamp build: build-stamp build-stamp: configure-stamp dh_testdir # Add here commands to compile the package. $(MAKE) -j`nproc` all # make groups $(call PACKAGE_GRP_BUILD_template) # make single-module packages $(call PACKAGE_MODULE_BUILD_template) touch build-stamp clean: dh_testdir dh_testroot rm -f build-stamp configure-stamp # Add here commands to clean up after the build process. -$(MAKE) maintainer-clean dh_clean install: build dh_testdir dh_testroot dh_clean -k dh_installdirs # Add here commands to install the package into debian/kamailio $(MAKE) install group_include="kstandard" # fix etc/kamailio dir location -- not needed -- andrei # mv -f $(CURDIR)/debian/kamailio/usr/etc $(CURDIR)/debian/kamailio # make group packages $(call PACKAGE_GRP_INSTALL_template) # make single module packages $(call PACKAGE_MODULE_INSTALL_template) # install /etc/default/kamailio file -- not needed in ngcp #mkdir -p $(CURDIR)/debian/kamailio/etc/default #cp -f debian/kamailio.default $(CURDIR)/debian/kamailio/etc/default/kamailio #dh_movefiles # This single target is used to build all the packages, all at once, or # one at a time. So keep in mind: any options passed to commands here will # affect _all_ packages. Anything you want to only affect one package # should be put in another target, such as the install target. binary-common: dh_testdir dh_testroot # dh_installdebconf dh_installdocs dh_installexamples dh_installmenu # dh_installlogrotate # dh_installemacsen # dh_installpam # dh_installmime dh_installinit --name=kamailio-lb dh_installinit --name=kamailio-proxy dh_installcron dh_installman dh_installinfo # dh_undocumented dh_installchangelogs ChangeLog dh_link dh_strip --dbg-package=kamailio-dbg dh_compress dh_fixperms dh_makeshlibs dh_installdeb # dh_perl dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb # Build architecture-independent packages using the common target binary-indep: build install # (Uncomment this next line if you have such packages.) # $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common # We have nothing to do by default. # Build architecture-dependent packages using the common target binary-arch: build install $(MAKE) -f debian/rules DH_OPTIONS=-a binary-common mkdir -p $(CURDIR)/debian/kamailio/usr/share/lintian/overrides/ cp -v debian/overrides $(CURDIR)/debian/kamailio/usr/share/lintian/overrides/kamailio find $(CURDIR)/debian # Any other binary targets build just one binary package at a time. binary-%: build install $(MAKE) -f debian/rules binary-common DH_OPTIONS=-p$* mkdir -p $(CURDIR)/debian/kamailio/usr/share/lintian/overrides/ cp -v debian/overrides $(CURDIR)/debian/kamailio/usr/share/lintian/overrides/kamailio find $(CURDIR)/debian binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install configure