#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
#
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
#
# Modified to make a template file for a multi-binary package with separated
# build-arch and build-indep targets  by Bill Allombert 2001

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

# This has to be exported to make some magic below work.
export DH_OPTIONS

PYVERS := $(shell pyversions -r)

configure: configure-stamp
configure-stamp:
	dh_testdir
	# Add here commands to configure the package.
	if [ -f bootstrap.sh ]; then $(CURDIR)/bootstrap.sh; fi
	$(CURDIR)/configure --prefix=/usr --with-c_glib

	touch configure-stamp


#Architecture
build: build-arch build-indep
	# Tests disabled
	# $(MAKE) -C test check

build-arch: build-arch-stamp
build-arch-stamp: configure-stamp

	# Compile compiler
	$(MAKE) -C $(CURDIR)/compiler/cpp

	# Compile C++ library
	$(MAKE) -C $(CURDIR)/lib/cpp

	# Compile C (glib) library
	$(MAKE) -C $(CURDIR)/lib/c_glib

	# Python library
	cd $(CURDIR)/lib/py && \
    for py in $(PYVERS); do  \
        $$py setup.py build; \
        $$py-dbg setup.py build; \
    done

	# PHP
	cd $(CURDIR)/lib/php/src/ext/thrift_protocol && \
		phpize && \
		./configure && make

	touch $@

build-indep: build-indep-stamp
build-indep-stamp: configure-stamp

	# Add here commands to compile the indep part of the package.
	#$(MAKE) doc

	# Java
	cd $(CURDIR)/lib/java && \
		ant

	# Erlang
	$(MAKE) -C $(CURDIR)/lib/erl

	# C#
	$(MAKE) -C $(CURDIR)/lib/csharp

	# Perl
	$(MAKE) -C $(CURDIR)/lib/perl INSTALLDIRS=vendor

	touch $@

clean:
	dh_testdir
	dh_testroot
	rm -f build-arch-stamp build-indep-stamp configure-stamp

	# Add here commands to clean up after the build process.
	-$(MAKE) clean

	dh_clean

install: install-indep install-arch
install-indep:
	dh_testdir
	dh_testroot
	dh_clean -k -i
	dh_installdirs -i

	# Add here commands to install the indep part of the package into
	# debian/<package>-doc.
	#INSTALLDOC#

        # Java
	mkdir -p $(CURDIR)/debian/libthrift-java/usr/share/java/ && \
	cp $(CURDIR)/lib/java/build/libthrift*.jar \
		$(CURDIR)/debian/libthrift-java/usr/share/java/

	# Erlang
	mkdir -p $(CURDIR)/debian/libthrift-erlang/usr/lib/erlang/lib/thrift/ && \
	cp -r $(CURDIR)/lib/erl/ebin \
		$(CURDIR)/lib/erl/include \
		$(CURDIR)/lib/erl/src \
		$(CURDIR)/debian/libthrift-erlang/usr/lib/erlang/lib/thrift/

	# C#
	mkdir -p $(CURDIR)/debian/libthrift-cil/usr/lib/cli/thrift/ && \
	cp $(CURDIR)/lib/csharp/Thrift.dll \
		$(CURDIR)/debian/libthrift-cil/usr/lib/cli/thrift/Thrift.dll

	# Perl
	$(MAKE) -C $(CURDIR)/lib/perl install DESTDIR=$(CURDIR)/debian/libthrift-perl/usr

	dh_install -i

install-arch:
	dh_testdir
	dh_testroot
	dh_clean -k -s
	dh_installdirs -s

	# Add here commands to install the arch part of the package into
	# debian/tmp.
	#$(MAKE) DESTDIR=$(CURDIR)/debian/thrift install

	# Compiler
	mkdir -p $(CURDIR)/debian/thrift-compiler/usr/bin && \
	cp $(CURDIR)/compiler/cpp/thrift \
		$(CURDIR)/debian/thrift-compiler/usr/bin/thrift && \
	rmdir $(CURDIR)/debian/thrift-compiler/usr/sbin

	# Python
	cd $(CURDIR)/lib/py && \
	for py in $(PYVERS); do \
		$$py setup.py install --no-compile --root=$(CURDIR)/debian/python-thrift; \
		$$py-dbg setup.py install --no-compile --root=$(CURDIR)/debian/python-thrift-dbg; \
	done

	find $(CURDIR)/debian/python-thrift-dbg -name "*.pyc" -print0 | xargs -0 rm -f
	find $(CURDIR)/debian/python-thrift-dbg -name "*.py" -print0 | xargs -0 rm -f
	find $(CURDIR)/debian/python-thrift-dbg -name "*.egg-info" -print0 | xargs -0 rm -f
	find $(CURDIR)/debian/python-thrift-dbg -depth -type d -empty -exec rmdir {} \;

	# PHP
	mkdir -p $(CURDIR)/debian/php5-thrift
	cd $(CURDIR)/lib/php && \
		$(MAKE) DESTDIR=$(CURDIR)/debian/php5-thrift install

	# C++ and C (glib)
	mkdir -p $(CURDIR)/debian/tmp; \
	cd $(CURDIR)/lib/cpp && \
		make DESTDIR=$(CURDIR)/debian/tmp install
	cd $(CURDIR)/lib/c_glib && \
		make DESTDIR=$(CURDIR)/debian/tmp install

	dh_install --sourcedir=debian/tmp -s


# Must not depend on anything. This is to be called by
# binary-arch/binary-indep
# in another 'make' thread.
binary-common:
	dh_testdir
	dh_testroot
	dh_installchangelogs
	dh_installdocs
	dh_installexamples
	dh_installman
	dh_link
	dh_strip -Npython-thrift-dbg -Nthrift-compiler -Nlibthrift0 --dbg=python-thrift-dbg
	dh_strip -Npython-thrift-dbg
	dh_compress
	dh_fixperms
	dh_pysupport
	dh_makeshlibs
	dh_installdeb
	dh_perl
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb
# Build architecture independant packages using the common target.
binary-indep: build-indep install-indep
	$(MAKE) -f debian/rules DH_OPTIONS=-i binary-common

# Build architecture dependant packages using the common target.
binary-arch: build-arch install-arch
	echo "php:Depends=phpapi-$(php-config5 --phpapi)" > debian/substvars
	$(MAKE) -f debian/rules DH_OPTIONS=-s binary-common

binary: binary-arch binary-indep
.PHONY: build clean binary-indep binary-arch binary install install-indep install-arch configure
