blob: ba6d33a86fccf5d4e25725a62de6ef1948b558d2 [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
Fredy Pb20faf62019-12-09 10:15:45 -050020# Bundled packages from contrib
21BUNDLED_PKGS = .ffmpeg
22ifeq ($(DISTRIBUTION),raspbian_10_armhf)
23# Raspbian's yaml-cpp lib does not work properly
24BUNDLED_PKGS += .yaml-cpp
25endif
26
aviauf89d7062016-06-14 12:42:57 -040027%:
28 dh $@
29
30override_dh_auto_configure:
31 ###############################################
32 ## Re-create tarballs from tarballs-unpacked ##
33 ###############################################
34 mkdir -p daemon/contrib/tarballs
35
36 # Create tarballs
37 for i in $(CURDIR)/daemon/contrib/tarballs-unpacked/*; do \
38 projectname=`basename $$i` && \
39 cd $$i && tar -caf ../../tarballs/$$projectname * && \
40 echo "Repacked $$projectname"; \
41 done
42
aviauf89d7062016-06-14 12:42:57 -040043 ###########################
44 ## Ring Daemon configure ##
45 ###########################
46 mkdir -p daemon/contrib/native
47 cd daemon/contrib/native && \
48 ../bootstrap \
aviaudc3c9de2016-10-05 11:13:23 -040049 --disable-downloads \
aviau2fd81442016-07-27 15:13:33 -040050 --no-checksums \
aviauf89d7062016-06-14 12:42:57 -040051 --disable-ogg \
52 --disable-flac \
53 --disable-vorbis \
54 --disable-vorbisenc \
55 --disable-speex \
56 --disable-sndfile \
aviau9c5c4ad2016-07-20 14:07:34 -040057 --disable-gsm \
Stepan Salenikovich19dd3342016-08-16 10:04:15 -040058 --disable-speexdsp \
Guillaume Roguez46bdda42017-04-17 13:38:18 -040059 --disable-natpmp \
60 --enable-gnutls && \
aviauf89d7062016-06-14 12:42:57 -040061 make list && \
Sébastien Blinb06f51d2019-11-15 10:49:03 -050062 make -j$(NO_CPUS) V=1 && \
Fredy Pb20faf62019-12-09 10:15:45 -050063 make -j$(NO_CPUS) $(BUNDLED_PKGS) V=1
aviauf89d7062016-06-14 12:42:57 -040064 cd daemon && \
65 ./autogen.sh && \
66 ./configure \
Stepan Salenikovicha61de1f2016-08-18 16:02:37 -040067 --prefix=/usr \
68 --disable-shared
aviauf89d7062016-06-14 12:42:57 -040069
70 #############################
71 ## libringclient configure ##
72 #############################
73 cd lrc && \
74 mkdir build && \
75 cd build && \
76 cmake \
77 -DRING_BUILD_DIR=$(CURDIR)/daemon/src \
78 -DCMAKE_INSTALL_PREFIX=/usr \
aviau9c5c4ad2016-07-20 14:07:34 -040079 -DCMAKE_BUILD_TYPE=Debug \
aviauf89d7062016-06-14 12:42:57 -040080 ..
81
82 ############################
83 ## gnome client configure ##
84 ############################
85 cd client-gnome && \
86 mkdir build && \
87 cd build && \
88 cmake \
89 -DCMAKE_INSTALL_PREFIX=/usr \
90 -DLibRingClient_PROJECT_DIR=/$(CURDIR)/lrc \
Stepan Salenikovichd6f588a2016-08-30 15:40:15 -040091 -DGSETTINGS_LOCALCOMPILE=OFF \
aviauf89d7062016-06-14 12:42:57 -040092 ..
93
94 dh_auto_configure
95
96override_dh_auto_build:
97 #######################
98 ## Ring Daemon build ##
99 #######################
aviau9c5c4ad2016-07-20 14:07:34 -0400100 make -C daemon -j$(NO_CPUS) V=1
aviauf89d7062016-06-14 12:42:57 -0400101 pod2man daemon/man/dring.pod > daemon/dring.1
102
103 #########################
104 ## libringclient build ##
105 #########################
aviau9c5c4ad2016-07-20 14:07:34 -0400106 make -C lrc/build -j$(NO_CPUS) V=1
aviauf89d7062016-06-14 12:42:57 -0400107
108 ########################
109 ## gnome client build ##
110 ########################
aviau9c5c4ad2016-07-20 14:07:34 -0400111 make -C client-gnome/build LDFLAGS="-lpthread" -j$(NO_CPUS) V=1
aviauf89d7062016-06-14 12:42:57 -0400112
113override_dh_auto_clean:
114 ################################
115 ## Generated contrib tarballs ##
116 ################################
117 rm -rfv daemon/contrib/tarballs
118
119 #######################
120 ## Ring Daemon clean ##
121 #######################
aviau9ee77442016-09-06 14:31:00 -0400122 if [ -f daemon/contrib/native/Makefile ]; then make -C daemon/contrib/native distclean; fi
aviauf89d7062016-06-14 12:42:57 -0400123 rm -rfv daemon/contrib/native
124 rm -rfv daemon/dring.1
125
126 #########################
127 ## libringclient clean ##
128 #########################
Maxim Cournoyerdad4c3b2018-02-14 15:48:37 -0500129 # CMake build system has no distclean target, so use clean.
130 if [ -f lrc/build/Makefile ]; then make -C lrc/build clean; fi
aviauf89d7062016-06-14 12:42:57 -0400131 rm -rfv lrc/build
132
133 ########################
134 ## gnome client clean ##
135 ########################
Maxim Cournoyerdad4c3b2018-02-14 15:48:37 -0500136 # CMake build system has no distclean target, so use clean.
137 if [ -f client-gnome/build/Makefile ]; then make -C client-gnome/build clean; fi
aviauf89d7062016-06-14 12:42:57 -0400138 rm -rfv client-gnome/build
139
aviau5c3c1b32017-05-02 22:39:54 -0400140override_dh_clean:
141 # GNUTLS contains:
142 # ring-project/daemon/contrib/tarballs-unpacked/gnutls-3.5.10.tar.xz/gnutls-3.5.10/src/certtool-args.c.bak
143 # ring-project/daemon/contrib/tarballs-unpacked/gnutls-3.5.10.tar.xz/gnutls-3.5.10/doc/doxygen/Doxyfile.orig
144 dh_clean -X.bak -X.orig
145
aviauf89d7062016-06-14 12:42:57 -0400146override_dh_auto_install:
147 #########################
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400148 ## Ring daemon install ##
aviauf89d7062016-06-14 12:42:57 -0400149 #########################
aviauf89d7062016-06-14 12:42:57 -0400150
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400151 cd daemon && make DESTDIR=$(CURDIR)/debian/$(RING_DAEMON_PKG_NAME) install
152 rm -rfv $(CURDIR)/debian/$(RING_DAEMON_PKG_NAME)/usr/include
153 rm -rfv $(CURDIR)/debian/$(RING_DAEMON_PKG_NAME)/usr/lib/*.a
154 rm -rfv $(CURDIR)/debian/$(RING_DAEMON_PKG_NAME)/usr/lib/*.la
155
Hugo Lefeuvrec79ae4d2018-08-07 14:48:28 -0400156 #########################
Fredy P553fef12019-10-10 15:05:06 -0400157 ## Jami client install ##
Hugo Lefeuvrec79ae4d2018-08-07 14:48:28 -0400158 #########################
159
160 ## LibRingClient
161 cd lrc/build && make DESTDIR=$(CURDIR)/debian/$(RING_CLIENT_PKG_NAME) install
162 rm -rfv $(CURDIR)/debian/$(RING_CLIENT_PKG_NAME)/usr/include
163
164 # This is a symlink, should be in -dev package
165 rm -v $(CURDIR)/debian/$(RING_CLIENT_PKG_NAME)/usr/lib/libringclient.so
166
167 # cmake files
168 rm -rfv $(CURDIR)/debian/$(RING_CLIENT_PKG_NAME)/usr/lib/cmake
169
170 ## GNOME client
171 cd client-gnome/build && make DESTDIR=$(CURDIR)/debian/$(RING_CLIENT_PKG_NAME) install
Fredy P553fef12019-10-10 15:05:06 -0400172 ln -sf /usr/bin/jami $(CURDIR)/debian/jami/usr/bin/ring.cx
Hugo Lefeuvrec79ae4d2018-08-07 14:48:28 -0400173
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400174 ######################
Fredy P553fef12019-10-10 15:05:06 -0400175 ## Jami AiO install ##
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400176 ######################
177
178 ## daemon
179 cd daemon && make DESTDIR=$(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME) install
180 rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/include
181 rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/*.a
182 rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/*.la
183
184 ## LibRingClient
185 cd lrc/build && make DESTDIR=$(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME) install
186 rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/include
aviauf89d7062016-06-14 12:42:57 -0400187
188 # This is a symlink, should be in -dev package
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400189 rm -v $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/libringclient.so
aviauf89d7062016-06-14 12:42:57 -0400190
191 # cmake files
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400192 rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/cmake
aviauf89d7062016-06-14 12:42:57 -0400193
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400194 ## GNOME client
195 cd client-gnome/build && make DESTDIR=$(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME) install
Fredy P553fef12019-10-10 15:05:06 -0400196 ln -sf /usr/bin/jami $(CURDIR)/debian/jami-all/usr/bin/ring.cx
aviauf89d7062016-06-14 12:42:57 -0400197
aviauf89d7062016-06-14 12:42:57 -0400198tmpdir:= $(shell mktemp -d)
199workdir:= $(shell pwd)
200PKD := $(abspath $(dir $(MAKEFILE_LIST)))
201version_to_download := $(shell dpkg-parsechangelog -ldebian/changelog | perl -ne 'print $$1 if m{^Version:\s+(?:\d+:)?(\d.*)(?:\~dfsg.+)(?:\-\d+.*)};')
202
203# Repacks the tarball with contrib tarballs unpacked.
204get-orig-source:
Fredy P553fef12019-10-10 15:05:06 -0400205 # Download jami tarball
aviauf89d7062016-06-14 12:42:57 -0400206 if [ -n "$$GET_ORIG_SOURCE_OVERRIDE_USCAN_TARBALL" ]; then \
207 mv $$GET_ORIG_SOURCE_OVERRIDE_USCAN_TARBALL ${tmpdir}; \
208 else \
209 uscan --rename --destdir=${tmpdir} --download-version ${version_to_download} ;\
210 fi
211
Fredy P553fef12019-10-10 15:05:06 -0400212 # Unpack jami tarball
aviauf89d7062016-06-14 12:42:57 -0400213 tar -C ${tmpdir} -xf ${tmpdir}/*.tar.gz
214
215 # Remove original tarball
216 rm ${tmpdir}/*.tar.gz
217
218 # Unpack all of the orig tarballs into tarballs-unpacked
Fredy P553fef12019-10-10 15:05:06 -0400219 if [ -d "${tmpdir}/jami/" ]; then \
220 mv ${tmpdir}/jami/ ${tmpdir}/ring-project/; \
Sébastien Blin94aaa832019-04-19 14:04:38 -0400221 fi
aviauf89d7062016-06-14 12:42:57 -0400222 mkdir ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked
223 for i in `find ${tmpdir}/ring-project/daemon/contrib/tarballs/ -name "*.tar.*"`; do \
224 projectname=`basename $$i` && \
225 mkdir ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/$$projectname && \
226 tar -C ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/$$projectname -xf $$i && \
227 echo "Unpacked $$projectname"; \
228 done
229
230 ###################
231 ## Exclude files ##
232 ###################
233 # This does not exclude everything that we need to exclude.
234 # debian/copyright's File-Excluded section also excludes files.
235
236 ## pjproject
237 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/g7221 # non-distributable (requires a license from Polycom)
238 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/ilbc # non distributable (the version included with pjproject)
239 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/milenage # non distributable
240 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/BaseClasses # non distributable (?)
241 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/portaudio # not needed
242 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/speex # not needed
243 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/mp3 # not needed
244 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/gsm # not needed
245 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/bdsound # not needed
246 #rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/srtp # not needed
247 rm -f ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/pjmedia/src/pjmedia-audiodev/s60_g729_bitstream.h # non distributable
248 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/build/vs # not needed, VisualStudio files.
249
250 # Remove all contrib tarballs
251 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs
252
253 # Create the new tarball
Fredy P553fef12019-10-10 15:05:06 -0400254 cd ${tmpdir} && tar -czf ${workdir}/jami_${version_to_download}~dfsg1.orig.tar.gz ring-project
aviauf89d7062016-06-14 12:42:57 -0400255
256 # Clear the temp dir
257 rm -rf ${tmpdir}