#!/usr/bin/make -f

export DH_VERBOSE=1
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
TARGET ?= $(shell dpkg-architecture -qDEB_TARGET_GNU_TYPE)
INSTDIR:=debian/libgridtools-dev
LIBDIR:=/usr/lib/$(DEB_HOST_MULTIARCH)
CMAKE_DIR:=$(INSTDIR)/$(LIBDIR)/cmake/gridtools

NO_NATIVE_ARCHS := powerpc ppc64el ppc64 riscv64 sh4 s390x  hppa m68k mipsel
NATIVE :=   $(if $(filter $(DEB_TARGET_ARCH), $(NO_NATIVE_ARCHS)), \
	 -DGT_ENABLE_BACKEND_X86=Off -DGT_ENABLE_BACKEND_NAIVE=Off ) 


BUILD_FLAGS = \
	-DCMAKE_MODULE_PATH=/usr/share/ecbuild/cmake \
	-DGT_ENABLE_BINDINGS_GENERATION=Off \
	-DFETCHCONTENT_FULLY_DISCONNECTED=On \
	-DFETCHCONTENT_QUIET=Off \
	-DGT_INSTALL_EXAMPLES_PATH=/usr/share/doc/libgridtools-dev/examples \
	-DPYBIND11_INSTALL=On \
	$(NATIVE)

# Test suite requires 4 processors. Fake it on OpenMPI
export OMPI_MCA_rmaps_base_oversubscribe=1

%:
	dh $@ --buildsystem=cmake 

override_dh_auto_configure:
	mkdir obj-$(TARGET)
	cp -a _deps obj-$(TARGET)
	dh_auto_configure -- ${BUILD_FLAGS} 

override_dh_auto_build:
	$(MAKE) -k obj-$(TARGET)

override_dh_auto_test:
	@echo "Bypass tests in current builds"

override_dh_auto_install:
	dh_auto_install
	# Shuffle to correct locations
	install -d $(INSTDIR)/$(LIBDIR)/cmake
	cp -a obj-*/_deps/cpp_bindgen-build/*.a $(INSTDIR)/$(LIBDIR)
	rm -rf $(INSTDIR)/usr/share/cmake
	mv $(INSTDIR)/usr/lib/cmake $(INSTDIR)/$(LIBDIR)/cmake/gridtools
	for d in \
                $(CMAKE_DIR)/GridToolsConfig.cmake \
                $(CMAKE_DIR)/GridToolsTargets-none.cmake ; do \
                cat $$d | \
                        sed -e 's%$${_IMPORT_PREFIX}/include%$(INCDIR)%g' | \
                        sed -e 's%$${_IMPORT_PREFIX}/lib%$(LIBDIR)%g' | \
                        sed -e 's%$${_IMPORT_PREFIX}/bin%/usr/bin%g' | \
                        sed -e 's%$${PACKAGE_PREFIX_DIR}/lib/cmake%$(LIBDIR)/cmake/gridtools%g' | \
                > $(CMAKE_DIR)/tmp ; \
                mv $(CMAKE_DIR)/tmp $$d ; \
                done

