#!/usr/bin/make -f # Build with flang export DH_VERBOSE=1 # The magic debhelper rule %: dh $@ # --with fortran include /usr/share/dpkg/architecture.mk TOPDIR:=$(shell pwd) LIBDIR:=debian/libfortran-caffeine-dev/usr/lib/${DEB_HOST_MULTIARCH} export FC_DEFAULT=flang export FC_OPTIONAL= export PKG_CONFIG=pkgconf # Overrule version in ./install.sh # export GCC_VERSION=16 UCX_ARCH:= $(shell sed -n -r '/^Build/,/^$$/s/.*libucx-dev *\[([^]]*)\].*/\1/p' debian/control) IBV_ARCH:= $(shell sed -n -r '/^Build/,/^$$/s/.*libibverbs-dev *\[([^]]*)\].*/\1/p' debian/control) CLANG_ARCH:= $(shell sed -n -r '/^Build/,/^$$/s/.*clang-22 *\[([^]]*)\].*/\1/p' debian/control) # IBV:= $(if $(filter $(DEB_TARGET_ARCH), $(IBV_ARCH)),ibv,) IBV:= ibv UCX:= $(if $(filter $(DEB_TARGET_ARCH), $(UCX_ARCH)),ucx,) CLANG:= $(if $(filter $(DEB_TARGET_ARCH), $(CLANG_ARCH)),true,false) ifeq ($(CLANG),true) export FC_DEFAULT:=flang export FC_OPTIONAL:= export FC=flang-22 export CC=clang-22 # Hack. fix mpi builds NETWORKS=smp udp $(UCX) $(IBV) else export FC_DEFAULT:=gfortran export FC_OPTIONAL:= NETWORKS=smp udp $(UCX) endif MODDIR=$(shell dh_fortran get_fmoddir --fc $(FC_DEFAULT)) FLIBDIR=$(shell dh_fortran get_flibdir --fc $(FC_DEFAULT)) execute_before_dh_clean: rm -rf fpm.toml run-fpm.sh build* override_dh_auto_build: for c in $(NETWORKS) ; do \ b=$(TOPDIR)/build-$(FC)-$$c ; \ mkdir -p $$b/lib/pkgconfig ; \ FFLAGS="-cpp -I./include -I$(MODDIR) -I/usr/include" LDFLAGS="-L$(FLIBDIR) -lmpi" ./install.sh --network=$$c --prefix=$$b --verbose ; \ done execute_after_dh_auto_install: mkdir -p $(LIBDIR)/pkgconfig for c in $(NETWORKS) ; do \ b=$(TOPDIR)/build-$(FC)-$$c ; \ cp $$b/lib/libcaffeine-$$c.a $(LIBDIR) ; \ cp $$b/lib/pkgconfig/caffeine.pc $(LIBDIR)/pkgconfig/caffeine-$$c.pc ;\ done dh_fortran_mod