1#!/usr/bin/make -f
2# -*- makefile -*-
3# Sample debian/rules that uses debhelper.
4#
5# This file was originally written by Joey Hess and Craig Small.
6# As a special exception, when this file is copied by dh-make into a
7# dh-make output file, you may use that output file without restriction.
8# This special exception was added by Craig Small in version 0.37 of dh-make.
9#
10# Modified to make a template file for a multi-binary package with separated
11# build-arch and build-indep targets  by Bill Allombert 2001
12
13# Uncomment this to turn on verbose mode.
14#export DH_VERBOSE=1
15
16# This has to be exported to make some magic below work.
17export DH_OPTIONS
18
19PYVERS := $(shell pyversions -r)
20
21export CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS)
22export CFLAGS:=$(shell dpkg-buildflags --get CFLAGS)
23export CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS)
24export LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS)
25
26configure: configure-stamp
27configure-stamp:
28	dh_testdir
29
30	# Add here commands to configure the package.
31	if [ -f bootstrap.sh ]; then $(CURDIR)/bootstrap.sh; fi
32	$(CURDIR)/configure --prefix=/usr --enable-plugin=no
33
34	touch configure-stamp
35
36
37#Architecture
38build: build-arch build-indep
39	# Tests disabled
40	# $(MAKE) -C test check
41
42build-arch: build-arch-stamp
43$(CURDIR)/compiler/cpp/thrift build-arch-stamp: configure-stamp
44
45	# Compile compiler
46	$(MAKE) -C $(CURDIR)/compiler/cpp
47
48	# Compile C++ library
49	$(MAKE) -C $(CURDIR)/lib/cpp
50
51	# Compile C (glib) library
52	$(MAKE) -C $(CURDIR)/lib/c_glib
53
54	# Python library
55	cd $(CURDIR)/lib/py && \
56    for py in $(PYVERS); do  \
57        $$py setup.py build; \
58        $$py-dbg setup.py build; \
59    done
60
61	# PHP
62	cd $(CURDIR)/lib/php/src/ext/thrift_protocol && \
63		phpize && \
64		./configure && $(MAKE)
65
66	touch $@
67
68build-indep: build-indep-stamp
69build-indep-stamp: configure-stamp $(CURDIR)/compiler/cpp/thrift
70
71	# Add here commands to compile the indep part of the package.
72	#$(MAKE) doc
73
74	# Java
75	cd $(CURDIR)/lib/java && \
76		gradle --no-daemon -Prelease=true jar
77
78	# C#
79	$(MAKE) -C $(CURDIR)/lib/netstd
80
81	# Ruby
82	$(MAKE) -C $(CURDIR)/lib/rb
83
84	# Perl
85	$(MAKE) -C $(CURDIR)/lib/perl INSTALLDIRS=vendor
86
87	touch $@
88
89clean:
90	dh_testdir
91	dh_testroot
92	rm -f build-arch-stamp build-indep-stamp configure-stamp
93
94	cd $(CURDIR)/lib/py && python setup.py clean --all
95
96	# Add here commands to clean up after the build process.
97	-$(MAKE) clean
98
99	dh_clean
100
101install: install-indep install-arch
102install-indep:
103	dh_testdir
104	dh_testroot
105	dh_prep -i
106	dh_installdirs -i
107
108	# Add here commands to install the indep part of the package into
109	# debian/<package>-doc.
110	#INSTALLDOC#
111
112	# Java
113	mkdir -p $(CURDIR)/debian/libthrift-java/usr/share/java/ && \
114	cp $(CURDIR)/lib/java/build/libs/libthrift*.jar \
115		$(CURDIR)/debian/libthrift-java/usr/share/java/
116
117	# Ruby
118	mkdir -p $(CURDIR)/debian/ruby-thrift/usr/lib/ruby/1.9.1 && \
119	cp $(CURDIR)/lib/rb/lib/thrift.rb \
120		$(CURDIR)/debian/ruby-thrift/usr/lib/ruby/1.9.1
121	cp -r $(CURDIR)/lib/rb/lib/thrift \
122		$(CURDIR)/debian/ruby-thrift/usr/lib/ruby/1.9.1
123
124	# C#
125	mkdir -p $(CURDIR)/debian/libthrift-netstd/usr/lib/cli/thrift/ && \
126	cp $(CURDIR)/lib/netstd/Thrift/bin/Release/netstandard2.0/Thrift.dll \
127		$(CURDIR)/debian/libthrift-netstd/usr/lib/cli/thrift/Thrift.dll
128
129	# Perl
130	$(MAKE) -C $(CURDIR)/lib/perl install DESTDIR=$(CURDIR)/debian/libthrift-perl
131	mkdir -p $(CURDIR)/debian/libthrift-perl/usr/share
132	mv $(CURDIR)/debian/libthrift-perl/usr/local/lib/perl5 $(CURDIR)/debian/libthrift-perl/usr/share
133	rmdir $(CURDIR)/debian/libthrift-perl/usr/local/lib
134	rmdir $(CURDIR)/debian/libthrift-perl/usr/local
135
136	dh_install -i
137
138install-arch:
139	dh_testdir
140	dh_testroot
141	dh_clean -k -s
142	dh_installdirs -s
143
144	# Add here commands to install the arch part of the package into
145	# debian/tmp.
146	#$(MAKE) DESTDIR=$(CURDIR)/debian/thrift install
147
148	# Compiler
149	mkdir -p $(CURDIR)/debian/thrift-compiler/usr/bin && \
150	cp $(CURDIR)/compiler/cpp/thrift \
151		$(CURDIR)/debian/thrift-compiler/usr/bin/thrift && \
152	rmdir $(CURDIR)/debian/thrift-compiler/usr/sbin
153
154	# Python
155	cd $(CURDIR)/lib/py && \
156	python2 setup.py install --install-layout=deb --no-compile --root=$(CURDIR)/debian/python-thrift && \
157	python2-dbg setup.py install --install-layout=deb --no-compile --root=$(CURDIR)/debian/python-thrift-dbg && \
158	python3 setup.py install --install-layout=deb --no-compile --root=$(CURDIR)/debian/python3-thrift && \
159	python3-dbg setup.py install --install-layout=deb --no-compile --root=$(CURDIR)/debian/python3-thrift-dbg
160
161	find $(CURDIR)/debian/python-thrift -name "*.py[co]" -print0 | xargs -0 rm -f
162	find $(CURDIR)/debian/python-thrift -name "__pycache__" -print0 | xargs -0 rm -fr
163	find $(CURDIR)/debian/python-thrift-dbg -name "__pycache__" -print0 | xargs -0 rm -fr
164	find $(CURDIR)/debian/python-thrift-dbg -name "*.py[co]" -print0 | xargs -0 rm -f
165	find $(CURDIR)/debian/python-thrift-dbg -name "*.py" -print0 | xargs -0 rm -f
166	find $(CURDIR)/debian/python-thrift-dbg -name "*.egg-info" -print0 | xargs -0 rm -rf
167	find $(CURDIR)/debian/python-thrift-dbg -depth -type d -empty -exec rmdir {} \;
168
169	find $(CURDIR)/debian/python3-thrift -name "*.py[co]" -print0 | xargs -0 rm -f
170	find $(CURDIR)/debian/python3-thrift -name "__pycache__" -print0 | xargs -0 rm -fr
171	find $(CURDIR)/debian/python3-thrift-dbg -name "__pycache__" -print0 | xargs -0 rm -fr
172	find $(CURDIR)/debian/python3-thrift-dbg -name "*.py[co]" -print0 | xargs -0 rm -f
173	find $(CURDIR)/debian/python3-thrift-dbg -name "*.py" -print0 | xargs -0 rm -f
174	find $(CURDIR)/debian/python3-thrift-dbg -name "*.egg-info" -print0 | xargs -0 rm -rf
175	find $(CURDIR)/debian/python3-thrift-dbg -depth -type d -empty -exec rmdir {} \;
176
177	# PHP
178	mkdir -p $(CURDIR)/debian/php5-thrift
179	cd $(CURDIR)/lib/php && \
180		$(MAKE) DESTDIR=$(CURDIR)/debian/php5-thrift install
181
182	# C++ and C (glib)
183	mkdir -p $(CURDIR)/debian/tmp; \
184	cd $(CURDIR)/lib/cpp && \
185		$(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
186	cd $(CURDIR)/lib/c_glib && \
187		$(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
188
189	dh_install --sourcedir=debian/tmp -s
190
191
192# Must not depend on anything. This is to be called by
193# binary-arch/binary-indep
194# in another 'make' thread.
195binary-common:
196	dh_testdir
197	dh_testroot
198	dh_installchangelogs
199	dh_installdocs
200	dh_installexamples
201	dh_installman
202	dh_link
203	dh_strip -plibthrift0 --dbg-package=libthrift0-dbg
204	dh_strip -ppython-thrift --dbg-package=python-thrift-dbg
205	dh_strip -ppython3-thrift --dbg-package=python3-thrift-dbg
206	dh_strip -pthrift-compiler
207	dh_compress
208	dh_fixperms
209	dh_makeshlibs
210	dh_installdeb
211	dh_perl
212	dh_shlibdeps
213	dh_gencontrol
214	dh_md5sums
215	dh_builddeb
216# Build architecture independent packages using the common target.
217binary-indep: build-indep install-indep
218	$(MAKE) -f debian/rules DH_OPTIONS=-i binary-common
219
220# Build architecture dependent packages using the common target.
221binary-arch: build-arch install-arch
222	echo "php:Depends=phpapi-$(shell php-config5 --phpapi)" > $(CURDIR)/debian/substvars
223	$(MAKE) -f debian/rules DH_OPTIONS=-s binary-common
224
225binary: binary-arch binary-indep
226.PHONY: build clean binary-indep binary-arch binary install install-indep install-arch configure
227