#!/usr/bin/make -f
# Based on the multi2 sample debian/rules file:
# ---
# Sample debian/rules that uses debhelper.
# This file is public domain software, originally written by Joey Hess.
#
# This version is for a multibinary package. It also allows you to build any
# of the binary packages independantly, via binary-<package> targets.
# ---

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

with_tests := yes

ifneq ($(with_tests),yes)
NOPKGS += -Npyside-tests
endif

export DH_OPTIONS = $(NOPKGS)

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

# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

CFLAGS = -Wall -g
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0
else
	CFLAGS += -O2
endif

export CFLAGS

# borrowed from python2.5 debian/rules
COMMA = ,
ifneq (,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS))))
  NJOBS := -j$(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS))))
endif

SRC	:= $(CURDIR)
BUILD	:= $(CURDIR)/debian/build
TARGET	:= $(CURDIR)/debian/tmp

PYVERS  := $(shell pyversions -vd)

debian/configure-stamp: $(PYVERS:%=debian/configure-python%-stamp) 
	touch $@

debian/configure-python%-stamp: 
	dh_testdir
	[ -d $(BUILD)-python$* ] || mkdir $(BUILD)-python$*
	: # cmake does not offer a way to force a specific python version to
	: # check, therefore we add the wanted version to the beginning of
	: # the list to be checked
	CMAKE_MODULES=/usr/share/cmake-2.6/Modules && \
	mkdir -p $(BUILD)-python$*/cmake_modules && \
	cd $(BUILD)-python$*/cmake_modules && \
	  sed "/^FIND_PROGRAM(PYTHON_EXECUTABLE/{N;s/\n *NAMES /&python$* /}" \
	    $$CMAKE_MODULES/FindPythonInterp.cmake > FindPythonInterp.cmake && \
	  sed "s/^FOREACH(_CURRENT_VERSION /&$* /" \
	    $$CMAKE_MODULES/FindPythonLibs.cmake > FindPythonLibs.cmake
	cd $(BUILD)-python$* && cmake $(CURDIR) -DCMAKE_INSTALL_PREFIX="/usr" \
		-DCMAKE_C_COMPILER:FILEPATH="$(CC)" \
		-DCMAKE_CXX_COMPILER:FILEPATH="$(CXX)" \
		-DCMAKE_C_FLAGS="$(CFLAGS)" \
		-DCMAKE_CXX_FLAGS="$(CXXFLAGS)" \
		-DCMAKE_BUILD_TYPE=Release \
		-DCMAKE_SKIP_RPATH=ON \
		-DCMAKE_VERBOSE_MAKEFILE=ON \
		-DCMAKE_MODULE_PATH=$(BUILD)-python$*/cmake_modules
	touch $@

build: debian/build-stamp

debian/build-stamp: debian/configure-stamp $(PYVERS:%=debian/build-python%-stamp)
	touch $@

debian/build-python%-stamp: 
	dh_testdir
	$(MAKE) $(NJOBS) -C $(BUILD)-python$*
	touch $@

clean:
	dh_testdir
	dh_testroot
	rm -f debian/configure*stamp debian/build*stamp 
	rm -rf debian/build*
	dh_clean

install: DH_OPTIONS=
install: debian/build-stamp install-common $(PYVERS:%=install-python%)
install-common:
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

ifeq ($(with_tests),yes)
	#pyside-tests
	mkdir -p $(CURDIR)/debian/tmp/usr/share/pyside-tests
	cp -r $(CURDIR)/tests $(CURDIR)/debian/tmp/usr/share/pyside-tests
	cp -r $(CURDIR)/debian/runtests.sh $(CURDIR)/debian/tmp/usr/share/pyside-tests
	chmod u+x $(CURDIR)/debian/tmp/usr/share/pyside-tests/runtests.sh
	dh_install -ppyside-tests --sourcedir=debian/tmp
endif

install-python%:
	$(MAKE) $(NJOBS) -C $(BUILD)-python$* install DESTDIR=$(TARGET)

# This single target is used to build all the packages, all at once, or
# one at a time. So keep in mind: any options passed to commands here will
# affect _all_ packages. Anything you want to only affect one package
# should be put in another target, such as the install target.
binary-common:
	dh_testdir
	dh_testroot
	dh_installchangelogs
	dh_installdocs
	dh_installexamples
	dh_installmenu
#	dh_installdebconf
#	dh_installlogrotate
#	dh_installemacsen
#	dh_installcatalogs
#	dh_installpam
#	dh_installmime
#	dh_installinit
#	dh_installman
#	dh_installcron
#	dh_installinfo
	dh_install --sourcedir=$(TARGET) --list-missing
	dh_strip --dbg-package=pyside-dbg
	dh_link
	dh_compress
	dh_fixperms
#	dh_perl
	dh_pysupport
	dh_python
	dh_makeshlibs -Xformats -V
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

# Build architecture independant packages using the common target.
binary-indep: build install
	$(MAKE) -f $(SRC)/debian/rules DH_OPTIONS=-i binary-common

# Build architecture dependant packages using the common target.
binary-arch: build install
	$(MAKE) -f $(SRC)/debian/rules DH_OPTIONS=-a binary-common

# Any other binary targets build just one binary package at a time.
binary-%: build install
	make -f $(SRC)/debian/rules binary-common DH_OPTIONS=-p$*

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