#!/usr/bin/make -f
# debian/rules makefile that uses debhelper.
#
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
CFLAGS = -DNDEBUG -D_FORTIFY_SOURCE=2 -Wall -fomit-frame-pointer $(shell dpkg-buildflags --get CFLAGS)
LDFLAGS= $(shell dpkg-buildflags --get LDFLAGS)
DESTDIR = $(CURDIR)/debian/tmp

JAVA_HOME = /usr/lib/jvm/default-java
JAVAC = javac -source 1.5 -target 1.5
JAVADOC_API_URL=/usr/share/doc/default-jdk-doc/api
JNI_CFLAGS=-I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
PHPAPI = $(shell php-config5 --phpapi)

# see Debian Policy Manual - source packages
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -g
endif
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	MAKEFLAGS += -j$(NUMJOBS)
endif

# language bindings to build
BINDINGS_ARCH = java perl php
BINDINGS_INDEP = mono python
BINDINGS_COMMON =
BINDINGS = $(BINDINGS_ARCH) $(BINDINGS_INDEP) $(BINDINGS_COMMON)

# using debhelper >= 8 to build the package
%:
	dh $@ --with=python2

build: build-indep build-arch
build-indep: build-indep-stamp
build-arch: build-arch-stamp build-ruby1.8-stamp build-ruby1.9-stamp

binary:
	BINDINGS="$(BINDINGS)" dh $@ --with=python2 --with=cli

binary-arch:
	BINDINGS="$(BINDINGS_ARCH) $(BINDINGS_COMMON)" dh $@ --with=python2

binary-indep:
	BINDINGS="$(BINDINGS_INDEP) $(BINDINGS_COMMON)" dh $@ --with=python2 --with=cli

build-ruby1.8-stamp:
	mkdir -p ruby1.8 && ruby1.8 -C ruby1.8 ../ruby/extconf.rb && $(MAKE) -C ruby1.8
	ruby1.8 -C ruby1.8 -I. ../ruby/test_rhash.rb
	touch build-ruby1.8-stamp

build-ruby1.9-stamp:
	mkdir -p ruby1.9.1 && ruby1.9.1 -C ruby1.9.1 ../ruby/extconf.rb && $(MAKE) -C ruby1.9.1
	ruby1.9.1 -C ruby1.9.1 -I. ../ruby/test_rhash.rb
	touch build-ruby1.9-stamp

build-indep-stamp:
	$(MAKE) build BINDINGS="$(BINDINGS_INDEP)"
	$(MAKE) test BINDINGS="$(BINDINGS_INDEP)"
	$(MAKE) -C java javadoc JAVADOC_API_URL="$(JAVADOC_API_URL)"
	touch build-indep-stamp

build-arch-stamp:
	$(MAKE) build BINDINGS="$(BINDINGS_ARCH)" PHP_RPATH=no \
		CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" OTHERLDFLAGS="$(LDFLAGS)" \
		JAVAC="$(JAVAC)" JNI_CFLAGS="$(JNI_CFLAGS)"
	chrpath -d perl/blib/arch/auto/Rhash/Rhash.so
	$(MAKE) test BINDINGS="$(BINDINGS_ARCH)"
	touch build-arch-stamp

override_dh_auto_build:
override_dh_auto_test:

override_dh_auto_install:
	# Install language bindings
	$(MAKE) install DESTDIR=$(DESTDIR) PREFIX=/usr BINDINGS="$(BINDINGS)"
	echo "php:Depends=phpapi-$(PHPAPI)" > debian/librhash-php5.substvars
# passing empty MAKEFLAGS to 'make install' to overcome ruby1.8 concurrency bug
	[ ! -d ruby1.8 ] || MAKEFLAGS= $(MAKE) -C ruby1.8 install DESTDIR=$(DESTDIR) sitedir=$(DESTDIR)/usr/lib/ruby
	[ ! -d ruby1.9.1 ] || $(MAKE) -C ruby1.9.1 install DESTDIR=$(DESTDIR) sitedir=$(DESTDIR)/usr/lib/ruby

override_dh_auto_clean:
	$(MAKE) distclean
	rm -f build-indep-stamp build-arch-stamp build-ruby1.8-stamp build-ruby1.9-stamp
	[ ! -d ruby1.8   ] || $(RM) -r ruby1.8
	[ ! -d ruby1.9.1 ] || $(RM) -r ruby1.9.1
