#!/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 --without-erlang

	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

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

	# Ruby
	$(MAKE) -C $(CURDIR)/lib/rb

	# 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/

        # Ruby
	mkdir -p $(CURDIR)/debian/ruby-thrift/usr/lib/ruby/1.8 && \
	cp $(CURDIR)/lib/rb/lib/thrift.rb \
		$(CURDIR)/debian/ruby-thrift/usr/lib/ruby/1.8
	cp -r $(CURDIR)/lib/rb/lib/thrift \
		$(CURDIR)/debian/ruby-thrift/usr/lib/ruby/1.8
	mkdir -p $(CURDIR)/debian/ruby-thrift/usr/lib/ruby/1.9.1 && \
	cp $(CURDIR)/lib/rb/lib/thrift.rb \
		$(CURDIR)/debian/ruby-thrift/usr/lib/ruby/1.9.1
	cp -r $(CURDIR)/lib/rb/lib/thrift \
		$(CURDIR)/debian/ruby-thrift/usr/lib/ruby/1.9.1

	# 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 -rf
	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_makeshlibs
	dh_installdeb
	dh_perl
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb
# Build architecture independent packages using the common target.
binary-indep: build-indep install-indep
	$(MAKE) -f debian/rules DH_OPTIONS=-i binary-common

# Build architecture dependent 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
