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

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:
	$(DO_TEST) && ( LD_LIBRARY_PATH=$(CURDIR)/debian/build-py2/lib \
		dh_auto_test --builddirectory=debian/build-py2  ) || true
	$(DO_TEST) && ( LD_LIBRARY_PATH=$(CURDIR)/debian/build-py3/lib \
		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
	mv debian/tmp/usr/ifs_samples debian/tmp/usr/share/grib_api
	dh_numpy
	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
	sed -e 's%$${_IMPORT_PREFIX}%/usr%' \
	       < debian/tmp/usr/share/grib_api//cmake/grib_api-targets-release.cmake | \
	sed -e 's%${LIBDIR}/libopenjpeg.so;%%' | sed -e 's%;${LIBDIR}/libpng.so%%g' \
              > debian/libgrib-api-dev/$(LIBDIR)/cmake/grib_api/grib_api-targets-release.cmake
	sed -e 's%;${LIBDIR}/libopenjpeg.so%%g' \
		< debian/tmp/usr/share/grib_api//cmake/grib_api-config.cmake | \
	sed -e 's%;${LIBDIR}/libpng.so%%g' \
		> 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_fixperms-arch:
	dh_fixperms
	chmod +x debian/libgrib-api0/usr/share/grib_api/definitions/installDefinitions.sh
	chmod -x debian/libgrib-api-dev/usr/share/doc/libgrib-api-dev/examples/python/README
