#!/usr/bin/make -f

export DEB_BUILD_HARDENING=1
DH_OPTIONS=-Bbuild

source=$(shell head -n 1 debian/changelog | cut -d ' ' -f 1)

GCC_VERSION          := 4.6

ifeq ($(source),starpu)
CC=gcc-$(GCC_VERSION)
else
# nvcc chokes on gcc-4.6's __float128
CC=gcc-4.5
endif
export CC
V=1
export V

%:
	dh $@ --parallel $(DH_OPTIONS) --with autoreconf

override_dh_auto_configure:
	dh_auto_configure $(DH_OPTIONS) -- --enable-opengl-render \
		--with-qwt-include-dir=/usr/include/qwt-qt4 \
		--with-qwt-lib=qwt-qt4

override_dh_auto_test:
	-HOME=$$PWD DISPLAY= dh_auto_test $(DH_OPTIONS) 
	$(MAKE) -C build showcheck

ifeq ($(source),starpu)
override_dh_install:
	dh_install usr/lib/starpu/*/gcc/*/*.so* /usr/lib/gcc/$(DEB_HOST_MULTIARCH)/4.6/plugin
endif

override_dh_auto_clean:
	dh_auto_clean $(DH_OPTIONS) 
	rm -fr .starpu
	rm -f starpu-top/StarPU-Top
	rm -fr .nv

ifeq ($(source),starpu)
# This is required by the gcc plugin infrastructure
GCC_DEBIAN_VERSION   := $(shell dpkg-query -f '$${Version}' -W gcc-$(GCC_VERSION))
GCC_UPSTREAM_VERSION := $(firstword $(subst -, ,$(GCC_DEBIAN_VERSION)))
override_dh_gencontrol:
	dh_gencontrol -- -VgccDeps='gcc-$(GCC_VERSION) (>= $(GCC_DEBIAN_VERSION)), gcc-$(GCC_VERSION) (<< $(GCC_UPSTREAM_VERSION)A)'
endif

# Switch to main rules
main:
	sed -i 's/starpu-contrib/starpu/' debian/changelog
	sed -i '1s/^Source: starpu-contrib/Source: starpu/' debian/control
	sed -i 's/Package: libstarpu-contrib/Package: libstarpu/' debian/control
	sed -i 's/Package: starpu-contrib/Package: starpu/' debian/control
	sed -i 's/Depends: libstarpu-contrib/Depends: libstarpu/' debian/control
	sed -i 's/Conflicts: libstarpu/Conflicts: libstarpu-contrib/' debian/control
	sed -i 's/Conflicts: starpu/Conflicts: starpu-contrib/' debian/control
	sed -i 's/^Provides:/#Provides:/' debian/control
	sed -i 's/^Architecture: amd64 i386/Architecture: any/' debian/control
	sed -i 's/#	gcc-4.6, g++-4.6, gcc-4.6-plugin-dev,/	gcc-4.6, g++-4.6, gcc-4.6-plugin-dev,/' debian/control
	sed -i 's/#	hardening-wrapper,/	hardening-wrapper,/' debian/control
	sed -i 's/^	gcc-4.5, g++-4.5,/#	gcc-4.5, g++-4.5,/' debian/control
	sed -i 's/^	nvidia-cuda-toolkit,/#	nvidia-cuda-toolkit,/' debian/control
	sed -i 's/^	libcuda1,/#	libcuda1,/' debian/control
	sed -i 's/^Build-Conflicts: gcc-4.6, g++-4.6, hardening-wrapper/#Build-Conflicts: gcc-4.6, g++-4.6, hardening-wrapper/' debian/control
	sed -i 's_^Section: contrib/_Section: _' debian/control
	sed -i 's/contrib-contrib/contrib/g' debian/control debian/changelog
	sed -i '/libsocl/,$$s/^\([^#]\)/#\1/' debian/control
	sed -i '/starpu-top/,/starpu-examples/s/^#//' debian/control

# Switch to contrib rules
contrib:
	sed -i '/starpu-top/,/^$$/s/^/#/' debian/control
	sed -i '1s/^starpu /starpu-contrib /' debian/changelog
	sed -i '1s/^Source: starpu/Source: starpu-contrib/' debian/control
	sed -i 's/Package: libstarpu/Package: libstarpu-contrib/' debian/control
	sed -i 's/Package: starpu/Package: starpu-contrib/' debian/control
	sed -i 's/Depends: libstarpu/Depends: libstarpu-contrib/' debian/control
	sed -i 's/Conflicts: libstarpu-contrib/Conflicts: libstarpu/' debian/control
	sed -i 's/Conflicts: starpu-contrib/Conflicts: starpu/' debian/control
	sed -i 's/^#Provides:/Provides:/' debian/control
	sed -i 's/^	gcc-4.6, g++-4.6, gcc-4.6-plugin-dev,/#	gcc-4.6, g++-4.6, gcc-4.6-plugin-dev,/' debian/control
	sed -i 's/^	hardening-wrapper,/#	hardening-wrapper,/' debian/control
	sed -i 's/#	gcc-4.5, g++-4.5,/	gcc-4.5, g++-4.5,/' debian/control
	sed -i 's/#	nvidia-cuda-toolkit,/	nvidia-cuda-toolkit,/' debian/control
	sed -i 's/#	libcuda1,/	libcuda1,/' debian/control
	sed -i 's/#Build-Conflicts: gcc-4.6, g++-4.6, hardening-wrapper/Build-Conflicts: gcc-4.6, g++-4.6, hardening-wrapper/' debian/control
	sed -i 's_contrib/contrib/_contrib_g' debian/control debian/control
	sed -i 's/contrib-contrib/contrib/g' debian/control debian/changelog
	sed -i '/libsocl/,$$s/^#//' debian/control
	sed -i 's/^Architecture: any/Architecture: amd64 i386/' debian/control
	sed -i 's_^Section: \([^/]*\)$$_Section: contrib/\1_' debian/control
