blob: 65027e3c03452a2f6936847e8407ff4a64846516 [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
16RING_ALL_IN_ONE_PKG_NAME="ring-all"
17RING_DAEMON_PKG_NAME="ring-daemon"
18
aviauf89d7062016-06-14 12:42:57 -040019%:
20 dh $@
21
22override_dh_auto_configure:
23 ###############################################
24 ## Re-create tarballs from tarballs-unpacked ##
25 ###############################################
26 mkdir -p daemon/contrib/tarballs
27
28 # Create tarballs
29 for i in $(CURDIR)/daemon/contrib/tarballs-unpacked/*; do \
30 projectname=`basename $$i` && \
31 cd $$i && tar -caf ../../tarballs/$$projectname * && \
32 echo "Repacked $$projectname"; \
33 done
34
aviauf89d7062016-06-14 12:42:57 -040035 ###########################
36 ## Ring Daemon configure ##
37 ###########################
38 mkdir -p daemon/contrib/native
39 cd daemon/contrib/native && \
40 ../bootstrap \
aviaudc3c9de2016-10-05 11:13:23 -040041 --disable-downloads \
aviau2fd81442016-07-27 15:13:33 -040042 --no-checksums \
aviauf89d7062016-06-14 12:42:57 -040043 --disable-ogg \
44 --disable-flac \
45 --disable-vorbis \
46 --disable-vorbisenc \
47 --disable-speex \
48 --disable-sndfile \
aviau9c5c4ad2016-07-20 14:07:34 -040049 --disable-gsm \
Stepan Salenikovich19dd3342016-08-16 10:04:15 -040050 --disable-speexdsp \
Guillaume Roguez46bdda42017-04-17 13:38:18 -040051 --disable-natpmp \
52 --enable-gnutls && \
aviauf89d7062016-06-14 12:42:57 -040053 make list && \
aviau13264212016-11-04 17:12:45 -040054 make -j$(NO_CPUS) V=1
aviauf89d7062016-06-14 12:42:57 -040055 cd daemon && \
56 ./autogen.sh && \
57 ./configure \
Stepan Salenikovicha61de1f2016-08-18 16:02:37 -040058 --prefix=/usr \
59 --disable-shared
aviauf89d7062016-06-14 12:42:57 -040060
61 #############################
62 ## libringclient configure ##
63 #############################
64 cd lrc && \
65 mkdir build && \
66 cd build && \
67 cmake \
68 -DRING_BUILD_DIR=$(CURDIR)/daemon/src \
69 -DCMAKE_INSTALL_PREFIX=/usr \
aviau9c5c4ad2016-07-20 14:07:34 -040070 -DCMAKE_BUILD_TYPE=Debug \
aviauf89d7062016-06-14 12:42:57 -040071 ..
72
73 ############################
74 ## gnome client configure ##
75 ############################
76 cd client-gnome && \
77 mkdir build && \
78 cd build && \
79 cmake \
80 -DCMAKE_INSTALL_PREFIX=/usr \
81 -DLibRingClient_PROJECT_DIR=/$(CURDIR)/lrc \
Stepan Salenikovichd6f588a2016-08-30 15:40:15 -040082 -DGSETTINGS_LOCALCOMPILE=OFF \
aviauf89d7062016-06-14 12:42:57 -040083 ..
84
85 dh_auto_configure
86
87override_dh_auto_build:
88 #######################
89 ## Ring Daemon build ##
90 #######################
aviau9c5c4ad2016-07-20 14:07:34 -040091 make -C daemon -j$(NO_CPUS) V=1
aviauf89d7062016-06-14 12:42:57 -040092 pod2man daemon/man/dring.pod > daemon/dring.1
93
94 #########################
95 ## libringclient build ##
96 #########################
aviau9c5c4ad2016-07-20 14:07:34 -040097 make -C lrc/build -j$(NO_CPUS) V=1
aviauf89d7062016-06-14 12:42:57 -040098
99 ########################
100 ## gnome client build ##
101 ########################
aviau9c5c4ad2016-07-20 14:07:34 -0400102 make -C client-gnome/build LDFLAGS="-lpthread" -j$(NO_CPUS) V=1
aviauf89d7062016-06-14 12:42:57 -0400103
104override_dh_auto_clean:
105 ################################
106 ## Generated contrib tarballs ##
107 ################################
108 rm -rfv daemon/contrib/tarballs
109
110 #######################
111 ## Ring Daemon clean ##
112 #######################
aviau9ee77442016-09-06 14:31:00 -0400113 if [ -f daemon/contrib/native/Makefile ]; then make -C daemon/contrib/native distclean; fi
aviauf89d7062016-06-14 12:42:57 -0400114 rm -rfv daemon/contrib/native
115 rm -rfv daemon/dring.1
116
117 #########################
118 ## libringclient clean ##
119 #########################
Maxim Cournoyerdad4c3b2018-02-14 15:48:37 -0500120 # CMake build system has no distclean target, so use clean.
121 if [ -f lrc/build/Makefile ]; then make -C lrc/build clean; fi
aviauf89d7062016-06-14 12:42:57 -0400122 rm -rfv lrc/build
123
124 ########################
125 ## gnome client clean ##
126 ########################
Maxim Cournoyerdad4c3b2018-02-14 15:48:37 -0500127 # CMake build system has no distclean target, so use clean.
128 if [ -f client-gnome/build/Makefile ]; then make -C client-gnome/build clean; fi
aviauf89d7062016-06-14 12:42:57 -0400129 rm -rfv client-gnome/build
130
aviau5c3c1b32017-05-02 22:39:54 -0400131override_dh_clean:
132 # GNUTLS contains:
133 # ring-project/daemon/contrib/tarballs-unpacked/gnutls-3.5.10.tar.xz/gnutls-3.5.10/src/certtool-args.c.bak
134 # ring-project/daemon/contrib/tarballs-unpacked/gnutls-3.5.10.tar.xz/gnutls-3.5.10/doc/doxygen/Doxyfile.orig
135 dh_clean -X.bak -X.orig
136
aviauf89d7062016-06-14 12:42:57 -0400137override_dh_auto_install:
138 #########################
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400139 ## Ring daemon install ##
aviauf89d7062016-06-14 12:42:57 -0400140 #########################
aviauf89d7062016-06-14 12:42:57 -0400141
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400142 cd daemon && make DESTDIR=$(CURDIR)/debian/$(RING_DAEMON_PKG_NAME) install
143 rm -rfv $(CURDIR)/debian/$(RING_DAEMON_PKG_NAME)/usr/include
144 rm -rfv $(CURDIR)/debian/$(RING_DAEMON_PKG_NAME)/usr/lib/*.a
145 rm -rfv $(CURDIR)/debian/$(RING_DAEMON_PKG_NAME)/usr/lib/*.la
146
147 ######################
148 ## Ring AiO install ##
149 ######################
150
151 ## daemon
152 cd daemon && make DESTDIR=$(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME) install
153 rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/include
154 rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/*.a
155 rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/*.la
156
157 ## LibRingClient
158 cd lrc/build && make DESTDIR=$(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME) install
159 rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/include
aviauf89d7062016-06-14 12:42:57 -0400160
161 # This is a symlink, should be in -dev package
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400162 rm -v $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/libringclient.so
aviauf89d7062016-06-14 12:42:57 -0400163
164 # cmake files
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400165 rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/cmake
aviauf89d7062016-06-14 12:42:57 -0400166
Hugo Lefeuvrec902ea12018-07-19 14:23:32 -0400167 ## GNOME client
168 cd client-gnome/build && make DESTDIR=$(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME) install
aviauf89d7062016-06-14 12:42:57 -0400169
aviauf89d7062016-06-14 12:42:57 -0400170tmpdir:= $(shell mktemp -d)
171workdir:= $(shell pwd)
172PKD := $(abspath $(dir $(MAKEFILE_LIST)))
173version_to_download := $(shell dpkg-parsechangelog -ldebian/changelog | perl -ne 'print $$1 if m{^Version:\s+(?:\d+:)?(\d.*)(?:\~dfsg.+)(?:\-\d+.*)};')
174
175# Repacks the tarball with contrib tarballs unpacked.
176get-orig-source:
177 # Download ring tarball
178 if [ -n "$$GET_ORIG_SOURCE_OVERRIDE_USCAN_TARBALL" ]; then \
179 mv $$GET_ORIG_SOURCE_OVERRIDE_USCAN_TARBALL ${tmpdir}; \
180 else \
181 uscan --rename --destdir=${tmpdir} --download-version ${version_to_download} ;\
182 fi
183
184 # Unpack ring tarball
185 tar -C ${tmpdir} -xf ${tmpdir}/*.tar.gz
186
187 # Remove original tarball
188 rm ${tmpdir}/*.tar.gz
189
190 # Unpack all of the orig tarballs into tarballs-unpacked
191 mkdir ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked
192 for i in `find ${tmpdir}/ring-project/daemon/contrib/tarballs/ -name "*.tar.*"`; do \
193 projectname=`basename $$i` && \
194 mkdir ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/$$projectname && \
195 tar -C ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/$$projectname -xf $$i && \
196 echo "Unpacked $$projectname"; \
197 done
198
199 ###################
200 ## Exclude files ##
201 ###################
202 # This does not exclude everything that we need to exclude.
203 # debian/copyright's File-Excluded section also excludes files.
204
205 ## pjproject
206 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/g7221 # non-distributable (requires a license from Polycom)
207 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/ilbc # non distributable (the version included with pjproject)
208 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/milenage # non distributable
209 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/BaseClasses # non distributable (?)
210 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/portaudio # not needed
211 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/speex # not needed
212 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/mp3 # not needed
213 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/gsm # not needed
214 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/bdsound # not needed
215 #rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/srtp # not needed
216 rm -f ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/pjmedia/src/pjmedia-audiodev/s60_g729_bitstream.h # non distributable
217 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/build/vs # not needed, VisualStudio files.
218
219 # Remove all contrib tarballs
220 rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs
221
222 # Create the new tarball
223 cd ${tmpdir} && tar -czf ${workdir}/ring_${version_to_download}~dfsg1.orig.tar.gz ring-project
224
225 # Clear the temp dir
226 rm -rf ${tmpdir}