#!/usr/bin/make -f
# -*- makefile -*- -*- indent-tabs-mode: t; tab-width: 3 -*-

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

DEB_HOST_GNU_CPU  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
DEB_HOST_ARCH     ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
DEB_HOST_GNU_TYPE  = $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE = $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
SHELL = /bin/bash

ifeq ($(DEB_HOST_GNU_TYPE),arm-linux-gnueabihf)
BUILD_HARD_VFP = 1
else ifeq ($(DEB_HOST_GNU_TYPE),arm-linux-gnueabi)
BUILD_HARD_VFP =
else
#$(error DEB_HOST_GNU_TYPE=$(DEB_HOST_GNU_TYPE))
endif

PF = -9t6

GPU_VIV_DIR  := imx-gpu-viv
X11_DRV_DIR  := xserver-xorg-video-imx-viv
HDMI_EXT_DIR := xserver-xorg-extension-viv-hdmi

X11_DRV_PKG	 := imx-xserver-xorg-video-viv$(PF)
HDMI_EXT_PKG := imx-xserver-xorg-extension-viv$(PF)-hdmi

TOP_DIR			:= ${PWD}
BACKENDS_DIR	:= backends
VIVANTE_LIB		:= /usr/lib/$(DEB_HOST_GNU_TYPE)/vivante

####

X11_DRV_BUILD_OPTS += -f makefile.linux
X11_DRV_BUILD_OPTS += BUILD_HARD_VFP=$(BUILD_HARD_VFP)
X11_DRV_BUILD_OPTS += BUSID_HAS_NUMBER=1
X11_DRV_BUILD_OPTS += XSERVER_GREATER_THAN_13=1
X11_DRV_BUILD_OPTS += CFLAGS="$(CFLAGS) -I$(TOP_DIR)/$(GPU_VIV_DIR)/usr/include -I/usr/include/libdrm"
X11_DRV_BUILD_OPTS += LFLAGS="$(LFLAGS) -L$(TOP_DIR)/$(GPU_VIV_DIR)/usr/lib -L$(TOP_DIR)/$(BACKENDS_DIR)/x11"

####

%:
	dh $@ --with python2


override_dh_auto_configure:
	dh_testdir


override_dh_auto_build:
	@(cd $(GPU_VIV_DIR)/usr/lib && \
	mv libGL.so.1.2 libGL.so.1.2.0 && \
	rm -f libGL.so.1.2 libGL.so.1 libGL.so && \
	ln -s libGL.so.1.2.0 libGL.so.1.2 && \
	ln -s libGL.so.1.2.0 libGL.so.1 && \
	ln -s libGL.so.1.2.0 libGL.so && \
	rm -f libOpenVG.so && \
	ln -s libOpenVG.3D.so libOpenVG.so)
	mv $(GPU_VIV_DIR)/usr/lib/libGAL_egl.dri.so $(GPU_VIV_DIR)/usr/lib/libGAL_egl.x11.so
	@(for backend in wl x11 fb dfb ; do \
		mkdir -p  $(BACKENDS_DIR)/$${backend} ; \
		mv $(GPU_VIV_DIR)/usr/lib/libEGL-$${backend}.so $(BACKENDS_DIR)/$${backend}/libEGL.so.1.0 ; \
		(cd $(BACKENDS_DIR)/$${backend} && ln -s libEGL.so.1.0 libEGL.so.1) ; \
		mv $(GPU_VIV_DIR)/usr/lib/libGAL-$${backend}.so $(BACKENDS_DIR)/$${backend}/libGAL.so ; \
		mv $(GPU_VIV_DIR)/usr/lib/libGAL_egl.$${backend}.so $(BACKENDS_DIR)/$${backend}/libGAL_egl.so ; \
		mv $(GPU_VIV_DIR)/usr/lib/libVIVANTE-$${backend}.so $(BACKENDS_DIR)/$${backend}/libVIVANTE.so ; \
		mv $(GPU_VIV_DIR)/usr/lib/libGLESv2-$${backend}.so $(BACKENDS_DIR)/$${backend}/libGLESv2.so.2.0.0 ; \
		(cd $(BACKENDS_DIR)/$${backend} && ln -s libGLESv2.so.2.0.0 libGLESv2.so.2) ; \
		echo "/usr/lib/$(DEB_HOST_GNU_TYPE)/vivante"             >  $(BACKENDS_DIR)/$${backend}/ld.so.conf ; \
	done)
	rm -f $(GPU_VIV_DIR)/usr/lib/libVIVANTE.fb.so
	rm -rf $(GPU_VIV_DIR)/usr/lib/pkgconfig
	@(for wayland in `find $(GPU_VIV_DIR)/usr/lib -name "*wayland*" 2>/dev/null` ; do \
		mv $${wayland} $(BACKENDS_DIR)/wl ; \
	done)
	#
	@sed -i 's;/usr/lib/libwayland-server.la;/usr/lib/$(DEB_HOST_GNU_TYPE)/libwayland-server.la;g' $(BACKENDS_DIR)/wl/libwayland-viv.la
	@sed -i 's;/usr/lib/libffi.la;/usr/lib/$(DEB_HOST_GNU_TYPE)/libffi.la;g'                       $(BACKENDS_DIR)/wl/libwayland-viv.la
	@sed -i "s;libdir='/usr/lib';libdir='/usr/lib/$(DEB_HOST_GNU_TYPE)/vivante';g"                 $(BACKENDS_DIR)/wl/libwayland-viv.la
	@sed -i 's;/usr/lib/libwayland-client.la;/usr/lib/$(DEB_HOST_GNU_TYPE)/libwayland-client.la;g' $(BACKENDS_DIR)/wl/libgc_wayland_protocol.la
	@sed -i 's;/usr/lib/libffi.la;/usr/lib/$(DEB_HOST_GNU_TYPE)/libffi.la;g'                       $(BACKENDS_DIR)/wl/libgc_wayland_protocol.la
	@sed -i "s;libdir='/usr/lib';libdir='/usr/lib/$(DEB_HOST_GNU_TYPE)/vivante';g"                 $(BACKENDS_DIR)/wl/libgc_wayland_protocol.la
	#
	@sed -i 's;$(sysroot)/usr/lib;$(sysroot)/usr/lib/$(DEB_HOST_GNU_TYPE) -Wl,-rpath-link,\$$(sysroot)/usr/lib/$(DEB_HOST_GNU_TYPE);g' $(X11_DRV_DIR)/EXA/src/makefile.linux
	@sed -i 's;$(sysroot)/usr/lib;$(sysroot)/usr/lib/$(DEB_HOST_GNU_TYPE) -Wl,-rpath-link,\$$(sysroot)/usr/lib/$(DEB_HOST_GNU_TYPE);g' $(X11_DRV_DIR)/FslExt/src/makefile.linux
	@sed -i 's;$(sysroot)/usr/lib;$(sysroot)/usr/lib/$(DEB_HOST_GNU_TYPE) -Wl,-rpath-link,\$$(sysroot)/usr/lib/$(DEB_HOST_GNU_TYPE);g' $(X11_DRV_DIR)/util/autohdmi/makefile.linux
	@sed -i 's;$(sysroot)/usr/lib;$(sysroot)/usr/lib/$(DEB_HOST_GNU_TYPE) -Wl,-rpath-link,\$$(sysroot)/usr/lib/$(DEB_HOST_GNU_TYPE);g' $(X11_DRV_DIR)/util/pandisplay/makefile.linux
	@(cd $(GPU_VIV_DIR)/usr/lib && \
	rm -f libEGL.so* libGAL.so* libGLESv2.so* libVIVANTE.so)
#	find $(GPU_VIV_DIR) -name "*.so*" | xargs -n1 execstack -c || true
	dh_auto_build   -v --buildsystem=makefile -p$(X11_DRV_PKG)  -- $(X11_DRV_BUILD_OPTS) -C $(X11_DRV_DIR)/EXA/src all
	dh_auto_build   -v --buildsystem=makefile -p$(HDMI_EXT_PKG) -- $(X11_DRV_BUILD_OPTS) -C $(X11_DRV_DIR)/FslExt/src all
	dh_auto_build   -v --buildsystem=makefile -p$(HDMI_EXT_PKG) -- $(X11_DRV_BUILD_OPTS) -C $(X11_DRV_DIR)/util/autohdmi
	dh_auto_build   -v --buildsystem=makefile -p$(HDMI_EXT_PKG) -- $(X11_DRV_BUILD_OPTS) -C $(X11_DRV_DIR)/util/pandisplay


override_dh_auto_install:
	dh_auto_install -v --buildsystem=makefile -p$(X11_DRV_PKG)  --destdir=$(X11_DRV_DIR).release  -- -C $(X11_DRV_DIR)/EXA/src         -f makefile.linux prefix=\$${DESTDIR}/usr install
	dh_auto_install -v --buildsystem=makefile -p$(HDMI_EXT_PKG) --destdir=$(HDMI_EXT_DIR).release -- -C $(X11_DRV_DIR)/FslExt/src      -f makefile.linux prefix=\$${DESTDIR}/usr install
	dh_auto_install -v --buildsystem=makefile -p$(HDMI_EXT_PKG) --destdir=$(HDMI_EXT_DIR).release -- -C $(X11_DRV_DIR)/util/autohdmi   -f makefile.linux prefix=\$${DESTDIR}/usr install
	dh_auto_install -v --buildsystem=makefile -p$(HDMI_EXT_PKG) --destdir=$(HDMI_EXT_DIR).release -- -C $(X11_DRV_DIR)/util/pandisplay -f makefile.linux prefix=\$${DESTDIR}/usr install


override_dh_shlibdeps:
	dh_shlibdeps -pimx-gpu-viv$(PF)-libs -l$(VIVANTE_LIB) -XlibVivanteOpenCL -XlibOpenVG.3d -XlibVDK -XlibGLES   -- --warnings=0
	dh_shlibdeps -pimx-gpu-viv$(PF)-dev                                              -- --warnings=0
	dh_shlibdeps -pimx-gpu-viv$(PF)-fb   -l$(VIVANTE_LIB):$(VIVANTE_LIB)/fb          -- --warnings=0
	dh_shlibdeps -pimx-gpu-viv$(PF)-x11  -l$(VIVANTE_LIB):$(VIVANTE_LIB)/x11         -- --warnings=0
	dh_shlibdeps -pimx-gpu-viv$(PF)-wl   -l$(VIVANTE_LIB):$(VIVANTE_LIB)/wl          -- --warnings=0
	dh_shlibdeps -p$(X11_DRV_PKG)        -l$(VIVANTE_LIB)/x11                        -- --warnings=0
	dh_shlibdeps -p$(HDMI_EXT_PKG)       -l$(VIVANTE_LIB)/x11                        -- --warnings=0
#	dh_shlibdeps -pimx-gpu-viv$(PF)-test -l$(VIVANTE_LIB):$(VIVANTE_LIB)/fb          -- --warnings=0

override_dh_auto_clean:
	rm -rf $(BACKENDS_DIR)

