blob: f1fbab0f711f91338f6a81f8fec0f34445734b96 [file] [log] [blame]
aviauf89d7062016-06-14 12:42:57 -04001#!/usr/bin/make -f
2# -*- makefile -*-
3
4# Hardening
5export DEB_BUILD_MAINT_OPTIONS = hardening=+all
6DPKG_EXPORT_BUILDFLAGS = 1
7include /usr/share/dpkg/buildflags.mk
8
9# Number of CPUS
10NO_CPUS=$(shell nproc)
11ifeq ($(NO_CPUS),0)
12NO_CPUS=1
13endif
14
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -040015# Binary package names
Fredy P553fef12019-10-10 15:05:06 -040016RING_ALL_IN_ONE_PKG_NAME="jami-all"
17RING_CLIENT_PKG_NAME="jami"
18RING_DAEMON_PKG_NAME="jami-daemon"
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -040019
aviauf89d7062016-06-14 12:42:57 -040020%:
21 dh $@
22
23override_dh_auto_configure:
24 ###############################################
25 ## Re-create tarballs from tarballs-unpacked ##
26 ###############################################
27 mkdir -p daemon/contrib/tarballs
28
29 # Create tarballs
30 for i in $(CURDIR)/daemon/contrib/tarballs-unpacked/*; do \
31 projectname=`basename $$i` && \
32 cd $$i && tar -caf ../../tarballs/$$projectname * && \
33 echo "Repacked $$projectname"; \
34 done
35
aviauf89d7062016-06-14 12:42:57 -040036 ###########################
37 ## Ring Daemon configure ##
38 ###########################
39 mkdir -p daemon/contrib/native
40 cd daemon/contrib/native && \
41 ../bootstrap \
aviaudc3c9de2016-10-05 11:13:23 -040042 --disable-downloads \
aviau2fd81442016-07-27 15:13:33 -040043 --no-checksums \
aviauf89d7062016-06-14 12:42:57 -040044 --disable-ogg \
45 --disable-flac \
46 --disable-vorbis \
47 --disable-vorbisenc \
48 --disable-speex \
49 --disable-sndfile \
aviau9c5c4ad2016-07-20 14:07:34 -040050 --disable-gsm \
Stepan Salenikovich19dd3342016-08-16 10:04:15 -040051 --disable-speexdsp \
Guillaume Roguez46bdda42017-04-17 13:38:18 -040052 --disable-natpmp \
53 --enable-gnutls && \
aviauf89d7062016-06-14 12:42:57 -040054 make list && \
aviau13264212016-11-04 17:12:45 -040055 make -j$(NO_CPUS) V=1
aviauf89d7062016-06-14 12:42:57 -040056 cd daemon && \
57 ./autogen.sh && \
58 ./configure \
Stepan Salenikovicha61de1f2016-08-18 16:02:37 -040059 --prefix=/usr \
60 --disable-shared
aviauf89d7062016-06-14 12:42:57 -040061
62 #############################
63 ## libringclient configure ##
64 #############################
65 cd lrc && \
66 mkdir build && \
67 cd build && \
68 cmake \
69 -DRING_BUILD_DIR=$(CURDIR)/daemon/src \
70 -DCMAKE_INSTALL_PREFIX=/usr \
aviau9c5c4ad2016-07-20 14:07:34 -040071 -DCMAKE_BUILD_TYPE=Debug \
aviauf89d7062016-06-14 12:42:57 -040072 ..
73
74 ############################
75 ## gnome client configure ##
76 ############################
77 cd client-gnome && \
78 mkdir build && \
79 cd build && \
80 cmake \
81 -DCMAKE_INSTALL_PREFIX=/usr \
82 -DLibRingClient_PROJECT_DIR=/$(CURDIR)/lrc \
Stepan Salenikovichd6f588a2016-08-30 15:40:15 -040083 -DGSETTINGS_LOCALCOMPILE=OFF \
aviauf89d7062016-06-14 12:42:57 -040084 ..
85
86 dh_auto_configure
87
88override_dh_auto_build:
89 #######################
90 ## Ring Daemon build ##
91 #######################
aviau9c5c4ad2016-07-20 14:07:34 -040092 make -C daemon -j$(NO_CPUS) V=1
aviauf89d7062016-06-14 12:42:57 -040093 pod2man daemon/man/dring.pod > daemon/dring.1
94
95 #########################
96 ## libringclient build ##
97 #########################
aviau9c5c4ad2016-07-20 14:07:34 -040098 make -C lrc/build -j$(NO_CPUS) V=1
aviauf89d7062016-06-14 12:42:57 -040099
100 ########################
101 ## gnome client build ##
102 ########################
aviau9c5c4ad2016-07-20 14:07:34 -0400103 make -C client-gnome/build LDFLAGS="-lpthread" -j$(NO_CPUS) V=1
aviauf89d7062016-06-14 12:42:57 -0400104
105override_dh_auto_clean:
106 ################################
107 ## Generated contrib tarballs ##
108 ################################
109 rm -rfv daemon/contrib/tarballs
110
111 #######################
112 ## Ring Daemon clean ##
113 #######################
aviau9ee77442016-09-06 14:31:00 -0400114 if [ -f daemon/contrib/native/Makefile ]; then make -C daemon/contrib/native distclean; fi
aviauf89d7062016-06-14 12:42:57 -0400115 rm -rfv daemon/contrib/native
116 rm -rfv daemon/dring.1
117
118 #########################
119 ## libringclient clean ##
120 #########################
Maxim Cournoyerdad4c3b2018-02-14 15:48:37 -0500121 # CMake build system has no distclean target, so use clean.
122 if [ -f lrc/build/Makefile ]; then make -C lrc/build clean; fi
aviauf89d7062016-06-14 12:42:57 -0400123 rm -rfv lrc/build
124
125 ########################
126 ## gnome client clean ##
127 ########################
Maxim Cournoyerdad4c3b2018-02-14 15:48:37 -0500128 # CMake build system has no distclean target, so use clean.
129 if [ -f client-gnome/build/Makefile ]; then make -C client-gnome/build clean; fi
aviauf89d7062016-06-14 12:42:57 -0400130 rm -rfv client-gnome/build
131
aviau5c3c1b32017-05-02 22:39:54 -0400132override_dh_clean:
133 # GNUTLS contains:
134 # ring-project/daemon/contrib/tarballs-unpacked/gnutls-3.5.10.tar.xz/gnutls-3.5.10/src/certtool-args.c.bak
135 # ring-project/daemon/contrib/tarballs-unpacked/gnutls-3.5.10.tar.xz/gnutls-3.5.10/doc/doxygen/Doxyfile.orig
136 dh_clean -X.bak -X.orig
137
aviauf89d7062016-06-14 12:42:57 -0400138override_dh_auto_install:
139 #########################
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400140 ## Ring daemon install ##
aviauf89d7062016-06-14 12:42:57 -0400141 #########################
aviauf89d7062016-06-14 12:42:57 -0400142
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400143 cd daemon && make DESTDIR=$(CURDIR)/debian/$(RING_DAEMON_PKG_NAME) install
144 rm -rfv $(CURDIR)/debian/$(RING_DAEMON_PKG_NAME)/usr/include
145 rm -rfv $(CURDIR)/debian/$(RING_DAEMON_PKG_NAME)/usr/lib/*.a
146 rm -rfv $(CURDIR)/debian/$(RING_DAEMON_PKG_NAME)/usr/lib/*.la
147
Hugo Lefeuvrec79ae4d2018-08-07 14:48:28 -0400148 #########################
Fredy P553fef12019-10-10 15:05:06 -0400149 ## Jami client install ##
Hugo Lefeuvrec79ae4d2018-08-07 14:48:28 -0400150 #########################
151
152 ## LibRingClient
153 cd lrc/build && make DESTDIR=$(CURDIR)/debian/$(RING_CLIENT_PKG_NAME) install
154 rm -rfv $(CURDIR)/debian/$(RING_CLIENT_PKG_NAME)/usr/include
155
156 # This is a symlink, should be in -dev package
157 rm -v $(CURDIR)/debian/$(RING_CLIENT_PKG_NAME)/usr/lib/libringclient.so
158
159 # cmake files
160 rm -rfv $(CURDIR)/debian/$(RING_CLIENT_PKG_NAME)/usr/lib/cmake
161
162 ## GNOME client
163 cd client-gnome/build && make DESTDIR=$(CURDIR)/debian/$(RING_CLIENT_PKG_NAME) install
Fredy P553fef12019-10-10 15:05:06 -0400164 ln -sf /usr/bin/jami $(CURDIR)/debian/jami/usr/bin/ring.cx
Hugo Lefeuvrec79ae4d2018-08-07 14:48:28 -0400165
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400166 ######################
Fredy P553fef12019-10-10 15:05:06 -0400167 ## Jami AiO install ##
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400168 ######################
169
170 ## daemon
171 cd daemon && make DESTDIR=$(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME) install
172 rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/include
173 rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/*.a
174 rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/*.la
175
176 ## LibRingClient
177 cd lrc/build && make DESTDIR=$(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME) install
178 rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/include
aviauf89d7062016-06-14 12:42:57 -0400179
180 # This is a symlink, should be in -dev package
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400181 rm -v $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/libringclient.so
aviauf89d7062016-06-14 12:42:57 -0400182
183 # cmake files
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400184 rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/cmake
aviauf89d7062016-06-14 12:42:57 -0400185
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400186 ## GNOME client
187 cd client-gnome/build && make DESTDIR=$(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME) install
Fredy P553fef12019-10-10 15:05:06 -0400188 ln -sf /usr/bin/jami $(CURDIR)/debian/jami-all/usr/bin/ring.cx
aviauf89d7062016-06-14 12:42:57 -0400189
aviauf89d7062016-06-14 12:42:57 -0400190tmpdir:= $(shell mktemp -d)
191workdir:= $(shell pwd)
192PKD := $(abspath $(dir $(MAKEFILE_LIST)))
193version_to_download := $(shell dpkg-parsechangelog -ldebian/changelog | perl -ne 'print $$1 if m{^Version:\s+(?:\d+:)?(\d.*)(?:\~dfsg.+)(?:\-\d+.*)};')
194
195# Repacks the tarball with contrib tarballs unpacked.
196get-orig-source:
Fredy P553fef12019-10-10 15:05:06 -0400197 # Download jami tarball
aviauf89d7062016-06-14 12:42:57 -0400198 if [ -n "$$GET_ORIG_SOURCE_OVERRIDE_USCAN_TARBALL" ]; then \
199 mv $$GET_ORIG_SOURCE_OVERRIDE_USCAN_TARBALL ${tmpdir}; \
200 else \
201 uscan --rename --destdir=${tmpdir} --download-version ${version_to_download} ;\
202 fi
203
Fredy P553fef12019-10-10 15:05:06 -0400204 # Unpack jami tarball
aviauf89d7062016-06-14 12:42:57 -0400205 tar -C ${tmpdir} -xf ${tmpdir}/*.tar.gz
206
207 # Remove original tarball
208 rm ${tmpdir}/*.tar.gz
209
210 # Unpack all of the orig tarballs into tarballs-unpacked
Fredy P553fef12019-10-10 15:05:06 -0400211 if [ -d "${tmpdir}/jami/" ]; then \
212 mv ${tmpdir}/jami/ ${tmpdir}/ring-project/; \
Sébastien Blin94aaa832019-04-19 14:04:38 -0400213 fi
aviauf89d7062016-06-14 12:42:57 -0400214 mkdir ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked
215 for i in `find ${tmpdir}/ring-project/daemon/contrib/tarballs/ -name "*.tar.*"`; do \
216 projectname=`basename $$i` && \
217 mkdir ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/$$projectname && \
218 tar -C ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/$$projectname -xf $$i && \
219 echo "Unpacked $$projectname"; \
220 done
221
222 ###################
223 ## Exclude files ##
224 ###################
225 # This does not exclude everything that we need to exclude.
226 # debian/copyright's File-Excluded section also excludes files.
227
228 ## pjproject
229 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/g7221 # non-distributable (requires a license from Polycom)
230 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/ilbc # non distributable (the version included with pjproject)
231 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/milenage # non distributable
232 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/BaseClasses # non distributable (?)
233 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/portaudio # not needed
234 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/speex # not needed
235 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/mp3 # not needed
236 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/gsm # not needed
237 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/bdsound # not needed
238 #rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/srtp # not needed
239 rm -f ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/pjmedia/src/pjmedia-audiodev/s60_g729_bitstream.h # non distributable
240 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/build/vs # not needed, VisualStudio files.
241
242 # Remove all contrib tarballs
243 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs
244
245 # Create the new tarball
Fredy P553fef12019-10-10 15:05:06 -0400246 cd ${tmpdir} && tar -czf ${workdir}/jami_${version_to_download}~dfsg1.orig.tar.gz ring-project
aviauf89d7062016-06-14 12:42:57 -0400247
248 # Clear the temp dir
249 rm -rf ${tmpdir}