#!/usr/bin/make -f

export DEB_BUILD_MAINT_OPTIONS = hardening=-all
export CFLAGS =
export CXXFLAGS =
export LDFLAGS =

COMPILER_FAMILY := gnu15
PNAME           := likwid
VERSION         := 5.5.1
INSTALL_PATH    := /opt/ohpc/pub/libs/$(COMPILER_FAMILY)/$(PNAME)/$(VERSION)
SRCDIR          := $(CURDIR)/$(PNAME)-$(VERSION)
PKG             := $(CURDIR)/debian/$(PNAME)-$(COMPILER_FAMILY)-ohpc
ENV             := bash /build/devel/build-comp.sh
DEB_HOST_ARCH   ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
LIKWID_COMPILER := GCC
LIKWID_ARCH_OPTS :=
ifeq ($(DEB_HOST_ARCH),ppc64el)
LIKWID_COMPILER := GCCPOWER
LIKWID_ARCH_OPTS := BUILDDAEMON=true BUILDFREQ=true ACCESSMODE=perf_event
endif
ifeq ($(DEB_HOST_ARCH),arm64)
LIKWID_COMPILER := GCCARMv8
LIKWID_ARCH_OPTS := BUILDDAEMON=true BUILDFREQ=true ACCESSMODE=perf_event
endif
LIKWID_MAKE_OPTS := FORTRAN_INTERFACE=true COMPILER=$(LIKWID_COMPILER) \
	FC=gfortran FCFLAGS="-J ./ -fsyntax-only" $(LIKWID_ARCH_OPTS) Q=

%:
	dh $@

override_dh_auto_configure:
	test -s SOURCES/$(PNAME)-$(VERSION).tar.gz || \
		wget -q -O SOURCES/$(PNAME)-$(VERSION).tar.gz \
			https://github.com/RRZE-HPC/likwid/archive/v$(VERSION).tar.gz
	rm -rf $(SRCDIR)
	tar xf SOURCES/$(PNAME)-$(VERSION).tar.gz
	cd $(SRCDIR) && sed -i \
		-e "s|PREFIX ?= .*|PREFIX ?= $(INSTALL_PATH)|" \
		-e "s|COMPILER = .*|COMPILER = $(LIKWID_COMPILER)|" \
		-e "s|INSTALLED_PREFIX ?= .*|INSTALLED_PREFIX = $(INSTALL_PATH)|" \
		config.mk
	cd $(SRCDIR) && patch -p1 < $(CURDIR)/SOURCES/likwid-5.5.1-ppc64el-perfevent.patch

override_dh_auto_build:
	cd $(SRCDIR) && $(ENV) $(MAKE) -j$$(nproc) \
		PREFIX=$(INSTALL_PATH) LIBDIR=$(INSTALL_PATH)/lib MANPREFIX=$(INSTALL_PATH)/man \
		$(LIKWID_MAKE_OPTS)

override_dh_auto_install:
	mkdir -p $(PKG)$(INSTALL_PATH)
	# Override INSTALLED_PREFIX in config.mk to respect DESTDIR
	cd $(SRCDIR) && sed -i "s|INSTALLED_PREFIX = .*|INSTALLED_PREFIX = $(PKG)$(INSTALL_PATH)|" config.mk
	cd $(SRCDIR) && $(ENV) $(MAKE) \
		PREFIX=$(PKG)$(INSTALL_PATH) \
		LIBDIR=$(PKG)$(INSTALL_PATH)/lib \
		MANPREFIX=$(PKG)$(INSTALL_PATH)/man \
		INSTALLED_PREFIX=$(PKG)$(INSTALL_PATH) \
		INSTALL_CHOWN= \
		$(LIKWID_MAKE_OPTS) install
	# Fix embedded paths back to real prefix
	find $(PKG)$(INSTALL_PATH) -type f -exec grep -l '$(PKG)' {} + 2>/dev/null | while read f; do \
		sed -i 's|$(PKG)||g' "$$f"; \
	done || true
	find $(PKG) -name '*.la' -delete || true
	# Install modulefile
	mkdir -p $(PKG)/opt/ohpc/pub/moduledeps/$(COMPILER_FAMILY)/$(PNAME)
	install -m 644 debian/modulefile $(PKG)/opt/ohpc/pub/moduledeps/$(COMPILER_FAMILY)/$(PNAME)/$(VERSION)

override_dh_missing:
	dh_missing --list-missing

override_dh_auto_clean:
	rm -rf $(SRCDIR)

override_dh_usrlocal:

override_dh_shlibdeps:
	dh_shlibdeps -l$(PKG)$(INSTALL_PATH)/lib -- --ignore-missing-info || true

override_dh_strip:
	dh_strip --no-automatic-dbgsym || true

override_dh_auto_test:
