Merge branch 'master' of ssh://git.sip-router.org/sip-router into carstenbock/db_cass...
[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 DEBVERSION:=$(shell head -n 1 debian/changelog \
6                     | sed -e 's/^[^(]*(\([^)]*\)).*/\1/')
7 UPVERSION:=$(shell dpkg-parsechangelog | sed -ne 's/^Version: \(\([0-9]\+\):\)\?\(.*\)-.*/\3/p')
8
9 FILENAME := kamailio_$(UPVERSION).orig.tar.gz
10 URL := http://www.kamailio.org/pub/kamailio/$(UPVERSION)/src/kamailio-$(UPVERSION)_src.tar.gz
11
12 DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
13
14 export DEB_BUILD_MAINT_OPTIONS = hardening=+all
15 DPKG_EXPORT_BUILDFLAGS = 1
16 include /usr/share/dpkg/buildflags.mk
17
18 # Uncomment this to turn on verbose mode.
19 #export DH_VERBOSE=1
20
21 export JAVA_HOME=/usr/lib/jvm/java-gcj
22
23 # choose freeradius
24
25 # modules not in the "main" kamailio package
26 EXCLUDED_MODULES=
27
28 # extra modules to skip, because they are not compilable now
29 # - regardless if they go to the main kamailio package or to some module package,
30 # they will be excluded from compile and install of all
31 EXTRA_EXCLUDED_MODULES=bdb dbtext oracle pa iptrtpproxy purple mi_xmlrpc dnssec
32
33 # module groups that are packaged in seperate packages
34 # (with the name kamailio-$(group_name)-modules)
35 # Note: the order is important (should be in dependency order, the one
36 # on which other depend first)
37 PACKAGE_GROUPS=mysql postgres berkeley unixodbc radius presence \
38                            ldap xml perl utils lua memcached \
39                            snmpstats carrierroute xmpp cpl redis python geoip\
40                            sqlite json mono ims sctp java \
41                            tls outbound websocket autheph cassandra
42
43 # module groups to be packaged onto kamailio-extra-modules
44 EXTRA_GROUPS=gzcompress uuid ev
45
46 # name of libdir in the path for libraries (e.g., lib for 32b, lib64 for 64b)
47 LIBDIR ?= lib/$(DEB_HOST_MULTIARCH)
48
49 # directories with possible duplicate libraries (that should be deleted
50 # from current module* packages)
51 DUP_LIBS_DIRS=$(CURDIR)/debian/kamailio/usr/$(LIBDIR)/kamailio \
52                         $(CURDIR)/debian/kamailio-db-modules/usr/$(LIBDIR)/kamailio
53
54 # "function" to get package short name out of a dir/module_name
55 # it also transforms db_foo into foo
56 mod_name=$(subst db_,,$(lastword $(subst /, ,$(1))))
57
58 define PACKAGE_GRP_BUILD_template
59         # package all the modules in PACKAGE_GROUPS in separate packages
60         $(foreach grp,$(PACKAGE_GROUPS EXTRA_GROUPS),\
61                 $(MAKE) every-module group_include="k$(grp)"
62         )
63 endef
64
65
66 define PACKAGE_GRP_INSTALL_template
67         $(foreach grp,$(PACKAGE_GROUPS),\
68                 $(MAKE) install-modules-all LIBDIR=$(LIBDIR) group_include="k$(grp)" \
69                 basedir=$(CURDIR)/debian/kamailio-$(grp)-modules \
70                 cfg_prefix=$(CURDIR)/debian/kamailio-$(grp)-modules \
71                 doc-dir=share/doc/kamailio-$(grp)-modules
72                 # eliminate duplicate libs
73                 -for d in $(DUP_LIBS_DIRS); do \
74                         test "$$d" != "$(CURDIR)/debian/kamailio-$(grp)-modules/usr/$(LIBDIR)/kamailio" &&\
75                         for r in `find $$d -name 'lib*'|xargs`; do \
76                                 echo "removing $(grp) lib `basename $$r` present also in $$d";\
77                                 rm -f $(CURDIR)/debian/kamailio-$(grp)-modules/usr/$(LIBDIR)/kamailio/`basename "$$r"` ; \
78                         done ; \
79                 done
80                 find $(CURDIR)/debian/kamailio-$(grp)-modules -depth -empty -type d -exec rmdir {} \;
81         )
82 endef
83
84 define PACKAGE_EXTRA_INSTALL_template
85         $(foreach grp,$(EXTRA_GROUPS),\
86                 $(MAKE) install-modules-all LIBDIR=$(LIBDIR) group_include="k$(grp)" \
87                 basedir=$(CURDIR)/debian/kamailio-extra-modules \
88                 cfg_prefix=$(CURDIR)/debian/kamailio-extra-modules \
89                 doc-dir=share/doc/kamailio-extra-modules
90         )
91         # eliminate duplicate libs
92         -for d in $(DUP_LIBS_DIRS); do \
93                 test "$$d" != "$(CURDIR)/debian/kamailio-extra-modules/usr/$(LIBDIR)/kamailio" &&\
94                 for r in `find $$d -name 'lib*'|xargs`; do \
95                         echo "removing extra lib `basename $$r` present also in $$d";\
96                         rm -f $(CURDIR)/debian/kamailio-extra-modules/usr/$(LIBDIR)/kamailio/`basename "$$r"` ; \
97                 done ; \
98         done
99         find $(CURDIR)/debian/kamailio-extra-modules -depth -empty -type d -exec rmdir {} \;
100 endef
101
102 ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
103         CFLAGS += -g
104 endif
105 ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
106         INSTALL_PROGRAM += -s
107 endif
108
109 # CFLAGS + CPPFLAGS -> CC_EXTRA_OPTS
110 # LDFLAGS -> LD_EXTRA_OPTS
111 CUSTOM_BUILDFLAGS:=$(shell dpkg-buildflags --export=configure| \
112 sed -e 's/" CPPFLAGS="/ /' -e 's/CFLAGS/CC_EXTRA_OPTS/g' -e 's/LDFLAGS/LD_EXTRA_OPTS/g')
113
114 configure: configure-stamp
115 configure-stamp:
116         dh_testdir
117         # Add here commands to configure the package.
118         $(MAKE) FLAVOUR=kamailio cfg prefix=/usr cfg_prefix=$(CURDIR)/debian/kamailio \
119                         cfg_target=/etc/kamailio/ \
120                         basedir=$(CURDIR)/debian/kamailio \
121                         skip_modules="$(EXCLUDED_MODULES) $(EXTRA_EXCLUDED_MODULES)" \
122                         $(CUSTOM_BUILDFLAGS) \
123                         group_include="kstandard"
124
125         touch configure-stamp
126
127
128 build: build-stamp
129 build-arch: build-stamp
130 build-indep: build-stamp
131 build-stamp: configure-stamp
132         dh_testdir
133         # Add here commands to compile the package.
134         $(MAKE) all
135         # make groups
136         $(call PACKAGE_GRP_BUILD_template)
137         touch build-stamp
138
139 clean:
140         dh_testdir
141         dh_testroot
142         rm -f build-stamp configure-stamp
143         # Add here commands to clean up after the build process.
144         $(MAKE) maintainer-clean
145         dh_clean
146
147 install: build
148         dh_testdir
149         dh_testroot
150         dh_prep
151         dh_installdirs
152         # Add here commands to install the package into debian/kamailio
153         $(MAKE) install LIBDIR=$(LIBDIR) group_include="kstandard"
154         # make group packages
155         $(call PACKAGE_GRP_INSTALL_template)
156         $(call PACKAGE_EXTRA_INSTALL_template)
157         mv $(CURDIR)/debian/kamailio-berkeley-modules/usr/sbin/kambdb_recover \
158                 $(CURDIR)/debian/kamailio-berkeley-bin/usr/sbin/kambdb_recover
159         # install /etc/default/kamailio file
160         mkdir -p $(CURDIR)/debian/kamailio/etc/default
161         cp -f debian/kamailio.default $(CURDIR)/debian/kamailio/etc/default/kamailio
162
163
164 # This single target is used to build all the packages, all at once, or
165 # one at a time. So keep in mind: any options passed to commands here will
166 # affect _all_ packages. Anything you want to only affect one package
167 # should be put in another target, such as the install target.
168 binary-common:
169         dh_testdir
170         dh_testroot
171         dh_installdebconf
172         dh_installdocs
173         dh_installexamples
174         dh_installmenu
175         dh_installinit -pkamailio -- defaults 23
176         dh_installcron
177         dh_installman
178         dh_installinfo
179         dh_lintian
180         dh_installchangelogs ChangeLog
181         dh_link
182         dh_strip --dbg-package=kamailio-dbg
183         dh_compress
184         dh_fixperms
185         dh_makeshlibs
186         dh_installdeb
187         dh_shlibdeps
188         dh_gencontrol
189         dh_md5sums
190         dh_builddeb
191
192 # Build architecture-independent packages using the common target
193 binary-indep: build install
194 # (Uncomment this next line if you have such packages.)
195 #        $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common
196 # We have nothing to do by default.
197
198
199 # Build architecture-dependent packages using the common target
200 binary-arch: build install
201         $(MAKE) -f debian/rules DH_OPTIONS=-a binary-common
202
203 # Any other binary targets build just one binary package at a time.
204 binary-%: build install
205         $(MAKE) -f debian/rules binary-common DH_OPTIONS=-p$*
206
207 print-version:
208         @@echo "Debian version:          $(DEBVERSION)"
209         @@echo "Upstream version:        $(UPVERSION)"
210
211 get-orig-source:
212         @@dh_testdir
213         @@[ -d ../tarballs/. ]||mkdir -p ../tarballs
214         @@echo Downloading $(FILENAME) from $(URL) ...
215         @@wget -nv -T10 -t3 -O ../tarballs/$(FILENAME) $(URL)
216
217 binary: binary-indep binary-arch
218 .PHONY: build clean binary-indep binary-arch binary install configure
219