#!/usr/bin/make -f
# -*- makefile -*-
# Based on the sample debian/rules of dh_make

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

# For CXXFLAGS and CFLAGS.
# See http://lists.debian.org/debian-devel-announce/2011/09/msg00001.html 
DPKG_EXPORT_BUILDFLAGS = 1
-include /usr/share/dpkg/buildflags.mk

CFLAGS += -Wall

# Workaround for cmake not handling CPPFLAGS (https://wiki.debian.org/HardeningWalkthrough):
CFLAGS += $(CPPFLAGS)
CXXFLAGS += $(CPPFLAGS)

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

#we need to know the R version
RVERS = $(shell dpkg-query -W --showformat='$${Version}' r-base-core)
RMAJOR = $(shell echo $(RVERS) | awk -F. '{print $$1}')
RMINOR = $(shell echo $(RVERS) | awk -F. '{print $$2}')

# set built-time of GNUR packages to time of created binary package based on stamp in changelog
builttime = $(shell dpkg-parsechangelog -l$(CURDIR)/debian/changelog | awk -F': ' '/Date/ {print $$2}')

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

build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp

build-stamp:
	dh_testdir

	mkdir -p $(CURDIR)/build

	# Some installations of R need a specific version of the compiler(s)
	# R CMD config provides info on which compiler to use
	cd $(CURDIR)/build && \
	CC="`/usr/bin/R CMD config CC`" \
	CXX="`/usr/bin/R CMD config CXX`" \
	F77="`/usr/bin/R CMD config F77`" \
	cmake .. \
		-DCMAKE_INSTALL_PREFIX=`kde4-config --prefix` \
		-DDATA_INSTALL_DIR=`kde4-config --install data` \
		-DHTML_INSTALL_DIR=`kde4-config --install html` \
		-DKCFG_INSTALL_DIR=`kde4-config --install kcfg` \
		-DINFO_INSTALL_DIR=/usr/share/info \
		-DMAN_INSTALL_DIR=/usr/share/man \
		-DKDE_DEFAULT_HOME=`kde4-config --localprefix` \
		-DCMAKE_SKIP_RPATH=true \
		-DKDE4_USE_ALWAYS_FULL_RPATH=false \
		-DCMAKE_CXX_FLAGS="$(CXXFLAGS)" \
		-DCMAKE_C_FLAGS="$(CFLAGS)" \
		-DCMAKE_EXE_LINKER_FLAGS="$(LDFLAGS)" \
		-DCMAKE_MODULE_LINKER_FLAGS="$(LDFLAGS)" \
		-DCMAKE_SHARED_LINKER_FLAGS="$(LDFLAGS)" \
		-DCMAKE_VERBOSE_MAKEFILE=ON \
		-DKDE4_DISABLE_MULTIMEDIA=ON \
		-DR_EXECUTABLE=/usr/bin/R/ \
		-DR_LIBDIR=/usr/lib/R/site-library/ \
		-DBUILD_TIMESTAMP="$(builttime)"

	# Add here commands to compile the package.
	cd $(CURDIR)/build && $(MAKE)

	touch build-stamp

clean:
	dh_testdir
	dh_testroot
	rm -f build-stamp
	# remove any .svn subdir included by accident
	rm -rf $(CURDIR)/debian/.svn

	# Add here commands to clean up after the build process.
	rm -rf $(CURDIR)/build/

	dh_clean 

install: build
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs

	# Add here commands to install the package into debian/rkward.
	cd $(CURDIR)/build && $(MAKE) install DESTDIR=$(CURDIR)/debian/rkward
	# dirty hack to get rid of conflicting r.xml file without adjusting all makefiles
	rm -vf $(CURDIR)/debian/rkward/`kde4-config --install data`/katepart/syntax/r.xml
	
	# remove unneeded R package files
	rm -vf $(CURDIR)/debian/rkward/usr/lib/R/site-library/R.css $(CURDIR)/debian/rkward/usr/lib/R/site-library/rkward/COPYING

# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installchangelogs ChangeLog
	dh_installdocs
	dh_installexamples
	dh_installmenu
	dh_installman $(CURDIR)/build/doc/rkward/rkward.1
	dh_link
	dh_strip
	# do not compress KDE HTML help
	dh_compress -Xusr/share/doc/kde/HTML
	dh_fixperms
	dh_installdeb
	dh_shlibdeps
	# unfortunately, the r-base-core dependency can not be found by dh_shlibdeps, so we need to get at the version manually
	# NOTE: This "if" is currently always true (see build-deps), but left here, for convenience, in case we get into trouble
	# with binary incompatibility (backward / foward) again, in the future.
	@if [ "$(RMAJOR)" -eq "3" ] && [ "$(RMINOR)" -ge "0" ] ; then \
		echo "rvers=r-base-core (>= 3.0.0)" >> $(CURDIR)/debian/rkward.substvars ; \
	fi
	dh_gencontrol
	dh_md5sums
	dh_builddeb

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