#!/usr/bin/make -f
# -*- makefile-gmake -*-

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

export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# CUDA 12.4 (nvidia-cuda-toolkit) only supports gcc-13 as host compiler.
# nvcc uses /usr/bin/cuda-gcc (gcc-13), so CMake adds
# -L/usr/lib/gcc/x86_64-linux-gnu/13 to the link line. gcc-13's libstdc++
# lacks __cxa_call_terminate (added in GCC 14), so building the C++/MPI side
# with the system g++-16 fails to link. Force the whole build onto gcc-13;
# OpenMPI's mpicxx/mpicc honour the CXX/CC environment variables.
export CC := gcc-13
export CXX := g++-13

DEBVENDOR  := $(shell dpkg-vendor --query Vendor)

ifeq ($(DEBVENDOR), Qlustar)
    # Qlustar specific stuff
    include /usr/share/ql-deb-utils/Makefile
    MPICXX := mpicxx.openmpi-gcc
else
    include /usr/share/dpkg/default.mk
    MPICXX := mpicxx.openmpi
endif

CFLAGS		+= $(CPPFLAGS)
CXXFLAGS	+= $(CPPFLAGS)

# TODO: Remove -DCMAKE_SKIP_RPATH=TRUE when switching to dh 14.
CONFIGURE_COMMON := -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
  -DPYTHON_EXE_PATH=/usr/bin/python3 \
  -DCMAKE_SKIP_RPATH=TRUE

%:
	dh $@

override_dh_auto_configure:
	dh_auto_configure -- $(CONFIGURE_COMMON) -DGUI=ON -DCUDA=ON \
	  -DCMAKE_CUDA_HOST_COMPILER=/usr/bin/cuda-gcc

override_dh_auto_install:
	dh_auto_install --destdir=debian/tmp/cli
	mkdir -p $(CURDIR)/debian/tmp/gui/usr/bin
	rm $(CURDIR)/debian/tmp/cli/usr/bin/*.csh # Useless ...
	set -e; for prog in relion relion_display relion_manualpick; do \
	  mv $(CURDIR)/debian/tmp/cli/usr/bin/$$prog \
	    $(CURDIR)/debian/tmp/gui/usr/bin; done
# Imports Python module "starfile" which is not in Debian.
	rm $(CURDIR)/debian/tmp/cli/usr/bin/relion_filament_selection
# Bash wrappers for RELION Python modules; not packaged.
	rm $(CURDIR)/debian/tmp/cli/usr/bin/relion_python_*
# Rename scripts to avoid lintian W: script-with-language-extension.
	mv $(CURDIR)/debian/tmp/cli/usr/bin/relion_it.py \
	  $(CURDIR)/debian/tmp/gui/usr/bin/relion_it
# relion_schemegui is installed without a .py suffix since upstream 5.1.0.
	mv $(CURDIR)/debian/tmp/cli/usr/bin/relion_schemegui \
	  $(CURDIR)/debian/tmp/gui/usr/bin/relion_schemegui
