#!/usr/bin/make -f

export DH_VERBOSE=1

BUILDDIR=debian/build
BUILDDIR_FLANG=debian/build-flang

# The magic debhelper  rule
%:
	dh $@ --with=fortran_mod --builddirectory=$(BUILDDIR)

DESTDIR=$(CURDIR)/debian/tmp/
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
LIBDIR:=/usr/lib/$(DEB_HOST_MULTIARCH)

# To enable all, uncomment following line
DEB_BUILD_MAINT_OPTIONS:= hardening=+all
DEB_CFLAGS_MAINT_APPEND:= -Wall -pedantic -fPIC -DACCEPT_USE_OF_DEPRECATED_PROJ_API_H=1
DEB_CXXFLAGS_MAINT_APPEND:=  -DACCEPT_USE_OF_DEPRECATED_PROJ_API_H=1
export DEB_BUILD_MAINT_OPTIONS
export DEB_CFLAGS_MAINT_APPEND DEB_CFLAGS_MAINT_APPEND 

# FC set to f77 by default in make
# Read default compiler name unless FC is actually set
ifeq ($(F77),f77)
  F77:=$(shell basename $(shell readlink /etc/alternatives/f77))
endif

FLANGARCHS:= amd64 arm64 ppc64el
DO_FLANG:= $(if $(filter  $(FLANGARCHS),$(DEB_TARGET_ARCH)), true, false)

# Flang has problems with -g on some code
FFLAGS_FLANG:=$(shell dpkg-buildflags --get FFLAGS |  sed -e 's/-g //')

LIBDIR_GFORTRAN=$(LIBDIR)/fortran/$(shell basename $(shell readlink -f /usr/bin/gfortran))
LIBDIR_FLANG=$(LIBDIR)/fortran/$(shell basename $(shell readlink -f /usr/bin/flang))

ifneq ($(filter gfortran,$(F77)),)
CPPFLAGS += -DgFortran
endif
ifneq ($(filter flang,$(F77)),)
CPPFLAGS += -DflangFortran
endif

CPPFLAGS += -I/usr/include/cdTime

ARCH:=$(shell dpkg --print-architecture)
AS_NEEDED= -Wl,--as-needed

# On powerpc, amd64, arm*, don't do fPIE, only relro
ifeq ($(ARCH), amd64)
  export LDFLAGS= -Wl,-z,relro -Wl,-z,now
endif
ifeq ($(ARCH), armel)
  export LDFLAGS= -Wl,-z,relro -Wl,-z,now
  export AS_NEEDED=
  export CFLAGS= -g -O2 -Wall
endif
ifeq ($(ARCH), armhf)
  export LDFLAGS= -Wl,-z,relro -Wl,-z,now
endif
ifeq ($(ARCH),powerpc)
  export LDFLAGS= -Wl,-z,relro -Wl,-z,now
  export AS_NEEDED=
  export CFLAGS= -g -O2 -Wall
endif

ifneq ($(wildcard /usr/lib/$(DEB_HOST_MULTIARCH)/hdf5/serial/libhdf5.so),)
  WITH_HDF5:=--with-hdf5=/usr/lib/$(DEB_HOST_MULTIARCH)/hdf5/serial
else
  WITH_HDF5:=--with-hdf5=/usr
endif

ifeq ($(ARCH),hppa)
  WITH_OPENMP:=--disable-openmp
else
  WITH_OPENMP:=--enable-openmp
endif

BUILD_FLAGS = \
	--prefix=/usr --libdir=$(LIBDIR) \
	--enable-cdi-lib --with-zlib=/usr --with-netcdf=/usr  --with-proj=/usr \
	$(WITH_OPENMP) $(WITH_HDF5) \
	--enable-iso-c-interface  --with-fftw3 --with-curl=/usr --with-udunits2=/usr \
	--with-szlib \
	--enable-hirlam-extensions \
	--with-libxml2=usr/ \
	--with-eccodes=/usr --disable-cgribex --with-magics=/usr

override_dh_auto_clean:
	dh_auto_clean	|| echo "distclean ok"
	rm -rf debian/build debian/build-flang

override_dh_auto_configure:
	ln -sf /usr/include/cfortran.h libcdi/src/cfortran.h
	dh_auto_configure --builddirectory=$(BUILDDIR) -- \
		$(BUILD_FLAGS)  \
		LIBS="-lm -ljpeg -lz -lcurl" LDFLAGS="$(LDFLAGS) $(AS_NEEDED)"
	$(DO_FLANG) && dh_auto_configure --builddirectory=$(BUILDDIR_FLANG)  -- \
		$(BUILD_FLAGS)  \
		LIBS="-lm -ljpeg -lz -lcurl" LDFLAGS="$(LDFLAGS) $(AS_NEEDED)" \
		F77=flang FFLAGS="$(FFLAGS_FLANG)" \
		|| true

override_dh_auto_build:
	dh_auto_build --builddirectory=$(BUILDDIR) 
	$(DO_FLANG) && $(MAKE) -C $(BUILDDIR_FLANG)/libcdi/src  || true
	(cd contrib  && ruby makecompl.rb )

override_dh_auto_install:
	dh_auto_install
	for d in debian/tmp/$(LIBDIR)/pkgconfig/cdi.pc $(BUILDDIR)/libcdi/src/pkgconfig/cdi_f2003.pc ; do \
		sed -e 's%${CURDIR}%/build/cdo%g' < $$d > debian/tmp/x ; \
		mv debian/tmp/x $$d ; \
	done
	$(DO_FLANG) && ( \
		sed -e 's%${CURDIR}%/build/cdo%g' < $(BUILDDIR_FLANG)/libcdi/src/pkgconfig/cdi_f2003.pc > debian/tmp/x ; \
		mv debian/tmp/x $(BUILDDIR_FLANG)/libcdi/src/pkgconfig/cdi_f2003.pc ) || true
	dh_link -p libcdi0 $(LIBDIR)/libcdi.so.0.0.0  $(LIBDIR)/libcdi.so.0
	dh_link -p libcdi-dev $(LIBDIR)/libcdi.so.0.0.0 $(LIBDIR)/libcdi.so
	mkdir -p $(DESTDIR)/etc/bash_completion.d $(DESTDIR)//usr/share/zsh/functions/Completion/Linux
	cp contrib/cdoCompletion.bash $(DESTDIR)/etc/bash_completion.d/cdo
	cp contrib/cdoCompletion.zsh $(DESTDIR)//usr/share/zsh/functions/Completion/Linux/_cdo

override_dh_auto_test:
	# Need to define path to 'cdo' for python tests
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
	export PATH=$(PATH):$(CURDIR)/src make check
endif
