#!/usr/bin/make -f

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

# FIXME:
# Gentoo report a bug that parallel builds don't work. subst -j 1.

# magic debhelper rule
%:
	dh $@ --sourcedirectory=src  --no-parallel  --without autoreconf

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

DO_FLANG:=$(if $(wildcard /usr/bin/flang),true, false)

GF_FLAGS:=$(if $(filter $(shell readlink /usr/bin/gfortran), gfortran-9), , \
		 -fallow-argument-mismatch )

# Drop '-g' flag with flang. Known failure with 2018122 version
FFLAGS_FLANG=$(shell dpkg-buildflags --get FCLAGS |  sed -e 's/-g //')
FFLAGS_GFORTRAN=$(shell dpkg-buildflags --get FCLAGS)  $(GF_FLAGS)

export CC=gcc
export NEQN="neqn -Tutf8"

# Path for runtime files, during build-time. Use this to avoid putting build path in fortc exe
export FORTC_LIBPATH=$(CURDIR)/src/port/fortc

override_dh_auto_configure:
	# Hack, but build system obsolete
	cp -a src build-gfortran
	cp -a src build-flang
	( cd build-gfortran && ../src/configure --prefix=/usr FC=gfortran CC="$(CC)"  NEQN=$(NEQN) \
		CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" CPPFLAGS="$(CPPFLAGS)" FFLAGS="$(FFLAGS_GFORTRAN)" )
	$(DO_FLANG) && ( cd build-flang && ../src/configure --prefix=/usr FC=flang CC="$(CC)"  NEQN=$(NEQN) \
		CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" CPPFLAGS="$(CPPFLAGS)" FFLAGS="$(FFLAGS_FLANG)" ) \
		|| echo "Flang compiler not present; skipping"

override_dh_auto_build:
	# build process uses libs in their _installed_ location, so we need these:
	mkdir -p $(DESTDIR)/$(LIBDIR) $(DESTDIR)/usr/bin $(DESTDIR)/usr/include
	$(MAKE) -j1 -C build-gfortran all  DESTDIR=$(DESTDIR)
	# Stash a copy of these, as they'll be deleted on the next $(MAKE)
	cp ./build-gfortran/port/misc/libudport.so.2.6 build-gfortran
	cp ./build-gfortran/port/misc/libudport.a build-gfortran
	$(MAKE) -j1 -C build-gfortran/lib clean all LIBRARY=xgks-gfortran DESTDIR=$(DESTDIR)
	$(DO_FLANG) && ( \
		$(MAKE) -j1 -C build-flang/lib clean all LIBRARY=xgks-flang DESTDIR=$(DESTDIR)   ) \
		|| echo "Flang compiler not present; skipping"
	# And for multi-arch ...
	sed -e 's@LIBDIR@$(LIBDIR)@' < debian/xgks.pc.in > debian/xgks.pc

override_dh_auto_install:
	$(MAKE) -j1 -C build-gfortran install DESTDIR=$(DESTDIR)
	$(MAKE) -j1 -C build-gfortran/progs install DESTDIR=$(DESTDIR)
	$(MAKE) -j1 -C build-gfortran/port/fortc install DESTDIR=$(DESTDIR)
	$(MAKE) -j1 -C build-gfortran/port/misc install DESTDIR=$(DESTDIR)
	#dh_auto_install
	dh_install -p libxgks-dev debian/xgks.pc $(LIBDIR)/pkgconfig
	dh_install -p libxgks2 ./build-gfortran/lib/c/libxgks-gfortran.so.2.6 $(LIBDIR)
	dh_install -p libxgks2 ./build-gfortran/libudport.so.2.6 $(LIBDIR)
	dh_install -p libxgks-dev ./build-gfortran/lib/c/libxgks.a       $(LIBDIR)/fortran/gfortran
	dh_install -p libxgks-dev ./build-gfortran/libudport.a $(LIBDIR)
	dh_link -p libxgks2 $(LIBDIR)/libxgks-gfortran.so.2.6  $(LIBDIR)/libxgks-gfortran.so.2
	dh_link -p libxgks2 $(LIBDIR)/libudport.so.2.6 $(LIBDIR)/libudport.so.2
	dh_link -p libxgks-dev $(LIBDIR)/libxgks-gfortran.so.2.6 $(LIBDIR)/libxgks-gfortran.so
	dh_link -p libxgks-dev $(LIBDIR)/libxgks-gfortran.so.2.6 $(LIBDIR)/fortran/gfortran/libxgks.so
	dh_link -p libxgks-dev $(LIBDIR)/libudport.so.2.6 $(LIBDIR)/libudport.so
	$(DO_FLANG) && (  \
		dh_install -p libxgks2 ./build-flang/lib/c/libxgks-flang.so.2.6 $(LIBDIR) ; \
		dh_link -p libxgks2 $(LIBDIR)/libxgks-flang.so.2.6  $(LIBDIR)/libxgks-flang.so.2 ; \
		dh_link -p libxgks-dev $(LIBDIR)/libxgks-flang.so.2.6 $(LIBDIR)/libxgks-flang.so  ; \
		dh_link -p libxgks-dev $(LIBDIR)/libxgks-flang.so.2.6 $(LIBDIR)/fortran/flang/libxgks.so ; \
		) || echo "Flang compiler not present; skipping"

override_dh_auto_test:
	@echo "Testing disabled as tests are interactive"

override_dh_auto_clean:
	rm -rf build-*
	# dh_clean

