#!/usr/bin/make -f

export DH_VERBOSE=1
export DEB_LDFLAGS_MAINT_PREPEND := -Wl,-z,defs -Wl,--as-needed

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH)
BUILDDIR=$(CURDIR)/debian/build
UPSTREAM_VERSION=$(shell dpkg-parsechangelog | sed -ne 's/^Version: \(.*\)-.*/\1/p' | sed -e 's/\+.*//; s/^[0-9]://')

# For hardening
CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS)
CFLAGS:=$(shell dpkg-buildflags --get CFLAGS) $(CPPFLAGS) #  -fPIC
CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS) $(CPPFLAGS)
LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS)

PY3VERSM:=$(shell py3versions -d)m

export LDFLAGS CFLAGS CXXFLAGS

# Don't test on mips. will time out most of the time on low-powered archs
DO_TEST:=true
ARCH:=$(shell dpkg --print-architecture)
ifeq ($(ARCH), mips)
DO_TEST:=false
endif
ifeq ($(ARCH),hppa)
DO_TEST:=false
endif

BUILD_FLAGS =  \
	    -DCMAKE_BUILD_TYPE=Release \
	    -DDISABLE_OS_CHECK=ON \
	    -DENABLE_PNG=ON -DENABLE_PYTHON=ON \
	    -DENABLE_AEC=ON \
	    -DENABLE_RPATHS=OFF \
	    -DENABLE_RELATIVE_RPATHS=OFF \
	    -DHAVE_BIT_REPRODUCIBLE=ON \
	    -DCFLAGS="${CFLAGS} ${LDFLAGS}" \
	    -DENABLE_ALIGN_MEMORY=ON -DENABLE_GRIB_TIMER=ON \
	    -DENABLE_GRIB_OMP_THREADS=ON

%:
	dh $@ --buildsystem=cmake --with=python2,python3

override_dh_auto_configure:
	F77=gfortran dh_auto_configure --builddirectory=debian/build-py3  -- \
		-DPYTHON_EXECUTABLE=/usr/bin/python3 \
		${BUILD_FLAGS} 
	F77=gfortran dh_auto_configure --builddirectory=debian/build-py2  -- \
		-DPYTHON_EXECUTABLE=/usr/bin/python2 \
		${BUILD_FLAGS}
	( cd debian/build-py3/data ; tar axpf $(CURDIR)/../grib-api_$(UPSTREAM_VERSION).orig-data.tar.xz )
	( cd debian/build-py2/data ; tar axpf $(CURDIR)/../grib-api_$(UPSTREAM_VERSION).orig-data.tar.xz )
#	    -DENABLE_MEMORY_MANAGEMENT=ON \


override_dh_auto_build:
	dh_auto_build  --builddirectory=debian/build-py2
	dh_auto_build  --builddirectory=debian/build-py3 

override_dh_auto_install:
	dh_auto_install  --builddirectory=debian/build-py2
	dh_auto_install  --builddirectory=debian/build-py3 

override_dh_auto_test:
	# We need python code properly installed in debian/tmp to separate python2, python3 extensions when testing
	(cd debian/build-py2 && $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp AM_UPDATE_INFO_DIR=no)
	(cd debian/build-py3 && $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp AM_UPDATE_INFO_DIR=no)
	$(DO_TEST) && ( LD_LIBRARY_PATH=$(CURDIR)/debian/build-py2/lib ; PYTHONPATH=$(CURDIR)/debian/tmp/usr/lib/python2.7/site-packages \
		dh_auto_test --builddirectory=debian/build-py2  ) || true
	$(DO_TEST) && ( LD_LIBRARY_PATH=$(CURDIR)/debian/build-py3/lib ; PYTHONPATH=$(CURDIR)/debian/tmp/usr/lib/python3.5/site-packages \
		dh_auto_test --builddirectory=debian/build-py3  ) || true

override_dh_install:
	for d in libgrib_api_f77.so  libgrib_api_f90.so	libgrib_api.so ; do \
		cp debian/tmp/usr/lib/$$d.0 debian/tmp/usr/lib/$$d.0.0.0 ; \
		chrpath -d debian/tmp/usr/lib/$$d.0.0.0 ; done
	chrpath -d ./debian/tmp/usr/lib/python*/site-packages/gribapi/_gribapi_swig.so
	for d in debian/tmp/usr/bin/* ; do \
		( chrpath -d $$d || echo "Ignoring chrpath error for non-ELF $d" ); \
		done
	dh_numpy
	dh_numpy3
	dh_install
	#
	# Setup cmake files for magics++, metview, etc.
	#
	mkdir -p debian/libgrib-api-dev/$(LIBDIR)/cmake/grib_api
	cp debian/tmp/usr/share/grib_api/cmake/* debian/libgrib-api-dev/$(LIBDIR)/cmake/grib_api
	cat debian/tmp/usr/share/grib_api//cmake/grib_api-targets-release.cmake | \
	sed -e 's% *IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE.*%  IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE ""%' \
		-e 's%$${_IMPORT_PREFIX}%/usr%g' \
                > debian/libgrib-api-dev/$(LIBDIR)/cmake/grib_api/grib_api-targets-release.cmake
	cat debian/tmp/usr/share/grib_api//cmake/grib_api-config.cmake | \
	sed -e 's%^set( grib_api_BASE_DIR.*%set ( grib_api_BASE_DIR /build/grib-api )%' | \
	sed -e 's%^set( GRIB_API_TPLS.*%set( GRIB_API_TPLS "")%' | \
	sed -e 's%^set( GRIB_API_TPL_LIBRARIES.*%set( GRIB_API_TPL_LIBRARIES "" )%' \
		> debian/libgrib-api-dev/$(LIBDIR)/cmake/grib_api/grib_api-config.cmake

override_dh_auto_clean:
	dh_auto_clean
	rm -rf debian/build-*
	# Things that upstream leaves behind
	rm -f python/gribapi.pyc
	rm -f tests/bitmap.rules tests/out.grib1 tests/out.grib2 tests/out.gribidx \
	      tests/rules tests/simple_ieee_test.grib1.txt tests/statistics.filter \
	      tests/statistics.out tests/x.grib \
	      data/change_scanning_rotated_ll.filter examples/F90/index.idx

override_dh_installexamples:
	dh_installexamples -X.pyc

override_dh_fixperms-arch:
	dh_fixperms
	chmod 755 debian/libgrib-api0/usr/share/grib_api/definitions/installDefinitions.sh
	chmod 644 debian/libgrib-api-dev/usr/share/doc/libgrib-api-dev/examples/python/README
