#!/usr/bin/make -f

include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/langcore.mk

DEB_INSTALL_DOCS_ALL =
DEB_INSTALL_CHANGELOGS_ALL = doc/CHANGELOG
DEB_DH_MAKESHLIBS_ARGS_ALL = -X usr/lib/licq/

# cmake settings
CMAKE = cmake
CMAKE_BUILDDIR = obj-$(DEB_BUILD_GNU_TYPE)
CMAKE_INSTALL_PREFIX = /usr
CMAKE_NORMAL_ARGS  = -DCMAKE_INSTALL_PREFIX="$(CMAKE_INSTALL_PREFIX)"
CMAKE_NORMAL_ARGS += -DCMAKE_C_COMPILER:FILEPATH="$(CC)"
CMAKE_NORMAL_ARGS += -DCMAKE_CXX_COMPILER:FILEPATH="$(CXX)"
CMAKE_NORMAL_ARGS += -DCMAKE_C_FLAGS="$(CFLAGS)"
CMAKE_NORMAL_ARGS += -DCMAKE_CXX_FLAGS="$(CXXFLAGS)"
CMAKE_NORMAL_ARGS += -DCMAKE_SKIP_RPATH=ON
CMAKE_NORMAL_ARGS += -DCMAKE_VERBOSE_MAKEFILE=ON
export CTEST_OUTPUT_ON_FAILURE=1

# plugin packages
PLUGINS := $(patsubst licq-plugin-%,%,$(filter licq-plugin-%,$(shell dh_listpackages)))
PLUGINS := $(filter-out kde qt qt4-common,$(PLUGINS))

# directories of plugin packages in source tree
src/autoreply = auto-reply
src/console   = console
src/forwarder = forwarder
src/jabber    = jabber
src/kde4      = kde4-gui
src/msn       = msn
src/osd       = osd
src/qt4       = qt4-gui
src/rms       = rms


# In order to have both a Qt and a KDE plugin, we make a mangled copy
# of the Qt plugin in the source tree.

post-patches:: preconfigure-kde4-gui

preconfigure-kde4-gui:
	cp -a plugins/qt4-gui plugins/kde4-gui
	touch $@

clean::
	rm -f preconfigure-kde4-gui
	rm -rf plugins/kde4-gui


# Build rules

# Tests disabled until google test 1.6.0 is supported
#configure/licq:: CMAKE_EXTRA_ARGS += -DBUILD_TESTS=ON
configure/licq:: $(CMAKE_BUILDDIR)/CMakeCache.txt
$(CMAKE_BUILDDIR)/CMakeCache.txt:
	mkdir -p $(@D)
	cd $(@D) && $(CMAKE) $(CURDIR) $(CMAKE_NORMAL_ARGS) $(CMAKE_EXTRA_ARGS)

build/licq:: debian/stamp-licq-build
debian/stamp-licq-build:
	$(DEB_MAKE_ENVVARS) $(MAKE) -C $(CMAKE_BUILDDIR)
	touch $@

clean::
	rm -f debian/stamp-licq-build
	rm -rf $(CMAKE_BUILDDIR)


# Plugins
define build-plugin
configure/licq-plugin-$(1):: CMAKE_EXTRA_ARGS += -DCMAKE_MODULE_PATH=$(CURDIR)/cmake
configure/licq-plugin-$(1):: plugins/$$(src/$(1))/$(CMAKE_BUILDDIR)/CMakeCache.txt
plugins/$$(src/$(1))/$(CMAKE_BUILDDIR)/CMakeCache.txt:
	mkdir -p $$(@D)
	cd $$(@D) && $$(CMAKE) $(CURDIR)/plugins/$$(src/$(1)) $$(CMAKE_NORMAL_ARGS) $$(CMAKE_EXTRA_ARGS)

build/licq-plugin-$(1):: debian/stamp-$(1)-build
debian/stamp-$(1)-build:
	$$(DEB_MAKE_ENVVARS) $$(MAKE) -C plugins/$$(src/$(1))/$(CMAKE_BUILDDIR)
	touch $$@

install/licq-plugin-$(1)::
	$$(DEB_MAKE_ENVVARS) $$(MAKE) -C plugins/$$(src/$(1))/$(CMAKE_BUILDDIR) install DESTDIR=$(CURDIR)/debian/licq-plugin-$(1)
ifeq ($(1),qt4)
	rm debian/licq-plugin-qt4/usr/share/licq/qt4-gui/emoticons/FeltTip4/LICENSE
	mkdir -p debian/licq-plugin-qt4-common/usr/share/licq
	mv debian/licq-plugin-qt4/usr/share/licq/qt4-gui debian/licq-plugin-qt4-common/usr/share/licq/
endif
ifneq ($(filter $(1), qt4 kde4),)
	rm -r debian/licq-plugin-$(1)/usr/share/licq
endif

clean::
	rm -f debian/stamp-$(1)-build
	rm -rf plugins/$$(src/$(1))/$(CMAKE_BUILDDIR)
endef

configure/licq-plugin-kde4:: CMAKE_EXTRA_ARGS += -DWITH_KDE=ON

$(foreach X,$(PLUGINS),$(eval $(call build-plugin,$(X))))


# Install rules

install/licq-plugin-qt4-common:: install/licq-plugin-qt4

install/licq install/licq-dev:: install-licq-common
install-licq-common::
	$(DEB_MAKE_ENVVARS) $(MAKE) -C $(CMAKE_BUILDDIR) install DESTDIR=$(CURDIR)/debian/licq
	mkdir -p debian/licq/usr/share/pixmaps
	cp plugins/qt4-gui/src/xpm/licq.xpm debian/licq/usr/share/pixmaps
	mkdir -p debian/licq-dev/usr
	mv debian/licq/usr/include debian/licq-dev/usr/include
