rules 6.86 KB
Newer Older
aviau's avatar
aviau committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/make -f
# -*- makefile -*-

# Hardening
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

# Number of CPUS
NO_CPUS=$(shell nproc)
ifeq ($(NO_CPUS),0)
NO_CPUS=1
endif

%:
	dh $@

override_dh_auto_configure:
	###############################################
	## Re-create tarballs from tarballs-unpacked ##
	###############################################
	mkdir -p daemon/contrib/tarballs

	# Create tarballs
	for i in $(CURDIR)/daemon/contrib/tarballs-unpacked/*; do \
		projectname=`basename $$i` && \
		cd $$i && tar -caf ../../tarballs/$$projectname * && \
		echo "Repacked $$projectname"; \
	done

	###########################
	## Ring Daemon configure ##
	###########################
	mkdir -p daemon/contrib/native
	cd daemon/contrib/native && \
        ../bootstrap \
37
				--disable-downloads \
aviau's avatar
aviau committed
38
				--no-checksums \
aviau's avatar
aviau committed
39
40
41
42
43
44
				--disable-ogg \
				--disable-flac \
				--disable-vorbis \
				--disable-vorbisenc \
				--disable-speex \
				--disable-sndfile \
aviau's avatar
aviau committed
45
				--disable-gsm \
46
47
				--disable-speexdsp \
				--disable-natpmp && \
aviau's avatar
aviau committed
48
		make list && \
aviau's avatar
aviau committed
49
		make -j$(NO_CPUS) V=1
aviau's avatar
aviau committed
50
51
52
	cd daemon && \
		./autogen.sh && \
		./configure \
53
54
				--prefix=/usr \
				--disable-shared
aviau's avatar
aviau committed
55
56
57
58
59
60
61
62
63
64

	#############################
	## libringclient configure ##
	#############################
	cd lrc && \
		mkdir build && \
		cd build && \
		cmake  \
			-DRING_BUILD_DIR=$(CURDIR)/daemon/src \
			-DCMAKE_INSTALL_PREFIX=/usr \
aviau's avatar
aviau committed
65
			-DCMAKE_BUILD_TYPE=Debug \
aviau's avatar
aviau committed
66
67
68
69
70
71
72
73
74
75
76
			..

	############################
	## gnome client configure ##
	############################
	cd client-gnome && \
		mkdir build && \
		cd build && \
		cmake \
			-DCMAKE_INSTALL_PREFIX=/usr \
			-DLibRingClient_PROJECT_DIR=/$(CURDIR)/lrc \
77
			-DGSETTINGS_LOCALCOMPILE=OFF \
aviau's avatar
aviau committed
78
79
80
81
82
83
84
85
			..

	dh_auto_configure

override_dh_auto_build:
	#######################
	## Ring Daemon build ##
	#######################
aviau's avatar
aviau committed
86
	make -C daemon -j$(NO_CPUS) V=1
aviau's avatar
aviau committed
87
88
89
90
91
	pod2man daemon/man/dring.pod > daemon/dring.1

	#########################
	## libringclient build ##
	#########################
aviau's avatar
aviau committed
92
	make -C lrc/build -j$(NO_CPUS) V=1
aviau's avatar
aviau committed
93
94
95
96

	########################
	## gnome client build ##
	########################
aviau's avatar
aviau committed
97
	make -C client-gnome/build LDFLAGS="-lpthread" -j$(NO_CPUS) V=1
aviau's avatar
aviau committed
98
99
100
101
102
103
104
105
106
107

override_dh_auto_clean:
	################################
	## Generated contrib tarballs ##
	################################
	rm -rfv daemon/contrib/tarballs

	#######################
	## Ring Daemon clean ##
	#######################
108
	if [ -f daemon/contrib/native/Makefile ]; then make -C daemon/contrib/native distclean; fi
aviau's avatar
aviau committed
109
110
111
112
113
114
	rm -rfv daemon/contrib/native
	rm -rfv daemon/dring.1

	#########################
	## libringclient clean ##
	#########################
115
	if [ -f lrc/build/Makefile ]; then make -C lrc/build distclean; fi
aviau's avatar
aviau committed
116
117
118
119
120
	rm -rfv lrc/build

	########################
	## gnome client clean ##
	########################
121
	if [ -f client-gnome/build/Makefile ]; then make -C client-gnome/build distclean; fi
aviau's avatar
aviau committed
122
123
124
125
126
127
128
129
	rm -rfv client-gnome/build

override_dh_auto_install:
	#########################
	## Ring Daemon install ##
	#########################
	cd daemon && make DESTDIR=$(CURDIR)/debian/ring-daemon install
	rm -rfv $(CURDIR)/debian/ring-daemon/usr/include
130
131
	rm -rfv $(CURDIR)/debian/ring-daemon/usr/lib/*.a
	rm -rfv $(CURDIR)/debian/ring-daemon/usr/lib/*.la
aviau's avatar
aviau committed
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206

	###########################
	## libringclient install ##
	###########################
	cd lrc/build && make DESTDIR=$(CURDIR)/debian/ring install
	rm -rfv $(CURDIR)/debian/ring/usr/include

	# This is a symlink, should be in -dev package
	rm -v $(CURDIR)/debian/ring/usr/lib/libringclient.so

	# cmake files
	rm -rfv $(CURDIR)/debian/ring/usr/lib/cmake

	##########################
	## gnome client install ##
	##########################
	cd client-gnome/build && make DESTDIR=$(CURDIR)/debian/ring install

tmpdir:= $(shell mktemp -d)
workdir:= $(shell pwd)
PKD := $(abspath $(dir $(MAKEFILE_LIST)))
version_to_download := $(shell dpkg-parsechangelog -ldebian/changelog | perl -ne 'print $$1 if m{^Version:\s+(?:\d+:)?(\d.*)(?:\~dfsg.+)(?:\-\d+.*)};')

# Repacks the tarball with contrib tarballs unpacked.
get-orig-source:
	# Download ring tarball
	if [ -n "$$GET_ORIG_SOURCE_OVERRIDE_USCAN_TARBALL" ]; then \
	    mv $$GET_ORIG_SOURCE_OVERRIDE_USCAN_TARBALL ${tmpdir}; \
	else \
	    uscan --rename --destdir=${tmpdir} --download-version ${version_to_download} ;\
	fi

	# Unpack ring tarball
	tar -C ${tmpdir} -xf ${tmpdir}/*.tar.gz

	# Remove original tarball
	rm ${tmpdir}/*.tar.gz

	# Unpack all of the orig tarballs into tarballs-unpacked
	mkdir ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked
	for i in `find ${tmpdir}/ring-project/daemon/contrib/tarballs/ -name "*.tar.*"`; do \
		projectname=`basename $$i` && \
		mkdir ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/$$projectname && \
		tar -C ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/$$projectname -xf $$i && \
		echo "Unpacked $$projectname"; \
    done

	###################
	## Exclude files ##
	###################
	# This does not exclude everything that we need to exclude.
	# debian/copyright's File-Excluded section also excludes files.

    ## pjproject
	rm -rf  ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/g7221 # non-distributable (requires a license from Polycom)
	rm -rf  ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/ilbc # non distributable (the version included with pjproject)
	rm -rf  ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/milenage # non distributable
	rm -rf  ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/BaseClasses # non distributable (?)
	rm -rf  ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/portaudio # not needed
	rm -rf  ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/speex # not needed
	rm -rf  ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/mp3 # not needed
	rm -rf  ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/gsm # not needed
	rm -rf  ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/bdsound # not needed
	#rm -rf  ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/srtp # not needed
	rm -f ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/pjmedia/src/pjmedia-audiodev/s60_g729_bitstream.h # non distributable
	rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/build/vs # not needed, VisualStudio files.

	# Remove all contrib tarballs
	rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs

	# Create the new tarball
	cd  ${tmpdir} && tar -czf ${workdir}/ring_${version_to_download}~dfsg1.orig.tar.gz ring-project

	# Clear the temp dir
	rm -rf ${tmpdir}