#! /usr/bin/make -f

DEB_KDE_LINK_WITH_AS_NEEDED := yes
DEB_KDE_LINK_WITH_NO_UNDEFINED := no
include /usr/share/pkg-kde-tools/makefiles/1/variables.mk

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
    NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
    MAKEFLAGS += -j$(NUMJOBS)
endif

ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)
MONOARCHS := "i386 kfreebsd-i386 powerpc amd64 kfreebsd-amd64 lpia ia64 arm armeb armel sparc s390"
MONOPACKAGES := $(shell dh_listpackages | grep '\-cil$$') plasma-scriptengine-kimono kio-monodoc libkimono-cil-dev libqyoto-cil-dev libqyotoshared1 qyoto-dev
DH_MONOPACKAGES := $(patsubst %,-p%,$(MONOPACKAGES))
DH_NO_MONOPACKAGES := $(patsubst %,-N%,$(MONOPACKAGES))
MONO_L_PATHS = $(shell find $(patsubst %,debian/%,$(MONOPACKAGES)) -path '*/usr/lib/cli/*' -name '*.dll' -type f -printf '%h:') 

DEST=$(CURDIR)/debian/tmp
DEST_USR_LIB=$(DEST)/usr/lib

pkgs_lib := $(filter-out %-dev %-dbg %ruby %cil,$(filter lib%,$(shell dh_listpackages)))
current_version := $(shell dpkg-parsechangelog | sed -n 's/^Version: //p')



ifneq (,$(findstring $(ARCH),$(MONOARCHS)))
export MONO_DISABLE_SHM = 1
MONOFLAGS=-DENABLE_KHTML_SHARP=ON 
MONOTARGET=monospecific
else
MONO=OFF
MONOFLAGS=-DENABLE_QYOTO=off

endif


##

#generic kde4 stuff
cmake_flags := \
    -DCMAKE_INSTALL_PREFIX=/usr     \
    -DCMAKE_USE_RELATIVE_PATHS=ON   \
    -DCMAKE_VERBOSE_MAKEFILE=ON     \
    \
    $(DEB_CMAKE_KDE4_FLAGS) $(DEB_CMAKE_CUSTOM_FLAGS)

# OK, here we disable all that we don't want.
# Please remove lines as you add packaging support for them.
# Do NOT remove ENABLE_PYKDE4, it gets special handling below. -- Dato
RUBY_SITEARCH=$(shell ruby1.8 -rrbconfig -e 'puts Config::CONFIG["sitearch"]')
cmake_flags += \
	-DENABLE_PYKDE4=OFF\
	-DENABLE_SOPRANO_SMOKE=ON \
	-DENABLE_NEPOMUK_SMOKE=ON \
	-DENABLE_NEPOMUK_RUBY=ON \
	-DENABLE_PHONON_RUBY=ON \
	-DCUSTOM_RUBY_SITE_LIB_DIR=/usr/lib/ruby/1.8/ \
	-DCUSTOM_RUBY_SITE_ARCH_DIR=/usr/lib/ruby/1.8/$(RUBY_SITEARCH) \
	$(MONOFLAGS)

##

DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

objdir = $(CURDIR)/obj-$(DEB_HOST_GNU_TYPE)

##

CFLAGS = -Wall -g

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

##

pydefault  := $(shell pyversions --default)
pyversions := $(shell pyversions -vr)
pydefaultversion := $(shell pyversions -vd)
cmake_flags += -DPYTHON_EXECUTABLE=/usr/bin/$(pydefault)
DEFAULT_PYTHON_ARGS=-DERRORORRORERROR

ifeq (,$(pyversions)) 
$(error "no suitable pythonversion found, failing")
endif

##

$(objdir)/Makefile:
	mkdir -p $(objdir)
	@echo building all bindings except python bindings. Later building python bindings for $(pyversions).
	cd $(objdir) && cmake $(CURDIR) $(cmake_flags) \
	    -DCMAKE_C_FLAGS="$(CFLAGS)" -DCMAKE_CXX_FLAGS="$(CFLAGS)"

##

$(patsubst %,$(objdir)/python/pykde4-%/Makefile,$(pyversions)): $(objdir)/Makefile
	mkdir -p $(@D)	
	cd  $(@D) && cmake $(CURDIR)/python/pykde4 $(cmake_flags) \
	    -DPYTHON_EXECUTABLE=/usr/bin/python$(subst $(objdir)/python/pykde4-,,$(subst /Makefile,,$@)) \
	    $(if $(findstring $(pydefaultversion),$@),-DDEFAULT_PYTHON_VERSION=true,-DDEFAULT_PYTHON_VERSION=false)

##
$(patsubst %,build-stamp-python-%,$(pyversions)): $(patsubst %,$(objdir)/python/pykde4-%/Makefile,$(pyversions))
	$(MAKE) -C $(objdir)/python/pykde4-$(subst build-stamp-python-,,$@)
	touch $@


build: build-stamp
build-stamp: $(patsubst %,build-stamp-python-%,$(pyversions)) build-stamp-generic
	touch $@

build-stamp-generic: $(objdir)/Makefile 
	$(MAKE) -C $(objdir)
	touch $@

##

clean::
	dh_testdir
	dh_testroot
	
	rm -f build-stamp
	rm -f build-stamp-*
	rm -f debian/cdbs-install-list debian/cdbs-package-list
	rm -rf $(objdir)
	rm -f debian/shlibs.local
	
	dh_clean

##
install-pre:
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs

$(patsubst %,install-python-%,$(pyversions)): install-pre
	$(MAKE) -C $(objdir)/python/pykde4-$(subst install-python-,,$@) install DESTDIR=$(CURDIR)/debian/tmp; \

install-generic: install-pre $(patsubst %,install-python-%,$(pyversions))
	$(MAKE) -C $(objdir) install DESTDIR=$(CURDIR)/debian/tmp

install: $(MONOTARGET) install-generic
#	rmdir debian/tmp/usr/share/doc/kde/HTML/en/pykde4/creative\ commons_files/
#	install -D -m 755 debian/tmp/usr/share/kde4/apps/pykde4/pykdeuic4.py \
#	    debian/python-kde4-dev/usr/bin/pykdeuic4

# Separate target (from monospecific) is needed for $(MONO_L_PATHS)
# to work properly
install-mono: install-pre install-generic
	make -C $(objdir)/csharp/kimono/examples/kio/kio_monodoc
	make -C $(objdir)/csharp/kimono/examples/kio/kio_monodoc install DESTDIR=$(CURDIR)/debian/tmp/
	dh_install $(DH_MONOPACKAGES)

monospecific: export DH_OPTIONS=
monospecific: install-mono
	#setting MONOPATH is a hack to hack around a bug in dh_makeclilibs. Reported as #498868
	MONO_PATH=$(CURDIR)/debian/libqyoto4.4-cil/usr/lib/cli/kdebindings-4.4/ dh_makeclilibs -V $(DH_MONOPACKAGES)
	dh_installcligac $(DH_MONOPACKAGES)
	dh_clifixperms $(DH_MONOPACKAGES)
	dh_makeclilibs -V $(DH_MONOPACKAGES)
	dh_clideps -l$(MONO_L_PATHS) $(DH_MONOPACKAGES)
	dh_clistrip --dbg-package=kdebindings-dbg $(DH_MONOPACKAGES)

##

binary: binary-arch binary-indep

binary-arch: export DH_OPTIONS=-s
binary-indep: export DH_OPTIONS=-i

binary-indep binary-arch: build install
	# Building $@. DH_OPTIONS=$(DH_OPTIONS)
	dh_install $(DH_NO_MONOPACKAGES)
	dh_testdir
	dh_testroot
	dh_lintian
	dh_installchangelogs ChangeLog
	dh_installdocs
	dh_installexamples
	dh_installman
	dh_pysupport
	dh_sip -ppython-kde4
	dh_link
	dh_strip --dbg-package=kdebindings-dbg
	dh_compress
	dh_fixperms
	dh_makeshlibs -V -X/cli/
# Generate shlibs local files
	for pkg in $(pkgs_lib); do \
		if test -e debian/$${pkg}/DEBIAN/shlibs ; then \
			sed 's/>=[^)]*/= $(current_version)/' debian/$${pkg}/DEBIAN/shlibs >> debian/shlibs.local ;\
		fi \
	done
	dh_sodeps
	if [ -d debian/python-kde4 ]; then \
		DH_OPTIONS= dh_shlibdeps -ppython-kde4 -X"usr/lib/pyshared/python2.5/PyKDE4/" -- \
        	-dSuggests debian/python-kde4/usr/lib/pyshared/python2.5/PyKDE4/*.so -dDepends; \
	fi
	dh_shlibdeps -Npython-kde4
	dh_installdeb
	dh_gencontrol
	dh_md5sums
	dh_builddeb

##

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

##### List missing implementation from CDBS #####

DEB_ALL_PACKAGES := $(shell dh_listpackages)
DEB_SOURCE_PACKAGE := $(shell grep 'Source:' debian/control | sed 's/^Source: \?\(.*\)$$/\1/')

list-missing:
	@if test -d debian/tmp; then \
	  (cd debian/tmp && find . -type f -o -type l | grep -v '/DEBIAN/' | sort) > debian/cdbs-install-list; \
	  (for package in $(DEB_ALL_PACKAGES); do \
	     (cd debian/$$package && find . -type f -o -type l); \
	   done; \
	   test -e debian/not-installed && grep -v '^#' debian/not-installed; \
	   ) | sort -u > debian/cdbs-package-list; \
	  diff -u debian/cdbs-install-list debian/cdbs-package-list | sed '1,2d' | egrep '^-' || true; \
	else \
	  echo "All files were installed into debian/$(DEB_SOURCE_PACKAGE)."; \
	fi

.PHONY: list-missing
