1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
#!/usr/bin/make -f
export DH_VERBOSE=1
include /usr/share/dpkg/pkg-info.mk
include /usr/share/debhelper/dh-fortran/fortran-support.mk
DEB_BUILD_MAINT_OPTIONS:= hardening=+all
export DEB_BUILD_MAINT_OPTIONS
FC_DEFAULT:= gfortran
FC_OPTIONAL:= flang-21
export FC:=gfortran
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH)
INCDIR=/usr/include/$(DEB_HOST_MULTIARCH)
DESTDIR=$(CURDIR)/debian/tmp
CMAKEDIR:=debian/libeccodes-dev/$(LIBDIR)/cmake/eccodes
BUILDDIR:=debian/build
BUILDDIR_DEFAULT:=$(BUILDDIR)-$(FC_DEFAULT)
# For hardening
CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS)
CFLAGS:=$(shell dpkg-buildflags --get CFLAGS) $(CPPFLAGS) # -fPIC
CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS) $(CPPFLAGS)
LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS)
export LDFLAGS CFLAGS CPPFLAGS CXXFLAGS
# Pull in ecbuild macros rather than local ones
BUILD_FLAGS = \
-DENABLE_INSTALL_ECCODES_DEFINITIONS=ON \
-DENABLE_INSTALL_ECCODES_SAMPLES=ON \
-DENABLE_PNG=ON \
-DENABLE_ECKIT_GEO=ON \
-DENABLE_AEC=ON \
-DENABLE_RPATHS=OFF \
-DENABLE_RELATIVE_RPATHS=OFF \
-DCMAKE_C_CFLAGS="${CFLAGS} ${LDFLAGS}" \
-DENABLE_ALIGN_MEMORY=ON \
-DENABLE_GRIB_TIMER=ON \
-DENABLE_ECCODES_OMP_THREADS=On \
%:
dh $@ --buildsystem=ecbuild --builddirectory=${BUILDDIR_DEFAULT} --no-parallel --with fortran
define dh_build_fortran_TEMPLATE =
dh_build_fortran_$(1):
@echo DEBUGF CALLING dh_build_fortran_$(1)
dh_auto_build --builddirectory=${BUILDDIR}-$(1)
@echo DEBUGF LEAVING dh_build_fortran_$(1)
endef
$(eval $(call foreach_fc_execute_before,build))
define dh_configure_fortran_TEMPLATE =
dh_configure_fortran_$(1):
@echo DEBUGF ENTERING dh_configure_fortran_$(1)
FFLAGS=`dh_fortran get_fc_flags --fc $(1)` \
LDFLAGS=`dh_fortran get_ld_flags --fc $(1)` \
dh_auto_configure --builddirectory=${BUILDDIR}-$(1) -- \
${BUILD_FLAGS} \
-DCMAKE_Fortran_COMPILER=$(1)
@echo DEBUGF LEAVING dh_configure_fortran_$(1)
endef
$(eval $(call foreach_fc_execute_before,configure))
# TODO fix static installs properly with dh_fortran_cmake
override_dh_install:
cd $(BUILDDIR_DEFAULT) && $(MAKE) install DESTDIR=$(DESTDIR)
# Move to multiarch dir
mkdir -p $(DESTDIR)/$(INCDIR)
mv $(DESTDIR)/usr/include/*.h $(DESTDIR)/$(INCDIR)
dh_install
# Setup cmake files for magics++, metview, etc. (full builds only)
[ -e $(CMAKEDIR)/eccodes-targets.cmake ] && ( \
sed -i -e 's%$${_IMPORT_PREFIX}/include%/usr/include/${DEB_HOST_MULTIARCH}%g' $(CMAKEDIR)/eccodes-targets.cmake ; \
sed -i -e 's%/usr/lib/libeccodes%${LIBDIR}/libeccodes%' $(CMAKEDIR)/eccodes-targets-release.cmake ;\
sed -i -e 's%/libeccodes_f90_static.a%/fortran/gnu/libeccodes_f90_static.a%' $(CMAKEDIR)/eccodes-targets-release.cmake ;\
sed -i -e 's%$${_IMPORT_PREFIX}%/usr%' $(CMAKEDIR)/eccodes-targets-release.cmake ;\
sed -i -e 's%${LIBDIR}/libopenjpeg.so;%%' $(CMAKEDIR)/eccodes-targets-release.cmake ;\
sed -i -e 's%;${LIBDIR}/libpng.so%%g' $(CMAKEDIR)/eccodes-targets-release.cmake ;\
sed -i -e 's%;${LIBDIR}/libopenjpeg.so%%g' $(CMAKEDIR)/eccodes-config.cmake ;\
sed -i -e 's%$${PACKAGE_PREFIX_DIR}/lib/cmake/eccodes%${LIBDIR}/cmake/eccodes%g' $(CMAKEDIR)/eccodes-config.cmake ;\
sed -i -e 's%;${LIBDIR}/libpng.so%%g' $(CMAKEDIR)/eccodes-config.cmake ;\
for f in eccodes-config.cmake eccodes-import.cmake ; do \
sed -i -e 's%${CURDIR}%/build/eccodes%g' $(CMAKEDIR)/$$f ; \
sed -i -e 's%$${eccodes_BASE_DIR}/share%/usr/share%g' $(CMAKEDIR)/$$f ; \
done ; \
) || true
# file exists on full builds only
[ - e debian/libeccodes-dev/$(INCDIR)/eccodes_ecbuild_config.h ] && ( \
sed -i -e 's%${CURDIR}%/build/eccodes%g' debian/libeccodes-dev/$(INCDIR)/eccodes_ecbuild_config.h \
) || true
execute_after_dh_auto_clean:
rm -rf debian/build-*
execute_after_dh_fixperms:
-chmod -x debian/libeccodes-dev/usr/share/doc/libeccodes-dev/examples/F90/include.sh
-chmod -x debian/libeccodes-dev/usr/share/doc/libeccodes-dev/examples/extra/include.sh
-chmod -x debian/libeccodes-dev/usr/share/doc/libeccodes-dev/examples/extra/f_clone.f90
-chmod +x debian/libeccodes-data/usr/share/eccodes/definitions/installDefinitions.sh
-chrpath -d debian/libeccodes0/$(LIBDIR)/*.so.0
-chrpath -d debian/libeccodes-tools/usr/bin/grib_to_netcdf
define dh_test_fortran_TEMPLATE =
dh_test_fortran_$(1):
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
(LD_LIBRARY_PATH=$(BUILDDIR)-$(1)/lib dh_auto_test --builddirectory=$(BUILDDIR)-$(1) || true)
endif
endef
$(eval $(call foreach_fc_execute_before,test))
|