Added db_cassandra packaging
[sip-router] / pkg / kamailio / deb / wheezy / rules
1 #!/usr/bin/make -f
2 # Sample debian/rules that uses debhelper.
3 # GNU copyright 1997 to 1999 by Joey Hess.
4 #
5 # $Id$
6 #
7 # History:
8 # --------
9 #  2009-07-08  updated for sip-router (andrei)
10 #  2009-12-10  updated for kamailio 3.0 (daniel)
11
12
13 # Uncomment this to turn on verbose mode.
14 #export DH_VERBOSE=1
15
16 # This is the debhelper compatibility version to use.
17 # export DH_COMPAT=4
18 #  -- already set in compat
19 export DEB_BUILD_OPTIONS:="$(DEB_BUILD_OPTIONS) debug"
20
21 # modules not in the "main" kamailio package
22 EXCLUDED_MODULES= 
23
24 # extra modules to skip, because they are not compilable now
25 # - regardless if they go to the main kamailio package or to some module package,
26 # they will be excluded from compile and install of all
27 EXTRA_EXCLUDED_MODULES=bdb dbtext oracle pa iptrtpproxy mi_xmlrpc purple
28 #EXTRA_EXCLUDED_MODULES=
29
30 # possible module directories that can appear in MODULES_SP
31 # (only used for deducing a module name)
32 MDIRS=modules
33
34 # modules packaged in separate packages (complete with full modules_* path)
35 # with the package name: kamailio-$(module_name)-module
36 MODULES_SP=
37
38 # module groups that are packaged in seperate packages
39 # (with the name kamailio-$(group_name)-modules)
40 # Note: the order is important (should be in dependency order, the one
41 # on which other depend first)
42 PACKAGE_GROUPS=mysql postgres berkeley unixodbc radius presence \
43                            ldap xml perl utils lua memcached tls \
44                            snmpstats carrierroute xmpp cpl redis python geoip \
45                            sqlite json mono ims outbound websocket cassandra
46
47 # name of libdir in the path for libraries (e.g., lib for 32b, lib64 for 64b)
48 LIBDIR ?= lib
49
50 # directories with possible duplicate libraries (that should be deleted
51 # from current module* packages)
52 DUP_LIBS_DIRS=$(CURDIR)/debian/kamailio/usr/$(LIBDIR)/kamailio \
53                         $(CURDIR)/debian/kamailio-db-modules/usr/$(LIBDIR)/kamailio
54
55 # modules names out of modules sp
56 MODULES_SP_NAMES=$(filter-out $(MDIRS),$(subst /, ,$(MODULES_SP)))
57
58 # "function" to get package short name out of a dir/module_name
59 # it also transforms db_foo into foo
60 mod_name=$(subst db_,,$(lastword $(subst /, ,$(1))))
61
62 define PACKAGE_GRP_BUILD_template
63         # package all the modules in PACKAGE_GROUPS in separate packages
64         $(foreach grp,$(PACKAGE_GROUPS),\
65                 $(MAKE) every-module group_include="k$(grp)"
66         )
67 endef
68
69
70 define PACKAGE_MODULE_BUILD_template
71         # package all the modules MODULES_SP in separate packages
72         $(foreach mod,$(MODULES_SP),\
73                 $(MAKE) modules modules="$(mod)"
74         )
75 endef
76
77
78 define PACKAGE_GRP_INSTALL_template
79         $(foreach grp,$(PACKAGE_GROUPS),\
80                 $(MAKE) install-modules-all group_include="k$(grp)" \
81                 basedir=$(CURDIR)/debian/kamailio-$(grp)-modules \
82                 cfg_prefix=$(CURDIR)/debian/kamailio-$(grp)-modules \
83                 doc-dir=share/doc/kamailio-$(grp)-modules
84                 # eliminate duplicate libs
85                 -for d in $(DUP_LIBS_DIRS); do \
86                         test "$$d" != "$(CURDIR)/debian/kamailio-$(grp)-modules/usr/$(LIBDIR)/kamailio" &&\
87                         for r in $$d/lib*; do \
88                                 if [ "$$r" != "$$d/lib*" ]; then \
89                                         echo "removing $(grp) lib `basename $$r` present also in $$d";\
90                                         rm -f $(CURDIR)/debian/kamailio-$(grp)-modules/usr/$(LIBDIR)/kamailio/`basename "$$r"` ; \
91                                 fi \
92                         done ; \
93                 done
94         )
95 endef
96
97
98 define PACKAGE_MODULE_INSTALL_template
99         $(foreach mod,$(MODULES_SP),
100                 $(MAKE) install-modules-all modules="$(mod)" \
101                                 modules_s="" modules_k="" \
102                                 basedir=$(CURDIR)/debian/kamailio-$(call mod_name,$(mod))-module \
103                                 doc-dir=share/doc/kamailio-$(call mod_name,$(mod))-module
104                 # eliminate duplicate libs
105                 -for d in $(DUP_LIBS_DIRS); do \
106                         test "$$d" != "$(CURDIR)/debian/kamailio-$(call mod_name,$(mod))-module/usr/$(LIBDIR)/kamailio" &&\
107                         for r in $$d/lib*; do \
108                                 if [ "$$r" != "$$d/lib*" ]; then \
109                                         echo "removing $(call mod_name, $(mod)) lib `basename $$r` present also in $$d";\
110                                         rm -f $(CURDIR)/debian/kamailio-$(call mod_name,$(mod))-module/usr/$(LIBDIR)/kamailio/`basename "$$r"` ; \
111                                 fi \
112                         done ; \
113                 done
114         )
115 endef
116
117 ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
118         CFLAGS += -g
119 endif
120 ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
121         INSTALL_PROGRAM += -s
122 endif
123
124 configure: configure-stamp
125 configure-stamp:
126         dh_testdir
127         # Add here commands to configure the package.
128         $(MAKE) FLAVOUR=kamailio cfg prefix=/usr cfg_prefix=$(CURDIR)/debian/kamailio \
129                         cfg_target=/etc/kamailio/ \
130                         basedir=$(CURDIR)/debian/kamailio \
131                         skip_modules="$(EXCLUDED_MODULES) $(EXTRA_EXCLUDED_MODULES)" \
132                         group_include="kstandard"
133
134         touch configure-stamp
135
136
137 build: build-stamp
138
139 build-stamp: configure-stamp 
140         dh_testdir
141         # Add here commands to compile the package.
142         $(MAKE) all
143         # make groups
144         $(call PACKAGE_GRP_BUILD_template)
145         # make single-module packages
146         $(call PACKAGE_MODULE_BUILD_template)
147         touch build-stamp
148
149 clean:
150         dh_testdir
151         dh_testroot
152         rm -f build-stamp configure-stamp
153         # Add here commands to clean up after the build process.
154         -$(MAKE) maintainer-clean
155         dh_clean
156
157 install: build
158         dh_testdir
159         dh_testroot
160         dh_clean -k
161         dh_installdirs
162         # Add here commands to install the package into debian/kamailio
163         $(MAKE) install group_include="kstandard"
164         # fix etc/kamailio dir location -- not needed -- andrei
165         # mv -f $(CURDIR)/debian/kamailio/usr/etc $(CURDIR)/debian/kamailio
166         # make group packages
167         $(call PACKAGE_GRP_INSTALL_template)
168         # make single module packages
169         $(call PACKAGE_MODULE_INSTALL_template)
170         # install /etc/default/kamailio file
171         mkdir -p $(CURDIR)/debian/kamailio/etc/default
172         cp -f debian/kamailio.default $(CURDIR)/debian/kamailio/etc/default/kamailio
173         #dh_movefiles
174
175
176
177 # This single target is used to build all the packages, all at once, or
178 # one at a time. So keep in mind: any options passed to commands here will
179 # affect _all_ packages. Anything you want to only affect one package
180 # should be put in another target, such as the install target.
181 binary-common: 
182         dh_testdir
183         dh_testroot
184         dh_installdebconf       
185         dh_installdocs
186         dh_installexamples
187         dh_installmenu
188 #       dh_installlogrotate
189 #       dh_installemacsen
190 #       dh_installpam
191 #       dh_installmime
192         dh_installinit  -- defaults 23
193         dh_installcron
194         dh_installman
195         dh_installinfo
196 #       dh_undocumented
197         dh_installchangelogs ChangeLog 
198         dh_link
199         dh_strip --dbg-package=kamailio-dbg
200         dh_compress 
201         dh_fixperms
202         dh_makeshlibs
203         dh_installdeb
204 #       dh_perl
205         dh_shlibdeps
206         dh_gencontrol
207         dh_md5sums
208         dh_builddeb
209
210 # Build architecture-independent packages using the common target
211 binary-indep: build install
212 # (Uncomment this next line if you have such packages.)
213 #        $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common
214 # We have nothing to do by default.
215
216
217 # Build architecture-dependent packages using the common target
218 binary-arch: build install
219         $(MAKE) -f debian/rules DH_OPTIONS=-a binary-common
220
221 # Any other binary targets build just one binary package at a time.
222 binary-%: build install
223         $(MAKE) -f debian/rules binary-common DH_OPTIONS=-p$*
224
225 binary: binary-indep binary-arch
226 .PHONY: build clean binary-indep binary-arch binary install configure
227